exceptions.c:_PyVectorcall_NARGS:
   34|     65|{
   35|     65|    return n & ~PY_VECTORCALL_ARGUMENTS_OFFSET;
  ------------------
  |  |  287|     65|    (_Py_STATIC_CAST(size_t, 1) << (8 * sizeof(size_t) - 1))
  |  |  ------------------
  |  |  |  |   34|     65|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
   36|     65|}
listobject.c:_PyVectorcall_NARGS:
   34|     24|{
   35|     24|    return n & ~PY_VECTORCALL_ARGUMENTS_OFFSET;
  ------------------
  |  |  287|     24|    (_Py_STATIC_CAST(size_t, 1) << (8 * sizeof(size_t) - 1))
  |  |  ------------------
  |  |  |  |   34|     24|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
   36|     24|}
object.c:_PyVectorcall_NARGS:
   34|      1|{
   35|      1|    return n & ~PY_VECTORCALL_ARGUMENTS_OFFSET;
  ------------------
  |  |  287|      1|    (_Py_STATIC_CAST(size_t, 1) << (8 * sizeof(size_t) - 1))
  |  |  ------------------
  |  |  |  |   34|      1|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
   36|      1|}
rangeobject.c:_PyVectorcall_NARGS:
   34|      4|{
   35|      4|    return n & ~PY_VECTORCALL_ARGUMENTS_OFFSET;
  ------------------
  |  |  287|      4|    (_Py_STATIC_CAST(size_t, 1) << (8 * sizeof(size_t) - 1))
  |  |  ------------------
  |  |  |  |   34|      4|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
   36|      4|}
setobject.c:_PyVectorcall_NARGS:
   34|     18|{
   35|     18|    return n & ~PY_VECTORCALL_ARGUMENTS_OFFSET;
  ------------------
  |  |  287|     18|    (_Py_STATIC_CAST(size_t, 1) << (8 * sizeof(size_t) - 1))
  |  |  ------------------
  |  |  |  |   34|     18|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
   36|     18|}
tupleobject.c:_PyVectorcall_NARGS:
   34|      1|{
   35|      1|    return n & ~PY_VECTORCALL_ARGUMENTS_OFFSET;
  ------------------
  |  |  287|      1|    (_Py_STATIC_CAST(size_t, 1) << (8 * sizeof(size_t) - 1))
  |  |  ------------------
  |  |  |  |   34|      1|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
   36|      1|}
typeobject.c:_PyVectorcall_NARGS:
   34|    180|{
   35|    180|    return n & ~PY_VECTORCALL_ARGUMENTS_OFFSET;
  ------------------
  |  |  287|    180|    (_Py_STATIC_CAST(size_t, 1) << (8 * sizeof(size_t) - 1))
  |  |  ------------------
  |  |  |  |   34|    180|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
   36|    180|}
weakrefobject.c:_PyVectorcall_NARGS:
   34|     36|{
   35|     36|    return n & ~PY_VECTORCALL_ARGUMENTS_OFFSET;
  ------------------
  |  |  287|     36|    (_Py_STATIC_CAST(size_t, 1) << (8 * sizeof(size_t) - 1))
  |  |  ------------------
  |  |  |  |   34|     36|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
   36|     36|}
import.c:PyObject_CallMethodOneArg:
   70|      5|{
   71|      5|    PyObject *args[2] = {self, arg};
   72|      5|    size_t nargsf = 2 | PY_VECTORCALL_ARGUMENTS_OFFSET;
  ------------------
  |  |  287|      5|    (_Py_STATIC_CAST(size_t, 1) << (8 * sizeof(size_t) - 1))
  |  |  ------------------
  |  |  |  |   34|      5|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
   73|      5|    assert(arg != NULL);
  ------------------
  |  Branch (73:5): [True: 5, False: 0]
  ------------------
   74|      5|    return PyObject_VectorcallMethod(name, args, nargsf, _Py_NULL);
  ------------------
  |  |   57|      5|#  define _Py_NULL NULL
  ------------------
   75|      5|}
pylifecycle.c:PyObject_CallMethodNoArgs:
   63|      3|{
   64|      3|    size_t nargsf = 1 | PY_VECTORCALL_ARGUMENTS_OFFSET;
  ------------------
  |  |  287|      3|    (_Py_STATIC_CAST(size_t, 1) << (8 * sizeof(size_t) - 1))
  |  |  ------------------
  |  |  |  |   34|      3|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
   65|       |    return PyObject_VectorcallMethod(name, &self, nargsf, _Py_NULL);
  ------------------
  |  |   57|      3|#  define _Py_NULL NULL
  ------------------
   66|      3|}
_iomodule.c:PyObject_CallMethodNoArgs:
   63|      3|{
   64|      3|    size_t nargsf = 1 | PY_VECTORCALL_ARGUMENTS_OFFSET;
  ------------------
  |  |  287|      3|    (_Py_STATIC_CAST(size_t, 1) << (8 * sizeof(size_t) - 1))
  |  |  ------------------
  |  |  |  |   34|      3|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
   65|       |    return PyObject_VectorcallMethod(name, &self, nargsf, _Py_NULL);
  ------------------
  |  |   57|      3|#  define _Py_NULL NULL
  ------------------
   66|      3|}
iobase.c:PyObject_CallMethodNoArgs:
   63|      3|{
   64|      3|    size_t nargsf = 1 | PY_VECTORCALL_ARGUMENTS_OFFSET;
  ------------------
  |  |  287|      3|    (_Py_STATIC_CAST(size_t, 1) << (8 * sizeof(size_t) - 1))
  |  |  ------------------
  |  |  |  |   34|      3|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
   65|       |    return PyObject_VectorcallMethod(name, &self, nargsf, _Py_NULL);
  ------------------
  |  |   57|      3|#  define _Py_NULL NULL
  ------------------
   66|      3|}
bufferedio.c:PyObject_CallMethodNoArgs:
   63|     11|{
   64|     11|    size_t nargsf = 1 | PY_VECTORCALL_ARGUMENTS_OFFSET;
  ------------------
  |  |  287|     11|    (_Py_STATIC_CAST(size_t, 1) << (8 * sizeof(size_t) - 1))
  |  |  ------------------
  |  |  |  |   34|     11|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
   65|       |    return PyObject_VectorcallMethod(name, &self, nargsf, _Py_NULL);
  ------------------
  |  |   57|     11|#  define _Py_NULL NULL
  ------------------
   66|     11|}
textio.c:PyObject_CallMethodNoArgs:
   63|     11|{
   64|     11|    size_t nargsf = 1 | PY_VECTORCALL_ARGUMENTS_OFFSET;
  ------------------
  |  |  287|     11|    (_Py_STATIC_CAST(size_t, 1) << (8 * sizeof(size_t) - 1))
  |  |  ------------------
  |  |  |  |   34|     11|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
   65|       |    return PyObject_VectorcallMethod(name, &self, nargsf, _Py_NULL);
  ------------------
  |  |   57|     11|#  define _Py_NULL NULL
  ------------------
   66|     11|}
_abc.c:PyObject_CallMethodOneArg:
   70|     34|{
   71|     34|    PyObject *args[2] = {self, arg};
   72|     34|    size_t nargsf = 2 | PY_VECTORCALL_ARGUMENTS_OFFSET;
  ------------------
  |  |  287|     34|    (_Py_STATIC_CAST(size_t, 1) << (8 * sizeof(size_t) - 1))
  |  |  ------------------
  |  |  |  |   34|     34|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
   73|     34|    assert(arg != NULL);
  ------------------
  |  Branch (73:5): [True: 34, False: 0]
  ------------------
   74|     34|    return PyObject_VectorcallMethod(name, args, nargsf, _Py_NULL);
  ------------------
  |  |   57|     34|#  define _Py_NULL NULL
  ------------------
   75|     34|}
abstract.c:_PyVectorcall_NARGS:
   34|     29|{
   35|     29|    return n & ~PY_VECTORCALL_ARGUMENTS_OFFSET;
  ------------------
  |  |  287|     29|    (_Py_STATIC_CAST(size_t, 1) << (8 * sizeof(size_t) - 1))
  |  |  ------------------
  |  |  |  |   34|     29|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
   36|     29|}
abstract.c:PyObject_CallMethodNoArgs:
   63|     29|{
   64|     29|    size_t nargsf = 1 | PY_VECTORCALL_ARGUMENTS_OFFSET;
  ------------------
  |  |  287|     29|    (_Py_STATIC_CAST(size_t, 1) << (8 * sizeof(size_t) - 1))
  |  |  ------------------
  |  |  |  |   34|     29|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
   65|       |    return PyObject_VectorcallMethod(name, &self, nargsf, _Py_NULL);
  ------------------
  |  |   57|     29|#  define _Py_NULL NULL
  ------------------
   66|     29|}
boolobject.c:_PyVectorcall_NARGS:
   34|      1|{
   35|      1|    return n & ~PY_VECTORCALL_ARGUMENTS_OFFSET;
  ------------------
  |  |  287|      1|    (_Py_STATIC_CAST(size_t, 1) << (8 * sizeof(size_t) - 1))
  |  |  ------------------
  |  |  |  |   34|      1|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
   36|      1|}
call.c:_PyVectorcall_NARGS:
   34|  1.34k|{
   35|  1.34k|    return n & ~PY_VECTORCALL_ARGUMENTS_OFFSET;
  ------------------
  |  |  287|  1.34k|    (_Py_STATIC_CAST(size_t, 1) << (8 * sizeof(size_t) - 1))
  |  |  ------------------
  |  |  |  |   34|  1.34k|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
   36|  1.34k|}
descrobject.c:_PyVectorcall_NARGS:
   34|    305|{
   35|    305|    return n & ~PY_VECTORCALL_ARGUMENTS_OFFSET;
  ------------------
  |  |  287|    305|    (_Py_STATIC_CAST(size_t, 1) << (8 * sizeof(size_t) - 1))
  |  |  ------------------
  |  |  |  |   34|    305|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
   36|    305|}
descrobject.c:PyObject_CallMethodNoArgs:
   63|     29|{
   64|     29|    size_t nargsf = 1 | PY_VECTORCALL_ARGUMENTS_OFFSET;
  ------------------
  |  |  287|     29|    (_Py_STATIC_CAST(size_t, 1) << (8 * sizeof(size_t) - 1))
  |  |  ------------------
  |  |  |  |   34|     29|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
   65|       |    return PyObject_VectorcallMethod(name, &self, nargsf, _Py_NULL);
  ------------------
  |  |   57|     29|#  define _Py_NULL NULL
  ------------------
   66|     29|}
enumobject.c:_PyVectorcall_NARGS:
   34|      6|{
   35|      6|    return n & ~PY_VECTORCALL_ARGUMENTS_OFFSET;
  ------------------
  |  |  287|      6|    (_Py_STATIC_CAST(size_t, 1) << (8 * sizeof(size_t) - 1))
  |  |  ------------------
  |  |  |  |   34|      6|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
   36|      6|}
methodobject.c:_PyVectorcall_NARGS:
   34|    814|{
   35|    814|    return n & ~PY_VECTORCALL_ARGUMENTS_OFFSET;
  ------------------
  |  |  287|    814|    (_Py_STATIC_CAST(size_t, 1) << (8 * sizeof(size_t) - 1))
  |  |  ------------------
  |  |  |  |   34|    814|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
   36|    814|}

typeobject.c:PyByteArray_AS_STRING:
   25|    256|{
   26|    256|    return _PyByteArray_CAST(op)->ob_start;
  ------------------
  |  |   22|    256|    (assert(PyByteArray_Check(op)), _Py_CAST(PyByteArrayObject*, op))
  |  |  ------------------
  |  |  |  |   37|    256|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (26:12): [True: 256, False: 0]
  ------------------
   27|    256|}

typeobject.c:PyBytes_GET_SIZE:
   29|      8|static inline Py_ssize_t PyBytes_GET_SIZE(PyObject *op) {
   30|      8|    PyBytesObject *self = _PyBytes_CAST(op);
  ------------------
  |  |   21|      8|    (assert(PyBytes_Check(op)), _Py_CAST(PyBytesObject*, op))
  |  |  ------------------
  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (30:27): [True: 8, False: 0]
  ------------------
   31|      8|    return Py_SIZE(self);
  ------------------
  |  |  214|      8|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      8|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   32|      8|}
typeobject.c:PyBytes_AS_STRING:
   24|      8|{
   25|      8|    return _PyBytes_CAST(op)->ob_sval;
  ------------------
  |  |   21|      8|    (assert(PyBytes_Check(op)), _Py_CAST(PyBytesObject*, op))
  |  |  ------------------
  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (25:12): [True: 8, False: 0]
  ------------------
   26|      8|}
unicodeobject.c:PyBytes_GET_SIZE:
   29|      4|static inline Py_ssize_t PyBytes_GET_SIZE(PyObject *op) {
   30|      4|    PyBytesObject *self = _PyBytes_CAST(op);
  ------------------
  |  |   21|      4|    (assert(PyBytes_Check(op)), _Py_CAST(PyBytesObject*, op))
  |  |  ------------------
  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (30:27): [True: 4, False: 0]
  ------------------
   31|      4|    return Py_SIZE(self);
  ------------------
  |  |  214|      4|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   32|      4|}
unicodeobject.c:PyBytes_AS_STRING:
   24|      2|{
   25|      2|    return _PyBytes_CAST(op)->ob_sval;
  ------------------
  |  |   21|      2|    (assert(PyBytes_Check(op)), _Py_CAST(PyBytesObject*, op))
  |  |  ------------------
  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (25:12): [True: 2, False: 0]
  ------------------
   26|      2|}
ceval.c:PyBytes_AS_STRING:
   24|    108|{
   25|    108|    return _PyBytes_CAST(op)->ob_sval;
  ------------------
  |  |   21|    108|    (assert(PyBytes_Check(op)), _Py_CAST(PyBytesObject*, op))
  |  |  ------------------
  |  |  |  |   37|    108|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (25:12): [True: 108, False: 0]
  ------------------
   26|    108|}
ceval.c:PyBytes_GET_SIZE:
   29|    108|static inline Py_ssize_t PyBytes_GET_SIZE(PyObject *op) {
   30|    108|    PyBytesObject *self = _PyBytes_CAST(op);
  ------------------
  |  |   21|    108|    (assert(PyBytes_Check(op)), _Py_CAST(PyBytesObject*, op))
  |  |  ------------------
  |  |  |  |   37|    108|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (30:27): [True: 108, False: 0]
  ------------------
   31|    108|    return Py_SIZE(self);
  ------------------
  |  |  214|    108|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    108|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    108|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   32|    108|}
import.c:PyBytes_AS_STRING:
   24|     12|{
   25|     12|    return _PyBytes_CAST(op)->ob_sval;
  ------------------
  |  |   21|     12|    (assert(PyBytes_Check(op)), _Py_CAST(PyBytesObject*, op))
  |  |  ------------------
  |  |  |  |   37|     12|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (25:12): [True: 12, False: 0]
  ------------------
   26|     12|}
marshal.c:PyBytes_AS_STRING:
   24|  2.31k|{
   25|  2.31k|    return _PyBytes_CAST(op)->ob_sval;
  ------------------
  |  |   21|  2.31k|    (assert(PyBytes_Check(op)), _Py_CAST(PyBytesObject*, op))
  |  |  ------------------
  |  |  |  |   37|  2.31k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (25:12): [True: 2.31k, False: 0]
  ------------------
   26|  2.31k|}
posixmodule.c:PyBytes_GET_SIZE:
   29|     23|static inline Py_ssize_t PyBytes_GET_SIZE(PyObject *op) {
   30|     23|    PyBytesObject *self = _PyBytes_CAST(op);
  ------------------
  |  |   21|     23|    (assert(PyBytes_Check(op)), _Py_CAST(PyBytesObject*, op))
  |  |  ------------------
  |  |  |  |   37|     23|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (30:27): [True: 23, False: 0]
  ------------------
   31|     23|    return Py_SIZE(self);
  ------------------
  |  |  214|     23|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     23|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     23|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   32|     23|}
posixmodule.c:PyBytes_AS_STRING:
   24|     23|{
   25|     23|    return _PyBytes_CAST(op)->ob_sval;
  ------------------
  |  |   21|     23|    (assert(PyBytes_Check(op)), _Py_CAST(PyBytesObject*, op))
  |  |  ------------------
  |  |  |  |   37|     23|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (25:12): [True: 23, False: 0]
  ------------------
   26|     23|}
bytearrayobject.c:PyBytes_AS_STRING:
   24|     82|{
   25|     82|    return _PyBytes_CAST(op)->ob_sval;
  ------------------
  |  |   21|     82|    (assert(PyBytes_Check(op)), _Py_CAST(PyBytesObject*, op))
  |  |  ------------------
  |  |  |  |   37|     82|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (25:12): [True: 82, False: 0]
  ------------------
   26|     82|}
codeobject.c:PyBytes_GET_SIZE:
   29|  8.07k|static inline Py_ssize_t PyBytes_GET_SIZE(PyObject *op) {
   30|  8.07k|    PyBytesObject *self = _PyBytes_CAST(op);
  ------------------
  |  |   21|  8.07k|    (assert(PyBytes_Check(op)), _Py_CAST(PyBytesObject*, op))
  |  |  ------------------
  |  |  |  |   37|  8.07k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (30:27): [True: 8.07k, False: 0]
  ------------------
   31|  8.07k|    return Py_SIZE(self);
  ------------------
  |  |  214|  8.07k|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  8.07k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  8.07k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   32|  8.07k|}
codeobject.c:PyBytes_AS_STRING:
   24|  5.84k|{
   25|  5.84k|    return _PyBytes_CAST(op)->ob_sval;
  ------------------
  |  |   21|  5.84k|    (assert(PyBytes_Check(op)), _Py_CAST(PyBytesObject*, op))
  |  |  ------------------
  |  |  |  |   37|  5.84k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (25:12): [True: 5.84k, False: 0]
  ------------------
   26|  5.84k|}

classobject.c:PyMethod_GET_SELF:
   39|     69|static inline PyObject* PyMethod_GET_SELF(PyObject *meth) {
   40|     69|    return _PyMethod_CAST(meth)->im_self;
  ------------------
  |  |   30|     69|    (assert(PyMethod_Check(meth)), _Py_CAST(PyMethodObject*, meth))
  |  |  ------------------
  |  |  |  |   37|     69|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (40:12): [True: 69, False: 0]
  ------------------
   41|     69|}
classobject.c:PyMethod_GET_FUNCTION:
   34|     69|static inline PyObject* PyMethod_GET_FUNCTION(PyObject *meth) {
   35|     69|    return _PyMethod_CAST(meth)->im_func;
  ------------------
  |  |   30|     69|    (assert(PyMethod_Check(meth)), _Py_CAST(PyMethodObject*, meth))
  |  |  ------------------
  |  |  |  |   37|     69|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (35:12): [True: 69, False: 0]
  ------------------
   36|     69|}

typeobject.c:PyUnstable_Code_GetFirstFree:
  171|      4|static inline int PyUnstable_Code_GetFirstFree(PyCodeObject *op) {
  172|      4|    assert(PyCode_Check(op));
  ------------------
  |  Branch (172:5): [True: 4, False: 0]
  ------------------
  173|      4|    return op->co_nlocalsplus - op->co_nfreevars;
  174|      4|}
bltinmodule.c:PyCode_GetNumFree:
  166|     14|static inline Py_ssize_t PyCode_GetNumFree(PyCodeObject *op) {
  167|     14|    assert(PyCode_Check(op));
  ------------------
  |  Branch (167:5): [True: 14, False: 0]
  ------------------
  168|     14|    return op->co_nfreevars;
  169|     14|}

typeobject.c:PyDict_GET_SIZE:
   53|      1|static inline Py_ssize_t PyDict_GET_SIZE(PyObject *op) {
   54|      1|    PyDictObject *mp;
   55|      1|    assert(PyAnyDict_Check(op));
  ------------------
  |  Branch (55:5): [True: 1, False: 0]
  |  Branch (55:5): [True: 0, False: 0]
  ------------------
   56|      1|    mp = _Py_CAST(PyDictObject*, op);
  ------------------
  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
   57|       |#ifdef Py_GIL_DISABLED
   58|       |    return _Py_atomic_load_ssize_relaxed(&mp->ma_used);
   59|       |#else
   60|      1|    return mp->ma_used;
   61|      1|#endif
   62|      1|}
ceval.c:PyDict_GET_SIZE:
   53|      1|static inline Py_ssize_t PyDict_GET_SIZE(PyObject *op) {
   54|      1|    PyDictObject *mp;
   55|      1|    assert(PyAnyDict_Check(op));
  ------------------
  |  Branch (55:5): [True: 1, False: 0]
  |  Branch (55:5): [True: 0, False: 0]
  ------------------
   56|      1|    mp = _Py_CAST(PyDictObject*, op);
  ------------------
  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
   57|       |#ifdef Py_GIL_DISABLED
   58|       |    return _Py_atomic_load_ssize_relaxed(&mp->ma_used);
   59|       |#else
   60|      1|    return mp->ma_used;
   61|      1|#endif
   62|      1|}
getargs.c:PyDict_GET_SIZE:
   53|      7|static inline Py_ssize_t PyDict_GET_SIZE(PyObject *op) {
   54|      7|    PyDictObject *mp;
   55|      7|    assert(PyAnyDict_Check(op));
  ------------------
  |  Branch (55:5): [True: 7, False: 0]
  |  Branch (55:5): [True: 0, False: 0]
  ------------------
   56|      7|    mp = _Py_CAST(PyDictObject*, op);
  ------------------
  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
   57|       |#ifdef Py_GIL_DISABLED
   58|       |    return _Py_atomic_load_ssize_relaxed(&mp->ma_used);
   59|       |#else
   60|      7|    return mp->ma_used;
   61|      7|#endif
   62|      7|}
call.c:PyDict_GET_SIZE:
   53|    163|static inline Py_ssize_t PyDict_GET_SIZE(PyObject *op) {
   54|    163|    PyDictObject *mp;
   55|    163|    assert(PyAnyDict_Check(op));
  ------------------
  |  Branch (55:5): [True: 163, False: 0]
  |  Branch (55:5): [True: 0, False: 0]
  ------------------
   56|    163|    mp = _Py_CAST(PyDictObject*, op);
  ------------------
  |  |   37|    163|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
   57|       |#ifdef Py_GIL_DISABLED
   58|       |    return _Py_atomic_load_ssize_relaxed(&mp->ma_used);
   59|       |#else
   60|    163|    return mp->ma_used;
   61|    163|#endif
   62|    163|}

floatobject.c:PyFloat_AS_DOUBLE:
   15|      9|static inline double PyFloat_AS_DOUBLE(PyObject *op) {
   16|      9|    return _PyFloat_CAST(op)->ob_fval;
  ------------------
  |  |   11|      9|    (assert(PyFloat_Check(op)), _Py_CAST(PyFloatObject*, op))
  |  |  ------------------
  |  |  |  |   37|      9|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (16:12): [True: 9, False: 0]
  ------------------
   17|      9|}

ceval.c:PyFunction_GET_CODE:
   90|    623|static inline PyObject* PyFunction_GET_CODE(PyObject *func) {
   91|    623|    return _PyFunction_CAST(func)->func_code;
  ------------------
  |  |   86|    623|    (assert(PyFunction_Check(func)), _Py_CAST(PyFunctionObject*, func))
  |  |  ------------------
  |  |  |  |   37|    623|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (91:12): [True: 623, False: 0]
  ------------------
   92|    623|}
specialize.c:PyFunction_GET_CODE:
   90|      5|static inline PyObject* PyFunction_GET_CODE(PyObject *func) {
   91|      5|    return _PyFunction_CAST(func)->func_code;
  ------------------
  |  |   86|      5|    (assert(PyFunction_Check(func)), _Py_CAST(PyFunctionObject*, func))
  |  |  ------------------
  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (91:12): [True: 5, False: 0]
  ------------------
   92|      5|}

listobject.c:PyList_GET_SIZE:
   30|    660|static inline Py_ssize_t PyList_GET_SIZE(PyObject *op) {
   31|    660|    PyListObject *list = _PyList_CAST(op);
  ------------------
  |  |   26|    660|    (assert(PyList_Check(op)), _Py_CAST(PyListObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|    660|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (31:26): [True: 660, False: 0]
  ------------------
   32|       |#ifdef Py_GIL_DISABLED
   33|       |    return _Py_atomic_load_ssize_relaxed(&(_PyVarObject_CAST(list)->ob_size));
   34|       |#else
   35|    660|    return Py_SIZE(list);
  ------------------
  |  |  214|    660|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    660|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    660|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   36|    660|#endif
   37|    660|}
listobject.c:PyList_SET_ITEM:
   43|  5.06k|PyList_SET_ITEM(PyObject *op, Py_ssize_t index, PyObject *value) {
   44|  5.06k|    PyListObject *list = _PyList_CAST(op);
  ------------------
  |  |   26|  5.06k|    (assert(PyList_Check(op)), _Py_CAST(PyListObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|  5.06k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (44:26): [True: 5.06k, False: 0]
  ------------------
   45|  5.06k|    assert(0 <= index);
  ------------------
  |  Branch (45:5): [True: 5.06k, False: 0]
  ------------------
   46|  5.06k|    assert(index < list->allocated);
  ------------------
  |  Branch (46:5): [True: 5.06k, False: 0]
  ------------------
   47|  5.06k|    list->ob_item[index] = value;
   48|  5.06k|}
dictobject.c:PyList_SET_ITEM:
   43|    873|PyList_SET_ITEM(PyObject *op, Py_ssize_t index, PyObject *value) {
   44|    873|    PyListObject *list = _PyList_CAST(op);
  ------------------
  |  |   26|    873|    (assert(PyList_Check(op)), _Py_CAST(PyListObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|    873|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (44:26): [True: 873, False: 0]
  ------------------
   45|    873|    assert(0 <= index);
  ------------------
  |  Branch (45:5): [True: 873, False: 0]
  ------------------
   46|    873|    assert(index < list->allocated);
  ------------------
  |  Branch (46:5): [True: 873, False: 0]
  ------------------
   47|    873|    list->ob_item[index] = value;
   48|    873|}
typeobject.c:PyList_SET_ITEM:
   43|     17|PyList_SET_ITEM(PyObject *op, Py_ssize_t index, PyObject *value) {
   44|     17|    PyListObject *list = _PyList_CAST(op);
  ------------------
  |  |   26|     17|    (assert(PyList_Check(op)), _Py_CAST(PyListObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|     17|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (44:26): [True: 17, False: 0]
  ------------------
   45|     17|    assert(0 <= index);
  ------------------
  |  Branch (45:5): [True: 17, False: 0]
  ------------------
   46|     17|    assert(index < list->allocated);
  ------------------
  |  Branch (46:5): [True: 17, False: 0]
  ------------------
   47|     17|    list->ob_item[index] = value;
   48|     17|}
unicodeobject.c:PyList_GET_SIZE:
   30|     41|static inline Py_ssize_t PyList_GET_SIZE(PyObject *op) {
   31|     41|    PyListObject *list = _PyList_CAST(op);
  ------------------
  |  |   26|     41|    (assert(PyList_Check(op)), _Py_CAST(PyListObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|     41|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (31:26): [True: 41, False: 0]
  ------------------
   32|       |#ifdef Py_GIL_DISABLED
   33|       |    return _Py_atomic_load_ssize_relaxed(&(_PyVarObject_CAST(list)->ob_size));
   34|       |#else
   35|     41|    return Py_SIZE(list);
  ------------------
  |  |  214|     41|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     41|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     41|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   36|     41|#endif
   37|     41|}
unicodeobject.c:PyList_SET_ITEM:
   43|      4|PyList_SET_ITEM(PyObject *op, Py_ssize_t index, PyObject *value) {
   44|      4|    PyListObject *list = _PyList_CAST(op);
  ------------------
  |  |   26|      4|    (assert(PyList_Check(op)), _Py_CAST(PyListObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (44:26): [True: 4, False: 0]
  ------------------
   45|      4|    assert(0 <= index);
  ------------------
  |  Branch (45:5): [True: 4, False: 0]
  ------------------
   46|      4|    assert(index < list->allocated);
  ------------------
  |  Branch (46:5): [True: 4, False: 0]
  ------------------
   47|      4|    list->ob_item[index] = value;
   48|      4|}
_warnings.c:PyList_SET_ITEM:
   43|      5|PyList_SET_ITEM(PyObject *op, Py_ssize_t index, PyObject *value) {
   44|      5|    PyListObject *list = _PyList_CAST(op);
  ------------------
  |  |   26|      5|    (assert(PyList_Check(op)), _Py_CAST(PyListObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (44:26): [True: 5, False: 0]
  ------------------
   45|      5|    assert(0 <= index);
  ------------------
  |  Branch (45:5): [True: 5, False: 0]
  ------------------
   46|      5|    assert(index < list->allocated);
  ------------------
  |  Branch (46:5): [True: 5, False: 0]
  ------------------
   47|      5|    list->ob_item[index] = value;
   48|      5|}
ceval.c:PyList_GET_SIZE:
   30|    586|static inline Py_ssize_t PyList_GET_SIZE(PyObject *op) {
   31|    586|    PyListObject *list = _PyList_CAST(op);
  ------------------
  |  |   26|    586|    (assert(PyList_Check(op)), _Py_CAST(PyListObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|    586|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (31:26): [True: 586, False: 0]
  ------------------
   32|       |#ifdef Py_GIL_DISABLED
   33|       |    return _Py_atomic_load_ssize_relaxed(&(_PyVarObject_CAST(list)->ob_size));
   34|       |#else
   35|    586|    return Py_SIZE(list);
  ------------------
  |  |  214|    586|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    586|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    586|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   36|    586|#endif
   37|    586|}
ceval.c:PyList_SET_ITEM:
   43|    467|PyList_SET_ITEM(PyObject *op, Py_ssize_t index, PyObject *value) {
   44|    467|    PyListObject *list = _PyList_CAST(op);
  ------------------
  |  |   26|    467|    (assert(PyList_Check(op)), _Py_CAST(PyListObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|    467|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (44:26): [True: 467, False: 0]
  ------------------
   45|    467|    assert(0 <= index);
  ------------------
  |  Branch (45:5): [True: 467, False: 0]
  ------------------
   46|    467|    assert(index < list->allocated);
  ------------------
  |  Branch (46:5): [True: 467, False: 0]
  ------------------
   47|    467|    list->ob_item[index] = value;
   48|    467|}
gc.c:PyList_GET_SIZE:
   30|      8|static inline Py_ssize_t PyList_GET_SIZE(PyObject *op) {
   31|      8|    PyListObject *list = _PyList_CAST(op);
  ------------------
  |  |   26|      8|    (assert(PyList_Check(op)), _Py_CAST(PyListObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (31:26): [True: 8, False: 0]
  ------------------
   32|       |#ifdef Py_GIL_DISABLED
   33|       |    return _Py_atomic_load_ssize_relaxed(&(_PyVarObject_CAST(list)->ob_size));
   34|       |#else
   35|      8|    return Py_SIZE(list);
  ------------------
  |  |  214|      8|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      8|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   36|      8|#endif
   37|      8|}
import.c:PyList_GET_SIZE:
   30|      7|static inline Py_ssize_t PyList_GET_SIZE(PyObject *op) {
   31|      7|    PyListObject *list = _PyList_CAST(op);
  ------------------
  |  |   26|      7|    (assert(PyList_Check(op)), _Py_CAST(PyListObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (31:26): [True: 7, False: 0]
  ------------------
   32|       |#ifdef Py_GIL_DISABLED
   33|       |    return _Py_atomic_load_ssize_relaxed(&(_PyVarObject_CAST(list)->ob_size));
   34|       |#else
   35|      7|    return Py_SIZE(list);
  ------------------
  |  |  214|      7|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      7|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   36|      7|#endif
   37|      7|}
initconfig.c:PyList_SET_ITEM:
   43|      4|PyList_SET_ITEM(PyObject *op, Py_ssize_t index, PyObject *value) {
   44|      4|    PyListObject *list = _PyList_CAST(op);
  ------------------
  |  |   26|      4|    (assert(PyList_Check(op)), _Py_CAST(PyListObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (44:26): [True: 4, False: 0]
  ------------------
   45|      4|    assert(0 <= index);
  ------------------
  |  Branch (45:5): [True: 4, False: 0]
  ------------------
   46|      4|    assert(index < list->allocated);
  ------------------
  |  Branch (46:5): [True: 4, False: 0]
  ------------------
   47|      4|    list->ob_item[index] = value;
   48|      4|}
initconfig.c:PyList_GET_SIZE:
   30|      1|static inline Py_ssize_t PyList_GET_SIZE(PyObject *op) {
   31|      1|    PyListObject *list = _PyList_CAST(op);
  ------------------
  |  |   26|      1|    (assert(PyList_Check(op)), _Py_CAST(PyListObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (31:26): [True: 1, False: 0]
  ------------------
   32|       |#ifdef Py_GIL_DISABLED
   33|       |    return _Py_atomic_load_ssize_relaxed(&(_PyVarObject_CAST(list)->ob_size));
   34|       |#else
   35|      1|    return Py_SIZE(list);
  ------------------
  |  |  214|      1|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   36|      1|#endif
   37|      1|}
marshal.c:PyList_GET_SIZE:
   30|  7.87k|static inline Py_ssize_t PyList_GET_SIZE(PyObject *op) {
   31|  7.87k|    PyListObject *list = _PyList_CAST(op);
  ------------------
  |  |   26|  7.87k|    (assert(PyList_Check(op)), _Py_CAST(PyListObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|  7.87k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (31:26): [True: 7.87k, False: 0]
  ------------------
   32|       |#ifdef Py_GIL_DISABLED
   33|       |    return _Py_atomic_load_ssize_relaxed(&(_PyVarObject_CAST(list)->ob_size));
   34|       |#else
   35|  7.87k|    return Py_SIZE(list);
  ------------------
  |  |  214|  7.87k|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  7.87k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  7.87k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   36|  7.87k|#endif
   37|  7.87k|}
marshal.c:PyList_SET_ITEM:
   43|      8|PyList_SET_ITEM(PyObject *op, Py_ssize_t index, PyObject *value) {
   44|      8|    PyListObject *list = _PyList_CAST(op);
  ------------------
  |  |   26|      8|    (assert(PyList_Check(op)), _Py_CAST(PyListObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (44:26): [True: 8, False: 0]
  ------------------
   45|      8|    assert(0 <= index);
  ------------------
  |  Branch (45:5): [True: 8, False: 0]
  ------------------
   46|      8|    assert(index < list->allocated);
  ------------------
  |  Branch (46:5): [True: 8, False: 0]
  ------------------
   47|      8|    list->ob_item[index] = value;
   48|      8|}
_abc.c:PyList_GET_SIZE:
   30|    327|static inline Py_ssize_t PyList_GET_SIZE(PyObject *op) {
   31|    327|    PyListObject *list = _PyList_CAST(op);
  ------------------
  |  |   26|    327|    (assert(PyList_Check(op)), _Py_CAST(PyListObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|    327|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (31:26): [True: 327, False: 0]
  ------------------
   32|       |#ifdef Py_GIL_DISABLED
   33|       |    return _Py_atomic_load_ssize_relaxed(&(_PyVarObject_CAST(list)->ob_size));
   34|       |#else
   35|    327|    return Py_SIZE(list);
  ------------------
  |  |  214|    327|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    327|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    327|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   36|    327|#endif
   37|    327|}

longobject.c:_PyLong_IsCompact:
  122|  2.00k|_PyLong_IsCompact(const PyLongObject* op) {
  123|  2.00k|    assert(PyType_HasFeature(op->ob_base.ob_type, Py_TPFLAGS_LONG_SUBCLASS));
  ------------------
  |  Branch (123:5): [True: 2.00k, False: 0]
  ------------------
  124|  2.00k|    return op->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS);
  ------------------
  |  |  118|  2.00k|#define _PyLong_NON_SIZE_BITS 3
  ------------------
  125|  2.00k|}
longobject.c:_PyLong_CompactValue:
  131|    452|{
  132|    452|    Py_ssize_t sign;
  133|    452|    assert(PyType_HasFeature(op->ob_base.ob_type, Py_TPFLAGS_LONG_SUBCLASS));
  ------------------
  |  Branch (133:5): [True: 452, False: 0]
  ------------------
  134|    452|    assert(PyUnstable_Long_IsCompact(op));
  ------------------
  |  Branch (134:5): [True: 452, False: 0]
  ------------------
  135|    452|    sign = 1 - (op->long_value.lv_tag & _PyLong_SIGN_MASK);
  ------------------
  |  |  117|    452|#define _PyLong_SIGN_MASK 3
  ------------------
  136|    452|    if (sign == 0) {
  ------------------
  |  Branch (136:9): [True: 131, False: 321]
  ------------------
  137|       |        // gh-147988: Make sure that the digit is zero.
  138|       |        // It helps detecting the usage of uninitialized digits.
  139|    131|        assert(op->long_value.ob_digit[0] == 0);
  ------------------
  |  Branch (139:9): [True: 131, False: 0]
  ------------------
  140|    131|    }
  141|    452|    return sign * (Py_ssize_t)op->long_value.ob_digit[0];
  142|    452|}
ceval.c:_PyLong_CompactValue:
  131|    245|{
  132|    245|    Py_ssize_t sign;
  133|    245|    assert(PyType_HasFeature(op->ob_base.ob_type, Py_TPFLAGS_LONG_SUBCLASS));
  ------------------
  |  Branch (133:5): [True: 245, False: 0]
  ------------------
  134|    245|    assert(PyUnstable_Long_IsCompact(op));
  ------------------
  |  Branch (134:5): [True: 245, False: 0]
  ------------------
  135|    245|    sign = 1 - (op->long_value.lv_tag & _PyLong_SIGN_MASK);
  ------------------
  |  |  117|    245|#define _PyLong_SIGN_MASK 3
  ------------------
  136|    245|    if (sign == 0) {
  ------------------
  |  Branch (136:9): [True: 135, False: 110]
  ------------------
  137|       |        // gh-147988: Make sure that the digit is zero.
  138|       |        // It helps detecting the usage of uninitialized digits.
  139|    135|        assert(op->long_value.ob_digit[0] == 0);
  ------------------
  |  Branch (139:9): [True: 135, False: 0]
  ------------------
  140|    135|    }
  141|    245|    return sign * (Py_ssize_t)op->long_value.ob_digit[0];
  142|    245|}
ceval.c:_PyLong_IsCompact:
  122|  1.22k|_PyLong_IsCompact(const PyLongObject* op) {
  123|  1.22k|    assert(PyType_HasFeature(op->ob_base.ob_type, Py_TPFLAGS_LONG_SUBCLASS));
  ------------------
  |  Branch (123:5): [True: 1.22k, False: 0]
  ------------------
  124|  1.22k|    return op->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS);
  ------------------
  |  |  118|  1.22k|#define _PyLong_NON_SIZE_BITS 3
  ------------------
  125|  1.22k|}
specialize.c:_PyLong_CompactValue:
  131|     10|{
  132|     10|    Py_ssize_t sign;
  133|     10|    assert(PyType_HasFeature(op->ob_base.ob_type, Py_TPFLAGS_LONG_SUBCLASS));
  ------------------
  |  Branch (133:5): [True: 10, False: 0]
  ------------------
  134|     10|    assert(PyUnstable_Long_IsCompact(op));
  ------------------
  |  Branch (134:5): [True: 10, False: 0]
  ------------------
  135|     10|    sign = 1 - (op->long_value.lv_tag & _PyLong_SIGN_MASK);
  ------------------
  |  |  117|     10|#define _PyLong_SIGN_MASK 3
  ------------------
  136|     10|    if (sign == 0) {
  ------------------
  |  Branch (136:9): [True: 0, False: 10]
  ------------------
  137|       |        // gh-147988: Make sure that the digit is zero.
  138|       |        // It helps detecting the usage of uninitialized digits.
  139|      0|        assert(op->long_value.ob_digit[0] == 0);
  ------------------
  |  Branch (139:9): [True: 0, False: 0]
  ------------------
  140|      0|    }
  141|     10|    return sign * (Py_ssize_t)op->long_value.ob_digit[0];
  142|     10|}
specialize.c:_PyLong_IsCompact:
  122|     41|_PyLong_IsCompact(const PyLongObject* op) {
  123|     41|    assert(PyType_HasFeature(op->ob_base.ob_type, Py_TPFLAGS_LONG_SUBCLASS));
  ------------------
  |  Branch (123:5): [True: 41, False: 0]
  ------------------
  124|     41|    return op->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS);
  ------------------
  |  |  118|     41|#define _PyLong_NON_SIZE_BITS 3
  ------------------
  125|     41|}

typeobject.c:PyCFunction_GET_FUNCTION:
   40|     82|static inline PyCFunction PyCFunction_GET_FUNCTION(PyObject *func) {
   41|     82|    return _PyCFunctionObject_CAST(func)->m_ml->ml_meth;
  ------------------
  |  |   17|     82|    (assert(PyCFunction_Check(func)), \
  |  |   18|     82|     _Py_CAST(PyCFunctionObject*, (func)))
  |  |  ------------------
  |  |  |  |   37|     82|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (41:12): [True: 82, False: 0]
  ------------------
   42|     82|}
ceval.c:PyCFunction_GET_FUNCTION:
   40|    631|static inline PyCFunction PyCFunction_GET_FUNCTION(PyObject *func) {
   41|    631|    return _PyCFunctionObject_CAST(func)->m_ml->ml_meth;
  ------------------
  |  |   17|    631|    (assert(PyCFunction_Check(func)), \
  |  |   18|    631|     _Py_CAST(PyCFunctionObject*, (func)))
  |  |  ------------------
  |  |  |  |   37|    631|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (41:12): [True: 631, False: 0]
  ------------------
   42|    631|}
ceval.c:PyCFunction_GET_SELF:
   45|    631|static inline PyObject* PyCFunction_GET_SELF(PyObject *func_obj) {
   46|    631|    PyCFunctionObject *func = _PyCFunctionObject_CAST(func_obj);
  ------------------
  |  |   17|    631|    (assert(PyCFunction_Check(func)), \
  |  |   18|    631|     _Py_CAST(PyCFunctionObject*, (func)))
  |  |  ------------------
  |  |  |  |   37|    631|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (46:31): [True: 631, False: 0]
  ------------------
   47|    631|    if (func->m_ml->ml_flags & METH_STATIC) {
  ------------------
  |  |  105|    631|#define METH_STATIC   0x0020
  ------------------
  |  Branch (47:9): [True: 0, False: 631]
  ------------------
   48|      0|        return _Py_NULL;
  ------------------
  |  |   57|      0|#  define _Py_NULL NULL
  ------------------
   49|      0|    }
   50|    631|    return func->m_self;
   51|    631|}
ceval.c:PyCFunction_GET_FLAGS:
   54|    631|static inline int PyCFunction_GET_FLAGS(PyObject *func) {
   55|    631|    return _PyCFunctionObject_CAST(func)->m_ml->ml_flags;
  ------------------
  |  |   17|    631|    (assert(PyCFunction_Check(func)), \
  |  |   18|    631|     _Py_CAST(PyCFunctionObject*, (func)))
  |  |  ------------------
  |  |  |  |   37|    631|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (55:12): [True: 631, False: 0]
  ------------------
   56|    631|}
specialize.c:PyCFunction_GET_FUNCTION:
   40|     66|static inline PyCFunction PyCFunction_GET_FUNCTION(PyObject *func) {
   41|     66|    return _PyCFunctionObject_CAST(func)->m_ml->ml_meth;
  ------------------
  |  |   17|     66|    (assert(PyCFunction_Check(func)), \
  |  |   18|     66|     _Py_CAST(PyCFunctionObject*, (func)))
  |  |  ------------------
  |  |  |  |   37|     66|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (41:12): [True: 66, False: 0]
  ------------------
   42|     66|}
specialize.c:PyCFunction_GET_FLAGS:
   54|     66|static inline int PyCFunction_GET_FLAGS(PyObject *func) {
   55|     66|    return _PyCFunctionObject_CAST(func)->m_ml->ml_flags;
  ------------------
  |  |   17|     66|    (assert(PyCFunction_Check(func)), \
  |  |   18|     66|     _Py_CAST(PyCFunctionObject*, (func)))
  |  |  ------------------
  |  |  |  |   37|     66|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (55:12): [True: 66, False: 0]
  ------------------
   56|     66|}
methodobject.c:PyCFunction_GET_FUNCTION:
   40|    855|static inline PyCFunction PyCFunction_GET_FUNCTION(PyObject *func) {
   41|    855|    return _PyCFunctionObject_CAST(func)->m_ml->ml_meth;
  ------------------
  |  |   17|    855|    (assert(PyCFunction_Check(func)), \
  |  |   18|    855|     _Py_CAST(PyCFunctionObject*, (func)))
  |  |  ------------------
  |  |  |  |   37|    855|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (41:12): [True: 855, False: 0]
  ------------------
   42|    855|}
methodobject.c:PyCFunction_GET_SELF:
   45|    855|static inline PyObject* PyCFunction_GET_SELF(PyObject *func_obj) {
   46|    855|    PyCFunctionObject *func = _PyCFunctionObject_CAST(func_obj);
  ------------------
  |  |   17|    855|    (assert(PyCFunction_Check(func)), \
  |  |   18|    855|     _Py_CAST(PyCFunctionObject*, (func)))
  |  |  ------------------
  |  |  |  |   37|    855|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (46:31): [True: 855, False: 0]
  ------------------
   47|    855|    if (func->m_ml->ml_flags & METH_STATIC) {
  ------------------
  |  |  105|    855|#define METH_STATIC   0x0020
  ------------------
  |  Branch (47:9): [True: 0, False: 855]
  ------------------
   48|      0|        return _Py_NULL;
  ------------------
  |  |   57|      0|#  define _Py_NULL NULL
  ------------------
   49|      0|    }
   50|    855|    return func->m_self;
   51|    855|}
methodobject.c:PyCFunction_GET_FLAGS:
   54|     41|static inline int PyCFunction_GET_FLAGS(PyObject *func) {
   55|     41|    return _PyCFunctionObject_CAST(func)->m_ml->ml_flags;
  ------------------
  |  |   17|     41|    (assert(PyCFunction_Check(func)), \
  |  |   18|     41|     _Py_CAST(PyCFunctionObject*, (func)))
  |  |  ------------------
  |  |  |  |   37|     41|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (55:12): [True: 41, False: 0]
  ------------------
   56|     41|}
methodobject.c:PyCFunction_GET_CLASS:
   59|  1.31k|static inline PyTypeObject* PyCFunction_GET_CLASS(PyObject *func_obj) {
   60|  1.31k|    PyCFunctionObject *func = _PyCFunctionObject_CAST(func_obj);
  ------------------
  |  |   17|  1.31k|    (assert(PyCFunction_Check(func)), \
  |  |   18|  1.31k|     _Py_CAST(PyCFunctionObject*, (func)))
  |  |  ------------------
  |  |  |  |   37|  1.31k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (60:31): [True: 1.31k, False: 0]
  ------------------
   61|  1.31k|    if (func->m_ml->ml_flags & METH_METHOD) {
  ------------------
  |  |  133|  1.31k|#define METH_METHOD 0x0200
  ------------------
  |  Branch (61:9): [True: 2, False: 1.31k]
  ------------------
   62|      2|        return _PyCMethodObject_CAST(func)->mm_class;
  ------------------
  |  |   29|      2|    (assert(PyCMethod_Check(func)), \
  |  |   30|      2|     _Py_CAST(PyCMethodObject*, (func)))
  |  |  ------------------
  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (62:16): [True: 2, False: 0]
  ------------------
   63|      2|    }
   64|  1.31k|    return _Py_NULL;
  ------------------
  |  |   57|  1.31k|#  define _Py_NULL NULL
  ------------------
   65|  1.31k|}

object.c:_PyObject_SIZE:
    5|     85|static inline size_t _PyObject_SIZE(PyTypeObject *type) {
    6|     85|    return _Py_STATIC_CAST(size_t, type->tp_basicsize);
  ------------------
  |  |   34|     85|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  ------------------
    7|     85|}
object.c:_PyObject_VAR_SIZE:
   23|    743|static inline size_t _PyObject_VAR_SIZE(PyTypeObject *type, Py_ssize_t nitems) {
   24|    743|    size_t size = _Py_STATIC_CAST(size_t, type->tp_basicsize);
  ------------------
  |  |   34|    743|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  ------------------
   25|    743|    size += _Py_STATIC_CAST(size_t, nitems) * _Py_STATIC_CAST(size_t, type->tp_itemsize);
  ------------------
  |  |   34|    743|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  ------------------
                  size += _Py_STATIC_CAST(size_t, nitems) * _Py_STATIC_CAST(size_t, type->tp_itemsize);
  ------------------
  |  |   34|    743|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  ------------------
   26|    743|    return _Py_SIZE_ROUND_UP(size, SIZEOF_VOID_P);
  ------------------
  |  |  213|    743|#define _Py_SIZE_ROUND_UP(n, a) (((size_t)(n) + \
  |  |  214|    743|        (size_t)((a) - 1)) & ~(size_t)((a) - 1))
  ------------------
   27|    743|}
typeobject.c:_PyObject_VAR_SIZE:
   23|  3.74k|static inline size_t _PyObject_VAR_SIZE(PyTypeObject *type, Py_ssize_t nitems) {
   24|  3.74k|    size_t size = _Py_STATIC_CAST(size_t, type->tp_basicsize);
  ------------------
  |  |   34|  3.74k|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  ------------------
   25|  3.74k|    size += _Py_STATIC_CAST(size_t, nitems) * _Py_STATIC_CAST(size_t, type->tp_itemsize);
  ------------------
  |  |   34|  3.74k|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  ------------------
                  size += _Py_STATIC_CAST(size_t, nitems) * _Py_STATIC_CAST(size_t, type->tp_itemsize);
  ------------------
  |  |   34|  3.74k|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  ------------------
   26|  3.74k|    return _Py_SIZE_ROUND_UP(size, SIZEOF_VOID_P);
  ------------------
  |  |  213|  3.74k|#define _Py_SIZE_ROUND_UP(n, a) (((size_t)(n) + \
  |  |  214|  3.74k|        (size_t)((a) - 1)) & ~(size_t)((a) - 1))
  ------------------
   27|  3.74k|}
gc.c:_PyObject_SIZE:
    5|  2.51k|static inline size_t _PyObject_SIZE(PyTypeObject *type) {
    6|  2.51k|    return _Py_STATIC_CAST(size_t, type->tp_basicsize);
  ------------------
  |  |   34|  2.51k|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  ------------------
    7|  2.51k|}
gc.c:_PyObject_VAR_SIZE:
   23|  2.43k|static inline size_t _PyObject_VAR_SIZE(PyTypeObject *type, Py_ssize_t nitems) {
   24|  2.43k|    size_t size = _Py_STATIC_CAST(size_t, type->tp_basicsize);
  ------------------
  |  |   34|  2.43k|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  ------------------
   25|  2.43k|    size += _Py_STATIC_CAST(size_t, nitems) * _Py_STATIC_CAST(size_t, type->tp_itemsize);
  ------------------
  |  |   34|  2.43k|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  ------------------
                  size += _Py_STATIC_CAST(size_t, nitems) * _Py_STATIC_CAST(size_t, type->tp_itemsize);
  ------------------
  |  |   34|  2.43k|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  ------------------
   26|  2.43k|    return _Py_SIZE_ROUND_UP(size, SIZEOF_VOID_P);
  ------------------
  |  |  213|  2.43k|#define _Py_SIZE_ROUND_UP(n, a) (((size_t)(n) + \
  |  |  214|  2.43k|        (size_t)((a) - 1)) & ~(size_t)((a) - 1))
  ------------------
   27|  2.43k|}

obmalloc.c:_Py_atomic_compare_exchange_uint8:
  105|      2|{ return __atomic_compare_exchange_n(obj, expected, desired, 0,
  106|      2|                                     __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
typeobject.c:_Py_atomic_load_uint_relaxed:
  379|    205|{ return __atomic_load_n(obj, __ATOMIC_RELAXED); }
typeobject.c:_Py_atomic_compare_exchange_uint:
  100|    205|{ return __atomic_compare_exchange_n(obj, expected, desired, 0,
  101|    205|                                     __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
typeobject.c:_Py_atomic_store_ptr_relaxed:
  509|  2.85k|{ __atomic_store_n((void **)obj, value, __ATOMIC_RELAXED); }
typeobject.c:_Py_atomic_store_uint32_release:
  593|  1.42k|{ __atomic_store_n(obj, value, __ATOMIC_RELEASE); }
typeobject.c:_Py_atomic_load_int64:
  264|    207|{ return __atomic_load_n(obj, __ATOMIC_SEQ_CST); }
typeobject.c:_Py_atomic_add_int64:
   31|    207|{ return __atomic_fetch_add(obj, value, __ATOMIC_SEQ_CST); }
typeobject.c:_Py_atomic_compare_exchange_uint8:
  105|     12|{ return __atomic_compare_exchange_n(obj, expected, desired, 0,
  106|     12|                                     __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
ceval.c:_Py_atomic_load_uintptr_relaxed:
  375|  5.02k|{ return __atomic_load_n(obj, __ATOMIC_RELAXED); }
gc.c:_Py_atomic_compare_exchange_int:
   70|      2|{ return __atomic_compare_exchange_n(obj, expected, desired, 0,
   71|      2|                                     __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
gc.c:_Py_atomic_store_int:
  402|      2|{ __atomic_store_n(obj, value, __ATOMIC_SEQ_CST); }
gc.c:_Py_atomic_load_uintptr_relaxed:
  375|  1.50k|{ return __atomic_load_n(obj, __ATOMIC_RELAXED); }
gc.c:_Py_atomic_or_uintptr:
  241|      2|{ return __atomic_fetch_or(obj, value, __ATOMIC_SEQ_CST); }
gc.c:_Py_atomic_load_int_relaxed:
  307|  1.50k|{ return __atomic_load_n(obj, __ATOMIC_RELAXED); }
getargs.c:_Py_atomic_load_uint8:
  272|      1|{ return __atomic_load_n(obj, __ATOMIC_SEQ_CST); }
getargs.c:_Py_atomic_load_ptr:
  300|      1|{ return (void *)__atomic_load_n((void * const *)obj, __ATOMIC_SEQ_CST); }
getargs.c:_Py_atomic_compare_exchange_ptr:
  135|      1|{ return __atomic_compare_exchange_n((void **)obj, (void **)expected, desired, 0,
  136|      1|                                     __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
ceval_gil.c:_Py_atomic_load_int_acquire:
  589|    330|{ return __atomic_load_n(obj, __ATOMIC_ACQUIRE); }
ceval_gil.c:_Py_atomic_load_int_relaxed:
  307|    655|{ return __atomic_load_n(obj, __ATOMIC_RELAXED); }
ceval_gil.c:_Py_atomic_load_ptr_relaxed:
  387|    328|{ return (void *)__atomic_load_n((void * const *)obj, __ATOMIC_RELAXED); }
ceval_gil.c:_Py_atomic_store_ptr_relaxed:
  509|    329|{ __atomic_store_n((void **)obj, value, __ATOMIC_RELAXED); }
ceval_gil.c:_Py_atomic_store_int_release:
  573|      1|{ __atomic_store_n(obj, value, __ATOMIC_RELEASE); }
ceval_gil.c:_Py_atomic_store_int_relaxed:
  461|    655|{ __atomic_store_n(obj, value, __ATOMIC_RELAXED); }
ceval_gil.c:_Py_atomic_and_uintptr:
  218|    330|{ return __atomic_fetch_and(obj, value, __ATOMIC_SEQ_CST); }
ceval_gil.c:_Py_atomic_load_int32_relaxed:
  347|    656|{ return __atomic_load_n(obj, __ATOMIC_RELAXED); }
ceval_gil.c:_Py_atomic_load_uintptr_relaxed:
  375|    985|{ return __atomic_load_n(obj, __ATOMIC_RELAXED); }
import.c:_Py_atomic_add_ssize:
   63|     16|{ return __atomic_fetch_add(obj, value, __ATOMIC_SEQ_CST); }
import.c:_Py_atomic_compare_exchange_uint8:
  105|     36|{ return __atomic_compare_exchange_n(obj, expected, desired, 0,
  106|     36|                                     __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
lock.c:_Py_atomic_load_uint8_relaxed:
  359|     60|{ return __atomic_load_n(obj, __ATOMIC_RELAXED); }
lock.c:_Py_atomic_compare_exchange_uint8:
  105|    313|{ return __atomic_compare_exchange_n(obj, expected, desired, 0,
  106|    313|                                     __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
lock.c:_Py_atomic_load_uint8:
  272|      1|{ return __atomic_load_n(obj, __ATOMIC_SEQ_CST); }
lock.c:_Py_atomic_exchange_uint8:
  171|      1|{ return __atomic_exchange_n(obj, value, __ATOMIC_SEQ_CST); }
lock.c:_Py_atomic_load_ullong_relaxed:
  391|    408|{ return __atomic_load_n(obj, __ATOMIC_RELAXED); }
lock.c:_Py_atomic_store_ullong_relaxed:
  518|    312|{ __atomic_store_n(obj, value, __ATOMIC_RELAXED); }
pylifecycle.c:_Py_atomic_load_int:
  248|  1.12k|{ return __atomic_load_n(obj, __ATOMIC_SEQ_CST); }
pylifecycle.c:_Py_atomic_store_ptr_relaxed:
  509|      1|{ __atomic_store_n((void **)obj, value, __ATOMIC_RELAXED); }
pylifecycle.c:_Py_atomic_store_uint64_relaxed:
  497|      1|{ __atomic_store_n(obj, value, __ATOMIC_RELAXED); }
pylifecycle.c:_Py_atomic_store_int:
  402|      2|{ __atomic_store_n(obj, value, __ATOMIC_SEQ_CST); }
pystate.c:_Py_atomic_load_int:
  248|      2|{ return __atomic_load_n(obj, __ATOMIC_SEQ_CST); }
pystate.c:_Py_atomic_compare_exchange_uint8:
  105|      4|{ return __atomic_compare_exchange_n(obj, expected, desired, 0,
  106|      4|                                     __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
pystate.c:_Py_atomic_load_uintptr_relaxed:
  375|      1|{ return __atomic_load_n(obj, __ATOMIC_RELAXED); }
pystate.c:_Py_atomic_load_int_relaxed:
  307|  1.31k|{ return __atomic_load_n(obj, __ATOMIC_RELAXED); }
pystate.c:_Py_atomic_exchange_ptr:
  195|      1|{ return __atomic_exchange_n((void **)obj, value, __ATOMIC_SEQ_CST); }
signalmodule.c:_Py_atomic_store_int_relaxed:
  461|     64|{ __atomic_store_n(obj, value, __ATOMIC_RELAXED); }
signalmodule.c:_Py_atomic_load_uintptr_relaxed:
  375|     31|{ return __atomic_load_n(obj, __ATOMIC_RELAXED); }
signalmodule.c:_Py_atomic_load_int:
  248|     31|{ return __atomic_load_n(obj, __ATOMIC_SEQ_CST); }
codeobject.c:_Py_atomic_add_uint64:
   55|    138|{ return __atomic_fetch_add(obj, value, __ATOMIC_SEQ_CST); }

obmalloc.c:_PyMutex_Lock:
   53|      1|{
   54|      1|    uint8_t expected = _Py_UNLOCKED;
  ------------------
  |  |    9|      1|#define _Py_UNLOCKED    0
  ------------------
   55|      1|    if (!_Py_atomic_compare_exchange_uint8(&m->_bits, &expected, _Py_LOCKED)) {
  ------------------
  |  |   10|      1|#define _Py_LOCKED      1
  ------------------
  |  Branch (55:9): [True: 0, False: 1]
  ------------------
   56|      0|        PyMutex_Lock(m);
   57|      0|    }
   58|      1|}
obmalloc.c:_PyMutex_Unlock:
   64|      1|{
   65|      1|    uint8_t expected = _Py_LOCKED;
  ------------------
  |  |   10|      1|#define _Py_LOCKED      1
  ------------------
   66|      1|    if (!_Py_atomic_compare_exchange_uint8(&m->_bits, &expected, _Py_UNLOCKED)) {
  ------------------
  |  |    9|      1|#define _Py_UNLOCKED    0
  ------------------
  |  Branch (66:9): [True: 0, False: 1]
  ------------------
   67|      0|        PyMutex_Unlock(m);
   68|      0|    }
   69|      1|}
typeobject.c:_PyMutex_Lock:
   53|      6|{
   54|      6|    uint8_t expected = _Py_UNLOCKED;
  ------------------
  |  |    9|      6|#define _Py_UNLOCKED    0
  ------------------
   55|      6|    if (!_Py_atomic_compare_exchange_uint8(&m->_bits, &expected, _Py_LOCKED)) {
  ------------------
  |  |   10|      6|#define _Py_LOCKED      1
  ------------------
  |  Branch (55:9): [True: 0, False: 6]
  ------------------
   56|      0|        PyMutex_Lock(m);
   57|      0|    }
   58|      6|}
typeobject.c:_PyMutex_Unlock:
   64|      6|{
   65|      6|    uint8_t expected = _Py_LOCKED;
  ------------------
  |  |   10|      6|#define _Py_LOCKED      1
  ------------------
   66|      6|    if (!_Py_atomic_compare_exchange_uint8(&m->_bits, &expected, _Py_UNLOCKED)) {
  ------------------
  |  |    9|      6|#define _Py_UNLOCKED    0
  ------------------
  |  Branch (66:9): [True: 0, False: 6]
  ------------------
   67|      0|        PyMutex_Unlock(m);
   68|      0|    }
   69|      6|}
import.c:_PyMutex_Lock:
   53|     18|{
   54|     18|    uint8_t expected = _Py_UNLOCKED;
  ------------------
  |  |    9|     18|#define _Py_UNLOCKED    0
  ------------------
   55|     18|    if (!_Py_atomic_compare_exchange_uint8(&m->_bits, &expected, _Py_LOCKED)) {
  ------------------
  |  |   10|     18|#define _Py_LOCKED      1
  ------------------
  |  Branch (55:9): [True: 0, False: 18]
  ------------------
   56|      0|        PyMutex_Lock(m);
   57|      0|    }
   58|     18|}
import.c:_PyMutex_Unlock:
   64|     18|{
   65|     18|    uint8_t expected = _Py_LOCKED;
  ------------------
  |  |   10|     18|#define _Py_LOCKED      1
  ------------------
   66|     18|    if (!_Py_atomic_compare_exchange_uint8(&m->_bits, &expected, _Py_UNLOCKED)) {
  ------------------
  |  |    9|     18|#define _Py_UNLOCKED    0
  ------------------
  |  Branch (66:9): [True: 0, False: 18]
  ------------------
   67|      0|        PyMutex_Unlock(m);
   68|      0|    }
   69|     18|}
lock.c:_PyMutex_Lock:
   53|     96|{
   54|     96|    uint8_t expected = _Py_UNLOCKED;
  ------------------
  |  |    9|     96|#define _Py_UNLOCKED    0
  ------------------
   55|     96|    if (!_Py_atomic_compare_exchange_uint8(&m->_bits, &expected, _Py_LOCKED)) {
  ------------------
  |  |   10|     96|#define _Py_LOCKED      1
  ------------------
  |  Branch (55:9): [True: 0, False: 96]
  ------------------
   56|      0|        PyMutex_Lock(m);
   57|      0|    }
   58|     96|}
lock.c:_PyMutex_Unlock:
   64|    156|{
   65|    156|    uint8_t expected = _Py_LOCKED;
  ------------------
  |  |   10|    156|#define _Py_LOCKED      1
  ------------------
   66|    156|    if (!_Py_atomic_compare_exchange_uint8(&m->_bits, &expected, _Py_UNLOCKED)) {
  ------------------
  |  |    9|    156|#define _Py_UNLOCKED    0
  ------------------
  |  Branch (66:9): [True: 0, False: 156]
  ------------------
   67|      0|        PyMutex_Unlock(m);
   68|      0|    }
   69|    156|}
pystate.c:_PyMutex_Unlock:
   64|      2|{
   65|      2|    uint8_t expected = _Py_LOCKED;
  ------------------
  |  |   10|      2|#define _Py_LOCKED      1
  ------------------
   66|      2|    if (!_Py_atomic_compare_exchange_uint8(&m->_bits, &expected, _Py_UNLOCKED)) {
  ------------------
  |  |    9|      2|#define _Py_UNLOCKED    0
  ------------------
  |  Branch (66:9): [True: 0, False: 2]
  ------------------
   67|      0|        PyMutex_Unlock(m);
   68|      0|    }
   69|      2|}

setobject.c:PySet_GET_SIZE:
   64|      4|static inline Py_ssize_t PySet_GET_SIZE(PyObject *so) {
   65|       |#ifdef Py_GIL_DISABLED
   66|       |    return _Py_atomic_load_ssize_relaxed(&(_PySet_CAST(so)->used));
   67|       |#else
   68|      4|    return _PySet_CAST(so)->used;
  ------------------
  |  |   62|      4|    (assert(PyAnySet_Check(so)), _Py_CAST(PySetObject*, so))
  |  |  ------------------
  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (68:12): [True: 4, False: 0]
  |  Branch (68:12): [True: 0, False: 0]
  |  Branch (68:12): [True: 0, False: 0]
  |  Branch (68:12): [True: 0, False: 0]
  ------------------
   69|      4|#endif
   70|      4|}
_abc.c:PySet_GET_SIZE:
   64|     20|static inline Py_ssize_t PySet_GET_SIZE(PyObject *so) {
   65|       |#ifdef Py_GIL_DISABLED
   66|       |    return _Py_atomic_load_ssize_relaxed(&(_PySet_CAST(so)->used));
   67|       |#else
   68|     20|    return _PySet_CAST(so)->used;
  ------------------
  |  |   62|     20|    (assert(PyAnySet_Check(so)), _Py_CAST(PySetObject*, so))
  |  |  ------------------
  |  |  |  |   37|     20|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (68:12): [True: 20, False: 0]
  |  Branch (68:12): [True: 0, False: 0]
  |  Branch (68:12): [True: 0, False: 0]
  |  Branch (68:12): [True: 0, False: 0]
  ------------------
   69|     20|#endif
   70|     20|}

exceptions.c:PyTuple_GET_SIZE:
   23|     27|static inline Py_ssize_t PyTuple_GET_SIZE(PyObject *op) {
   24|     27|    PyTupleObject *tuple = _PyTuple_CAST(op);
  ------------------
  |  |   19|     27|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|     27|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (24:28): [True: 27, False: 0]
  ------------------
   25|     27|    return Py_SIZE(tuple);
  ------------------
  |  |  214|     27|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     27|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     27|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   26|     27|}
listobject.c:PyTuple_GET_SIZE:
   23|    126|static inline Py_ssize_t PyTuple_GET_SIZE(PyObject *op) {
   24|    126|    PyTupleObject *tuple = _PyTuple_CAST(op);
  ------------------
  |  |   19|    126|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|    126|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (24:28): [True: 126, False: 0]
  ------------------
   25|    126|    return Py_SIZE(tuple);
  ------------------
  |  |  214|    126|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    126|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    126|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   26|    126|}
dictobject.c:PyTuple_SET_ITEM:
   33|     66|PyTuple_SET_ITEM(PyObject *op, Py_ssize_t index, PyObject *value) {
   34|     66|    PyTupleObject *tuple = _PyTuple_CAST(op);
  ------------------
  |  |   19|     66|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|     66|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (34:28): [True: 66, False: 0]
  ------------------
   35|     66|    assert(0 <= index);
  ------------------
  |  Branch (35:5): [True: 66, False: 0]
  ------------------
   36|     66|    assert(index < Py_SIZE(tuple));
  ------------------
  |  Branch (36:5): [True: 66, False: 0]
  ------------------
   37|     66|    tuple->ob_item[index] = value;
   38|     66|}
dictobject.c:PyTuple_GET_SIZE:
   23|    135|static inline Py_ssize_t PyTuple_GET_SIZE(PyObject *op) {
   24|    135|    PyTupleObject *tuple = _PyTuple_CAST(op);
  ------------------
  |  |   19|    135|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|    135|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (24:28): [True: 135, False: 0]
  ------------------
   25|    135|    return Py_SIZE(tuple);
  ------------------
  |  |  214|    135|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    135|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    135|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   26|    135|}
moduleobject.c:PyTuple_GET_SIZE:
   23|     14|static inline Py_ssize_t PyTuple_GET_SIZE(PyObject *op) {
   24|     14|    PyTupleObject *tuple = _PyTuple_CAST(op);
  ------------------
  |  |   19|     14|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|     14|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (24:28): [True: 14, False: 0]
  ------------------
   25|     14|    return Py_SIZE(tuple);
  ------------------
  |  |  214|     14|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     14|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     14|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   26|     14|}
structseq.c:PyTuple_SET_ITEM:
   33|    105|PyTuple_SET_ITEM(PyObject *op, Py_ssize_t index, PyObject *value) {
   34|    105|    PyTupleObject *tuple = _PyTuple_CAST(op);
  ------------------
  |  |   19|    105|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|    105|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (34:28): [True: 105, False: 0]
  ------------------
   35|    105|    assert(0 <= index);
  ------------------
  |  Branch (35:5): [True: 105, False: 0]
  ------------------
   36|    105|    assert(index < Py_SIZE(tuple));
  ------------------
  |  Branch (36:5): [True: 105, False: 0]
  ------------------
   37|    105|    tuple->ob_item[index] = value;
   38|    105|}
tupleobject.c:PyTuple_GET_SIZE:
   23|    348|static inline Py_ssize_t PyTuple_GET_SIZE(PyObject *op) {
   24|    348|    PyTupleObject *tuple = _PyTuple_CAST(op);
  ------------------
  |  |   19|    348|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|    348|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (24:28): [True: 348, False: 0]
  ------------------
   25|    348|    return Py_SIZE(tuple);
  ------------------
  |  |  214|    348|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    348|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    348|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   26|    348|}
tupleobject.c:PyTuple_SET_ITEM:
   33|      4|PyTuple_SET_ITEM(PyObject *op, Py_ssize_t index, PyObject *value) {
   34|      4|    PyTupleObject *tuple = _PyTuple_CAST(op);
  ------------------
  |  |   19|      4|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (34:28): [True: 4, False: 0]
  ------------------
   35|      4|    assert(0 <= index);
  ------------------
  |  Branch (35:5): [True: 4, False: 0]
  ------------------
   36|      4|    assert(index < Py_SIZE(tuple));
  ------------------
  |  Branch (36:5): [True: 4, False: 0]
  ------------------
   37|      4|    tuple->ob_item[index] = value;
   38|      4|}
typeobject.c:PyTuple_GET_SIZE:
   23|  43.3k|static inline Py_ssize_t PyTuple_GET_SIZE(PyObject *op) {
   24|  43.3k|    PyTupleObject *tuple = _PyTuple_CAST(op);
  ------------------
  |  |   19|  43.3k|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|  43.3k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (24:28): [True: 43.3k, False: 0]
  ------------------
   25|  43.3k|    return Py_SIZE(tuple);
  ------------------
  |  |  214|  43.3k|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  43.3k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  43.3k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   26|  43.3k|}
typeobject.c:PyTuple_SET_ITEM:
   33|    955|PyTuple_SET_ITEM(PyObject *op, Py_ssize_t index, PyObject *value) {
   34|    955|    PyTupleObject *tuple = _PyTuple_CAST(op);
  ------------------
  |  |   19|    955|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|    955|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (34:28): [True: 955, False: 0]
  ------------------
   35|    955|    assert(0 <= index);
  ------------------
  |  Branch (35:5): [True: 955, False: 0]
  ------------------
   36|    955|    assert(index < Py_SIZE(tuple));
  ------------------
  |  Branch (36:5): [True: 955, False: 0]
  ------------------
   37|    955|    tuple->ob_item[index] = value;
   38|    955|}
unicodeobject.c:PyTuple_GET_SIZE:
   23|     28|static inline Py_ssize_t PyTuple_GET_SIZE(PyObject *op) {
   24|     28|    PyTupleObject *tuple = _PyTuple_CAST(op);
  ------------------
  |  |   19|     28|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|     28|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (24:28): [True: 28, False: 0]
  ------------------
   25|     28|    return Py_SIZE(tuple);
  ------------------
  |  |  214|     28|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     28|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     28|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   26|     28|}
unicodeobject.c:PyTuple_SET_ITEM:
   33|    180|PyTuple_SET_ITEM(PyObject *op, Py_ssize_t index, PyObject *value) {
   34|    180|    PyTupleObject *tuple = _PyTuple_CAST(op);
  ------------------
  |  |   19|    180|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|    180|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (34:28): [True: 180, False: 0]
  ------------------
   35|    180|    assert(0 <= index);
  ------------------
  |  Branch (35:5): [True: 180, False: 0]
  ------------------
   36|    180|    assert(index < Py_SIZE(tuple));
  ------------------
  |  Branch (36:5): [True: 180, False: 0]
  ------------------
   37|    180|    tuple->ob_item[index] = value;
   38|    180|}
weakrefobject.c:PyTuple_SET_ITEM:
   33|    108|PyTuple_SET_ITEM(PyObject *op, Py_ssize_t index, PyObject *value) {
   34|    108|    PyTupleObject *tuple = _PyTuple_CAST(op);
  ------------------
  |  |   19|    108|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|    108|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (34:28): [True: 108, False: 0]
  ------------------
   35|    108|    assert(0 <= index);
  ------------------
  |  Branch (35:5): [True: 108, False: 0]
  ------------------
   36|    108|    assert(index < Py_SIZE(tuple));
  ------------------
  |  Branch (36:5): [True: 108, False: 0]
  ------------------
   37|    108|    tuple->ob_item[index] = value;
   38|    108|}
bltinmodule.c:PyTuple_GET_SIZE:
   23|     76|static inline Py_ssize_t PyTuple_GET_SIZE(PyObject *op) {
   24|     76|    PyTupleObject *tuple = _PyTuple_CAST(op);
  ------------------
  |  |   19|     76|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|     76|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (24:28): [True: 76, False: 0]
  ------------------
   25|     76|    return Py_SIZE(tuple);
  ------------------
  |  |  214|     76|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     76|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     76|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   26|     76|}
ceval.c:PyTuple_GET_SIZE:
   23|  1.01k|static inline Py_ssize_t PyTuple_GET_SIZE(PyObject *op) {
   24|  1.01k|    PyTupleObject *tuple = _PyTuple_CAST(op);
  ------------------
  |  |   19|  1.01k|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|  1.01k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (24:28): [True: 1.01k, False: 0]
  ------------------
   25|  1.01k|    return Py_SIZE(tuple);
  ------------------
  |  |  214|  1.01k|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  1.01k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.01k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   26|  1.01k|}
codecs.c:PyTuple_GET_SIZE:
   23|      1|static inline Py_ssize_t PyTuple_GET_SIZE(PyObject *op) {
   24|      1|    PyTupleObject *tuple = _PyTuple_CAST(op);
  ------------------
  |  |   19|      1|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (24:28): [True: 1, False: 0]
  ------------------
   25|      1|    return Py_SIZE(tuple);
  ------------------
  |  |  214|      1|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   26|      1|}
getargs.c:PyTuple_GET_SIZE:
   23|    429|static inline Py_ssize_t PyTuple_GET_SIZE(PyObject *op) {
   24|    429|    PyTupleObject *tuple = _PyTuple_CAST(op);
  ------------------
  |  |   19|    429|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|    429|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (24:28): [True: 429, False: 0]
  ------------------
   25|    429|    return Py_SIZE(tuple);
  ------------------
  |  |  214|    429|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    429|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    429|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   26|    429|}
initconfig.c:PyTuple_GET_SIZE:
   23|      3|static inline Py_ssize_t PyTuple_GET_SIZE(PyObject *op) {
   24|      3|    PyTupleObject *tuple = _PyTuple_CAST(op);
  ------------------
  |  |   19|      3|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (24:28): [True: 3, False: 0]
  ------------------
   25|      3|    return Py_SIZE(tuple);
  ------------------
  |  |  214|      3|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   26|      3|}
initconfig.c:PyTuple_SET_ITEM:
   33|      1|PyTuple_SET_ITEM(PyObject *op, Py_ssize_t index, PyObject *value) {
   34|      1|    PyTupleObject *tuple = _PyTuple_CAST(op);
  ------------------
  |  |   19|      1|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (34:28): [True: 1, False: 0]
  ------------------
   35|      1|    assert(0 <= index);
  ------------------
  |  Branch (35:5): [True: 1, False: 0]
  ------------------
   36|      1|    assert(index < Py_SIZE(tuple));
  ------------------
  |  Branch (36:5): [True: 1, False: 0]
  ------------------
   37|      1|    tuple->ob_item[index] = value;
   38|      1|}
marshal.c:PyTuple_SET_ITEM:
   33|  9.91k|PyTuple_SET_ITEM(PyObject *op, Py_ssize_t index, PyObject *value) {
   34|  9.91k|    PyTupleObject *tuple = _PyTuple_CAST(op);
  ------------------
  |  |   19|  9.91k|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|  9.91k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (34:28): [True: 9.91k, False: 0]
  ------------------
   35|  9.91k|    assert(0 <= index);
  ------------------
  |  Branch (35:5): [True: 9.91k, False: 0]
  ------------------
   36|  9.91k|    assert(index < Py_SIZE(tuple));
  ------------------
  |  Branch (36:5): [True: 9.91k, False: 0]
  ------------------
   37|  9.91k|    tuple->ob_item[index] = value;
   38|  9.91k|}
modsupport.c:PyTuple_SET_ITEM:
   33|     37|PyTuple_SET_ITEM(PyObject *op, Py_ssize_t index, PyObject *value) {
   34|     37|    PyTupleObject *tuple = _PyTuple_CAST(op);
  ------------------
  |  |   19|     37|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|     37|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (34:28): [True: 37, False: 0]
  ------------------
   35|     37|    assert(0 <= index);
  ------------------
  |  Branch (35:5): [True: 37, False: 0]
  ------------------
   36|     37|    assert(index < Py_SIZE(tuple));
  ------------------
  |  Branch (36:5): [True: 37, False: 0]
  ------------------
   37|     37|    tuple->ob_item[index] = value;
   38|     37|}
specialize.c:PyTuple_GET_SIZE:
   23|     14|static inline Py_ssize_t PyTuple_GET_SIZE(PyObject *op) {
   24|     14|    PyTupleObject *tuple = _PyTuple_CAST(op);
  ------------------
  |  |   19|     14|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|     14|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (24:28): [True: 14, False: 0]
  ------------------
   25|     14|    return Py_SIZE(tuple);
  ------------------
  |  |  214|     14|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     14|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     14|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   26|     14|}
sysmodule.c:PyTuple_SET_ITEM:
   33|    296|PyTuple_SET_ITEM(PyObject *op, Py_ssize_t index, PyObject *value) {
   34|    296|    PyTupleObject *tuple = _PyTuple_CAST(op);
  ------------------
  |  |   19|    296|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|    296|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (34:28): [True: 296, False: 0]
  ------------------
   35|    296|    assert(0 <= index);
  ------------------
  |  Branch (35:5): [True: 296, False: 0]
  ------------------
   36|    296|    assert(index < Py_SIZE(tuple));
  ------------------
  |  Branch (36:5): [True: 296, False: 0]
  ------------------
   37|    296|    tuple->ob_item[index] = value;
   38|    296|}
fileio.c:PyTuple_GET_SIZE:
   23|      3|static inline Py_ssize_t PyTuple_GET_SIZE(PyObject *op) {
   24|      3|    PyTupleObject *tuple = _PyTuple_CAST(op);
  ------------------
  |  |   19|      3|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (24:28): [True: 3, False: 0]
  ------------------
   25|      3|    return Py_SIZE(tuple);
  ------------------
  |  |  214|      3|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   26|      3|}
bufferedio.c:PyTuple_GET_SIZE:
   23|      3|static inline Py_ssize_t PyTuple_GET_SIZE(PyObject *op) {
   24|      3|    PyTupleObject *tuple = _PyTuple_CAST(op);
  ------------------
  |  |   19|      3|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (24:28): [True: 3, False: 0]
  ------------------
   25|      3|    return Py_SIZE(tuple);
  ------------------
  |  |  214|      3|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   26|      3|}
textio.c:PyTuple_GET_SIZE:
   23|      3|static inline Py_ssize_t PyTuple_GET_SIZE(PyObject *op) {
   24|      3|    PyTupleObject *tuple = _PyTuple_CAST(op);
  ------------------
  |  |   19|      3|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (24:28): [True: 3, False: 0]
  ------------------
   25|      3|    return Py_SIZE(tuple);
  ------------------
  |  |  214|      3|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   26|      3|}
_abc.c:PyTuple_GET_SIZE:
   23|    344|static inline Py_ssize_t PyTuple_GET_SIZE(PyObject *op) {
   24|    344|    PyTupleObject *tuple = _PyTuple_CAST(op);
  ------------------
  |  |   19|    344|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|    344|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (24:28): [True: 344, False: 0]
  ------------------
   25|    344|    return Py_SIZE(tuple);
  ------------------
  |  |  214|    344|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    344|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    344|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   26|    344|}
getpath.c:PyTuple_GET_SIZE:
   23|     13|static inline Py_ssize_t PyTuple_GET_SIZE(PyObject *op) {
   24|     13|    PyTupleObject *tuple = _PyTuple_CAST(op);
  ------------------
  |  |   19|     13|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|     13|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (24:28): [True: 13, False: 0]
  ------------------
   25|     13|    return Py_SIZE(tuple);
  ------------------
  |  |  214|     13|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     13|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     13|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   26|     13|}
bytearrayobject.c:PyTuple_GET_SIZE:
   23|      1|static inline Py_ssize_t PyTuple_GET_SIZE(PyObject *op) {
   24|      1|    PyTupleObject *tuple = _PyTuple_CAST(op);
  ------------------
  |  |   19|      1|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (24:28): [True: 1, False: 0]
  ------------------
   25|      1|    return Py_SIZE(tuple);
  ------------------
  |  |  214|      1|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   26|      1|}
call.c:PyTuple_GET_SIZE:
   23|    373|static inline Py_ssize_t PyTuple_GET_SIZE(PyObject *op) {
   24|    373|    PyTupleObject *tuple = _PyTuple_CAST(op);
  ------------------
  |  |   19|    373|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|    373|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (24:28): [True: 373, False: 0]
  ------------------
   25|    373|    return Py_SIZE(tuple);
  ------------------
  |  |  214|    373|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    373|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    373|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   26|    373|}
call.c:PyTuple_SET_ITEM:
   33|     61|PyTuple_SET_ITEM(PyObject *op, Py_ssize_t index, PyObject *value) {
   34|     61|    PyTupleObject *tuple = _PyTuple_CAST(op);
  ------------------
  |  |   19|     61|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|     61|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (34:28): [True: 61, False: 0]
  ------------------
   35|     61|    assert(0 <= index);
  ------------------
  |  Branch (35:5): [True: 61, False: 0]
  ------------------
   36|     61|    assert(index < Py_SIZE(tuple));
  ------------------
  |  Branch (36:5): [True: 61, False: 0]
  ------------------
   37|     61|    tuple->ob_item[index] = value;
   38|     61|}
codeobject.c:PyTuple_GET_SIZE:
   23|  5.51k|static inline Py_ssize_t PyTuple_GET_SIZE(PyObject *op) {
   24|  5.51k|    PyTupleObject *tuple = _PyTuple_CAST(op);
  ------------------
  |  |   19|  5.51k|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|  5.51k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (24:28): [True: 5.51k, False: 0]
  ------------------
   25|  5.51k|    return Py_SIZE(tuple);
  ------------------
  |  |  214|  5.51k|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  5.51k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  5.51k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   26|  5.51k|}
descrobject.c:PyTuple_GET_SIZE:
   23|     37|static inline Py_ssize_t PyTuple_GET_SIZE(PyObject *op) {
   24|     37|    PyTupleObject *tuple = _PyTuple_CAST(op);
  ------------------
  |  |   19|     37|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|     37|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (24:28): [True: 37, False: 0]
  ------------------
   25|     37|    return Py_SIZE(tuple);
  ------------------
  |  |  214|     37|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     37|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     37|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   26|     37|}
frameobject.c:PyTuple_GET_SIZE:
   23|      1|static inline Py_ssize_t PyTuple_GET_SIZE(PyObject *op) {
   24|      1|    PyTupleObject *tuple = _PyTuple_CAST(op);
  ------------------
  |  |   19|      1|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (24:28): [True: 1, False: 0]
  ------------------
   25|      1|    return Py_SIZE(tuple);
  ------------------
  |  |  214|      1|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   26|      1|}

listobject.c:PyUnicode_GET_LENGTH:
  296|  7.73k|static inline Py_ssize_t PyUnicode_GET_LENGTH(PyObject *op) {
  297|  7.73k|    return _PyASCIIObject_CAST(op)->length;
  ------------------
  |  |  186|  7.73k|    (assert(PyUnicode_Check(op)), \
  |  |  187|  7.73k|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|  7.73k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (297:12): [True: 7.73k, False: 0]
  ------------------
  298|  7.73k|}
listobject.c:_PyUnicode_DATA:
  278|  5.11k|static inline void* _PyUnicode_DATA(PyObject *op) {
  279|  5.11k|    if (PyUnicode_IS_COMPACT(op)) {
  ------------------
  |  |  234|  5.11k|#define PyUnicode_IS_COMPACT(op) PyUnicode_IS_COMPACT(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  5.11k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  5.11k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (234:34): [True: 5.11k, False: 0]
  |  |  ------------------
  ------------------
  280|  5.11k|        return _PyUnicode_COMPACT_DATA(op);
  281|  5.11k|    }
  282|      0|    return _PyUnicode_NONCOMPACT_DATA(op);
  283|  5.11k|}
listobject.c:PyUnicode_IS_COMPACT:
  231|  5.11k|static inline unsigned int PyUnicode_IS_COMPACT(PyObject *op) {
  232|  5.11k|    return _PyASCIIObject_CAST(op)->state.compact;
  ------------------
  |  |  186|  5.11k|    (assert(PyUnicode_Check(op)), \
  |  |  187|  5.11k|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|  5.11k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (232:12): [True: 5.11k, False: 0]
  ------------------
  233|  5.11k|}
listobject.c:_PyUnicode_COMPACT_DATA:
  261|  5.11k|static inline void* _PyUnicode_COMPACT_DATA(PyObject *op) {
  262|  5.11k|    if (PyUnicode_IS_ASCII(op)) {
  ------------------
  |  |  227|  5.11k|#define PyUnicode_IS_ASCII(op) PyUnicode_IS_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  5.11k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  5.11k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (227:32): [True: 5.11k, False: 0]
  |  |  ------------------
  ------------------
  263|  5.11k|        return _Py_STATIC_CAST(void*, (_PyASCIIObject_CAST(op) + 1));
  ------------------
  |  |   34|  10.2k|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  |  Branch (34:47): [True: 5.11k, False: 0]
  |  |  ------------------
  ------------------
  264|  5.11k|    }
  265|      0|    return _Py_STATIC_CAST(void*, (_PyCompactUnicodeObject_CAST(op) + 1));
  ------------------
  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  |  Branch (34:47): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  266|      0|}
listobject.c:PyUnicode_IS_ASCII:
  224|  5.11k|static inline unsigned int PyUnicode_IS_ASCII(PyObject *op) {
  225|  5.11k|    return _PyASCIIObject_CAST(op)->state.ascii;
  ------------------
  |  |  186|  5.11k|    (assert(PyUnicode_Check(op)), \
  |  |  187|  5.11k|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|  5.11k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (225:12): [True: 5.11k, False: 0]
  ------------------
  226|  5.11k|}
longobject.c:_PyUnicode_DATA:
  278|     22|static inline void* _PyUnicode_DATA(PyObject *op) {
  279|     22|    if (PyUnicode_IS_COMPACT(op)) {
  ------------------
  |  |  234|     22|#define PyUnicode_IS_COMPACT(op) PyUnicode_IS_COMPACT(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     22|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     22|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (234:34): [True: 22, False: 0]
  |  |  ------------------
  ------------------
  280|     22|        return _PyUnicode_COMPACT_DATA(op);
  281|     22|    }
  282|      0|    return _PyUnicode_NONCOMPACT_DATA(op);
  283|     22|}
longobject.c:PyUnicode_IS_COMPACT:
  231|     22|static inline unsigned int PyUnicode_IS_COMPACT(PyObject *op) {
  232|     22|    return _PyASCIIObject_CAST(op)->state.compact;
  ------------------
  |  |  186|     22|    (assert(PyUnicode_Check(op)), \
  |  |  187|     22|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|     22|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (232:12): [True: 22, False: 0]
  ------------------
  233|     22|}
longobject.c:_PyUnicode_COMPACT_DATA:
  261|     22|static inline void* _PyUnicode_COMPACT_DATA(PyObject *op) {
  262|     22|    if (PyUnicode_IS_ASCII(op)) {
  ------------------
  |  |  227|     22|#define PyUnicode_IS_ASCII(op) PyUnicode_IS_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     22|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     22|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (227:32): [True: 22, False: 0]
  |  |  ------------------
  ------------------
  263|     22|        return _Py_STATIC_CAST(void*, (_PyASCIIObject_CAST(op) + 1));
  ------------------
  |  |   34|     44|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  |  Branch (34:47): [True: 22, False: 0]
  |  |  ------------------
  ------------------
  264|     22|    }
  265|      0|    return _Py_STATIC_CAST(void*, (_PyCompactUnicodeObject_CAST(op) + 1));
  ------------------
  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  |  Branch (34:47): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  266|      0|}
longobject.c:PyUnicode_IS_ASCII:
  224|     22|static inline unsigned int PyUnicode_IS_ASCII(PyObject *op) {
  225|     22|    return _PyASCIIObject_CAST(op)->state.ascii;
  ------------------
  |  |  186|     22|    (assert(PyUnicode_Check(op)), \
  |  |  187|     22|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|     22|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (225:12): [True: 22, False: 0]
  ------------------
  226|     22|}
dictobject.c:PyUnstable_Unicode_GET_CACHED_HASH:
  303|  76.6k|PyUnstable_Unicode_GET_CACHED_HASH(PyObject *op) {
  304|       |#ifdef Py_GIL_DISABLED
  305|       |    return _Py_atomic_load_ssize_relaxed(&_PyASCIIObject_CAST(op)->hash);
  306|       |#else
  307|  76.6k|    return _PyASCIIObject_CAST(op)->hash;
  ------------------
  |  |  186|  76.6k|    (assert(PyUnicode_Check(op)), \
  |  |  187|  76.6k|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|  76.6k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (307:12): [True: 76.6k, False: 0]
  ------------------
  308|  76.6k|#endif
  309|  76.6k|}
dictobject.c:PyUnicode_GET_LENGTH:
  296|  2.70k|static inline Py_ssize_t PyUnicode_GET_LENGTH(PyObject *op) {
  297|  2.70k|    return _PyASCIIObject_CAST(op)->length;
  ------------------
  |  |  186|  2.70k|    (assert(PyUnicode_Check(op)), \
  |  |  187|  2.70k|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|  2.70k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (297:12): [True: 2.70k, False: 0]
  ------------------
  298|  2.70k|}
dictobject.c:_PyUnicode_DATA:
  278|  2.70k|static inline void* _PyUnicode_DATA(PyObject *op) {
  279|  2.70k|    if (PyUnicode_IS_COMPACT(op)) {
  ------------------
  |  |  234|  2.70k|#define PyUnicode_IS_COMPACT(op) PyUnicode_IS_COMPACT(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  2.70k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.70k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (234:34): [True: 2.70k, False: 0]
  |  |  ------------------
  ------------------
  280|  2.70k|        return _PyUnicode_COMPACT_DATA(op);
  281|  2.70k|    }
  282|      0|    return _PyUnicode_NONCOMPACT_DATA(op);
  283|  2.70k|}
dictobject.c:PyUnicode_IS_COMPACT:
  231|  2.70k|static inline unsigned int PyUnicode_IS_COMPACT(PyObject *op) {
  232|  2.70k|    return _PyASCIIObject_CAST(op)->state.compact;
  ------------------
  |  |  186|  2.70k|    (assert(PyUnicode_Check(op)), \
  |  |  187|  2.70k|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|  2.70k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (232:12): [True: 2.70k, False: 0]
  ------------------
  233|  2.70k|}
dictobject.c:_PyUnicode_COMPACT_DATA:
  261|  2.70k|static inline void* _PyUnicode_COMPACT_DATA(PyObject *op) {
  262|  2.70k|    if (PyUnicode_IS_ASCII(op)) {
  ------------------
  |  |  227|  2.70k|#define PyUnicode_IS_ASCII(op) PyUnicode_IS_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  2.70k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.70k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (227:32): [True: 2.70k, False: 0]
  |  |  ------------------
  ------------------
  263|  2.70k|        return _Py_STATIC_CAST(void*, (_PyASCIIObject_CAST(op) + 1));
  ------------------
  |  |   34|  5.40k|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  |  Branch (34:47): [True: 2.70k, False: 0]
  |  |  ------------------
  ------------------
  264|  2.70k|    }
  265|      0|    return _Py_STATIC_CAST(void*, (_PyCompactUnicodeObject_CAST(op) + 1));
  ------------------
  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  |  Branch (34:47): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  266|      0|}
dictobject.c:PyUnicode_IS_ASCII:
  224|  2.70k|static inline unsigned int PyUnicode_IS_ASCII(PyObject *op) {
  225|  2.70k|    return _PyASCIIObject_CAST(op)->state.ascii;
  ------------------
  |  |  186|  2.70k|    (assert(PyUnicode_Check(op)), \
  |  |  187|  2.70k|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|  2.70k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (225:12): [True: 2.70k, False: 0]
  ------------------
  226|  2.70k|}
setobject.c:PyUnstable_Unicode_GET_CACHED_HASH:
  303|    684|PyUnstable_Unicode_GET_CACHED_HASH(PyObject *op) {
  304|       |#ifdef Py_GIL_DISABLED
  305|       |    return _Py_atomic_load_ssize_relaxed(&_PyASCIIObject_CAST(op)->hash);
  306|       |#else
  307|    684|    return _PyASCIIObject_CAST(op)->hash;
  ------------------
  |  |  186|    684|    (assert(PyUnicode_Check(op)), \
  |  |  187|    684|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|    684|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (307:12): [True: 684, False: 0]
  ------------------
  308|    684|#endif
  309|    684|}
setobject.c:PyUnicode_GET_LENGTH:
  296|      2|static inline Py_ssize_t PyUnicode_GET_LENGTH(PyObject *op) {
  297|      2|    return _PyASCIIObject_CAST(op)->length;
  ------------------
  |  |  186|      2|    (assert(PyUnicode_Check(op)), \
  |  |  187|      2|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (297:12): [True: 2, False: 0]
  ------------------
  298|      2|}
setobject.c:_PyUnicode_DATA:
  278|      2|static inline void* _PyUnicode_DATA(PyObject *op) {
  279|      2|    if (PyUnicode_IS_COMPACT(op)) {
  ------------------
  |  |  234|      2|#define PyUnicode_IS_COMPACT(op) PyUnicode_IS_COMPACT(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (234:34): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  280|      2|        return _PyUnicode_COMPACT_DATA(op);
  281|      2|    }
  282|      0|    return _PyUnicode_NONCOMPACT_DATA(op);
  283|      2|}
setobject.c:PyUnicode_IS_COMPACT:
  231|      2|static inline unsigned int PyUnicode_IS_COMPACT(PyObject *op) {
  232|      2|    return _PyASCIIObject_CAST(op)->state.compact;
  ------------------
  |  |  186|      2|    (assert(PyUnicode_Check(op)), \
  |  |  187|      2|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (232:12): [True: 2, False: 0]
  ------------------
  233|      2|}
setobject.c:_PyUnicode_COMPACT_DATA:
  261|      2|static inline void* _PyUnicode_COMPACT_DATA(PyObject *op) {
  262|      2|    if (PyUnicode_IS_ASCII(op)) {
  ------------------
  |  |  227|      2|#define PyUnicode_IS_ASCII(op) PyUnicode_IS_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (227:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  263|      2|        return _Py_STATIC_CAST(void*, (_PyASCIIObject_CAST(op) + 1));
  ------------------
  |  |   34|      4|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  |  Branch (34:47): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  264|      2|    }
  265|      0|    return _Py_STATIC_CAST(void*, (_PyCompactUnicodeObject_CAST(op) + 1));
  ------------------
  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  |  Branch (34:47): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  266|      0|}
setobject.c:PyUnicode_IS_ASCII:
  224|      2|static inline unsigned int PyUnicode_IS_ASCII(PyObject *op) {
  225|      2|    return _PyASCIIObject_CAST(op)->state.ascii;
  ------------------
  |  |  186|      2|    (assert(PyUnicode_Check(op)), \
  |  |  187|      2|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (225:12): [True: 2, False: 0]
  ------------------
  226|      2|}
typeobject.c:PyUnstable_Unicode_GET_CACHED_HASH:
  303|  11.0k|PyUnstable_Unicode_GET_CACHED_HASH(PyObject *op) {
  304|       |#ifdef Py_GIL_DISABLED
  305|       |    return _Py_atomic_load_ssize_relaxed(&_PyASCIIObject_CAST(op)->hash);
  306|       |#else
  307|  11.0k|    return _PyASCIIObject_CAST(op)->hash;
  ------------------
  |  |  186|  11.0k|    (assert(PyUnicode_Check(op)), \
  |  |  187|  11.0k|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|  11.0k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (307:12): [True: 11.0k, False: 0]
  ------------------
  308|  11.0k|#endif
  309|  11.0k|}
typeobject.c:PyUnicode_GET_LENGTH:
  296|  1.61k|static inline Py_ssize_t PyUnicode_GET_LENGTH(PyObject *op) {
  297|  1.61k|    return _PyASCIIObject_CAST(op)->length;
  ------------------
  |  |  186|  1.61k|    (assert(PyUnicode_Check(op)), \
  |  |  187|  1.61k|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|  1.61k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (297:12): [True: 1.61k, False: 0]
  ------------------
  298|  1.61k|}
typeobject.c:PyUnicode_CHECK_INTERNED:
  207|     60|static inline unsigned int PyUnicode_CHECK_INTERNED(PyObject *op) {
  208|       |#ifdef Py_GIL_DISABLED
  209|       |    return _Py_atomic_load_uint8_relaxed(&_PyASCIIObject_CAST(op)->state.interned);
  210|       |#else
  211|     60|    return _PyASCIIObject_CAST(op)->state.interned;
  ------------------
  |  |  186|     60|    (assert(PyUnicode_Check(op)), \
  |  |  187|     60|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|     60|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (211:12): [True: 60, False: 0]
  ------------------
  212|     60|#endif
  213|     60|}
typeobject.c:_PyUnicode_DATA:
  278|     29|static inline void* _PyUnicode_DATA(PyObject *op) {
  279|     29|    if (PyUnicode_IS_COMPACT(op)) {
  ------------------
  |  |  234|     29|#define PyUnicode_IS_COMPACT(op) PyUnicode_IS_COMPACT(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     29|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     29|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (234:34): [True: 29, False: 0]
  |  |  ------------------
  ------------------
  280|     29|        return _PyUnicode_COMPACT_DATA(op);
  281|     29|    }
  282|      0|    return _PyUnicode_NONCOMPACT_DATA(op);
  283|     29|}
typeobject.c:PyUnicode_IS_COMPACT:
  231|     29|static inline unsigned int PyUnicode_IS_COMPACT(PyObject *op) {
  232|     29|    return _PyASCIIObject_CAST(op)->state.compact;
  ------------------
  |  |  186|     29|    (assert(PyUnicode_Check(op)), \
  |  |  187|     29|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|     29|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (232:12): [True: 29, False: 0]
  ------------------
  233|     29|}
typeobject.c:_PyUnicode_COMPACT_DATA:
  261|     29|static inline void* _PyUnicode_COMPACT_DATA(PyObject *op) {
  262|     29|    if (PyUnicode_IS_ASCII(op)) {
  ------------------
  |  |  227|     29|#define PyUnicode_IS_ASCII(op) PyUnicode_IS_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     29|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     29|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (227:32): [True: 29, False: 0]
  |  |  ------------------
  ------------------
  263|     29|        return _Py_STATIC_CAST(void*, (_PyASCIIObject_CAST(op) + 1));
  ------------------
  |  |   34|     58|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  |  Branch (34:47): [True: 29, False: 0]
  |  |  ------------------
  ------------------
  264|     29|    }
  265|      0|    return _Py_STATIC_CAST(void*, (_PyCompactUnicodeObject_CAST(op) + 1));
  ------------------
  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  |  Branch (34:47): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  266|      0|}
typeobject.c:PyUnicode_IS_ASCII:
  224|     29|static inline unsigned int PyUnicode_IS_ASCII(PyObject *op) {
  225|     29|    return _PyASCIIObject_CAST(op)->state.ascii;
  ------------------
  |  |  186|     29|    (assert(PyUnicode_Check(op)), \
  |  |  187|     29|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|     29|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (225:12): [True: 29, False: 0]
  ------------------
  226|     29|}
unicode_writer.c:_PyUnicode_DATA:
  278|     27|static inline void* _PyUnicode_DATA(PyObject *op) {
  279|     27|    if (PyUnicode_IS_COMPACT(op)) {
  ------------------
  |  |  234|     27|#define PyUnicode_IS_COMPACT(op) PyUnicode_IS_COMPACT(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     27|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     27|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (234:34): [True: 27, False: 0]
  |  |  ------------------
  ------------------
  280|     27|        return _PyUnicode_COMPACT_DATA(op);
  281|     27|    }
  282|      0|    return _PyUnicode_NONCOMPACT_DATA(op);
  283|     27|}
unicode_writer.c:PyUnicode_IS_COMPACT:
  231|     27|static inline unsigned int PyUnicode_IS_COMPACT(PyObject *op) {
  232|     27|    return _PyASCIIObject_CAST(op)->state.compact;
  ------------------
  |  |  186|     27|    (assert(PyUnicode_Check(op)), \
  |  |  187|     27|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|     27|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (232:12): [True: 27, False: 0]
  ------------------
  233|     27|}
unicode_writer.c:_PyUnicode_COMPACT_DATA:
  261|     27|static inline void* _PyUnicode_COMPACT_DATA(PyObject *op) {
  262|     27|    if (PyUnicode_IS_ASCII(op)) {
  ------------------
  |  |  227|     27|#define PyUnicode_IS_ASCII(op) PyUnicode_IS_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     27|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     27|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (227:32): [True: 25, False: 2]
  |  |  ------------------
  ------------------
  263|     25|        return _Py_STATIC_CAST(void*, (_PyASCIIObject_CAST(op) + 1));
  ------------------
  |  |   34|     50|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  |  Branch (34:47): [True: 25, False: 0]
  |  |  ------------------
  ------------------
  264|     25|    }
  265|      2|    return _Py_STATIC_CAST(void*, (_PyCompactUnicodeObject_CAST(op) + 1));
  ------------------
  |  |   34|      4|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  |  Branch (34:47): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  266|      2|}
unicode_writer.c:PyUnicode_IS_ASCII:
  224|     88|static inline unsigned int PyUnicode_IS_ASCII(PyObject *op) {
  225|     88|    return _PyASCIIObject_CAST(op)->state.ascii;
  ------------------
  |  |  186|     88|    (assert(PyUnicode_Check(op)), \
  |  |  187|     88|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|     88|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (225:12): [True: 88, False: 0]
  ------------------
  226|     88|}
unicode_writer.c:PyUnicode_GET_LENGTH:
  296|     86|static inline Py_ssize_t PyUnicode_GET_LENGTH(PyObject *op) {
  297|     86|    return _PyASCIIObject_CAST(op)->length;
  ------------------
  |  |  186|     86|    (assert(PyUnicode_Check(op)), \
  |  |  187|     86|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|     86|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (297:12): [True: 86, False: 0]
  ------------------
  298|     86|}
unicode_writer.c:PyUnicode_MAX_CHAR_VALUE:
  387|     61|{
  388|     61|    int kind;
  389|       |
  390|     61|    if (PyUnicode_IS_ASCII(op)) {
  ------------------
  |  |  227|     61|#define PyUnicode_IS_ASCII(op) PyUnicode_IS_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     61|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     61|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (227:32): [True: 59, False: 2]
  |  |  ------------------
  ------------------
  391|     59|        return 0x7fU;
  392|     59|    }
  393|       |
  394|      2|    kind = PyUnicode_KIND(op);
  ------------------
  |  |  258|      2|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|      4|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  395|      2|    if (kind == PyUnicode_1BYTE_KIND) {
  ------------------
  |  Branch (395:9): [True: 1, False: 1]
  ------------------
  396|      1|       return 0xffU;
  397|      1|    }
  398|      1|    if (kind == PyUnicode_2BYTE_KIND) {
  ------------------
  |  Branch (398:9): [True: 1, False: 0]
  ------------------
  399|      1|        return 0xffffU;
  400|      1|    }
  401|      1|    assert(kind == PyUnicode_4BYTE_KIND);
  ------------------
  |  Branch (401:5): [True: 0, False: 0]
  ------------------
  402|      0|    return 0x10ffffU;
  403|      0|}
unicodeobject.c:PyUnicode_CHECK_INTERNED:
  207|  24.1k|static inline unsigned int PyUnicode_CHECK_INTERNED(PyObject *op) {
  208|       |#ifdef Py_GIL_DISABLED
  209|       |    return _Py_atomic_load_uint8_relaxed(&_PyASCIIObject_CAST(op)->state.interned);
  210|       |#else
  211|  24.1k|    return _PyASCIIObject_CAST(op)->state.interned;
  ------------------
  |  |  186|  24.1k|    (assert(PyUnicode_Check(op)), \
  |  |  187|  24.1k|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|  24.1k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (211:12): [True: 24.1k, False: 0]
  ------------------
  212|  24.1k|#endif
  213|  24.1k|}
unicodeobject.c:_PyUnicode_DATA:
  278|  38.4k|static inline void* _PyUnicode_DATA(PyObject *op) {
  279|  38.4k|    if (PyUnicode_IS_COMPACT(op)) {
  ------------------
  |  |  234|  38.4k|#define PyUnicode_IS_COMPACT(op) PyUnicode_IS_COMPACT(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  38.4k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  38.4k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (234:34): [True: 38.4k, False: 0]
  |  |  ------------------
  ------------------
  280|  38.4k|        return _PyUnicode_COMPACT_DATA(op);
  281|  38.4k|    }
  282|      0|    return _PyUnicode_NONCOMPACT_DATA(op);
  283|  38.4k|}
unicodeobject.c:_PyUnicode_COMPACT_DATA:
  261|  38.4k|static inline void* _PyUnicode_COMPACT_DATA(PyObject *op) {
  262|  38.4k|    if (PyUnicode_IS_ASCII(op)) {
  ------------------
  |  |  227|  38.4k|#define PyUnicode_IS_ASCII(op) PyUnicode_IS_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  38.4k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  38.4k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (227:32): [True: 38.3k, False: 137]
  |  |  ------------------
  ------------------
  263|  38.3k|        return _Py_STATIC_CAST(void*, (_PyASCIIObject_CAST(op) + 1));
  ------------------
  |  |   34|  76.6k|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  |  Branch (34:47): [True: 38.3k, False: 0]
  |  |  ------------------
  ------------------
  264|  38.3k|    }
  265|    137|    return _Py_STATIC_CAST(void*, (_PyCompactUnicodeObject_CAST(op) + 1));
  ------------------
  |  |   34|    274|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  |  Branch (34:47): [True: 137, False: 0]
  |  |  ------------------
  ------------------
  266|    137|}
unicodeobject.c:PyUnicode_READ:
  342|   138k|{
  343|   138k|    assert(index >= 0);
  ------------------
  |  Branch (343:5): [True: 138k, False: 0]
  ------------------
  344|   138k|    if (kind == PyUnicode_1BYTE_KIND) {
  ------------------
  |  Branch (344:9): [True: 137k, False: 514]
  ------------------
  345|   137k|        return _Py_STATIC_CAST(const Py_UCS1*, data)[index];
  ------------------
  |  |   34|   137k|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  ------------------
  346|   137k|    }
  347|    514|    if (kind == PyUnicode_2BYTE_KIND) {
  ------------------
  |  Branch (347:9): [True: 514, False: 0]
  ------------------
  348|    514|        return _Py_STATIC_CAST(const Py_UCS2*, data)[index];
  ------------------
  |  |   34|    514|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  ------------------
  349|    514|    }
  350|    514|    assert(kind == PyUnicode_4BYTE_KIND);
  ------------------
  |  Branch (350:5): [True: 0, False: 0]
  ------------------
  351|      0|    return _Py_STATIC_CAST(const Py_UCS4*, data)[index];
  ------------------
  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  ------------------
  352|      0|}
unicodeobject.c:PyUnicode_GET_LENGTH:
  296|  35.5k|static inline Py_ssize_t PyUnicode_GET_LENGTH(PyObject *op) {
  297|  35.5k|    return _PyASCIIObject_CAST(op)->length;
  ------------------
  |  |  186|  35.5k|    (assert(PyUnicode_Check(op)), \
  |  |  187|  35.5k|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|  35.5k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (297:12): [True: 35.5k, False: 0]
  ------------------
  298|  35.5k|}
unicodeobject.c:PyUnicode_IS_COMPACT:
  231|  48.0k|static inline unsigned int PyUnicode_IS_COMPACT(PyObject *op) {
  232|  48.0k|    return _PyASCIIObject_CAST(op)->state.compact;
  ------------------
  |  |  186|  48.0k|    (assert(PyUnicode_Check(op)), \
  |  |  187|  48.0k|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|  48.0k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (232:12): [True: 48.0k, False: 0]
  ------------------
  233|  48.0k|}
unicodeobject.c:PyUnicode_IS_ASCII:
  224|  40.2k|static inline unsigned int PyUnicode_IS_ASCII(PyObject *op) {
  225|  40.2k|    return _PyASCIIObject_CAST(op)->state.ascii;
  ------------------
  |  |  186|  40.2k|    (assert(PyUnicode_Check(op)), \
  |  |  187|  40.2k|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|  40.2k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (225:12): [True: 40.2k, False: 0]
  ------------------
  226|  40.2k|}
unicodeobject.c:PyUnicode_IS_COMPACT_ASCII:
  238|  5.21k|static inline int PyUnicode_IS_COMPACT_ASCII(PyObject *op) {
  239|  10.4k|    return (_PyASCIIObject_CAST(op)->state.ascii && PyUnicode_IS_COMPACT(op));
  ------------------
  |  |  186|  5.21k|    (assert(PyUnicode_Check(op)), \
  |  |  187|  5.21k|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|  5.21k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
                  return (_PyASCIIObject_CAST(op)->state.ascii && PyUnicode_IS_COMPACT(op));
  ------------------
  |  |  234|  5.21k|#define PyUnicode_IS_COMPACT(op) PyUnicode_IS_COMPACT(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  5.21k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  5.21k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (234:34): [True: 5.21k, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (239:13): [True: 5.21k, False: 0]
  |  Branch (239:13): [True: 5.21k, False: 2]
  ------------------
  240|  5.21k|}
unicodeobject.c:PyUnicode_WRITE:
  318|     39|{
  319|     39|    assert(index >= 0);
  ------------------
  |  Branch (319:5): [True: 39, False: 0]
  ------------------
  320|     39|    if (kind == PyUnicode_1BYTE_KIND) {
  ------------------
  |  Branch (320:9): [True: 37, False: 2]
  ------------------
  321|     37|        assert(value <= 0xffU);
  ------------------
  |  Branch (321:9): [True: 37, False: 0]
  ------------------
  322|     37|        _Py_STATIC_CAST(Py_UCS1*, data)[index] = _Py_STATIC_CAST(Py_UCS1, value);
  ------------------
  |  |   34|     37|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  ------------------
                      _Py_STATIC_CAST(Py_UCS1*, data)[index] = _Py_STATIC_CAST(Py_UCS1, value);
  ------------------
  |  |   34|     37|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  ------------------
  323|     37|    }
  324|      2|    else if (kind == PyUnicode_2BYTE_KIND) {
  ------------------
  |  Branch (324:14): [True: 2, False: 0]
  ------------------
  325|      2|        assert(value <= 0xffffU);
  ------------------
  |  Branch (325:9): [True: 2, False: 0]
  ------------------
  326|      2|        _Py_STATIC_CAST(Py_UCS2*, data)[index] = _Py_STATIC_CAST(Py_UCS2, value);
  ------------------
  |  |   34|      2|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  ------------------
                      _Py_STATIC_CAST(Py_UCS2*, data)[index] = _Py_STATIC_CAST(Py_UCS2, value);
  ------------------
  |  |   34|      2|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  ------------------
  327|      2|    }
  328|      0|    else {
  329|      0|        assert(kind == PyUnicode_4BYTE_KIND);
  ------------------
  |  Branch (329:9): [True: 0, False: 0]
  ------------------
  330|      0|        assert(value <= 0x10ffffU);
  ------------------
  |  Branch (330:9): [True: 0, False: 0]
  ------------------
  331|      0|        _Py_STATIC_CAST(Py_UCS4*, data)[index] = value;
  ------------------
  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  ------------------
  332|      0|    }
  333|     39|}
unicodeobject.c:PyUnstable_Unicode_GET_CACHED_HASH:
  303|  13.7k|PyUnstable_Unicode_GET_CACHED_HASH(PyObject *op) {
  304|       |#ifdef Py_GIL_DISABLED
  305|       |    return _Py_atomic_load_ssize_relaxed(&_PyASCIIObject_CAST(op)->hash);
  306|       |#else
  307|  13.7k|    return _PyASCIIObject_CAST(op)->hash;
  ------------------
  |  |  186|  13.7k|    (assert(PyUnicode_Check(op)), \
  |  |  187|  13.7k|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|  13.7k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (307:12): [True: 13.7k, False: 0]
  ------------------
  308|  13.7k|#endif
  309|  13.7k|}
unicodeobject.c:PyUnicode_MAX_CHAR_VALUE:
  387|    510|{
  388|    510|    int kind;
  389|       |
  390|    510|    if (PyUnicode_IS_ASCII(op)) {
  ------------------
  |  |  227|    510|#define PyUnicode_IS_ASCII(op) PyUnicode_IS_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    510|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    510|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (227:32): [True: 510, False: 0]
  |  |  ------------------
  ------------------
  391|    510|        return 0x7fU;
  392|    510|    }
  393|       |
  394|      0|    kind = PyUnicode_KIND(op);
  ------------------
  |  |  258|      0|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|      0|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  395|      0|    if (kind == PyUnicode_1BYTE_KIND) {
  ------------------
  |  Branch (395:9): [True: 0, False: 0]
  ------------------
  396|      0|       return 0xffU;
  397|      0|    }
  398|      0|    if (kind == PyUnicode_2BYTE_KIND) {
  ------------------
  |  Branch (398:9): [True: 0, False: 0]
  ------------------
  399|      0|        return 0xffffU;
  400|      0|    }
  401|      0|    assert(kind == PyUnicode_4BYTE_KIND);
  ------------------
  |  Branch (401:5): [True: 0, False: 0]
  ------------------
  402|      0|    return 0x10ffffU;
  403|      0|}
ceval.c:PyUnicode_IS_COMPACT_ASCII:
  238|    375|static inline int PyUnicode_IS_COMPACT_ASCII(PyObject *op) {
  239|    750|    return (_PyASCIIObject_CAST(op)->state.ascii && PyUnicode_IS_COMPACT(op));
  ------------------
  |  |  186|    375|    (assert(PyUnicode_Check(op)), \
  |  |  187|    375|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|    375|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
                  return (_PyASCIIObject_CAST(op)->state.ascii && PyUnicode_IS_COMPACT(op));
  ------------------
  |  |  234|    375|#define PyUnicode_IS_COMPACT(op) PyUnicode_IS_COMPACT(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    375|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    375|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (234:34): [True: 375, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (239:13): [True: 375, False: 0]
  |  Branch (239:13): [True: 375, False: 0]
  ------------------
  240|    375|}
ceval.c:PyUnicode_IS_COMPACT:
  231|    750|static inline unsigned int PyUnicode_IS_COMPACT(PyObject *op) {
  232|    750|    return _PyASCIIObject_CAST(op)->state.compact;
  ------------------
  |  |  186|    750|    (assert(PyUnicode_Check(op)), \
  |  |  187|    750|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|    750|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (232:12): [True: 750, False: 0]
  ------------------
  233|    750|}
ceval.c:PyUnicode_GET_LENGTH:
  296|    375|static inline Py_ssize_t PyUnicode_GET_LENGTH(PyObject *op) {
  297|    375|    return _PyASCIIObject_CAST(op)->length;
  ------------------
  |  |  186|    375|    (assert(PyUnicode_Check(op)), \
  |  |  187|    375|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|    375|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (297:12): [True: 375, False: 0]
  ------------------
  298|    375|}
ceval.c:_PyUnicode_DATA:
  278|    375|static inline void* _PyUnicode_DATA(PyObject *op) {
  279|    375|    if (PyUnicode_IS_COMPACT(op)) {
  ------------------
  |  |  234|    375|#define PyUnicode_IS_COMPACT(op) PyUnicode_IS_COMPACT(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    375|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    375|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (234:34): [True: 375, False: 0]
  |  |  ------------------
  ------------------
  280|    375|        return _PyUnicode_COMPACT_DATA(op);
  281|    375|    }
  282|      0|    return _PyUnicode_NONCOMPACT_DATA(op);
  283|    375|}
ceval.c:_PyUnicode_COMPACT_DATA:
  261|    375|static inline void* _PyUnicode_COMPACT_DATA(PyObject *op) {
  262|    375|    if (PyUnicode_IS_ASCII(op)) {
  ------------------
  |  |  227|    375|#define PyUnicode_IS_ASCII(op) PyUnicode_IS_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    375|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    375|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (227:32): [True: 375, False: 0]
  |  |  ------------------
  ------------------
  263|    375|        return _Py_STATIC_CAST(void*, (_PyASCIIObject_CAST(op) + 1));
  ------------------
  |  |   34|    750|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  |  Branch (34:47): [True: 375, False: 0]
  |  |  ------------------
  ------------------
  264|    375|    }
  265|      0|    return _Py_STATIC_CAST(void*, (_PyCompactUnicodeObject_CAST(op) + 1));
  ------------------
  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  |  Branch (34:47): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  266|      0|}
ceval.c:PyUnicode_IS_ASCII:
  224|    375|static inline unsigned int PyUnicode_IS_ASCII(PyObject *op) {
  225|    375|    return _PyASCIIObject_CAST(op)->state.ascii;
  ------------------
  |  |  186|    375|    (assert(PyUnicode_Check(op)), \
  |  |  187|    375|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|    375|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (225:12): [True: 375, False: 0]
  ------------------
  226|    375|}
import.c:PyUnicode_GET_LENGTH:
  296|    148|static inline Py_ssize_t PyUnicode_GET_LENGTH(PyObject *op) {
  297|    148|    return _PyASCIIObject_CAST(op)->length;
  ------------------
  |  |  186|    148|    (assert(PyUnicode_Check(op)), \
  |  |  187|    148|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|    148|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (297:12): [True: 148, False: 0]
  ------------------
  298|    148|}
intrinsics.c:PyUnicode_READ_CHAR:
  363|    497|{
  364|    497|    int kind;
  365|       |
  366|    497|    assert(index >= 0);
  ------------------
  |  Branch (366:5): [True: 497, False: 0]
  ------------------
  367|       |    // Tolerate reading the NUL character at str[len(str)]
  368|    497|    assert(index <= PyUnicode_GET_LENGTH(unicode));
  ------------------
  |  Branch (368:5): [True: 497, False: 0]
  ------------------
  369|       |
  370|    497|    kind = PyUnicode_KIND(unicode);
  ------------------
  |  |  258|    497|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|    994|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 497, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  371|    497|    if (kind == PyUnicode_1BYTE_KIND) {
  ------------------
  |  Branch (371:9): [True: 497, False: 0]
  ------------------
  372|    497|        return PyUnicode_1BYTE_DATA(unicode)[index];
  ------------------
  |  |  291|    497|#define PyUnicode_1BYTE_DATA(op) _Py_STATIC_CAST(Py_UCS1*, PyUnicode_DATA(op))
  |  |  ------------------
  |  |  |  |   34|    497|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  373|    497|    }
  374|      0|    if (kind == PyUnicode_2BYTE_KIND) {
  ------------------
  |  Branch (374:9): [True: 0, False: 0]
  ------------------
  375|      0|        return PyUnicode_2BYTE_DATA(unicode)[index];
  ------------------
  |  |  292|      0|#define PyUnicode_2BYTE_DATA(op) _Py_STATIC_CAST(Py_UCS2*, PyUnicode_DATA(op))
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  376|      0|    }
  377|      0|    assert(kind == PyUnicode_4BYTE_KIND);
  ------------------
  |  Branch (377:5): [True: 0, False: 0]
  ------------------
  378|      0|    return PyUnicode_4BYTE_DATA(unicode)[index];
  ------------------
  |  |  293|      0|#define PyUnicode_4BYTE_DATA(op) _Py_STATIC_CAST(Py_UCS4*, PyUnicode_DATA(op))
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  379|      0|}
intrinsics.c:PyUnicode_GET_LENGTH:
  296|    497|static inline Py_ssize_t PyUnicode_GET_LENGTH(PyObject *op) {
  297|    497|    return _PyASCIIObject_CAST(op)->length;
  ------------------
  |  |  186|    497|    (assert(PyUnicode_Check(op)), \
  |  |  187|    497|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|    497|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (297:12): [True: 497, False: 0]
  ------------------
  298|    497|}
intrinsics.c:_PyUnicode_DATA:
  278|    497|static inline void* _PyUnicode_DATA(PyObject *op) {
  279|    497|    if (PyUnicode_IS_COMPACT(op)) {
  ------------------
  |  |  234|    497|#define PyUnicode_IS_COMPACT(op) PyUnicode_IS_COMPACT(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    497|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    497|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (234:34): [True: 497, False: 0]
  |  |  ------------------
  ------------------
  280|    497|        return _PyUnicode_COMPACT_DATA(op);
  281|    497|    }
  282|      0|    return _PyUnicode_NONCOMPACT_DATA(op);
  283|    497|}
intrinsics.c:PyUnicode_IS_COMPACT:
  231|    497|static inline unsigned int PyUnicode_IS_COMPACT(PyObject *op) {
  232|    497|    return _PyASCIIObject_CAST(op)->state.compact;
  ------------------
  |  |  186|    497|    (assert(PyUnicode_Check(op)), \
  |  |  187|    497|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|    497|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (232:12): [True: 497, False: 0]
  ------------------
  233|    497|}
intrinsics.c:_PyUnicode_COMPACT_DATA:
  261|    497|static inline void* _PyUnicode_COMPACT_DATA(PyObject *op) {
  262|    497|    if (PyUnicode_IS_ASCII(op)) {
  ------------------
  |  |  227|    497|#define PyUnicode_IS_ASCII(op) PyUnicode_IS_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    497|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    497|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (227:32): [True: 497, False: 0]
  |  |  ------------------
  ------------------
  263|    497|        return _Py_STATIC_CAST(void*, (_PyASCIIObject_CAST(op) + 1));
  ------------------
  |  |   34|    994|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  |  Branch (34:47): [True: 497, False: 0]
  |  |  ------------------
  ------------------
  264|    497|    }
  265|      0|    return _Py_STATIC_CAST(void*, (_PyCompactUnicodeObject_CAST(op) + 1));
  ------------------
  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  |  Branch (34:47): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  266|      0|}
intrinsics.c:PyUnicode_IS_ASCII:
  224|    497|static inline unsigned int PyUnicode_IS_ASCII(PyObject *op) {
  225|    497|    return _PyASCIIObject_CAST(op)->state.ascii;
  ------------------
  |  |  186|    497|    (assert(PyUnicode_Check(op)), \
  |  |  187|    497|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|    497|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (225:12): [True: 497, False: 0]
  ------------------
  226|    497|}
specialize.c:PyUnicode_IS_COMPACT_ASCII:
  238|      1|static inline int PyUnicode_IS_COMPACT_ASCII(PyObject *op) {
  239|      2|    return (_PyASCIIObject_CAST(op)->state.ascii && PyUnicode_IS_COMPACT(op));
  ------------------
  |  |  186|      1|    (assert(PyUnicode_Check(op)), \
  |  |  187|      1|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
                  return (_PyASCIIObject_CAST(op)->state.ascii && PyUnicode_IS_COMPACT(op));
  ------------------
  |  |  234|      1|#define PyUnicode_IS_COMPACT(op) PyUnicode_IS_COMPACT(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (234:34): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (239:13): [True: 1, False: 0]
  |  Branch (239:13): [True: 1, False: 0]
  ------------------
  240|      1|}
specialize.c:PyUnicode_IS_COMPACT:
  231|      1|static inline unsigned int PyUnicode_IS_COMPACT(PyObject *op) {
  232|      1|    return _PyASCIIObject_CAST(op)->state.compact;
  ------------------
  |  |  186|      1|    (assert(PyUnicode_Check(op)), \
  |  |  187|      1|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (232:12): [True: 1, False: 0]
  ------------------
  233|      1|}
symtable.c:PyUnicode_GET_LENGTH:
  296|      9|static inline Py_ssize_t PyUnicode_GET_LENGTH(PyObject *op) {
  297|      9|    return _PyASCIIObject_CAST(op)->length;
  ------------------
  |  |  186|      9|    (assert(PyUnicode_Check(op)), \
  |  |  187|      9|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      9|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (297:12): [True: 9, False: 0]
  ------------------
  298|      9|}
symtable.c:PyUnicode_READ_CHAR:
  363|      9|{
  364|      9|    int kind;
  365|       |
  366|      9|    assert(index >= 0);
  ------------------
  |  Branch (366:5): [True: 9, False: 0]
  ------------------
  367|       |    // Tolerate reading the NUL character at str[len(str)]
  368|      9|    assert(index <= PyUnicode_GET_LENGTH(unicode));
  ------------------
  |  Branch (368:5): [True: 9, False: 0]
  ------------------
  369|       |
  370|      9|    kind = PyUnicode_KIND(unicode);
  ------------------
  |  |  258|      9|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|     18|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 9, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  371|      9|    if (kind == PyUnicode_1BYTE_KIND) {
  ------------------
  |  Branch (371:9): [True: 9, False: 0]
  ------------------
  372|      9|        return PyUnicode_1BYTE_DATA(unicode)[index];
  ------------------
  |  |  291|      9|#define PyUnicode_1BYTE_DATA(op) _Py_STATIC_CAST(Py_UCS1*, PyUnicode_DATA(op))
  |  |  ------------------
  |  |  |  |   34|      9|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  373|      9|    }
  374|      0|    if (kind == PyUnicode_2BYTE_KIND) {
  ------------------
  |  Branch (374:9): [True: 0, False: 0]
  ------------------
  375|      0|        return PyUnicode_2BYTE_DATA(unicode)[index];
  ------------------
  |  |  292|      0|#define PyUnicode_2BYTE_DATA(op) _Py_STATIC_CAST(Py_UCS2*, PyUnicode_DATA(op))
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  376|      0|    }
  377|      0|    assert(kind == PyUnicode_4BYTE_KIND);
  ------------------
  |  Branch (377:5): [True: 0, False: 0]
  ------------------
  378|      0|    return PyUnicode_4BYTE_DATA(unicode)[index];
  ------------------
  |  |  293|      0|#define PyUnicode_4BYTE_DATA(op) _Py_STATIC_CAST(Py_UCS4*, PyUnicode_DATA(op))
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  379|      0|}
symtable.c:_PyUnicode_DATA:
  278|      9|static inline void* _PyUnicode_DATA(PyObject *op) {
  279|      9|    if (PyUnicode_IS_COMPACT(op)) {
  ------------------
  |  |  234|      9|#define PyUnicode_IS_COMPACT(op) PyUnicode_IS_COMPACT(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      9|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      9|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (234:34): [True: 9, False: 0]
  |  |  ------------------
  ------------------
  280|      9|        return _PyUnicode_COMPACT_DATA(op);
  281|      9|    }
  282|      0|    return _PyUnicode_NONCOMPACT_DATA(op);
  283|      9|}
symtable.c:PyUnicode_IS_COMPACT:
  231|      9|static inline unsigned int PyUnicode_IS_COMPACT(PyObject *op) {
  232|      9|    return _PyASCIIObject_CAST(op)->state.compact;
  ------------------
  |  |  186|      9|    (assert(PyUnicode_Check(op)), \
  |  |  187|      9|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      9|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (232:12): [True: 9, False: 0]
  ------------------
  233|      9|}
symtable.c:_PyUnicode_COMPACT_DATA:
  261|      9|static inline void* _PyUnicode_COMPACT_DATA(PyObject *op) {
  262|      9|    if (PyUnicode_IS_ASCII(op)) {
  ------------------
  |  |  227|      9|#define PyUnicode_IS_ASCII(op) PyUnicode_IS_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      9|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      9|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (227:32): [True: 9, False: 0]
  |  |  ------------------
  ------------------
  263|      9|        return _Py_STATIC_CAST(void*, (_PyASCIIObject_CAST(op) + 1));
  ------------------
  |  |   34|     18|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  |  Branch (34:47): [True: 9, False: 0]
  |  |  ------------------
  ------------------
  264|      9|    }
  265|      0|    return _Py_STATIC_CAST(void*, (_PyCompactUnicodeObject_CAST(op) + 1));
  ------------------
  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  |  Branch (34:47): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  266|      0|}
symtable.c:PyUnicode_IS_ASCII:
  224|      9|static inline unsigned int PyUnicode_IS_ASCII(PyObject *op) {
  225|      9|    return _PyASCIIObject_CAST(op)->state.ascii;
  ------------------
  |  |  186|      9|    (assert(PyUnicode_Check(op)), \
  |  |  187|      9|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      9|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (225:12): [True: 9, False: 0]
  ------------------
  226|      9|}
fileutils.c:Py_UNICODE_IS_SURROGATE:
   16|    250|static inline int Py_UNICODE_IS_SURROGATE(Py_UCS4 ch) {
   17|    250|    return (0xD800 <= ch && ch <= 0xDFFF);
  ------------------
  |  Branch (17:13): [True: 0, False: 250]
  |  Branch (17:29): [True: 0, False: 0]
  ------------------
   18|    250|}
textio.c:PyUnicode_IS_ASCII:
  224|      3|static inline unsigned int PyUnicode_IS_ASCII(PyObject *op) {
  225|      3|    return _PyASCIIObject_CAST(op)->state.ascii;
  ------------------
  |  |  186|      3|    (assert(PyUnicode_Check(op)), \
  |  |  187|      3|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (225:12): [True: 3, False: 0]
  ------------------
  226|      3|}
textio.c:_PyUnicode_DATA:
  278|      3|static inline void* _PyUnicode_DATA(PyObject *op) {
  279|      3|    if (PyUnicode_IS_COMPACT(op)) {
  ------------------
  |  |  234|      3|#define PyUnicode_IS_COMPACT(op) PyUnicode_IS_COMPACT(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (234:34): [True: 3, False: 0]
  |  |  ------------------
  ------------------
  280|      3|        return _PyUnicode_COMPACT_DATA(op);
  281|      3|    }
  282|      0|    return _PyUnicode_NONCOMPACT_DATA(op);
  283|      3|}
textio.c:PyUnicode_IS_COMPACT:
  231|      3|static inline unsigned int PyUnicode_IS_COMPACT(PyObject *op) {
  232|      3|    return _PyASCIIObject_CAST(op)->state.compact;
  ------------------
  |  |  186|      3|    (assert(PyUnicode_Check(op)), \
  |  |  187|      3|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (232:12): [True: 3, False: 0]
  ------------------
  233|      3|}
textio.c:_PyUnicode_COMPACT_DATA:
  261|      3|static inline void* _PyUnicode_COMPACT_DATA(PyObject *op) {
  262|      3|    if (PyUnicode_IS_ASCII(op)) {
  ------------------
  |  |  227|      3|#define PyUnicode_IS_ASCII(op) PyUnicode_IS_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (227:32): [True: 3, False: 0]
  |  |  ------------------
  ------------------
  263|      3|        return _Py_STATIC_CAST(void*, (_PyASCIIObject_CAST(op) + 1));
  ------------------
  |  |   34|      6|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  |  Branch (34:47): [True: 3, False: 0]
  |  |  ------------------
  ------------------
  264|      3|    }
  265|      0|    return _Py_STATIC_CAST(void*, (_PyCompactUnicodeObject_CAST(op) + 1));
  ------------------
  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  |  Branch (34:47): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  266|      0|}
getpath.c:PyUnicode_GET_LENGTH:
  296|      6|static inline Py_ssize_t PyUnicode_GET_LENGTH(PyObject *op) {
  297|      6|    return _PyASCIIObject_CAST(op)->length;
  ------------------
  |  |  186|      6|    (assert(PyUnicode_Check(op)), \
  |  |  187|      6|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (297:12): [True: 6, False: 0]
  ------------------
  298|      6|}
codeobject.c:PyUnicode_IS_ASCII:
  224|  4.61k|static inline unsigned int PyUnicode_IS_ASCII(PyObject *op) {
  225|  4.61k|    return _PyASCIIObject_CAST(op)->state.ascii;
  ------------------
  |  |  186|  4.61k|    (assert(PyUnicode_Check(op)), \
  |  |  187|  4.61k|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|  4.61k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (225:12): [True: 4.61k, False: 0]
  ------------------
  226|  4.61k|}
codeobject.c:_PyUnicode_DATA:
  278|  2.30k|static inline void* _PyUnicode_DATA(PyObject *op) {
  279|  2.30k|    if (PyUnicode_IS_COMPACT(op)) {
  ------------------
  |  |  234|  2.30k|#define PyUnicode_IS_COMPACT(op) PyUnicode_IS_COMPACT(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  2.30k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.30k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (234:34): [True: 2.30k, False: 0]
  |  |  ------------------
  ------------------
  280|  2.30k|        return _PyUnicode_COMPACT_DATA(op);
  281|  2.30k|    }
  282|      0|    return _PyUnicode_NONCOMPACT_DATA(op);
  283|  2.30k|}
codeobject.c:PyUnicode_IS_COMPACT:
  231|  2.30k|static inline unsigned int PyUnicode_IS_COMPACT(PyObject *op) {
  232|  2.30k|    return _PyASCIIObject_CAST(op)->state.compact;
  ------------------
  |  |  186|  2.30k|    (assert(PyUnicode_Check(op)), \
  |  |  187|  2.30k|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|  2.30k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (232:12): [True: 2.30k, False: 0]
  ------------------
  233|  2.30k|}
codeobject.c:_PyUnicode_COMPACT_DATA:
  261|  2.30k|static inline void* _PyUnicode_COMPACT_DATA(PyObject *op) {
  262|  2.30k|    if (PyUnicode_IS_ASCII(op)) {
  ------------------
  |  |  227|  2.30k|#define PyUnicode_IS_ASCII(op) PyUnicode_IS_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  2.30k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.30k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (227:32): [True: 2.30k, False: 0]
  |  |  ------------------
  ------------------
  263|  2.30k|        return _Py_STATIC_CAST(void*, (_PyASCIIObject_CAST(op) + 1));
  ------------------
  |  |   34|  4.61k|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  |  Branch (34:47): [True: 2.30k, False: 0]
  |  |  ------------------
  ------------------
  264|  2.30k|    }
  265|      0|    return _Py_STATIC_CAST(void*, (_PyCompactUnicodeObject_CAST(op) + 1));
  ------------------
  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  |  Branch (34:47): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  266|      0|}
codeobject.c:PyUnicode_GET_LENGTH:
  296|  2.30k|static inline Py_ssize_t PyUnicode_GET_LENGTH(PyObject *op) {
  297|  2.30k|    return _PyASCIIObject_CAST(op)->length;
  ------------------
  |  |  186|  2.30k|    (assert(PyUnicode_Check(op)), \
  |  |  187|  2.30k|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|  2.30k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (297:12): [True: 2.30k, False: 0]
  ------------------
  298|  2.30k|}

obmalloc.c:mi_atomic_once:
  306|      3|static inline bool mi_atomic_once( mi_atomic_once_t* once ) {
  307|      3|  if (mi_atomic_load_relaxed(once) != 0) return false;     // quick test
  ------------------
  |  |   61|      3|#define mi_atomic_load_relaxed(p)                mi_atomic(load_explicit)(p,mi_memory_order(relaxed))
  |  |  ------------------
  |  |  |  |   42|      3|#define  mi_atomic(name)        atomic_##name
  |  |  ------------------
  |  |               #define mi_atomic_load_relaxed(p)                mi_atomic(load_explicit)(p,mi_memory_order(relaxed))
  |  |  ------------------
  |  |  |  |   43|      3|#define  mi_memory_order(name)  memory_order_##name
  |  |  ------------------
  ------------------
  |  Branch (307:7): [True: 2, False: 1]
  ------------------
  308|      1|  uintptr_t expected = 0;
  309|       |  return mi_atomic_cas_strong_acq_rel(once, &expected, (uintptr_t)1); // try to set to 1
  ------------------
  |  |   69|      1|#define mi_atomic_cas_strong_acq_rel(p,exp,des)  mi_atomic_cas_strong(p,exp,des,mi_memory_order(acq_rel),mi_memory_order(acquire))
  |  |  ------------------
  |  |  |  |   58|      1|  mi_atomic(compare_exchange_strong_explicit)(p,expected,desired,mem_success,mem_fail)
  |  |  |  |  ------------------
  |  |  |  |  |  |   42|      1|#define  mi_atomic(name)        atomic_##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  310|      3|}

obmalloc.c:mi_heap_is_initialized:
  374|      2|static inline bool mi_heap_is_initialized(mi_heap_t* heap) {
  375|      2|  mi_assert_internal(heap != NULL);
  376|      2|  return (heap != &_mi_heap_empty);
  377|      2|}

obmalloc.c:mi_prim_get_default_heap:
  318|      3|static inline mi_heap_t* mi_prim_get_default_heap(void) {
  319|       |  #if defined(MI_TLS_RECURSE_GUARD)
  320|       |  if (mi_unlikely(!_mi_process_is_initialized)) return _mi_heap_main_get();
  321|       |  #endif
  322|      3|  return _mi_heap_default;
  323|      3|}
obmalloc.c:_mi_prim_thread_id:
  214|      2|static inline mi_threadid_t _mi_prim_thread_id(void) mi_attr_noexcept {
  215|       |  #if defined(__BIONIC__)
  216|       |    // issue #384, #495: on the Bionic libc (Android), slot 1 is the thread id
  217|       |    // see: https://github.com/aosp-mirror/platform_bionic/blob/c44b1d0676ded732df4b3b21c5f798eacae93228/libc/platform/bionic/tls_defines.h#L86
  218|       |    return (uintptr_t)mi_prim_tls_slot(1);
  219|       |  #else
  220|       |    // in all our other targets, slot 0 is the thread id
  221|       |    // glibc: https://sourceware.org/git/?p=glibc.git;a=blob_plain;f=sysdeps/x86_64/nptl/tls.h
  222|       |    // apple: https://github.com/apple/darwin-xnu/blob/main/libsyscall/os/tsd.h#L36
  223|      2|    return (uintptr_t)mi_prim_tls_slot(0);
  224|      2|  #endif
  225|      2|}
obmalloc.c:mi_prim_tls_slot:
  161|      2|static inline void* mi_prim_tls_slot(size_t slot) mi_attr_noexcept {
  162|      2|  void* res;
  163|      2|  const size_t ofs = (slot*sizeof(void*));
  164|       |  #if defined(__i386__)
  165|       |    __asm__("movl %%gs:%1, %0" : "=r" (res) : "m" (*((void**)ofs)) : );  // x86 32-bit always uses GS
  166|       |  #elif defined(__APPLE__) && defined(__x86_64__)
  167|       |    __asm__("movq %%gs:%1, %0" : "=r" (res) : "m" (*((void**)ofs)) : );  // x86_64 macOSX uses GS
  168|       |  #elif defined(__x86_64__) && (MI_INTPTR_SIZE==4)
  169|       |    __asm__("movl %%fs:%1, %0" : "=r" (res) : "m" (*((void**)ofs)) : );  // x32 ABI
  170|       |  #elif defined(__x86_64__)
  171|       |    __asm__("movq %%fs:%1, %0" : "=r" (res) : "m" (*((void**)ofs)) : );  // x86_64 Linux, BSD uses FS
  172|       |  #elif defined(__arm__)
  173|       |    void** tcb; MI_UNUSED(ofs);
  174|       |    __asm__ volatile ("mrc p15, 0, %0, c13, c0, 3\nbic %0, %0, #3" : "=r" (tcb));
  175|       |    res = tcb[slot];
  176|       |  #elif defined(__aarch64__)
  177|       |    void** tcb; MI_UNUSED(ofs);
  178|       |    #if defined(__APPLE__) // M1, issue #343
  179|       |    __asm__ volatile ("mrs %0, tpidrro_el0\nbic %0, %0, #7" : "=r" (tcb));
  180|       |    #else
  181|       |    __asm__ volatile ("mrs %0, tpidr_el0" : "=r" (tcb));
  182|       |    #endif
  183|       |    res = tcb[slot];
  184|       |  #endif
  185|      2|  return res;
  186|      2|}

listobject.c:_PyIndex_Check:
   14|      3|{
   15|      3|    PyNumberMethods *tp_as_number = Py_TYPE(obj)->tp_as_number;
  ------------------
  |  |  213|      3|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   16|      3|    return (tp_as_number != NULL && tp_as_number->nb_index != NULL);
  ------------------
  |  Branch (16:13): [True: 1, False: 2]
  |  Branch (16:37): [True: 1, False: 0]
  ------------------
   17|      3|}
tupleobject.c:_PyIndex_Check:
   14|      8|{
   15|      8|    PyNumberMethods *tp_as_number = Py_TYPE(obj)->tp_as_number;
  ------------------
  |  |  213|      8|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      8|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   16|      8|    return (tp_as_number != NULL && tp_as_number->nb_index != NULL);
  ------------------
  |  Branch (16:13): [True: 8, False: 0]
  |  Branch (16:37): [True: 8, False: 0]
  ------------------
   17|      8|}
unicodeobject.c:_PyIndex_Check:
   14|      2|{
   15|      2|    PyNumberMethods *tp_as_number = Py_TYPE(obj)->tp_as_number;
  ------------------
  |  |  213|      2|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   16|      2|    return (tp_as_number != NULL && tp_as_number->nb_index != NULL);
  ------------------
  |  Branch (16:13): [True: 1, False: 1]
  |  Branch (16:37): [True: 1, False: 0]
  ------------------
   17|      2|}
abstract.c:_PyIndex_Check:
   14|     24|{
   15|     24|    PyNumberMethods *tp_as_number = Py_TYPE(obj)->tp_as_number;
  ------------------
  |  |  213|     24|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     24|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     24|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   16|     24|    return (tp_as_number != NULL && tp_as_number->nb_index != NULL);
  ------------------
  |  Branch (16:13): [True: 24, False: 0]
  |  Branch (16:37): [True: 1, False: 23]
  ------------------
   17|     24|}

ceval.c:backoff_counter_triggers:
  106|  4.82k|{
  107|       |    /* Test whether the value is zero and the backoff is not UNREACHABLE_BACKOFF */
  108|  4.82k|    return counter.value_and_backoff < UNREACHABLE_BACKOFF;
  ------------------
  |  |   40|  4.82k|#define UNREACHABLE_BACKOFF 7
  ------------------
  109|  4.82k|}
ceval.c:forge_backoff_counter:
   72|  4.82k|{
   73|  4.82k|    _Py_BackoffCounter result;
   74|  4.82k|    result.value_and_backoff = counter;
   75|  4.82k|    return result;
   76|  4.82k|}
ceval.c:advance_backoff_counter:
   98|  3.90k|{
   99|  3.90k|    _Py_BackoffCounter result;
  100|  3.90k|    result.value_and_backoff = counter.value_and_backoff - (1 << BACKOFF_BITS);
  ------------------
  |  |   37|  3.90k|#define BACKOFF_BITS 3
  ------------------
  101|  3.90k|    return result;
  102|  3.90k|}
specialize.c:initial_jump_backoff_counter:
  132|    743|{
  133|    743|    return make_backoff_counter(
  134|    743|        opt_config->jump_backward_initial_value,
  135|    743|        opt_config->jump_backward_initial_backoff);
  136|    743|}
specialize.c:make_backoff_counter:
   62|  3.35k|{
   63|  3.35k|    assert(backoff <= UNREACHABLE_BACKOFF);
  ------------------
  |  Branch (63:5): [True: 3.35k, False: 0]
  ------------------
   64|  3.35k|    assert(value <= MAX_VALUE);
  ------------------
  |  Branch (64:5): [True: 3.35k, False: 0]
  ------------------
   65|  3.35k|    return ((_Py_BackoffCounter){
   66|  3.35k|        .value_and_backoff = MAKE_VALUE_AND_BACKOFF(value, backoff)
  ------------------
  |  |   44|  3.35k|    ((uint16_t)(((value) << BACKOFF_BITS) | (backoff)))
  |  |  ------------------
  |  |  |  |   37|  3.35k|#define BACKOFF_BITS 3
  |  |  ------------------
  ------------------
   67|  3.35k|    });
   68|  3.35k|}
specialize.c:initial_resume_backoff_counter:
  146|    743|{
  147|    743|    return make_backoff_counter(
  148|    743|        opt_config->resume_initial_value,
  149|    743|        opt_config->resume_initial_backoff);
  150|    743|}
specialize.c:restart_backoff_counter:
   80|     74|{
   81|     74|    uint16_t backoff = counter.value_and_backoff & BACKOFF_MASK;
  ------------------
  |  |   38|     74|#define BACKOFF_MASK 7
  ------------------
   82|     74|    assert(backoff <= MAX_BACKOFF);
  ------------------
  |  Branch (82:5): [True: 74, False: 0]
  ------------------
   83|     74|    return ((_Py_BackoffCounter){
   84|     74|        .value_and_backoff = value_and_backoff_next[backoff]
   85|     74|    });
   86|     74|}

dictobject.c:_Py_bit_length:
  147|    657|{
  148|    657|#if (defined(__clang__) || defined(__GNUC__))
  149|    657|    if (x != 0) {
  ------------------
  |  Branch (149:9): [True: 657, False: 0]
  ------------------
  150|       |        // __builtin_clzl() is available since GCC 3.4.
  151|       |        // Undefined behavior for x == 0.
  152|    657|        return (int)sizeof(unsigned long) * 8 - __builtin_clzl(x);
  153|    657|    }
  154|      0|    else {
  155|      0|        return 0;
  156|      0|    }
  157|       |#elif defined(_MSC_VER)
  158|       |    // _BitScanReverse() is documented to search 32 bits.
  159|       |    Py_BUILD_ASSERT(sizeof(unsigned long) <= 4);
  160|       |    unsigned long msb;
  161|       |    if (_BitScanReverse(&msb, x)) {
  162|       |        return (int)msb + 1;
  163|       |    }
  164|       |    else {
  165|       |        return 0;
  166|       |    }
  167|       |#else
  168|       |    const int BIT_LENGTH_TABLE[32] = {
  169|       |        0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4,
  170|       |        5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5
  171|       |    };
  172|       |    int msb = 0;
  173|       |    while (x >= 32) {
  174|       |        msb += 6;
  175|       |        x >>= 6;
  176|       |    }
  177|       |    msb += BIT_LENGTH_TABLE[x];
  178|       |    return msb;
  179|       |#endif
  180|    657|}

bytesobject.c:_PyBytesWriter_GetData:
   99|      1|{
  100|      1|    if (writer->obj == NULL) {
  ------------------
  |  Branch (100:9): [True: 1, False: 0]
  ------------------
  101|      1|        return writer->small_buffer;
  102|      1|    }
  103|      0|    else if (writer->use_bytearray) {
  ------------------
  |  Branch (103:14): [True: 0, False: 0]
  ------------------
  104|      0|        return PyByteArray_AS_STRING(writer->obj);
  ------------------
  |  |   28|      0|#define PyByteArray_AS_STRING(self) PyByteArray_AS_STRING(_PyObject_CAST(self))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  105|      0|    }
  106|      0|    else {
  107|      0|        return PyBytes_AS_STRING(writer->obj);
  ------------------
  |  |   27|      0|#define PyBytes_AS_STRING(op) PyBytes_AS_STRING(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  108|      0|    }
  109|      1|}

object.c:_PyObject_CallNoArgs:
  157|      1|_PyObject_CallNoArgs(PyObject *func) {
  158|      1|    EVAL_CALL_STAT_INC_IF_FUNCTION(EVAL_CALL_API, func);
  ------------------
  |  |   80|      1|#define EVAL_CALL_STAT_INC_IF_FUNCTION(name, callable) ((void)0)
  ------------------
  159|      1|    PyThreadState *tstate = _PyThreadState_GET();
  160|      1|    return _PyObject_VectorcallTstate(tstate, func, NULL, 0, NULL);
  161|      1|}
object.c:_PyObject_VectorcallTstate:
  132|      1|{
  133|      1|    vectorcallfunc func;
  134|      1|    PyObject *res;
  135|       |
  136|      1|    assert(kwnames == NULL || PyTuple_Check(kwnames));
  ------------------
  |  Branch (136:5): [True: 1, False: 0]
  |  Branch (136:5): [True: 0, False: 0]
  ------------------
  137|      1|    assert(args != NULL || PyVectorcall_NARGS(nargsf) == 0);
  ------------------
  |  Branch (137:5): [True: 0, False: 1]
  |  Branch (137:5): [True: 1, False: 0]
  ------------------
  138|       |
  139|      1|    func = _PyVectorcall_FunctionInline(callable);
  140|      1|    if (func == NULL) {
  ------------------
  |  Branch (140:9): [True: 0, False: 1]
  ------------------
  141|      0|        Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
  ------------------
  |  |   37|      0|#define PyVectorcall_NARGS(n) _PyVectorcall_NARGS(n)
  ------------------
  142|      0|        return _PyObject_MakeTpCall(tstate, callable, args, nargs, kwnames);
  143|      0|    }
  144|      1|    res = func(callable, args, nargsf, kwnames);
  145|       |    return _Py_CheckFunctionResult(tstate, callable, res, NULL);
  146|      1|}
object.c:_PyVectorcall_FunctionInline:
   92|      1|{
   93|      1|    assert(callable != NULL);
  ------------------
  |  Branch (93:5): [True: 1, False: 0]
  ------------------
   94|       |
   95|      1|    PyTypeObject *tp = Py_TYPE(callable);
  ------------------
  |  |  213|      1|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   96|      1|    if (!PyType_HasFeature(tp, Py_TPFLAGS_HAVE_VECTORCALL)) {
  ------------------
  |  |  510|      1|#define Py_TPFLAGS_HAVE_VECTORCALL (1UL << 11)
  ------------------
  |  Branch (96:9): [True: 0, False: 1]
  ------------------
   97|      0|        return NULL;
   98|      0|    }
   99|      1|    assert(PyCallable_Check(callable));
  ------------------
  |  Branch (99:5): [True: 1, False: 0]
  ------------------
  100|       |
  101|      1|    Py_ssize_t offset = tp->tp_vectorcall_offset;
  102|      1|    assert(offset > 0);
  ------------------
  |  Branch (102:5): [True: 1, False: 0]
  ------------------
  103|       |
  104|      1|    vectorcallfunc ptr;
  105|      1|    memcpy(&ptr, (char *) callable + offset, sizeof(ptr));
  106|      1|    return ptr;
  107|      1|}
typeobject.c:_PyObject_VectorcallTstate:
  132|      4|{
  133|      4|    vectorcallfunc func;
  134|      4|    PyObject *res;
  135|       |
  136|      4|    assert(kwnames == NULL || PyTuple_Check(kwnames));
  ------------------
  |  Branch (136:5): [True: 4, False: 0]
  |  Branch (136:5): [True: 0, False: 0]
  ------------------
  137|      4|    assert(args != NULL || PyVectorcall_NARGS(nargsf) == 0);
  ------------------
  |  Branch (137:5): [True: 4, False: 0]
  |  Branch (137:5): [True: 0, False: 0]
  ------------------
  138|       |
  139|      4|    func = _PyVectorcall_FunctionInline(callable);
  140|      4|    if (func == NULL) {
  ------------------
  |  Branch (140:9): [True: 0, False: 4]
  ------------------
  141|      0|        Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
  ------------------
  |  |   37|      0|#define PyVectorcall_NARGS(n) _PyVectorcall_NARGS(n)
  ------------------
  142|      0|        return _PyObject_MakeTpCall(tstate, callable, args, nargs, kwnames);
  143|      0|    }
  144|      4|    res = func(callable, args, nargsf, kwnames);
  145|       |    return _Py_CheckFunctionResult(tstate, callable, res, NULL);
  146|      4|}
typeobject.c:_PyVectorcall_FunctionInline:
   92|      4|{
   93|      4|    assert(callable != NULL);
  ------------------
  |  Branch (93:5): [True: 4, False: 0]
  ------------------
   94|       |
   95|      4|    PyTypeObject *tp = Py_TYPE(callable);
  ------------------
  |  |  213|      4|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   96|      4|    if (!PyType_HasFeature(tp, Py_TPFLAGS_HAVE_VECTORCALL)) {
  ------------------
  |  |  510|      4|#define Py_TPFLAGS_HAVE_VECTORCALL (1UL << 11)
  ------------------
  |  Branch (96:9): [True: 0, False: 4]
  ------------------
   97|      0|        return NULL;
   98|      0|    }
   99|      4|    assert(PyCallable_Check(callable));
  ------------------
  |  Branch (99:5): [True: 4, False: 0]
  ------------------
  100|       |
  101|      4|    Py_ssize_t offset = tp->tp_vectorcall_offset;
  102|      4|    assert(offset > 0);
  ------------------
  |  Branch (102:5): [True: 4, False: 0]
  ------------------
  103|       |
  104|      4|    vectorcallfunc ptr;
  105|      4|    memcpy(&ptr, (char *) callable + offset, sizeof(ptr));
  106|      4|    return ptr;
  107|      4|}
abstract.c:_PyObject_CallNoArgs:
  157|     29|_PyObject_CallNoArgs(PyObject *func) {
  158|     29|    EVAL_CALL_STAT_INC_IF_FUNCTION(EVAL_CALL_API, func);
  ------------------
  |  |   80|     29|#define EVAL_CALL_STAT_INC_IF_FUNCTION(name, callable) ((void)0)
  ------------------
  159|     29|    PyThreadState *tstate = _PyThreadState_GET();
  160|     29|    return _PyObject_VectorcallTstate(tstate, func, NULL, 0, NULL);
  161|     29|}
abstract.c:_PyObject_VectorcallTstate:
  132|     29|{
  133|     29|    vectorcallfunc func;
  134|     29|    PyObject *res;
  135|       |
  136|     29|    assert(kwnames == NULL || PyTuple_Check(kwnames));
  ------------------
  |  Branch (136:5): [True: 29, False: 0]
  |  Branch (136:5): [True: 0, False: 0]
  ------------------
  137|     29|    assert(args != NULL || PyVectorcall_NARGS(nargsf) == 0);
  ------------------
  |  Branch (137:5): [True: 0, False: 29]
  |  Branch (137:5): [True: 29, False: 0]
  ------------------
  138|       |
  139|     29|    func = _PyVectorcall_FunctionInline(callable);
  140|     29|    if (func == NULL) {
  ------------------
  |  Branch (140:9): [True: 0, False: 29]
  ------------------
  141|      0|        Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
  ------------------
  |  |   37|      0|#define PyVectorcall_NARGS(n) _PyVectorcall_NARGS(n)
  ------------------
  142|      0|        return _PyObject_MakeTpCall(tstate, callable, args, nargs, kwnames);
  143|      0|    }
  144|     29|    res = func(callable, args, nargsf, kwnames);
  145|       |    return _Py_CheckFunctionResult(tstate, callable, res, NULL);
  146|     29|}
abstract.c:_PyVectorcall_FunctionInline:
   92|     29|{
   93|     29|    assert(callable != NULL);
  ------------------
  |  Branch (93:5): [True: 29, False: 0]
  ------------------
   94|       |
   95|     29|    PyTypeObject *tp = Py_TYPE(callable);
  ------------------
  |  |  213|     29|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     29|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     29|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   96|     29|    if (!PyType_HasFeature(tp, Py_TPFLAGS_HAVE_VECTORCALL)) {
  ------------------
  |  |  510|     29|#define Py_TPFLAGS_HAVE_VECTORCALL (1UL << 11)
  ------------------
  |  Branch (96:9): [True: 0, False: 29]
  ------------------
   97|      0|        return NULL;
   98|      0|    }
   99|     29|    assert(PyCallable_Check(callable));
  ------------------
  |  Branch (99:5): [True: 29, False: 0]
  ------------------
  100|       |
  101|     29|    Py_ssize_t offset = tp->tp_vectorcall_offset;
  102|     29|    assert(offset > 0);
  ------------------
  |  Branch (102:5): [True: 29, False: 0]
  ------------------
  103|       |
  104|     29|    vectorcallfunc ptr;
  105|     29|    memcpy(&ptr, (char *) callable + offset, sizeof(ptr));
  106|     29|    return ptr;
  107|     29|}
call.c:_PyObject_VectorcallTstate:
  132|  1.73k|{
  133|  1.73k|    vectorcallfunc func;
  134|  1.73k|    PyObject *res;
  135|       |
  136|  1.73k|    assert(kwnames == NULL || PyTuple_Check(kwnames));
  ------------------
  |  Branch (136:5): [True: 1.66k, False: 63]
  |  Branch (136:5): [True: 63, False: 0]
  ------------------
  137|  1.73k|    assert(args != NULL || PyVectorcall_NARGS(nargsf) == 0);
  ------------------
  |  Branch (137:5): [True: 1.71k, False: 19]
  |  Branch (137:5): [True: 19, False: 0]
  ------------------
  138|       |
  139|  1.73k|    func = _PyVectorcall_FunctionInline(callable);
  140|  1.73k|    if (func == NULL) {
  ------------------
  |  Branch (140:9): [True: 415, False: 1.31k]
  ------------------
  141|    415|        Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
  ------------------
  |  |   37|    415|#define PyVectorcall_NARGS(n) _PyVectorcall_NARGS(n)
  ------------------
  142|    415|        return _PyObject_MakeTpCall(tstate, callable, args, nargs, kwnames);
  143|    415|    }
  144|  1.31k|    res = func(callable, args, nargsf, kwnames);
  145|       |    return _Py_CheckFunctionResult(tstate, callable, res, NULL);
  146|  1.73k|}
call.c:_PyVectorcall_FunctionInline:
   92|  2.22k|{
   93|  2.22k|    assert(callable != NULL);
  ------------------
  |  Branch (93:5): [True: 2.22k, False: 0]
  ------------------
   94|       |
   95|  2.22k|    PyTypeObject *tp = Py_TYPE(callable);
  ------------------
  |  |  213|  2.22k|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  2.22k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.22k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   96|  2.22k|    if (!PyType_HasFeature(tp, Py_TPFLAGS_HAVE_VECTORCALL)) {
  ------------------
  |  |  510|  2.22k|#define Py_TPFLAGS_HAVE_VECTORCALL (1UL << 11)
  ------------------
  |  Branch (96:9): [True: 30, False: 2.19k]
  ------------------
   97|     30|        return NULL;
   98|     30|    }
   99|  2.22k|    assert(PyCallable_Check(callable));
  ------------------
  |  Branch (99:5): [True: 2.19k, False: 0]
  ------------------
  100|       |
  101|  2.19k|    Py_ssize_t offset = tp->tp_vectorcall_offset;
  102|  2.19k|    assert(offset > 0);
  ------------------
  |  Branch (102:5): [True: 2.19k, False: 0]
  ------------------
  103|       |
  104|  2.19k|    vectorcallfunc ptr;
  105|  2.19k|    memcpy(&ptr, (char *) callable + offset, sizeof(ptr));
  106|  2.19k|    return ptr;
  107|  2.19k|}
call.c:_PyObject_CallNoArgsTstate:
  150|     19|_PyObject_CallNoArgsTstate(PyThreadState *tstate, PyObject *func) {
  151|     19|    return _PyObject_VectorcallTstate(tstate, func, NULL, 0, NULL);
  152|     19|}
enumobject.c:_PyObject_CallNoArgs:
  157|      3|_PyObject_CallNoArgs(PyObject *func) {
  158|      3|    EVAL_CALL_STAT_INC_IF_FUNCTION(EVAL_CALL_API, func);
  ------------------
  |  |   80|      3|#define EVAL_CALL_STAT_INC_IF_FUNCTION(name, callable) ((void)0)
  ------------------
  159|      3|    PyThreadState *tstate = _PyThreadState_GET();
  160|      3|    return _PyObject_VectorcallTstate(tstate, func, NULL, 0, NULL);
  161|      3|}
enumobject.c:_PyObject_VectorcallTstate:
  132|      3|{
  133|      3|    vectorcallfunc func;
  134|      3|    PyObject *res;
  135|       |
  136|      3|    assert(kwnames == NULL || PyTuple_Check(kwnames));
  ------------------
  |  Branch (136:5): [True: 3, False: 0]
  |  Branch (136:5): [True: 0, False: 0]
  ------------------
  137|      3|    assert(args != NULL || PyVectorcall_NARGS(nargsf) == 0);
  ------------------
  |  Branch (137:5): [True: 0, False: 3]
  |  Branch (137:5): [True: 3, False: 0]
  ------------------
  138|       |
  139|      3|    func = _PyVectorcall_FunctionInline(callable);
  140|      3|    if (func == NULL) {
  ------------------
  |  Branch (140:9): [True: 0, False: 3]
  ------------------
  141|      0|        Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
  ------------------
  |  |   37|      0|#define PyVectorcall_NARGS(n) _PyVectorcall_NARGS(n)
  ------------------
  142|      0|        return _PyObject_MakeTpCall(tstate, callable, args, nargs, kwnames);
  143|      0|    }
  144|      3|    res = func(callable, args, nargsf, kwnames);
  145|       |    return _Py_CheckFunctionResult(tstate, callable, res, NULL);
  146|      3|}
enumobject.c:_PyVectorcall_FunctionInline:
   92|      3|{
   93|      3|    assert(callable != NULL);
  ------------------
  |  Branch (93:5): [True: 3, False: 0]
  ------------------
   94|       |
   95|      3|    PyTypeObject *tp = Py_TYPE(callable);
  ------------------
  |  |  213|      3|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   96|      3|    if (!PyType_HasFeature(tp, Py_TPFLAGS_HAVE_VECTORCALL)) {
  ------------------
  |  |  510|      3|#define Py_TPFLAGS_HAVE_VECTORCALL (1UL << 11)
  ------------------
  |  Branch (96:9): [True: 0, False: 3]
  ------------------
   97|      0|        return NULL;
   98|      0|    }
   99|      3|    assert(PyCallable_Check(callable));
  ------------------
  |  Branch (99:5): [True: 3, False: 0]
  ------------------
  100|       |
  101|      3|    Py_ssize_t offset = tp->tp_vectorcall_offset;
  102|      3|    assert(offset > 0);
  ------------------
  |  Branch (102:5): [True: 3, False: 0]
  ------------------
  103|       |
  104|      3|    vectorcallfunc ptr;
  105|      3|    memcpy(&ptr, (char *) callable + offset, sizeof(ptr));
  106|      3|    return ptr;
  107|      3|}

typeobject.c:PyCell_GetRef:
   39|      4|{
   40|      4|    PyObject *res;
   41|      4|    Py_BEGIN_CRITICAL_SECTION(cell);
  ------------------
  |  |   51|      4|    {
  ------------------
   42|       |#ifdef Py_GIL_DISABLED
   43|       |    res = _Py_XNewRefWithLock(cell->ob_ref);
   44|       |#else
   45|      4|    res = Py_XNewRef(cell->ob_ref);
  ------------------
  |  |  551|      4|#  define Py_XNewRef(obj) _Py_XNewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   46|      4|#endif
   47|      4|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|      4|    }
  ------------------
   48|      4|    return res;
   49|      4|}
bltinmodule.c:PyCell_GetRef:
   39|      6|{
   40|      6|    PyObject *res;
   41|      6|    Py_BEGIN_CRITICAL_SECTION(cell);
  ------------------
  |  |   51|      6|    {
  ------------------
   42|       |#ifdef Py_GIL_DISABLED
   43|       |    res = _Py_XNewRefWithLock(cell->ob_ref);
   44|       |#else
   45|      6|    res = Py_XNewRef(cell->ob_ref);
  ------------------
  |  |  551|      6|#  define Py_XNewRef(obj) _Py_XNewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      6|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   46|      6|#endif
   47|      6|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|      6|    }
  ------------------
   48|      6|    return res;
   49|      6|}
ceval.c:PyCell_SwapTakeRef:
   20|     91|{
   21|     91|    PyObject *old_value;
   22|     91|    Py_BEGIN_CRITICAL_SECTION(cell);
  ------------------
  |  |   51|     91|    {
  ------------------
   23|     91|    old_value = cell->ob_ref;
   24|     91|    FT_ATOMIC_STORE_PTR_RELEASE(cell->ob_ref, value);
  ------------------
  |  |  164|     91|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  ------------------
   25|     91|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|     91|    }
  ------------------
   26|     91|    return old_value;
   27|     91|}
ceval.c:_PyCell_GetStackRef:
   53|    191|{
   54|    191|    PyObject *value;
   55|       |#ifdef Py_GIL_DISABLED
   56|       |    value = _PyObject_CAST(_Py_atomic_load_ptr(&cell->ob_ref));
   57|       |    if (value == NULL) {
   58|       |        return PyStackRef_NULL;
   59|       |    }
   60|       |    _PyStackRef ref;
   61|       |    if (_Py_TryIncrefCompareStackRef(&cell->ob_ref, value, &ref)) {
   62|       |        return ref;
   63|       |    }
   64|       |#endif
   65|    191|    value = PyCell_GetRef(cell);
   66|    191|    if (value == NULL) {
  ------------------
  |  Branch (66:9): [True: 0, False: 191]
  ------------------
   67|      0|        return PyStackRef_NULL;
   68|      0|    }
   69|    191|    return PyStackRef_FromPyObjectSteal(value);
   70|    191|}
ceval.c:PyCell_GetRef:
   39|    191|{
   40|    191|    PyObject *res;
   41|    191|    Py_BEGIN_CRITICAL_SECTION(cell);
  ------------------
  |  |   51|    191|    {
  ------------------
   42|       |#ifdef Py_GIL_DISABLED
   43|       |    res = _Py_XNewRefWithLock(cell->ob_ref);
   44|       |#else
   45|    191|    res = Py_XNewRef(cell->ob_ref);
  ------------------
  |  |  551|    191|#  define Py_XNewRef(obj) _Py_XNewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    191|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    191|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   46|    191|#endif
   47|    191|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|    191|    }
  ------------------
   48|    191|    return res;
   49|    191|}
ceval.c:PyCell_SetTakeRef:
   31|     91|{
   32|     91|    PyObject *old_value = PyCell_SwapTakeRef(cell, value);
   33|     91|    Py_XDECREF(old_value);
  ------------------
  |  |  524|     91|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     91|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     91|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   34|     91|}
cellobject.c:PyCell_SetTakeRef:
   31|     80|{
   32|     80|    PyObject *old_value = PyCell_SwapTakeRef(cell, value);
   33|     80|    Py_XDECREF(old_value);
  ------------------
  |  |  524|     80|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     80|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     80|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   34|     80|}
cellobject.c:PyCell_SwapTakeRef:
   20|     80|{
   21|     80|    PyObject *old_value;
   22|     80|    Py_BEGIN_CRITICAL_SECTION(cell);
  ------------------
  |  |   51|     80|    {
  ------------------
   23|     80|    old_value = cell->ob_ref;
   24|     80|    FT_ATOMIC_STORE_PTR_RELEASE(cell->ob_ref, value);
  ------------------
  |  |  164|     80|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  ------------------
   25|     80|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|     80|    }
  ------------------
   26|     80|    return old_value;
   27|     80|}

object.c:_Py_EnterRecursiveCallTstate:
  234|  4.08k|                                               const char *where) {
  235|  4.08k|    return (_Py_MakeRecCheck(tstate) && _Py_CheckRecursiveCall(tstate, where));
  ------------------
  |  Branch (235:13): [True: 0, False: 4.08k]
  |  Branch (235:41): [True: 0, False: 0]
  ------------------
  236|  4.08k|}
object.c:_Py_MakeRecCheck:
  211|  4.08k|static inline int _Py_MakeRecCheck(PyThreadState *tstate)  {
  212|  4.08k|    uintptr_t here_addr = _Py_get_machine_stack_pointer();
  213|  4.08k|    _PyThreadStateImpl *_tstate = (_PyThreadStateImpl *)tstate;
  214|       |    // Overflow if stack pointer is between soft limit and the base of the hardware stack.
  215|       |    // If it is below the hardware stack base, assume that we have the wrong stack limits, and do nothing.
  216|       |    // We could have the wrong stack limits because of limited platform support, or user-space threads.
  217|  4.08k|#if _Py_STACK_GROWS_DOWN
  218|  4.08k|    return here_addr < _tstate->c_stack_soft_limit && here_addr >= _tstate->c_stack_soft_limit - 2 * _PyOS_STACK_MARGIN_BYTES;
  ------------------
  |  |   55|      0|#define _PyOS_STACK_MARGIN_BYTES (_PyOS_STACK_MARGIN * sizeof(void *))
  |  |  ------------------
  |  |  |  |   54|      0|#define _PyOS_STACK_MARGIN (1 << _PyOS_LOG2_STACK_MARGIN)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      0|#  define _PyOS_LOG2_STACK_MARGIN 11
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (218:12): [True: 0, False: 4.08k]
  |  Branch (218:55): [True: 0, False: 0]
  ------------------
  219|       |#else
  220|       |    return here_addr > _tstate->c_stack_soft_limit && here_addr <= _tstate->c_stack_soft_limit + 2 * _PyOS_STACK_MARGIN_BYTES;
  221|       |#endif
  222|  4.08k|}
object.c:_Py_LeaveRecursiveCallTstate:
  243|  4.08k|static inline void _Py_LeaveRecursiveCallTstate(PyThreadState *tstate) {
  244|  4.08k|    (void)tstate;
  245|  4.08k|}
ceval.c:_PyEval_EvalFrame:
  119|    418|{
  120|    418|    EVAL_CALL_STAT_INC(EVAL_CALL_TOTAL);
  ------------------
  |  |   79|    418|#define EVAL_CALL_STAT_INC(name) ((void)0)
  ------------------
  121|    418|    if (tstate->interp->eval_frame == NULL) {
  ------------------
  |  Branch (121:9): [True: 418, False: 0]
  ------------------
  122|    418|        return _PyEval_EvalFrameDefault(tstate, frame, throwflag);
  123|    418|    }
  124|      0|    return tstate->interp->eval_frame(tstate, frame, throwflag);
  125|    418|}
ceval.c:_Py_EnterRecursiveCallTstate:
  234|    452|                                               const char *where) {
  235|    452|    return (_Py_MakeRecCheck(tstate) && _Py_CheckRecursiveCall(tstate, where));
  ------------------
  |  Branch (235:13): [True: 0, False: 452]
  |  Branch (235:41): [True: 0, False: 0]
  ------------------
  236|    452|}
ceval.c:_Py_MakeRecCheck:
  211|    452|static inline int _Py_MakeRecCheck(PyThreadState *tstate)  {
  212|    452|    uintptr_t here_addr = _Py_get_machine_stack_pointer();
  213|    452|    _PyThreadStateImpl *_tstate = (_PyThreadStateImpl *)tstate;
  214|       |    // Overflow if stack pointer is between soft limit and the base of the hardware stack.
  215|       |    // If it is below the hardware stack base, assume that we have the wrong stack limits, and do nothing.
  216|       |    // We could have the wrong stack limits because of limited platform support, or user-space threads.
  217|    452|#if _Py_STACK_GROWS_DOWN
  218|    452|    return here_addr < _tstate->c_stack_soft_limit && here_addr >= _tstate->c_stack_soft_limit - 2 * _PyOS_STACK_MARGIN_BYTES;
  ------------------
  |  |   55|      0|#define _PyOS_STACK_MARGIN_BYTES (_PyOS_STACK_MARGIN * sizeof(void *))
  |  |  ------------------
  |  |  |  |   54|      0|#define _PyOS_STACK_MARGIN (1 << _PyOS_LOG2_STACK_MARGIN)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      0|#  define _PyOS_LOG2_STACK_MARGIN 11
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (218:12): [True: 0, False: 452]
  |  Branch (218:55): [True: 0, False: 0]
  ------------------
  219|       |#else
  220|       |    return here_addr > _tstate->c_stack_soft_limit && here_addr <= _tstate->c_stack_soft_limit + 2 * _PyOS_STACK_MARGIN_BYTES;
  221|       |#endif
  222|    452|}
ceval.c:_Py_LeaveRecursiveCallTstate:
  243|    254|static inline void _Py_LeaveRecursiveCallTstate(PyThreadState *tstate) {
  244|    254|    (void)tstate;
  245|    254|}
gc.c:_Py_eval_breaker_bit_is_set:
  373|  1.50k|{
  374|  1.50k|    uintptr_t b = _Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker);
  375|  1.50k|    return (b & bit) != 0;
  376|  1.50k|}
gc.c:_Py_set_eval_breaker_bit:
  361|      2|{
  362|      2|    _Py_atomic_or_uintptr(&tstate->eval_breaker, bit);
  363|      2|}
ceval_gil.c:_Py_eval_breaker_bit_is_set:
  373|    327|{
  374|    327|    uintptr_t b = _Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker);
  375|    327|    return (b & bit) != 0;
  376|    327|}
ceval_gil.c:_Py_unset_eval_breaker_bit:
  367|    330|{
  368|    330|    _Py_atomic_and_uintptr(&tstate->eval_breaker, ~bit);
  369|    330|}
abstract.c:_Py_EnterRecursiveCallTstate:
  234|     34|                                               const char *where) {
  235|     34|    return (_Py_MakeRecCheck(tstate) && _Py_CheckRecursiveCall(tstate, where));
  ------------------
  |  Branch (235:13): [True: 0, False: 34]
  |  Branch (235:41): [True: 0, False: 0]
  ------------------
  236|     34|}
abstract.c:_Py_MakeRecCheck:
  211|     34|static inline int _Py_MakeRecCheck(PyThreadState *tstate)  {
  212|     34|    uintptr_t here_addr = _Py_get_machine_stack_pointer();
  213|     34|    _PyThreadStateImpl *_tstate = (_PyThreadStateImpl *)tstate;
  214|       |    // Overflow if stack pointer is between soft limit and the base of the hardware stack.
  215|       |    // If it is below the hardware stack base, assume that we have the wrong stack limits, and do nothing.
  216|       |    // We could have the wrong stack limits because of limited platform support, or user-space threads.
  217|     34|#if _Py_STACK_GROWS_DOWN
  218|     34|    return here_addr < _tstate->c_stack_soft_limit && here_addr >= _tstate->c_stack_soft_limit - 2 * _PyOS_STACK_MARGIN_BYTES;
  ------------------
  |  |   55|      0|#define _PyOS_STACK_MARGIN_BYTES (_PyOS_STACK_MARGIN * sizeof(void *))
  |  |  ------------------
  |  |  |  |   54|      0|#define _PyOS_STACK_MARGIN (1 << _PyOS_LOG2_STACK_MARGIN)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      0|#  define _PyOS_LOG2_STACK_MARGIN 11
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (218:12): [True: 0, False: 34]
  |  Branch (218:55): [True: 0, False: 0]
  ------------------
  219|       |#else
  220|       |    return here_addr > _tstate->c_stack_soft_limit && here_addr <= _tstate->c_stack_soft_limit + 2 * _PyOS_STACK_MARGIN_BYTES;
  221|       |#endif
  222|     34|}
abstract.c:_Py_LeaveRecursiveCallTstate:
  243|     34|static inline void _Py_LeaveRecursiveCallTstate(PyThreadState *tstate) {
  244|     34|    (void)tstate;
  245|     34|}
call.c:_Py_EnterRecursiveCallTstate:
  234|    515|                                               const char *where) {
  235|    515|    return (_Py_MakeRecCheck(tstate) && _Py_CheckRecursiveCall(tstate, where));
  ------------------
  |  Branch (235:13): [True: 0, False: 515]
  |  Branch (235:41): [True: 0, False: 0]
  ------------------
  236|    515|}
call.c:_Py_MakeRecCheck:
  211|    515|static inline int _Py_MakeRecCheck(PyThreadState *tstate)  {
  212|    515|    uintptr_t here_addr = _Py_get_machine_stack_pointer();
  213|    515|    _PyThreadStateImpl *_tstate = (_PyThreadStateImpl *)tstate;
  214|       |    // Overflow if stack pointer is between soft limit and the base of the hardware stack.
  215|       |    // If it is below the hardware stack base, assume that we have the wrong stack limits, and do nothing.
  216|       |    // We could have the wrong stack limits because of limited platform support, or user-space threads.
  217|    515|#if _Py_STACK_GROWS_DOWN
  218|    515|    return here_addr < _tstate->c_stack_soft_limit && here_addr >= _tstate->c_stack_soft_limit - 2 * _PyOS_STACK_MARGIN_BYTES;
  ------------------
  |  |   55|      0|#define _PyOS_STACK_MARGIN_BYTES (_PyOS_STACK_MARGIN * sizeof(void *))
  |  |  ------------------
  |  |  |  |   54|      0|#define _PyOS_STACK_MARGIN (1 << _PyOS_LOG2_STACK_MARGIN)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      0|#  define _PyOS_LOG2_STACK_MARGIN 11
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (218:12): [True: 0, False: 515]
  |  Branch (218:55): [True: 0, False: 0]
  ------------------
  219|       |#else
  220|       |    return here_addr > _tstate->c_stack_soft_limit && here_addr <= _tstate->c_stack_soft_limit + 2 * _PyOS_STACK_MARGIN_BYTES;
  221|       |#endif
  222|    515|}
call.c:_Py_LeaveRecursiveCallTstate:
  243|    515|static inline void _Py_LeaveRecursiveCallTstate(PyThreadState *tstate) {
  244|    515|    (void)tstate;
  245|    515|}
descrobject.c:_Py_EnterRecursiveCallTstate:
  234|    305|                                               const char *where) {
  235|    305|    return (_Py_MakeRecCheck(tstate) && _Py_CheckRecursiveCall(tstate, where));
  ------------------
  |  Branch (235:13): [True: 0, False: 305]
  |  Branch (235:41): [True: 0, False: 0]
  ------------------
  236|    305|}
descrobject.c:_Py_MakeRecCheck:
  211|    305|static inline int _Py_MakeRecCheck(PyThreadState *tstate)  {
  212|    305|    uintptr_t here_addr = _Py_get_machine_stack_pointer();
  213|    305|    _PyThreadStateImpl *_tstate = (_PyThreadStateImpl *)tstate;
  214|       |    // Overflow if stack pointer is between soft limit and the base of the hardware stack.
  215|       |    // If it is below the hardware stack base, assume that we have the wrong stack limits, and do nothing.
  216|       |    // We could have the wrong stack limits because of limited platform support, or user-space threads.
  217|    305|#if _Py_STACK_GROWS_DOWN
  218|    305|    return here_addr < _tstate->c_stack_soft_limit && here_addr >= _tstate->c_stack_soft_limit - 2 * _PyOS_STACK_MARGIN_BYTES;
  ------------------
  |  |   55|      0|#define _PyOS_STACK_MARGIN_BYTES (_PyOS_STACK_MARGIN * sizeof(void *))
  |  |  ------------------
  |  |  |  |   54|      0|#define _PyOS_STACK_MARGIN (1 << _PyOS_LOG2_STACK_MARGIN)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      0|#  define _PyOS_LOG2_STACK_MARGIN 11
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (218:12): [True: 0, False: 305]
  |  Branch (218:55): [True: 0, False: 0]
  ------------------
  219|       |#else
  220|       |    return here_addr > _tstate->c_stack_soft_limit && here_addr <= _tstate->c_stack_soft_limit + 2 * _PyOS_STACK_MARGIN_BYTES;
  221|       |#endif
  222|    305|}
descrobject.c:_Py_LeaveRecursiveCallTstate:
  243|    305|static inline void _Py_LeaveRecursiveCallTstate(PyThreadState *tstate) {
  244|    305|    (void)tstate;
  245|    305|}
genobject.c:_PyEval_EvalFrame:
  119|     34|{
  120|     34|    EVAL_CALL_STAT_INC(EVAL_CALL_TOTAL);
  ------------------
  |  |   79|     34|#define EVAL_CALL_STAT_INC(name) ((void)0)
  ------------------
  121|     34|    if (tstate->interp->eval_frame == NULL) {
  ------------------
  |  Branch (121:9): [True: 34, False: 0]
  ------------------
  122|     34|        return _PyEval_EvalFrameDefault(tstate, frame, throwflag);
  123|     34|    }
  124|      0|    return tstate->interp->eval_frame(tstate, frame, throwflag);
  125|     34|}
methodobject.c:_Py_EnterRecursiveCallTstate:
  234|    814|                                               const char *where) {
  235|    814|    return (_Py_MakeRecCheck(tstate) && _Py_CheckRecursiveCall(tstate, where));
  ------------------
  |  Branch (235:13): [True: 0, False: 814]
  |  Branch (235:41): [True: 0, False: 0]
  ------------------
  236|    814|}
methodobject.c:_Py_MakeRecCheck:
  211|    814|static inline int _Py_MakeRecCheck(PyThreadState *tstate)  {
  212|    814|    uintptr_t here_addr = _Py_get_machine_stack_pointer();
  213|    814|    _PyThreadStateImpl *_tstate = (_PyThreadStateImpl *)tstate;
  214|       |    // Overflow if stack pointer is between soft limit and the base of the hardware stack.
  215|       |    // If it is below the hardware stack base, assume that we have the wrong stack limits, and do nothing.
  216|       |    // We could have the wrong stack limits because of limited platform support, or user-space threads.
  217|    814|#if _Py_STACK_GROWS_DOWN
  218|    814|    return here_addr < _tstate->c_stack_soft_limit && here_addr >= _tstate->c_stack_soft_limit - 2 * _PyOS_STACK_MARGIN_BYTES;
  ------------------
  |  |   55|      0|#define _PyOS_STACK_MARGIN_BYTES (_PyOS_STACK_MARGIN * sizeof(void *))
  |  |  ------------------
  |  |  |  |   54|      0|#define _PyOS_STACK_MARGIN (1 << _PyOS_LOG2_STACK_MARGIN)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      0|#  define _PyOS_LOG2_STACK_MARGIN 11
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (218:12): [True: 0, False: 814]
  |  Branch (218:55): [True: 0, False: 0]
  ------------------
  219|       |#else
  220|       |    return here_addr > _tstate->c_stack_soft_limit && here_addr <= _tstate->c_stack_soft_limit + 2 * _PyOS_STACK_MARGIN_BYTES;
  221|       |#endif
  222|    814|}
methodobject.c:_Py_LeaveRecursiveCallTstate:
  243|    814|static inline void _Py_LeaveRecursiveCallTstate(PyThreadState *tstate) {
  244|    814|    (void)tstate;
  245|    814|}

typeobject.c:_PyLocals_GetKind:
  205|      8|{
  206|      8|    assert(PyBytes_Check(kinds));
  ------------------
  |  Branch (206:5): [True: 8, False: 0]
  ------------------
  207|      8|    assert(0 <= i && i < PyBytes_GET_SIZE(kinds));
  ------------------
  |  Branch (207:5): [True: 8, False: 0]
  |  Branch (207:5): [True: 8, False: 0]
  ------------------
  208|      8|    char *ptr = PyBytes_AS_STRING(kinds);
  ------------------
  |  |   27|      8|#define PyBytes_AS_STRING(op) PyBytes_AS_STRING(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      8|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  209|      8|    return (_PyLocals_Kind)(ptr[i]);
  210|      8|}
ceval.c:read_u16:
  364|  14.1k|{
  365|  14.1k|    return *p;
  366|  14.1k|}
ceval.c:read_obj:
  386|    691|{
  387|    691|    PyObject *val;
  388|    691|    memcpy(&val, p, sizeof(val));
  389|    691|    return val;
  390|    691|}
ceval.c:read_u32:
  370|  4.60k|{
  371|  4.60k|    uint32_t val;
  372|  4.60k|    memcpy(&val, p, sizeof(val));
  373|  4.60k|    return val;
  374|  4.60k|}
ceval.c:parse_varint:
  395|    614|parse_varint(unsigned char *p, int *result) {
  396|    614|    int val = p[0] & 63;
  397|    836|    while (p[0] & 64) {
  ------------------
  |  Branch (397:12): [True: 222, False: 614]
  ------------------
  398|    222|        p++;
  399|    222|        val = (val << 6) | (p[0] & 63);
  400|    222|    }
  401|    614|    *result = val;
  402|    614|    return p+1;
  403|    614|}
specialize.c:adaptive_counter_warmup:
  480|    743|adaptive_counter_warmup(void) {
  481|    743|    return adaptive_counter_bits(ADAPTIVE_WARMUP_VALUE,
  ------------------
  |  |  454|    743|#define ADAPTIVE_WARMUP_VALUE 1
  ------------------
  482|    743|                                 ADAPTIVE_WARMUP_BACKOFF);
  ------------------
  |  |  455|    743|#define ADAPTIVE_WARMUP_BACKOFF 1
  ------------------
  483|    743|}
specialize.c:adaptive_counter_bits:
  475|  1.86k|adaptive_counter_bits(uint16_t value, uint16_t backoff) {
  476|  1.86k|    return make_backoff_counter(value, backoff);
  477|  1.86k|}
specialize.c:adaptive_counter_cooldown:
  486|  1.12k|adaptive_counter_cooldown(void) {
  487|  1.12k|    return adaptive_counter_bits(ADAPTIVE_COOLDOWN_VALUE,
  ------------------
  |  |  463|  1.12k|#define ADAPTIVE_COOLDOWN_VALUE 52
  ------------------
  488|  1.12k|                                 ADAPTIVE_COOLDOWN_BACKOFF);
  ------------------
  |  |  464|  1.12k|#define ADAPTIVE_COOLDOWN_BACKOFF 0
  ------------------
  489|  1.12k|}
specialize.c:adaptive_counter_backoff:
  492|     74|adaptive_counter_backoff(_Py_BackoffCounter counter) {
  493|     74|    return restart_backoff_counter(counter);
  494|     74|}
specialize.c:write_u32:
  346|    339|{
  347|    339|    memcpy(p, &val, sizeof(val));
  348|    339|}
specialize.c:write_ptr:
  358|     59|{
  359|     59|    memcpy(p, &val, sizeof(val));
  360|     59|}
codeobject.c:_PyLocals_GetKind:
  205|  4.36k|{
  206|  4.36k|    assert(PyBytes_Check(kinds));
  ------------------
  |  Branch (206:5): [True: 4.36k, False: 0]
  ------------------
  207|  4.36k|    assert(0 <= i && i < PyBytes_GET_SIZE(kinds));
  ------------------
  |  Branch (207:5): [True: 4.36k, False: 0]
  |  Branch (207:5): [True: 4.36k, False: 0]
  ------------------
  208|  4.36k|    char *ptr = PyBytes_AS_STRING(kinds);
  ------------------
  |  |   27|  4.36k|#define PyBytes_AS_STRING(op) PyBytes_AS_STRING(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  4.36k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  4.36k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  209|  4.36k|    return (_PyLocals_Kind)(ptr[i]);
  210|  4.36k|}

dictobject.c:DK_ENTRIES:
  273|    780|static inline PyDictKeyEntry* DK_ENTRIES(PyDictKeysObject *dk) {
  274|    780|    assert(dk->dk_kind == DICT_KEYS_GENERAL);
  ------------------
  |  Branch (274:5): [True: 780, False: 0]
  ------------------
  275|    780|    return (PyDictKeyEntry*)_DK_ENTRIES(dk);
  276|    780|}
dictobject.c:_DK_ENTRIES:
  267|  81.8k|static inline void* _DK_ENTRIES(PyDictKeysObject *dk) {
  268|  81.8k|    int8_t *indices = (int8_t*)(dk->dk_indices);
  269|  81.8k|    size_t index = (size_t)1 << dk->dk_log2_index_bytes;
  270|  81.8k|    return (&indices[index]);
  271|  81.8k|}
dictobject.c:DK_UNICODE_ENTRIES:
  277|  26.9k|static inline PyDictUnicodeEntry* DK_UNICODE_ENTRIES(PyDictKeysObject *dk) {
  278|  26.9k|    assert(dk->dk_kind != DICT_KEYS_GENERAL);
  ------------------
  |  Branch (278:5): [True: 26.9k, False: 0]
  ------------------
  279|  26.9k|    return (PyDictUnicodeEntry*)_DK_ENTRIES(dk);
  280|  26.9k|}
dictobject.c:get_insertion_order_array:
  328|     54|{
  329|     54|    return (uint8_t *)&values->values[values->capacity];
  330|     54|}
dictobject.c:_PyDict_NotifyEvent:
  310|  12.9k|{
  311|  12.9k|    assert(Py_REFCNT((PyObject*)mp) > 0);
  ------------------
  |  Branch (311:5): [True: 12.9k, False: 0]
  ------------------
  312|  12.9k|    int watcher_bits = FT_ATOMIC_LOAD_UINT64_ACQUIRE(mp->_ma_watcher_tag) & DICT_WATCHER_MASK;
  ------------------
  |  |  160|  12.9k|#define FT_ATOMIC_LOAD_UINT64_ACQUIRE(value) value
  ------------------
                  int watcher_bits = FT_ATOMIC_LOAD_UINT64_ACQUIRE(mp->_ma_watcher_tag) & DICT_WATCHER_MASK;
  ------------------
  |  |  285|  12.9k|#define DICT_WATCHER_MASK ((1 << DICT_MAX_WATCHERS) - 1)
  |  |  ------------------
  |  |  |  |   11|  12.9k|#define DICT_MAX_WATCHERS 8
  |  |  ------------------
  ------------------
  313|  12.9k|    if (watcher_bits) {
  ------------------
  |  Branch (313:9): [True: 2.37k, False: 10.6k]
  ------------------
  314|  2.37k|        RARE_EVENT_STAT_INC(watched_dict_modification);
  ------------------
  |  |   89|  2.37k|#define RARE_EVENT_STAT_INC(name) ((void)0)
  ------------------
  315|  2.37k|        _PyDict_SendEvent(watcher_bits, event, mp, key, value);
  316|  2.37k|    }
  317|  12.9k|}
dictobject.c:_PyDictValues_AddToInsertionOrder:
  334|     54|{
  335|     54|    assert(ix < SHARED_KEYS_MAX_SIZE);
  ------------------
  |  Branch (335:5): [True: 54, False: 0]
  ------------------
  336|     54|    int size = values->size;
  337|     54|    uint8_t *array = get_insertion_order_array(values);
  338|     54|    assert(size < values->capacity);
  ------------------
  |  Branch (338:5): [True: 54, False: 0]
  ------------------
  339|     54|    assert(((uint8_t)ix) == ix);
  ------------------
  |  Branch (339:5): [True: 54, False: 0]
  ------------------
  340|     54|    array[size] = (uint8_t)ix;
  341|     54|    values->size = size+1;
  342|     54|}
dictobject.c:shared_keys_usable_size:
  350|    173|{
  351|       |    // dk_usable will decrease for each instance that is created and each
  352|       |    // value that is added.  dk_nentries will increase for each value that
  353|       |    // is added.  We want to always return the right value or larger.
  354|       |    // We therefore increase dk_nentries first and we decrease dk_usable
  355|       |    // second, and conversely here we read dk_usable first and dk_entries
  356|       |    // second (to avoid the case where we read entries before the increment
  357|       |    // and read usable after the decrement)
  358|    173|    Py_ssize_t dk_usable = FT_ATOMIC_LOAD_SSIZE_ACQUIRE(keys->dk_usable);
  ------------------
  |  |  148|    173|#define FT_ATOMIC_LOAD_SSIZE_ACQUIRE(value) value
  ------------------
  359|    173|    Py_ssize_t dk_nentries = FT_ATOMIC_LOAD_SSIZE_ACQUIRE(keys->dk_nentries);
  ------------------
  |  |  148|    173|#define FT_ATOMIC_LOAD_SSIZE_ACQUIRE(value) value
  ------------------
  360|    173|    return dk_nentries + dk_usable;
  361|    173|}
typeobject.c:_PyInlineValuesSize:
  365|    172|{
  366|    172|    PyDictKeysObject *keys = ((PyHeapTypeObject*)tp)->ht_cached_keys;
  367|    172|    assert(keys != NULL);
  ------------------
  |  Branch (367:5): [True: 172, False: 0]
  ------------------
  368|    172|    size_t size = shared_keys_usable_size(keys);
  369|    172|    size_t prefix_size = _Py_SIZE_ROUND_UP(size, sizeof(PyObject *));
  ------------------
  |  |  213|    172|#define _Py_SIZE_ROUND_UP(n, a) (((size_t)(n) + \
  |  |  214|    172|        (size_t)((a) - 1)) & ~(size_t)((a) - 1))
  ------------------
  370|    172|    assert(prefix_size < 256);
  ------------------
  |  Branch (370:5): [True: 172, False: 0]
  ------------------
  371|    172|    return prefix_size + (size + 1) * sizeof(PyObject *);
  372|    172|}
typeobject.c:shared_keys_usable_size:
  350|    172|{
  351|       |    // dk_usable will decrease for each instance that is created and each
  352|       |    // value that is added.  dk_nentries will increase for each value that
  353|       |    // is added.  We want to always return the right value or larger.
  354|       |    // We therefore increase dk_nentries first and we decrease dk_usable
  355|       |    // second, and conversely here we read dk_usable first and dk_entries
  356|       |    // second (to avoid the case where we read entries before the increment
  357|       |    // and read usable after the decrement)
  358|    172|    Py_ssize_t dk_usable = FT_ATOMIC_LOAD_SSIZE_ACQUIRE(keys->dk_usable);
  ------------------
  |  |  148|    172|#define FT_ATOMIC_LOAD_SSIZE_ACQUIRE(value) value
  ------------------
  359|    172|    Py_ssize_t dk_nentries = FT_ATOMIC_LOAD_SSIZE_ACQUIRE(keys->dk_nentries);
  ------------------
  |  |  148|    172|#define FT_ATOMIC_LOAD_SSIZE_ACQUIRE(value) value
  ------------------
  360|    172|    return dk_nentries + dk_usable;
  361|    172|}
ceval.c:DK_UNICODE_ENTRIES:
  277|  3.10k|static inline PyDictUnicodeEntry* DK_UNICODE_ENTRIES(PyDictKeysObject *dk) {
  278|  3.10k|    assert(dk->dk_kind != DICT_KEYS_GENERAL);
  ------------------
  |  Branch (278:5): [True: 3.10k, False: 0]
  ------------------
  279|  3.10k|    return (PyDictUnicodeEntry*)_DK_ENTRIES(dk);
  280|  3.10k|}
ceval.c:_DK_ENTRIES:
  267|  3.10k|static inline void* _DK_ENTRIES(PyDictKeysObject *dk) {
  268|  3.10k|    int8_t *indices = (int8_t*)(dk->dk_indices);
  269|  3.10k|    size_t index = (size_t)1 << dk->dk_log2_index_bytes;
  270|  3.10k|    return (&indices[index]);
  271|  3.10k|}
ceval.c:_PyDictValues_AddToInsertionOrder:
  334|    561|{
  335|    561|    assert(ix < SHARED_KEYS_MAX_SIZE);
  ------------------
  |  Branch (335:5): [True: 561, False: 0]
  ------------------
  336|    561|    int size = values->size;
  337|    561|    uint8_t *array = get_insertion_order_array(values);
  338|    561|    assert(size < values->capacity);
  ------------------
  |  Branch (338:5): [True: 561, False: 0]
  ------------------
  339|    561|    assert(((uint8_t)ix) == ix);
  ------------------
  |  Branch (339:5): [True: 561, False: 0]
  ------------------
  340|    561|    array[size] = (uint8_t)ix;
  341|    561|    values->size = size+1;
  342|    561|}
ceval.c:get_insertion_order_array:
  328|    561|{
  329|    561|    return (uint8_t *)&values->values[values->capacity];
  330|    561|}

listobject.c:_Py_freelists_GET:
   19|    723|{
   20|       |#ifdef Py_DEBUG
   21|       |    _Py_AssertHoldsTstate();
   22|       |#endif
   23|       |
   24|       |#ifdef Py_GIL_DISABLED
   25|       |    PyThreadState *tstate = _PyThreadState_GET();
   26|       |    return &((_PyThreadStateImpl*)tstate)->freelists;
   27|       |#else
   28|    723|    PyInterpreterState *interp = _PyInterpreterState_GET();
   29|    723|    return &interp->object_state.freelists;
   30|    723|#endif
   31|    723|}
listobject.c:_PyFreeList_Pop:
   88|    382|{
   89|    382|    PyObject *op = _PyFreeList_PopNoStats(fl);
   90|    382|    if (op != NULL) {
  ------------------
  |  Branch (90:9): [True: 330, False: 52]
  ------------------
   91|    330|        OBJECT_STAT_INC(from_freelist);
  ------------------
  |  |   77|    330|#define OBJECT_STAT_INC(name) ((void)0)
  ------------------
   92|    330|        _Py_NewReference(op);
   93|    330|    }
   94|    382|    return op;
   95|    382|}
listobject.c:_PyFreeList_PopNoStats:
   76|    382|{
   77|    382|    void *obj = fl->freelist;
   78|    382|    if (obj != NULL) {
  ------------------
  |  Branch (78:9): [True: 330, False: 52]
  ------------------
   79|    330|        assert(fl->size > 0);
  ------------------
  |  Branch (79:9): [True: 330, False: 0]
  ------------------
   80|    330|        fl->freelist = *(void **)obj;
   81|    330|        fl->size--;
   82|    330|    }
   83|    382|    return obj;
   84|    382|}
listobject.c:_PyFreeList_Free:
   68|    341|{
   69|    341|    if (!_PyFreeList_Push(fl, obj, maxsize)) {
  ------------------
  |  Branch (69:9): [True: 0, False: 341]
  ------------------
   70|      0|        dofree(obj);
   71|      0|    }
   72|    341|}
listobject.c:_PyFreeList_Push:
   54|    341|{
   55|    341|    if (fl->size < maxsize && fl->size >= 0) {
  ------------------
  |  Branch (55:9): [True: 341, False: 0]
  |  Branch (55:31): [True: 341, False: 0]
  ------------------
   56|    341|        FT_ATOMIC_STORE_PTR_RELAXED(*(void **)obj, fl->freelist);
  ------------------
  |  |  163|    341|#define FT_ATOMIC_STORE_PTR_RELAXED(value, new_value) value = new_value
  ------------------
   57|    341|        fl->freelist = obj;
   58|    341|        fl->size++;
   59|    341|        OBJECT_STAT_INC(to_freelist);
  ------------------
  |  |   77|    341|#define OBJECT_STAT_INC(name) ((void)0)
  ------------------
   60|    341|        return 1;
   61|    341|    }
   62|      0|    return 0;
   63|    341|}
longobject.c:_PyFreeList_Pop:
   88|    223|{
   89|    223|    PyObject *op = _PyFreeList_PopNoStats(fl);
   90|    223|    if (op != NULL) {
  ------------------
  |  Branch (90:9): [True: 85, False: 138]
  ------------------
   91|     85|        OBJECT_STAT_INC(from_freelist);
  ------------------
  |  |   77|     85|#define OBJECT_STAT_INC(name) ((void)0)
  ------------------
   92|     85|        _Py_NewReference(op);
   93|     85|    }
   94|    223|    return op;
   95|    223|}
longobject.c:_PyFreeList_PopNoStats:
   76|    223|{
   77|    223|    void *obj = fl->freelist;
   78|    223|    if (obj != NULL) {
  ------------------
  |  Branch (78:9): [True: 85, False: 138]
  ------------------
   79|     85|        assert(fl->size > 0);
  ------------------
  |  Branch (79:9): [True: 85, False: 0]
  ------------------
   80|     85|        fl->freelist = *(void **)obj;
   81|     85|        fl->size--;
   82|     85|    }
   83|    223|    return obj;
   84|    223|}
longobject.c:_PyFreeList_Free:
   68|     91|{
   69|     91|    if (!_PyFreeList_Push(fl, obj, maxsize)) {
  ------------------
  |  Branch (69:9): [True: 0, False: 91]
  ------------------
   70|      0|        dofree(obj);
   71|      0|    }
   72|     91|}
longobject.c:_PyFreeList_Push:
   54|     91|{
   55|     91|    if (fl->size < maxsize && fl->size >= 0) {
  ------------------
  |  Branch (55:9): [True: 91, False: 0]
  |  Branch (55:31): [True: 91, False: 0]
  ------------------
   56|     91|        FT_ATOMIC_STORE_PTR_RELAXED(*(void **)obj, fl->freelist);
  ------------------
  |  |  163|     91|#define FT_ATOMIC_STORE_PTR_RELAXED(value, new_value) value = new_value
  ------------------
   57|     91|        fl->freelist = obj;
   58|     91|        fl->size++;
   59|     91|        OBJECT_STAT_INC(to_freelist);
  ------------------
  |  |   77|     91|#define OBJECT_STAT_INC(name) ((void)0)
  ------------------
   60|     91|        return 1;
   61|     91|    }
   62|      0|    return 0;
   63|     91|}
longobject.c:_Py_freelists_GET:
   19|    314|{
   20|       |#ifdef Py_DEBUG
   21|       |    _Py_AssertHoldsTstate();
   22|       |#endif
   23|       |
   24|       |#ifdef Py_GIL_DISABLED
   25|       |    PyThreadState *tstate = _PyThreadState_GET();
   26|       |    return &((_PyThreadStateImpl*)tstate)->freelists;
   27|       |#else
   28|    314|    PyInterpreterState *interp = _PyInterpreterState_GET();
   29|    314|    return &interp->object_state.freelists;
   30|    314|#endif
   31|    314|}
dictobject.c:_Py_freelists_GET:
   19|  2.56k|{
   20|       |#ifdef Py_DEBUG
   21|       |    _Py_AssertHoldsTstate();
   22|       |#endif
   23|       |
   24|       |#ifdef Py_GIL_DISABLED
   25|       |    PyThreadState *tstate = _PyThreadState_GET();
   26|       |    return &((_PyThreadStateImpl*)tstate)->freelists;
   27|       |#else
   28|  2.56k|    PyInterpreterState *interp = _PyInterpreterState_GET();
   29|  2.56k|    return &interp->object_state.freelists;
   30|  2.56k|#endif
   31|  2.56k|}
dictobject.c:_PyFreeList_Pop:
   88|  1.10k|{
   89|  1.10k|    PyObject *op = _PyFreeList_PopNoStats(fl);
   90|  1.10k|    if (op != NULL) {
  ------------------
  |  Branch (90:9): [True: 499, False: 601]
  ------------------
   91|    499|        OBJECT_STAT_INC(from_freelist);
  ------------------
  |  |   77|    499|#define OBJECT_STAT_INC(name) ((void)0)
  ------------------
   92|    499|        _Py_NewReference(op);
   93|    499|    }
   94|  1.10k|    return op;
   95|  1.10k|}
dictobject.c:_PyFreeList_PopNoStats:
   76|  1.68k|{
   77|  1.68k|    void *obj = fl->freelist;
   78|  1.68k|    if (obj != NULL) {
  ------------------
  |  Branch (78:9): [True: 872, False: 813]
  ------------------
   79|    872|        assert(fl->size > 0);
  ------------------
  |  Branch (79:9): [True: 872, False: 0]
  ------------------
   80|    872|        fl->freelist = *(void **)obj;
   81|    872|        fl->size--;
   82|    872|    }
   83|  1.68k|    return obj;
   84|  1.68k|}
dictobject.c:_PyFreeList_Free:
   68|    878|{
   69|    878|    if (!_PyFreeList_Push(fl, obj, maxsize)) {
  ------------------
  |  Branch (69:9): [True: 0, False: 878]
  ------------------
   70|      0|        dofree(obj);
   71|      0|    }
   72|    878|}
dictobject.c:_PyFreeList_Push:
   54|    878|{
   55|    878|    if (fl->size < maxsize && fl->size >= 0) {
  ------------------
  |  Branch (55:9): [True: 878, False: 0]
  |  Branch (55:31): [True: 878, False: 0]
  ------------------
   56|    878|        FT_ATOMIC_STORE_PTR_RELAXED(*(void **)obj, fl->freelist);
  ------------------
  |  |  163|    878|#define FT_ATOMIC_STORE_PTR_RELAXED(value, new_value) value = new_value
  ------------------
   57|    878|        fl->freelist = obj;
   58|    878|        fl->size++;
   59|    878|        OBJECT_STAT_INC(to_freelist);
  ------------------
  |  |   77|    878|#define OBJECT_STAT_INC(name) ((void)0)
  ------------------
   60|    878|        return 1;
   61|    878|    }
   62|      0|    return 0;
   63|    878|}
dictobject.c:_PyFreeList_PopMem:
   99|    585|{
  100|    585|    void *op = _PyFreeList_PopNoStats(fl);
  101|    585|    if (op != NULL) {
  ------------------
  |  Branch (101:9): [True: 373, False: 212]
  ------------------
  102|    373|        OBJECT_STAT_INC(from_freelist);
  ------------------
  |  |   77|    373|#define OBJECT_STAT_INC(name) ((void)0)
  ------------------
  103|    373|    }
  104|    585|    return op;
  105|    585|}
rangeobject.c:_PyFreeList_Free:
   68|      7|{
   69|      7|    if (!_PyFreeList_Push(fl, obj, maxsize)) {
  ------------------
  |  Branch (69:9): [True: 0, False: 7]
  ------------------
   70|      0|        dofree(obj);
   71|      0|    }
   72|      7|}
rangeobject.c:_PyFreeList_Push:
   54|      7|{
   55|      7|    if (fl->size < maxsize && fl->size >= 0) {
  ------------------
  |  Branch (55:9): [True: 7, False: 0]
  |  Branch (55:31): [True: 7, False: 0]
  ------------------
   56|      7|        FT_ATOMIC_STORE_PTR_RELAXED(*(void **)obj, fl->freelist);
  ------------------
  |  |  163|      7|#define FT_ATOMIC_STORE_PTR_RELAXED(value, new_value) value = new_value
  ------------------
   57|      7|        fl->freelist = obj;
   58|      7|        fl->size++;
   59|      7|        OBJECT_STAT_INC(to_freelist);
  ------------------
  |  |   77|      7|#define OBJECT_STAT_INC(name) ((void)0)
  ------------------
   60|      7|        return 1;
   61|      7|    }
   62|      0|    return 0;
   63|      7|}
rangeobject.c:_Py_freelists_GET:
   19|     14|{
   20|       |#ifdef Py_DEBUG
   21|       |    _Py_AssertHoldsTstate();
   22|       |#endif
   23|       |
   24|       |#ifdef Py_GIL_DISABLED
   25|       |    PyThreadState *tstate = _PyThreadState_GET();
   26|       |    return &((_PyThreadStateImpl*)tstate)->freelists;
   27|       |#else
   28|     14|    PyInterpreterState *interp = _PyInterpreterState_GET();
   29|     14|    return &interp->object_state.freelists;
   30|     14|#endif
   31|     14|}
rangeobject.c:_PyFreeList_Pop:
   88|      7|{
   89|      7|    PyObject *op = _PyFreeList_PopNoStats(fl);
   90|      7|    if (op != NULL) {
  ------------------
  |  Branch (90:9): [True: 5, False: 2]
  ------------------
   91|      5|        OBJECT_STAT_INC(from_freelist);
  ------------------
  |  |   77|      5|#define OBJECT_STAT_INC(name) ((void)0)
  ------------------
   92|      5|        _Py_NewReference(op);
   93|      5|    }
   94|      7|    return op;
   95|      7|}
rangeobject.c:_PyFreeList_PopNoStats:
   76|      7|{
   77|      7|    void *obj = fl->freelist;
   78|      7|    if (obj != NULL) {
  ------------------
  |  Branch (78:9): [True: 5, False: 2]
  ------------------
   79|      5|        assert(fl->size > 0);
  ------------------
  |  Branch (79:9): [True: 5, False: 0]
  ------------------
   80|      5|        fl->freelist = *(void **)obj;
   81|      5|        fl->size--;
   82|      5|    }
   83|      7|    return obj;
   84|      7|}
sliceobject.c:_PyFreeList_Pop:
   88|     47|{
   89|     47|    PyObject *op = _PyFreeList_PopNoStats(fl);
   90|     47|    if (op != NULL) {
  ------------------
  |  Branch (90:9): [True: 2, False: 45]
  ------------------
   91|      2|        OBJECT_STAT_INC(from_freelist);
  ------------------
  |  |   77|      2|#define OBJECT_STAT_INC(name) ((void)0)
  ------------------
   92|      2|        _Py_NewReference(op);
   93|      2|    }
   94|     47|    return op;
   95|     47|}
sliceobject.c:_PyFreeList_PopNoStats:
   76|     47|{
   77|     47|    void *obj = fl->freelist;
   78|     47|    if (obj != NULL) {
  ------------------
  |  Branch (78:9): [True: 2, False: 45]
  ------------------
   79|      2|        assert(fl->size > 0);
  ------------------
  |  Branch (79:9): [True: 2, False: 0]
  ------------------
   80|      2|        fl->freelist = *(void **)obj;
   81|      2|        fl->size--;
   82|      2|    }
   83|     47|    return obj;
   84|     47|}
sliceobject.c:_Py_freelists_GET:
   19|     55|{
   20|       |#ifdef Py_DEBUG
   21|       |    _Py_AssertHoldsTstate();
   22|       |#endif
   23|       |
   24|       |#ifdef Py_GIL_DISABLED
   25|       |    PyThreadState *tstate = _PyThreadState_GET();
   26|       |    return &((_PyThreadStateImpl*)tstate)->freelists;
   27|       |#else
   28|     55|    PyInterpreterState *interp = _PyInterpreterState_GET();
   29|     55|    return &interp->object_state.freelists;
   30|     55|#endif
   31|     55|}
sliceobject.c:_PyFreeList_Free:
   68|      8|{
   69|      8|    if (!_PyFreeList_Push(fl, obj, maxsize)) {
  ------------------
  |  Branch (69:9): [True: 5, False: 3]
  ------------------
   70|      5|        dofree(obj);
   71|      5|    }
   72|      8|}
sliceobject.c:_PyFreeList_Push:
   54|      8|{
   55|      8|    if (fl->size < maxsize && fl->size >= 0) {
  ------------------
  |  Branch (55:9): [True: 3, False: 5]
  |  Branch (55:31): [True: 3, False: 0]
  ------------------
   56|      3|        FT_ATOMIC_STORE_PTR_RELAXED(*(void **)obj, fl->freelist);
  ------------------
  |  |  163|      3|#define FT_ATOMIC_STORE_PTR_RELAXED(value, new_value) value = new_value
  ------------------
   57|      3|        fl->freelist = obj;
   58|      3|        fl->size++;
   59|      3|        OBJECT_STAT_INC(to_freelist);
  ------------------
  |  |   77|      3|#define OBJECT_STAT_INC(name) ((void)0)
  ------------------
   60|      3|        return 1;
   61|      3|    }
   62|      5|    return 0;
   63|      8|}
tupleobject.c:_PyFreeList_Pop:
   88|  3.89k|{
   89|  3.89k|    PyObject *op = _PyFreeList_PopNoStats(fl);
   90|  3.89k|    if (op != NULL) {
  ------------------
  |  Branch (90:9): [True: 1.64k, False: 2.25k]
  ------------------
   91|  1.64k|        OBJECT_STAT_INC(from_freelist);
  ------------------
  |  |   77|  1.64k|#define OBJECT_STAT_INC(name) ((void)0)
  ------------------
   92|  1.64k|        _Py_NewReference(op);
   93|  1.64k|    }
   94|  3.89k|    return op;
   95|  3.89k|}
tupleobject.c:_PyFreeList_PopNoStats:
   76|  3.89k|{
   77|  3.89k|    void *obj = fl->freelist;
   78|  3.89k|    if (obj != NULL) {
  ------------------
  |  Branch (78:9): [True: 1.64k, False: 2.25k]
  ------------------
   79|  1.64k|        assert(fl->size > 0);
  ------------------
  |  Branch (79:9): [True: 1.64k, False: 0]
  ------------------
   80|  1.64k|        fl->freelist = *(void **)obj;
   81|  1.64k|        fl->size--;
   82|  1.64k|    }
   83|  3.89k|    return obj;
   84|  3.89k|}
tupleobject.c:_PyFreeList_Free:
   68|     13|{
   69|     13|    if (!_PyFreeList_Push(fl, obj, maxsize)) {
  ------------------
  |  Branch (69:9): [True: 0, False: 13]
  ------------------
   70|      0|        dofree(obj);
   71|      0|    }
   72|     13|}
tupleobject.c:_PyFreeList_Push:
   54|  1.70k|{
   55|  1.70k|    if (fl->size < maxsize && fl->size >= 0) {
  ------------------
  |  Branch (55:9): [True: 1.70k, False: 0]
  |  Branch (55:31): [True: 1.70k, False: 0]
  ------------------
   56|  1.70k|        FT_ATOMIC_STORE_PTR_RELAXED(*(void **)obj, fl->freelist);
  ------------------
  |  |  163|  1.70k|#define FT_ATOMIC_STORE_PTR_RELAXED(value, new_value) value = new_value
  ------------------
   57|  1.70k|        fl->freelist = obj;
   58|  1.70k|        fl->size++;
   59|  1.70k|        OBJECT_STAT_INC(to_freelist);
  ------------------
  |  |   77|  1.70k|#define OBJECT_STAT_INC(name) ((void)0)
  ------------------
   60|  1.70k|        return 1;
   61|  1.70k|    }
   62|      0|    return 0;
   63|  1.70k|}
tupleobject.c:_Py_freelists_GET:
   19|  5.59k|{
   20|       |#ifdef Py_DEBUG
   21|       |    _Py_AssertHoldsTstate();
   22|       |#endif
   23|       |
   24|       |#ifdef Py_GIL_DISABLED
   25|       |    PyThreadState *tstate = _PyThreadState_GET();
   26|       |    return &((_PyThreadStateImpl*)tstate)->freelists;
   27|       |#else
   28|  5.59k|    PyInterpreterState *interp = _PyInterpreterState_GET();
   29|  5.59k|    return &interp->object_state.freelists;
   30|  5.59k|#endif
   31|  5.59k|}
bytesobject.c:_PyFreeList_PopMem:
   99|      1|{
  100|      1|    void *op = _PyFreeList_PopNoStats(fl);
  101|      1|    if (op != NULL) {
  ------------------
  |  Branch (101:9): [True: 0, False: 1]
  ------------------
  102|      0|        OBJECT_STAT_INC(from_freelist);
  ------------------
  |  |   77|      0|#define OBJECT_STAT_INC(name) ((void)0)
  ------------------
  103|      0|    }
  104|      1|    return op;
  105|      1|}
bytesobject.c:_PyFreeList_PopNoStats:
   76|      1|{
   77|      1|    void *obj = fl->freelist;
   78|      1|    if (obj != NULL) {
  ------------------
  |  Branch (78:9): [True: 0, False: 1]
  ------------------
   79|      0|        assert(fl->size > 0);
  ------------------
  |  Branch (79:9): [True: 0, False: 0]
  ------------------
   80|      0|        fl->freelist = *(void **)obj;
   81|      0|        fl->size--;
   82|      0|    }
   83|      1|    return obj;
   84|      1|}
bytesobject.c:_PyFreeList_Free:
   68|      1|{
   69|      1|    if (!_PyFreeList_Push(fl, obj, maxsize)) {
  ------------------
  |  Branch (69:9): [True: 0, False: 1]
  ------------------
   70|      0|        dofree(obj);
   71|      0|    }
   72|      1|}
bytesobject.c:_PyFreeList_Push:
   54|      1|{
   55|      1|    if (fl->size < maxsize && fl->size >= 0) {
  ------------------
  |  Branch (55:9): [True: 1, False: 0]
  |  Branch (55:31): [True: 1, False: 0]
  ------------------
   56|      1|        FT_ATOMIC_STORE_PTR_RELAXED(*(void **)obj, fl->freelist);
  ------------------
  |  |  163|      1|#define FT_ATOMIC_STORE_PTR_RELAXED(value, new_value) value = new_value
  ------------------
   57|      1|        fl->freelist = obj;
   58|      1|        fl->size++;
   59|      1|        OBJECT_STAT_INC(to_freelist);
  ------------------
  |  |   77|      1|#define OBJECT_STAT_INC(name) ((void)0)
  ------------------
   60|      1|        return 1;
   61|      1|    }
   62|      0|    return 0;
   63|      1|}
bytesobject.c:_Py_freelists_GET:
   19|      2|{
   20|       |#ifdef Py_DEBUG
   21|       |    _Py_AssertHoldsTstate();
   22|       |#endif
   23|       |
   24|       |#ifdef Py_GIL_DISABLED
   25|       |    PyThreadState *tstate = _PyThreadState_GET();
   26|       |    return &((_PyThreadStateImpl*)tstate)->freelists;
   27|       |#else
   28|      2|    PyInterpreterState *interp = _PyInterpreterState_GET();
   29|      2|    return &interp->object_state.freelists;
   30|      2|#endif
   31|      2|}
classobject.c:_PyFreeList_Pop:
   88|    196|{
   89|    196|    PyObject *op = _PyFreeList_PopNoStats(fl);
   90|    196|    if (op != NULL) {
  ------------------
  |  Branch (90:9): [True: 194, False: 2]
  ------------------
   91|    194|        OBJECT_STAT_INC(from_freelist);
  ------------------
  |  |   77|    194|#define OBJECT_STAT_INC(name) ((void)0)
  ------------------
   92|    194|        _Py_NewReference(op);
   93|    194|    }
   94|    196|    return op;
   95|    196|}
classobject.c:_PyFreeList_PopNoStats:
   76|    196|{
   77|    196|    void *obj = fl->freelist;
   78|    196|    if (obj != NULL) {
  ------------------
  |  Branch (78:9): [True: 194, False: 2]
  ------------------
   79|    194|        assert(fl->size > 0);
  ------------------
  |  Branch (79:9): [True: 194, False: 0]
  ------------------
   80|    194|        fl->freelist = *(void **)obj;
   81|    194|        fl->size--;
   82|    194|    }
   83|    196|    return obj;
   84|    196|}
classobject.c:_Py_freelists_GET:
   19|    392|{
   20|       |#ifdef Py_DEBUG
   21|       |    _Py_AssertHoldsTstate();
   22|       |#endif
   23|       |
   24|       |#ifdef Py_GIL_DISABLED
   25|       |    PyThreadState *tstate = _PyThreadState_GET();
   26|       |    return &((_PyThreadStateImpl*)tstate)->freelists;
   27|       |#else
   28|    392|    PyInterpreterState *interp = _PyInterpreterState_GET();
   29|    392|    return &interp->object_state.freelists;
   30|    392|#endif
   31|    392|}
classobject.c:_PyFreeList_Free:
   68|    196|{
   69|    196|    if (!_PyFreeList_Push(fl, obj, maxsize)) {
  ------------------
  |  Branch (69:9): [True: 0, False: 196]
  ------------------
   70|      0|        dofree(obj);
   71|      0|    }
   72|    196|}
classobject.c:_PyFreeList_Push:
   54|    196|{
   55|    196|    if (fl->size < maxsize && fl->size >= 0) {
  ------------------
  |  Branch (55:9): [True: 196, False: 0]
  |  Branch (55:31): [True: 196, False: 0]
  ------------------
   56|    196|        FT_ATOMIC_STORE_PTR_RELAXED(*(void **)obj, fl->freelist);
  ------------------
  |  |  163|    196|#define FT_ATOMIC_STORE_PTR_RELAXED(value, new_value) value = new_value
  ------------------
   57|    196|        fl->freelist = obj;
   58|    196|        fl->size++;
   59|    196|        OBJECT_STAT_INC(to_freelist);
  ------------------
  |  |   77|    196|#define OBJECT_STAT_INC(name) ((void)0)
  ------------------
   60|    196|        return 1;
   61|    196|    }
   62|      0|    return 0;
   63|    196|}
floatobject.c:_PyFreeList_Pop:
   88|     46|{
   89|     46|    PyObject *op = _PyFreeList_PopNoStats(fl);
   90|     46|    if (op != NULL) {
  ------------------
  |  Branch (90:9): [True: 36, False: 10]
  ------------------
   91|     36|        OBJECT_STAT_INC(from_freelist);
  ------------------
  |  |   77|     36|#define OBJECT_STAT_INC(name) ((void)0)
  ------------------
   92|     36|        _Py_NewReference(op);
   93|     36|    }
   94|     46|    return op;
   95|     46|}
floatobject.c:_PyFreeList_PopNoStats:
   76|     46|{
   77|     46|    void *obj = fl->freelist;
   78|     46|    if (obj != NULL) {
  ------------------
  |  Branch (78:9): [True: 36, False: 10]
  ------------------
   79|     36|        assert(fl->size > 0);
  ------------------
  |  Branch (79:9): [True: 36, False: 0]
  ------------------
   80|     36|        fl->freelist = *(void **)obj;
   81|     36|        fl->size--;
   82|     36|    }
   83|     46|    return obj;
   84|     46|}
floatobject.c:_Py_freelists_GET:
   19|     85|{
   20|       |#ifdef Py_DEBUG
   21|       |    _Py_AssertHoldsTstate();
   22|       |#endif
   23|       |
   24|       |#ifdef Py_GIL_DISABLED
   25|       |    PyThreadState *tstate = _PyThreadState_GET();
   26|       |    return &((_PyThreadStateImpl*)tstate)->freelists;
   27|       |#else
   28|     85|    PyInterpreterState *interp = _PyInterpreterState_GET();
   29|     85|    return &interp->object_state.freelists;
   30|     85|#endif
   31|     85|}
floatobject.c:_PyFreeList_Free:
   68|     39|{
   69|     39|    if (!_PyFreeList_Push(fl, obj, maxsize)) {
  ------------------
  |  Branch (69:9): [True: 0, False: 39]
  ------------------
   70|      0|        dofree(obj);
   71|      0|    }
   72|     39|}
floatobject.c:_PyFreeList_Push:
   54|     39|{
   55|     39|    if (fl->size < maxsize && fl->size >= 0) {
  ------------------
  |  Branch (55:9): [True: 39, False: 0]
  |  Branch (55:31): [True: 39, False: 0]
  ------------------
   56|     39|        FT_ATOMIC_STORE_PTR_RELAXED(*(void **)obj, fl->freelist);
  ------------------
  |  |  163|     39|#define FT_ATOMIC_STORE_PTR_RELAXED(value, new_value) value = new_value
  ------------------
   57|     39|        fl->freelist = obj;
   58|     39|        fl->size++;
   59|     39|        OBJECT_STAT_INC(to_freelist);
  ------------------
  |  |   77|     39|#define OBJECT_STAT_INC(name) ((void)0)
  ------------------
   60|     39|        return 1;
   61|     39|    }
   62|      0|    return 0;
   63|     39|}
methodobject.c:_PyFreeList_Pop:
   88|    881|{
   89|    881|    PyObject *op = _PyFreeList_PopNoStats(fl);
   90|    881|    if (op != NULL) {
  ------------------
  |  Branch (90:9): [True: 252, False: 629]
  ------------------
   91|    252|        OBJECT_STAT_INC(from_freelist);
  ------------------
  |  |   77|    252|#define OBJECT_STAT_INC(name) ((void)0)
  ------------------
   92|    252|        _Py_NewReference(op);
   93|    252|    }
   94|    881|    return op;
   95|    881|}
methodobject.c:_PyFreeList_PopNoStats:
   76|    881|{
   77|    881|    void *obj = fl->freelist;
   78|    881|    if (obj != NULL) {
  ------------------
  |  Branch (78:9): [True: 252, False: 629]
  ------------------
   79|    252|        assert(fl->size > 0);
  ------------------
  |  Branch (79:9): [True: 252, False: 0]
  ------------------
   80|    252|        fl->freelist = *(void **)obj;
   81|    252|        fl->size--;
   82|    252|    }
   83|    881|    return obj;
   84|    881|}
methodobject.c:_Py_freelists_GET:
   19|  1.13k|{
   20|       |#ifdef Py_DEBUG
   21|       |    _Py_AssertHoldsTstate();
   22|       |#endif
   23|       |
   24|       |#ifdef Py_GIL_DISABLED
   25|       |    PyThreadState *tstate = _PyThreadState_GET();
   26|       |    return &((_PyThreadStateImpl*)tstate)->freelists;
   27|       |#else
   28|  1.13k|    PyInterpreterState *interp = _PyInterpreterState_GET();
   29|  1.13k|    return &interp->object_state.freelists;
   30|  1.13k|#endif
   31|  1.13k|}
methodobject.c:_PyFreeList_Free:
   68|    254|{
   69|    254|    if (!_PyFreeList_Push(fl, obj, maxsize)) {
  ------------------
  |  Branch (69:9): [True: 0, False: 254]
  ------------------
   70|      0|        dofree(obj);
   71|      0|    }
   72|    254|}
methodobject.c:_PyFreeList_Push:
   54|    254|{
   55|    254|    if (fl->size < maxsize && fl->size >= 0) {
  ------------------
  |  Branch (55:9): [True: 254, False: 0]
  |  Branch (55:31): [True: 254, False: 0]
  ------------------
   56|    254|        FT_ATOMIC_STORE_PTR_RELAXED(*(void **)obj, fl->freelist);
  ------------------
  |  |  163|    254|#define FT_ATOMIC_STORE_PTR_RELAXED(value, new_value) value = new_value
  ------------------
   57|    254|        fl->freelist = obj;
   58|    254|        fl->size++;
   59|    254|        OBJECT_STAT_INC(to_freelist);
  ------------------
  |  |   77|    254|#define OBJECT_STAT_INC(name) ((void)0)
  ------------------
   60|    254|        return 1;
   61|    254|    }
   62|      0|    return 0;
   63|    254|}

specialize.c:_PyFunction_IsVersionValid:
   26|     74|{
   27|     74|    return version >= FUNC_VERSION_FIRST_VALID;
  ------------------
  |  |   20|     74|#define FUNC_VERSION_FIRST_VALID 2
  ------------------
   28|     74|}

exceptions.c:_PyObject_GC_UNTRACK:
  253|     65|{
  254|     65|    _PyObject_ASSERT_FROM(op, _PyObject_GC_IS_TRACKED(op),
  ------------------
  |  |  414|     65|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 65, False: 0]
  |  |  ------------------
  |  |  415|     65|      ? (void)(0) \
  |  |  416|     65|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  255|     65|                          "object not tracked by the garbage collector",
  256|     65|                          filename, lineno, __func__);
  257|       |
  258|       |#ifdef Py_GIL_DISABLED
  259|       |    _PyObject_CLEAR_GC_BITS(op, _PyGC_BITS_TRACKED);
  260|       |#else
  261|     65|    PyGC_Head *gc = _Py_AS_GC(op);
  262|     65|    PyGC_Head *prev = _PyGCHead_PREV(gc);
  263|     65|    PyGC_Head *next = _PyGCHead_NEXT(gc);
  264|     65|    _PyGCHead_SET_NEXT(prev, next);
  265|     65|    _PyGCHead_SET_PREV(next, prev);
  266|     65|    gc->_gc_next = 0;
  267|     65|    gc->_gc_prev &= _PyGC_PREV_MASK_FINALIZED;
  ------------------
  |  |  117|     65|#define _PyGC_PREV_MASK_FINALIZED  ((uintptr_t)1)
  ------------------
  268|     65|    struct _gc_runtime_state *gcstate = &_PyInterpreterState_GET()->gc;
  269|     65|    gcstate->heap_size--;
  270|     65|#endif
  271|     65|}
exceptions.c:_PyObject_GC_IS_TRACKED:
   73|     65|static inline int _PyObject_GC_IS_TRACKED(PyObject *op) {
   74|       |#ifdef Py_GIL_DISABLED
   75|       |    return _PyObject_HAS_GC_BITS(op, _PyGC_BITS_TRACKED);
   76|       |#else
   77|     65|    PyGC_Head *gc = _Py_AS_GC(op);
   78|     65|    return (gc->_gc_next != 0);
   79|     65|#endif
   80|     65|}
exceptions.c:_Py_AS_GC:
   17|    130|static inline PyGC_Head* _Py_AS_GC(PyObject *op) {
   18|    130|    char *gc = ((char*)op) - sizeof(PyGC_Head);
   19|    130|    return (PyGC_Head*)gc;
   20|    130|}
exceptions.c:_PyGCHead_PREV:
  155|     65|static inline PyGC_Head* _PyGCHead_PREV(PyGC_Head *gc) {
  156|     65|    uintptr_t prev = (gc->_gc_prev & _PyGC_PREV_MASK);
  ------------------
  |  |  122|     65|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|     65|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
  157|     65|    return (PyGC_Head*)prev;
  158|     65|}
exceptions.c:_PyGCHead_NEXT:
  146|     65|static inline PyGC_Head* _PyGCHead_NEXT(PyGC_Head *gc) {
  147|     65|    uintptr_t next = gc->_gc_next;
  148|     65|    return (PyGC_Head*)next;
  149|     65|}
exceptions.c:_PyGCHead_SET_NEXT:
  150|     65|static inline void _PyGCHead_SET_NEXT(PyGC_Head *gc, PyGC_Head *next) {
  151|     65|    gc->_gc_next = (uintptr_t)next;
  152|     65|}
exceptions.c:_PyGCHead_SET_PREV:
  160|     65|static inline void _PyGCHead_SET_PREV(PyGC_Head *gc, PyGC_Head *prev) {
  161|     65|    uintptr_t uprev = (uintptr_t)prev;
  162|     65|    assert((uprev & ~_PyGC_PREV_MASK) == 0);
  ------------------
  |  Branch (162:5): [True: 65, False: 0]
  ------------------
  163|     65|    gc->_gc_prev = ((gc->_gc_prev & ~_PyGC_PREV_MASK) | uprev);
  ------------------
  |  |  122|     65|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|     65|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
  164|     65|}
genericaliasobject.c:_PyObject_GC_UNTRACK:
  253|      2|{
  254|      2|    _PyObject_ASSERT_FROM(op, _PyObject_GC_IS_TRACKED(op),
  ------------------
  |  |  414|      2|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 2, False: 0]
  |  |  ------------------
  |  |  415|      2|      ? (void)(0) \
  |  |  416|      2|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  255|      2|                          "object not tracked by the garbage collector",
  256|      2|                          filename, lineno, __func__);
  257|       |
  258|       |#ifdef Py_GIL_DISABLED
  259|       |    _PyObject_CLEAR_GC_BITS(op, _PyGC_BITS_TRACKED);
  260|       |#else
  261|      2|    PyGC_Head *gc = _Py_AS_GC(op);
  262|      2|    PyGC_Head *prev = _PyGCHead_PREV(gc);
  263|      2|    PyGC_Head *next = _PyGCHead_NEXT(gc);
  264|      2|    _PyGCHead_SET_NEXT(prev, next);
  265|      2|    _PyGCHead_SET_PREV(next, prev);
  266|      2|    gc->_gc_next = 0;
  267|      2|    gc->_gc_prev &= _PyGC_PREV_MASK_FINALIZED;
  ------------------
  |  |  117|      2|#define _PyGC_PREV_MASK_FINALIZED  ((uintptr_t)1)
  ------------------
  268|      2|    struct _gc_runtime_state *gcstate = &_PyInterpreterState_GET()->gc;
  269|      2|    gcstate->heap_size--;
  270|      2|#endif
  271|      2|}
genericaliasobject.c:_PyObject_GC_IS_TRACKED:
   73|      2|static inline int _PyObject_GC_IS_TRACKED(PyObject *op) {
   74|       |#ifdef Py_GIL_DISABLED
   75|       |    return _PyObject_HAS_GC_BITS(op, _PyGC_BITS_TRACKED);
   76|       |#else
   77|      2|    PyGC_Head *gc = _Py_AS_GC(op);
   78|      2|    return (gc->_gc_next != 0);
   79|      2|#endif
   80|      2|}
genericaliasobject.c:_Py_AS_GC:
   17|      4|static inline PyGC_Head* _Py_AS_GC(PyObject *op) {
   18|      4|    char *gc = ((char*)op) - sizeof(PyGC_Head);
   19|      4|    return (PyGC_Head*)gc;
   20|      4|}
genericaliasobject.c:_PyGCHead_PREV:
  155|      2|static inline PyGC_Head* _PyGCHead_PREV(PyGC_Head *gc) {
  156|      2|    uintptr_t prev = (gc->_gc_prev & _PyGC_PREV_MASK);
  ------------------
  |  |  122|      2|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|      2|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
  157|      2|    return (PyGC_Head*)prev;
  158|      2|}
genericaliasobject.c:_PyGCHead_NEXT:
  146|      2|static inline PyGC_Head* _PyGCHead_NEXT(PyGC_Head *gc) {
  147|      2|    uintptr_t next = gc->_gc_next;
  148|      2|    return (PyGC_Head*)next;
  149|      2|}
genericaliasobject.c:_PyGCHead_SET_NEXT:
  150|      2|static inline void _PyGCHead_SET_NEXT(PyGC_Head *gc, PyGC_Head *next) {
  151|      2|    gc->_gc_next = (uintptr_t)next;
  152|      2|}
genericaliasobject.c:_PyGCHead_SET_PREV:
  160|      2|static inline void _PyGCHead_SET_PREV(PyGC_Head *gc, PyGC_Head *prev) {
  161|      2|    uintptr_t uprev = (uintptr_t)prev;
  162|      2|    assert((uprev & ~_PyGC_PREV_MASK) == 0);
  ------------------
  |  Branch (162:5): [True: 2, False: 0]
  ------------------
  163|      2|    gc->_gc_prev = ((gc->_gc_prev & ~_PyGC_PREV_MASK) | uprev);
  ------------------
  |  |  122|      2|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|      2|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
  164|      2|}
listobject.c:_PyObject_GC_TRACK:
  213|    382|{
  214|    382|    _PyObject_ASSERT_FROM(op, !_PyObject_GC_IS_TRACKED(op),
  ------------------
  |  |  414|    382|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 382, False: 0]
  |  |  ------------------
  |  |  415|    382|      ? (void)(0) \
  |  |  416|    382|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  215|    382|                          "object already tracked by the garbage collector",
  216|    382|                          filename, lineno, __func__);
  217|       |#ifdef Py_GIL_DISABLED
  218|       |    _PyObject_SET_GC_BITS(op, _PyGC_BITS_TRACKED);
  219|       |#else
  220|    382|    PyGC_Head *gc = _Py_AS_GC(op);
  221|    382|    _PyObject_ASSERT_FROM(op,
  ------------------
  |  |  414|    382|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 382, False: 0]
  |  |  ------------------
  |  |  415|    382|      ? (void)(0) \
  |  |  416|    382|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  222|    382|                          (gc->_gc_prev & _PyGC_PREV_MASK_COLLECTING) == 0,
  223|    382|                          "object is in generation which is garbage collected",
  224|    382|                          filename, lineno, __func__);
  225|       |
  226|    382|    struct _gc_runtime_state *gcstate = &_PyInterpreterState_GET()->gc;
  227|    382|    PyGC_Head *generation0 = gcstate->generation0;
  228|    382|    PyGC_Head *last = (PyGC_Head*)(generation0->_gc_prev);
  229|    382|    _PyGCHead_SET_NEXT(last, gc);
  230|    382|    _PyGCHead_SET_PREV(gc, last);
  231|    382|    _PyGCHead_SET_NEXT(gc, generation0);
  232|    382|    generation0->_gc_prev = (uintptr_t)gc;
  233|    382|    gcstate->heap_size++;
  234|    382|#endif
  235|    382|}
listobject.c:_PyObject_GC_IS_TRACKED:
   73|    386|static inline int _PyObject_GC_IS_TRACKED(PyObject *op) {
   74|       |#ifdef Py_GIL_DISABLED
   75|       |    return _PyObject_HAS_GC_BITS(op, _PyGC_BITS_TRACKED);
   76|       |#else
   77|    386|    PyGC_Head *gc = _Py_AS_GC(op);
   78|    386|    return (gc->_gc_next != 0);
   79|    386|#endif
   80|    386|}
listobject.c:_Py_AS_GC:
   17|    772|static inline PyGC_Head* _Py_AS_GC(PyObject *op) {
   18|    772|    char *gc = ((char*)op) - sizeof(PyGC_Head);
   19|    772|    return (PyGC_Head*)gc;
   20|    772|}
listobject.c:_PyGCHead_SET_NEXT:
  150|    768|static inline void _PyGCHead_SET_NEXT(PyGC_Head *gc, PyGC_Head *next) {
  151|    768|    gc->_gc_next = (uintptr_t)next;
  152|    768|}
listobject.c:_PyGCHead_SET_PREV:
  160|    386|static inline void _PyGCHead_SET_PREV(PyGC_Head *gc, PyGC_Head *prev) {
  161|    386|    uintptr_t uprev = (uintptr_t)prev;
  162|    386|    assert((uprev & ~_PyGC_PREV_MASK) == 0);
  ------------------
  |  Branch (162:5): [True: 386, False: 0]
  ------------------
  163|    386|    gc->_gc_prev = ((gc->_gc_prev & ~_PyGC_PREV_MASK) | uprev);
  ------------------
  |  |  122|    386|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|    386|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
  164|    386|}
listobject.c:_PyObject_GC_UNTRACK:
  253|      4|{
  254|      4|    _PyObject_ASSERT_FROM(op, _PyObject_GC_IS_TRACKED(op),
  ------------------
  |  |  414|      4|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 4, False: 0]
  |  |  ------------------
  |  |  415|      4|      ? (void)(0) \
  |  |  416|      4|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  255|      4|                          "object not tracked by the garbage collector",
  256|      4|                          filename, lineno, __func__);
  257|       |
  258|       |#ifdef Py_GIL_DISABLED
  259|       |    _PyObject_CLEAR_GC_BITS(op, _PyGC_BITS_TRACKED);
  260|       |#else
  261|      4|    PyGC_Head *gc = _Py_AS_GC(op);
  262|      4|    PyGC_Head *prev = _PyGCHead_PREV(gc);
  263|      4|    PyGC_Head *next = _PyGCHead_NEXT(gc);
  264|      4|    _PyGCHead_SET_NEXT(prev, next);
  265|      4|    _PyGCHead_SET_PREV(next, prev);
  266|      4|    gc->_gc_next = 0;
  267|      4|    gc->_gc_prev &= _PyGC_PREV_MASK_FINALIZED;
  ------------------
  |  |  117|      4|#define _PyGC_PREV_MASK_FINALIZED  ((uintptr_t)1)
  ------------------
  268|      4|    struct _gc_runtime_state *gcstate = &_PyInterpreterState_GET()->gc;
  269|      4|    gcstate->heap_size--;
  270|      4|#endif
  271|      4|}
listobject.c:_PyGCHead_PREV:
  155|      4|static inline PyGC_Head* _PyGCHead_PREV(PyGC_Head *gc) {
  156|      4|    uintptr_t prev = (gc->_gc_prev & _PyGC_PREV_MASK);
  ------------------
  |  |  122|      4|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|      4|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
  157|      4|    return (PyGC_Head*)prev;
  158|      4|}
listobject.c:_PyGCHead_NEXT:
  146|      4|static inline PyGC_Head* _PyGCHead_NEXT(PyGC_Head *gc) {
  147|      4|    uintptr_t next = gc->_gc_next;
  148|      4|    return (PyGC_Head*)next;
  149|      4|}
dictobject.c:_PyObject_GC_IS_TRACKED:
   73|  1.34k|static inline int _PyObject_GC_IS_TRACKED(PyObject *op) {
   74|       |#ifdef Py_GIL_DISABLED
   75|       |    return _PyObject_HAS_GC_BITS(op, _PyGC_BITS_TRACKED);
   76|       |#else
   77|  1.34k|    PyGC_Head *gc = _Py_AS_GC(op);
   78|  1.34k|    return (gc->_gc_next != 0);
   79|  1.34k|#endif
   80|  1.34k|}
dictobject.c:_Py_AS_GC:
   17|  2.62k|static inline PyGC_Head* _Py_AS_GC(PyObject *op) {
   18|  2.62k|    char *gc = ((char*)op) - sizeof(PyGC_Head);
   19|  2.62k|    return (PyGC_Head*)gc;
   20|  2.62k|}
dictobject.c:_PyObject_GC_UNTRACK:
  253|     75|{
  254|     75|    _PyObject_ASSERT_FROM(op, _PyObject_GC_IS_TRACKED(op),
  ------------------
  |  |  414|     75|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 75, False: 0]
  |  |  ------------------
  |  |  415|     75|      ? (void)(0) \
  |  |  416|     75|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  255|     75|                          "object not tracked by the garbage collector",
  256|     75|                          filename, lineno, __func__);
  257|       |
  258|       |#ifdef Py_GIL_DISABLED
  259|       |    _PyObject_CLEAR_GC_BITS(op, _PyGC_BITS_TRACKED);
  260|       |#else
  261|     75|    PyGC_Head *gc = _Py_AS_GC(op);
  262|     75|    PyGC_Head *prev = _PyGCHead_PREV(gc);
  263|     75|    PyGC_Head *next = _PyGCHead_NEXT(gc);
  264|     75|    _PyGCHead_SET_NEXT(prev, next);
  265|     75|    _PyGCHead_SET_PREV(next, prev);
  266|     75|    gc->_gc_next = 0;
  267|     75|    gc->_gc_prev &= _PyGC_PREV_MASK_FINALIZED;
  ------------------
  |  |  117|     75|#define _PyGC_PREV_MASK_FINALIZED  ((uintptr_t)1)
  ------------------
  268|     75|    struct _gc_runtime_state *gcstate = &_PyInterpreterState_GET()->gc;
  269|     75|    gcstate->heap_size--;
  270|     75|#endif
  271|     75|}
dictobject.c:_PyGCHead_PREV:
  155|     75|static inline PyGC_Head* _PyGCHead_PREV(PyGC_Head *gc) {
  156|     75|    uintptr_t prev = (gc->_gc_prev & _PyGC_PREV_MASK);
  ------------------
  |  |  122|     75|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|     75|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
  157|     75|    return (PyGC_Head*)prev;
  158|     75|}
dictobject.c:_PyGCHead_NEXT:
  146|     75|static inline PyGC_Head* _PyGCHead_NEXT(PyGC_Head *gc) {
  147|     75|    uintptr_t next = gc->_gc_next;
  148|     75|    return (PyGC_Head*)next;
  149|     75|}
dictobject.c:_PyGCHead_SET_NEXT:
  150|  2.48k|static inline void _PyGCHead_SET_NEXT(PyGC_Head *gc, PyGC_Head *next) {
  151|  2.48k|    gc->_gc_next = (uintptr_t)next;
  152|  2.48k|}
dictobject.c:_PyGCHead_SET_PREV:
  160|  1.28k|static inline void _PyGCHead_SET_PREV(PyGC_Head *gc, PyGC_Head *prev) {
  161|  1.28k|    uintptr_t uprev = (uintptr_t)prev;
  162|  1.28k|    assert((uprev & ~_PyGC_PREV_MASK) == 0);
  ------------------
  |  Branch (162:5): [True: 1.28k, False: 0]
  ------------------
  163|  1.28k|    gc->_gc_prev = ((gc->_gc_prev & ~_PyGC_PREV_MASK) | uprev);
  ------------------
  |  |  122|  1.28k|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|  1.28k|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
  164|  1.28k|}
dictobject.c:_PyObject_GC_TRACK:
  213|  1.20k|{
  214|  1.20k|    _PyObject_ASSERT_FROM(op, !_PyObject_GC_IS_TRACKED(op),
  ------------------
  |  |  414|  1.20k|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 1.20k, False: 0]
  |  |  ------------------
  |  |  415|  1.20k|      ? (void)(0) \
  |  |  416|  1.20k|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  215|  1.20k|                          "object already tracked by the garbage collector",
  216|  1.20k|                          filename, lineno, __func__);
  217|       |#ifdef Py_GIL_DISABLED
  218|       |    _PyObject_SET_GC_BITS(op, _PyGC_BITS_TRACKED);
  219|       |#else
  220|  1.20k|    PyGC_Head *gc = _Py_AS_GC(op);
  221|  1.20k|    _PyObject_ASSERT_FROM(op,
  ------------------
  |  |  414|  1.20k|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 1.20k, False: 0]
  |  |  ------------------
  |  |  415|  1.20k|      ? (void)(0) \
  |  |  416|  1.20k|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  222|  1.20k|                          (gc->_gc_prev & _PyGC_PREV_MASK_COLLECTING) == 0,
  223|  1.20k|                          "object is in generation which is garbage collected",
  224|  1.20k|                          filename, lineno, __func__);
  225|       |
  226|  1.20k|    struct _gc_runtime_state *gcstate = &_PyInterpreterState_GET()->gc;
  227|  1.20k|    PyGC_Head *generation0 = gcstate->generation0;
  228|  1.20k|    PyGC_Head *last = (PyGC_Head*)(generation0->_gc_prev);
  229|  1.20k|    _PyGCHead_SET_NEXT(last, gc);
  230|  1.20k|    _PyGCHead_SET_PREV(gc, last);
  231|  1.20k|    _PyGCHead_SET_NEXT(gc, generation0);
  232|  1.20k|    generation0->_gc_prev = (uintptr_t)gc;
  233|  1.20k|    gcstate->heap_size++;
  234|  1.20k|#endif
  235|  1.20k|}
object.c:_PyGC_FINALIZED:
  166|     21|static inline int _PyGC_FINALIZED(PyObject *op) {
  167|       |#ifdef Py_GIL_DISABLED
  168|       |    return _PyObject_HAS_GC_BITS(op, _PyGC_BITS_FINALIZED);
  169|       |#else
  170|     21|    PyGC_Head *gc = _Py_AS_GC(op);
  171|     21|    return ((gc->_gc_prev & _PyGC_PREV_MASK_FINALIZED) != 0);
  ------------------
  |  |  117|     21|#define _PyGC_PREV_MASK_FINALIZED  ((uintptr_t)1)
  ------------------
  172|     21|#endif
  173|     21|}
object.c:_PyGC_SET_FINALIZED:
  174|     21|static inline void _PyGC_SET_FINALIZED(PyObject *op) {
  175|       |#ifdef Py_GIL_DISABLED
  176|       |    _PyObject_SET_GC_BITS(op, _PyGC_BITS_FINALIZED);
  177|       |#else
  178|     21|    PyGC_Head *gc = _Py_AS_GC(op);
  179|     21|    gc->_gc_prev |= _PyGC_PREV_MASK_FINALIZED;
  ------------------
  |  |  117|     21|#define _PyGC_PREV_MASK_FINALIZED  ((uintptr_t)1)
  ------------------
  180|     21|#endif
  181|     21|}
object.c:_PyObject_GC_IS_TRACKED:
   73|    848|static inline int _PyObject_GC_IS_TRACKED(PyObject *op) {
   74|       |#ifdef Py_GIL_DISABLED
   75|       |    return _PyObject_HAS_GC_BITS(op, _PyGC_BITS_TRACKED);
   76|       |#else
   77|    848|    PyGC_Head *gc = _Py_AS_GC(op);
   78|    848|    return (gc->_gc_next != 0);
   79|    848|#endif
   80|    848|}
object.c:_PyObject_GC_UNTRACK:
  253|    413|{
  254|    413|    _PyObject_ASSERT_FROM(op, _PyObject_GC_IS_TRACKED(op),
  ------------------
  |  |  414|    413|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 413, False: 0]
  |  |  ------------------
  |  |  415|    413|      ? (void)(0) \
  |  |  416|    413|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  255|    413|                          "object not tracked by the garbage collector",
  256|    413|                          filename, lineno, __func__);
  257|       |
  258|       |#ifdef Py_GIL_DISABLED
  259|       |    _PyObject_CLEAR_GC_BITS(op, _PyGC_BITS_TRACKED);
  260|       |#else
  261|    413|    PyGC_Head *gc = _Py_AS_GC(op);
  262|    413|    PyGC_Head *prev = _PyGCHead_PREV(gc);
  263|    413|    PyGC_Head *next = _PyGCHead_NEXT(gc);
  264|    413|    _PyGCHead_SET_NEXT(prev, next);
  265|    413|    _PyGCHead_SET_PREV(next, prev);
  266|    413|    gc->_gc_next = 0;
  267|    413|    gc->_gc_prev &= _PyGC_PREV_MASK_FINALIZED;
  ------------------
  |  |  117|    413|#define _PyGC_PREV_MASK_FINALIZED  ((uintptr_t)1)
  ------------------
  268|    413|    struct _gc_runtime_state *gcstate = &_PyInterpreterState_GET()->gc;
  269|    413|    gcstate->heap_size--;
  270|    413|#endif
  271|    413|}
object.c:_PyGCHead_PREV:
  155|    413|static inline PyGC_Head* _PyGCHead_PREV(PyGC_Head *gc) {
  156|    413|    uintptr_t prev = (gc->_gc_prev & _PyGC_PREV_MASK);
  ------------------
  |  |  122|    413|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|    413|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
  157|    413|    return (PyGC_Head*)prev;
  158|    413|}
object.c:_PyGCHead_NEXT:
  146|    413|static inline PyGC_Head* _PyGCHead_NEXT(PyGC_Head *gc) {
  147|    413|    uintptr_t next = gc->_gc_next;
  148|    413|    return (PyGC_Head*)next;
  149|    413|}
object.c:_PyGCHead_SET_NEXT:
  150|    413|static inline void _PyGCHead_SET_NEXT(PyGC_Head *gc, PyGC_Head *next) {
  151|    413|    gc->_gc_next = (uintptr_t)next;
  152|    413|}
object.c:_PyGCHead_SET_PREV:
  160|    413|static inline void _PyGCHead_SET_PREV(PyGC_Head *gc, PyGC_Head *prev) {
  161|    413|    uintptr_t uprev = (uintptr_t)prev;
  162|    413|    assert((uprev & ~_PyGC_PREV_MASK) == 0);
  ------------------
  |  Branch (162:5): [True: 413, False: 0]
  ------------------
  163|    413|    gc->_gc_prev = ((gc->_gc_prev & ~_PyGC_PREV_MASK) | uprev);
  ------------------
  |  |  122|    413|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|    413|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
  164|    413|}
object.c:_Py_AS_GC:
   17|  1.30k|static inline PyGC_Head* _Py_AS_GC(PyObject *op) {
   18|  1.30k|    char *gc = ((char*)op) - sizeof(PyGC_Head);
   19|  1.30k|    return (PyGC_Head*)gc;
   20|  1.30k|}
setobject.c:_PyObject_GC_UNTRACK:
  253|     65|{
  254|     65|    _PyObject_ASSERT_FROM(op, _PyObject_GC_IS_TRACKED(op),
  ------------------
  |  |  414|     65|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 65, False: 0]
  |  |  ------------------
  |  |  415|     65|      ? (void)(0) \
  |  |  416|     65|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  255|     65|                          "object not tracked by the garbage collector",
  256|     65|                          filename, lineno, __func__);
  257|       |
  258|       |#ifdef Py_GIL_DISABLED
  259|       |    _PyObject_CLEAR_GC_BITS(op, _PyGC_BITS_TRACKED);
  260|       |#else
  261|     65|    PyGC_Head *gc = _Py_AS_GC(op);
  262|     65|    PyGC_Head *prev = _PyGCHead_PREV(gc);
  263|     65|    PyGC_Head *next = _PyGCHead_NEXT(gc);
  264|     65|    _PyGCHead_SET_NEXT(prev, next);
  265|     65|    _PyGCHead_SET_PREV(next, prev);
  266|     65|    gc->_gc_next = 0;
  267|     65|    gc->_gc_prev &= _PyGC_PREV_MASK_FINALIZED;
  ------------------
  |  |  117|     65|#define _PyGC_PREV_MASK_FINALIZED  ((uintptr_t)1)
  ------------------
  268|     65|    struct _gc_runtime_state *gcstate = &_PyInterpreterState_GET()->gc;
  269|     65|    gcstate->heap_size--;
  270|     65|#endif
  271|     65|}
setobject.c:_PyObject_GC_IS_TRACKED:
   73|     96|static inline int _PyObject_GC_IS_TRACKED(PyObject *op) {
   74|       |#ifdef Py_GIL_DISABLED
   75|       |    return _PyObject_HAS_GC_BITS(op, _PyGC_BITS_TRACKED);
   76|       |#else
   77|     96|    PyGC_Head *gc = _Py_AS_GC(op);
   78|     96|    return (gc->_gc_next != 0);
   79|     96|#endif
   80|     96|}
setobject.c:_Py_AS_GC:
   17|    192|static inline PyGC_Head* _Py_AS_GC(PyObject *op) {
   18|    192|    char *gc = ((char*)op) - sizeof(PyGC_Head);
   19|    192|    return (PyGC_Head*)gc;
   20|    192|}
setobject.c:_PyGCHead_PREV:
  155|     65|static inline PyGC_Head* _PyGCHead_PREV(PyGC_Head *gc) {
  156|     65|    uintptr_t prev = (gc->_gc_prev & _PyGC_PREV_MASK);
  ------------------
  |  |  122|     65|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|     65|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
  157|     65|    return (PyGC_Head*)prev;
  158|     65|}
setobject.c:_PyGCHead_NEXT:
  146|     65|static inline PyGC_Head* _PyGCHead_NEXT(PyGC_Head *gc) {
  147|     65|    uintptr_t next = gc->_gc_next;
  148|     65|    return (PyGC_Head*)next;
  149|     65|}
setobject.c:_PyGCHead_SET_NEXT:
  150|    127|static inline void _PyGCHead_SET_NEXT(PyGC_Head *gc, PyGC_Head *next) {
  151|    127|    gc->_gc_next = (uintptr_t)next;
  152|    127|}
setobject.c:_PyGCHead_SET_PREV:
  160|     96|static inline void _PyGCHead_SET_PREV(PyGC_Head *gc, PyGC_Head *prev) {
  161|     96|    uintptr_t uprev = (uintptr_t)prev;
  162|     96|    assert((uprev & ~_PyGC_PREV_MASK) == 0);
  ------------------
  |  Branch (162:5): [True: 96, False: 0]
  ------------------
  163|     96|    gc->_gc_prev = ((gc->_gc_prev & ~_PyGC_PREV_MASK) | uprev);
  ------------------
  |  |  122|     96|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|     96|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
  164|     96|}
setobject.c:_PyObject_GC_MAY_BE_TRACKED:
   85|    304|static inline int _PyObject_GC_MAY_BE_TRACKED(PyObject *obj) {
   86|    304|    if (!PyObject_IS_GC(obj)) {
  ------------------
  |  Branch (86:9): [True: 296, False: 8]
  ------------------
   87|    296|        return 0;
   88|    296|    }
   89|      8|    if (PyTuple_CheckExact(obj)) {
  ------------------
  |  |   28|      8|#define PyTuple_CheckExact(op) Py_IS_TYPE((op), &PyTuple_Type)
  |  |  ------------------
  |  |  |  |  215|      8|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      8|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   90|      0|        return _PyObject_GC_IS_TRACKED(obj);
  ------------------
  |  |   81|      0|#define _PyObject_GC_IS_TRACKED(op) _PyObject_GC_IS_TRACKED(_Py_CAST(PyObject*, op))
  |  |  ------------------
  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
   91|      0|    }
   92|      8|    return 1;
   93|      8|}
setobject.c:_PyObject_GC_TRACK:
  213|     31|{
  214|     31|    _PyObject_ASSERT_FROM(op, !_PyObject_GC_IS_TRACKED(op),
  ------------------
  |  |  414|     31|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 31, False: 0]
  |  |  ------------------
  |  |  415|     31|      ? (void)(0) \
  |  |  416|     31|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  215|     31|                          "object already tracked by the garbage collector",
  216|     31|                          filename, lineno, __func__);
  217|       |#ifdef Py_GIL_DISABLED
  218|       |    _PyObject_SET_GC_BITS(op, _PyGC_BITS_TRACKED);
  219|       |#else
  220|     31|    PyGC_Head *gc = _Py_AS_GC(op);
  221|     31|    _PyObject_ASSERT_FROM(op,
  ------------------
  |  |  414|     31|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 31, False: 0]
  |  |  ------------------
  |  |  415|     31|      ? (void)(0) \
  |  |  416|     31|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  222|     31|                          (gc->_gc_prev & _PyGC_PREV_MASK_COLLECTING) == 0,
  223|     31|                          "object is in generation which is garbage collected",
  224|     31|                          filename, lineno, __func__);
  225|       |
  226|     31|    struct _gc_runtime_state *gcstate = &_PyInterpreterState_GET()->gc;
  227|     31|    PyGC_Head *generation0 = gcstate->generation0;
  228|     31|    PyGC_Head *last = (PyGC_Head*)(generation0->_gc_prev);
  229|     31|    _PyGCHead_SET_NEXT(last, gc);
  230|     31|    _PyGCHead_SET_PREV(gc, last);
  231|     31|    _PyGCHead_SET_NEXT(gc, generation0);
  232|     31|    generation0->_gc_prev = (uintptr_t)gc;
  233|     31|    gcstate->heap_size++;
  234|     31|#endif
  235|     31|}
sliceobject.c:_PyObject_GC_TRACK:
  213|     47|{
  214|     47|    _PyObject_ASSERT_FROM(op, !_PyObject_GC_IS_TRACKED(op),
  ------------------
  |  |  414|     47|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 47, False: 0]
  |  |  ------------------
  |  |  415|     47|      ? (void)(0) \
  |  |  416|     47|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  215|     47|                          "object already tracked by the garbage collector",
  216|     47|                          filename, lineno, __func__);
  217|       |#ifdef Py_GIL_DISABLED
  218|       |    _PyObject_SET_GC_BITS(op, _PyGC_BITS_TRACKED);
  219|       |#else
  220|     47|    PyGC_Head *gc = _Py_AS_GC(op);
  221|     47|    _PyObject_ASSERT_FROM(op,
  ------------------
  |  |  414|     47|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 47, False: 0]
  |  |  ------------------
  |  |  415|     47|      ? (void)(0) \
  |  |  416|     47|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  222|     47|                          (gc->_gc_prev & _PyGC_PREV_MASK_COLLECTING) == 0,
  223|     47|                          "object is in generation which is garbage collected",
  224|     47|                          filename, lineno, __func__);
  225|       |
  226|     47|    struct _gc_runtime_state *gcstate = &_PyInterpreterState_GET()->gc;
  227|     47|    PyGC_Head *generation0 = gcstate->generation0;
  228|     47|    PyGC_Head *last = (PyGC_Head*)(generation0->_gc_prev);
  229|     47|    _PyGCHead_SET_NEXT(last, gc);
  230|     47|    _PyGCHead_SET_PREV(gc, last);
  231|     47|    _PyGCHead_SET_NEXT(gc, generation0);
  232|     47|    generation0->_gc_prev = (uintptr_t)gc;
  233|     47|    gcstate->heap_size++;
  234|     47|#endif
  235|     47|}
sliceobject.c:_PyObject_GC_IS_TRACKED:
   73|     47|static inline int _PyObject_GC_IS_TRACKED(PyObject *op) {
   74|       |#ifdef Py_GIL_DISABLED
   75|       |    return _PyObject_HAS_GC_BITS(op, _PyGC_BITS_TRACKED);
   76|       |#else
   77|     47|    PyGC_Head *gc = _Py_AS_GC(op);
   78|     47|    return (gc->_gc_next != 0);
   79|     47|#endif
   80|     47|}
sliceobject.c:_Py_AS_GC:
   17|     94|static inline PyGC_Head* _Py_AS_GC(PyObject *op) {
   18|     94|    char *gc = ((char*)op) - sizeof(PyGC_Head);
   19|     94|    return (PyGC_Head*)gc;
   20|     94|}
sliceobject.c:_PyGCHead_SET_NEXT:
  150|     94|static inline void _PyGCHead_SET_NEXT(PyGC_Head *gc, PyGC_Head *next) {
  151|     94|    gc->_gc_next = (uintptr_t)next;
  152|     94|}
sliceobject.c:_PyGCHead_SET_PREV:
  160|     47|static inline void _PyGCHead_SET_PREV(PyGC_Head *gc, PyGC_Head *prev) {
  161|     47|    uintptr_t uprev = (uintptr_t)prev;
  162|     47|    assert((uprev & ~_PyGC_PREV_MASK) == 0);
  ------------------
  |  Branch (162:5): [True: 47, False: 0]
  ------------------
  163|     47|    gc->_gc_prev = ((gc->_gc_prev & ~_PyGC_PREV_MASK) | uprev);
  ------------------
  |  |  122|     47|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|     47|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
  164|     47|}
tupleobject.c:_PyObject_GC_TRACK:
  213|  3.39k|{
  214|  3.39k|    _PyObject_ASSERT_FROM(op, !_PyObject_GC_IS_TRACKED(op),
  ------------------
  |  |  414|  3.39k|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 3.39k, False: 0]
  |  |  ------------------
  |  |  415|  3.39k|      ? (void)(0) \
  |  |  416|  3.39k|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  215|  3.39k|                          "object already tracked by the garbage collector",
  216|  3.39k|                          filename, lineno, __func__);
  217|       |#ifdef Py_GIL_DISABLED
  218|       |    _PyObject_SET_GC_BITS(op, _PyGC_BITS_TRACKED);
  219|       |#else
  220|  3.39k|    PyGC_Head *gc = _Py_AS_GC(op);
  221|  3.39k|    _PyObject_ASSERT_FROM(op,
  ------------------
  |  |  414|  3.39k|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 3.39k, False: 0]
  |  |  ------------------
  |  |  415|  3.39k|      ? (void)(0) \
  |  |  416|  3.39k|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  222|  3.39k|                          (gc->_gc_prev & _PyGC_PREV_MASK_COLLECTING) == 0,
  223|  3.39k|                          "object is in generation which is garbage collected",
  224|  3.39k|                          filename, lineno, __func__);
  225|       |
  226|  3.39k|    struct _gc_runtime_state *gcstate = &_PyInterpreterState_GET()->gc;
  227|  3.39k|    PyGC_Head *generation0 = gcstate->generation0;
  228|  3.39k|    PyGC_Head *last = (PyGC_Head*)(generation0->_gc_prev);
  229|  3.39k|    _PyGCHead_SET_NEXT(last, gc);
  230|  3.39k|    _PyGCHead_SET_PREV(gc, last);
  231|  3.39k|    _PyGCHead_SET_NEXT(gc, generation0);
  232|  3.39k|    generation0->_gc_prev = (uintptr_t)gc;
  233|  3.39k|    gcstate->heap_size++;
  234|  3.39k|#endif
  235|  3.39k|}
tupleobject.c:_Py_AS_GC:
   17|  9.61k|static inline PyGC_Head* _Py_AS_GC(PyObject *op) {
   18|  9.61k|    char *gc = ((char*)op) - sizeof(PyGC_Head);
   19|  9.61k|    return (PyGC_Head*)gc;
   20|  9.61k|}
tupleobject.c:_PyGCHead_SET_NEXT:
  150|  7.64k|static inline void _PyGCHead_SET_NEXT(PyGC_Head *gc, PyGC_Head *next) {
  151|  7.64k|    gc->_gc_next = (uintptr_t)next;
  152|  7.64k|}
tupleobject.c:_PyGCHead_SET_PREV:
  160|  4.24k|static inline void _PyGCHead_SET_PREV(PyGC_Head *gc, PyGC_Head *prev) {
  161|  4.24k|    uintptr_t uprev = (uintptr_t)prev;
  162|  4.24k|    assert((uprev & ~_PyGC_PREV_MASK) == 0);
  ------------------
  |  Branch (162:5): [True: 4.24k, False: 0]
  ------------------
  163|  4.24k|    gc->_gc_prev = ((gc->_gc_prev & ~_PyGC_PREV_MASK) | uprev);
  ------------------
  |  |  122|  4.24k|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|  4.24k|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
  164|  4.24k|}
tupleobject.c:_PyObject_GC_IS_TRACKED:
   73|  5.36k|static inline int _PyObject_GC_IS_TRACKED(PyObject *op) {
   74|       |#ifdef Py_GIL_DISABLED
   75|       |    return _PyObject_HAS_GC_BITS(op, _PyGC_BITS_TRACKED);
   76|       |#else
   77|  5.36k|    PyGC_Head *gc = _Py_AS_GC(op);
   78|  5.36k|    return (gc->_gc_next != 0);
   79|  5.36k|#endif
   80|  5.36k|}
tupleobject.c:_PyObject_GC_MAY_BE_TRACKED:
   85|  4.16k|static inline int _PyObject_GC_MAY_BE_TRACKED(PyObject *obj) {
   86|  4.16k|    if (!PyObject_IS_GC(obj)) {
  ------------------
  |  Branch (86:9): [True: 3.95k, False: 216]
  ------------------
   87|  3.95k|        return 0;
   88|  3.95k|    }
   89|    216|    if (PyTuple_CheckExact(obj)) {
  ------------------
  |  |   28|    216|#define PyTuple_CheckExact(op) Py_IS_TYPE((op), &PyTuple_Type)
  |  |  ------------------
  |  |  |  |  215|    216|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    216|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    216|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 101, False: 115]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   90|    101|        return _PyObject_GC_IS_TRACKED(obj);
  ------------------
  |  |   81|    101|#define _PyObject_GC_IS_TRACKED(op) _PyObject_GC_IS_TRACKED(_Py_CAST(PyObject*, op))
  |  |  ------------------
  |  |  |  |   37|    101|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
   91|    101|    }
   92|    115|    return 1;
   93|    216|}
tupleobject.c:_PyObject_GC_UNTRACK:
  253|    852|{
  254|    852|    _PyObject_ASSERT_FROM(op, _PyObject_GC_IS_TRACKED(op),
  ------------------
  |  |  414|    852|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 852, False: 0]
  |  |  ------------------
  |  |  415|    852|      ? (void)(0) \
  |  |  416|    852|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  255|    852|                          "object not tracked by the garbage collector",
  256|    852|                          filename, lineno, __func__);
  257|       |
  258|       |#ifdef Py_GIL_DISABLED
  259|       |    _PyObject_CLEAR_GC_BITS(op, _PyGC_BITS_TRACKED);
  260|       |#else
  261|    852|    PyGC_Head *gc = _Py_AS_GC(op);
  262|    852|    PyGC_Head *prev = _PyGCHead_PREV(gc);
  263|    852|    PyGC_Head *next = _PyGCHead_NEXT(gc);
  264|    852|    _PyGCHead_SET_NEXT(prev, next);
  265|    852|    _PyGCHead_SET_PREV(next, prev);
  266|    852|    gc->_gc_next = 0;
  267|    852|    gc->_gc_prev &= _PyGC_PREV_MASK_FINALIZED;
  ------------------
  |  |  117|    852|#define _PyGC_PREV_MASK_FINALIZED  ((uintptr_t)1)
  ------------------
  268|    852|    struct _gc_runtime_state *gcstate = &_PyInterpreterState_GET()->gc;
  269|    852|    gcstate->heap_size--;
  270|    852|#endif
  271|    852|}
tupleobject.c:_PyGCHead_PREV:
  155|    852|static inline PyGC_Head* _PyGCHead_PREV(PyGC_Head *gc) {
  156|    852|    uintptr_t prev = (gc->_gc_prev & _PyGC_PREV_MASK);
  ------------------
  |  |  122|    852|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|    852|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
  157|    852|    return (PyGC_Head*)prev;
  158|    852|}
tupleobject.c:_PyGCHead_NEXT:
  146|    852|static inline PyGC_Head* _PyGCHead_NEXT(PyGC_Head *gc) {
  147|    852|    uintptr_t next = gc->_gc_next;
  148|    852|    return (PyGC_Head*)next;
  149|    852|}
typeobject.c:_PyObject_GC_TRACK:
  213|  3.76k|{
  214|  3.76k|    _PyObject_ASSERT_FROM(op, !_PyObject_GC_IS_TRACKED(op),
  ------------------
  |  |  414|  3.76k|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 3.76k, False: 0]
  |  |  ------------------
  |  |  415|  3.76k|      ? (void)(0) \
  |  |  416|  3.76k|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  215|  3.76k|                          "object already tracked by the garbage collector",
  216|  3.76k|                          filename, lineno, __func__);
  217|       |#ifdef Py_GIL_DISABLED
  218|       |    _PyObject_SET_GC_BITS(op, _PyGC_BITS_TRACKED);
  219|       |#else
  220|  3.76k|    PyGC_Head *gc = _Py_AS_GC(op);
  221|  3.76k|    _PyObject_ASSERT_FROM(op,
  ------------------
  |  |  414|  3.76k|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 3.76k, False: 0]
  |  |  ------------------
  |  |  415|  3.76k|      ? (void)(0) \
  |  |  416|  3.76k|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  222|  3.76k|                          (gc->_gc_prev & _PyGC_PREV_MASK_COLLECTING) == 0,
  223|  3.76k|                          "object is in generation which is garbage collected",
  224|  3.76k|                          filename, lineno, __func__);
  225|       |
  226|  3.76k|    struct _gc_runtime_state *gcstate = &_PyInterpreterState_GET()->gc;
  227|  3.76k|    PyGC_Head *generation0 = gcstate->generation0;
  228|  3.76k|    PyGC_Head *last = (PyGC_Head*)(generation0->_gc_prev);
  229|  3.76k|    _PyGCHead_SET_NEXT(last, gc);
  230|  3.76k|    _PyGCHead_SET_PREV(gc, last);
  231|  3.76k|    _PyGCHead_SET_NEXT(gc, generation0);
  232|  3.76k|    generation0->_gc_prev = (uintptr_t)gc;
  233|  3.76k|    gcstate->heap_size++;
  234|  3.76k|#endif
  235|  3.76k|}
typeobject.c:_PyObject_GC_IS_TRACKED:
   73|  3.85k|static inline int _PyObject_GC_IS_TRACKED(PyObject *op) {
   74|       |#ifdef Py_GIL_DISABLED
   75|       |    return _PyObject_HAS_GC_BITS(op, _PyGC_BITS_TRACKED);
   76|       |#else
   77|  3.85k|    PyGC_Head *gc = _Py_AS_GC(op);
   78|  3.85k|    return (gc->_gc_next != 0);
   79|  3.85k|#endif
   80|  3.85k|}
typeobject.c:_Py_AS_GC:
   17|  7.70k|static inline PyGC_Head* _Py_AS_GC(PyObject *op) {
   18|  7.70k|    char *gc = ((char*)op) - sizeof(PyGC_Head);
   19|  7.70k|    return (PyGC_Head*)gc;
   20|  7.70k|}
typeobject.c:_PyGCHead_SET_NEXT:
  150|  7.61k|static inline void _PyGCHead_SET_NEXT(PyGC_Head *gc, PyGC_Head *next) {
  151|  7.61k|    gc->_gc_next = (uintptr_t)next;
  152|  7.61k|}
typeobject.c:_PyGCHead_SET_PREV:
  160|  3.85k|static inline void _PyGCHead_SET_PREV(PyGC_Head *gc, PyGC_Head *prev) {
  161|  3.85k|    uintptr_t uprev = (uintptr_t)prev;
  162|  3.85k|    assert((uprev & ~_PyGC_PREV_MASK) == 0);
  ------------------
  |  Branch (162:5): [True: 3.85k, False: 0]
  ------------------
  163|  3.85k|    gc->_gc_prev = ((gc->_gc_prev & ~_PyGC_PREV_MASK) | uprev);
  ------------------
  |  |  122|  3.85k|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|  3.85k|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
  164|  3.85k|}
typeobject.c:_PyObject_GC_UNTRACK:
  253|     91|{
  254|     91|    _PyObject_ASSERT_FROM(op, _PyObject_GC_IS_TRACKED(op),
  ------------------
  |  |  414|     91|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 91, False: 0]
  |  |  ------------------
  |  |  415|     91|      ? (void)(0) \
  |  |  416|     91|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  255|     91|                          "object not tracked by the garbage collector",
  256|     91|                          filename, lineno, __func__);
  257|       |
  258|       |#ifdef Py_GIL_DISABLED
  259|       |    _PyObject_CLEAR_GC_BITS(op, _PyGC_BITS_TRACKED);
  260|       |#else
  261|     91|    PyGC_Head *gc = _Py_AS_GC(op);
  262|     91|    PyGC_Head *prev = _PyGCHead_PREV(gc);
  263|     91|    PyGC_Head *next = _PyGCHead_NEXT(gc);
  264|     91|    _PyGCHead_SET_NEXT(prev, next);
  265|     91|    _PyGCHead_SET_PREV(next, prev);
  266|     91|    gc->_gc_next = 0;
  267|     91|    gc->_gc_prev &= _PyGC_PREV_MASK_FINALIZED;
  ------------------
  |  |  117|     91|#define _PyGC_PREV_MASK_FINALIZED  ((uintptr_t)1)
  ------------------
  268|     91|    struct _gc_runtime_state *gcstate = &_PyInterpreterState_GET()->gc;
  269|     91|    gcstate->heap_size--;
  270|     91|#endif
  271|     91|}
typeobject.c:_PyGCHead_PREV:
  155|     91|static inline PyGC_Head* _PyGCHead_PREV(PyGC_Head *gc) {
  156|     91|    uintptr_t prev = (gc->_gc_prev & _PyGC_PREV_MASK);
  ------------------
  |  |  122|     91|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|     91|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
  157|     91|    return (PyGC_Head*)prev;
  158|     91|}
typeobject.c:_PyGCHead_NEXT:
  146|     91|static inline PyGC_Head* _PyGCHead_NEXT(PyGC_Head *gc) {
  147|     91|    uintptr_t next = gc->_gc_next;
  148|     91|    return (PyGC_Head*)next;
  149|     91|}
unicodeobject.c:_PyObject_GC_UNTRACK:
  253|      1|{
  254|      1|    _PyObject_ASSERT_FROM(op, _PyObject_GC_IS_TRACKED(op),
  ------------------
  |  |  414|      1|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 1, False: 0]
  |  |  ------------------
  |  |  415|      1|      ? (void)(0) \
  |  |  416|      1|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  255|      1|                          "object not tracked by the garbage collector",
  256|      1|                          filename, lineno, __func__);
  257|       |
  258|       |#ifdef Py_GIL_DISABLED
  259|       |    _PyObject_CLEAR_GC_BITS(op, _PyGC_BITS_TRACKED);
  260|       |#else
  261|      1|    PyGC_Head *gc = _Py_AS_GC(op);
  262|      1|    PyGC_Head *prev = _PyGCHead_PREV(gc);
  263|      1|    PyGC_Head *next = _PyGCHead_NEXT(gc);
  264|      1|    _PyGCHead_SET_NEXT(prev, next);
  265|      1|    _PyGCHead_SET_PREV(next, prev);
  266|      1|    gc->_gc_next = 0;
  267|      1|    gc->_gc_prev &= _PyGC_PREV_MASK_FINALIZED;
  ------------------
  |  |  117|      1|#define _PyGC_PREV_MASK_FINALIZED  ((uintptr_t)1)
  ------------------
  268|      1|    struct _gc_runtime_state *gcstate = &_PyInterpreterState_GET()->gc;
  269|      1|    gcstate->heap_size--;
  270|      1|#endif
  271|      1|}
unicodeobject.c:_PyObject_GC_IS_TRACKED:
   73|      2|static inline int _PyObject_GC_IS_TRACKED(PyObject *op) {
   74|       |#ifdef Py_GIL_DISABLED
   75|       |    return _PyObject_HAS_GC_BITS(op, _PyGC_BITS_TRACKED);
   76|       |#else
   77|      2|    PyGC_Head *gc = _Py_AS_GC(op);
   78|      2|    return (gc->_gc_next != 0);
   79|      2|#endif
   80|      2|}
unicodeobject.c:_Py_AS_GC:
   17|      4|static inline PyGC_Head* _Py_AS_GC(PyObject *op) {
   18|      4|    char *gc = ((char*)op) - sizeof(PyGC_Head);
   19|      4|    return (PyGC_Head*)gc;
   20|      4|}
unicodeobject.c:_PyGCHead_PREV:
  155|      1|static inline PyGC_Head* _PyGCHead_PREV(PyGC_Head *gc) {
  156|      1|    uintptr_t prev = (gc->_gc_prev & _PyGC_PREV_MASK);
  ------------------
  |  |  122|      1|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|      1|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
  157|      1|    return (PyGC_Head*)prev;
  158|      1|}
unicodeobject.c:_PyGCHead_NEXT:
  146|      1|static inline PyGC_Head* _PyGCHead_NEXT(PyGC_Head *gc) {
  147|      1|    uintptr_t next = gc->_gc_next;
  148|      1|    return (PyGC_Head*)next;
  149|      1|}
unicodeobject.c:_PyGCHead_SET_NEXT:
  150|      3|static inline void _PyGCHead_SET_NEXT(PyGC_Head *gc, PyGC_Head *next) {
  151|      3|    gc->_gc_next = (uintptr_t)next;
  152|      3|}
unicodeobject.c:_PyGCHead_SET_PREV:
  160|      2|static inline void _PyGCHead_SET_PREV(PyGC_Head *gc, PyGC_Head *prev) {
  161|      2|    uintptr_t uprev = (uintptr_t)prev;
  162|      2|    assert((uprev & ~_PyGC_PREV_MASK) == 0);
  ------------------
  |  Branch (162:5): [True: 2, False: 0]
  ------------------
  163|      2|    gc->_gc_prev = ((gc->_gc_prev & ~_PyGC_PREV_MASK) | uprev);
  ------------------
  |  |  122|      2|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|      2|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
  164|      2|}
unicodeobject.c:_PyObject_GC_TRACK:
  213|      1|{
  214|      1|    _PyObject_ASSERT_FROM(op, !_PyObject_GC_IS_TRACKED(op),
  ------------------
  |  |  414|      1|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 1, False: 0]
  |  |  ------------------
  |  |  415|      1|      ? (void)(0) \
  |  |  416|      1|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  215|      1|                          "object already tracked by the garbage collector",
  216|      1|                          filename, lineno, __func__);
  217|       |#ifdef Py_GIL_DISABLED
  218|       |    _PyObject_SET_GC_BITS(op, _PyGC_BITS_TRACKED);
  219|       |#else
  220|      1|    PyGC_Head *gc = _Py_AS_GC(op);
  221|      1|    _PyObject_ASSERT_FROM(op,
  ------------------
  |  |  414|      1|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 1, False: 0]
  |  |  ------------------
  |  |  415|      1|      ? (void)(0) \
  |  |  416|      1|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  222|      1|                          (gc->_gc_prev & _PyGC_PREV_MASK_COLLECTING) == 0,
  223|      1|                          "object is in generation which is garbage collected",
  224|      1|                          filename, lineno, __func__);
  225|       |
  226|      1|    struct _gc_runtime_state *gcstate = &_PyInterpreterState_GET()->gc;
  227|      1|    PyGC_Head *generation0 = gcstate->generation0;
  228|      1|    PyGC_Head *last = (PyGC_Head*)(generation0->_gc_prev);
  229|      1|    _PyGCHead_SET_NEXT(last, gc);
  230|      1|    _PyGCHead_SET_PREV(gc, last);
  231|      1|    _PyGCHead_SET_NEXT(gc, generation0);
  232|      1|    generation0->_gc_prev = (uintptr_t)gc;
  233|      1|    gcstate->heap_size++;
  234|      1|#endif
  235|      1|}
context.c:_PyObject_GC_MAY_BE_TRACKED:
   85|      1|static inline int _PyObject_GC_MAY_BE_TRACKED(PyObject *obj) {
   86|      1|    if (!PyObject_IS_GC(obj)) {
  ------------------
  |  Branch (86:9): [True: 1, False: 0]
  ------------------
   87|      1|        return 0;
   88|      1|    }
   89|      0|    if (PyTuple_CheckExact(obj)) {
  ------------------
  |  |   28|      0|#define PyTuple_CheckExact(op) Py_IS_TYPE((op), &PyTuple_Type)
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   90|      0|        return _PyObject_GC_IS_TRACKED(obj);
  ------------------
  |  |   81|      0|#define _PyObject_GC_IS_TRACKED(op) _PyObject_GC_IS_TRACKED(_Py_CAST(PyObject*, op))
  |  |  ------------------
  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
   91|      0|    }
   92|      0|    return 1;
   93|      0|}
frame.c:_PyObject_GC_IS_TRACKED:
   73|     28|static inline int _PyObject_GC_IS_TRACKED(PyObject *op) {
   74|       |#ifdef Py_GIL_DISABLED
   75|       |    return _PyObject_HAS_GC_BITS(op, _PyGC_BITS_TRACKED);
   76|       |#else
   77|     28|    PyGC_Head *gc = _Py_AS_GC(op);
   78|     28|    return (gc->_gc_next != 0);
   79|     28|#endif
   80|     28|}
frame.c:_Py_AS_GC:
   17|     42|static inline PyGC_Head* _Py_AS_GC(PyObject *op) {
   18|     42|    char *gc = ((char*)op) - sizeof(PyGC_Head);
   19|     42|    return (PyGC_Head*)gc;
   20|     42|}
frame.c:_PyObject_GC_TRACK:
  213|     14|{
  214|     14|    _PyObject_ASSERT_FROM(op, !_PyObject_GC_IS_TRACKED(op),
  ------------------
  |  |  414|     14|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 14, False: 0]
  |  |  ------------------
  |  |  415|     14|      ? (void)(0) \
  |  |  416|     14|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  215|     14|                          "object already tracked by the garbage collector",
  216|     14|                          filename, lineno, __func__);
  217|       |#ifdef Py_GIL_DISABLED
  218|       |    _PyObject_SET_GC_BITS(op, _PyGC_BITS_TRACKED);
  219|       |#else
  220|     14|    PyGC_Head *gc = _Py_AS_GC(op);
  221|     14|    _PyObject_ASSERT_FROM(op,
  ------------------
  |  |  414|     14|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 14, False: 0]
  |  |  ------------------
  |  |  415|     14|      ? (void)(0) \
  |  |  416|     14|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  222|     14|                          (gc->_gc_prev & _PyGC_PREV_MASK_COLLECTING) == 0,
  223|     14|                          "object is in generation which is garbage collected",
  224|     14|                          filename, lineno, __func__);
  225|       |
  226|     14|    struct _gc_runtime_state *gcstate = &_PyInterpreterState_GET()->gc;
  227|     14|    PyGC_Head *generation0 = gcstate->generation0;
  228|     14|    PyGC_Head *last = (PyGC_Head*)(generation0->_gc_prev);
  229|     14|    _PyGCHead_SET_NEXT(last, gc);
  230|     14|    _PyGCHead_SET_PREV(gc, last);
  231|     14|    _PyGCHead_SET_NEXT(gc, generation0);
  232|     14|    generation0->_gc_prev = (uintptr_t)gc;
  233|     14|    gcstate->heap_size++;
  234|     14|#endif
  235|     14|}
frame.c:_PyGCHead_SET_NEXT:
  150|     28|static inline void _PyGCHead_SET_NEXT(PyGC_Head *gc, PyGC_Head *next) {
  151|     28|    gc->_gc_next = (uintptr_t)next;
  152|     28|}
frame.c:_PyGCHead_SET_PREV:
  160|     14|static inline void _PyGCHead_SET_PREV(PyGC_Head *gc, PyGC_Head *prev) {
  161|     14|    uintptr_t uprev = (uintptr_t)prev;
  162|     14|    assert((uprev & ~_PyGC_PREV_MASK) == 0);
  ------------------
  |  Branch (162:5): [True: 14, False: 0]
  ------------------
  163|     14|    gc->_gc_prev = ((gc->_gc_prev & ~_PyGC_PREV_MASK) | uprev);
  ------------------
  |  |  122|     14|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|     14|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
  164|     14|}
gc.c:_PyGCHead_NEXT:
  146|  18.2k|static inline PyGC_Head* _PyGCHead_NEXT(PyGC_Head *gc) {
  147|  18.2k|    uintptr_t next = gc->_gc_next;
  148|  18.2k|    return (PyGC_Head*)next;
  149|  18.2k|}
gc.c:_PyGCHead_PREV:
  155|  4.49k|static inline PyGC_Head* _PyGCHead_PREV(PyGC_Head *gc) {
  156|  4.49k|    uintptr_t prev = (gc->_gc_prev & _PyGC_PREV_MASK);
  ------------------
  |  |  122|  4.49k|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|  4.49k|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
  157|  4.49k|    return (PyGC_Head*)prev;
  158|  4.49k|}
gc.c:_PyGCHead_SET_NEXT:
  150|  4.77k|static inline void _PyGCHead_SET_NEXT(PyGC_Head *gc, PyGC_Head *next) {
  151|  4.77k|    gc->_gc_next = (uintptr_t)next;
  152|  4.77k|}
gc.c:_PyGCHead_SET_PREV:
  160|  10.5k|static inline void _PyGCHead_SET_PREV(PyGC_Head *gc, PyGC_Head *prev) {
  161|  10.5k|    uintptr_t uprev = (uintptr_t)prev;
  162|  10.5k|    assert((uprev & ~_PyGC_PREV_MASK) == 0);
  ------------------
  |  Branch (162:5): [True: 10.5k, False: 0]
  ------------------
  163|  10.5k|    gc->_gc_prev = ((gc->_gc_prev & ~_PyGC_PREV_MASK) | uprev);
  ------------------
  |  |  122|  10.5k|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|  10.5k|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
  164|  10.5k|}
gc.c:_Py_FROM_GC:
   23|  20.3k|static inline PyObject* _Py_FROM_GC(PyGC_Head *gc) {
   24|  20.3k|    char *op = ((char *)gc) + sizeof(PyGC_Head);
   25|  20.3k|    return (PyObject *)op;
   26|  20.3k|}
gc.c:_PyObject_GC_IS_TRACKED:
   73|  7.78k|static inline int _PyObject_GC_IS_TRACKED(PyObject *op) {
   74|       |#ifdef Py_GIL_DISABLED
   75|       |    return _PyObject_HAS_GC_BITS(op, _PyGC_BITS_TRACKED);
   76|       |#else
   77|  7.78k|    PyGC_Head *gc = _Py_AS_GC(op);
   78|  7.78k|    return (gc->_gc_next != 0);
   79|  7.78k|#endif
   80|  7.78k|}
gc.c:_PyObject_GC_TRACK:
  213|    137|{
  214|    137|    _PyObject_ASSERT_FROM(op, !_PyObject_GC_IS_TRACKED(op),
  ------------------
  |  |  414|    137|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 137, False: 0]
  |  |  ------------------
  |  |  415|    137|      ? (void)(0) \
  |  |  416|    137|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  215|    137|                          "object already tracked by the garbage collector",
  216|    137|                          filename, lineno, __func__);
  217|       |#ifdef Py_GIL_DISABLED
  218|       |    _PyObject_SET_GC_BITS(op, _PyGC_BITS_TRACKED);
  219|       |#else
  220|    137|    PyGC_Head *gc = _Py_AS_GC(op);
  221|    137|    _PyObject_ASSERT_FROM(op,
  ------------------
  |  |  414|    137|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 137, False: 0]
  |  |  ------------------
  |  |  415|    137|      ? (void)(0) \
  |  |  416|    137|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  222|    137|                          (gc->_gc_prev & _PyGC_PREV_MASK_COLLECTING) == 0,
  223|    137|                          "object is in generation which is garbage collected",
  224|    137|                          filename, lineno, __func__);
  225|       |
  226|    137|    struct _gc_runtime_state *gcstate = &_PyInterpreterState_GET()->gc;
  227|    137|    PyGC_Head *generation0 = gcstate->generation0;
  228|    137|    PyGC_Head *last = (PyGC_Head*)(generation0->_gc_prev);
  229|    137|    _PyGCHead_SET_NEXT(last, gc);
  230|    137|    _PyGCHead_SET_PREV(gc, last);
  231|    137|    _PyGCHead_SET_NEXT(gc, generation0);
  232|    137|    generation0->_gc_prev = (uintptr_t)gc;
  233|    137|    gcstate->heap_size++;
  234|    137|#endif
  235|    137|}
gc.c:_PyObject_GC_UNTRACK:
  253|  2.81k|{
  254|  2.81k|    _PyObject_ASSERT_FROM(op, _PyObject_GC_IS_TRACKED(op),
  ------------------
  |  |  414|  2.81k|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 2.81k, False: 0]
  |  |  ------------------
  |  |  415|  2.81k|      ? (void)(0) \
  |  |  416|  2.81k|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  255|  2.81k|                          "object not tracked by the garbage collector",
  256|  2.81k|                          filename, lineno, __func__);
  257|       |
  258|       |#ifdef Py_GIL_DISABLED
  259|       |    _PyObject_CLEAR_GC_BITS(op, _PyGC_BITS_TRACKED);
  260|       |#else
  261|  2.81k|    PyGC_Head *gc = _Py_AS_GC(op);
  262|  2.81k|    PyGC_Head *prev = _PyGCHead_PREV(gc);
  263|  2.81k|    PyGC_Head *next = _PyGCHead_NEXT(gc);
  264|  2.81k|    _PyGCHead_SET_NEXT(prev, next);
  265|  2.81k|    _PyGCHead_SET_PREV(next, prev);
  266|  2.81k|    gc->_gc_next = 0;
  267|  2.81k|    gc->_gc_prev &= _PyGC_PREV_MASK_FINALIZED;
  ------------------
  |  |  117|  2.81k|#define _PyGC_PREV_MASK_FINALIZED  ((uintptr_t)1)
  ------------------
  268|  2.81k|    struct _gc_runtime_state *gcstate = &_PyInterpreterState_GET()->gc;
  269|  2.81k|    gcstate->heap_size--;
  270|  2.81k|#endif
  271|  2.81k|}
gc.c:_Py_AS_GC:
   17|  32.3k|static inline PyGC_Head* _Py_AS_GC(PyObject *op) {
   18|  32.3k|    char *gc = ((char*)op) - sizeof(PyGC_Head);
   19|  32.3k|    return (PyGC_Head*)gc;
   20|  32.3k|}
gc.c:_PyGC_FINALIZED:
  166|     22|static inline int _PyGC_FINALIZED(PyObject *op) {
  167|       |#ifdef Py_GIL_DISABLED
  168|       |    return _PyObject_HAS_GC_BITS(op, _PyGC_BITS_FINALIZED);
  169|       |#else
  170|     22|    PyGC_Head *gc = _Py_AS_GC(op);
  171|     22|    return ((gc->_gc_prev & _PyGC_PREV_MASK_FINALIZED) != 0);
  ------------------
  |  |  117|     22|#define _PyGC_PREV_MASK_FINALIZED  ((uintptr_t)1)
  ------------------
  172|     22|#endif
  173|     22|}
bytearrayobject.c:_PyObject_GC_UNTRACK:
  253|      1|{
  254|      1|    _PyObject_ASSERT_FROM(op, _PyObject_GC_IS_TRACKED(op),
  ------------------
  |  |  414|      1|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 1, False: 0]
  |  |  ------------------
  |  |  415|      1|      ? (void)(0) \
  |  |  416|      1|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  255|      1|                          "object not tracked by the garbage collector",
  256|      1|                          filename, lineno, __func__);
  257|       |
  258|       |#ifdef Py_GIL_DISABLED
  259|       |    _PyObject_CLEAR_GC_BITS(op, _PyGC_BITS_TRACKED);
  260|       |#else
  261|      1|    PyGC_Head *gc = _Py_AS_GC(op);
  262|      1|    PyGC_Head *prev = _PyGCHead_PREV(gc);
  263|      1|    PyGC_Head *next = _PyGCHead_NEXT(gc);
  264|      1|    _PyGCHead_SET_NEXT(prev, next);
  265|      1|    _PyGCHead_SET_PREV(next, prev);
  266|      1|    gc->_gc_next = 0;
  267|      1|    gc->_gc_prev &= _PyGC_PREV_MASK_FINALIZED;
  ------------------
  |  |  117|      1|#define _PyGC_PREV_MASK_FINALIZED  ((uintptr_t)1)
  ------------------
  268|      1|    struct _gc_runtime_state *gcstate = &_PyInterpreterState_GET()->gc;
  269|      1|    gcstate->heap_size--;
  270|      1|#endif
  271|      1|}
bytearrayobject.c:_PyObject_GC_IS_TRACKED:
   73|      2|static inline int _PyObject_GC_IS_TRACKED(PyObject *op) {
   74|       |#ifdef Py_GIL_DISABLED
   75|       |    return _PyObject_HAS_GC_BITS(op, _PyGC_BITS_TRACKED);
   76|       |#else
   77|      2|    PyGC_Head *gc = _Py_AS_GC(op);
   78|      2|    return (gc->_gc_next != 0);
   79|      2|#endif
   80|      2|}
bytearrayobject.c:_Py_AS_GC:
   17|      4|static inline PyGC_Head* _Py_AS_GC(PyObject *op) {
   18|      4|    char *gc = ((char*)op) - sizeof(PyGC_Head);
   19|      4|    return (PyGC_Head*)gc;
   20|      4|}
bytearrayobject.c:_PyGCHead_PREV:
  155|      1|static inline PyGC_Head* _PyGCHead_PREV(PyGC_Head *gc) {
  156|      1|    uintptr_t prev = (gc->_gc_prev & _PyGC_PREV_MASK);
  ------------------
  |  |  122|      1|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|      1|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
  157|      1|    return (PyGC_Head*)prev;
  158|      1|}
bytearrayobject.c:_PyGCHead_NEXT:
  146|      1|static inline PyGC_Head* _PyGCHead_NEXT(PyGC_Head *gc) {
  147|      1|    uintptr_t next = gc->_gc_next;
  148|      1|    return (PyGC_Head*)next;
  149|      1|}
bytearrayobject.c:_PyGCHead_SET_NEXT:
  150|      3|static inline void _PyGCHead_SET_NEXT(PyGC_Head *gc, PyGC_Head *next) {
  151|      3|    gc->_gc_next = (uintptr_t)next;
  152|      3|}
bytearrayobject.c:_PyGCHead_SET_PREV:
  160|      2|static inline void _PyGCHead_SET_PREV(PyGC_Head *gc, PyGC_Head *prev) {
  161|      2|    uintptr_t uprev = (uintptr_t)prev;
  162|      2|    assert((uprev & ~_PyGC_PREV_MASK) == 0);
  ------------------
  |  Branch (162:5): [True: 2, False: 0]
  ------------------
  163|      2|    gc->_gc_prev = ((gc->_gc_prev & ~_PyGC_PREV_MASK) | uprev);
  ------------------
  |  |  122|      2|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|      2|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
  164|      2|}
bytearrayobject.c:_PyObject_GC_TRACK:
  213|      1|{
  214|      1|    _PyObject_ASSERT_FROM(op, !_PyObject_GC_IS_TRACKED(op),
  ------------------
  |  |  414|      1|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 1, False: 0]
  |  |  ------------------
  |  |  415|      1|      ? (void)(0) \
  |  |  416|      1|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  215|      1|                          "object already tracked by the garbage collector",
  216|      1|                          filename, lineno, __func__);
  217|       |#ifdef Py_GIL_DISABLED
  218|       |    _PyObject_SET_GC_BITS(op, _PyGC_BITS_TRACKED);
  219|       |#else
  220|      1|    PyGC_Head *gc = _Py_AS_GC(op);
  221|      1|    _PyObject_ASSERT_FROM(op,
  ------------------
  |  |  414|      1|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 1, False: 0]
  |  |  ------------------
  |  |  415|      1|      ? (void)(0) \
  |  |  416|      1|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  222|      1|                          (gc->_gc_prev & _PyGC_PREV_MASK_COLLECTING) == 0,
  223|      1|                          "object is in generation which is garbage collected",
  224|      1|                          filename, lineno, __func__);
  225|       |
  226|      1|    struct _gc_runtime_state *gcstate = &_PyInterpreterState_GET()->gc;
  227|      1|    PyGC_Head *generation0 = gcstate->generation0;
  228|      1|    PyGC_Head *last = (PyGC_Head*)(generation0->_gc_prev);
  229|      1|    _PyGCHead_SET_NEXT(last, gc);
  230|      1|    _PyGCHead_SET_PREV(gc, last);
  231|      1|    _PyGCHead_SET_NEXT(gc, generation0);
  232|      1|    generation0->_gc_prev = (uintptr_t)gc;
  233|      1|    gcstate->heap_size++;
  234|      1|#endif
  235|      1|}
bytesobject.c:_PyObject_GC_UNTRACK:
  253|      1|{
  254|      1|    _PyObject_ASSERT_FROM(op, _PyObject_GC_IS_TRACKED(op),
  ------------------
  |  |  414|      1|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 1, False: 0]
  |  |  ------------------
  |  |  415|      1|      ? (void)(0) \
  |  |  416|      1|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  255|      1|                          "object not tracked by the garbage collector",
  256|      1|                          filename, lineno, __func__);
  257|       |
  258|       |#ifdef Py_GIL_DISABLED
  259|       |    _PyObject_CLEAR_GC_BITS(op, _PyGC_BITS_TRACKED);
  260|       |#else
  261|      1|    PyGC_Head *gc = _Py_AS_GC(op);
  262|      1|    PyGC_Head *prev = _PyGCHead_PREV(gc);
  263|      1|    PyGC_Head *next = _PyGCHead_NEXT(gc);
  264|      1|    _PyGCHead_SET_NEXT(prev, next);
  265|      1|    _PyGCHead_SET_PREV(next, prev);
  266|      1|    gc->_gc_next = 0;
  267|      1|    gc->_gc_prev &= _PyGC_PREV_MASK_FINALIZED;
  ------------------
  |  |  117|      1|#define _PyGC_PREV_MASK_FINALIZED  ((uintptr_t)1)
  ------------------
  268|      1|    struct _gc_runtime_state *gcstate = &_PyInterpreterState_GET()->gc;
  269|      1|    gcstate->heap_size--;
  270|      1|#endif
  271|      1|}
bytesobject.c:_PyObject_GC_IS_TRACKED:
   73|      2|static inline int _PyObject_GC_IS_TRACKED(PyObject *op) {
   74|       |#ifdef Py_GIL_DISABLED
   75|       |    return _PyObject_HAS_GC_BITS(op, _PyGC_BITS_TRACKED);
   76|       |#else
   77|      2|    PyGC_Head *gc = _Py_AS_GC(op);
   78|      2|    return (gc->_gc_next != 0);
   79|      2|#endif
   80|      2|}
bytesobject.c:_Py_AS_GC:
   17|      4|static inline PyGC_Head* _Py_AS_GC(PyObject *op) {
   18|      4|    char *gc = ((char*)op) - sizeof(PyGC_Head);
   19|      4|    return (PyGC_Head*)gc;
   20|      4|}
bytesobject.c:_PyGCHead_PREV:
  155|      1|static inline PyGC_Head* _PyGCHead_PREV(PyGC_Head *gc) {
  156|      1|    uintptr_t prev = (gc->_gc_prev & _PyGC_PREV_MASK);
  ------------------
  |  |  122|      1|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|      1|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
  157|      1|    return (PyGC_Head*)prev;
  158|      1|}
bytesobject.c:_PyGCHead_NEXT:
  146|      1|static inline PyGC_Head* _PyGCHead_NEXT(PyGC_Head *gc) {
  147|      1|    uintptr_t next = gc->_gc_next;
  148|      1|    return (PyGC_Head*)next;
  149|      1|}
bytesobject.c:_PyGCHead_SET_NEXT:
  150|      3|static inline void _PyGCHead_SET_NEXT(PyGC_Head *gc, PyGC_Head *next) {
  151|      3|    gc->_gc_next = (uintptr_t)next;
  152|      3|}
bytesobject.c:_PyGCHead_SET_PREV:
  160|      2|static inline void _PyGCHead_SET_PREV(PyGC_Head *gc, PyGC_Head *prev) {
  161|      2|    uintptr_t uprev = (uintptr_t)prev;
  162|      2|    assert((uprev & ~_PyGC_PREV_MASK) == 0);
  ------------------
  |  Branch (162:5): [True: 2, False: 0]
  ------------------
  163|      2|    gc->_gc_prev = ((gc->_gc_prev & ~_PyGC_PREV_MASK) | uprev);
  ------------------
  |  |  122|      2|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|      2|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
  164|      2|}
bytesobject.c:_PyObject_GC_TRACK:
  213|      1|{
  214|      1|    _PyObject_ASSERT_FROM(op, !_PyObject_GC_IS_TRACKED(op),
  ------------------
  |  |  414|      1|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 1, False: 0]
  |  |  ------------------
  |  |  415|      1|      ? (void)(0) \
  |  |  416|      1|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  215|      1|                          "object already tracked by the garbage collector",
  216|      1|                          filename, lineno, __func__);
  217|       |#ifdef Py_GIL_DISABLED
  218|       |    _PyObject_SET_GC_BITS(op, _PyGC_BITS_TRACKED);
  219|       |#else
  220|      1|    PyGC_Head *gc = _Py_AS_GC(op);
  221|      1|    _PyObject_ASSERT_FROM(op,
  ------------------
  |  |  414|      1|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 1, False: 0]
  |  |  ------------------
  |  |  415|      1|      ? (void)(0) \
  |  |  416|      1|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  222|      1|                          (gc->_gc_prev & _PyGC_PREV_MASK_COLLECTING) == 0,
  223|      1|                          "object is in generation which is garbage collected",
  224|      1|                          filename, lineno, __func__);
  225|       |
  226|      1|    struct _gc_runtime_state *gcstate = &_PyInterpreterState_GET()->gc;
  227|      1|    PyGC_Head *generation0 = gcstate->generation0;
  228|      1|    PyGC_Head *last = (PyGC_Head*)(generation0->_gc_prev);
  229|      1|    _PyGCHead_SET_NEXT(last, gc);
  230|      1|    _PyGCHead_SET_PREV(gc, last);
  231|      1|    _PyGCHead_SET_NEXT(gc, generation0);
  232|      1|    generation0->_gc_prev = (uintptr_t)gc;
  233|      1|    gcstate->heap_size++;
  234|      1|#endif
  235|      1|}
cellobject.c:_PyObject_GC_TRACK:
  213|    105|{
  214|    105|    _PyObject_ASSERT_FROM(op, !_PyObject_GC_IS_TRACKED(op),
  ------------------
  |  |  414|    105|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 105, False: 0]
  |  |  ------------------
  |  |  415|    105|      ? (void)(0) \
  |  |  416|    105|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  215|    105|                          "object already tracked by the garbage collector",
  216|    105|                          filename, lineno, __func__);
  217|       |#ifdef Py_GIL_DISABLED
  218|       |    _PyObject_SET_GC_BITS(op, _PyGC_BITS_TRACKED);
  219|       |#else
  220|    105|    PyGC_Head *gc = _Py_AS_GC(op);
  221|    105|    _PyObject_ASSERT_FROM(op,
  ------------------
  |  |  414|    105|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 105, False: 0]
  |  |  ------------------
  |  |  415|    105|      ? (void)(0) \
  |  |  416|    105|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  222|    105|                          (gc->_gc_prev & _PyGC_PREV_MASK_COLLECTING) == 0,
  223|    105|                          "object is in generation which is garbage collected",
  224|    105|                          filename, lineno, __func__);
  225|       |
  226|    105|    struct _gc_runtime_state *gcstate = &_PyInterpreterState_GET()->gc;
  227|    105|    PyGC_Head *generation0 = gcstate->generation0;
  228|    105|    PyGC_Head *last = (PyGC_Head*)(generation0->_gc_prev);
  229|    105|    _PyGCHead_SET_NEXT(last, gc);
  230|    105|    _PyGCHead_SET_PREV(gc, last);
  231|    105|    _PyGCHead_SET_NEXT(gc, generation0);
  232|    105|    generation0->_gc_prev = (uintptr_t)gc;
  233|    105|    gcstate->heap_size++;
  234|    105|#endif
  235|    105|}
cellobject.c:_PyObject_GC_IS_TRACKED:
   73|    188|static inline int _PyObject_GC_IS_TRACKED(PyObject *op) {
   74|       |#ifdef Py_GIL_DISABLED
   75|       |    return _PyObject_HAS_GC_BITS(op, _PyGC_BITS_TRACKED);
   76|       |#else
   77|    188|    PyGC_Head *gc = _Py_AS_GC(op);
   78|    188|    return (gc->_gc_next != 0);
   79|    188|#endif
   80|    188|}
cellobject.c:_Py_AS_GC:
   17|    376|static inline PyGC_Head* _Py_AS_GC(PyObject *op) {
   18|    376|    char *gc = ((char*)op) - sizeof(PyGC_Head);
   19|    376|    return (PyGC_Head*)gc;
   20|    376|}
cellobject.c:_PyGCHead_SET_NEXT:
  150|    293|static inline void _PyGCHead_SET_NEXT(PyGC_Head *gc, PyGC_Head *next) {
  151|    293|    gc->_gc_next = (uintptr_t)next;
  152|    293|}
cellobject.c:_PyGCHead_SET_PREV:
  160|    188|static inline void _PyGCHead_SET_PREV(PyGC_Head *gc, PyGC_Head *prev) {
  161|    188|    uintptr_t uprev = (uintptr_t)prev;
  162|    188|    assert((uprev & ~_PyGC_PREV_MASK) == 0);
  ------------------
  |  Branch (162:5): [True: 188, False: 0]
  ------------------
  163|    188|    gc->_gc_prev = ((gc->_gc_prev & ~_PyGC_PREV_MASK) | uprev);
  ------------------
  |  |  122|    188|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|    188|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
  164|    188|}
cellobject.c:_PyObject_GC_UNTRACK:
  253|     83|{
  254|     83|    _PyObject_ASSERT_FROM(op, _PyObject_GC_IS_TRACKED(op),
  ------------------
  |  |  414|     83|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 83, False: 0]
  |  |  ------------------
  |  |  415|     83|      ? (void)(0) \
  |  |  416|     83|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  255|     83|                          "object not tracked by the garbage collector",
  256|     83|                          filename, lineno, __func__);
  257|       |
  258|       |#ifdef Py_GIL_DISABLED
  259|       |    _PyObject_CLEAR_GC_BITS(op, _PyGC_BITS_TRACKED);
  260|       |#else
  261|     83|    PyGC_Head *gc = _Py_AS_GC(op);
  262|     83|    PyGC_Head *prev = _PyGCHead_PREV(gc);
  263|     83|    PyGC_Head *next = _PyGCHead_NEXT(gc);
  264|     83|    _PyGCHead_SET_NEXT(prev, next);
  265|     83|    _PyGCHead_SET_PREV(next, prev);
  266|     83|    gc->_gc_next = 0;
  267|     83|    gc->_gc_prev &= _PyGC_PREV_MASK_FINALIZED;
  ------------------
  |  |  117|     83|#define _PyGC_PREV_MASK_FINALIZED  ((uintptr_t)1)
  ------------------
  268|     83|    struct _gc_runtime_state *gcstate = &_PyInterpreterState_GET()->gc;
  269|     83|    gcstate->heap_size--;
  270|     83|#endif
  271|     83|}
cellobject.c:_PyGCHead_PREV:
  155|     83|static inline PyGC_Head* _PyGCHead_PREV(PyGC_Head *gc) {
  156|     83|    uintptr_t prev = (gc->_gc_prev & _PyGC_PREV_MASK);
  ------------------
  |  |  122|     83|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|     83|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
  157|     83|    return (PyGC_Head*)prev;
  158|     83|}
cellobject.c:_PyGCHead_NEXT:
  146|     83|static inline PyGC_Head* _PyGCHead_NEXT(PyGC_Head *gc) {
  147|     83|    uintptr_t next = gc->_gc_next;
  148|     83|    return (PyGC_Head*)next;
  149|     83|}
classobject.c:_PyObject_GC_TRACK:
  213|    196|{
  214|    196|    _PyObject_ASSERT_FROM(op, !_PyObject_GC_IS_TRACKED(op),
  ------------------
  |  |  414|    196|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 196, False: 0]
  |  |  ------------------
  |  |  415|    196|      ? (void)(0) \
  |  |  416|    196|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  215|    196|                          "object already tracked by the garbage collector",
  216|    196|                          filename, lineno, __func__);
  217|       |#ifdef Py_GIL_DISABLED
  218|       |    _PyObject_SET_GC_BITS(op, _PyGC_BITS_TRACKED);
  219|       |#else
  220|    196|    PyGC_Head *gc = _Py_AS_GC(op);
  221|    196|    _PyObject_ASSERT_FROM(op,
  ------------------
  |  |  414|    196|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 196, False: 0]
  |  |  ------------------
  |  |  415|    196|      ? (void)(0) \
  |  |  416|    196|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  222|    196|                          (gc->_gc_prev & _PyGC_PREV_MASK_COLLECTING) == 0,
  223|    196|                          "object is in generation which is garbage collected",
  224|    196|                          filename, lineno, __func__);
  225|       |
  226|    196|    struct _gc_runtime_state *gcstate = &_PyInterpreterState_GET()->gc;
  227|    196|    PyGC_Head *generation0 = gcstate->generation0;
  228|    196|    PyGC_Head *last = (PyGC_Head*)(generation0->_gc_prev);
  229|    196|    _PyGCHead_SET_NEXT(last, gc);
  230|    196|    _PyGCHead_SET_PREV(gc, last);
  231|    196|    _PyGCHead_SET_NEXT(gc, generation0);
  232|    196|    generation0->_gc_prev = (uintptr_t)gc;
  233|    196|    gcstate->heap_size++;
  234|    196|#endif
  235|    196|}
classobject.c:_PyObject_GC_IS_TRACKED:
   73|    392|static inline int _PyObject_GC_IS_TRACKED(PyObject *op) {
   74|       |#ifdef Py_GIL_DISABLED
   75|       |    return _PyObject_HAS_GC_BITS(op, _PyGC_BITS_TRACKED);
   76|       |#else
   77|    392|    PyGC_Head *gc = _Py_AS_GC(op);
   78|    392|    return (gc->_gc_next != 0);
   79|    392|#endif
   80|    392|}
classobject.c:_Py_AS_GC:
   17|    784|static inline PyGC_Head* _Py_AS_GC(PyObject *op) {
   18|    784|    char *gc = ((char*)op) - sizeof(PyGC_Head);
   19|    784|    return (PyGC_Head*)gc;
   20|    784|}
classobject.c:_PyGCHead_SET_NEXT:
  150|    588|static inline void _PyGCHead_SET_NEXT(PyGC_Head *gc, PyGC_Head *next) {
  151|    588|    gc->_gc_next = (uintptr_t)next;
  152|    588|}
classobject.c:_PyGCHead_SET_PREV:
  160|    392|static inline void _PyGCHead_SET_PREV(PyGC_Head *gc, PyGC_Head *prev) {
  161|    392|    uintptr_t uprev = (uintptr_t)prev;
  162|    392|    assert((uprev & ~_PyGC_PREV_MASK) == 0);
  ------------------
  |  Branch (162:5): [True: 392, False: 0]
  ------------------
  163|    392|    gc->_gc_prev = ((gc->_gc_prev & ~_PyGC_PREV_MASK) | uprev);
  ------------------
  |  |  122|    392|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|    392|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
  164|    392|}
classobject.c:_PyObject_GC_UNTRACK:
  253|    196|{
  254|    196|    _PyObject_ASSERT_FROM(op, _PyObject_GC_IS_TRACKED(op),
  ------------------
  |  |  414|    196|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 196, False: 0]
  |  |  ------------------
  |  |  415|    196|      ? (void)(0) \
  |  |  416|    196|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  255|    196|                          "object not tracked by the garbage collector",
  256|    196|                          filename, lineno, __func__);
  257|       |
  258|       |#ifdef Py_GIL_DISABLED
  259|       |    _PyObject_CLEAR_GC_BITS(op, _PyGC_BITS_TRACKED);
  260|       |#else
  261|    196|    PyGC_Head *gc = _Py_AS_GC(op);
  262|    196|    PyGC_Head *prev = _PyGCHead_PREV(gc);
  263|    196|    PyGC_Head *next = _PyGCHead_NEXT(gc);
  264|    196|    _PyGCHead_SET_NEXT(prev, next);
  265|    196|    _PyGCHead_SET_PREV(next, prev);
  266|    196|    gc->_gc_next = 0;
  267|    196|    gc->_gc_prev &= _PyGC_PREV_MASK_FINALIZED;
  ------------------
  |  |  117|    196|#define _PyGC_PREV_MASK_FINALIZED  ((uintptr_t)1)
  ------------------
  268|    196|    struct _gc_runtime_state *gcstate = &_PyInterpreterState_GET()->gc;
  269|    196|    gcstate->heap_size--;
  270|    196|#endif
  271|    196|}
classobject.c:_PyGCHead_PREV:
  155|    196|static inline PyGC_Head* _PyGCHead_PREV(PyGC_Head *gc) {
  156|    196|    uintptr_t prev = (gc->_gc_prev & _PyGC_PREV_MASK);
  ------------------
  |  |  122|    196|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|    196|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
  157|    196|    return (PyGC_Head*)prev;
  158|    196|}
classobject.c:_PyGCHead_NEXT:
  146|    196|static inline PyGC_Head* _PyGCHead_NEXT(PyGC_Head *gc) {
  147|    196|    uintptr_t next = gc->_gc_next;
  148|    196|    return (PyGC_Head*)next;
  149|    196|}
descrobject.c:_PyObject_GC_UNTRACK:
  253|    142|{
  254|    142|    _PyObject_ASSERT_FROM(op, _PyObject_GC_IS_TRACKED(op),
  ------------------
  |  |  414|    142|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 142, False: 0]
  |  |  ------------------
  |  |  415|    142|      ? (void)(0) \
  |  |  416|    142|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  255|    142|                          "object not tracked by the garbage collector",
  256|    142|                          filename, lineno, __func__);
  257|       |
  258|       |#ifdef Py_GIL_DISABLED
  259|       |    _PyObject_CLEAR_GC_BITS(op, _PyGC_BITS_TRACKED);
  260|       |#else
  261|    142|    PyGC_Head *gc = _Py_AS_GC(op);
  262|    142|    PyGC_Head *prev = _PyGCHead_PREV(gc);
  263|    142|    PyGC_Head *next = _PyGCHead_NEXT(gc);
  264|    142|    _PyGCHead_SET_NEXT(prev, next);
  265|    142|    _PyGCHead_SET_PREV(next, prev);
  266|    142|    gc->_gc_next = 0;
  267|    142|    gc->_gc_prev &= _PyGC_PREV_MASK_FINALIZED;
  ------------------
  |  |  117|    142|#define _PyGC_PREV_MASK_FINALIZED  ((uintptr_t)1)
  ------------------
  268|    142|    struct _gc_runtime_state *gcstate = &_PyInterpreterState_GET()->gc;
  269|    142|    gcstate->heap_size--;
  270|    142|#endif
  271|    142|}
descrobject.c:_PyObject_GC_IS_TRACKED:
   73|    253|static inline int _PyObject_GC_IS_TRACKED(PyObject *op) {
   74|       |#ifdef Py_GIL_DISABLED
   75|       |    return _PyObject_HAS_GC_BITS(op, _PyGC_BITS_TRACKED);
   76|       |#else
   77|    253|    PyGC_Head *gc = _Py_AS_GC(op);
   78|    253|    return (gc->_gc_next != 0);
   79|    253|#endif
   80|    253|}
descrobject.c:_Py_AS_GC:
   17|    506|static inline PyGC_Head* _Py_AS_GC(PyObject *op) {
   18|    506|    char *gc = ((char*)op) - sizeof(PyGC_Head);
   19|    506|    return (PyGC_Head*)gc;
   20|    506|}
descrobject.c:_PyGCHead_PREV:
  155|    142|static inline PyGC_Head* _PyGCHead_PREV(PyGC_Head *gc) {
  156|    142|    uintptr_t prev = (gc->_gc_prev & _PyGC_PREV_MASK);
  ------------------
  |  |  122|    142|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|    142|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
  157|    142|    return (PyGC_Head*)prev;
  158|    142|}
descrobject.c:_PyGCHead_NEXT:
  146|    142|static inline PyGC_Head* _PyGCHead_NEXT(PyGC_Head *gc) {
  147|    142|    uintptr_t next = gc->_gc_next;
  148|    142|    return (PyGC_Head*)next;
  149|    142|}
descrobject.c:_PyGCHead_SET_NEXT:
  150|    364|static inline void _PyGCHead_SET_NEXT(PyGC_Head *gc, PyGC_Head *next) {
  151|    364|    gc->_gc_next = (uintptr_t)next;
  152|    364|}
descrobject.c:_PyGCHead_SET_PREV:
  160|    253|static inline void _PyGCHead_SET_PREV(PyGC_Head *gc, PyGC_Head *prev) {
  161|    253|    uintptr_t uprev = (uintptr_t)prev;
  162|    253|    assert((uprev & ~_PyGC_PREV_MASK) == 0);
  ------------------
  |  Branch (162:5): [True: 253, False: 0]
  ------------------
  163|    253|    gc->_gc_prev = ((gc->_gc_prev & ~_PyGC_PREV_MASK) | uprev);
  ------------------
  |  |  122|    253|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|    253|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
  164|    253|}
descrobject.c:_PyObject_GC_TRACK:
  213|    111|{
  214|    111|    _PyObject_ASSERT_FROM(op, !_PyObject_GC_IS_TRACKED(op),
  ------------------
  |  |  414|    111|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 111, False: 0]
  |  |  ------------------
  |  |  415|    111|      ? (void)(0) \
  |  |  416|    111|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  215|    111|                          "object already tracked by the garbage collector",
  216|    111|                          filename, lineno, __func__);
  217|       |#ifdef Py_GIL_DISABLED
  218|       |    _PyObject_SET_GC_BITS(op, _PyGC_BITS_TRACKED);
  219|       |#else
  220|    111|    PyGC_Head *gc = _Py_AS_GC(op);
  221|    111|    _PyObject_ASSERT_FROM(op,
  ------------------
  |  |  414|    111|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 111, False: 0]
  |  |  ------------------
  |  |  415|    111|      ? (void)(0) \
  |  |  416|    111|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  222|    111|                          (gc->_gc_prev & _PyGC_PREV_MASK_COLLECTING) == 0,
  223|    111|                          "object is in generation which is garbage collected",
  224|    111|                          filename, lineno, __func__);
  225|       |
  226|    111|    struct _gc_runtime_state *gcstate = &_PyInterpreterState_GET()->gc;
  227|    111|    PyGC_Head *generation0 = gcstate->generation0;
  228|    111|    PyGC_Head *last = (PyGC_Head*)(generation0->_gc_prev);
  229|    111|    _PyGCHead_SET_NEXT(last, gc);
  230|    111|    _PyGCHead_SET_PREV(gc, last);
  231|    111|    _PyGCHead_SET_NEXT(gc, generation0);
  232|    111|    generation0->_gc_prev = (uintptr_t)gc;
  233|    111|    gcstate->heap_size++;
  234|    111|#endif
  235|    111|}
genobject.c:_PyObject_GC_UNTRACK:
  253|     42|{
  254|     42|    _PyObject_ASSERT_FROM(op, _PyObject_GC_IS_TRACKED(op),
  ------------------
  |  |  414|     42|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 42, False: 0]
  |  |  ------------------
  |  |  415|     42|      ? (void)(0) \
  |  |  416|     42|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  255|     42|                          "object not tracked by the garbage collector",
  256|     42|                          filename, lineno, __func__);
  257|       |
  258|       |#ifdef Py_GIL_DISABLED
  259|       |    _PyObject_CLEAR_GC_BITS(op, _PyGC_BITS_TRACKED);
  260|       |#else
  261|     42|    PyGC_Head *gc = _Py_AS_GC(op);
  262|     42|    PyGC_Head *prev = _PyGCHead_PREV(gc);
  263|     42|    PyGC_Head *next = _PyGCHead_NEXT(gc);
  264|     42|    _PyGCHead_SET_NEXT(prev, next);
  265|     42|    _PyGCHead_SET_PREV(next, prev);
  266|     42|    gc->_gc_next = 0;
  267|     42|    gc->_gc_prev &= _PyGC_PREV_MASK_FINALIZED;
  ------------------
  |  |  117|     42|#define _PyGC_PREV_MASK_FINALIZED  ((uintptr_t)1)
  ------------------
  268|     42|    struct _gc_runtime_state *gcstate = &_PyInterpreterState_GET()->gc;
  269|     42|    gcstate->heap_size--;
  270|     42|#endif
  271|     42|}
genobject.c:_PyObject_GC_IS_TRACKED:
   73|     84|static inline int _PyObject_GC_IS_TRACKED(PyObject *op) {
   74|       |#ifdef Py_GIL_DISABLED
   75|       |    return _PyObject_HAS_GC_BITS(op, _PyGC_BITS_TRACKED);
   76|       |#else
   77|     84|    PyGC_Head *gc = _Py_AS_GC(op);
   78|     84|    return (gc->_gc_next != 0);
   79|     84|#endif
   80|     84|}
genobject.c:_Py_AS_GC:
   17|    168|static inline PyGC_Head* _Py_AS_GC(PyObject *op) {
   18|    168|    char *gc = ((char*)op) - sizeof(PyGC_Head);
   19|    168|    return (PyGC_Head*)gc;
   20|    168|}
genobject.c:_PyGCHead_PREV:
  155|     42|static inline PyGC_Head* _PyGCHead_PREV(PyGC_Head *gc) {
  156|     42|    uintptr_t prev = (gc->_gc_prev & _PyGC_PREV_MASK);
  ------------------
  |  |  122|     42|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|     42|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
  157|     42|    return (PyGC_Head*)prev;
  158|     42|}
genobject.c:_PyGCHead_NEXT:
  146|     42|static inline PyGC_Head* _PyGCHead_NEXT(PyGC_Head *gc) {
  147|     42|    uintptr_t next = gc->_gc_next;
  148|     42|    return (PyGC_Head*)next;
  149|     42|}
genobject.c:_PyGCHead_SET_NEXT:
  150|    126|static inline void _PyGCHead_SET_NEXT(PyGC_Head *gc, PyGC_Head *next) {
  151|    126|    gc->_gc_next = (uintptr_t)next;
  152|    126|}
genobject.c:_PyGCHead_SET_PREV:
  160|     84|static inline void _PyGCHead_SET_PREV(PyGC_Head *gc, PyGC_Head *prev) {
  161|     84|    uintptr_t uprev = (uintptr_t)prev;
  162|     84|    assert((uprev & ~_PyGC_PREV_MASK) == 0);
  ------------------
  |  Branch (162:5): [True: 84, False: 0]
  ------------------
  163|     84|    gc->_gc_prev = ((gc->_gc_prev & ~_PyGC_PREV_MASK) | uprev);
  ------------------
  |  |  122|     84|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|     84|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
  164|     84|}
genobject.c:_PyObject_GC_TRACK:
  213|     42|{
  214|     42|    _PyObject_ASSERT_FROM(op, !_PyObject_GC_IS_TRACKED(op),
  ------------------
  |  |  414|     42|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 42, False: 0]
  |  |  ------------------
  |  |  415|     42|      ? (void)(0) \
  |  |  416|     42|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  215|     42|                          "object already tracked by the garbage collector",
  216|     42|                          filename, lineno, __func__);
  217|       |#ifdef Py_GIL_DISABLED
  218|       |    _PyObject_SET_GC_BITS(op, _PyGC_BITS_TRACKED);
  219|       |#else
  220|     42|    PyGC_Head *gc = _Py_AS_GC(op);
  221|     42|    _PyObject_ASSERT_FROM(op,
  ------------------
  |  |  414|     42|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 42, False: 0]
  |  |  ------------------
  |  |  415|     42|      ? (void)(0) \
  |  |  416|     42|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  222|     42|                          (gc->_gc_prev & _PyGC_PREV_MASK_COLLECTING) == 0,
  223|     42|                          "object is in generation which is garbage collected",
  224|     42|                          filename, lineno, __func__);
  225|       |
  226|     42|    struct _gc_runtime_state *gcstate = &_PyInterpreterState_GET()->gc;
  227|     42|    PyGC_Head *generation0 = gcstate->generation0;
  228|     42|    PyGC_Head *last = (PyGC_Head*)(generation0->_gc_prev);
  229|     42|    _PyGCHead_SET_NEXT(last, gc);
  230|     42|    _PyGCHead_SET_PREV(gc, last);
  231|     42|    _PyGCHead_SET_NEXT(gc, generation0);
  232|     42|    generation0->_gc_prev = (uintptr_t)gc;
  233|     42|    gcstate->heap_size++;
  234|     42|#endif
  235|     42|}
frameobject.c:_PyObject_GC_IS_TRACKED:
   73|    107|static inline int _PyObject_GC_IS_TRACKED(PyObject *op) {
   74|       |#ifdef Py_GIL_DISABLED
   75|       |    return _PyObject_HAS_GC_BITS(op, _PyGC_BITS_TRACKED);
   76|       |#else
   77|    107|    PyGC_Head *gc = _Py_AS_GC(op);
   78|    107|    return (gc->_gc_next != 0);
   79|    107|#endif
   80|    107|}
frameobject.c:_Py_AS_GC:
   17|    121|static inline PyGC_Head* _Py_AS_GC(PyObject *op) {
   18|    121|    char *gc = ((char*)op) - sizeof(PyGC_Head);
   19|    121|    return (PyGC_Head*)gc;
   20|    121|}
frameobject.c:_PyObject_GC_UNTRACK:
  253|     14|{
  254|     14|    _PyObject_ASSERT_FROM(op, _PyObject_GC_IS_TRACKED(op),
  ------------------
  |  |  414|     14|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 14, False: 0]
  |  |  ------------------
  |  |  415|     14|      ? (void)(0) \
  |  |  416|     14|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  255|     14|                          "object not tracked by the garbage collector",
  256|     14|                          filename, lineno, __func__);
  257|       |
  258|       |#ifdef Py_GIL_DISABLED
  259|       |    _PyObject_CLEAR_GC_BITS(op, _PyGC_BITS_TRACKED);
  260|       |#else
  261|     14|    PyGC_Head *gc = _Py_AS_GC(op);
  262|     14|    PyGC_Head *prev = _PyGCHead_PREV(gc);
  263|     14|    PyGC_Head *next = _PyGCHead_NEXT(gc);
  264|     14|    _PyGCHead_SET_NEXT(prev, next);
  265|     14|    _PyGCHead_SET_PREV(next, prev);
  266|     14|    gc->_gc_next = 0;
  267|     14|    gc->_gc_prev &= _PyGC_PREV_MASK_FINALIZED;
  ------------------
  |  |  117|     14|#define _PyGC_PREV_MASK_FINALIZED  ((uintptr_t)1)
  ------------------
  268|     14|    struct _gc_runtime_state *gcstate = &_PyInterpreterState_GET()->gc;
  269|     14|    gcstate->heap_size--;
  270|     14|#endif
  271|     14|}
frameobject.c:_PyGCHead_PREV:
  155|     14|static inline PyGC_Head* _PyGCHead_PREV(PyGC_Head *gc) {
  156|     14|    uintptr_t prev = (gc->_gc_prev & _PyGC_PREV_MASK);
  ------------------
  |  |  122|     14|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|     14|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
  157|     14|    return (PyGC_Head*)prev;
  158|     14|}
frameobject.c:_PyGCHead_NEXT:
  146|     14|static inline PyGC_Head* _PyGCHead_NEXT(PyGC_Head *gc) {
  147|     14|    uintptr_t next = gc->_gc_next;
  148|     14|    return (PyGC_Head*)next;
  149|     14|}
frameobject.c:_PyGCHead_SET_NEXT:
  150|     14|static inline void _PyGCHead_SET_NEXT(PyGC_Head *gc, PyGC_Head *next) {
  151|     14|    gc->_gc_next = (uintptr_t)next;
  152|     14|}
frameobject.c:_PyGCHead_SET_PREV:
  160|     14|static inline void _PyGCHead_SET_PREV(PyGC_Head *gc, PyGC_Head *prev) {
  161|     14|    uintptr_t uprev = (uintptr_t)prev;
  162|     14|    assert((uprev & ~_PyGC_PREV_MASK) == 0);
  ------------------
  |  Branch (162:5): [True: 14, False: 0]
  ------------------
  163|     14|    gc->_gc_prev = ((gc->_gc_prev & ~_PyGC_PREV_MASK) | uprev);
  ------------------
  |  |  122|     14|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|     14|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
  164|     14|}
funcobject.c:_PyObject_GC_TRACK:
  213|    752|{
  214|    752|    _PyObject_ASSERT_FROM(op, !_PyObject_GC_IS_TRACKED(op),
  ------------------
  |  |  414|    752|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 752, False: 0]
  |  |  ------------------
  |  |  415|    752|      ? (void)(0) \
  |  |  416|    752|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  215|    752|                          "object already tracked by the garbage collector",
  216|    752|                          filename, lineno, __func__);
  217|       |#ifdef Py_GIL_DISABLED
  218|       |    _PyObject_SET_GC_BITS(op, _PyGC_BITS_TRACKED);
  219|       |#else
  220|    752|    PyGC_Head *gc = _Py_AS_GC(op);
  221|    752|    _PyObject_ASSERT_FROM(op,
  ------------------
  |  |  414|    752|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 752, False: 0]
  |  |  ------------------
  |  |  415|    752|      ? (void)(0) \
  |  |  416|    752|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  222|    752|                          (gc->_gc_prev & _PyGC_PREV_MASK_COLLECTING) == 0,
  223|    752|                          "object is in generation which is garbage collected",
  224|    752|                          filename, lineno, __func__);
  225|       |
  226|    752|    struct _gc_runtime_state *gcstate = &_PyInterpreterState_GET()->gc;
  227|    752|    PyGC_Head *generation0 = gcstate->generation0;
  228|    752|    PyGC_Head *last = (PyGC_Head*)(generation0->_gc_prev);
  229|    752|    _PyGCHead_SET_NEXT(last, gc);
  230|    752|    _PyGCHead_SET_PREV(gc, last);
  231|    752|    _PyGCHead_SET_NEXT(gc, generation0);
  232|    752|    generation0->_gc_prev = (uintptr_t)gc;
  233|    752|    gcstate->heap_size++;
  234|    752|#endif
  235|    752|}
funcobject.c:_PyObject_GC_IS_TRACKED:
   73|    920|static inline int _PyObject_GC_IS_TRACKED(PyObject *op) {
   74|       |#ifdef Py_GIL_DISABLED
   75|       |    return _PyObject_HAS_GC_BITS(op, _PyGC_BITS_TRACKED);
   76|       |#else
   77|    920|    PyGC_Head *gc = _Py_AS_GC(op);
   78|    920|    return (gc->_gc_next != 0);
   79|    920|#endif
   80|    920|}
funcobject.c:_Py_AS_GC:
   17|  1.84k|static inline PyGC_Head* _Py_AS_GC(PyObject *op) {
   18|  1.84k|    char *gc = ((char*)op) - sizeof(PyGC_Head);
   19|  1.84k|    return (PyGC_Head*)gc;
   20|  1.84k|}
funcobject.c:_PyGCHead_SET_NEXT:
  150|  1.67k|static inline void _PyGCHead_SET_NEXT(PyGC_Head *gc, PyGC_Head *next) {
  151|  1.67k|    gc->_gc_next = (uintptr_t)next;
  152|  1.67k|}
funcobject.c:_PyGCHead_SET_PREV:
  160|    920|static inline void _PyGCHead_SET_PREV(PyGC_Head *gc, PyGC_Head *prev) {
  161|    920|    uintptr_t uprev = (uintptr_t)prev;
  162|    920|    assert((uprev & ~_PyGC_PREV_MASK) == 0);
  ------------------
  |  Branch (162:5): [True: 920, False: 0]
  ------------------
  163|    920|    gc->_gc_prev = ((gc->_gc_prev & ~_PyGC_PREV_MASK) | uprev);
  ------------------
  |  |  122|    920|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|    920|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
  164|    920|}
funcobject.c:_PyObject_GC_UNTRACK:
  253|    168|{
  254|    168|    _PyObject_ASSERT_FROM(op, _PyObject_GC_IS_TRACKED(op),
  ------------------
  |  |  414|    168|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 168, False: 0]
  |  |  ------------------
  |  |  415|    168|      ? (void)(0) \
  |  |  416|    168|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  255|    168|                          "object not tracked by the garbage collector",
  256|    168|                          filename, lineno, __func__);
  257|       |
  258|       |#ifdef Py_GIL_DISABLED
  259|       |    _PyObject_CLEAR_GC_BITS(op, _PyGC_BITS_TRACKED);
  260|       |#else
  261|    168|    PyGC_Head *gc = _Py_AS_GC(op);
  262|    168|    PyGC_Head *prev = _PyGCHead_PREV(gc);
  263|    168|    PyGC_Head *next = _PyGCHead_NEXT(gc);
  264|    168|    _PyGCHead_SET_NEXT(prev, next);
  265|    168|    _PyGCHead_SET_PREV(next, prev);
  266|    168|    gc->_gc_next = 0;
  267|    168|    gc->_gc_prev &= _PyGC_PREV_MASK_FINALIZED;
  ------------------
  |  |  117|    168|#define _PyGC_PREV_MASK_FINALIZED  ((uintptr_t)1)
  ------------------
  268|    168|    struct _gc_runtime_state *gcstate = &_PyInterpreterState_GET()->gc;
  269|    168|    gcstate->heap_size--;
  270|    168|#endif
  271|    168|}
funcobject.c:_PyGCHead_PREV:
  155|    168|static inline PyGC_Head* _PyGCHead_PREV(PyGC_Head *gc) {
  156|    168|    uintptr_t prev = (gc->_gc_prev & _PyGC_PREV_MASK);
  ------------------
  |  |  122|    168|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|    168|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
  157|    168|    return (PyGC_Head*)prev;
  158|    168|}
funcobject.c:_PyGCHead_NEXT:
  146|    168|static inline PyGC_Head* _PyGCHead_NEXT(PyGC_Head *gc) {
  147|    168|    uintptr_t next = gc->_gc_next;
  148|    168|    return (PyGC_Head*)next;
  149|    168|}
lazyimportobject.c:_PyObject_GC_TRACK:
  213|      4|{
  214|      4|    _PyObject_ASSERT_FROM(op, !_PyObject_GC_IS_TRACKED(op),
  ------------------
  |  |  414|      4|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 4, False: 0]
  |  |  ------------------
  |  |  415|      4|      ? (void)(0) \
  |  |  416|      4|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  215|      4|                          "object already tracked by the garbage collector",
  216|      4|                          filename, lineno, __func__);
  217|       |#ifdef Py_GIL_DISABLED
  218|       |    _PyObject_SET_GC_BITS(op, _PyGC_BITS_TRACKED);
  219|       |#else
  220|      4|    PyGC_Head *gc = _Py_AS_GC(op);
  221|      4|    _PyObject_ASSERT_FROM(op,
  ------------------
  |  |  414|      4|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 4, False: 0]
  |  |  ------------------
  |  |  415|      4|      ? (void)(0) \
  |  |  416|      4|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  222|      4|                          (gc->_gc_prev & _PyGC_PREV_MASK_COLLECTING) == 0,
  223|      4|                          "object is in generation which is garbage collected",
  224|      4|                          filename, lineno, __func__);
  225|       |
  226|      4|    struct _gc_runtime_state *gcstate = &_PyInterpreterState_GET()->gc;
  227|      4|    PyGC_Head *generation0 = gcstate->generation0;
  228|      4|    PyGC_Head *last = (PyGC_Head*)(generation0->_gc_prev);
  229|      4|    _PyGCHead_SET_NEXT(last, gc);
  230|      4|    _PyGCHead_SET_PREV(gc, last);
  231|      4|    _PyGCHead_SET_NEXT(gc, generation0);
  232|      4|    generation0->_gc_prev = (uintptr_t)gc;
  233|      4|    gcstate->heap_size++;
  234|      4|#endif
  235|      4|}
lazyimportobject.c:_PyObject_GC_IS_TRACKED:
   73|      4|static inline int _PyObject_GC_IS_TRACKED(PyObject *op) {
   74|       |#ifdef Py_GIL_DISABLED
   75|       |    return _PyObject_HAS_GC_BITS(op, _PyGC_BITS_TRACKED);
   76|       |#else
   77|      4|    PyGC_Head *gc = _Py_AS_GC(op);
   78|      4|    return (gc->_gc_next != 0);
   79|      4|#endif
   80|      4|}
lazyimportobject.c:_Py_AS_GC:
   17|      8|static inline PyGC_Head* _Py_AS_GC(PyObject *op) {
   18|      8|    char *gc = ((char*)op) - sizeof(PyGC_Head);
   19|      8|    return (PyGC_Head*)gc;
   20|      8|}
lazyimportobject.c:_PyGCHead_SET_NEXT:
  150|      8|static inline void _PyGCHead_SET_NEXT(PyGC_Head *gc, PyGC_Head *next) {
  151|      8|    gc->_gc_next = (uintptr_t)next;
  152|      8|}
lazyimportobject.c:_PyGCHead_SET_PREV:
  160|      4|static inline void _PyGCHead_SET_PREV(PyGC_Head *gc, PyGC_Head *prev) {
  161|      4|    uintptr_t uprev = (uintptr_t)prev;
  162|      4|    assert((uprev & ~_PyGC_PREV_MASK) == 0);
  ------------------
  |  Branch (162:5): [True: 4, False: 0]
  ------------------
  163|      4|    gc->_gc_prev = ((gc->_gc_prev & ~_PyGC_PREV_MASK) | uprev);
  ------------------
  |  |  122|      4|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|      4|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
  164|      4|}
methodobject.c:_PyObject_GC_TRACK:
  213|    881|{
  214|    881|    _PyObject_ASSERT_FROM(op, !_PyObject_GC_IS_TRACKED(op),
  ------------------
  |  |  414|    881|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 881, False: 0]
  |  |  ------------------
  |  |  415|    881|      ? (void)(0) \
  |  |  416|    881|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  215|    881|                          "object already tracked by the garbage collector",
  216|    881|                          filename, lineno, __func__);
  217|       |#ifdef Py_GIL_DISABLED
  218|       |    _PyObject_SET_GC_BITS(op, _PyGC_BITS_TRACKED);
  219|       |#else
  220|    881|    PyGC_Head *gc = _Py_AS_GC(op);
  221|    881|    _PyObject_ASSERT_FROM(op,
  ------------------
  |  |  414|    881|    ((expr) \
  |  |  ------------------
  |  |  |  Branch (414:6): [True: 881, False: 0]
  |  |  ------------------
  |  |  415|    881|      ? (void)(0) \
  |  |  416|    881|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  ------------------
  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  ------------------
  222|    881|                          (gc->_gc_prev & _PyGC_PREV_MASK_COLLECTING) == 0,
  223|    881|                          "object is in generation which is garbage collected",
  224|    881|                          filename, lineno, __func__);
  225|       |
  226|    881|    struct _gc_runtime_state *gcstate = &_PyInterpreterState_GET()->gc;
  227|    881|    PyGC_Head *generation0 = gcstate->generation0;
  228|    881|    PyGC_Head *last = (PyGC_Head*)(generation0->_gc_prev);
  229|    881|    _PyGCHead_SET_NEXT(last, gc);
  230|    881|    _PyGCHead_SET_PREV(gc, last);
  231|    881|    _PyGCHead_SET_NEXT(gc, generation0);
  232|    881|    generation0->_gc_prev = (uintptr_t)gc;
  233|    881|    gcstate->heap_size++;
  234|    881|#endif
  235|    881|}
methodobject.c:_PyObject_GC_IS_TRACKED:
   73|    881|static inline int _PyObject_GC_IS_TRACKED(PyObject *op) {
   74|       |#ifdef Py_GIL_DISABLED
   75|       |    return _PyObject_HAS_GC_BITS(op, _PyGC_BITS_TRACKED);
   76|       |#else
   77|    881|    PyGC_Head *gc = _Py_AS_GC(op);
   78|    881|    return (gc->_gc_next != 0);
   79|    881|#endif
   80|    881|}
methodobject.c:_Py_AS_GC:
   17|  1.76k|static inline PyGC_Head* _Py_AS_GC(PyObject *op) {
   18|  1.76k|    char *gc = ((char*)op) - sizeof(PyGC_Head);
   19|  1.76k|    return (PyGC_Head*)gc;
   20|  1.76k|}
methodobject.c:_PyGCHead_SET_NEXT:
  150|  1.76k|static inline void _PyGCHead_SET_NEXT(PyGC_Head *gc, PyGC_Head *next) {
  151|  1.76k|    gc->_gc_next = (uintptr_t)next;
  152|  1.76k|}
methodobject.c:_PyGCHead_SET_PREV:
  160|    881|static inline void _PyGCHead_SET_PREV(PyGC_Head *gc, PyGC_Head *prev) {
  161|    881|    uintptr_t uprev = (uintptr_t)prev;
  162|    881|    assert((uprev & ~_PyGC_PREV_MASK) == 0);
  ------------------
  |  Branch (162:5): [True: 881, False: 0]
  ------------------
  163|    881|    gc->_gc_prev = ((gc->_gc_prev & ~_PyGC_PREV_MASK) | uprev);
  ------------------
  |  |  122|    881|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|    881|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
  164|    881|}

ceval.c:_PyGen_GetGeneratorFromFrame:
   18|     41|{
   19|     41|    assert(frame->owner == FRAME_OWNED_BY_GENERATOR);
  ------------------
  |  Branch (19:5): [True: 41, False: 0]
  ------------------
   20|     41|    size_t offset_in_gen = offsetof(PyGenObject, gi_iframe);
   21|     41|    return (PyGenObject *)(((char *)frame) - offset_in_gen);
   22|     41|}
frame.c:_PyGen_GetGeneratorFromFrame:
   18|     21|{
   19|     21|    assert(frame->owner == FRAME_OWNED_BY_GENERATOR);
  ------------------
  |  Branch (19:5): [True: 21, False: 0]
  ------------------
   20|     21|    size_t offset_in_gen = offsetof(PyGenObject, gi_iframe);
   21|     21|    return (PyGenObject *)(((char *)frame) - offset_in_gen);
   22|     21|}

import.c:_Py_hashtable_get_entry:
  124|     16|{
  125|     16|    return ht->get_entry_func(ht, key);
  126|     16|}

typeobject.c:_PyThreadState_GetFrame:
  281|      4|{
  282|      4|    return _PyFrame_GetFirstComplete(tstate->current_frame);
  283|      4|}
typeobject.c:_PyFrame_GetFirstComplete:
  272|      4|{
  273|      4|    while (frame && _PyFrame_IsIncomplete(frame)) {
  ------------------
  |  Branch (273:12): [True: 4, False: 0]
  |  Branch (273:21): [True: 0, False: 4]
  ------------------
  274|      0|        frame = frame->previous;
  275|      0|    }
  276|      4|    return frame;
  277|      4|}
typeobject.c:_PyFrame_IsIncomplete:
  261|      4|{
  262|      4|    if (frame->owner >= FRAME_OWNED_BY_INTERPRETER) {
  ------------------
  |  Branch (262:9): [True: 0, False: 4]
  ------------------
  263|      0|        return true;
  264|      0|    }
  265|      4|    return frame->owner != FRAME_OWNED_BY_GENERATOR &&
  ------------------
  |  Branch (265:12): [True: 4, False: 0]
  ------------------
  266|      4|           frame->instr_ptr < _PyFrame_GetBytecode(frame) +
  ------------------
  |  Branch (266:12): [True: 0, False: 4]
  ------------------
  267|      4|                                  _PyFrame_GetCode(frame)->_co_firsttraceable;
  268|      4|}
typeobject.c:_PyFrame_GetBytecode:
   59|      4|{
   60|       |#ifdef Py_GIL_DISABLED
   61|       |    PyCodeObject *co = _PyFrame_GetCode(f);
   62|       |    _PyCodeArray *tlbc = _PyCode_GetTLBCArray(co);
   63|       |    assert(f->tlbc_index >= 0 && f->tlbc_index < tlbc->size);
   64|       |    return (_Py_CODEUNIT *)tlbc->entries[f->tlbc_index];
   65|       |#else
   66|      4|    return _PyCode_CODE(_PyFrame_GetCode(f));
  ------------------
  |  |   16|      4|#define _PyCode_CODE(CO) _Py_RVALUE((_Py_CODEUNIT *)(CO)->co_code_adaptive)
  |  |  ------------------
  |  |  |  |  277|      4|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  ------------------
  ------------------
   67|      4|#endif
   68|      4|}
typeobject.c:_PyFrame_GetCode:
   20|     16|static inline PyCodeObject *_PyFrame_GetCode(_PyInterpreterFrame *f) {
   21|     16|    assert(!PyStackRef_IsNull(f->f_executable));
  ------------------
  |  Branch (21:5): [True: 16, False: 0]
  ------------------
   22|     16|    PyObject *executable = PyStackRef_AsPyObjectBorrow(f->f_executable);
   23|     16|    assert(PyCode_Check(executable));
  ------------------
  |  Branch (23:5): [True: 16, False: 0]
  ------------------
   24|     16|    return (PyCodeObject *)executable;
   25|     16|}
typeobject.c:_PyFrame_GetLocalsArray:
  223|      8|{
  224|      8|    return frame->localsplus;
  225|      8|}
ceval.c:_PyFrame_GetCode:
   20|  25.4k|static inline PyCodeObject *_PyFrame_GetCode(_PyInterpreterFrame *f) {
   21|  25.4k|    assert(!PyStackRef_IsNull(f->f_executable));
  ------------------
  |  Branch (21:5): [True: 25.4k, False: 0]
  ------------------
   22|  25.4k|    PyObject *executable = PyStackRef_AsPyObjectBorrow(f->f_executable);
   23|  25.4k|    assert(PyCode_Check(executable));
  ------------------
  |  Branch (23:5): [True: 25.4k, False: 0]
  ------------------
   24|  25.4k|    return (PyCodeObject *)executable;
   25|  25.4k|}
ceval.c:_PyFrame_GetStackPointer:
  232|  37.6k|{
  233|  37.6k|    assert(frame->stackpointer != NULL);
  ------------------
  |  Branch (233:5): [True: 37.6k, False: 0]
  ------------------
  234|  37.6k|    _PyStackRef *sp = frame->stackpointer;
  235|  37.6k|#ifndef NDEBUG
  236|       |    frame->stackpointer = NULL;
  237|  37.6k|#endif
  238|  37.6k|    return sp;
  239|  37.6k|}
ceval.c:_PyFrame_SetStackPointer:
  243|  37.2k|{
  244|  37.2k|    assert(frame->stackpointer == NULL);
  ------------------
  |  Branch (244:5): [True: 37.2k, False: 0]
  ------------------
  245|  37.2k|    frame->stackpointer = stack_pointer;
  246|  37.2k|}
ceval.c:_PyThreadState_HasStackSpace:
  334|    618|{
  335|    618|    assert(
  ------------------
  |  Branch (335:5): [True: 0, False: 618]
  |  Branch (335:5): [True: 0, False: 0]
  |  Branch (335:5): [True: 618, False: 0]
  |  Branch (335:5): [True: 618, False: 0]
  ------------------
  336|    618|        (tstate->datastack_top == NULL && tstate->datastack_limit == NULL)
  337|    618|        ||
  338|    618|        (tstate->datastack_top != NULL && tstate->datastack_limit != NULL)
  339|    618|    );
  340|    618|    return tstate->datastack_top != NULL &&
  ------------------
  |  Branch (340:12): [True: 618, False: 0]
  ------------------
  341|    618|        size < tstate->datastack_limit - tstate->datastack_top;
  ------------------
  |  Branch (341:9): [True: 618, False: 0]
  ------------------
  342|    618|}
ceval.c:_PyFrame_PushUnchecked:
  355|    544|{
  356|    544|    CALL_STAT_INC(frames_pushed);
  ------------------
  |  |   76|    544|#define CALL_STAT_INC(name) ((void)0)
  ------------------
  357|    544|    PyFunctionObject *func_obj = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(func);
  358|    544|    PyCodeObject *code = (PyCodeObject *)func_obj->func_code;
  359|    544|    _PyInterpreterFrame *new_frame = (_PyInterpreterFrame *)tstate->datastack_top;
  360|    544|    tstate->datastack_top += code->co_framesize;
  361|    544|    assert(tstate->datastack_top < tstate->datastack_limit);
  ------------------
  |  Branch (361:5): [True: 544, False: 0]
  ------------------
  362|    544|    _PyFrame_Initialize(tstate, new_frame, func, NULL, code, null_locals_from,
  363|    544|                        previous);
  364|    544|    return new_frame;
  365|    544|}
ceval.c:_PyFrame_PushTrampolineUnchecked:
  371|     74|{
  372|     74|    CALL_STAT_INC(frames_pushed);
  ------------------
  |  |   76|     74|#define CALL_STAT_INC(name) ((void)0)
  ------------------
  373|     74|    _PyInterpreterFrame *frame = (_PyInterpreterFrame *)tstate->datastack_top;
  374|     74|    tstate->datastack_top += code->co_framesize;
  375|     74|    assert(tstate->datastack_top < tstate->datastack_limit);
  ------------------
  |  Branch (375:5): [True: 74, False: 0]
  ------------------
  376|     74|    frame->previous = previous;
  377|     74|    frame->f_funcobj = PyStackRef_None;
  ------------------
  |  |  473|     74|#define PyStackRef_None ((_PyStackRef){.bits = ((uintptr_t)&_Py_NoneStruct) | Py_TAG_REFCNT })
  |  |  ------------------
  |  |  |  |   55|     74|#define Py_TAG_REFCNT 1
  |  |  ------------------
  ------------------
  378|     74|    frame->f_executable = PyStackRef_FromPyObjectNew(code);
  ------------------
  |  |  599|     74|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     74|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     74|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  379|       |#ifdef Py_DEBUG
  380|       |    frame->f_builtins = NULL;
  381|       |    frame->f_globals = NULL;
  382|       |#endif
  383|     74|    frame->f_locals = NULL;
  384|     74|    assert(stackdepth <= code->co_stacksize);
  ------------------
  |  Branch (384:5): [True: 74, False: 0]
  ------------------
  385|     74|    frame->stackpointer = frame->localsplus + code->co_nlocalsplus + stackdepth;
  386|     74|    frame->frame_obj = NULL;
  387|       |#ifdef Py_GIL_DISABLED
  388|       |    _PyFrame_InitializeTLBC(tstate, frame, code);
  389|       |#else
  390|     74|    frame->instr_ptr = _PyCode_CODE(code);
  ------------------
  |  |   16|     74|#define _PyCode_CODE(CO) _Py_RVALUE((_Py_CODEUNIT *)(CO)->co_code_adaptive)
  |  |  ------------------
  |  |  |  |  277|     74|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  ------------------
  ------------------
  391|     74|#endif
  392|     74|    frame->owner = FRAME_OWNED_BY_THREAD;
  393|     74|    frame->visited = 0;
  394|       |#ifdef Py_DEBUG
  395|       |    frame->lltrace = 0;
  396|       |#endif
  397|     74|    frame->return_offset = 0;
  398|     74|    return frame;
  399|     74|}
ceval.c:_PyFrame_GetBytecode:
   59|  1.42k|{
   60|       |#ifdef Py_GIL_DISABLED
   61|       |    PyCodeObject *co = _PyFrame_GetCode(f);
   62|       |    _PyCodeArray *tlbc = _PyCode_GetTLBCArray(co);
   63|       |    assert(f->tlbc_index >= 0 && f->tlbc_index < tlbc->size);
   64|       |    return (_Py_CODEUNIT *)tlbc->entries[f->tlbc_index];
   65|       |#else
   66|  1.42k|    return _PyCode_CODE(_PyFrame_GetCode(f));
  ------------------
  |  |   16|  1.42k|#define _PyCode_CODE(CO) _Py_RVALUE((_Py_CODEUNIT *)(CO)->co_code_adaptive)
  |  |  ------------------
  |  |  |  |  277|  1.42k|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  ------------------
  ------------------
   67|  1.42k|#endif
   68|  1.42k|}
ceval.c:_PyFrame_StackPush:
  117|    107|static inline void _PyFrame_StackPush(_PyInterpreterFrame *f, _PyStackRef value) {
  118|    107|    *f->stackpointer = value;
  119|    107|    f->stackpointer++;
  120|    107|}
ceval.c:_PyFrame_Stackbase:
  101|  2.10k|static inline _PyStackRef *_PyFrame_Stackbase(_PyInterpreterFrame *f) {
  102|  2.10k|    return (f->localsplus + _PyFrame_GetCode(f)->co_nlocalsplus);
  103|  2.10k|}
ceval.c:_PyFrame_IsIncomplete:
  261|    756|{
  262|    756|    if (frame->owner >= FRAME_OWNED_BY_INTERPRETER) {
  ------------------
  |  Branch (262:9): [True: 452, False: 304]
  ------------------
  263|    452|        return true;
  264|    452|    }
  265|    304|    return frame->owner != FRAME_OWNED_BY_GENERATOR &&
  ------------------
  |  Branch (265:12): [True: 304, False: 0]
  ------------------
  266|    304|           frame->instr_ptr < _PyFrame_GetBytecode(frame) +
  ------------------
  |  Branch (266:12): [True: 0, False: 304]
  ------------------
  267|    304|                                  _PyFrame_GetCode(frame)->_co_firsttraceable;
  268|    756|}
ceval.c:_PyFrame_Copy:
  134|     21|{
  135|     21|    dest->f_executable = PyStackRef_MakeHeapSafe(src->f_executable);
  136|       |    // Don't leave a dangling pointer to the old frame when creating generators
  137|       |    // and coroutines:
  138|     21|    dest->previous = NULL;
  139|     21|    dest->f_funcobj = PyStackRef_MakeHeapSafe(src->f_funcobj);
  140|     21|    dest->f_globals = src->f_globals;
  141|     21|    dest->f_builtins = src->f_builtins;
  142|     21|    dest->f_locals = src->f_locals;
  143|     21|    dest->frame_obj = src->frame_obj;
  144|     21|    dest->instr_ptr = src->instr_ptr;
  145|       |#ifdef Py_GIL_DISABLED
  146|       |    dest->tlbc_index = src->tlbc_index;
  147|       |#endif
  148|     21|    assert(src->stackpointer != NULL);
  ------------------
  |  Branch (148:5): [True: 21, False: 0]
  ------------------
  149|     21|    int stacktop = (int)(src->stackpointer - src->localsplus);
  150|     21|    assert(stacktop >= 0);
  ------------------
  |  Branch (150:5): [True: 21, False: 0]
  ------------------
  151|     21|    dest->stackpointer = dest->localsplus + stacktop;
  152|       |    // visited is GC bookkeeping for the current stack walk, not frame state.
  153|     21|    dest->visited = 0;
  154|       |#ifdef Py_DEBUG
  155|       |    dest->lltrace = src->lltrace;
  156|       |#endif
  157|    111|    for (int i = 0; i < stacktop; i++) {
  ------------------
  |  Branch (157:21): [True: 90, False: 21]
  ------------------
  158|     90|        dest->localsplus[i] = PyStackRef_MakeHeapSafe(src->localsplus[i]);
  159|     90|    }
  160|     21|}
ceval.c:_PyFrame_GetFrameObject:
  295|    102|{
  296|       |
  297|    102|    assert(!_PyFrame_IsIncomplete(frame));
  ------------------
  |  Branch (297:5): [True: 102, False: 0]
  ------------------
  298|    102|    PyFrameObject *res =  frame->frame_obj;
  299|    102|    if (res != NULL) {
  ------------------
  |  Branch (299:9): [True: 22, False: 80]
  ------------------
  300|     22|        return res;
  301|     22|    }
  302|     80|    return _PyFrame_MakeAndSetFrameObject(frame);
  303|    102|}
ceval.c:_PyFrame_StackPop:
  111|    163|static inline _PyStackRef _PyFrame_StackPop(_PyInterpreterFrame *f) {
  112|    163|    assert(f->stackpointer > _PyFrame_Stackbase(f));
  ------------------
  |  Branch (112:5): [True: 163, False: 0]
  ------------------
  113|    163|    f->stackpointer--;
  114|    163|    return *f->stackpointer;
  115|    163|}
ceval.c:_PyFrame_Initialize:
  190|  1.65k|{
  191|  1.65k|    frame->previous = previous;
  192|  1.65k|    frame->f_funcobj = func;
  193|  1.65k|    frame->f_executable = PyStackRef_FromPyObjectNew(code);
  ------------------
  |  |  599|  1.65k|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|  1.65k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.65k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  194|  1.65k|    PyFunctionObject *func_obj = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(func);
  195|  1.65k|    frame->f_builtins = func_obj->func_builtins;
  196|  1.65k|    frame->f_globals = func_obj->func_globals;
  197|  1.65k|    frame->f_locals = locals;
  198|  1.65k|    frame->stackpointer = frame->localsplus + code->co_nlocalsplus;
  199|  1.65k|    frame->frame_obj = NULL;
  200|       |#ifdef Py_GIL_DISABLED
  201|       |    _PyFrame_InitializeTLBC(tstate, frame, code);
  202|       |#else
  203|  1.65k|    (void)tstate;
  204|  1.65k|    frame->instr_ptr = _PyCode_CODE(code);
  ------------------
  |  |   16|  1.65k|#define _PyCode_CODE(CO) _Py_RVALUE((_Py_CODEUNIT *)(CO)->co_code_adaptive)
  |  |  ------------------
  |  |  |  |  277|  1.65k|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  ------------------
  ------------------
  205|  1.65k|#endif
  206|  1.65k|    frame->return_offset = 0;
  207|  1.65k|    frame->owner = FRAME_OWNED_BY_THREAD;
  208|  1.65k|    frame->visited = 0;
  209|       |#ifdef Py_DEBUG
  210|       |    frame->lltrace = 0;
  211|       |#endif
  212|       |
  213|  5.95k|    for (int i = null_locals_from; i < code->co_nlocalsplus; i++) {
  ------------------
  |  Branch (213:36): [True: 4.29k, False: 1.65k]
  ------------------
  214|  4.29k|        frame->localsplus[i] = PyStackRef_NULL;
  215|  4.29k|    }
  216|  1.65k|}
ceval.c:_PyThreadState_GetFrame:
  281|    109|{
  282|    109|    return _PyFrame_GetFirstComplete(tstate->current_frame);
  283|    109|}
ceval.c:_PyFrame_GetFirstComplete:
  272|    109|{
  273|    118|    while (frame && _PyFrame_IsIncomplete(frame)) {
  ------------------
  |  Branch (273:12): [True: 109, False: 9]
  |  Branch (273:21): [True: 9, False: 100]
  ------------------
  274|      9|        frame = frame->previous;
  275|      9|    }
  276|    109|    return frame;
  277|    109|}
frame.c:_PyFrame_GetCode:
   20|    205|static inline PyCodeObject *_PyFrame_GetCode(_PyInterpreterFrame *f) {
   21|    205|    assert(!PyStackRef_IsNull(f->f_executable));
  ------------------
  |  Branch (21:5): [True: 205, False: 0]
  ------------------
   22|    205|    PyObject *executable = PyStackRef_AsPyObjectBorrow(f->f_executable);
   23|    205|    assert(PyCode_Check(executable));
  ------------------
  |  Branch (23:5): [True: 205, False: 0]
  ------------------
   24|    205|    return (PyCodeObject *)executable;
   25|    205|}
frame.c:_PyFrame_Copy:
  134|     14|{
  135|     14|    dest->f_executable = PyStackRef_MakeHeapSafe(src->f_executable);
  136|       |    // Don't leave a dangling pointer to the old frame when creating generators
  137|       |    // and coroutines:
  138|     14|    dest->previous = NULL;
  139|     14|    dest->f_funcobj = PyStackRef_MakeHeapSafe(src->f_funcobj);
  140|     14|    dest->f_globals = src->f_globals;
  141|     14|    dest->f_builtins = src->f_builtins;
  142|     14|    dest->f_locals = src->f_locals;
  143|     14|    dest->frame_obj = src->frame_obj;
  144|     14|    dest->instr_ptr = src->instr_ptr;
  145|       |#ifdef Py_GIL_DISABLED
  146|       |    dest->tlbc_index = src->tlbc_index;
  147|       |#endif
  148|     14|    assert(src->stackpointer != NULL);
  ------------------
  |  Branch (148:5): [True: 14, False: 0]
  ------------------
  149|     14|    int stacktop = (int)(src->stackpointer - src->localsplus);
  150|     14|    assert(stacktop >= 0);
  ------------------
  |  Branch (150:5): [True: 14, False: 0]
  ------------------
  151|     14|    dest->stackpointer = dest->localsplus + stacktop;
  152|       |    // visited is GC bookkeeping for the current stack walk, not frame state.
  153|     14|    dest->visited = 0;
  154|       |#ifdef Py_DEBUG
  155|       |    dest->lltrace = src->lltrace;
  156|       |#endif
  157|     82|    for (int i = 0; i < stacktop; i++) {
  ------------------
  |  Branch (157:21): [True: 68, False: 14]
  ------------------
  158|     68|        dest->localsplus[i] = PyStackRef_MakeHeapSafe(src->localsplus[i]);
  159|     68|    }
  160|     14|}
frame.c:_PyFrame_IsIncomplete:
  261|     65|{
  262|     65|    if (frame->owner >= FRAME_OWNED_BY_INTERPRETER) {
  ------------------
  |  Branch (262:9): [True: 9, False: 56]
  ------------------
  263|      9|        return true;
  264|      9|    }
  265|     56|    return frame->owner != FRAME_OWNED_BY_GENERATOR &&
  ------------------
  |  Branch (265:12): [True: 56, False: 0]
  ------------------
  266|     56|           frame->instr_ptr < _PyFrame_GetBytecode(frame) +
  ------------------
  |  Branch (266:12): [True: 0, False: 56]
  ------------------
  267|     56|                                  _PyFrame_GetCode(frame)->_co_firsttraceable;
  268|     65|}
frame.c:_PyFrame_GetFirstComplete:
  272|     14|{
  273|     23|    while (frame && _PyFrame_IsIncomplete(frame)) {
  ------------------
  |  Branch (273:12): [True: 23, False: 0]
  |  Branch (273:21): [True: 9, False: 14]
  ------------------
  274|      9|        frame = frame->previous;
  275|      9|    }
  276|     14|    return frame;
  277|     14|}
frame.c:_PyFrame_GetFrameObject:
  295|     14|{
  296|       |
  297|     14|    assert(!_PyFrame_IsIncomplete(frame));
  ------------------
  |  Branch (297:5): [True: 14, False: 0]
  ------------------
  298|     14|    PyFrameObject *res =  frame->frame_obj;
  299|     14|    if (res != NULL) {
  ------------------
  |  Branch (299:9): [True: 2, False: 12]
  ------------------
  300|      2|        return res;
  301|      2|    }
  302|     12|    return _PyFrame_MakeAndSetFrameObject(frame);
  303|     14|}
frame.c:_PyFrame_GetBytecode:
   59|     56|{
   60|       |#ifdef Py_GIL_DISABLED
   61|       |    PyCodeObject *co = _PyFrame_GetCode(f);
   62|       |    _PyCodeArray *tlbc = _PyCode_GetTLBCArray(co);
   63|       |    assert(f->tlbc_index >= 0 && f->tlbc_index < tlbc->size);
   64|       |    return (_Py_CODEUNIT *)tlbc->entries[f->tlbc_index];
   65|       |#else
   66|     56|    return _PyCode_CODE(_PyFrame_GetCode(f));
  ------------------
  |  |   16|     56|#define _PyCode_CODE(CO) _Py_RVALUE((_Py_CODEUNIT *)(CO)->co_code_adaptive)
  |  |  ------------------
  |  |  |  |  277|     56|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  ------------------
  ------------------
   67|     56|#endif
   68|     56|}
pystate.c:_PyThreadState_HasStackSpace:
  334|  1.11k|{
  335|  1.11k|    assert(
  ------------------
  |  Branch (335:5): [True: 1, False: 1.11k]
  |  Branch (335:5): [True: 1, False: 0]
  |  Branch (335:5): [True: 1.11k, False: 0]
  |  Branch (335:5): [True: 1.11k, False: 0]
  ------------------
  336|  1.11k|        (tstate->datastack_top == NULL && tstate->datastack_limit == NULL)
  337|  1.11k|        ||
  338|  1.11k|        (tstate->datastack_top != NULL && tstate->datastack_limit != NULL)
  339|  1.11k|    );
  340|  1.11k|    return tstate->datastack_top != NULL &&
  ------------------
  |  Branch (340:12): [True: 1.11k, False: 1]
  ------------------
  341|  1.11k|        size < tstate->datastack_limit - tstate->datastack_top;
  ------------------
  |  Branch (341:9): [True: 1.11k, False: 0]
  ------------------
  342|  1.11k|}
sysmodule.c:_PyFrame_IsIncomplete:
  261|      1|{
  262|      1|    if (frame->owner >= FRAME_OWNED_BY_INTERPRETER) {
  ------------------
  |  Branch (262:9): [True: 0, False: 1]
  ------------------
  263|      0|        return true;
  264|      0|    }
  265|      1|    return frame->owner != FRAME_OWNED_BY_GENERATOR &&
  ------------------
  |  Branch (265:12): [True: 1, False: 0]
  ------------------
  266|      1|           frame->instr_ptr < _PyFrame_GetBytecode(frame) +
  ------------------
  |  Branch (266:12): [True: 0, False: 1]
  ------------------
  267|      1|                                  _PyFrame_GetCode(frame)->_co_firsttraceable;
  268|      1|}
sysmodule.c:_PyFrame_GetBytecode:
   59|      1|{
   60|       |#ifdef Py_GIL_DISABLED
   61|       |    PyCodeObject *co = _PyFrame_GetCode(f);
   62|       |    _PyCodeArray *tlbc = _PyCode_GetTLBCArray(co);
   63|       |    assert(f->tlbc_index >= 0 && f->tlbc_index < tlbc->size);
   64|       |    return (_Py_CODEUNIT *)tlbc->entries[f->tlbc_index];
   65|       |#else
   66|      1|    return _PyCode_CODE(_PyFrame_GetCode(f));
  ------------------
  |  |   16|      1|#define _PyCode_CODE(CO) _Py_RVALUE((_Py_CODEUNIT *)(CO)->co_code_adaptive)
  |  |  ------------------
  |  |  |  |  277|      1|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  ------------------
  ------------------
   67|      1|#endif
   68|      1|}
sysmodule.c:_PyFrame_GetCode:
   20|      2|static inline PyCodeObject *_PyFrame_GetCode(_PyInterpreterFrame *f) {
   21|      2|    assert(!PyStackRef_IsNull(f->f_executable));
  ------------------
  |  Branch (21:5): [True: 2, False: 0]
  ------------------
   22|      2|    PyObject *executable = PyStackRef_AsPyObjectBorrow(f->f_executable);
   23|      2|    assert(PyCode_Check(executable));
  ------------------
  |  Branch (23:5): [True: 2, False: 0]
  ------------------
   24|      2|    return (PyCodeObject *)executable;
   25|      2|}
sysmodule.c:_PyFrame_GetFrameObject:
  295|      1|{
  296|       |
  297|      1|    assert(!_PyFrame_IsIncomplete(frame));
  ------------------
  |  Branch (297:5): [True: 1, False: 0]
  ------------------
  298|      1|    PyFrameObject *res =  frame->frame_obj;
  299|      1|    if (res != NULL) {
  ------------------
  |  Branch (299:9): [True: 0, False: 1]
  ------------------
  300|      0|        return res;
  301|      0|    }
  302|      1|    return _PyFrame_MakeAndSetFrameObject(frame);
  303|      1|}
traceback.c:_PyFrame_GetCode:
   20|    102|static inline PyCodeObject *_PyFrame_GetCode(_PyInterpreterFrame *f) {
   21|    102|    assert(!PyStackRef_IsNull(f->f_executable));
  ------------------
  |  Branch (21:5): [True: 102, False: 0]
  ------------------
   22|    102|    PyObject *executable = PyStackRef_AsPyObjectBorrow(f->f_executable);
   23|    102|    assert(PyCode_Check(executable));
  ------------------
  |  Branch (23:5): [True: 102, False: 0]
  ------------------
   24|    102|    return (PyCodeObject *)executable;
   25|    102|}
traceback.c:_PyFrame_GetBytecode:
   59|    102|{
   60|       |#ifdef Py_GIL_DISABLED
   61|       |    PyCodeObject *co = _PyFrame_GetCode(f);
   62|       |    _PyCodeArray *tlbc = _PyCode_GetTLBCArray(co);
   63|       |    assert(f->tlbc_index >= 0 && f->tlbc_index < tlbc->size);
   64|       |    return (_Py_CODEUNIT *)tlbc->entries[f->tlbc_index];
   65|       |#else
   66|    102|    return _PyCode_CODE(_PyFrame_GetCode(f));
  ------------------
  |  |   16|    102|#define _PyCode_CODE(CO) _Py_RVALUE((_Py_CODEUNIT *)(CO)->co_code_adaptive)
  |  |  ------------------
  |  |  |  |  277|    102|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  ------------------
  ------------------
   67|    102|#endif
   68|    102|}
genobject.c:_PyFrame_StackPush:
  117|     34|static inline void _PyFrame_StackPush(_PyInterpreterFrame *f, _PyStackRef value) {
  118|     34|    *f->stackpointer = value;
  119|     34|    f->stackpointer++;
  120|     34|}
genobject.c:_PyFrame_NumSlotsForCodeObject:
  126|     21|{
  127|       |    /* This function needs to remain in sync with the calculation of
  128|       |     * co_framesize in Tools/build/deepfreeze.py */
  129|     21|    assert(code->co_framesize >= FRAME_SPECIALS_SIZE);
  ------------------
  |  Branch (129:5): [True: 21, False: 0]
  ------------------
  130|     21|    return code->co_framesize - FRAME_SPECIALS_SIZE;
  ------------------
  |  |  122|     21|#define FRAME_SPECIALS_SIZE ((int)((sizeof(_PyInterpreterFrame)-1)/sizeof(PyObject *)))
  ------------------
  131|     21|}
genobject.c:_PyFrame_GetCode:
   20|      6|static inline PyCodeObject *_PyFrame_GetCode(_PyInterpreterFrame *f) {
   21|      6|    assert(!PyStackRef_IsNull(f->f_executable));
  ------------------
  |  Branch (21:5): [True: 6, False: 0]
  ------------------
   22|      6|    PyObject *executable = PyStackRef_AsPyObjectBorrow(f->f_executable);
   23|      6|    assert(PyCode_Check(executable));
  ------------------
  |  Branch (23:5): [True: 6, False: 0]
  ------------------
   24|      6|    return (PyCodeObject *)executable;
   25|      6|}
frameobject.c:_PyFrame_GetLocalsArray:
  223|     14|{
  224|     14|    return frame->localsplus;
  225|     14|}
frameobject.c:_PyFrame_IsIncomplete:
  261|      5|{
  262|      5|    if (frame->owner >= FRAME_OWNED_BY_INTERPRETER) {
  ------------------
  |  Branch (262:9): [True: 0, False: 5]
  ------------------
  263|      0|        return true;
  264|      0|    }
  265|      5|    return frame->owner != FRAME_OWNED_BY_GENERATOR &&
  ------------------
  |  Branch (265:12): [True: 5, False: 0]
  ------------------
  266|      5|           frame->instr_ptr < _PyFrame_GetBytecode(frame) +
  ------------------
  |  Branch (266:12): [True: 0, False: 5]
  ------------------
  267|      5|                                  _PyFrame_GetCode(frame)->_co_firsttraceable;
  268|      5|}
frameobject.c:_PyFrame_GetCode:
   20|     23|static inline PyCodeObject *_PyFrame_GetCode(_PyInterpreterFrame *f) {
   21|     23|    assert(!PyStackRef_IsNull(f->f_executable));
  ------------------
  |  Branch (21:5): [True: 23, False: 0]
  ------------------
   22|     23|    PyObject *executable = PyStackRef_AsPyObjectBorrow(f->f_executable);
   23|     23|    assert(PyCode_Check(executable));
  ------------------
  |  Branch (23:5): [True: 23, False: 0]
  ------------------
   24|     23|    return (PyCodeObject *)executable;
   25|     23|}
frameobject.c:_PyFrame_GetBytecode:
   59|      5|{
   60|       |#ifdef Py_GIL_DISABLED
   61|       |    PyCodeObject *co = _PyFrame_GetCode(f);
   62|       |    _PyCodeArray *tlbc = _PyCode_GetTLBCArray(co);
   63|       |    assert(f->tlbc_index >= 0 && f->tlbc_index < tlbc->size);
   64|       |    return (_Py_CODEUNIT *)tlbc->entries[f->tlbc_index];
   65|       |#else
   66|      5|    return _PyCode_CODE(_PyFrame_GetCode(f));
  ------------------
  |  |   16|      5|#define _PyCode_CODE(CO) _Py_RVALUE((_Py_CODEUNIT *)(CO)->co_code_adaptive)
  |  |  ------------------
  |  |  |  |  277|      5|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  ------------------
  ------------------
   67|      5|#endif
   68|      5|}
lazyimportobject.c:_PyFrame_GetCode:
   20|      8|static inline PyCodeObject *_PyFrame_GetCode(_PyInterpreterFrame *f) {
   21|      8|    assert(!PyStackRef_IsNull(f->f_executable));
  ------------------
  |  Branch (21:5): [True: 8, False: 0]
  ------------------
   22|      8|    PyObject *executable = PyStackRef_AsPyObjectBorrow(f->f_executable);
   23|      8|    assert(PyCode_Check(executable));
  ------------------
  |  Branch (23:5): [True: 8, False: 0]
  ------------------
   24|      8|    return (PyCodeObject *)executable;
   25|      8|}
lazyimportobject.c:_PyFrame_GetBytecode:
   59|      4|{
   60|       |#ifdef Py_GIL_DISABLED
   61|       |    PyCodeObject *co = _PyFrame_GetCode(f);
   62|       |    _PyCodeArray *tlbc = _PyCode_GetTLBCArray(co);
   63|       |    assert(f->tlbc_index >= 0 && f->tlbc_index < tlbc->size);
   64|       |    return (_Py_CODEUNIT *)tlbc->entries[f->tlbc_index];
   65|       |#else
   66|      4|    return _PyCode_CODE(_PyFrame_GetCode(f));
  ------------------
  |  |   16|      4|#define _PyCode_CODE(CO) _Py_RVALUE((_Py_CODEUNIT *)(CO)->co_code_adaptive)
  |  |  ------------------
  |  |  |  |  277|      4|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  ------------------
  ------------------
   67|      4|#endif
   68|      4|}

listobject.c:_PyList_AppendTakeRef:
   38|  5.42k|{
   39|  5.42k|    assert(self != NULL && newitem != NULL);
  ------------------
  |  Branch (39:5): [True: 5.42k, False: 0]
  |  Branch (39:5): [True: 5.42k, False: 0]
  ------------------
   40|  5.42k|    assert(PyList_Check(self));
  ------------------
  |  Branch (40:5): [True: 5.42k, False: 0]
  ------------------
   41|  5.42k|    Py_ssize_t len = Py_SIZE(self);
  ------------------
  |  |  214|  5.42k|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  5.42k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  5.42k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   42|  5.42k|    Py_ssize_t allocated = self->allocated;
   43|  5.42k|    assert((size_t)len + 1 < PY_SSIZE_T_MAX);
  ------------------
  |  Branch (43:5): [True: 5.42k, False: 0]
  ------------------
   44|  5.42k|    if (allocated > len) {
  ------------------
  |  Branch (44:9): [True: 5.06k, False: 365]
  ------------------
   45|       |#ifdef Py_GIL_DISABLED
   46|       |        _Py_atomic_store_ptr_release(&self->ob_item[len], newitem);
   47|       |#else
   48|  5.06k|        PyList_SET_ITEM(self, len, newitem);
  ------------------
  |  |   50|  5.06k|    PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|  5.06k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  5.06k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|  5.06k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  5.06k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   49|  5.06k|#endif
   50|  5.06k|        Py_SET_SIZE(self, len + 1);
  ------------------
  |  |  216|  5.06k|#  define Py_SET_SIZE(ob, size) _Py_SET_SIZE_impl(_PyVarObject_CAST(ob), (size))
  |  |  ------------------
  |  |  |  |  182|  5.06k|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  5.06k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   51|  5.06k|        return 0;
   52|  5.06k|    }
   53|    365|    return _PyList_AppendTakeRefListResize(self, newitem);
   54|  5.42k|}
ceval.c:_PyList_AppendTakeRef:
   38|    566|{
   39|    566|    assert(self != NULL && newitem != NULL);
  ------------------
  |  Branch (39:5): [True: 566, False: 0]
  |  Branch (39:5): [True: 566, False: 0]
  ------------------
   40|    566|    assert(PyList_Check(self));
  ------------------
  |  Branch (40:5): [True: 566, False: 0]
  ------------------
   41|    566|    Py_ssize_t len = Py_SIZE(self);
  ------------------
  |  |  214|    566|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    566|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    566|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   42|    566|    Py_ssize_t allocated = self->allocated;
   43|    566|    assert((size_t)len + 1 < PY_SSIZE_T_MAX);
  ------------------
  |  Branch (43:5): [True: 566, False: 0]
  ------------------
   44|    566|    if (allocated > len) {
  ------------------
  |  Branch (44:9): [True: 467, False: 99]
  ------------------
   45|       |#ifdef Py_GIL_DISABLED
   46|       |        _Py_atomic_store_ptr_release(&self->ob_item[len], newitem);
   47|       |#else
   48|    467|        PyList_SET_ITEM(self, len, newitem);
  ------------------
  |  |   50|    467|    PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|    467|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    467|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|    467|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    467|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   49|    467|#endif
   50|    467|        Py_SET_SIZE(self, len + 1);
  ------------------
  |  |  216|    467|#  define Py_SET_SIZE(ob, size) _Py_SET_SIZE_impl(_PyVarObject_CAST(ob), (size))
  |  |  ------------------
  |  |  |  |  182|    467|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    467|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   51|    467|        return 0;
   52|    467|    }
   53|     99|    return _PyList_AppendTakeRefListResize(self, newitem);
   54|    566|}

pystate.c:llist_init:
   55|      4|{
   56|      4|    head->next = head;
   57|      4|    head->prev = head;
   58|      4|}
_threadmodule.c:llist_init:
   55|      1|{
   56|      1|    head->next = head;
   57|      1|    head->prev = head;
   58|      1|}

getargs.c:_PyOnceFlag_CallOnce:
  152|      1|{
  153|      1|    if (_Py_atomic_load_uint8(&flag->v) == _Py_ONCE_INITIALIZED) {
  ------------------
  |  |   18|      1|#define _Py_ONCE_INITIALIZED 4
  ------------------
  |  Branch (153:9): [True: 0, False: 1]
  ------------------
  154|      0|        return 0;
  155|      0|    }
  156|      1|    return _PyOnceFlag_CallOnceSlow(flag, fn, arg);
  157|      1|}
pystate.c:PyMutex_LockFlags:
   62|      2|{
   63|      2|    uint8_t expected = _Py_UNLOCKED;
  ------------------
  |  |    9|      2|#define _Py_UNLOCKED    0
  ------------------
   64|      2|    if (!_Py_atomic_compare_exchange_uint8(&m->_bits, &expected, _Py_LOCKED)) {
  ------------------
  |  |   10|      2|#define _Py_LOCKED      1
  ------------------
  |  Branch (64:9): [True: 0, False: 2]
  ------------------
   65|      0|        _PyMutex_LockTimed(m, -1, flags);
   66|      0|    }
   67|      2|}

longobject.c:_PyLong_InitTag:
  292|    666|{
  293|    666|    assert(PyLong_Check(op));
  ------------------
  |  Branch (293:5): [True: 666, False: 0]
  ------------------
  294|    666|    op->long_value.lv_tag = SIGN_ZERO; /* non-immortal zero */
  ------------------
  |  |  173|    666|#define SIGN_ZERO 1
  ------------------
  295|    666|}
longobject.c:_PyLong_SetSignAndDigitCount:
  302|    855|{
  303|    855|    assert(size >= 0);
  ------------------
  |  Branch (303:5): [True: 855, False: 0]
  ------------------
  304|    855|    assert(-1 <= sign && sign <= 1);
  ------------------
  |  Branch (304:5): [True: 855, False: 0]
  |  Branch (304:5): [True: 855, False: 0]
  ------------------
  305|    855|    assert(sign != 0 || size == 0);
  ------------------
  |  Branch (305:5): [True: 855, False: 0]
  |  Branch (305:5): [True: 0, False: 0]
  ------------------
  306|    855|    assert(!_PyLong_IsSmallInt(op));
  ------------------
  |  Branch (306:5): [True: 855, False: 0]
  ------------------
  307|    855|    op->long_value.lv_tag = TAG_FROM_SIGN_AND_SIZE(sign, size);
  ------------------
  |  |  298|    855|    ((uintptr_t)(1 - (sign)) | ((uintptr_t)(size) << NON_SIZE_BITS))
  |  |  ------------------
  |  |  |  |  175|    855|#define NON_SIZE_BITS 3
  |  |  ------------------
  ------------------
  308|    855|}
longobject.c:_PyLong_CompactSign:
  268|      3|{
  269|      3|    assert(PyLong_Check(op));
  ------------------
  |  Branch (269:5): [True: 3, False: 0]
  ------------------
  270|      3|    assert(_PyLong_IsCompact((PyLongObject *)op));
  ------------------
  |  Branch (270:5): [True: 3, False: 0]
  ------------------
  271|      3|    return 1 - (op->long_value.lv_tag & SIGN_MASK);
  ------------------
  |  |  172|      3|#define SIGN_MASK 3
  ------------------
  272|      3|}
longobject.c:_PyLong_NonCompactSign:
  276|    436|{
  277|    436|    assert(PyLong_Check(op));
  ------------------
  |  Branch (277:5): [True: 436, False: 0]
  ------------------
  278|    436|    assert(!_PyLong_IsCompact((PyLongObject *)op));
  ------------------
  |  Branch (278:5): [True: 436, False: 0]
  ------------------
  279|    436|    return 1 - (op->long_value.lv_tag & SIGN_MASK);
  ------------------
  |  |  172|    436|#define SIGN_MASK 3
  ------------------
  280|    436|}
longobject.c:_PyLong_DigitCount:
  252|    507|{
  253|    507|    assert(PyLong_Check(op));
  ------------------
  |  Branch (253:5): [True: 507, False: 0]
  ------------------
  254|    507|    return (Py_ssize_t)(op->long_value.lv_tag >> NON_SIZE_BITS);
  ------------------
  |  |  175|    507|#define NON_SIZE_BITS 3
  ------------------
  255|    507|}
longobject.c:_PyLong_IsNonNegativeCompact:
  205|      2|_PyLong_IsNonNegativeCompact(const PyLongObject* op) {
  206|      2|    assert(PyLong_Check(op));
  ------------------
  |  Branch (206:5): [True: 2, False: 0]
  ------------------
  207|      2|    return ((op->long_value.lv_tag & ~IMMORTALITY_BIT_MASK) <= (1 << NON_SIZE_BITS));
  ------------------
  |  |  176|      2|#define IMMORTALITY_BIT_MASK (1 << 2)
  ------------------
                  return ((op->long_value.lv_tag & ~IMMORTALITY_BIT_MASK) <= (1 << NON_SIZE_BITS));
  ------------------
  |  |  175|      2|#define NON_SIZE_BITS 3
  ------------------
  208|      2|}
longobject.c:_PyLong_IsNegative:
  225|     60|{
  226|     60|    return (op->long_value.lv_tag & SIGN_MASK) == SIGN_NEGATIVE;
  ------------------
  |  |  172|     60|#define SIGN_MASK 3
  ------------------
                  return (op->long_value.lv_tag & SIGN_MASK) == SIGN_NEGATIVE;
  ------------------
  |  |  174|     60|#define SIGN_NEGATIVE 2
  ------------------
  227|     60|}
longobject.c:_PyLong_IsPositive:
  231|      1|{
  232|      1|    return (op->long_value.lv_tag & SIGN_MASK) == 0;
  ------------------
  |  |  172|      1|#define SIGN_MASK 3
  ------------------
  233|      1|}
longobject.c:_PyLong_IsZero:
  219|      9|{
  220|      9|    return (op->long_value.lv_tag & SIGN_MASK) == SIGN_ZERO;
  ------------------
  |  |  172|      9|#define SIGN_MASK 3
  ------------------
                  return (op->long_value.lv_tag & SIGN_MASK) == SIGN_ZERO;
  ------------------
  |  |  173|      9|#define SIGN_ZERO 1
  ------------------
  221|      9|}
longobject.c:_PyLong_SetDigitCount:
  312|      2|{
  313|      2|    assert(size >= 0);
  ------------------
  |  Branch (313:5): [True: 2, False: 0]
  ------------------
  314|      2|    assert(!_PyLong_IsSmallInt(op));
  ------------------
  |  Branch (314:5): [True: 2, False: 0]
  ------------------
  315|      2|    op->long_value.lv_tag = (((size_t)size) << NON_SIZE_BITS) | (op->long_value.lv_tag & SIGN_MASK);
  ------------------
  |  |  175|      2|#define NON_SIZE_BITS 3
  ------------------
                  op->long_value.lv_tag = (((size_t)size) << NON_SIZE_BITS) | (op->long_value.lv_tag & SIGN_MASK);
  ------------------
  |  |  172|      2|#define SIGN_MASK 3
  ------------------
  316|      2|}
longobject.c:_PyLong_IsSmallInt:
  238|  1.11k|{
  239|  1.11k|    assert(PyLong_Check(op));
  ------------------
  |  Branch (239:5): [True: 1.11k, False: 0]
  ------------------
  240|  1.11k|    bool is_small_int = (op->long_value.lv_tag & IMMORTALITY_BIT_MASK) != 0;
  ------------------
  |  |  176|  1.11k|#define IMMORTALITY_BIT_MASK (1 << 2)
  ------------------
  241|  1.11k|    if (is_small_int) {
  ------------------
  |  Branch (241:9): [True: 0, False: 1.11k]
  ------------------
  242|      0|        assert(PyLong_CheckExact(op));
  ------------------
  |  Branch (242:9): [True: 0, False: 0]
  ------------------
  243|      0|        assert(_Py_IsImmortal(op));
  ------------------
  |  Branch (243:9): [True: 0, False: 0]
  ------------------
  244|      0|        assert((_PyLong_IsCompact(op)
  ------------------
  |  Branch (244:9): [True: 0, False: 0]
  |  Branch (244:9): [True: 0, False: 0]
  |  Branch (244:9): [True: 0, False: 0]
  ------------------
  245|      0|                && _PY_IS_SMALL_INT(_PyLong_CompactValue(op))));
  246|      0|    }
  247|  1.11k|    return is_small_int;
  248|  1.11k|}
longobject.c:_PyLong_BothAreCompact:
  212|     56|_PyLong_BothAreCompact(const PyLongObject* a, const PyLongObject* b) {
  213|     56|    assert(PyLong_Check(a));
  ------------------
  |  Branch (213:5): [True: 56, False: 0]
  ------------------
  214|     56|    assert(PyLong_Check(b));
  ------------------
  |  Branch (214:5): [True: 56, False: 0]
  ------------------
  215|     56|    return (a->long_value.lv_tag | b->long_value.lv_tag) < (2 << NON_SIZE_BITS);
  ------------------
  |  |  175|     56|#define NON_SIZE_BITS 3
  ------------------
  216|     56|}
longobject.c:_PyLong_SignedDigitCount:
  260|     74|{
  261|     74|    assert(PyLong_Check(op));
  ------------------
  |  Branch (261:5): [True: 74, False: 0]
  ------------------
  262|     74|    Py_ssize_t sign = 1 - (op->long_value.lv_tag & SIGN_MASK);
  ------------------
  |  |  172|     74|#define SIGN_MASK 3
  ------------------
  263|     74|    return sign * (Py_ssize_t)(op->long_value.lv_tag >> NON_SIZE_BITS);
  ------------------
  |  |  175|     74|#define NON_SIZE_BITS 3
  ------------------
  264|     74|}
object.c:_PyLong_GetZero:
   73|      1|{ return (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS]; }
  ------------------
  |  |   59|      1|#define _PyLong_SMALL_INTS _Py_SINGLETON(small_ints)
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              { return (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS]; }
  ------------------
  |  |   98|      1|#define _PY_NSMALLNEGINTS           5
  ------------------
object.c:_PyLong_GetOne:
   78|      1|{ return (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS+1]; }
  ------------------
  |  |   59|      1|#define _PyLong_SMALL_INTS _Py_SINGLETON(small_ints)
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              { return (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS+1]; }
  ------------------
  |  |   98|      1|#define _PY_NSMALLNEGINTS           5
  ------------------
rangeobject.c:_PyLong_GetZero:
   73|      8|{ return (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS]; }
  ------------------
  |  |   59|      8|#define _PyLong_SMALL_INTS _Py_SINGLETON(small_ints)
  |  |  ------------------
  |  |  |  |   18|      8|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      8|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              { return (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS]; }
  ------------------
  |  |   98|      8|#define _PY_NSMALLNEGINTS           5
  ------------------
rangeobject.c:_PyLong_GetOne:
   78|      8|{ return (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS+1]; }
  ------------------
  |  |   59|      8|#define _PyLong_SMALL_INTS _Py_SINGLETON(small_ints)
  |  |  ------------------
  |  |  |  |   18|      8|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      8|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              { return (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS+1]; }
  ------------------
  |  |   98|      8|#define _PY_NSMALLNEGINTS           5
  ------------------
_warnings.c:_PyLong_GetZero:
   73|      5|{ return (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS]; }
  ------------------
  |  |   59|      5|#define _PyLong_SMALL_INTS _Py_SINGLETON(small_ints)
  |  |  ------------------
  |  |  |  |   18|      5|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      5|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              { return (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS]; }
  ------------------
  |  |   98|      5|#define _PY_NSMALLNEGINTS           5
  ------------------
ceval.c:_PyLong_CheckExactAndCompact:
  345|    730|{
  346|    730|    return PyLong_CheckExact(op) && _PyLong_IsCompact((const PyLongObject *)op);
  ------------------
  |  |   14|    730|#define PyLong_CheckExact(op) Py_IS_TYPE((op), &PyLong_Type)
  |  |  ------------------
  |  |  |  |  215|  1.46k|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    730|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    730|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 730, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (346:37): [True: 730, False: 0]
  ------------------
  347|    730|}
ceval.c:_PyLong_BothAreCompact:
  212|      4|_PyLong_BothAreCompact(const PyLongObject* a, const PyLongObject* b) {
  213|      4|    assert(PyLong_Check(a));
  ------------------
  |  Branch (213:5): [True: 4, False: 0]
  ------------------
  214|      4|    assert(PyLong_Check(b));
  ------------------
  |  Branch (214:5): [True: 4, False: 0]
  ------------------
  215|      4|    return (a->long_value.lv_tag | b->long_value.lv_tag) < (2 << NON_SIZE_BITS);
  ------------------
  |  |  175|      4|#define NON_SIZE_BITS 3
  ------------------
  216|      4|}
ceval.c:_PyLong_IsNonNegativeCompact:
  205|    431|_PyLong_IsNonNegativeCompact(const PyLongObject* op) {
  206|    431|    assert(PyLong_Check(op));
  ------------------
  |  Branch (206:5): [True: 431, False: 0]
  ------------------
  207|    431|    return ((op->long_value.lv_tag & ~IMMORTALITY_BIT_MASK) <= (1 << NON_SIZE_BITS));
  ------------------
  |  |  176|    431|#define IMMORTALITY_BIT_MASK (1 << 2)
  ------------------
                  return ((op->long_value.lv_tag & ~IMMORTALITY_BIT_MASK) <= (1 << NON_SIZE_BITS));
  ------------------
  |  |  175|    431|#define NON_SIZE_BITS 3
  ------------------
  208|    431|}
ceval.c:_PyLong_DigitCount:
  252|    234|{
  253|    234|    assert(PyLong_Check(op));
  ------------------
  |  Branch (253:5): [True: 234, False: 0]
  ------------------
  254|    234|    return (Py_ssize_t)(op->long_value.lv_tag >> NON_SIZE_BITS);
  ------------------
  |  |  175|    234|#define NON_SIZE_BITS 3
  ------------------
  255|    234|}
ceval.c:_PyLong_IsZero:
  219|     57|{
  220|     57|    return (op->long_value.lv_tag & SIGN_MASK) == SIGN_ZERO;
  ------------------
  |  |  172|     57|#define SIGN_MASK 3
  ------------------
                  return (op->long_value.lv_tag & SIGN_MASK) == SIGN_ZERO;
  ------------------
  |  |  173|     57|#define SIGN_ZERO 1
  ------------------
  221|     57|}
instrumentation.c:_PyLong_GetZero:
   73|      1|{ return (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS]; }
  ------------------
  |  |   59|      1|#define _PyLong_SMALL_INTS _Py_SINGLETON(small_ints)
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              { return (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS]; }
  ------------------
  |  |   98|      1|#define _PY_NSMALLNEGINTS           5
  ------------------
specialize.c:_PyLong_IsNonNegativeCompact:
  205|      7|_PyLong_IsNonNegativeCompact(const PyLongObject* op) {
  206|      7|    assert(PyLong_Check(op));
  ------------------
  |  Branch (206:5): [True: 7, False: 0]
  ------------------
  207|      7|    return ((op->long_value.lv_tag & ~IMMORTALITY_BIT_MASK) <= (1 << NON_SIZE_BITS));
  ------------------
  |  |  176|      7|#define IMMORTALITY_BIT_MASK (1 << 2)
  ------------------
                  return ((op->long_value.lv_tag & ~IMMORTALITY_BIT_MASK) <= (1 << NON_SIZE_BITS));
  ------------------
  |  |  175|      7|#define NON_SIZE_BITS 3
  ------------------
  208|      7|}
specialize.c:_PyLong_CheckExactAndCompact:
  345|      4|{
  346|      4|    return PyLong_CheckExact(op) && _PyLong_IsCompact((const PyLongObject *)op);
  ------------------
  |  |   14|      4|#define PyLong_CheckExact(op) Py_IS_TYPE((op), &PyLong_Type)
  |  |  ------------------
  |  |  |  |  215|      8|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (346:37): [True: 4, False: 0]
  ------------------
  347|      4|}
textio.c:_PyLong_GetZero:
   73|      2|{ return (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS]; }
  ------------------
  |  |   59|      2|#define _PyLong_SMALL_INTS _Py_SINGLETON(small_ints)
  |  |  ------------------
  |  |  |  |   18|      2|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      2|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
              { return (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS]; }
  ------------------
  |  |   98|      2|#define _PY_NSMALLNEGINTS           5
  ------------------

obmalloc.c:_PyAnnotateMemoryMap:
   39|      3|{
   40|      3|    return 0;
   41|      3|}

moduleobject.c:_PyModule_GetDefOrNull:
   48|     12|static inline PyModuleDef *_PyModule_GetDefOrNull(PyObject *arg) {
   49|     12|    PyModuleObject *mod = _PyModule_CAST(arg);
  ------------------
  |  |   46|     12|    (assert(PyModule_Check(op)), _Py_CAST(PyModuleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|     12|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (49:27): [True: 12, False: 0]
  ------------------
   50|     12|    if (mod->md_token_is_def) {
  ------------------
  |  Branch (50:9): [True: 12, False: 0]
  ------------------
   51|     12|        return (PyModuleDef *)mod->md_token;
   52|     12|    }
   53|      0|    return NULL;
   54|     12|}
moduleobject.c:_PyModule_GetDict:
   67|    301|static inline PyObject* _PyModule_GetDict(PyObject *mod) {
   68|    301|    PyObject *dict = _PyModule_CAST(mod)->md_dict;
  ------------------
  |  |   46|    301|    (assert(PyModule_Check(op)), _Py_CAST(PyModuleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|    301|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (68:22): [True: 301, False: 0]
  ------------------
   69|       |    // _PyModule_GetDict(mod) must not be used after calling module_clear(mod)
   70|    301|    assert(dict != NULL);
  ------------------
  |  Branch (70:5): [True: 301, False: 0]
  ------------------
   71|    301|    return dict;  // borrowed reference
   72|    301|}
moduleobject.c:_PyModule_GetState:
   63|     12|static inline void* _PyModule_GetState(PyObject* mod) {
   64|     12|    return _PyModule_CAST(mod)->md_state;
  ------------------
  |  |   46|     12|    (assert(PyModule_Check(op)), _Py_CAST(PyModuleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|     12|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (64:12): [True: 12, False: 0]
  ------------------
   65|     12|}
typeobject.c:_PyModule_GetToken:
   57|     30|static inline PyModuleDef *_PyModule_GetToken(PyObject *arg) {
   58|     30|    PyModuleObject *mod = _PyModule_CAST(arg);
  ------------------
  |  |   46|     30|    (assert(PyModule_Check(op)), _Py_CAST(PyModuleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|     30|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (58:27): [True: 30, False: 0]
  ------------------
   59|      0|    return (PyModuleDef *)mod->md_token;
   60|     30|}
import.c:_PyModule_GetDefOrNull:
   48|      4|static inline PyModuleDef *_PyModule_GetDefOrNull(PyObject *arg) {
   49|      4|    PyModuleObject *mod = _PyModule_CAST(arg);
  ------------------
  |  |   46|      4|    (assert(PyModule_Check(op)), _Py_CAST(PyModuleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (49:27): [True: 4, False: 0]
  ------------------
   50|      4|    if (mod->md_token_is_def) {
  ------------------
  |  Branch (50:9): [True: 4, False: 0]
  ------------------
   51|      4|        return (PyModuleDef *)mod->md_token;
   52|      4|    }
   53|      0|    return NULL;
   54|      4|}
posixmodule.c:_PyModule_GetState:
   63|     17|static inline void* _PyModule_GetState(PyObject* mod) {
   64|     17|    return _PyModule_CAST(mod)->md_state;
  ------------------
  |  |   46|     17|    (assert(PyModule_Check(op)), _Py_CAST(PyModuleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|     17|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (64:12): [True: 17, False: 0]
  ------------------
   65|     17|}
_iomodule.c:_PyModule_GetState:
   63|      6|static inline void* _PyModule_GetState(PyObject* mod) {
   64|      6|    return _PyModule_CAST(mod)->md_state;
  ------------------
  |  |   46|      6|    (assert(PyModule_Check(op)), _Py_CAST(PyModuleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (64:12): [True: 6, False: 0]
  ------------------
   65|      6|}
bufferedio.c:_PyModule_GetState:
   63|      3|static inline void* _PyModule_GetState(PyObject* mod) {
   64|      3|    return _PyModule_CAST(mod)->md_state;
  ------------------
  |  |   46|      3|    (assert(PyModule_Check(op)), _Py_CAST(PyModuleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (64:12): [True: 3, False: 0]
  ------------------
   65|      3|}
textio.c:_PyModule_GetState:
   63|      3|static inline void* _PyModule_GetState(PyObject* mod) {
   64|      3|    return _PyModule_CAST(mod)->md_state;
  ------------------
  |  |   46|      3|    (assert(PyModule_Check(op)), _Py_CAST(PyModuleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (64:12): [True: 3, False: 0]
  ------------------
   65|      3|}
_threadmodule.c:_PyModule_GetState:
   63|     51|static inline void* _PyModule_GetState(PyObject* mod) {
   64|     51|    return _PyModule_CAST(mod)->md_state;
  ------------------
  |  |   46|     51|    (assert(PyModule_Check(op)), _Py_CAST(PyModuleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|     51|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (64:12): [True: 51, False: 0]
  ------------------
   65|     51|}
timemodule.c:_PyModule_GetState:
   63|      3|static inline void* _PyModule_GetState(PyObject* mod) {
   64|      3|    return _PyModule_CAST(mod)->md_state;
  ------------------
  |  |   46|      3|    (assert(PyModule_Check(op)), _Py_CAST(PyModuleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (64:12): [True: 3, False: 0]
  ------------------
   65|      3|}
_abc.c:_PyModule_GetState:
   63|    134|static inline void* _PyModule_GetState(PyObject* mod) {
   64|    134|    return _PyModule_CAST(mod)->md_state;
  ------------------
  |  |   46|    134|    (assert(PyModule_Check(op)), _Py_CAST(PyModuleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|    134|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (64:12): [True: 134, False: 0]
  ------------------
   65|    134|}

longobject.c:_PyObject_Init:
  486|    666|{
  487|    666|    assert(op != NULL);
  ------------------
  |  Branch (487:5): [True: 666, False: 0]
  ------------------
  488|    666|    Py_SET_TYPE(op, typeobj);
  ------------------
  |  |  217|    666|#  define Py_SET_TYPE(ob, type) Py_SET_TYPE(_PyObject_CAST(ob), type)
  |  |  ------------------
  |  |  |  |  171|    666|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    666|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  489|    666|    assert(_PyType_HasFeature(typeobj, Py_TPFLAGS_HEAPTYPE) || _Py_IsImmortal(typeobj));
  ------------------
  |  Branch (489:5): [True: 0, False: 666]
  |  Branch (489:5): [True: 666, False: 0]
  ------------------
  490|    666|    _Py_INCREF_TYPE(typeobj);
  ------------------
  |  |  315|    666|#  define _Py_INCREF_TYPE Py_INCREF
  |  |  ------------------
  |  |  |  |  310|    666|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    666|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    666|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  491|    666|    _Py_NewReference(op);
  492|    666|}
longobject.c:_PyType_HasFeature:
  290|    666|_PyType_HasFeature(PyTypeObject *type, unsigned long feature) {
  291|    666|    return ((type->tp_flags) & feature) != 0;
  292|    666|}
longobject.c:_Py_DECREF_SPECIALIZED:
  234|     11|{
  235|     11|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|     11|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     11|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     11|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 0, False: 11]
  |  |  ------------------
  ------------------
  236|      0|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  237|      0|        return;
  238|      0|    }
  239|     11|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|     11|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  240|       |#ifdef Py_REF_DEBUG
  241|       |    _Py_DEC_REFTOTAL(PyInterpreterState_Get());
  242|       |#endif
  243|     11|    if (--op->ob_refcnt != 0) {
  ------------------
  |  Branch (243:9): [True: 0, False: 11]
  ------------------
  244|      0|        assert(op->ob_refcnt > 0);
  ------------------
  |  Branch (244:9): [True: 0, False: 0]
  ------------------
  245|      0|    }
  246|     11|    else {
  247|       |#ifdef Py_TRACE_REFS
  248|       |        _Py_ForgetReference(op);
  249|       |#endif
  250|       |        _PyReftracerTrack(op, PyRefTracer_DESTROY);
  ------------------
  |  |  112|     11|    do { \
  |  |  113|     11|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  114|     11|        if (tracer->tracer_func != NULL) { \
  |  |  ------------------
  |  |  |  Branch (114:13): [True: 0, False: 11]
  |  |  ------------------
  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  117|      0|        } \
  |  |  118|     11|    } while(0)
  |  |  ------------------
  |  |  |  Branch (118:13): [Folded, False: 11]
  |  |  ------------------
  ------------------
  251|     11|        destruct(op);
  252|     11|    }
  253|     11|}
dictobject.c:_Py_INCREF_MORTAL:
 1024|  3.53k|{
 1025|  3.53k|    assert(!_Py_IsStaticImmortal(op));
  ------------------
  |  Branch (1025:5): [True: 3.53k, False: 0]
  ------------------
 1026|  3.53k|    op->ob_refcnt++;
 1027|  3.53k|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|  3.53k|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
 1028|       |#if defined(Py_REF_DEBUG) && !defined(Py_LIMITED_API)
 1029|       |    if (!_Py_IsImmortal(op)) {
 1030|       |        _Py_INCREF_IncRefTotal();
 1031|       |    }
 1032|       |#endif
 1033|  3.53k|}
dictobject.c:Py_DECREF_MORTAL:
  453|    752|{
  454|    752|    assert(!_Py_IsStaticImmortal(op));
  ------------------
  |  Branch (454:5): [True: 752, False: 0]
  ------------------
  455|    752|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|    752|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  456|    752|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (456:9): [True: 0, False: 752]
  ------------------
  457|      0|        _Py_Dealloc(op);
  458|      0|    }
  459|    752|}
dictobject.c:_PyObject_HashFast:
  842|  22.6k|{
  843|  22.6k|    if (PyUnicode_CheckExact(op)) {
  ------------------
  |  |  104|  22.6k|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  ------------------
  |  |  |  |  215|  22.6k|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|  22.6k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|  22.6k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 22.0k, False: 607]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  844|  22.0k|        Py_hash_t hash = PyUnstable_Unicode_GET_CACHED_HASH(op);
  845|  22.0k|        if (hash != -1) {
  ------------------
  |  Branch (845:13): [True: 21.7k, False: 271]
  ------------------
  846|  21.7k|            return hash;
  847|  21.7k|        }
  848|  22.0k|    }
  849|    878|    return PyObject_Hash(op);
  850|  22.6k|}
dictobject.c:_PyObject_ResurrectStart:
  682|    503|{
  683|    503|    assert(Py_REFCNT(op) == 0);
  ------------------
  |  Branch (683:5): [True: 503, False: 0]
  ------------------
  684|       |#ifdef Py_REF_DEBUG
  685|       |    _Py_IncRefTotal(_PyThreadState_GET());
  686|       |#endif
  687|       |#ifdef Py_GIL_DISABLED
  688|       |    _Py_atomic_store_uintptr_relaxed(&op->ob_tid, _Py_ThreadId());
  689|       |    _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, 1);
  690|       |    _Py_atomic_store_ssize_relaxed(&op->ob_ref_shared, 0);
  691|       |#else
  692|    503|    Py_SET_REFCNT(op, 1);
  ------------------
  |  |  201|    503|#  define Py_SET_REFCNT(ob, refcnt) Py_SET_REFCNT(_PyObject_CAST(ob), (refcnt))
  |  |  ------------------
  |  |  |  |  171|    503|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    503|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  693|    503|#endif
  694|       |#ifdef Py_TRACE_REFS
  695|       |    _Py_ResurrectReference(op);
  696|       |#endif
  697|    503|}
dictobject.c:_PyObject_ResurrectEnd:
  704|    503|{
  705|       |#ifdef Py_REF_DEBUG
  706|       |    _Py_DecRefTotal(_PyThreadState_GET());
  707|       |#endif
  708|    503|#ifndef Py_GIL_DISABLED
  709|    503|    Py_SET_REFCNT(op, Py_REFCNT(op) - 1);
  ------------------
  |  |  201|    503|#  define Py_SET_REFCNT(ob, refcnt) Py_SET_REFCNT(_PyObject_CAST(ob), (refcnt))
  |  |  ------------------
  |  |  |  |  171|    503|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    503|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  710|    503|    if (Py_REFCNT(op) == 0) {
  ------------------
  |  |  119|    503|    #  define Py_REFCNT(ob) _Py_REFCNT(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    503|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    503|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (710:9): [True: 503, False: 0]
  ------------------
  711|       |# ifdef Py_TRACE_REFS
  712|       |        _Py_ForgetReference(op);
  713|       |# endif
  714|    503|        return 0;
  715|    503|    }
  716|      0|    return 1;
  717|       |#else
  718|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  719|       |    Py_ssize_t shared = _Py_atomic_load_ssize_acquire(&op->ob_ref_shared);
  720|       |    if (_Py_IsOwnedByCurrentThread(op) && local == 1 && shared == 0) {
  721|       |        // Fast-path: object has a single refcount and is owned by this thread
  722|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, 0);
  723|       |# ifdef Py_TRACE_REFS
  724|       |        _Py_ForgetReference(op);
  725|       |# endif
  726|       |        return 0;
  727|       |    }
  728|       |    // Slow-path: object has a shared refcount or is not owned by this thread
  729|       |    return _PyObject_ResurrectEndSlow(op);
  730|       |#endif
  731|    503|}
dictobject.c:_PyObject_IsUniquelyReferenced:
  185|    284|{
  186|    284|#if !defined(Py_GIL_DISABLED)
  187|    284|    return Py_REFCNT(ob) == 1;
  ------------------
  |  |  119|    284|    #  define Py_REFCNT(ob) _Py_REFCNT(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    284|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    284|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  188|       |#else
  189|       |    // NOTE: the entire ob_ref_shared field must be zero, including flags, to
  190|       |    // ensure that other threads cannot concurrently create new references to
  191|       |    // this object.
  192|       |    return (_Py_IsOwnedByCurrentThread(ob) &&
  193|       |            _Py_atomic_load_uint32_relaxed(&ob->ob_ref_local) == 1 &&
  194|       |            _Py_atomic_load_ssize_relaxed(&ob->ob_ref_shared) == 0);
  195|       |#endif
  196|    284|}
dictobject.c:_PyObject_InlineValues:
  949|    560|{
  950|    560|    PyTypeObject *tp = Py_TYPE(obj);
  ------------------
  |  |  213|    560|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    560|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    560|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  951|    560|    assert(tp->tp_basicsize > 0 && (size_t)tp->tp_basicsize % sizeof(PyObject *) == 0);
  ------------------
  |  Branch (951:5): [True: 560, False: 0]
  |  Branch (951:5): [True: 560, False: 0]
  ------------------
  952|    560|    assert(Py_TYPE(obj)->tp_flags & Py_TPFLAGS_INLINE_VALUES);
  ------------------
  |  Branch (952:5): [True: 560, False: 0]
  ------------------
  953|    560|    assert(Py_TYPE(obj)->tp_flags & Py_TPFLAGS_MANAGED_DICT);
  ------------------
  |  Branch (953:5): [True: 560, False: 0]
  ------------------
  954|    560|    return (PyDictValues *)((char *)obj + tp->tp_basicsize);
  955|    560|}
dictobject.c:_PyObject_ManagedDictPointer:
  935|    397|{
  936|    397|    assert(Py_TYPE(obj)->tp_flags & Py_TPFLAGS_MANAGED_DICT);
  ------------------
  |  Branch (936:5): [True: 397, False: 0]
  ------------------
  937|    397|    return (PyManagedDictPointer *)((char *)obj + MANAGED_DICT_OFFSET);
  ------------------
  |  |  925|    397|#  define MANAGED_DICT_OFFSET    (((Py_ssize_t)sizeof(PyObject *))*-3)
  ------------------
  938|    397|}
dictobject.c:_PyObject_GetManagedDict:
  942|    185|{
  943|    185|    PyManagedDictPointer *dorv = _PyObject_ManagedDictPointer(obj);
  944|    185|    return (PyDictObject *)FT_ATOMIC_LOAD_PTR_ACQUIRE(dorv->dict);
  ------------------
  |  |  150|    185|#define FT_ATOMIC_LOAD_PTR_ACQUIRE(value) value
  ------------------
  945|    185|}
dictobject.c:_PyType_HasFeature:
  290|    131|_PyType_HasFeature(PyTypeObject *type, unsigned long feature) {
  291|    131|    return ((type->tp_flags) & feature) != 0;
  292|    131|}
object.c:_PyObject_Init:
  486|    828|{
  487|    828|    assert(op != NULL);
  ------------------
  |  Branch (487:5): [True: 828, False: 0]
  ------------------
  488|    828|    Py_SET_TYPE(op, typeobj);
  ------------------
  |  |  217|    828|#  define Py_SET_TYPE(ob, type) Py_SET_TYPE(_PyObject_CAST(ob), type)
  |  |  ------------------
  |  |  |  |  171|    828|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    828|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  489|    828|    assert(_PyType_HasFeature(typeobj, Py_TPFLAGS_HEAPTYPE) || _Py_IsImmortal(typeobj));
  ------------------
  |  Branch (489:5): [True: 0, False: 828]
  |  Branch (489:5): [True: 828, False: 0]
  ------------------
  490|    828|    _Py_INCREF_TYPE(typeobj);
  ------------------
  |  |  315|    828|#  define _Py_INCREF_TYPE Py_INCREF
  |  |  ------------------
  |  |  |  |  310|    828|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    828|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    828|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  491|    828|    _Py_NewReference(op);
  492|    828|}
object.c:_PyObject_InitVar:
  496|    743|{
  497|    743|    assert(op != NULL);
  ------------------
  |  Branch (497:5): [True: 743, False: 0]
  ------------------
  498|    743|    assert(typeobj != &PyLong_Type);
  ------------------
  |  Branch (498:5): [True: 743, False: 0]
  ------------------
  499|    743|    _PyObject_Init((PyObject *)op, typeobj);
  500|    743|    Py_SET_SIZE(op, size);
  ------------------
  |  |  216|    743|#  define Py_SET_SIZE(ob, size) _Py_SET_SIZE_impl(_PyVarObject_CAST(ob), (size))
  |  |  ------------------
  |  |  |  |  182|    743|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    743|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  501|    743|}
object.c:_PyType_HasFeature:
  290|  1.11k|_PyType_HasFeature(PyTypeObject *type, unsigned long feature) {
  291|  1.11k|    return ((type->tp_flags) & feature) != 0;
  292|  1.11k|}
object.c:_PyObject_ResurrectStart:
  682|     21|{
  683|     21|    assert(Py_REFCNT(op) == 0);
  ------------------
  |  Branch (683:5): [True: 21, False: 0]
  ------------------
  684|       |#ifdef Py_REF_DEBUG
  685|       |    _Py_IncRefTotal(_PyThreadState_GET());
  686|       |#endif
  687|       |#ifdef Py_GIL_DISABLED
  688|       |    _Py_atomic_store_uintptr_relaxed(&op->ob_tid, _Py_ThreadId());
  689|       |    _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, 1);
  690|       |    _Py_atomic_store_ssize_relaxed(&op->ob_ref_shared, 0);
  691|       |#else
  692|     21|    Py_SET_REFCNT(op, 1);
  ------------------
  |  |  201|     21|#  define Py_SET_REFCNT(ob, refcnt) Py_SET_REFCNT(_PyObject_CAST(ob), (refcnt))
  |  |  ------------------
  |  |  |  |  171|     21|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     21|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  693|     21|#endif
  694|       |#ifdef Py_TRACE_REFS
  695|       |    _Py_ResurrectReference(op);
  696|       |#endif
  697|     21|}
object.c:_PyObject_ResurrectEnd:
  704|     21|{
  705|       |#ifdef Py_REF_DEBUG
  706|       |    _Py_DecRefTotal(_PyThreadState_GET());
  707|       |#endif
  708|     21|#ifndef Py_GIL_DISABLED
  709|     21|    Py_SET_REFCNT(op, Py_REFCNT(op) - 1);
  ------------------
  |  |  201|     21|#  define Py_SET_REFCNT(ob, refcnt) Py_SET_REFCNT(_PyObject_CAST(ob), (refcnt))
  |  |  ------------------
  |  |  |  |  171|     21|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     21|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  710|     21|    if (Py_REFCNT(op) == 0) {
  ------------------
  |  |  119|     21|    #  define Py_REFCNT(ob) _Py_REFCNT(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     21|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     21|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (710:9): [True: 21, False: 0]
  ------------------
  711|       |# ifdef Py_TRACE_REFS
  712|       |        _Py_ForgetReference(op);
  713|       |# endif
  714|     21|        return 0;
  715|     21|    }
  716|      0|    return 1;
  717|       |#else
  718|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  719|       |    Py_ssize_t shared = _Py_atomic_load_ssize_acquire(&op->ob_ref_shared);
  720|       |    if (_Py_IsOwnedByCurrentThread(op) && local == 1 && shared == 0) {
  721|       |        // Fast-path: object has a single refcount and is owned by this thread
  722|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, 0);
  723|       |# ifdef Py_TRACE_REFS
  724|       |        _Py_ForgetReference(op);
  725|       |# endif
  726|       |        return 0;
  727|       |    }
  728|       |    // Slow-path: object has a shared refcount or is not owned by this thread
  729|       |    return _PyObject_ResurrectEndSlow(op);
  730|       |#endif
  731|     21|}
object.c:_PyObject_GetManagedDict:
  942|     10|{
  943|     10|    PyManagedDictPointer *dorv = _PyObject_ManagedDictPointer(obj);
  944|     10|    return (PyDictObject *)FT_ATOMIC_LOAD_PTR_ACQUIRE(dorv->dict);
  ------------------
  |  |  150|     10|#define FT_ATOMIC_LOAD_PTR_ACQUIRE(value) value
  ------------------
  945|     10|}
object.c:_PyObject_ManagedDictPointer:
  935|     17|{
  936|     17|    assert(Py_TYPE(obj)->tp_flags & Py_TPFLAGS_MANAGED_DICT);
  ------------------
  |  Branch (936:5): [True: 17, False: 0]
  ------------------
  937|     17|    return (PyManagedDictPointer *)((char *)obj + MANAGED_DICT_OFFSET);
  ------------------
  |  |  925|     17|#  define MANAGED_DICT_OFFSET    (((Py_ssize_t)sizeof(PyObject *))*-3)
  ------------------
  938|     17|}
object.c:Py_DECREF_MORTAL:
  453|    749|{
  454|    749|    assert(!_Py_IsStaticImmortal(op));
  ------------------
  |  Branch (454:5): [True: 749, False: 0]
  ------------------
  455|    749|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|    749|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  456|    749|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (456:9): [True: 0, False: 749]
  ------------------
  457|      0|        _Py_Dealloc(op);
  458|      0|    }
  459|    749|}
setobject.c:_PyObject_HashFast:
  842|    804|{
  843|    804|    if (PyUnicode_CheckExact(op)) {
  ------------------
  |  |  104|    804|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  ------------------
  |  |  |  |  215|    804|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    804|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    804|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 684, False: 120]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  844|    684|        Py_hash_t hash = PyUnstable_Unicode_GET_CACHED_HASH(op);
  845|    684|        if (hash != -1) {
  ------------------
  |  Branch (845:13): [True: 71, False: 613]
  ------------------
  846|     71|            return hash;
  847|     71|        }
  848|    684|    }
  849|    733|    return PyObject_Hash(op);
  850|    804|}
setobject.c:_PyObject_IsUniquelyReferenced:
  185|     61|{
  186|     61|#if !defined(Py_GIL_DISABLED)
  187|     61|    return Py_REFCNT(ob) == 1;
  ------------------
  |  |  119|     61|    #  define Py_REFCNT(ob) _Py_REFCNT(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     61|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     61|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  188|       |#else
  189|       |    // NOTE: the entire ob_ref_shared field must be zero, including flags, to
  190|       |    // ensure that other threads cannot concurrently create new references to
  191|       |    // this object.
  192|       |    return (_Py_IsOwnedByCurrentThread(ob) &&
  193|       |            _Py_atomic_load_uint32_relaxed(&ob->ob_ref_local) == 1 &&
  194|       |            _Py_atomic_load_ssize_relaxed(&ob->ob_ref_shared) == 0);
  195|       |#endif
  196|     61|}
structseq.c:_PyType_HasFeature:
  290|     14|_PyType_HasFeature(PyTypeObject *type, unsigned long feature) {
  291|     14|    return ((type->tp_flags) & feature) != 0;
  292|     14|}
tupleobject.c:_PyObject_IsUniquelyReferenced:
  185|     17|{
  186|     17|#if !defined(Py_GIL_DISABLED)
  187|     17|    return Py_REFCNT(ob) == 1;
  ------------------
  |  |  119|     17|    #  define Py_REFCNT(ob) _Py_REFCNT(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     17|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     17|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  188|       |#else
  189|       |    // NOTE: the entire ob_ref_shared field must be zero, including flags, to
  190|       |    // ensure that other threads cannot concurrently create new references to
  191|       |    // this object.
  192|       |    return (_Py_IsOwnedByCurrentThread(ob) &&
  193|       |            _Py_atomic_load_uint32_relaxed(&ob->ob_ref_local) == 1 &&
  194|       |            _Py_atomic_load_ssize_relaxed(&ob->ob_ref_shared) == 0);
  195|       |#endif
  196|     17|}
tupleobject.c:_PyType_HasFeature:
  290|  2.54k|_PyType_HasFeature(PyTypeObject *type, unsigned long feature) {
  291|  2.54k|    return ((type->tp_flags) & feature) != 0;
  292|  2.54k|}
typeobject.c:_PyType_HasFeature:
  290|  17.3k|_PyType_HasFeature(PyTypeObject *type, unsigned long feature) {
  291|  17.3k|    return ((type->tp_flags) & feature) != 0;
  292|  17.3k|}
typeobject.c:_PyType_PreHeaderSize:
  854|  3.74k|{
  855|  3.74k|    return (
  856|  3.74k|#ifndef Py_GIL_DISABLED
  857|  3.74k|        (size_t)_PyType_IS_GC(tp) * sizeof(PyGC_Head) +
  ------------------
  |  |  828|  3.74k|#define _PyType_IS_GC(t) _PyType_HasFeature((t), Py_TPFLAGS_HAVE_GC)
  |  |  ------------------
  |  |  |  |  524|  3.74k|#define Py_TPFLAGS_HAVE_GC (1UL << 14)
  |  |  ------------------
  ------------------
  858|  3.74k|#endif
  859|  3.74k|        (size_t)_PyType_HasFeature(tp, Py_TPFLAGS_PREHEADER) * 2 * sizeof(PyObject *)
  ------------------
  |  |  487|  3.74k|#define Py_TPFLAGS_PREHEADER (Py_TPFLAGS_MANAGED_WEAKREF | Py_TPFLAGS_MANAGED_DICT)
  |  |  ------------------
  |  |  |  |  477|  3.74k|#define Py_TPFLAGS_MANAGED_WEAKREF (1 << 3)
  |  |  ------------------
  |  |               #define Py_TPFLAGS_PREHEADER (Py_TPFLAGS_MANAGED_WEAKREF | Py_TPFLAGS_MANAGED_DICT)
  |  |  ------------------
  |  |  |  |  482|  3.74k|#define Py_TPFLAGS_MANAGED_DICT (1 << 4)
  |  |  ------------------
  ------------------
  860|  3.74k|    );
  861|  3.74k|}
typeobject.c:_PyObject_Init:
  486|  3.74k|{
  487|  3.74k|    assert(op != NULL);
  ------------------
  |  Branch (487:5): [True: 3.74k, False: 0]
  ------------------
  488|  3.74k|    Py_SET_TYPE(op, typeobj);
  ------------------
  |  |  217|  3.74k|#  define Py_SET_TYPE(ob, type) Py_SET_TYPE(_PyObject_CAST(ob), type)
  |  |  ------------------
  |  |  |  |  171|  3.74k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  3.74k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  489|  3.74k|    assert(_PyType_HasFeature(typeobj, Py_TPFLAGS_HEAPTYPE) || _Py_IsImmortal(typeobj));
  ------------------
  |  Branch (489:5): [True: 353, False: 3.39k]
  |  Branch (489:5): [True: 3.39k, False: 0]
  ------------------
  490|  3.74k|    _Py_INCREF_TYPE(typeobj);
  ------------------
  |  |  315|  3.74k|#  define _Py_INCREF_TYPE Py_INCREF
  |  |  ------------------
  |  |  |  |  310|  3.74k|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|  3.74k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|  3.74k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  491|  3.74k|    _Py_NewReference(op);
  492|  3.74k|}
typeobject.c:_PyObject_InitVar:
  496|    127|{
  497|    127|    assert(op != NULL);
  ------------------
  |  Branch (497:5): [True: 127, False: 0]
  ------------------
  498|    127|    assert(typeobj != &PyLong_Type);
  ------------------
  |  Branch (498:5): [True: 127, False: 0]
  ------------------
  499|    127|    _PyObject_Init((PyObject *)op, typeobj);
  500|    127|    Py_SET_SIZE(op, size);
  ------------------
  |  |  216|    127|#  define Py_SET_SIZE(ob, size) _Py_SET_SIZE_impl(_PyVarObject_CAST(ob), (size))
  |  |  ------------------
  |  |  |  |  182|    127|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    127|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  501|    127|}
typeobject.c:Py_DECREF_MORTAL:
  453|  11.6k|{
  454|  11.6k|    assert(!_Py_IsStaticImmortal(op));
  ------------------
  |  Branch (454:5): [True: 11.6k, False: 0]
  ------------------
  455|  11.6k|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|  11.6k|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  456|  11.6k|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (456:9): [True: 0, False: 11.6k]
  ------------------
  457|      0|        _Py_Dealloc(op);
  458|      0|    }
  459|  11.6k|}
typeobject.c:_Py_INCREF_MORTAL:
 1024|  11.1k|{
 1025|  11.1k|    assert(!_Py_IsStaticImmortal(op));
  ------------------
  |  Branch (1025:5): [True: 11.1k, False: 0]
  ------------------
 1026|  11.1k|    op->ob_refcnt++;
 1027|  11.1k|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|  11.1k|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
 1028|       |#if defined(Py_REF_DEBUG) && !defined(Py_LIMITED_API)
 1029|       |    if (!_Py_IsImmortal(op)) {
 1030|       |        _Py_INCREF_IncRefTotal();
 1031|       |    }
 1032|       |#endif
 1033|  11.1k|}
typeobject.c:_PyObject_HashFast:
  842|  9.60k|{
  843|  9.60k|    if (PyUnicode_CheckExact(op)) {
  ------------------
  |  |  104|  9.60k|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  ------------------
  |  |  |  |  215|  9.60k|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|  9.60k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|  9.60k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 9.60k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  844|  9.60k|        Py_hash_t hash = PyUnstable_Unicode_GET_CACHED_HASH(op);
  845|  9.60k|        if (hash != -1) {
  ------------------
  |  Branch (845:13): [True: 9.55k, False: 52]
  ------------------
  846|  9.55k|            return hash;
  847|  9.55k|        }
  848|  9.60k|    }
  849|     52|    return PyObject_Hash(op);
  850|  9.60k|}
unicodeobject.c:_PyObject_Init:
  486|  9.82k|{
  487|  9.82k|    assert(op != NULL);
  ------------------
  |  Branch (487:5): [True: 9.82k, False: 0]
  ------------------
  488|  9.82k|    Py_SET_TYPE(op, typeobj);
  ------------------
  |  |  217|  9.82k|#  define Py_SET_TYPE(ob, type) Py_SET_TYPE(_PyObject_CAST(ob), type)
  |  |  ------------------
  |  |  |  |  171|  9.82k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  9.82k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  489|  9.82k|    assert(_PyType_HasFeature(typeobj, Py_TPFLAGS_HEAPTYPE) || _Py_IsImmortal(typeobj));
  ------------------
  |  Branch (489:5): [True: 0, False: 9.82k]
  |  Branch (489:5): [True: 9.82k, False: 0]
  ------------------
  490|  9.82k|    _Py_INCREF_TYPE(typeobj);
  ------------------
  |  |  315|  9.82k|#  define _Py_INCREF_TYPE Py_INCREF
  |  |  ------------------
  |  |  |  |  310|  9.82k|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|  9.82k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|  9.82k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  491|  9.82k|    _Py_NewReference(op);
  492|  9.82k|}
unicodeobject.c:_PyType_HasFeature:
  290|  9.82k|_PyType_HasFeature(PyTypeObject *type, unsigned long feature) {
  291|  9.82k|    return ((type->tp_flags) & feature) != 0;
  292|  9.82k|}
unicodeobject.c:_PyObject_IsUniquelyReferenced:
  185|     41|{
  186|     41|#if !defined(Py_GIL_DISABLED)
  187|     41|    return Py_REFCNT(ob) == 1;
  ------------------
  |  |  119|     41|    #  define Py_REFCNT(ob) _Py_REFCNT(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     41|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     41|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  188|       |#else
  189|       |    // NOTE: the entire ob_ref_shared field must be zero, including flags, to
  190|       |    // ensure that other threads cannot concurrently create new references to
  191|       |    // this object.
  192|       |    return (_Py_IsOwnedByCurrentThread(ob) &&
  193|       |            _Py_atomic_load_uint32_relaxed(&ob->ob_ref_local) == 1 &&
  194|       |            _Py_atomic_load_ssize_relaxed(&ob->ob_ref_shared) == 0);
  195|       |#endif
  196|     41|}
weakrefobject.c:_PyType_SUPPORTS_WEAKREFS:
  872|    786|static inline int _PyType_SUPPORTS_WEAKREFS(PyTypeObject *type) {
  873|    786|    return (type->tp_weaklistoffset != 0);
  874|    786|}
weakrefobject.c:_PyObject_GET_WEAKREFS_LISTPTR:
  793|    857|{
  794|    857|    if (PyType_Check(op) &&
  ------------------
  |  |  766|  1.71k|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    857|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    857|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (766:28): [True: 424, False: 433]
  |  |  ------------------
  ------------------
  795|    424|            ((PyTypeObject *)op)->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN) {
  ------------------
  |  |  467|    424|#define _Py_TPFLAGS_STATIC_BUILTIN (1 << 1)
  ------------------
  |  Branch (795:13): [True: 286, False: 138]
  ------------------
  796|    286|        PyInterpreterState *interp = _PyInterpreterState_GET();
  797|    286|        managed_static_type_state *state = _PyStaticType_GetState(
  798|    286|                                                interp, (PyTypeObject *)op);
  799|    286|        return _PyStaticType_GET_WEAKREFS_LISTPTR(state);
  800|    286|    }
  801|       |    // Essentially _PyObject_GET_WEAKREFS_LISTPTR_FROM_OFFSET():
  802|    571|    Py_ssize_t offset = Py_TYPE(op)->tp_weaklistoffset;
  ------------------
  |  |  213|    571|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    571|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    571|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  803|    571|    return (PyObject **)((char *)op + offset);
  804|    857|}
weakrefobject.c:_Py_TryIncref:
  736|    228|{
  737|       |#ifdef Py_GIL_DISABLED
  738|       |    return _Py_TryIncrefFast(op) || _Py_TryIncRefShared(op);
  739|       |#else
  740|    228|    if (Py_REFCNT(op) > 0) {
  ------------------
  |  |  119|    228|    #  define Py_REFCNT(ob) _Py_REFCNT(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    228|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    228|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (740:9): [True: 228, False: 0]
  ------------------
  741|    228|        Py_INCREF(op);
  ------------------
  |  |  310|    228|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    228|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    228|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  742|    228|        return 1;
  743|    228|    }
  744|      0|    return 0;
  745|    228|#endif
  746|    228|}
ceval.c:Py_DECREF_MORTAL:
  453|  9.95k|{
  454|  9.95k|    assert(!_Py_IsStaticImmortal(op));
  ------------------
  |  Branch (454:5): [True: 9.95k, False: 0]
  ------------------
  455|  9.95k|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|  9.95k|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  456|  9.95k|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (456:9): [True: 738, False: 9.21k]
  ------------------
  457|    738|        _Py_Dealloc(op);
  458|    738|    }
  459|  9.95k|}
ceval.c:Py_DECREF_MORTAL_SPECIALIZED:
  463|    228|{
  464|    228|    assert(!_Py_IsStaticImmortal(op));
  ------------------
  |  Branch (464:5): [True: 228, False: 0]
  ------------------
  465|    228|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|    228|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  466|    228|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (466:9): [True: 6, False: 222]
  ------------------
  467|       |        _PyReftracerTrack(op, PyRefTracer_DESTROY);
  ------------------
  |  |  112|      6|    do { \
  |  |  113|      6|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  114|      6|        if (tracer->tracer_func != NULL) { \
  |  |  ------------------
  |  |  |  Branch (114:13): [True: 0, False: 6]
  |  |  ------------------
  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  117|      0|        } \
  |  |  118|      6|    } while(0)
  |  |  ------------------
  |  |  |  Branch (118:13): [Folded, False: 6]
  |  |  ------------------
  ------------------
  468|      6|        destruct(op);
  469|      6|    }
  470|    228|}
ceval.c:_Py_INCREF_MORTAL:
 1024|  8.87k|{
 1025|  8.87k|    assert(!_Py_IsStaticImmortal(op));
  ------------------
  |  Branch (1025:5): [True: 8.87k, False: 0]
  ------------------
 1026|  8.87k|    op->ob_refcnt++;
 1027|  8.87k|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|  8.87k|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
 1028|       |#if defined(Py_REF_DEBUG) && !defined(Py_LIMITED_API)
 1029|       |    if (!_Py_IsImmortal(op)) {
 1030|       |        _Py_INCREF_IncRefTotal();
 1031|       |    }
 1032|       |#endif
 1033|  8.87k|}
ceval.c:_PyObject_InlineValues:
  949|  2.45k|{
  950|  2.45k|    PyTypeObject *tp = Py_TYPE(obj);
  ------------------
  |  |  213|  2.45k|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  2.45k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.45k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  951|  2.45k|    assert(tp->tp_basicsize > 0 && (size_t)tp->tp_basicsize % sizeof(PyObject *) == 0);
  ------------------
  |  Branch (951:5): [True: 2.45k, False: 0]
  |  Branch (951:5): [True: 2.45k, False: 0]
  ------------------
  952|  2.45k|    assert(Py_TYPE(obj)->tp_flags & Py_TPFLAGS_INLINE_VALUES);
  ------------------
  |  Branch (952:5): [True: 2.45k, False: 0]
  ------------------
  953|  2.45k|    assert(Py_TYPE(obj)->tp_flags & Py_TPFLAGS_MANAGED_DICT);
  ------------------
  |  Branch (953:5): [True: 2.45k, False: 0]
  ------------------
  954|  2.45k|    return (PyDictValues *)((char *)obj + tp->tp_basicsize);
  955|  2.45k|}
ceval.c:_PyType_HasFeature:
  290|    587|_PyType_HasFeature(PyTypeObject *type, unsigned long feature) {
  291|    587|    return ((type->tp_flags) & feature) != 0;
  292|    587|}
ceval.c:_PyObject_GetManagedDict:
  942|  1.37k|{
  943|  1.37k|    PyManagedDictPointer *dorv = _PyObject_ManagedDictPointer(obj);
  944|  1.37k|    return (PyDictObject *)FT_ATOMIC_LOAD_PTR_ACQUIRE(dorv->dict);
  ------------------
  |  |  150|  1.37k|#define FT_ATOMIC_LOAD_PTR_ACQUIRE(value) value
  ------------------
  945|  1.37k|}
ceval.c:_PyObject_ManagedDictPointer:
  935|  1.37k|{
  936|  1.37k|    assert(Py_TYPE(obj)->tp_flags & Py_TPFLAGS_MANAGED_DICT);
  ------------------
  |  Branch (936:5): [True: 1.37k, False: 0]
  ------------------
  937|  1.37k|    return (PyManagedDictPointer *)((char *)obj + MANAGED_DICT_OFFSET);
  ------------------
  |  |  925|  1.37k|#  define MANAGED_DICT_OFFSET    (((Py_ssize_t)sizeof(PyObject *))*-3)
  ------------------
  938|  1.37k|}
frame.c:Py_DECREF_MORTAL:
  453|  4.37k|{
  454|  4.37k|    assert(!_Py_IsStaticImmortal(op));
  ------------------
  |  Branch (454:5): [True: 4.37k, False: 0]
  ------------------
  455|  4.37k|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|  4.37k|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  456|  4.37k|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (456:9): [True: 667, False: 3.70k]
  ------------------
  457|    667|        _Py_Dealloc(op);
  458|    667|    }
  459|  4.37k|}
frame.c:_PyObject_IsUniquelyReferenced:
  185|     93|{
  186|     93|#if !defined(Py_GIL_DISABLED)
  187|     93|    return Py_REFCNT(ob) == 1;
  ------------------
  |  |  119|     93|    #  define Py_REFCNT(ob) _Py_REFCNT(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     93|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     93|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  188|       |#else
  189|       |    // NOTE: the entire ob_ref_shared field must be zero, including flags, to
  190|       |    // ensure that other threads cannot concurrently create new references to
  191|       |    // this object.
  192|       |    return (_Py_IsOwnedByCurrentThread(ob) &&
  193|       |            _Py_atomic_load_uint32_relaxed(&ob->ob_ref_local) == 1 &&
  194|       |            _Py_atomic_load_ssize_relaxed(&ob->ob_ref_shared) == 0);
  195|       |#endif
  196|     93|}
frame.c:_Py_INCREF_MORTAL:
 1024|     14|{
 1025|     14|    assert(!_Py_IsStaticImmortal(op));
  ------------------
  |  Branch (1025:5): [True: 14, False: 0]
  ------------------
 1026|     14|    op->ob_refcnt++;
 1027|     14|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|     14|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
 1028|       |#if defined(Py_REF_DEBUG) && !defined(Py_LIMITED_API)
 1029|       |    if (!_Py_IsImmortal(op)) {
 1030|       |        _Py_INCREF_IncRefTotal();
 1031|       |    }
 1032|       |#endif
 1033|     14|}
gc.c:_PyType_SUPPORTS_WEAKREFS:
  872|     44|static inline int _PyType_SUPPORTS_WEAKREFS(PyTypeObject *type) {
  873|     44|    return (type->tp_weaklistoffset != 0);
  874|     44|}
gc.c:_PyObject_GET_WEAKREFS_LISTPTR_FROM_OFFSET:
  820|     26|{
  821|     26|    assert(!PyType_Check(op) ||
  ------------------
  |  Branch (821:5): [True: 26, False: 0]
  |  Branch (821:5): [True: 0, False: 0]
  ------------------
  822|     26|            ((PyTypeObject *)op)->tp_flags & Py_TPFLAGS_HEAPTYPE);
  823|     26|    Py_ssize_t offset = Py_TYPE(op)->tp_weaklistoffset;
  ------------------
  |  |  213|     26|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     26|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     26|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  824|     26|    return (PyWeakReference **)((char *)op + offset);
  825|     26|}
gc.c:_PyObject_IS_GC:
  833|  40.7k|{
  834|  40.7k|    PyTypeObject *type = Py_TYPE(obj);
  ------------------
  |  |  213|  40.7k|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  40.7k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  40.7k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  835|  40.7k|    return (_PyType_IS_GC(type)
  ------------------
  |  |  828|  81.4k|#define _PyType_IS_GC(t) _PyType_HasFeature((t), Py_TPFLAGS_HAVE_GC)
  |  |  ------------------
  |  |  |  |  524|  40.7k|#define Py_TPFLAGS_HAVE_GC (1UL << 14)
  |  |  ------------------
  |  |  |  Branch (828:26): [True: 17.2k, False: 23.4k]
  |  |  ------------------
  ------------------
  836|  17.2k|            && (type->tp_is_gc == NULL || type->tp_is_gc(obj)));
  ------------------
  |  Branch (836:17): [True: 10.7k, False: 6.52k]
  |  Branch (836:43): [True: 1.60k, False: 4.91k]
  ------------------
  837|  40.7k|}
gc.c:_PyType_PreHeaderSize:
  854|  6.22k|{
  855|  6.22k|    return (
  856|  6.22k|#ifndef Py_GIL_DISABLED
  857|  6.22k|        (size_t)_PyType_IS_GC(tp) * sizeof(PyGC_Head) +
  ------------------
  |  |  828|  6.22k|#define _PyType_IS_GC(t) _PyType_HasFeature((t), Py_TPFLAGS_HAVE_GC)
  |  |  ------------------
  |  |  |  |  524|  6.22k|#define Py_TPFLAGS_HAVE_GC (1UL << 14)
  |  |  ------------------
  ------------------
  858|  6.22k|#endif
  859|  6.22k|        (size_t)_PyType_HasFeature(tp, Py_TPFLAGS_PREHEADER) * 2 * sizeof(PyObject *)
  ------------------
  |  |  487|  6.22k|#define Py_TPFLAGS_PREHEADER (Py_TPFLAGS_MANAGED_WEAKREF | Py_TPFLAGS_MANAGED_DICT)
  |  |  ------------------
  |  |  |  |  477|  6.22k|#define Py_TPFLAGS_MANAGED_WEAKREF (1 << 3)
  |  |  ------------------
  |  |               #define Py_TPFLAGS_PREHEADER (Py_TPFLAGS_MANAGED_WEAKREF | Py_TPFLAGS_MANAGED_DICT)
  |  |  ------------------
  |  |  |  |  482|  6.22k|#define Py_TPFLAGS_MANAGED_DICT (1 << 4)
  |  |  ------------------
  ------------------
  860|  6.22k|    );
  861|  6.22k|}
gc.c:_PyType_HasFeature:
  290|  60.6k|_PyType_HasFeature(PyTypeObject *type, unsigned long feature) {
  291|  60.6k|    return ((type->tp_flags) & feature) != 0;
  292|  60.6k|}
gc.c:_PyObject_Init:
  486|  4.95k|{
  487|  4.95k|    assert(op != NULL);
  ------------------
  |  Branch (487:5): [True: 4.95k, False: 0]
  ------------------
  488|  4.95k|    Py_SET_TYPE(op, typeobj);
  ------------------
  |  |  217|  4.95k|#  define Py_SET_TYPE(ob, type) Py_SET_TYPE(_PyObject_CAST(ob), type)
  |  |  ------------------
  |  |  |  |  171|  4.95k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  4.95k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  489|  4.95k|    assert(_PyType_HasFeature(typeobj, Py_TPFLAGS_HEAPTYPE) || _Py_IsImmortal(typeobj));
  ------------------
  |  Branch (489:5): [True: 14, False: 4.94k]
  |  Branch (489:5): [True: 4.94k, False: 0]
  ------------------
  490|  4.95k|    _Py_INCREF_TYPE(typeobj);
  ------------------
  |  |  315|  4.95k|#  define _Py_INCREF_TYPE Py_INCREF
  |  |  ------------------
  |  |  |  |  310|  4.95k|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|  4.95k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|  4.95k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  491|  4.95k|    _Py_NewReference(op);
  492|  4.95k|}
gc.c:_PyObject_InitVar:
  496|  2.43k|{
  497|  2.43k|    assert(op != NULL);
  ------------------
  |  Branch (497:5): [True: 2.43k, False: 0]
  ------------------
  498|  2.43k|    assert(typeobj != &PyLong_Type);
  ------------------
  |  Branch (498:5): [True: 2.43k, False: 0]
  ------------------
  499|  2.43k|    _PyObject_Init((PyObject *)op, typeobj);
  500|  2.43k|    Py_SET_SIZE(op, size);
  ------------------
  |  |  216|  2.43k|#  define Py_SET_SIZE(ob, size) _Py_SET_SIZE_impl(_PyVarObject_CAST(ob), (size))
  |  |  ------------------
  |  |  |  |  182|  2.43k|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.43k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  501|  2.43k|}
import.c:_Py_TryIncref:
  736|      1|{
  737|       |#ifdef Py_GIL_DISABLED
  738|       |    return _Py_TryIncrefFast(op) || _Py_TryIncRefShared(op);
  739|       |#else
  740|      1|    if (Py_REFCNT(op) > 0) {
  ------------------
  |  |  119|      1|    #  define Py_REFCNT(ob) _Py_REFCNT(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (740:9): [True: 1, False: 0]
  ------------------
  741|      1|        Py_INCREF(op);
  ------------------
  |  |  310|      1|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  742|      1|        return 1;
  743|      1|    }
  744|      0|    return 0;
  745|      1|#endif
  746|      1|}
intrinsics.c:_PyObject_IsUniquelyReferenced:
  185|      4|{
  186|      4|#if !defined(Py_GIL_DISABLED)
  187|      4|    return Py_REFCNT(ob) == 1;
  ------------------
  |  |  119|      4|    #  define Py_REFCNT(ob) _Py_REFCNT(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  188|       |#else
  189|       |    // NOTE: the entire ob_ref_shared field must be zero, including flags, to
  190|       |    // ensure that other threads cannot concurrently create new references to
  191|       |    // this object.
  192|       |    return (_Py_IsOwnedByCurrentThread(ob) &&
  193|       |            _Py_atomic_load_uint32_relaxed(&ob->ob_ref_local) == 1 &&
  194|       |            _Py_atomic_load_ssize_relaxed(&ob->ob_ref_shared) == 0);
  195|       |#endif
  196|      4|}
specialize.c:_PyObject_GetManagedDict:
  942|    164|{
  943|    164|    PyManagedDictPointer *dorv = _PyObject_ManagedDictPointer(obj);
  944|    164|    return (PyDictObject *)FT_ATOMIC_LOAD_PTR_ACQUIRE(dorv->dict);
  ------------------
  |  |  150|    164|#define FT_ATOMIC_LOAD_PTR_ACQUIRE(value) value
  ------------------
  945|    164|}
specialize.c:_PyObject_ManagedDictPointer:
  935|    164|{
  936|    164|    assert(Py_TYPE(obj)->tp_flags & Py_TPFLAGS_MANAGED_DICT);
  ------------------
  |  Branch (936:5): [True: 164, False: 0]
  ------------------
  937|    164|    return (PyManagedDictPointer *)((char *)obj + MANAGED_DICT_OFFSET);
  ------------------
  |  |  925|    164|#  define MANAGED_DICT_OFFSET    (((Py_ssize_t)sizeof(PyObject *))*-3)
  ------------------
  938|    164|}
specialize.c:_PyObject_InlineValues:
  949|    336|{
  950|    336|    PyTypeObject *tp = Py_TYPE(obj);
  ------------------
  |  |  213|    336|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    336|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    336|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  951|    336|    assert(tp->tp_basicsize > 0 && (size_t)tp->tp_basicsize % sizeof(PyObject *) == 0);
  ------------------
  |  Branch (951:5): [True: 336, False: 0]
  |  Branch (951:5): [True: 336, False: 0]
  ------------------
  952|    336|    assert(Py_TYPE(obj)->tp_flags & Py_TPFLAGS_INLINE_VALUES);
  ------------------
  |  Branch (952:5): [True: 336, False: 0]
  ------------------
  953|    336|    assert(Py_TYPE(obj)->tp_flags & Py_TPFLAGS_MANAGED_DICT);
  ------------------
  |  Branch (953:5): [True: 336, False: 0]
  ------------------
  954|    336|    return (PyDictValues *)((char *)obj + tp->tp_basicsize);
  955|    336|}
_datetimemodule.c:_PyObject_Init:
  486|      4|{
  487|      4|    assert(op != NULL);
  ------------------
  |  Branch (487:5): [True: 4, False: 0]
  ------------------
  488|      4|    Py_SET_TYPE(op, typeobj);
  ------------------
  |  |  217|      4|#  define Py_SET_TYPE(ob, type) Py_SET_TYPE(_PyObject_CAST(ob), type)
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  489|      4|    assert(_PyType_HasFeature(typeobj, Py_TPFLAGS_HEAPTYPE) || _Py_IsImmortal(typeobj));
  ------------------
  |  Branch (489:5): [True: 0, False: 4]
  |  Branch (489:5): [True: 4, False: 0]
  ------------------
  490|      4|    _Py_INCREF_TYPE(typeobj);
  ------------------
  |  |  315|      4|#  define _Py_INCREF_TYPE Py_INCREF
  |  |  ------------------
  |  |  |  |  310|      4|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  491|      4|    _Py_NewReference(op);
  492|      4|}
_datetimemodule.c:_PyType_HasFeature:
  290|      4|_PyType_HasFeature(PyTypeObject *type, unsigned long feature) {
  291|      4|    return ((type->tp_flags) & feature) != 0;
  292|      4|}
bytesobject.c:_PyObject_InitVar:
  496|  2.47k|{
  497|  2.47k|    assert(op != NULL);
  ------------------
  |  Branch (497:5): [True: 2.47k, False: 0]
  ------------------
  498|  2.47k|    assert(typeobj != &PyLong_Type);
  ------------------
  |  Branch (498:5): [True: 2.47k, False: 0]
  ------------------
  499|  2.47k|    _PyObject_Init((PyObject *)op, typeobj);
  500|  2.47k|    Py_SET_SIZE(op, size);
  ------------------
  |  |  216|  2.47k|#  define Py_SET_SIZE(ob, size) _Py_SET_SIZE_impl(_PyVarObject_CAST(ob), (size))
  |  |  ------------------
  |  |  |  |  182|  2.47k|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.47k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  501|  2.47k|}
bytesobject.c:_PyObject_Init:
  486|  2.47k|{
  487|  2.47k|    assert(op != NULL);
  ------------------
  |  Branch (487:5): [True: 2.47k, False: 0]
  ------------------
  488|  2.47k|    Py_SET_TYPE(op, typeobj);
  ------------------
  |  |  217|  2.47k|#  define Py_SET_TYPE(ob, type) Py_SET_TYPE(_PyObject_CAST(ob), type)
  |  |  ------------------
  |  |  |  |  171|  2.47k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.47k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  489|  2.47k|    assert(_PyType_HasFeature(typeobj, Py_TPFLAGS_HEAPTYPE) || _Py_IsImmortal(typeobj));
  ------------------
  |  Branch (489:5): [True: 0, False: 2.47k]
  |  Branch (489:5): [True: 2.47k, False: 0]
  ------------------
  490|  2.47k|    _Py_INCREF_TYPE(typeobj);
  ------------------
  |  |  315|  2.47k|#  define _Py_INCREF_TYPE Py_INCREF
  |  |  ------------------
  |  |  |  |  310|  2.47k|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|  2.47k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|  2.47k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  491|  2.47k|    _Py_NewReference(op);
  492|  2.47k|}
bytesobject.c:_PyType_HasFeature:
  290|  2.47k|_PyType_HasFeature(PyTypeObject *type, unsigned long feature) {
  291|  2.47k|    return ((type->tp_flags) & feature) != 0;
  292|  2.47k|}
call.c:Py_DECREF_MORTAL:
  453|    153|{
  454|    153|    assert(!_Py_IsStaticImmortal(op));
  ------------------
  |  Branch (454:5): [True: 153, False: 0]
  ------------------
  455|    153|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|    153|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  456|    153|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (456:9): [True: 34, False: 119]
  ------------------
  457|     34|        _Py_Dealloc(op);
  458|     34|    }
  459|    153|}
codeobject.c:_PyObject_ResurrectStart:
  682|    138|{
  683|    138|    assert(Py_REFCNT(op) == 0);
  ------------------
  |  Branch (683:5): [True: 138, False: 0]
  ------------------
  684|       |#ifdef Py_REF_DEBUG
  685|       |    _Py_IncRefTotal(_PyThreadState_GET());
  686|       |#endif
  687|       |#ifdef Py_GIL_DISABLED
  688|       |    _Py_atomic_store_uintptr_relaxed(&op->ob_tid, _Py_ThreadId());
  689|       |    _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, 1);
  690|       |    _Py_atomic_store_ssize_relaxed(&op->ob_ref_shared, 0);
  691|       |#else
  692|    138|    Py_SET_REFCNT(op, 1);
  ------------------
  |  |  201|    138|#  define Py_SET_REFCNT(ob, refcnt) Py_SET_REFCNT(_PyObject_CAST(ob), (refcnt))
  |  |  ------------------
  |  |  |  |  171|    138|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    138|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  693|    138|#endif
  694|       |#ifdef Py_TRACE_REFS
  695|       |    _Py_ResurrectReference(op);
  696|       |#endif
  697|    138|}
codeobject.c:_PyObject_ResurrectEnd:
  704|    138|{
  705|       |#ifdef Py_REF_DEBUG
  706|       |    _Py_DecRefTotal(_PyThreadState_GET());
  707|       |#endif
  708|    138|#ifndef Py_GIL_DISABLED
  709|    138|    Py_SET_REFCNT(op, Py_REFCNT(op) - 1);
  ------------------
  |  |  201|    138|#  define Py_SET_REFCNT(ob, refcnt) Py_SET_REFCNT(_PyObject_CAST(ob), (refcnt))
  |  |  ------------------
  |  |  |  |  171|    138|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    138|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  710|    138|    if (Py_REFCNT(op) == 0) {
  ------------------
  |  |  119|    138|    #  define Py_REFCNT(ob) _Py_REFCNT(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    138|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    138|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (710:9): [True: 138, False: 0]
  ------------------
  711|       |# ifdef Py_TRACE_REFS
  712|       |        _Py_ForgetReference(op);
  713|       |# endif
  714|    138|        return 0;
  715|    138|    }
  716|      0|    return 1;
  717|       |#else
  718|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  719|       |    Py_ssize_t shared = _Py_atomic_load_ssize_acquire(&op->ob_ref_shared);
  720|       |    if (_Py_IsOwnedByCurrentThread(op) && local == 1 && shared == 0) {
  721|       |        // Fast-path: object has a single refcount and is owned by this thread
  722|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, 0);
  723|       |# ifdef Py_TRACE_REFS
  724|       |        _Py_ForgetReference(op);
  725|       |# endif
  726|       |        return 0;
  727|       |    }
  728|       |    // Slow-path: object has a shared refcount or is not owned by this thread
  729|       |    return _PyObject_ResurrectEndSlow(op);
  730|       |#endif
  731|    138|}
genobject.c:Py_DECREF_MORTAL:
  453|     21|{
  454|     21|    assert(!_Py_IsStaticImmortal(op));
  ------------------
  |  Branch (454:5): [True: 21, False: 0]
  ------------------
  455|     21|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|     21|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  456|     21|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (456:9): [True: 0, False: 21]
  ------------------
  457|      0|        _Py_Dealloc(op);
  458|      0|    }
  459|     21|}
floatobject.c:_PyObject_Init:
  486|     10|{
  487|     10|    assert(op != NULL);
  ------------------
  |  Branch (487:5): [True: 10, False: 0]
  ------------------
  488|     10|    Py_SET_TYPE(op, typeobj);
  ------------------
  |  |  217|     10|#  define Py_SET_TYPE(ob, type) Py_SET_TYPE(_PyObject_CAST(ob), type)
  |  |  ------------------
  |  |  |  |  171|     10|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  489|     10|    assert(_PyType_HasFeature(typeobj, Py_TPFLAGS_HEAPTYPE) || _Py_IsImmortal(typeobj));
  ------------------
  |  Branch (489:5): [True: 0, False: 10]
  |  Branch (489:5): [True: 10, False: 0]
  ------------------
  490|     10|    _Py_INCREF_TYPE(typeobj);
  ------------------
  |  |  315|     10|#  define _Py_INCREF_TYPE Py_INCREF
  |  |  ------------------
  |  |  |  |  310|     10|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     10|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  491|     10|    _Py_NewReference(op);
  492|     10|}
floatobject.c:_PyType_HasFeature:
  290|     10|_PyType_HasFeature(PyTypeObject *type, unsigned long feature) {
  291|     10|    return ((type->tp_flags) & feature) != 0;
  292|     10|}
frameobject.c:Py_DECREF_MORTAL:
  453|     60|{
  454|     60|    assert(!_Py_IsStaticImmortal(op));
  ------------------
  |  Branch (454:5): [True: 60, False: 0]
  ------------------
  455|     60|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|     60|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  456|     60|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (456:9): [True: 15, False: 45]
  ------------------
  457|     15|        _Py_Dealloc(op);
  458|     15|    }
  459|     60|}
funcobject.c:_PyObject_ResurrectStart:
  682|    168|{
  683|    168|    assert(Py_REFCNT(op) == 0);
  ------------------
  |  Branch (683:5): [True: 168, False: 0]
  ------------------
  684|       |#ifdef Py_REF_DEBUG
  685|       |    _Py_IncRefTotal(_PyThreadState_GET());
  686|       |#endif
  687|       |#ifdef Py_GIL_DISABLED
  688|       |    _Py_atomic_store_uintptr_relaxed(&op->ob_tid, _Py_ThreadId());
  689|       |    _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, 1);
  690|       |    _Py_atomic_store_ssize_relaxed(&op->ob_ref_shared, 0);
  691|       |#else
  692|    168|    Py_SET_REFCNT(op, 1);
  ------------------
  |  |  201|    168|#  define Py_SET_REFCNT(ob, refcnt) Py_SET_REFCNT(_PyObject_CAST(ob), (refcnt))
  |  |  ------------------
  |  |  |  |  171|    168|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    168|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  693|    168|#endif
  694|       |#ifdef Py_TRACE_REFS
  695|       |    _Py_ResurrectReference(op);
  696|       |#endif
  697|    168|}
funcobject.c:_PyObject_ResurrectEnd:
  704|    168|{
  705|       |#ifdef Py_REF_DEBUG
  706|       |    _Py_DecRefTotal(_PyThreadState_GET());
  707|       |#endif
  708|    168|#ifndef Py_GIL_DISABLED
  709|    168|    Py_SET_REFCNT(op, Py_REFCNT(op) - 1);
  ------------------
  |  |  201|    168|#  define Py_SET_REFCNT(ob, refcnt) Py_SET_REFCNT(_PyObject_CAST(ob), (refcnt))
  |  |  ------------------
  |  |  |  |  171|    168|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    168|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  710|    168|    if (Py_REFCNT(op) == 0) {
  ------------------
  |  |  119|    168|    #  define Py_REFCNT(ob) _Py_REFCNT(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    168|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    168|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (710:9): [True: 168, False: 0]
  ------------------
  711|       |# ifdef Py_TRACE_REFS
  712|       |        _Py_ForgetReference(op);
  713|       |# endif
  714|    168|        return 0;
  715|    168|    }
  716|      0|    return 1;
  717|       |#else
  718|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  719|       |    Py_ssize_t shared = _Py_atomic_load_ssize_acquire(&op->ob_ref_shared);
  720|       |    if (_Py_IsOwnedByCurrentThread(op) && local == 1 && shared == 0) {
  721|       |        // Fast-path: object has a single refcount and is owned by this thread
  722|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, 0);
  723|       |# ifdef Py_TRACE_REFS
  724|       |        _Py_ForgetReference(op);
  725|       |# endif
  726|       |        return 0;
  727|       |    }
  728|       |    // Slow-path: object has a shared refcount or is not owned by this thread
  729|       |    return _PyObject_ResurrectEndSlow(op);
  730|       |#endif
  731|    168|}

typeobject.c:_PyObject_MallocWithType:
   40|  3.74k|{
   41|       |#ifdef Py_GIL_DISABLED
   42|       |    _PyThreadStateImpl *tstate = (_PyThreadStateImpl *)_PyThreadState_GET();
   43|       |    struct _mimalloc_thread_state *m = &tstate->mimalloc;
   44|       |    m->current_object_heap = _PyObject_GetAllocationHeap(tstate, tp);
   45|       |#endif
   46|  3.74k|    void *mem = PyObject_Malloc(size);
   47|       |#ifdef Py_GIL_DISABLED
   48|       |    m->current_object_heap = &m->heaps[_Py_MIMALLOC_HEAP_OBJECT];
   49|       |#endif
   50|  3.74k|    return mem;
   51|  3.74k|}
gc.c:_PyObject_MallocWithType:
   40|  4.95k|{
   41|       |#ifdef Py_GIL_DISABLED
   42|       |    _PyThreadStateImpl *tstate = (_PyThreadStateImpl *)_PyThreadState_GET();
   43|       |    struct _mimalloc_thread_state *m = &tstate->mimalloc;
   44|       |    m->current_object_heap = _PyObject_GetAllocationHeap(tstate, tp);
   45|       |#endif
   46|  4.95k|    void *mem = PyObject_Malloc(size);
   47|       |#ifdef Py_GIL_DISABLED
   48|       |    m->current_object_heap = &m->heaps[_Py_MIMALLOC_HEAP_OBJECT];
   49|       |#endif
   50|  4.95k|    return mem;
   51|  4.95k|}
gc.c:_PyObject_ReallocWithType:
   55|      1|{
   56|       |#ifdef Py_GIL_DISABLED
   57|       |    _PyThreadStateImpl *tstate = (_PyThreadStateImpl *)_PyThreadState_GET();
   58|       |    struct _mimalloc_thread_state *m = &tstate->mimalloc;
   59|       |    m->current_object_heap = _PyObject_GetAllocationHeap(tstate, tp);
   60|       |#endif
   61|      1|    void *mem = PyObject_Realloc(ptr, size);
   62|       |#ifdef Py_GIL_DISABLED
   63|       |    m->current_object_heap = &m->heaps[_Py_MIMALLOC_HEAP_OBJECT];
   64|       |#endif
   65|      1|    return mem;
   66|      1|}

dictobject.c:_PyErr_Occurred:
   76|     48|{
   77|     48|    assert(tstate != NULL);
  ------------------
  |  Branch (77:5): [True: 48, False: 0]
  ------------------
   78|     48|    if (tstate->current_exception == NULL) {
  ------------------
  |  Branch (78:9): [True: 48, False: 0]
  ------------------
   79|     48|        return NULL;
   80|     48|    }
   81|      0|    return (PyObject *)Py_TYPE(tstate->current_exception);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   82|     48|}
typeobject.c:_PyErr_Occurred:
   76|    444|{
   77|    444|    assert(tstate != NULL);
  ------------------
  |  Branch (77:5): [True: 444, False: 0]
  ------------------
   78|    444|    if (tstate->current_exception == NULL) {
  ------------------
  |  Branch (78:9): [True: 440, False: 4]
  ------------------
   79|    440|        return NULL;
   80|    440|    }
   81|      4|    return (PyObject *)Py_TYPE(tstate->current_exception);
  ------------------
  |  |  213|      4|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   82|    444|}
ceval.c:_PyErr_Occurred:
   76|  1.00k|{
   77|  1.00k|    assert(tstate != NULL);
  ------------------
  |  Branch (77:5): [True: 1.00k, False: 0]
  ------------------
   78|  1.00k|    if (tstate->current_exception == NULL) {
  ------------------
  |  Branch (78:9): [True: 862, False: 144]
  ------------------
   79|    862|        return NULL;
   80|    862|    }
   81|    144|    return (PyObject *)Py_TYPE(tstate->current_exception);
  ------------------
  |  |  213|    144|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    144|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    144|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   82|  1.00k|}
ceval.c:_PyErr_ClearExcState:
   85|     17|{
   86|       |    Py_CLEAR(exc_state->exc_value);
  ------------------
  |  |  484|     17|    do { \
  |  |  485|     17|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|     17|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|     17|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|     17|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|     17|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 17]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|     17|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 17]
  |  |  ------------------
  ------------------
   87|     17|}
errors.c:_PyErr_Occurred:
   76|  14.1k|{
   77|  14.1k|    assert(tstate != NULL);
  ------------------
  |  Branch (77:5): [True: 14.1k, False: 0]
  ------------------
   78|  14.1k|    if (tstate->current_exception == NULL) {
  ------------------
  |  Branch (78:9): [True: 14.0k, False: 82]
  ------------------
   79|  14.0k|        return NULL;
   80|  14.0k|    }
   81|     82|    return (PyObject *)Py_TYPE(tstate->current_exception);
  ------------------
  |  |  213|     82|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     82|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     82|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   82|  14.1k|}
gc.c:_PyErr_Occurred:
   76|  1.52k|{
   77|  1.52k|    assert(tstate != NULL);
  ------------------
  |  Branch (77:5): [True: 1.52k, False: 0]
  ------------------
   78|  1.52k|    if (tstate->current_exception == NULL) {
  ------------------
  |  Branch (78:9): [True: 1.52k, False: 0]
  ------------------
   79|  1.52k|        return NULL;
   80|  1.52k|    }
   81|      0|    return (PyObject *)Py_TYPE(tstate->current_exception);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   82|  1.52k|}
import.c:_PyErr_Occurred:
   76|     45|{
   77|     45|    assert(tstate != NULL);
  ------------------
  |  Branch (77:5): [True: 45, False: 0]
  ------------------
   78|     45|    if (tstate->current_exception == NULL) {
  ------------------
  |  Branch (78:9): [True: 45, False: 0]
  ------------------
   79|     45|        return NULL;
   80|     45|    }
   81|      0|    return (PyObject *)Py_TYPE(tstate->current_exception);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   82|     45|}
pylifecycle.c:_PyErr_Occurred:
   76|      3|{
   77|      3|    assert(tstate != NULL);
  ------------------
  |  Branch (77:5): [True: 3, False: 0]
  ------------------
   78|      3|    if (tstate->current_exception == NULL) {
  ------------------
  |  Branch (78:9): [True: 3, False: 0]
  ------------------
   79|      3|        return NULL;
   80|      3|    }
   81|      0|    return (PyObject *)Py_TYPE(tstate->current_exception);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   82|      3|}
sysmodule.c:_PyErr_Occurred:
   76|      5|{
   77|      5|    assert(tstate != NULL);
  ------------------
  |  Branch (77:5): [True: 5, False: 0]
  ------------------
   78|      5|    if (tstate->current_exception == NULL) {
  ------------------
  |  Branch (78:9): [True: 5, False: 0]
  ------------------
   79|      5|        return NULL;
   80|      5|    }
   81|      0|    return (PyObject *)Py_TYPE(tstate->current_exception);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   82|      5|}
abstract.c:_PyErr_Occurred:
   76|     46|{
   77|     46|    assert(tstate != NULL);
  ------------------
  |  Branch (77:5): [True: 46, False: 0]
  ------------------
   78|     46|    if (tstate->current_exception == NULL) {
  ------------------
  |  Branch (78:9): [True: 46, False: 0]
  ------------------
   79|     46|        return NULL;
   80|     46|    }
   81|      0|    return (PyObject *)Py_TYPE(tstate->current_exception);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   82|     46|}
call.c:_PyErr_Occurred:
   76|  4.17k|{
   77|  4.17k|    assert(tstate != NULL);
  ------------------
  |  Branch (77:5): [True: 4.17k, False: 0]
  ------------------
   78|  4.17k|    if (tstate->current_exception == NULL) {
  ------------------
  |  Branch (78:9): [True: 4.14k, False: 35]
  ------------------
   79|  4.14k|        return NULL;
   80|  4.14k|    }
   81|     35|    return (PyObject *)Py_TYPE(tstate->current_exception);
  ------------------
  |  |  213|     35|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     35|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     35|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   82|  4.17k|}
genobject.c:_PyErr_ClearExcState:
   85|      4|{
   86|       |    Py_CLEAR(exc_state->exc_value);
  ------------------
  |  |  484|      4|    do { \
  |  |  485|      4|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      4|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      4|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      4|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      4|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 4]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      4|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 4]
  |  |  ------------------
  ------------------
   87|      4|}
genobject.c:_PyErr_Occurred:
   76|     21|{
   77|     21|    assert(tstate != NULL);
  ------------------
  |  Branch (77:5): [True: 21, False: 0]
  ------------------
   78|     21|    if (tstate->current_exception == NULL) {
  ------------------
  |  Branch (78:9): [True: 21, False: 0]
  ------------------
   79|     21|        return NULL;
   80|     21|    }
   81|      0|    return (PyObject *)Py_TYPE(tstate->current_exception);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   82|     21|}
methodobject.c:_PyErr_Occurred:
   76|    606|{
   77|    606|    assert(tstate != NULL);
  ------------------
  |  Branch (77:5): [True: 606, False: 0]
  ------------------
   78|    606|    if (tstate->current_exception == NULL) {
  ------------------
  |  Branch (78:9): [True: 606, False: 0]
  ------------------
   79|    606|        return NULL;
   80|    606|    }
   81|      0|    return (PyObject *)Py_TYPE(tstate->current_exception);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   82|    606|}

pyhash.c:_Py_HashPointerRaw:
   11|    164|{
   12|    164|    uintptr_t x = (uintptr_t)ptr;
   13|    164|    Py_BUILD_ASSERT(sizeof(x) == sizeof(ptr));
  ------------------
  |  |  167|    164|        do { \
  |  |  168|    164|            static_assert((cond), #cond); \
  |  |  169|    164|        } while (0)
  |  |  ------------------
  |  |  |  Branch (169:18): [Folded, False: 164]
  |  |  ------------------
  ------------------
   14|       |
   15|       |    // Bottom 3 or 4 bits are likely to be 0; rotate x by 4 to the right
   16|       |    // to avoid excessive hash collisions for dicts and sets.
   17|    164|    x = (x >> 4) | (x << (8 * sizeof(uintptr_t) - 4));
   18|       |
   19|       |    Py_BUILD_ASSERT(sizeof(x) == sizeof(Py_hash_t));
  ------------------
  |  |  167|    164|        do { \
  |  |  168|    164|            static_assert((cond), #cond); \
  |  |  169|    164|        } while (0)
  |  |  ------------------
  |  |  |  Branch (169:18): [Folded, False: 164]
  |  |  ------------------
  ------------------
   20|    164|    return (Py_hash_t)x;
   21|    164|}

object.c:_PyMem_IsPtrFreed:
   54|  34.1k|{
   55|  34.1k|    uintptr_t value = (uintptr_t)ptr;
   56|  34.1k|#if SIZEOF_VOID_P == 8
   57|  34.1k|    return (value <= 0xff  // NULL, 0x1, 0x2, ..., 0xff
  ------------------
  |  Branch (57:13): [True: 0, False: 34.1k]
  ------------------
   58|  34.1k|            || value == (uintptr_t)0xCDCDCDCDCDCDCDCD
  ------------------
  |  Branch (58:16): [True: 0, False: 34.1k]
  ------------------
   59|  34.1k|            || value == (uintptr_t)0xDDDDDDDDDDDDDDDD
  ------------------
  |  Branch (59:16): [True: 0, False: 34.1k]
  ------------------
   60|  34.1k|            || value == (uintptr_t)0xFDFDFDFDFDFDFDFD
  ------------------
  |  Branch (60:16): [True: 0, False: 34.1k]
  ------------------
   61|  34.1k|            || value >= (uintptr_t)0xFFFFFFFFFFFFFF00);  // -0xff, ..., -2, -1
  ------------------
  |  Branch (61:16): [True: 0, False: 34.1k]
  ------------------
   62|       |#elif SIZEOF_VOID_P == 4
   63|       |    return (value <= 0xff
   64|       |            || value == (uintptr_t)0xCDCDCDCD
   65|       |            || value == (uintptr_t)0xDDDDDDDD
   66|       |            || value == (uintptr_t)0xFDFDFDFD
   67|       |            || value >= (uintptr_t)0xFFFFFF00);
   68|       |#else
   69|       |#  error "unknown pointer size"
   70|       |#endif
   71|  34.1k|}
pystate.c:_PyMem_IsPtrFreed:
   54|  1.31k|{
   55|  1.31k|    uintptr_t value = (uintptr_t)ptr;
   56|  1.31k|#if SIZEOF_VOID_P == 8
   57|  1.31k|    return (value <= 0xff  // NULL, 0x1, 0x2, ..., 0xff
  ------------------
  |  Branch (57:13): [True: 0, False: 1.31k]
  ------------------
   58|  1.31k|            || value == (uintptr_t)0xCDCDCDCDCDCDCDCD
  ------------------
  |  Branch (58:16): [True: 0, False: 1.31k]
  ------------------
   59|  1.31k|            || value == (uintptr_t)0xDDDDDDDDDDDDDDDD
  ------------------
  |  Branch (59:16): [True: 0, False: 1.31k]
  ------------------
   60|  1.31k|            || value == (uintptr_t)0xFDFDFDFDFDFDFDFD
  ------------------
  |  Branch (60:16): [True: 0, False: 1.31k]
  ------------------
   61|  1.31k|            || value >= (uintptr_t)0xFFFFFFFFFFFFFF00);  // -0xff, ..., -2, -1
  ------------------
  |  Branch (61:16): [True: 0, False: 1.31k]
  ------------------
   62|       |#elif SIZEOF_VOID_P == 4
   63|       |    return (value <= 0xff
   64|       |            || value == (uintptr_t)0xCDCDCDCD
   65|       |            || value == (uintptr_t)0xDDDDDDDD
   66|       |            || value == (uintptr_t)0xFDFDFDFD
   67|       |            || value >= (uintptr_t)0xFFFFFF00);
   68|       |#else
   69|       |#  error "unknown pointer size"
   70|       |#endif
   71|  1.31k|}

exceptions.c:_PyInterpreterState_GET:
  207|    108|static inline PyInterpreterState* _PyInterpreterState_GET(void) {
  208|       |#ifdef Py_DEBUG
  209|       |    PyThreadState *tstate = _PyThreadState_GET();
  210|       |    _Py_EnsureTstateNotNULL(tstate);
  211|       |#endif
  212|    108|#if !defined(Py_BUILD_CORE_MODULE)
  213|    108|    return _Py_tss_interp;
  214|       |#else
  215|       |    return _PyThreadState_GET()->interp;
  216|       |#endif
  217|    108|}
genericaliasobject.c:_PyInterpreterState_GET:
  207|      2|static inline PyInterpreterState* _PyInterpreterState_GET(void) {
  208|       |#ifdef Py_DEBUG
  209|       |    PyThreadState *tstate = _PyThreadState_GET();
  210|       |    _Py_EnsureTstateNotNULL(tstate);
  211|       |#endif
  212|      2|#if !defined(Py_BUILD_CORE_MODULE)
  213|      2|    return _Py_tss_interp;
  214|       |#else
  215|       |    return _PyThreadState_GET()->interp;
  216|       |#endif
  217|      2|}
listobject.c:_PyInterpreterState_GET:
  207|  1.10k|static inline PyInterpreterState* _PyInterpreterState_GET(void) {
  208|       |#ifdef Py_DEBUG
  209|       |    PyThreadState *tstate = _PyThreadState_GET();
  210|       |    _Py_EnsureTstateNotNULL(tstate);
  211|       |#endif
  212|  1.10k|#if !defined(Py_BUILD_CORE_MODULE)
  213|  1.10k|    return _Py_tss_interp;
  214|       |#else
  215|       |    return _PyThreadState_GET()->interp;
  216|       |#endif
  217|  1.10k|}
longobject.c:_PyInterpreterState_GET:
  207|    314|static inline PyInterpreterState* _PyInterpreterState_GET(void) {
  208|       |#ifdef Py_DEBUG
  209|       |    PyThreadState *tstate = _PyThreadState_GET();
  210|       |    _Py_EnsureTstateNotNULL(tstate);
  211|       |#endif
  212|    314|#if !defined(Py_BUILD_CORE_MODULE)
  213|    314|    return _Py_tss_interp;
  214|       |#else
  215|       |    return _PyThreadState_GET()->interp;
  216|       |#endif
  217|    314|}
dictobject.c:_PyInterpreterState_GET:
  207|  7.16k|static inline PyInterpreterState* _PyInterpreterState_GET(void) {
  208|       |#ifdef Py_DEBUG
  209|       |    PyThreadState *tstate = _PyThreadState_GET();
  210|       |    _Py_EnsureTstateNotNULL(tstate);
  211|       |#endif
  212|  7.16k|#if !defined(Py_BUILD_CORE_MODULE)
  213|  7.16k|    return _Py_tss_interp;
  214|       |#else
  215|       |    return _PyThreadState_GET()->interp;
  216|       |#endif
  217|  7.16k|}
dictobject.c:_PyThreadState_GET:
  117|     48|{
  118|     48|#if !defined(Py_BUILD_CORE_MODULE)
  119|     48|    return _Py_tss_tstate;
  120|       |#else
  121|       |    return _PyThreadState_GetCurrent();
  122|       |#endif
  123|     48|}
moduleobject.c:_PyInterpreterState_GET:
  207|     12|static inline PyInterpreterState* _PyInterpreterState_GET(void) {
  208|       |#ifdef Py_DEBUG
  209|       |    PyThreadState *tstate = _PyThreadState_GET();
  210|       |    _Py_EnsureTstateNotNULL(tstate);
  211|       |#endif
  212|     12|#if !defined(Py_BUILD_CORE_MODULE)
  213|     12|    return _Py_tss_interp;
  214|       |#else
  215|       |    return _PyThreadState_GET()->interp;
  216|       |#endif
  217|     12|}
object.c:_PyThreadState_GET:
  117|  19.0k|{
  118|  19.0k|#if !defined(Py_BUILD_CORE_MODULE)
  119|  19.0k|    return _Py_tss_tstate;
  120|       |#else
  121|       |    return _PyThreadState_GetCurrent();
  122|       |#endif
  123|  19.0k|}
object.c:_Py_get_machine_stack_pointer:
  318|  14.2k|_Py_get_machine_stack_pointer(void) {
  319|  14.2k|#if _Py__has_builtin(__builtin_frame_address) || defined(__GNUC__)
  320|  14.2k|    return (uintptr_t)__builtin_frame_address(0);
  321|       |#elif defined(_MSC_VER)
  322|       |    return (uintptr_t)_AddressOfReturnAddress();
  323|       |#else
  324|       |    char here;
  325|       |    /* Avoid compiler warning about returning stack address */
  326|       |    return return_pointer_as_int(&here);
  327|       |#endif
  328|  14.2k|}
object.c:_PyInterpreterState_GET:
  207|    413|static inline PyInterpreterState* _PyInterpreterState_GET(void) {
  208|       |#ifdef Py_DEBUG
  209|       |    PyThreadState *tstate = _PyThreadState_GET();
  210|       |    _Py_EnsureTstateNotNULL(tstate);
  211|       |#endif
  212|    413|#if !defined(Py_BUILD_CORE_MODULE)
  213|    413|    return _Py_tss_interp;
  214|       |#else
  215|       |    return _PyThreadState_GET()->interp;
  216|       |#endif
  217|    413|}
object.c:_Py_RecursionLimit_GetMargin:
  332|  10.1k|{
  333|  10.1k|    _PyThreadStateImpl *_tstate = (_PyThreadStateImpl *)tstate;
  334|  10.1k|    assert(_tstate->c_stack_hard_limit != 0);
  ------------------
  |  Branch (334:5): [True: 10.1k, False: 0]
  ------------------
  335|  10.1k|    intptr_t here_addr = _Py_get_machine_stack_pointer();
  336|  10.1k|#if _Py_STACK_GROWS_DOWN
  337|  10.1k|    return Py_ARITHMETIC_RIGHT_SHIFT(intptr_t, here_addr - (intptr_t)_tstate->c_stack_soft_limit, _PyOS_STACK_MARGIN_SHIFT);
  ------------------
  |  |  226|  10.1k|#define Py_ARITHMETIC_RIGHT_SHIFT(TYPE, I, J) ((I) >> (J))
  ------------------
  338|       |#else
  339|       |    return Py_ARITHMETIC_RIGHT_SHIFT(intptr_t, (intptr_t)_tstate->c_stack_soft_limit - here_addr, _PyOS_STACK_MARGIN_SHIFT);
  340|       |#endif
  341|  10.1k|}
object.c:_Py_AssertHoldsTstateFunc:
  302|      1|{
  303|      1|    PyThreadState *tstate = _PyThreadState_GET();
  304|      1|    _Py_EnsureFuncTstateNotNULL(func, tstate);
  305|      1|}
object.c:_Py_EnsureFuncTstateNotNULL:
  177|      1|{
  178|      1|    if (tstate == NULL) {
  ------------------
  |  Branch (178:9): [True: 0, False: 1]
  ------------------
  179|      0|#ifndef Py_GIL_DISABLED
  180|      0|        _Py_FatalErrorFunc(func,
  181|      0|            "the function must be called with the GIL held, "
  182|      0|            "after Python initialization and before Python finalization, "
  183|      0|            "but the GIL is released (the current Python thread state is NULL)");
  184|       |#else
  185|       |        _Py_FatalErrorFunc(func,
  186|       |            "the function must be called with an active thread state, "
  187|       |            "after Python initialization and before Python finalization, "
  188|       |            "but it was called without an active thread state. "
  189|       |            "Are you trying to call the C API inside of a Py_BEGIN_ALLOW_THREADS block?");
  190|       |#endif
  191|      0|    }
  192|      1|}
obmalloc.c:_PyInterpreterState_GET:
  207|  33.2k|static inline PyInterpreterState* _PyInterpreterState_GET(void) {
  208|       |#ifdef Py_DEBUG
  209|       |    PyThreadState *tstate = _PyThreadState_GET();
  210|       |    _Py_EnsureTstateNotNULL(tstate);
  211|       |#endif
  212|  33.2k|#if !defined(Py_BUILD_CORE_MODULE)
  213|  33.2k|    return _Py_tss_interp;
  214|       |#else
  215|       |    return _PyThreadState_GET()->interp;
  216|       |#endif
  217|  33.2k|}
obmalloc.c:_Py_IsMainInterpreter:
   61|      1|{
   62|      1|    return (interp == _PyInterpreterState_Main());
   63|      1|}
rangeobject.c:_PyInterpreterState_GET:
  207|     14|static inline PyInterpreterState* _PyInterpreterState_GET(void) {
  208|       |#ifdef Py_DEBUG
  209|       |    PyThreadState *tstate = _PyThreadState_GET();
  210|       |    _Py_EnsureTstateNotNULL(tstate);
  211|       |#endif
  212|     14|#if !defined(Py_BUILD_CORE_MODULE)
  213|     14|    return _Py_tss_interp;
  214|       |#else
  215|       |    return _PyThreadState_GET()->interp;
  216|       |#endif
  217|     14|}
setobject.c:_PyInterpreterState_GET:
  207|     96|static inline PyInterpreterState* _PyInterpreterState_GET(void) {
  208|       |#ifdef Py_DEBUG
  209|       |    PyThreadState *tstate = _PyThreadState_GET();
  210|       |    _Py_EnsureTstateNotNULL(tstate);
  211|       |#endif
  212|     96|#if !defined(Py_BUILD_CORE_MODULE)
  213|     96|    return _Py_tss_interp;
  214|       |#else
  215|       |    return _PyThreadState_GET()->interp;
  216|       |#endif
  217|     96|}
sliceobject.c:_PyInterpreterState_GET:
  207|    102|static inline PyInterpreterState* _PyInterpreterState_GET(void) {
  208|       |#ifdef Py_DEBUG
  209|       |    PyThreadState *tstate = _PyThreadState_GET();
  210|       |    _Py_EnsureTstateNotNULL(tstate);
  211|       |#endif
  212|    102|#if !defined(Py_BUILD_CORE_MODULE)
  213|    102|    return _Py_tss_interp;
  214|       |#else
  215|       |    return _PyThreadState_GET()->interp;
  216|       |#endif
  217|    102|}
tupleobject.c:_PyInterpreterState_GET:
  207|  9.84k|static inline PyInterpreterState* _PyInterpreterState_GET(void) {
  208|       |#ifdef Py_DEBUG
  209|       |    PyThreadState *tstate = _PyThreadState_GET();
  210|       |    _Py_EnsureTstateNotNULL(tstate);
  211|       |#endif
  212|  9.84k|#if !defined(Py_BUILD_CORE_MODULE)
  213|  9.84k|    return _Py_tss_interp;
  214|       |#else
  215|       |    return _PyThreadState_GET()->interp;
  216|       |#endif
  217|  9.84k|}
typeobject.c:_PyInterpreterState_GET:
  207|  32.7k|static inline PyInterpreterState* _PyInterpreterState_GET(void) {
  208|       |#ifdef Py_DEBUG
  209|       |    PyThreadState *tstate = _PyThreadState_GET();
  210|       |    _Py_EnsureTstateNotNULL(tstate);
  211|       |#endif
  212|  32.7k|#if !defined(Py_BUILD_CORE_MODULE)
  213|  32.7k|    return _Py_tss_interp;
  214|       |#else
  215|       |    return _PyThreadState_GET()->interp;
  216|       |#endif
  217|  32.7k|}
typeobject.c:_PyThreadState_GET:
  117|  11.2k|{
  118|  11.2k|#if !defined(Py_BUILD_CORE_MODULE)
  119|  11.2k|    return _Py_tss_tstate;
  120|       |#else
  121|       |    return _PyThreadState_GetCurrent();
  122|       |#endif
  123|  11.2k|}
typeobject.c:_Py_IsMainInterpreter:
   61|    202|{
   62|    202|    return (interp == _PyInterpreterState_Main());
   63|    202|}
unicodeobject.c:_PyInterpreterState_GET:
  207|  3.18k|static inline PyInterpreterState* _PyInterpreterState_GET(void) {
  208|       |#ifdef Py_DEBUG
  209|       |    PyThreadState *tstate = _PyThreadState_GET();
  210|       |    _Py_EnsureTstateNotNULL(tstate);
  211|       |#endif
  212|  3.18k|#if !defined(Py_BUILD_CORE_MODULE)
  213|  3.18k|    return _Py_tss_interp;
  214|       |#else
  215|       |    return _PyThreadState_GET()->interp;
  216|       |#endif
  217|  3.18k|}
unicodeobject.c:_Py_IsMainInterpreter:
   61|      3|{
   62|      3|    return (interp == _PyInterpreterState_Main());
   63|      3|}
weakrefobject.c:_PyInterpreterState_GET:
  207|    286|static inline PyInterpreterState* _PyInterpreterState_GET(void) {
  208|       |#ifdef Py_DEBUG
  209|       |    PyThreadState *tstate = _PyThreadState_GET();
  210|       |    _Py_EnsureTstateNotNULL(tstate);
  211|       |#endif
  212|    286|#if !defined(Py_BUILD_CORE_MODULE)
  213|    286|    return _Py_tss_interp;
  214|       |#else
  215|       |    return _PyThreadState_GET()->interp;
  216|       |#endif
  217|    286|}
_warnings.c:_PyInterpreterState_GET:
  207|      1|static inline PyInterpreterState* _PyInterpreterState_GET(void) {
  208|       |#ifdef Py_DEBUG
  209|       |    PyThreadState *tstate = _PyThreadState_GET();
  210|       |    _Py_EnsureTstateNotNULL(tstate);
  211|       |#endif
  212|      1|#if !defined(Py_BUILD_CORE_MODULE)
  213|      1|    return _Py_tss_interp;
  214|       |#else
  215|       |    return _PyThreadState_GET()->interp;
  216|       |#endif
  217|      1|}
bltinmodule.c:_PyThreadState_GET:
  117|     98|{
  118|     98|#if !defined(Py_BUILD_CORE_MODULE)
  119|     98|    return _Py_tss_tstate;
  120|       |#else
  121|       |    return _PyThreadState_GetCurrent();
  122|       |#endif
  123|     98|}
ceval.c:_Py_get_machine_stack_pointer:
  318|    707|_Py_get_machine_stack_pointer(void) {
  319|    707|#if _Py__has_builtin(__builtin_frame_address) || defined(__GNUC__)
  320|    707|    return (uintptr_t)__builtin_frame_address(0);
  321|       |#elif defined(_MSC_VER)
  322|       |    return (uintptr_t)_AddressOfReturnAddress();
  323|       |#else
  324|       |    char here;
  325|       |    /* Avoid compiler warning about returning stack address */
  326|       |    return return_pointer_as_int(&here);
  327|       |#endif
  328|    707|}
ceval.c:_PyThreadState_GET:
  117|    136|{
  118|    136|#if !defined(Py_BUILD_CORE_MODULE)
  119|    136|    return _Py_tss_tstate;
  120|       |#else
  121|       |    return _PyThreadState_GetCurrent();
  122|       |#endif
  123|    136|}
ceval.c:_Py_EnsureFuncTstateNotNULL:
  177|    452|{
  178|    452|    if (tstate == NULL) {
  ------------------
  |  Branch (178:9): [True: 0, False: 452]
  ------------------
  179|      0|#ifndef Py_GIL_DISABLED
  180|      0|        _Py_FatalErrorFunc(func,
  181|      0|            "the function must be called with the GIL held, "
  182|      0|            "after Python initialization and before Python finalization, "
  183|      0|            "but the GIL is released (the current Python thread state is NULL)");
  184|       |#else
  185|       |        _Py_FatalErrorFunc(func,
  186|       |            "the function must be called with an active thread state, "
  187|       |            "after Python initialization and before Python finalization, "
  188|       |            "but it was called without an active thread state. "
  189|       |            "Are you trying to call the C API inside of a Py_BEGIN_ALLOW_THREADS block?");
  190|       |#endif
  191|      0|    }
  192|    452|}
codecs.c:_PyInterpreterState_GET:
  207|     13|static inline PyInterpreterState* _PyInterpreterState_GET(void) {
  208|       |#ifdef Py_DEBUG
  209|       |    PyThreadState *tstate = _PyThreadState_GET();
  210|       |    _Py_EnsureTstateNotNULL(tstate);
  211|       |#endif
  212|     13|#if !defined(Py_BUILD_CORE_MODULE)
  213|     13|    return _Py_tss_interp;
  214|       |#else
  215|       |    return _PyThreadState_GET()->interp;
  216|       |#endif
  217|     13|}
errors.c:_PyThreadState_GET:
  117|  28.9k|{
  118|  28.9k|#if !defined(Py_BUILD_CORE_MODULE)
  119|  28.9k|    return _Py_tss_tstate;
  120|       |#else
  121|       |    return _PyThreadState_GetCurrent();
  122|       |#endif
  123|  28.9k|}
errors.c:_Py_AssertHoldsTstateFunc:
  302|  14.1k|{
  303|  14.1k|    PyThreadState *tstate = _PyThreadState_GET();
  304|  14.1k|    _Py_EnsureFuncTstateNotNULL(func, tstate);
  305|  14.1k|}
errors.c:_Py_EnsureFuncTstateNotNULL:
  177|  14.1k|{
  178|  14.1k|    if (tstate == NULL) {
  ------------------
  |  Branch (178:9): [True: 0, False: 14.1k]
  ------------------
  179|      0|#ifndef Py_GIL_DISABLED
  180|      0|        _Py_FatalErrorFunc(func,
  181|      0|            "the function must be called with the GIL held, "
  182|      0|            "after Python initialization and before Python finalization, "
  183|      0|            "but the GIL is released (the current Python thread state is NULL)");
  184|       |#else
  185|       |        _Py_FatalErrorFunc(func,
  186|       |            "the function must be called with an active thread state, "
  187|       |            "after Python initialization and before Python finalization, "
  188|       |            "but it was called without an active thread state. "
  189|       |            "Are you trying to call the C API inside of a Py_BEGIN_ALLOW_THREADS block?");
  190|       |#endif
  191|      0|    }
  192|  14.1k|}
frame.c:_PyThreadState_GET:
  117|  1.73k|{
  118|  1.73k|#if !defined(Py_BUILD_CORE_MODULE)
  119|  1.73k|    return _Py_tss_tstate;
  120|       |#else
  121|       |    return _PyThreadState_GetCurrent();
  122|       |#endif
  123|  1.73k|}
frame.c:_PyInterpreterState_GET:
  207|     14|static inline PyInterpreterState* _PyInterpreterState_GET(void) {
  208|       |#ifdef Py_DEBUG
  209|       |    PyThreadState *tstate = _PyThreadState_GET();
  210|       |    _Py_EnsureTstateNotNULL(tstate);
  211|       |#endif
  212|     14|#if !defined(Py_BUILD_CORE_MODULE)
  213|     14|    return _Py_tss_interp;
  214|       |#else
  215|       |    return _PyThreadState_GET()->interp;
  216|       |#endif
  217|     14|}
gc.c:_PyInterpreterState_GET:
  207|  4.22k|static inline PyInterpreterState* _PyInterpreterState_GET(void) {
  208|       |#ifdef Py_DEBUG
  209|       |    PyThreadState *tstate = _PyThreadState_GET();
  210|       |    _Py_EnsureTstateNotNULL(tstate);
  211|       |#endif
  212|  4.22k|#if !defined(Py_BUILD_CORE_MODULE)
  213|  4.22k|    return _Py_tss_interp;
  214|       |#else
  215|       |    return _PyThreadState_GET()->interp;
  216|       |#endif
  217|  4.22k|}
gc.c:_PyThreadState_GET:
  117|  13.6k|{
  118|  13.6k|#if !defined(Py_BUILD_CORE_MODULE)
  119|  13.6k|    return _Py_tss_tstate;
  120|       |#else
  121|       |    return _PyThreadState_GetCurrent();
  122|       |#endif
  123|  13.6k|}
ceval_gil.c:_PyThreadState_GET:
  117|    327|{
  118|    327|#if !defined(Py_BUILD_CORE_MODULE)
  119|    327|    return _Py_tss_tstate;
  120|       |#else
  121|       |    return _PyThreadState_GetCurrent();
  122|       |#endif
  123|    327|}
ceval_gil.c:_Py_EnsureFuncTstateNotNULL:
  177|    655|{
  178|    655|    if (tstate == NULL) {
  ------------------
  |  Branch (178:9): [True: 0, False: 655]
  ------------------
  179|      0|#ifndef Py_GIL_DISABLED
  180|      0|        _Py_FatalErrorFunc(func,
  181|      0|            "the function must be called with the GIL held, "
  182|      0|            "after Python initialization and before Python finalization, "
  183|      0|            "but the GIL is released (the current Python thread state is NULL)");
  184|       |#else
  185|       |        _Py_FatalErrorFunc(func,
  186|       |            "the function must be called with an active thread state, "
  187|       |            "after Python initialization and before Python finalization, "
  188|       |            "but it was called without an active thread state. "
  189|       |            "Are you trying to call the C API inside of a Py_BEGIN_ALLOW_THREADS block?");
  190|       |#endif
  191|      0|    }
  192|    655|}
import.c:_PyThreadState_GET:
  117|    124|{
  118|    124|#if !defined(Py_BUILD_CORE_MODULE)
  119|    124|    return _Py_tss_tstate;
  120|       |#else
  121|       |    return _PyThreadState_GetCurrent();
  122|       |#endif
  123|    124|}
import.c:_PyInterpreterState_GET:
  207|    281|static inline PyInterpreterState* _PyInterpreterState_GET(void) {
  208|       |#ifdef Py_DEBUG
  209|       |    PyThreadState *tstate = _PyThreadState_GET();
  210|       |    _Py_EnsureTstateNotNULL(tstate);
  211|       |#endif
  212|    281|#if !defined(Py_BUILD_CORE_MODULE)
  213|    281|    return _Py_tss_interp;
  214|       |#else
  215|       |    return _PyThreadState_GET()->interp;
  216|       |#endif
  217|    281|}
import.c:_Py_IsMainInterpreter:
   61|     14|{
   62|     14|    return (interp == _PyInterpreterState_Main());
   63|     14|}
marshal.c:_PyInterpreterState_GET:
  207|  3.79k|static inline PyInterpreterState* _PyInterpreterState_GET(void) {
  208|       |#ifdef Py_DEBUG
  209|       |    PyThreadState *tstate = _PyThreadState_GET();
  210|       |    _Py_EnsureTstateNotNULL(tstate);
  211|       |#endif
  212|  3.79k|#if !defined(Py_BUILD_CORE_MODULE)
  213|  3.79k|    return _Py_tss_interp;
  214|       |#else
  215|       |    return _PyThreadState_GET()->interp;
  216|       |#endif
  217|  3.79k|}
pylifecycle.c:_Py_IsMainInterpreter:
   61|      4|{
   62|      4|    return (interp == _PyInterpreterState_Main());
   63|      4|}
pystate.c:_Py_EnsureFuncTstateNotNULL:
  177|  1.21k|{
  178|  1.21k|    if (tstate == NULL) {
  ------------------
  |  Branch (178:9): [True: 0, False: 1.21k]
  ------------------
  179|      0|#ifndef Py_GIL_DISABLED
  180|      0|        _Py_FatalErrorFunc(func,
  181|      0|            "the function must be called with the GIL held, "
  182|      0|            "after Python initialization and before Python finalization, "
  183|      0|            "but the GIL is released (the current Python thread state is NULL)");
  184|       |#else
  185|       |        _Py_FatalErrorFunc(func,
  186|       |            "the function must be called with an active thread state, "
  187|       |            "after Python initialization and before Python finalization, "
  188|       |            "but it was called without an active thread state. "
  189|       |            "Are you trying to call the C API inside of a Py_BEGIN_ALLOW_THREADS block?");
  190|       |#endif
  191|      0|    }
  192|  1.21k|}
pystate.c:_Py_IsMainInterpreter:
   61|      2|{
   62|      2|    return (interp == _PyInterpreterState_Main());
   63|      2|}
specialize.c:_PyThreadState_GET:
  117|    743|{
  118|    743|#if !defined(Py_BUILD_CORE_MODULE)
  119|    743|    return _Py_tss_tstate;
  120|       |#else
  121|       |    return _PyThreadState_GetCurrent();
  122|       |#endif
  123|    743|}
specialize.c:_PyInterpreterState_GET:
  207|    404|static inline PyInterpreterState* _PyInterpreterState_GET(void) {
  208|       |#ifdef Py_DEBUG
  209|       |    PyThreadState *tstate = _PyThreadState_GET();
  210|       |    _Py_EnsureTstateNotNULL(tstate);
  211|       |#endif
  212|    404|#if !defined(Py_BUILD_CORE_MODULE)
  213|    404|    return _Py_tss_interp;
  214|       |#else
  215|       |    return _PyThreadState_GET()->interp;
  216|       |#endif
  217|    404|}
sysmodule.c:_PyThreadState_GET:
  117|    119|{
  118|    119|#if !defined(Py_BUILD_CORE_MODULE)
  119|    119|    return _Py_tss_tstate;
  120|       |#else
  121|       |    return _PyThreadState_GetCurrent();
  122|       |#endif
  123|    119|}
sysmodule.c:_PyInterpreterState_GET:
  207|      9|static inline PyInterpreterState* _PyInterpreterState_GET(void) {
  208|       |#ifdef Py_DEBUG
  209|       |    PyThreadState *tstate = _PyThreadState_GET();
  210|       |    _Py_EnsureTstateNotNULL(tstate);
  211|       |#endif
  212|      9|#if !defined(Py_BUILD_CORE_MODULE)
  213|      9|    return _Py_tss_interp;
  214|       |#else
  215|       |    return _PyThreadState_GET()->interp;
  216|       |#endif
  217|      9|}
sysmodule.c:_Py_EnsureFuncTstateNotNULL:
  177|     24|{
  178|     24|    if (tstate == NULL) {
  ------------------
  |  Branch (178:9): [True: 0, False: 24]
  ------------------
  179|      0|#ifndef Py_GIL_DISABLED
  180|      0|        _Py_FatalErrorFunc(func,
  181|      0|            "the function must be called with the GIL held, "
  182|      0|            "after Python initialization and before Python finalization, "
  183|      0|            "but the GIL is released (the current Python thread state is NULL)");
  184|       |#else
  185|       |        _Py_FatalErrorFunc(func,
  186|       |            "the function must be called with an active thread state, "
  187|       |            "after Python initialization and before Python finalization, "
  188|       |            "but it was called without an active thread state. "
  189|       |            "Are you trying to call the C API inside of a Py_BEGIN_ALLOW_THREADS block?");
  190|       |#endif
  191|      0|    }
  192|     24|}
thread.c:_PyInterpreterState_GET:
  207|      1|static inline PyInterpreterState* _PyInterpreterState_GET(void) {
  208|       |#ifdef Py_DEBUG
  209|       |    PyThreadState *tstate = _PyThreadState_GET();
  210|       |    _Py_EnsureTstateNotNULL(tstate);
  211|       |#endif
  212|      1|#if !defined(Py_BUILD_CORE_MODULE)
  213|      1|    return _Py_tss_interp;
  214|       |#else
  215|       |    return _PyThreadState_GET()->interp;
  216|       |#endif
  217|      1|}
dtoa.c:_PyInterpreterState_GET:
  207|      8|static inline PyInterpreterState* _PyInterpreterState_GET(void) {
  208|       |#ifdef Py_DEBUG
  209|       |    PyThreadState *tstate = _PyThreadState_GET();
  210|       |    _Py_EnsureTstateNotNULL(tstate);
  211|       |#endif
  212|      8|#if !defined(Py_BUILD_CORE_MODULE)
  213|      8|    return _Py_tss_interp;
  214|       |#else
  215|       |    return _PyThreadState_GET()->interp;
  216|       |#endif
  217|      8|}
signalmodule.c:_Py_IsMainInterpreter:
   61|     31|{
   62|     31|    return (interp == _PyInterpreterState_Main());
   63|     31|}
signalmodule.c:_PyThreadState_GET:
  117|     31|{
  118|     31|#if !defined(Py_BUILD_CORE_MODULE)
  119|     31|    return _Py_tss_tstate;
  120|       |#else
  121|       |    return _PyThreadState_GetCurrent();
  122|       |#endif
  123|     31|}
signalmodule.c:_Py_ThreadCanHandleSignals:
   84|     31|{
   85|     31|    return (_Py_IsMainThread() && _Py_IsMainInterpreter(interp));
  ------------------
  |  Branch (85:13): [True: 31, False: 0]
  |  Branch (85:35): [True: 31, False: 0]
  ------------------
   86|     31|}
textio.c:_PyInterpreterState_GET:
  207|      3|static inline PyInterpreterState* _PyInterpreterState_GET(void) {
  208|       |#ifdef Py_DEBUG
  209|       |    PyThreadState *tstate = _PyThreadState_GET();
  210|       |    _Py_EnsureTstateNotNULL(tstate);
  211|       |#endif
  212|      3|#if !defined(Py_BUILD_CORE_MODULE)
  213|      3|    return _Py_tss_interp;
  214|       |#else
  215|       |    return _PyThreadState_GET()->interp;
  216|       |#endif
  217|      3|}
getpath.c:_PyThreadState_GET:
  117|      1|{
  118|      1|#if !defined(Py_BUILD_CORE_MODULE)
  119|      1|    return _Py_tss_tstate;
  120|       |#else
  121|       |    return _PyThreadState_GetCurrent();
  122|       |#endif
  123|      1|}
abstract.c:_PyThreadState_GET:
  117|    268|{
  118|    268|#if !defined(Py_BUILD_CORE_MODULE)
  119|    268|    return _Py_tss_tstate;
  120|       |#else
  121|       |    return _PyThreadState_GetCurrent();
  122|       |#endif
  123|    268|}
abstract.c:_Py_get_machine_stack_pointer:
  318|     34|_Py_get_machine_stack_pointer(void) {
  319|     34|#if _Py__has_builtin(__builtin_frame_address) || defined(__GNUC__)
  320|     34|    return (uintptr_t)__builtin_frame_address(0);
  321|       |#elif defined(_MSC_VER)
  322|       |    return (uintptr_t)_AddressOfReturnAddress();
  323|       |#else
  324|       |    char here;
  325|       |    /* Avoid compiler warning about returning stack address */
  326|       |    return return_pointer_as_int(&here);
  327|       |#endif
  328|     34|}
bytearrayobject.c:_PyInterpreterState_GET:
  207|      2|static inline PyInterpreterState* _PyInterpreterState_GET(void) {
  208|       |#ifdef Py_DEBUG
  209|       |    PyThreadState *tstate = _PyThreadState_GET();
  210|       |    _Py_EnsureTstateNotNULL(tstate);
  211|       |#endif
  212|      2|#if !defined(Py_BUILD_CORE_MODULE)
  213|      2|    return _Py_tss_interp;
  214|       |#else
  215|       |    return _PyThreadState_GET()->interp;
  216|       |#endif
  217|      2|}
bytesobject.c:_PyInterpreterState_GET:
  207|      4|static inline PyInterpreterState* _PyInterpreterState_GET(void) {
  208|       |#ifdef Py_DEBUG
  209|       |    PyThreadState *tstate = _PyThreadState_GET();
  210|       |    _Py_EnsureTstateNotNULL(tstate);
  211|       |#endif
  212|      4|#if !defined(Py_BUILD_CORE_MODULE)
  213|      4|    return _Py_tss_interp;
  214|       |#else
  215|       |    return _PyThreadState_GET()->interp;
  216|       |#endif
  217|      4|}
call.c:_PyThreadState_GET:
  117|  3.29k|{
  118|  3.29k|#if !defined(Py_BUILD_CORE_MODULE)
  119|  3.29k|    return _Py_tss_tstate;
  120|       |#else
  121|       |    return _PyThreadState_GetCurrent();
  122|       |#endif
  123|  3.29k|}
call.c:_Py_get_machine_stack_pointer:
  318|    515|_Py_get_machine_stack_pointer(void) {
  319|    515|#if _Py__has_builtin(__builtin_frame_address) || defined(__GNUC__)
  320|    515|    return (uintptr_t)__builtin_frame_address(0);
  321|       |#elif defined(_MSC_VER)
  322|       |    return (uintptr_t)_AddressOfReturnAddress();
  323|       |#else
  324|       |    char here;
  325|       |    /* Avoid compiler warning about returning stack address */
  326|       |    return return_pointer_as_int(&here);
  327|       |#endif
  328|    515|}
cellobject.c:_PyInterpreterState_GET:
  207|    188|static inline PyInterpreterState* _PyInterpreterState_GET(void) {
  208|       |#ifdef Py_DEBUG
  209|       |    PyThreadState *tstate = _PyThreadState_GET();
  210|       |    _Py_EnsureTstateNotNULL(tstate);
  211|       |#endif
  212|    188|#if !defined(Py_BUILD_CORE_MODULE)
  213|    188|    return _Py_tss_interp;
  214|       |#else
  215|       |    return _PyThreadState_GET()->interp;
  216|       |#endif
  217|    188|}
classobject.c:_PyInterpreterState_GET:
  207|    784|static inline PyInterpreterState* _PyInterpreterState_GET(void) {
  208|       |#ifdef Py_DEBUG
  209|       |    PyThreadState *tstate = _PyThreadState_GET();
  210|       |    _Py_EnsureTstateNotNULL(tstate);
  211|       |#endif
  212|    784|#if !defined(Py_BUILD_CORE_MODULE)
  213|    784|    return _Py_tss_interp;
  214|       |#else
  215|       |    return _PyThreadState_GET()->interp;
  216|       |#endif
  217|    784|}
classobject.c:_PyThreadState_GET:
  117|     69|{
  118|     69|#if !defined(Py_BUILD_CORE_MODULE)
  119|     69|    return _Py_tss_tstate;
  120|       |#else
  121|       |    return _PyThreadState_GetCurrent();
  122|       |#endif
  123|     69|}
codeobject.c:_PyInterpreterState_GET:
  207|  4.16k|static inline PyInterpreterState* _PyInterpreterState_GET(void) {
  208|       |#ifdef Py_DEBUG
  209|       |    PyThreadState *tstate = _PyThreadState_GET();
  210|       |    _Py_EnsureTstateNotNULL(tstate);
  211|       |#endif
  212|  4.16k|#if !defined(Py_BUILD_CORE_MODULE)
  213|  4.16k|    return _Py_tss_interp;
  214|       |#else
  215|       |    return _PyThreadState_GET()->interp;
  216|       |#endif
  217|  4.16k|}
descrobject.c:_PyInterpreterState_GET:
  207|    253|static inline PyInterpreterState* _PyInterpreterState_GET(void) {
  208|       |#ifdef Py_DEBUG
  209|       |    PyThreadState *tstate = _PyThreadState_GET();
  210|       |    _Py_EnsureTstateNotNULL(tstate);
  211|       |#endif
  212|    253|#if !defined(Py_BUILD_CORE_MODULE)
  213|    253|    return _Py_tss_interp;
  214|       |#else
  215|       |    return _PyThreadState_GET()->interp;
  216|       |#endif
  217|    253|}
descrobject.c:_PyThreadState_GET:
  117|    305|{
  118|    305|#if !defined(Py_BUILD_CORE_MODULE)
  119|    305|    return _Py_tss_tstate;
  120|       |#else
  121|       |    return _PyThreadState_GetCurrent();
  122|       |#endif
  123|    305|}
descrobject.c:_Py_get_machine_stack_pointer:
  318|    305|_Py_get_machine_stack_pointer(void) {
  319|    305|#if _Py__has_builtin(__builtin_frame_address) || defined(__GNUC__)
  320|    305|    return (uintptr_t)__builtin_frame_address(0);
  321|       |#elif defined(_MSC_VER)
  322|       |    return (uintptr_t)_AddressOfReturnAddress();
  323|       |#else
  324|       |    char here;
  325|       |    /* Avoid compiler warning about returning stack address */
  326|       |    return return_pointer_as_int(&here);
  327|       |#endif
  328|    305|}
enumobject.c:_PyThreadState_GET:
  117|      3|{
  118|      3|#if !defined(Py_BUILD_CORE_MODULE)
  119|      3|    return _Py_tss_tstate;
  120|       |#else
  121|       |    return _PyThreadState_GetCurrent();
  122|       |#endif
  123|      3|}
genobject.c:_PyInterpreterState_GET:
  207|     84|static inline PyInterpreterState* _PyInterpreterState_GET(void) {
  208|       |#ifdef Py_DEBUG
  209|       |    PyThreadState *tstate = _PyThreadState_GET();
  210|       |    _Py_EnsureTstateNotNULL(tstate);
  211|       |#endif
  212|     84|#if !defined(Py_BUILD_CORE_MODULE)
  213|     84|    return _Py_tss_interp;
  214|       |#else
  215|       |    return _PyThreadState_GET()->interp;
  216|       |#endif
  217|     84|}
genobject.c:_PyThreadState_GET:
  117|     36|{
  118|     36|#if !defined(Py_BUILD_CORE_MODULE)
  119|     36|    return _Py_tss_tstate;
  120|       |#else
  121|       |    return _PyThreadState_GetCurrent();
  122|       |#endif
  123|     36|}
floatobject.c:_PyInterpreterState_GET:
  207|     85|static inline PyInterpreterState* _PyInterpreterState_GET(void) {
  208|       |#ifdef Py_DEBUG
  209|       |    PyThreadState *tstate = _PyThreadState_GET();
  210|       |    _Py_EnsureTstateNotNULL(tstate);
  211|       |#endif
  212|     85|#if !defined(Py_BUILD_CORE_MODULE)
  213|     85|    return _Py_tss_interp;
  214|       |#else
  215|       |    return _PyThreadState_GET()->interp;
  216|       |#endif
  217|     85|}
frameobject.c:_PyInterpreterState_GET:
  207|     14|static inline PyInterpreterState* _PyInterpreterState_GET(void) {
  208|       |#ifdef Py_DEBUG
  209|       |    PyThreadState *tstate = _PyThreadState_GET();
  210|       |    _Py_EnsureTstateNotNULL(tstate);
  211|       |#endif
  212|     14|#if !defined(Py_BUILD_CORE_MODULE)
  213|     14|    return _Py_tss_interp;
  214|       |#else
  215|       |    return _PyThreadState_GET()->interp;
  216|       |#endif
  217|     14|}
funcobject.c:_PyInterpreterState_GET:
  207|  2.89k|static inline PyInterpreterState* _PyInterpreterState_GET(void) {
  208|       |#ifdef Py_DEBUG
  209|       |    PyThreadState *tstate = _PyThreadState_GET();
  210|       |    _Py_EnsureTstateNotNULL(tstate);
  211|       |#endif
  212|  2.89k|#if !defined(Py_BUILD_CORE_MODULE)
  213|  2.89k|    return _Py_tss_interp;
  214|       |#else
  215|       |    return _PyThreadState_GET()->interp;
  216|       |#endif
  217|  2.89k|}
lazyimportobject.c:_PyInterpreterState_GET:
  207|      4|static inline PyInterpreterState* _PyInterpreterState_GET(void) {
  208|       |#ifdef Py_DEBUG
  209|       |    PyThreadState *tstate = _PyThreadState_GET();
  210|       |    _Py_EnsureTstateNotNULL(tstate);
  211|       |#endif
  212|      4|#if !defined(Py_BUILD_CORE_MODULE)
  213|      4|    return _Py_tss_interp;
  214|       |#else
  215|       |    return _PyThreadState_GET()->interp;
  216|       |#endif
  217|      4|}
methodobject.c:_PyInterpreterState_GET:
  207|  2.01k|static inline PyInterpreterState* _PyInterpreterState_GET(void) {
  208|       |#ifdef Py_DEBUG
  209|       |    PyThreadState *tstate = _PyThreadState_GET();
  210|       |    _Py_EnsureTstateNotNULL(tstate);
  211|       |#endif
  212|  2.01k|#if !defined(Py_BUILD_CORE_MODULE)
  213|  2.01k|    return _Py_tss_interp;
  214|       |#else
  215|       |    return _PyThreadState_GET()->interp;
  216|       |#endif
  217|  2.01k|}
methodobject.c:_PyThreadState_GET:
  117|    855|{
  118|    855|#if !defined(Py_BUILD_CORE_MODULE)
  119|    855|    return _Py_tss_tstate;
  120|       |#else
  121|       |    return _PyThreadState_GetCurrent();
  122|       |#endif
  123|    855|}
methodobject.c:_Py_get_machine_stack_pointer:
  318|    814|_Py_get_machine_stack_pointer(void) {
  319|    814|#if _Py__has_builtin(__builtin_frame_address) || defined(__GNUC__)
  320|    814|    return (uintptr_t)__builtin_frame_address(0);
  321|       |#elif defined(_MSC_VER)
  322|       |    return (uintptr_t)_AddressOfReturnAddress();
  323|       |#else
  324|       |    char here;
  325|       |    /* Avoid compiler warning about returning stack address */
  326|       |    return return_pointer_as_int(&here);
  327|       |#endif
  328|    814|}
crossinterp.c:_Py_IsMainInterpreter:
   61|      1|{
   62|      1|    return (interp == _PyInterpreterState_Main());
   63|      1|}

pylifecycle.c:_PyRuntimeState_GetCoreInitialized:
   63|      2|_PyRuntimeState_GetCoreInitialized(_PyRuntimeState *runtime) {
   64|      2|    return _Py_atomic_load_int(&runtime->core_initialized);
   65|      2|}
pylifecycle.c:_PyRuntimeState_GetInitialized:
   73|  1.12k|_PyRuntimeState_GetInitialized(_PyRuntimeState *runtime) {
   74|  1.12k|    return _Py_atomic_load_int(&runtime->initialized);
   75|  1.12k|}
pylifecycle.c:_PyRuntimeState_SetFinalizing:
   46|      1|_PyRuntimeState_SetFinalizing(_PyRuntimeState *runtime, PyThreadState *tstate) {
   47|      1|    _Py_atomic_store_ptr_relaxed(&runtime->_finalizing, tstate);
   48|      1|    if (tstate == NULL) {
  ------------------
  |  Branch (48:9): [True: 1, False: 0]
  ------------------
   49|      1|        _Py_atomic_store_ulong_relaxed(&runtime->_finalizing_id, 0);
  ------------------
  |  |  619|      1|    _Py_atomic_store_uint64_relaxed((uint64_t *)p, v)
  ------------------
   50|      1|    }
   51|      0|    else {
   52|       |        // XXX Re-enable this assert once gh-109860 is fixed.
   53|       |        //assert(tstate->thread_id == PyThread_get_thread_ident());
   54|      0|        _Py_atomic_store_ulong_relaxed(&runtime->_finalizing_id,
  ------------------
  |  |  619|      0|    _Py_atomic_store_uint64_relaxed((uint64_t *)p, v)
  ------------------
   55|      0|                                       tstate->thread_id);
   56|      0|    }
   57|      1|}
pylifecycle.c:_PyRuntimeState_SetCoreInitialized:
   68|      1|_PyRuntimeState_SetCoreInitialized(_PyRuntimeState *runtime, int initialized) {
   69|      1|    _Py_atomic_store_int(&runtime->core_initialized, initialized);
   70|      1|}
pylifecycle.c:_PyRuntimeState_SetInitialized:
   78|      1|_PyRuntimeState_SetInitialized(_PyRuntimeState *runtime, int initialized) {
   79|      1|    _Py_atomic_store_int(&runtime->initialized, initialized);
   80|      1|}
pystate.c:_PyRuntimeState_GetCoreInitialized:
   63|      1|_PyRuntimeState_GetCoreInitialized(_PyRuntimeState *runtime) {
   64|      1|    return _Py_atomic_load_int(&runtime->core_initialized);
   65|      1|}
pystate.c:_PyRuntimeState_GetInitialized:
   73|      1|_PyRuntimeState_GetInitialized(_PyRuntimeState *runtime) {
   74|      1|    return _Py_atomic_load_int(&runtime->initialized);
   75|      1|}

typeobject.c:_PySlot_heaptype_apply_field_slot:
  381|    229|{
  382|    229|    switch (slot.sl_id) {
  ------------------
  |  Branch (382:13): [True: 229, False: 0]
  ------------------
  383|      0|        case Py_mp_subscript:
  ------------------
  |  |   13|      0|#define Py_mp_subscript 5
  ------------------
  |  Branch (383:9): [True: 0, False: 229]
  ------------------
  384|      0|            ht->as_mapping.mp_subscript = (binaryfunc)slot.sl_func;
  385|      0|            break;
  386|      0|        case Py_nb_absolute:
  ------------------
  |  |   14|      0|#define Py_nb_absolute 6
  ------------------
  |  Branch (386:9): [True: 0, False: 229]
  ------------------
  387|      0|            ht->as_number.nb_absolute = (unaryfunc)slot.sl_func;
  388|      0|            break;
  389|      0|        case Py_nb_add:
  ------------------
  |  |   15|      0|#define Py_nb_add 7
  ------------------
  |  Branch (389:9): [True: 0, False: 229]
  ------------------
  390|      0|            ht->as_number.nb_add = (binaryfunc)slot.sl_func;
  391|      0|            break;
  392|      0|        case Py_nb_and:
  ------------------
  |  |   16|      0|#define Py_nb_and 8
  ------------------
  |  Branch (392:9): [True: 0, False: 229]
  ------------------
  393|      0|            ht->as_number.nb_and = (binaryfunc)slot.sl_func;
  394|      0|            break;
  395|      0|        case Py_nb_bool:
  ------------------
  |  |   17|      0|#define Py_nb_bool 9
  ------------------
  |  Branch (395:9): [True: 0, False: 229]
  ------------------
  396|      0|            ht->as_number.nb_bool = (inquiry)slot.sl_func;
  397|      0|            break;
  398|      0|        case Py_nb_divmod:
  ------------------
  |  |   18|      0|#define Py_nb_divmod 10
  ------------------
  |  Branch (398:9): [True: 0, False: 229]
  ------------------
  399|      0|            ht->as_number.nb_divmod = (binaryfunc)slot.sl_func;
  400|      0|            break;
  401|      0|        case Py_nb_float:
  ------------------
  |  |   19|      0|#define Py_nb_float 11
  ------------------
  |  Branch (401:9): [True: 0, False: 229]
  ------------------
  402|      0|            ht->as_number.nb_float = (unaryfunc)slot.sl_func;
  403|      0|            break;
  404|      0|        case Py_nb_floor_divide:
  ------------------
  |  |   20|      0|#define Py_nb_floor_divide 12
  ------------------
  |  Branch (404:9): [True: 0, False: 229]
  ------------------
  405|      0|            ht->as_number.nb_floor_divide = (binaryfunc)slot.sl_func;
  406|      0|            break;
  407|      0|        case Py_nb_index:
  ------------------
  |  |   21|      0|#define Py_nb_index 13
  ------------------
  |  Branch (407:9): [True: 0, False: 229]
  ------------------
  408|      0|            ht->as_number.nb_index = (unaryfunc)slot.sl_func;
  409|      0|            break;
  410|      0|        case Py_nb_inplace_add:
  ------------------
  |  |   22|      0|#define Py_nb_inplace_add 14
  ------------------
  |  Branch (410:9): [True: 0, False: 229]
  ------------------
  411|      0|            ht->as_number.nb_inplace_add = (binaryfunc)slot.sl_func;
  412|      0|            break;
  413|      0|        case Py_nb_inplace_and:
  ------------------
  |  |   23|      0|#define Py_nb_inplace_and 15
  ------------------
  |  Branch (413:9): [True: 0, False: 229]
  ------------------
  414|      0|            ht->as_number.nb_inplace_and = (binaryfunc)slot.sl_func;
  415|      0|            break;
  416|      0|        case Py_nb_inplace_floor_divide:
  ------------------
  |  |   24|      0|#define Py_nb_inplace_floor_divide 16
  ------------------
  |  Branch (416:9): [True: 0, False: 229]
  ------------------
  417|      0|            ht->as_number.nb_inplace_floor_divide = (binaryfunc)slot.sl_func;
  418|      0|            break;
  419|      0|        case Py_nb_inplace_lshift:
  ------------------
  |  |   25|      0|#define Py_nb_inplace_lshift 17
  ------------------
  |  Branch (419:9): [True: 0, False: 229]
  ------------------
  420|      0|            ht->as_number.nb_inplace_lshift = (binaryfunc)slot.sl_func;
  421|      0|            break;
  422|      0|        case Py_nb_inplace_multiply:
  ------------------
  |  |   26|      0|#define Py_nb_inplace_multiply 18
  ------------------
  |  Branch (422:9): [True: 0, False: 229]
  ------------------
  423|      0|            ht->as_number.nb_inplace_multiply = (binaryfunc)slot.sl_func;
  424|      0|            break;
  425|      0|        case Py_nb_inplace_or:
  ------------------
  |  |   27|      0|#define Py_nb_inplace_or 19
  ------------------
  |  Branch (425:9): [True: 0, False: 229]
  ------------------
  426|      0|            ht->as_number.nb_inplace_or = (binaryfunc)slot.sl_func;
  427|      0|            break;
  428|      0|        case Py_nb_inplace_power:
  ------------------
  |  |   28|      0|#define Py_nb_inplace_power 20
  ------------------
  |  Branch (428:9): [True: 0, False: 229]
  ------------------
  429|      0|            ht->as_number.nb_inplace_power = (ternaryfunc)slot.sl_func;
  430|      0|            break;
  431|      0|        case Py_nb_inplace_remainder:
  ------------------
  |  |   29|      0|#define Py_nb_inplace_remainder 21
  ------------------
  |  Branch (431:9): [True: 0, False: 229]
  ------------------
  432|      0|            ht->as_number.nb_inplace_remainder = (binaryfunc)slot.sl_func;
  433|      0|            break;
  434|      0|        case Py_nb_inplace_rshift:
  ------------------
  |  |   30|      0|#define Py_nb_inplace_rshift 22
  ------------------
  |  Branch (434:9): [True: 0, False: 229]
  ------------------
  435|      0|            ht->as_number.nb_inplace_rshift = (binaryfunc)slot.sl_func;
  436|      0|            break;
  437|      0|        case Py_nb_inplace_subtract:
  ------------------
  |  |   31|      0|#define Py_nb_inplace_subtract 23
  ------------------
  |  Branch (437:9): [True: 0, False: 229]
  ------------------
  438|      0|            ht->as_number.nb_inplace_subtract = (binaryfunc)slot.sl_func;
  439|      0|            break;
  440|      0|        case Py_nb_inplace_true_divide:
  ------------------
  |  |   32|      0|#define Py_nb_inplace_true_divide 24
  ------------------
  |  Branch (440:9): [True: 0, False: 229]
  ------------------
  441|      0|            ht->as_number.nb_inplace_true_divide = (binaryfunc)slot.sl_func;
  442|      0|            break;
  443|      0|        case Py_nb_inplace_xor:
  ------------------
  |  |   33|      0|#define Py_nb_inplace_xor 25
  ------------------
  |  Branch (443:9): [True: 0, False: 229]
  ------------------
  444|      0|            ht->as_number.nb_inplace_xor = (binaryfunc)slot.sl_func;
  445|      0|            break;
  446|      0|        case Py_nb_int:
  ------------------
  |  |   34|      0|#define Py_nb_int 26
  ------------------
  |  Branch (446:9): [True: 0, False: 229]
  ------------------
  447|      0|            ht->as_number.nb_int = (unaryfunc)slot.sl_func;
  448|      0|            break;
  449|      0|        case Py_nb_invert:
  ------------------
  |  |   35|      0|#define Py_nb_invert 27
  ------------------
  |  Branch (449:9): [True: 0, False: 229]
  ------------------
  450|      0|            ht->as_number.nb_invert = (unaryfunc)slot.sl_func;
  451|      0|            break;
  452|      0|        case Py_nb_lshift:
  ------------------
  |  |   36|      0|#define Py_nb_lshift 28
  ------------------
  |  Branch (452:9): [True: 0, False: 229]
  ------------------
  453|      0|            ht->as_number.nb_lshift = (binaryfunc)slot.sl_func;
  454|      0|            break;
  455|      0|        case Py_nb_multiply:
  ------------------
  |  |   37|      0|#define Py_nb_multiply 29
  ------------------
  |  Branch (455:9): [True: 0, False: 229]
  ------------------
  456|      0|            ht->as_number.nb_multiply = (binaryfunc)slot.sl_func;
  457|      0|            break;
  458|      0|        case Py_nb_negative:
  ------------------
  |  |   38|      0|#define Py_nb_negative 30
  ------------------
  |  Branch (458:9): [True: 0, False: 229]
  ------------------
  459|      0|            ht->as_number.nb_negative = (unaryfunc)slot.sl_func;
  460|      0|            break;
  461|      2|        case Py_nb_or:
  ------------------
  |  |   39|      2|#define Py_nb_or 31
  ------------------
  |  Branch (461:9): [True: 2, False: 227]
  ------------------
  462|      2|            ht->as_number.nb_or = (binaryfunc)slot.sl_func;
  463|      2|            break;
  464|      0|        case Py_nb_positive:
  ------------------
  |  |   40|      0|#define Py_nb_positive 32
  ------------------
  |  Branch (464:9): [True: 0, False: 229]
  ------------------
  465|      0|            ht->as_number.nb_positive = (unaryfunc)slot.sl_func;
  466|      0|            break;
  467|      0|        case Py_nb_power:
  ------------------
  |  |   41|      0|#define Py_nb_power 33
  ------------------
  |  Branch (467:9): [True: 0, False: 229]
  ------------------
  468|      0|            ht->as_number.nb_power = (ternaryfunc)slot.sl_func;
  469|      0|            break;
  470|      0|        case Py_nb_remainder:
  ------------------
  |  |   42|      0|#define Py_nb_remainder 34
  ------------------
  |  Branch (470:9): [True: 0, False: 229]
  ------------------
  471|      0|            ht->as_number.nb_remainder = (binaryfunc)slot.sl_func;
  472|      0|            break;
  473|      0|        case Py_nb_rshift:
  ------------------
  |  |   43|      0|#define Py_nb_rshift 35
  ------------------
  |  Branch (473:9): [True: 0, False: 229]
  ------------------
  474|      0|            ht->as_number.nb_rshift = (binaryfunc)slot.sl_func;
  475|      0|            break;
  476|      0|        case Py_nb_subtract:
  ------------------
  |  |   44|      0|#define Py_nb_subtract 36
  ------------------
  |  Branch (476:9): [True: 0, False: 229]
  ------------------
  477|      0|            ht->as_number.nb_subtract = (binaryfunc)slot.sl_func;
  478|      0|            break;
  479|      0|        case Py_nb_true_divide:
  ------------------
  |  |   45|      0|#define Py_nb_true_divide 37
  ------------------
  |  Branch (479:9): [True: 0, False: 229]
  ------------------
  480|      0|            ht->as_number.nb_true_divide = (binaryfunc)slot.sl_func;
  481|      0|            break;
  482|      0|        case Py_nb_xor:
  ------------------
  |  |   46|      0|#define Py_nb_xor 38
  ------------------
  |  Branch (482:9): [True: 0, False: 229]
  ------------------
  483|      0|            ht->as_number.nb_xor = (binaryfunc)slot.sl_func;
  484|      0|            break;
  485|      0|        case Py_sq_ass_item:
  ------------------
  |  |   47|      0|#define Py_sq_ass_item 39
  ------------------
  |  Branch (485:9): [True: 0, False: 229]
  ------------------
  486|      0|            ht->as_sequence.sq_ass_item = (ssizeobjargproc)slot.sl_func;
  487|      0|            break;
  488|      0|        case Py_sq_concat:
  ------------------
  |  |   48|      0|#define Py_sq_concat 40
  ------------------
  |  Branch (488:9): [True: 0, False: 229]
  ------------------
  489|      0|            ht->as_sequence.sq_concat = (binaryfunc)slot.sl_func;
  490|      0|            break;
  491|      0|        case Py_sq_contains:
  ------------------
  |  |   49|      0|#define Py_sq_contains 41
  ------------------
  |  Branch (491:9): [True: 0, False: 229]
  ------------------
  492|      0|            ht->as_sequence.sq_contains = (objobjproc)slot.sl_func;
  493|      0|            break;
  494|      0|        case Py_sq_inplace_concat:
  ------------------
  |  |   50|      0|#define Py_sq_inplace_concat 42
  ------------------
  |  Branch (494:9): [True: 0, False: 229]
  ------------------
  495|      0|            ht->as_sequence.sq_inplace_concat = (binaryfunc)slot.sl_func;
  496|      0|            break;
  497|      0|        case Py_sq_inplace_repeat:
  ------------------
  |  |   51|      0|#define Py_sq_inplace_repeat 43
  ------------------
  |  Branch (497:9): [True: 0, False: 229]
  ------------------
  498|      0|            ht->as_sequence.sq_inplace_repeat = (ssizeargfunc)slot.sl_func;
  499|      0|            break;
  500|      0|        case Py_sq_item:
  ------------------
  |  |   52|      0|#define Py_sq_item 44
  ------------------
  |  Branch (500:9): [True: 0, False: 229]
  ------------------
  501|      0|            ht->as_sequence.sq_item = (ssizeargfunc)slot.sl_func;
  502|      0|            break;
  503|      0|        case Py_sq_length:
  ------------------
  |  |   53|      0|#define Py_sq_length 45
  ------------------
  |  Branch (503:9): [True: 0, False: 229]
  ------------------
  504|      0|            ht->as_sequence.sq_length = (lenfunc)slot.sl_func;
  505|      0|            break;
  506|      0|        case Py_sq_repeat:
  ------------------
  |  |   54|      0|#define Py_sq_repeat 46
  ------------------
  |  Branch (506:9): [True: 0, False: 229]
  ------------------
  507|      0|            ht->as_sequence.sq_repeat = (ssizeargfunc)slot.sl_func;
  508|      0|            break;
  509|      8|        case Py_tp_alloc:
  ------------------
  |  |   55|      8|#define Py_tp_alloc 47
  ------------------
  |  Branch (509:9): [True: 8, False: 221]
  ------------------
  510|      8|            ht->ht_type.tp_alloc = (allocfunc)slot.sl_func;
  511|      8|            break;
  512|      0|        case Py_tp_base:
  ------------------
  |  |   56|      0|#define Py_tp_base 48
  ------------------
  |  Branch (512:9): [True: 0, False: 229]
  ------------------
  513|      0|            ht->ht_type.tp_base = slot.sl_ptr;
  514|      0|            break;
  515|      0|        case Py_tp_bases:
  ------------------
  |  |   57|      0|#define Py_tp_bases 49
  ------------------
  |  Branch (515:9): [True: 0, False: 229]
  ------------------
  516|      0|            ht->ht_type.tp_bases = slot.sl_ptr;
  517|      0|            break;
  518|      1|        case Py_tp_call:
  ------------------
  |  |   58|      1|#define Py_tp_call 50
  ------------------
  |  Branch (518:9): [True: 1, False: 228]
  ------------------
  519|      1|            ht->ht_type.tp_call = (ternaryfunc)slot.sl_func;
  520|      1|            break;
  521|     18|        case Py_tp_clear:
  ------------------
  |  |   59|     18|#define Py_tp_clear 51
  ------------------
  |  Branch (521:9): [True: 18, False: 211]
  ------------------
  522|     18|            ht->ht_type.tp_clear = (inquiry)slot.sl_func;
  523|     18|            break;
  524|     36|        case Py_tp_dealloc:
  ------------------
  |  |   60|     36|#define Py_tp_dealloc 52
  ------------------
  |  Branch (524:9): [True: 36, False: 193]
  ------------------
  525|     36|            ht->ht_type.tp_dealloc = (destructor)slot.sl_func;
  526|     36|            break;
  527|      0|        case Py_tp_del:
  ------------------
  |  |   61|      0|#define Py_tp_del 53
  ------------------
  |  Branch (527:9): [True: 0, False: 229]
  ------------------
  528|      0|            ht->ht_type.tp_del = (destructor)slot.sl_func;
  529|      0|            break;
  530|      0|        case Py_tp_descr_get:
  ------------------
  |  |   62|      0|#define Py_tp_descr_get 54
  ------------------
  |  Branch (530:9): [True: 0, False: 229]
  ------------------
  531|      0|            ht->ht_type.tp_descr_get = (descrgetfunc)slot.sl_func;
  532|      0|            break;
  533|      0|        case Py_tp_descr_set:
  ------------------
  |  |   63|      0|#define Py_tp_descr_set 55
  ------------------
  |  Branch (533:9): [True: 0, False: 229]
  ------------------
  534|      0|            ht->ht_type.tp_descr_set = (descrsetfunc)slot.sl_func;
  535|      0|            break;
  536|      0|        case Py_tp_doc:
  ------------------
  |  |   64|      0|#define Py_tp_doc 56
  ------------------
  |  Branch (536:9): [True: 0, False: 229]
  ------------------
  537|      0|            ht->ht_type.tp_doc = slot.sl_ptr;
  538|      0|            break;
  539|      0|        case Py_tp_getattr:
  ------------------
  |  |   65|      0|#define Py_tp_getattr 57
  ------------------
  |  Branch (539:9): [True: 0, False: 229]
  ------------------
  540|      0|            ht->ht_type.tp_getattr = (getattrfunc)slot.sl_func;
  541|      0|            break;
  542|      1|        case Py_tp_getattro:
  ------------------
  |  |   66|      1|#define Py_tp_getattro 58
  ------------------
  |  Branch (542:9): [True: 1, False: 228]
  ------------------
  543|      1|            ht->ht_type.tp_getattro = (getattrofunc)slot.sl_func;
  544|      1|            break;
  545|      0|        case Py_tp_hash:
  ------------------
  |  |   67|      0|#define Py_tp_hash 59
  ------------------
  |  Branch (545:9): [True: 0, False: 229]
  ------------------
  546|      0|            ht->ht_type.tp_hash = (hashfunc)slot.sl_func;
  547|      0|            break;
  548|      9|        case Py_tp_init:
  ------------------
  |  |   68|      9|#define Py_tp_init 60
  ------------------
  |  Branch (548:9): [True: 9, False: 220]
  ------------------
  549|      9|            ht->ht_type.tp_init = (initproc)slot.sl_func;
  550|      9|            break;
  551|      0|        case Py_tp_is_gc:
  ------------------
  |  |   69|      0|#define Py_tp_is_gc 61
  ------------------
  |  Branch (551:9): [True: 0, False: 229]
  ------------------
  552|      0|            ht->ht_type.tp_is_gc = (inquiry)slot.sl_func;
  553|      0|            break;
  554|      4|        case Py_tp_iter:
  ------------------
  |  |   70|      4|#define Py_tp_iter 62
  ------------------
  |  Branch (554:9): [True: 4, False: 225]
  ------------------
  555|      4|            ht->ht_type.tp_iter = (getiterfunc)slot.sl_func;
  556|      4|            break;
  557|      7|        case Py_tp_iternext:
  ------------------
  |  |   71|      7|#define Py_tp_iternext 63
  ------------------
  |  Branch (557:9): [True: 7, False: 222]
  ------------------
  558|      7|            ht->ht_type.tp_iternext = (iternextfunc)slot.sl_func;
  559|      7|            break;
  560|     33|        case Py_tp_methods:
  ------------------
  |  |   72|     33|#define Py_tp_methods 64
  ------------------
  |  Branch (560:9): [True: 33, False: 196]
  ------------------
  561|     33|            ht->ht_type.tp_methods = slot.sl_ptr;
  562|     33|            break;
  563|     22|        case Py_tp_new:
  ------------------
  |  |   73|     22|#define Py_tp_new 65
  ------------------
  |  Branch (563:9): [True: 22, False: 207]
  ------------------
  564|     22|            ht->ht_type.tp_new = (newfunc)slot.sl_func;
  565|     22|            break;
  566|     25|        case Py_tp_repr:
  ------------------
  |  |   74|     25|#define Py_tp_repr 66
  ------------------
  |  Branch (566:9): [True: 25, False: 204]
  ------------------
  567|     25|            ht->ht_type.tp_repr = (reprfunc)slot.sl_func;
  568|     25|            break;
  569|      2|        case Py_tp_richcompare:
  ------------------
  |  |   75|      2|#define Py_tp_richcompare 67
  ------------------
  |  Branch (569:9): [True: 2, False: 227]
  ------------------
  570|      2|            ht->ht_type.tp_richcompare = (richcmpfunc)slot.sl_func;
  571|      2|            break;
  572|      0|        case Py_tp_setattr:
  ------------------
  |  |   76|      0|#define Py_tp_setattr 68
  ------------------
  |  Branch (572:9): [True: 0, False: 229]
  ------------------
  573|      0|            ht->ht_type.tp_setattr = (setattrfunc)slot.sl_func;
  574|      0|            break;
  575|      1|        case Py_tp_setattro:
  ------------------
  |  |   77|      1|#define Py_tp_setattro 69
  ------------------
  |  Branch (575:9): [True: 1, False: 228]
  ------------------
  576|      1|            ht->ht_type.tp_setattro = (setattrofunc)slot.sl_func;
  577|      1|            break;
  578|      0|        case Py_tp_str:
  ------------------
  |  |   78|      0|#define Py_tp_str 70
  ------------------
  |  Branch (578:9): [True: 0, False: 229]
  ------------------
  579|      0|            ht->ht_type.tp_str = (reprfunc)slot.sl_func;
  580|      0|            break;
  581|     33|        case Py_tp_traverse:
  ------------------
  |  |   79|     33|#define Py_tp_traverse 71
  ------------------
  |  Branch (581:9): [True: 33, False: 196]
  ------------------
  582|     33|            ht->ht_type.tp_traverse = (traverseproc)slot.sl_func;
  583|     33|            break;
  584|      0|        case Py_tp_members:
  ------------------
  |  |   80|      0|#define Py_tp_members 72
  ------------------
  |  Branch (584:9): [True: 0, False: 229]
  ------------------
  585|      0|            ht->ht_type.tp_members = slot.sl_ptr;
  586|      0|            break;
  587|     16|        case Py_tp_getset:
  ------------------
  |  |   81|     16|#define Py_tp_getset 73
  ------------------
  |  Branch (587:9): [True: 16, False: 213]
  ------------------
  588|     16|            ht->ht_type.tp_getset = slot.sl_ptr;
  589|     16|            break;
  590|      7|        case Py_tp_free:
  ------------------
  |  |   82|      7|#define Py_tp_free 74
  ------------------
  |  Branch (590:9): [True: 7, False: 222]
  ------------------
  591|      7|            ht->ht_type.tp_free = (freefunc)slot.sl_func;
  592|      7|            break;
  593|      0|        case Py_nb_matrix_multiply:
  ------------------
  |  |   83|      0|#define Py_nb_matrix_multiply 75
  ------------------
  |  Branch (593:9): [True: 0, False: 229]
  ------------------
  594|      0|            ht->as_number.nb_matrix_multiply = (binaryfunc)slot.sl_func;
  595|      0|            break;
  596|      0|        case Py_nb_inplace_matrix_multiply:
  ------------------
  |  |   84|      0|#define Py_nb_inplace_matrix_multiply 76
  ------------------
  |  Branch (596:9): [True: 0, False: 229]
  ------------------
  597|      0|            ht->as_number.nb_inplace_matrix_multiply = (binaryfunc)slot.sl_func;
  598|      0|            break;
  599|      0|        case Py_am_await:
  ------------------
  |  |   85|      0|#define Py_am_await 77
  ------------------
  |  Branch (599:9): [True: 0, False: 229]
  ------------------
  600|      0|            ht->as_async.am_await = (unaryfunc)slot.sl_func;
  601|      0|            break;
  602|      0|        case Py_am_aiter:
  ------------------
  |  |   86|      0|#define Py_am_aiter 78
  ------------------
  |  Branch (602:9): [True: 0, False: 229]
  ------------------
  603|      0|            ht->as_async.am_aiter = (unaryfunc)slot.sl_func;
  604|      0|            break;
  605|      0|        case Py_am_anext:
  ------------------
  |  |   87|      0|#define Py_am_anext 79
  ------------------
  |  Branch (605:9): [True: 0, False: 229]
  ------------------
  606|      0|            ht->as_async.am_anext = (unaryfunc)slot.sl_func;
  607|      0|            break;
  608|      2|        case Py_tp_finalize:
  ------------------
  |  |   88|      2|#define Py_tp_finalize 80
  ------------------
  |  Branch (608:9): [True: 2, False: 227]
  ------------------
  609|      2|            ht->ht_type.tp_finalize = (destructor)slot.sl_func;
  610|      2|            break;
  611|      0|        case Py_am_send:
  ------------------
  |  |   89|      0|#define Py_am_send 81
  ------------------
  |  Branch (611:9): [True: 0, False: 229]
  ------------------
  612|      0|            ht->as_async.am_send = (sendfunc)slot.sl_func;
  613|      0|            break;
  614|      0|        case Py_tp_vectorcall:
  ------------------
  |  |   90|      0|#define Py_tp_vectorcall 82
  ------------------
  |  Branch (614:9): [True: 0, False: 229]
  ------------------
  615|      0|            ht->ht_type.tp_vectorcall = (vectorcallfunc)slot.sl_func;
  616|      0|            break;
  617|      1|        case Py_bf_getbuffer:
  ------------------
  |  |   96|      1|#define Py_bf_getbuffer _Py_SLOT_COMPAT_VALUE(1, 88)
  |  |  ------------------
  |  |  |  |    7|      1|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  |  Branch (617:9): [True: 1, False: 228]
  ------------------
  618|      1|            ht->as_buffer.bf_getbuffer = (getbufferproc)slot.sl_func;
  619|      1|            break;
  620|      1|        case Py_bf_releasebuffer:
  ------------------
  |  |   97|      1|#define Py_bf_releasebuffer _Py_SLOT_COMPAT_VALUE(2, 89)
  |  |  ------------------
  |  |  |  |    7|      1|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  |  Branch (620:9): [True: 1, False: 228]
  ------------------
  621|      1|            ht->as_buffer.bf_releasebuffer = (releasebufferproc)slot.sl_func;
  622|      1|            break;
  623|      0|        case Py_mp_ass_subscript:
  ------------------
  |  |   98|      0|#define Py_mp_ass_subscript _Py_SLOT_COMPAT_VALUE(3, 90)
  |  |  ------------------
  |  |  |  |    7|      0|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  |  Branch (623:9): [True: 0, False: 229]
  ------------------
  624|      0|            ht->as_mapping.mp_ass_subscript = (objobjargproc)slot.sl_func;
  625|      0|            break;
  626|      0|        case Py_mp_length:
  ------------------
  |  |   99|      0|#define Py_mp_length _Py_SLOT_COMPAT_VALUE(4, 91)
  |  |  ------------------
  |  |  |  |    7|      0|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  |  Branch (626:9): [True: 0, False: 229]
  ------------------
  627|      0|            ht->as_mapping.mp_length = (lenfunc)slot.sl_func;
  628|      0|            break;
  629|    229|    }
  630|    229|}
slots.c:_PySlot_resolve_type_slot:
    8|    656|{
    9|    656|    switch (slot_id) {
   10|      0|        case 1:
  ------------------
  |  Branch (10:9): [True: 0, False: 656]
  ------------------
   11|      0|            return Py_bf_getbuffer;
  ------------------
  |  |   96|      0|#define Py_bf_getbuffer _Py_SLOT_COMPAT_VALUE(1, 88)
  |  |  ------------------
  |  |  |  |    7|      0|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
   12|      0|        case 2:
  ------------------
  |  Branch (12:9): [True: 0, False: 656]
  ------------------
   13|      0|            return Py_bf_releasebuffer;
  ------------------
  |  |   97|      0|#define Py_bf_releasebuffer _Py_SLOT_COMPAT_VALUE(2, 89)
  |  |  ------------------
  |  |  |  |    7|      0|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
   14|      0|        case 3:
  ------------------
  |  Branch (14:9): [True: 0, False: 656]
  ------------------
   15|      0|            return Py_mp_ass_subscript;
  ------------------
  |  |   98|      0|#define Py_mp_ass_subscript _Py_SLOT_COMPAT_VALUE(3, 90)
  |  |  ------------------
  |  |  |  |    7|      0|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
   16|      0|        case 4:
  ------------------
  |  Branch (16:9): [True: 0, False: 656]
  ------------------
   17|      0|            return Py_mp_length;
  ------------------
  |  |   99|      0|#define Py_mp_length _Py_SLOT_COMPAT_VALUE(4, 91)
  |  |  ------------------
  |  |  |  |    7|      0|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
   18|     78|        case Py_slot_end:
  ------------------
  |  |   12|     78|#define Py_slot_end 0
  ------------------
  |  Branch (18:9): [True: 78, False: 578]
  ------------------
   19|     78|        case Py_mp_subscript:
  ------------------
  |  |   13|     78|#define Py_mp_subscript 5
  ------------------
  |  Branch (19:9): [True: 0, False: 656]
  ------------------
   20|     78|        case Py_nb_absolute:
  ------------------
  |  |   14|     78|#define Py_nb_absolute 6
  ------------------
  |  Branch (20:9): [True: 0, False: 656]
  ------------------
   21|     78|        case Py_nb_add:
  ------------------
  |  |   15|     78|#define Py_nb_add 7
  ------------------
  |  Branch (21:9): [True: 0, False: 656]
  ------------------
   22|     78|        case Py_nb_and:
  ------------------
  |  |   16|     78|#define Py_nb_and 8
  ------------------
  |  Branch (22:9): [True: 0, False: 656]
  ------------------
   23|     78|        case Py_nb_bool:
  ------------------
  |  |   17|     78|#define Py_nb_bool 9
  ------------------
  |  Branch (23:9): [True: 0, False: 656]
  ------------------
   24|     78|        case Py_nb_divmod:
  ------------------
  |  |   18|     78|#define Py_nb_divmod 10
  ------------------
  |  Branch (24:9): [True: 0, False: 656]
  ------------------
   25|     78|        case Py_nb_float:
  ------------------
  |  |   19|     78|#define Py_nb_float 11
  ------------------
  |  Branch (25:9): [True: 0, False: 656]
  ------------------
   26|     78|        case Py_nb_floor_divide:
  ------------------
  |  |   20|     78|#define Py_nb_floor_divide 12
  ------------------
  |  Branch (26:9): [True: 0, False: 656]
  ------------------
   27|     78|        case Py_nb_index:
  ------------------
  |  |   21|     78|#define Py_nb_index 13
  ------------------
  |  Branch (27:9): [True: 0, False: 656]
  ------------------
   28|     78|        case Py_nb_inplace_add:
  ------------------
  |  |   22|     78|#define Py_nb_inplace_add 14
  ------------------
  |  Branch (28:9): [True: 0, False: 656]
  ------------------
   29|     78|        case Py_nb_inplace_and:
  ------------------
  |  |   23|     78|#define Py_nb_inplace_and 15
  ------------------
  |  Branch (29:9): [True: 0, False: 656]
  ------------------
   30|     78|        case Py_nb_inplace_floor_divide:
  ------------------
  |  |   24|     78|#define Py_nb_inplace_floor_divide 16
  ------------------
  |  Branch (30:9): [True: 0, False: 656]
  ------------------
   31|     78|        case Py_nb_inplace_lshift:
  ------------------
  |  |   25|     78|#define Py_nb_inplace_lshift 17
  ------------------
  |  Branch (31:9): [True: 0, False: 656]
  ------------------
   32|     78|        case Py_nb_inplace_multiply:
  ------------------
  |  |   26|     78|#define Py_nb_inplace_multiply 18
  ------------------
  |  Branch (32:9): [True: 0, False: 656]
  ------------------
   33|     78|        case Py_nb_inplace_or:
  ------------------
  |  |   27|     78|#define Py_nb_inplace_or 19
  ------------------
  |  Branch (33:9): [True: 0, False: 656]
  ------------------
   34|     78|        case Py_nb_inplace_power:
  ------------------
  |  |   28|     78|#define Py_nb_inplace_power 20
  ------------------
  |  Branch (34:9): [True: 0, False: 656]
  ------------------
   35|     78|        case Py_nb_inplace_remainder:
  ------------------
  |  |   29|     78|#define Py_nb_inplace_remainder 21
  ------------------
  |  Branch (35:9): [True: 0, False: 656]
  ------------------
   36|     78|        case Py_nb_inplace_rshift:
  ------------------
  |  |   30|     78|#define Py_nb_inplace_rshift 22
  ------------------
  |  Branch (36:9): [True: 0, False: 656]
  ------------------
   37|     78|        case Py_nb_inplace_subtract:
  ------------------
  |  |   31|     78|#define Py_nb_inplace_subtract 23
  ------------------
  |  Branch (37:9): [True: 0, False: 656]
  ------------------
   38|     78|        case Py_nb_inplace_true_divide:
  ------------------
  |  |   32|     78|#define Py_nb_inplace_true_divide 24
  ------------------
  |  Branch (38:9): [True: 0, False: 656]
  ------------------
   39|     78|        case Py_nb_inplace_xor:
  ------------------
  |  |   33|     78|#define Py_nb_inplace_xor 25
  ------------------
  |  Branch (39:9): [True: 0, False: 656]
  ------------------
   40|     78|        case Py_nb_int:
  ------------------
  |  |   34|     78|#define Py_nb_int 26
  ------------------
  |  Branch (40:9): [True: 0, False: 656]
  ------------------
   41|     78|        case Py_nb_invert:
  ------------------
  |  |   35|     78|#define Py_nb_invert 27
  ------------------
  |  Branch (41:9): [True: 0, False: 656]
  ------------------
   42|     78|        case Py_nb_lshift:
  ------------------
  |  |   36|     78|#define Py_nb_lshift 28
  ------------------
  |  Branch (42:9): [True: 0, False: 656]
  ------------------
   43|     78|        case Py_nb_multiply:
  ------------------
  |  |   37|     78|#define Py_nb_multiply 29
  ------------------
  |  Branch (43:9): [True: 0, False: 656]
  ------------------
   44|     78|        case Py_nb_negative:
  ------------------
  |  |   38|     78|#define Py_nb_negative 30
  ------------------
  |  Branch (44:9): [True: 0, False: 656]
  ------------------
   45|     82|        case Py_nb_or:
  ------------------
  |  |   39|     82|#define Py_nb_or 31
  ------------------
  |  Branch (45:9): [True: 4, False: 652]
  ------------------
   46|     82|        case Py_nb_positive:
  ------------------
  |  |   40|     82|#define Py_nb_positive 32
  ------------------
  |  Branch (46:9): [True: 0, False: 656]
  ------------------
   47|     82|        case Py_nb_power:
  ------------------
  |  |   41|     82|#define Py_nb_power 33
  ------------------
  |  Branch (47:9): [True: 0, False: 656]
  ------------------
   48|     82|        case Py_nb_remainder:
  ------------------
  |  |   42|     82|#define Py_nb_remainder 34
  ------------------
  |  Branch (48:9): [True: 0, False: 656]
  ------------------
   49|     82|        case Py_nb_rshift:
  ------------------
  |  |   43|     82|#define Py_nb_rshift 35
  ------------------
  |  Branch (49:9): [True: 0, False: 656]
  ------------------
   50|     82|        case Py_nb_subtract:
  ------------------
  |  |   44|     82|#define Py_nb_subtract 36
  ------------------
  |  Branch (50:9): [True: 0, False: 656]
  ------------------
   51|     82|        case Py_nb_true_divide:
  ------------------
  |  |   45|     82|#define Py_nb_true_divide 37
  ------------------
  |  Branch (51:9): [True: 0, False: 656]
  ------------------
   52|     82|        case Py_nb_xor:
  ------------------
  |  |   46|     82|#define Py_nb_xor 38
  ------------------
  |  Branch (52:9): [True: 0, False: 656]
  ------------------
   53|     82|        case Py_sq_ass_item:
  ------------------
  |  |   47|     82|#define Py_sq_ass_item 39
  ------------------
  |  Branch (53:9): [True: 0, False: 656]
  ------------------
   54|     82|        case Py_sq_concat:
  ------------------
  |  |   48|     82|#define Py_sq_concat 40
  ------------------
  |  Branch (54:9): [True: 0, False: 656]
  ------------------
   55|     82|        case Py_sq_contains:
  ------------------
  |  |   49|     82|#define Py_sq_contains 41
  ------------------
  |  Branch (55:9): [True: 0, False: 656]
  ------------------
   56|     82|        case Py_sq_inplace_concat:
  ------------------
  |  |   50|     82|#define Py_sq_inplace_concat 42
  ------------------
  |  Branch (56:9): [True: 0, False: 656]
  ------------------
   57|     82|        case Py_sq_inplace_repeat:
  ------------------
  |  |   51|     82|#define Py_sq_inplace_repeat 43
  ------------------
  |  Branch (57:9): [True: 0, False: 656]
  ------------------
   58|     82|        case Py_sq_item:
  ------------------
  |  |   52|     82|#define Py_sq_item 44
  ------------------
  |  Branch (58:9): [True: 0, False: 656]
  ------------------
   59|     82|        case Py_sq_length:
  ------------------
  |  |   53|     82|#define Py_sq_length 45
  ------------------
  |  Branch (59:9): [True: 0, False: 656]
  ------------------
   60|     82|        case Py_sq_repeat:
  ------------------
  |  |   54|     82|#define Py_sq_repeat 46
  ------------------
  |  Branch (60:9): [True: 0, False: 656]
  ------------------
   61|     98|        case Py_tp_alloc:
  ------------------
  |  |   55|     98|#define Py_tp_alloc 47
  ------------------
  |  Branch (61:9): [True: 16, False: 640]
  ------------------
   62|     98|        case Py_tp_base:
  ------------------
  |  |   56|     98|#define Py_tp_base 48
  ------------------
  |  Branch (62:9): [True: 0, False: 656]
  ------------------
   63|     98|        case Py_tp_bases:
  ------------------
  |  |   57|     98|#define Py_tp_bases 49
  ------------------
  |  Branch (63:9): [True: 0, False: 656]
  ------------------
   64|    100|        case Py_tp_call:
  ------------------
  |  |   58|    100|#define Py_tp_call 50
  ------------------
  |  Branch (64:9): [True: 2, False: 654]
  ------------------
   65|    136|        case Py_tp_clear:
  ------------------
  |  |   59|    136|#define Py_tp_clear 51
  ------------------
  |  Branch (65:9): [True: 36, False: 620]
  ------------------
   66|    208|        case Py_tp_dealloc:
  ------------------
  |  |   60|    208|#define Py_tp_dealloc 52
  ------------------
  |  Branch (66:9): [True: 72, False: 584]
  ------------------
   67|    208|        case Py_tp_del:
  ------------------
  |  |   61|    208|#define Py_tp_del 53
  ------------------
  |  Branch (67:9): [True: 0, False: 656]
  ------------------
   68|    208|        case Py_tp_descr_get:
  ------------------
  |  |   62|    208|#define Py_tp_descr_get 54
  ------------------
  |  Branch (68:9): [True: 0, False: 656]
  ------------------
   69|    208|        case Py_tp_descr_set:
  ------------------
  |  |   63|    208|#define Py_tp_descr_set 55
  ------------------
  |  Branch (69:9): [True: 0, False: 656]
  ------------------
   70|    274|        case Py_tp_doc:
  ------------------
  |  |   64|    274|#define Py_tp_doc 56
  ------------------
  |  Branch (70:9): [True: 66, False: 590]
  ------------------
   71|    274|        case Py_tp_getattr:
  ------------------
  |  |   65|    274|#define Py_tp_getattr 57
  ------------------
  |  Branch (71:9): [True: 0, False: 656]
  ------------------
   72|    276|        case Py_tp_getattro:
  ------------------
  |  |   66|    276|#define Py_tp_getattro 58
  ------------------
  |  Branch (72:9): [True: 2, False: 654]
  ------------------
   73|    276|        case Py_tp_hash:
  ------------------
  |  |   67|    276|#define Py_tp_hash 59
  ------------------
  |  Branch (73:9): [True: 0, False: 656]
  ------------------
   74|    294|        case Py_tp_init:
  ------------------
  |  |   68|    294|#define Py_tp_init 60
  ------------------
  |  Branch (74:9): [True: 18, False: 638]
  ------------------
   75|    294|        case Py_tp_is_gc:
  ------------------
  |  |   69|    294|#define Py_tp_is_gc 61
  ------------------
  |  Branch (75:9): [True: 0, False: 656]
  ------------------
   76|    302|        case Py_tp_iter:
  ------------------
  |  |   70|    302|#define Py_tp_iter 62
  ------------------
  |  Branch (76:9): [True: 8, False: 648]
  ------------------
   77|    316|        case Py_tp_iternext:
  ------------------
  |  |   71|    316|#define Py_tp_iternext 63
  ------------------
  |  Branch (77:9): [True: 14, False: 642]
  ------------------
   78|    382|        case Py_tp_methods:
  ------------------
  |  |   72|    382|#define Py_tp_methods 64
  ------------------
  |  Branch (78:9): [True: 66, False: 590]
  ------------------
   79|    426|        case Py_tp_new:
  ------------------
  |  |   73|    426|#define Py_tp_new 65
  ------------------
  |  Branch (79:9): [True: 44, False: 612]
  ------------------
   80|    476|        case Py_tp_repr:
  ------------------
  |  |   74|    476|#define Py_tp_repr 66
  ------------------
  |  Branch (80:9): [True: 50, False: 606]
  ------------------
   81|    480|        case Py_tp_richcompare:
  ------------------
  |  |   75|    480|#define Py_tp_richcompare 67
  ------------------
  |  Branch (81:9): [True: 4, False: 652]
  ------------------
   82|    480|        case Py_tp_setattr:
  ------------------
  |  |   76|    480|#define Py_tp_setattr 68
  ------------------
  |  Branch (82:9): [True: 0, False: 656]
  ------------------
   83|    482|        case Py_tp_setattro:
  ------------------
  |  |   77|    482|#define Py_tp_setattro 69
  ------------------
  |  Branch (83:9): [True: 2, False: 654]
  ------------------
   84|    482|        case Py_tp_str:
  ------------------
  |  |   78|    482|#define Py_tp_str 70
  ------------------
  |  Branch (84:9): [True: 0, False: 656]
  ------------------
   85|    548|        case Py_tp_traverse:
  ------------------
  |  |   79|    548|#define Py_tp_traverse 71
  ------------------
  |  Branch (85:9): [True: 66, False: 590]
  ------------------
   86|    602|        case Py_tp_members:
  ------------------
  |  |   80|    602|#define Py_tp_members 72
  ------------------
  |  Branch (86:9): [True: 54, False: 602]
  ------------------
   87|    634|        case Py_tp_getset:
  ------------------
  |  |   81|    634|#define Py_tp_getset 73
  ------------------
  |  Branch (87:9): [True: 32, False: 624]
  ------------------
   88|    648|        case Py_tp_free:
  ------------------
  |  |   82|    648|#define Py_tp_free 74
  ------------------
  |  Branch (88:9): [True: 14, False: 642]
  ------------------
   89|    648|        case Py_nb_matrix_multiply:
  ------------------
  |  |   83|    648|#define Py_nb_matrix_multiply 75
  ------------------
  |  Branch (89:9): [True: 0, False: 656]
  ------------------
   90|    648|        case Py_nb_inplace_matrix_multiply:
  ------------------
  |  |   84|    648|#define Py_nb_inplace_matrix_multiply 76
  ------------------
  |  Branch (90:9): [True: 0, False: 656]
  ------------------
   91|    648|        case Py_am_await:
  ------------------
  |  |   85|    648|#define Py_am_await 77
  ------------------
  |  Branch (91:9): [True: 0, False: 656]
  ------------------
   92|    648|        case Py_am_aiter:
  ------------------
  |  |   86|    648|#define Py_am_aiter 78
  ------------------
  |  Branch (92:9): [True: 0, False: 656]
  ------------------
   93|    648|        case Py_am_anext:
  ------------------
  |  |   87|    648|#define Py_am_anext 79
  ------------------
  |  Branch (93:9): [True: 0, False: 656]
  ------------------
   94|    652|        case Py_tp_finalize:
  ------------------
  |  |   88|    652|#define Py_tp_finalize 80
  ------------------
  |  Branch (94:9): [True: 4, False: 652]
  ------------------
   95|    652|        case Py_am_send:
  ------------------
  |  |   89|    652|#define Py_am_send 81
  ------------------
  |  Branch (95:9): [True: 0, False: 656]
  ------------------
   96|    652|        case Py_tp_vectorcall:
  ------------------
  |  |   90|    652|#define Py_tp_vectorcall 82
  ------------------
  |  Branch (96:9): [True: 0, False: 656]
  ------------------
   97|    652|        case Py_tp_token:
  ------------------
  |  |   91|    652|#define Py_tp_token 83
  ------------------
  |  Branch (97:9): [True: 0, False: 656]
  ------------------
   98|    654|        case Py_bf_getbuffer:
  ------------------
  |  |   96|    654|#define Py_bf_getbuffer _Py_SLOT_COMPAT_VALUE(1, 88)
  |  |  ------------------
  |  |  |  |    7|    654|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  |  Branch (98:9): [True: 2, False: 654]
  ------------------
   99|    656|        case Py_bf_releasebuffer:
  ------------------
  |  |   97|    656|#define Py_bf_releasebuffer _Py_SLOT_COMPAT_VALUE(2, 89)
  |  |  ------------------
  |  |  |  |    7|    656|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  |  Branch (99:9): [True: 2, False: 654]
  ------------------
  100|    656|        case Py_mp_ass_subscript:
  ------------------
  |  |   98|    656|#define Py_mp_ass_subscript _Py_SLOT_COMPAT_VALUE(3, 90)
  |  |  ------------------
  |  |  |  |    7|    656|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  |  Branch (100:9): [True: 0, False: 656]
  ------------------
  101|    656|        case Py_mp_length:
  ------------------
  |  |   99|    656|#define Py_mp_length _Py_SLOT_COMPAT_VALUE(4, 91)
  |  |  ------------------
  |  |  |  |    7|    656|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  |  Branch (101:9): [True: 0, False: 656]
  ------------------
  102|    656|        case Py_slot_subslots:
  ------------------
  |  |  100|    656|#define Py_slot_subslots 92
  ------------------
  |  Branch (102:9): [True: 0, False: 656]
  ------------------
  103|    656|        case Py_tp_slots:
  ------------------
  |  |  101|    656|#define Py_tp_slots 93
  ------------------
  |  Branch (103:9): [True: 0, False: 656]
  ------------------
  104|    656|        case Py_tp_name:
  ------------------
  |  |  103|    656|#define Py_tp_name 95
  ------------------
  |  Branch (104:9): [True: 0, False: 656]
  ------------------
  105|    656|        case Py_tp_basicsize:
  ------------------
  |  |  104|    656|#define Py_tp_basicsize 96
  ------------------
  |  Branch (105:9): [True: 0, False: 656]
  ------------------
  106|    656|        case Py_tp_extra_basicsize:
  ------------------
  |  |  105|    656|#define Py_tp_extra_basicsize 97
  ------------------
  |  Branch (106:9): [True: 0, False: 656]
  ------------------
  107|    656|        case Py_tp_itemsize:
  ------------------
  |  |  106|    656|#define Py_tp_itemsize 98
  ------------------
  |  Branch (107:9): [True: 0, False: 656]
  ------------------
  108|    656|        case Py_tp_flags:
  ------------------
  |  |  107|    656|#define Py_tp_flags 99
  ------------------
  |  Branch (108:9): [True: 0, False: 656]
  ------------------
  109|    656|        case Py_tp_metaclass:
  ------------------
  |  |  115|    656|#define Py_tp_metaclass 107
  ------------------
  |  Branch (109:9): [True: 0, False: 656]
  ------------------
  110|    656|        case Py_tp_module:
  ------------------
  |  |  116|    656|#define Py_tp_module 108
  ------------------
  |  Branch (110:9): [True: 0, False: 656]
  ------------------
  111|    656|            return slot_id;
  112|      0|        default:
  ------------------
  |  Branch (112:9): [True: 0, False: 656]
  ------------------
  113|      0|            return Py_slot_invalid;
  ------------------
  |  |   25|      0|#define Py_slot_invalid 0xffff
  ------------------
  114|    656|    }
  115|    656|}
slots.c:_PySlot_resolve_mod_slot:
  119|    114|{
  120|    114|    switch (slot_id) {
  121|      0|        case 1:
  ------------------
  |  Branch (121:9): [True: 0, False: 114]
  ------------------
  122|      0|            return Py_mod_create;
  ------------------
  |  |   92|      0|#define Py_mod_create _Py_SLOT_COMPAT_VALUE(1, 84)
  |  |  ------------------
  |  |  |  |    7|      0|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  123|      4|        case 2:
  ------------------
  |  Branch (123:9): [True: 4, False: 110]
  ------------------
  124|      4|            return Py_mod_exec;
  ------------------
  |  |   93|      4|#define Py_mod_exec _Py_SLOT_COMPAT_VALUE(2, 85)
  |  |  ------------------
  |  |  |  |    7|      4|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  125|      4|        case 3:
  ------------------
  |  Branch (125:9): [True: 4, False: 110]
  ------------------
  126|      4|            return Py_mod_multiple_interpreters;
  ------------------
  |  |   94|      4|#define Py_mod_multiple_interpreters _Py_SLOT_COMPAT_VALUE(3, 86)
  |  |  ------------------
  |  |  |  |    7|      4|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  127|      4|        case 4:
  ------------------
  |  Branch (127:9): [True: 4, False: 110]
  ------------------
  128|      4|            return Py_mod_gil;
  ------------------
  |  |   95|      4|#define Py_mod_gil _Py_SLOT_COMPAT_VALUE(4, 87)
  |  |  ------------------
  |  |  |  |    7|      4|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  129|     24|        case Py_slot_end:
  ------------------
  |  |   12|     24|#define Py_slot_end 0
  ------------------
  |  Branch (129:9): [True: 24, False: 90]
  ------------------
  130|     24|        case Py_mod_create:
  ------------------
  |  |   92|     24|#define Py_mod_create _Py_SLOT_COMPAT_VALUE(1, 84)
  |  |  ------------------
  |  |  |  |    7|     24|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  |  Branch (130:9): [True: 0, False: 114]
  ------------------
  131|     42|        case Py_mod_exec:
  ------------------
  |  |   93|     42|#define Py_mod_exec _Py_SLOT_COMPAT_VALUE(2, 85)
  |  |  ------------------
  |  |  |  |    7|     42|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  |  Branch (131:9): [True: 18, False: 96]
  ------------------
  132|     62|        case Py_mod_multiple_interpreters:
  ------------------
  |  |   94|     62|#define Py_mod_multiple_interpreters _Py_SLOT_COMPAT_VALUE(3, 86)
  |  |  ------------------
  |  |  |  |    7|     62|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  |  Branch (132:9): [True: 20, False: 94]
  ------------------
  133|     82|        case Py_mod_gil:
  ------------------
  |  |   95|     82|#define Py_mod_gil _Py_SLOT_COMPAT_VALUE(4, 87)
  |  |  ------------------
  |  |  |  |    7|     82|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  |  Branch (133:9): [True: 20, False: 94]
  ------------------
  134|     82|        case Py_slot_subslots:
  ------------------
  |  |  100|     82|#define Py_slot_subslots 92
  ------------------
  |  Branch (134:9): [True: 0, False: 114]
  ------------------
  135|     82|        case Py_mod_slots:
  ------------------
  |  |  102|     82|#define Py_mod_slots 94
  ------------------
  |  Branch (135:9): [True: 0, False: 114]
  ------------------
  136|     82|        case Py_mod_name:
  ------------------
  |  |  108|     82|#define Py_mod_name 100
  ------------------
  |  Branch (136:9): [True: 0, False: 114]
  ------------------
  137|     82|        case Py_mod_doc:
  ------------------
  |  |  109|     82|#define Py_mod_doc 101
  ------------------
  |  Branch (137:9): [True: 0, False: 114]
  ------------------
  138|     82|        case Py_mod_state_size:
  ------------------
  |  |  110|     82|#define Py_mod_state_size 102
  ------------------
  |  Branch (138:9): [True: 0, False: 114]
  ------------------
  139|     82|        case Py_mod_methods:
  ------------------
  |  |  111|     82|#define Py_mod_methods 103
  ------------------
  |  Branch (139:9): [True: 0, False: 114]
  ------------------
  140|     82|        case Py_mod_state_traverse:
  ------------------
  |  |  112|     82|#define Py_mod_state_traverse 104
  ------------------
  |  Branch (140:9): [True: 0, False: 114]
  ------------------
  141|     82|        case Py_mod_state_clear:
  ------------------
  |  |  113|     82|#define Py_mod_state_clear 105
  ------------------
  |  Branch (141:9): [True: 0, False: 114]
  ------------------
  142|     82|        case Py_mod_state_free:
  ------------------
  |  |  114|     82|#define Py_mod_state_free 106
  ------------------
  |  Branch (142:9): [True: 0, False: 114]
  ------------------
  143|    102|        case Py_mod_abi:
  ------------------
  |  |  117|    102|#define Py_mod_abi 109
  ------------------
  |  Branch (143:9): [True: 20, False: 94]
  ------------------
  144|    102|        case Py_mod_token:
  ------------------
  |  |  118|    102|#define Py_mod_token 110
  ------------------
  |  Branch (144:9): [True: 0, False: 114]
  ------------------
  145|    102|            return slot_id;
  146|      0|        default:
  ------------------
  |  Branch (146:9): [True: 0, False: 114]
  ------------------
  147|      0|            return Py_slot_invalid;
  ------------------
  |  |   25|      0|#define Py_slot_invalid 0xffff
  ------------------
  148|    114|    }
  149|    114|}
slots.c:_PySlot_get_dtype:
  634|  1.63k|{
  635|  1.63k|    switch (slot_id) {
  636|      0|        case Py_slot_end: return _PySlot_DTYPE_VOID;
  ------------------
  |  |   12|      0|#define Py_slot_end 0
  ------------------
  |  Branch (636:9): [True: 0, False: 1.63k]
  ------------------
  637|      0|        case Py_mp_subscript: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   13|      0|#define Py_mp_subscript 5
  ------------------
  |  Branch (637:9): [True: 0, False: 1.63k]
  ------------------
  638|      0|        case Py_nb_absolute: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   14|      0|#define Py_nb_absolute 6
  ------------------
  |  Branch (638:9): [True: 0, False: 1.63k]
  ------------------
  639|      0|        case Py_nb_add: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   15|      0|#define Py_nb_add 7
  ------------------
  |  Branch (639:9): [True: 0, False: 1.63k]
  ------------------
  640|      0|        case Py_nb_and: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   16|      0|#define Py_nb_and 8
  ------------------
  |  Branch (640:9): [True: 0, False: 1.63k]
  ------------------
  641|      0|        case Py_nb_bool: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   17|      0|#define Py_nb_bool 9
  ------------------
  |  Branch (641:9): [True: 0, False: 1.63k]
  ------------------
  642|      0|        case Py_nb_divmod: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   18|      0|#define Py_nb_divmod 10
  ------------------
  |  Branch (642:9): [True: 0, False: 1.63k]
  ------------------
  643|      0|        case Py_nb_float: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   19|      0|#define Py_nb_float 11
  ------------------
  |  Branch (643:9): [True: 0, False: 1.63k]
  ------------------
  644|      0|        case Py_nb_floor_divide: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   20|      0|#define Py_nb_floor_divide 12
  ------------------
  |  Branch (644:9): [True: 0, False: 1.63k]
  ------------------
  645|      0|        case Py_nb_index: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   21|      0|#define Py_nb_index 13
  ------------------
  |  Branch (645:9): [True: 0, False: 1.63k]
  ------------------
  646|      0|        case Py_nb_inplace_add: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   22|      0|#define Py_nb_inplace_add 14
  ------------------
  |  Branch (646:9): [True: 0, False: 1.63k]
  ------------------
  647|      0|        case Py_nb_inplace_and: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   23|      0|#define Py_nb_inplace_and 15
  ------------------
  |  Branch (647:9): [True: 0, False: 1.63k]
  ------------------
  648|      0|        case Py_nb_inplace_floor_divide: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   24|      0|#define Py_nb_inplace_floor_divide 16
  ------------------
  |  Branch (648:9): [True: 0, False: 1.63k]
  ------------------
  649|      0|        case Py_nb_inplace_lshift: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   25|      0|#define Py_nb_inplace_lshift 17
  ------------------
  |  Branch (649:9): [True: 0, False: 1.63k]
  ------------------
  650|      0|        case Py_nb_inplace_multiply: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   26|      0|#define Py_nb_inplace_multiply 18
  ------------------
  |  Branch (650:9): [True: 0, False: 1.63k]
  ------------------
  651|      0|        case Py_nb_inplace_or: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   27|      0|#define Py_nb_inplace_or 19
  ------------------
  |  Branch (651:9): [True: 0, False: 1.63k]
  ------------------
  652|      0|        case Py_nb_inplace_power: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   28|      0|#define Py_nb_inplace_power 20
  ------------------
  |  Branch (652:9): [True: 0, False: 1.63k]
  ------------------
  653|      0|        case Py_nb_inplace_remainder: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   29|      0|#define Py_nb_inplace_remainder 21
  ------------------
  |  Branch (653:9): [True: 0, False: 1.63k]
  ------------------
  654|      0|        case Py_nb_inplace_rshift: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   30|      0|#define Py_nb_inplace_rshift 22
  ------------------
  |  Branch (654:9): [True: 0, False: 1.63k]
  ------------------
  655|      0|        case Py_nb_inplace_subtract: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   31|      0|#define Py_nb_inplace_subtract 23
  ------------------
  |  Branch (655:9): [True: 0, False: 1.63k]
  ------------------
  656|      0|        case Py_nb_inplace_true_divide: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   32|      0|#define Py_nb_inplace_true_divide 24
  ------------------
  |  Branch (656:9): [True: 0, False: 1.63k]
  ------------------
  657|      0|        case Py_nb_inplace_xor: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   33|      0|#define Py_nb_inplace_xor 25
  ------------------
  |  Branch (657:9): [True: 0, False: 1.63k]
  ------------------
  658|      0|        case Py_nb_int: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   34|      0|#define Py_nb_int 26
  ------------------
  |  Branch (658:9): [True: 0, False: 1.63k]
  ------------------
  659|      0|        case Py_nb_invert: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   35|      0|#define Py_nb_invert 27
  ------------------
  |  Branch (659:9): [True: 0, False: 1.63k]
  ------------------
  660|      0|        case Py_nb_lshift: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   36|      0|#define Py_nb_lshift 28
  ------------------
  |  Branch (660:9): [True: 0, False: 1.63k]
  ------------------
  661|      0|        case Py_nb_multiply: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   37|      0|#define Py_nb_multiply 29
  ------------------
  |  Branch (661:9): [True: 0, False: 1.63k]
  ------------------
  662|      0|        case Py_nb_negative: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   38|      0|#define Py_nb_negative 30
  ------------------
  |  Branch (662:9): [True: 0, False: 1.63k]
  ------------------
  663|     10|        case Py_nb_or: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   39|     10|#define Py_nb_or 31
  ------------------
  |  Branch (663:9): [True: 10, False: 1.62k]
  ------------------
  664|      0|        case Py_nb_positive: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   40|      0|#define Py_nb_positive 32
  ------------------
  |  Branch (664:9): [True: 0, False: 1.63k]
  ------------------
  665|      0|        case Py_nb_power: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   41|      0|#define Py_nb_power 33
  ------------------
  |  Branch (665:9): [True: 0, False: 1.63k]
  ------------------
  666|      0|        case Py_nb_remainder: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   42|      0|#define Py_nb_remainder 34
  ------------------
  |  Branch (666:9): [True: 0, False: 1.63k]
  ------------------
  667|      0|        case Py_nb_rshift: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   43|      0|#define Py_nb_rshift 35
  ------------------
  |  Branch (667:9): [True: 0, False: 1.63k]
  ------------------
  668|      0|        case Py_nb_subtract: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   44|      0|#define Py_nb_subtract 36
  ------------------
  |  Branch (668:9): [True: 0, False: 1.63k]
  ------------------
  669|      0|        case Py_nb_true_divide: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   45|      0|#define Py_nb_true_divide 37
  ------------------
  |  Branch (669:9): [True: 0, False: 1.63k]
  ------------------
  670|      0|        case Py_nb_xor: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   46|      0|#define Py_nb_xor 38
  ------------------
  |  Branch (670:9): [True: 0, False: 1.63k]
  ------------------
  671|      0|        case Py_sq_ass_item: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   47|      0|#define Py_sq_ass_item 39
  ------------------
  |  Branch (671:9): [True: 0, False: 1.63k]
  ------------------
  672|      0|        case Py_sq_concat: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   48|      0|#define Py_sq_concat 40
  ------------------
  |  Branch (672:9): [True: 0, False: 1.63k]
  ------------------
  673|      0|        case Py_sq_contains: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   49|      0|#define Py_sq_contains 41
  ------------------
  |  Branch (673:9): [True: 0, False: 1.63k]
  ------------------
  674|      0|        case Py_sq_inplace_concat: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   50|      0|#define Py_sq_inplace_concat 42
  ------------------
  |  Branch (674:9): [True: 0, False: 1.63k]
  ------------------
  675|      0|        case Py_sq_inplace_repeat: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   51|      0|#define Py_sq_inplace_repeat 43
  ------------------
  |  Branch (675:9): [True: 0, False: 1.63k]
  ------------------
  676|      0|        case Py_sq_item: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   52|      0|#define Py_sq_item 44
  ------------------
  |  Branch (676:9): [True: 0, False: 1.63k]
  ------------------
  677|      0|        case Py_sq_length: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   53|      0|#define Py_sq_length 45
  ------------------
  |  Branch (677:9): [True: 0, False: 1.63k]
  ------------------
  678|      0|        case Py_sq_repeat: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   54|      0|#define Py_sq_repeat 46
  ------------------
  |  Branch (678:9): [True: 0, False: 1.63k]
  ------------------
  679|     40|        case Py_tp_alloc: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   55|     40|#define Py_tp_alloc 47
  ------------------
  |  Branch (679:9): [True: 40, False: 1.59k]
  ------------------
  680|      0|        case Py_tp_base: return _PySlot_DTYPE_PTR;
  ------------------
  |  |   56|      0|#define Py_tp_base 48
  ------------------
  |  Branch (680:9): [True: 0, False: 1.63k]
  ------------------
  681|      0|        case Py_tp_bases: return _PySlot_DTYPE_PTR;
  ------------------
  |  |   57|      0|#define Py_tp_bases 49
  ------------------
  |  Branch (681:9): [True: 0, False: 1.63k]
  ------------------
  682|      5|        case Py_tp_call: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   58|      5|#define Py_tp_call 50
  ------------------
  |  Branch (682:9): [True: 5, False: 1.62k]
  ------------------
  683|     90|        case Py_tp_clear: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   59|     90|#define Py_tp_clear 51
  ------------------
  |  Branch (683:9): [True: 90, False: 1.54k]
  ------------------
  684|    180|        case Py_tp_dealloc: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   60|    180|#define Py_tp_dealloc 52
  ------------------
  |  Branch (684:9): [True: 180, False: 1.45k]
  ------------------
  685|      0|        case Py_tp_del: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   61|      0|#define Py_tp_del 53
  ------------------
  |  Branch (685:9): [True: 0, False: 1.63k]
  ------------------
  686|      0|        case Py_tp_descr_get: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   62|      0|#define Py_tp_descr_get 54
  ------------------
  |  Branch (686:9): [True: 0, False: 1.63k]
  ------------------
  687|      0|        case Py_tp_descr_set: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   63|      0|#define Py_tp_descr_set 55
  ------------------
  |  Branch (687:9): [True: 0, False: 1.63k]
  ------------------
  688|    132|        case Py_tp_doc: return _PySlot_DTYPE_PTR;
  ------------------
  |  |   64|    132|#define Py_tp_doc 56
  ------------------
  |  Branch (688:9): [True: 132, False: 1.50k]
  ------------------
  689|      0|        case Py_tp_getattr: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   65|      0|#define Py_tp_getattr 57
  ------------------
  |  Branch (689:9): [True: 0, False: 1.63k]
  ------------------
  690|      5|        case Py_tp_getattro: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   66|      5|#define Py_tp_getattro 58
  ------------------
  |  Branch (690:9): [True: 5, False: 1.62k]
  ------------------
  691|      0|        case Py_tp_hash: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   67|      0|#define Py_tp_hash 59
  ------------------
  |  Branch (691:9): [True: 0, False: 1.63k]
  ------------------
  692|     45|        case Py_tp_init: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   68|     45|#define Py_tp_init 60
  ------------------
  |  Branch (692:9): [True: 45, False: 1.58k]
  ------------------
  693|      0|        case Py_tp_is_gc: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   69|      0|#define Py_tp_is_gc 61
  ------------------
  |  Branch (693:9): [True: 0, False: 1.63k]
  ------------------
  694|     20|        case Py_tp_iter: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   70|     20|#define Py_tp_iter 62
  ------------------
  |  Branch (694:9): [True: 20, False: 1.61k]
  ------------------
  695|     35|        case Py_tp_iternext: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   71|     35|#define Py_tp_iternext 63
  ------------------
  |  Branch (695:9): [True: 35, False: 1.59k]
  ------------------
  696|    165|        case Py_tp_methods: return _PySlot_DTYPE_PTR;
  ------------------
  |  |   72|    165|#define Py_tp_methods 64
  ------------------
  |  Branch (696:9): [True: 165, False: 1.46k]
  ------------------
  697|    110|        case Py_tp_new: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   73|    110|#define Py_tp_new 65
  ------------------
  |  Branch (697:9): [True: 110, False: 1.52k]
  ------------------
  698|    125|        case Py_tp_repr: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   74|    125|#define Py_tp_repr 66
  ------------------
  |  Branch (698:9): [True: 125, False: 1.50k]
  ------------------
  699|     10|        case Py_tp_richcompare: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   75|     10|#define Py_tp_richcompare 67
  ------------------
  |  Branch (699:9): [True: 10, False: 1.62k]
  ------------------
  700|      0|        case Py_tp_setattr: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   76|      0|#define Py_tp_setattr 68
  ------------------
  |  Branch (700:9): [True: 0, False: 1.63k]
  ------------------
  701|      5|        case Py_tp_setattro: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   77|      5|#define Py_tp_setattro 69
  ------------------
  |  Branch (701:9): [True: 5, False: 1.62k]
  ------------------
  702|      0|        case Py_tp_str: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   78|      0|#define Py_tp_str 70
  ------------------
  |  Branch (702:9): [True: 0, False: 1.63k]
  ------------------
  703|    165|        case Py_tp_traverse: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   79|    165|#define Py_tp_traverse 71
  ------------------
  |  Branch (703:9): [True: 165, False: 1.46k]
  ------------------
  704|    135|        case Py_tp_members: return _PySlot_DTYPE_PTR;
  ------------------
  |  |   80|    135|#define Py_tp_members 72
  ------------------
  |  Branch (704:9): [True: 135, False: 1.49k]
  ------------------
  705|     80|        case Py_tp_getset: return _PySlot_DTYPE_PTR;
  ------------------
  |  |   81|     80|#define Py_tp_getset 73
  ------------------
  |  Branch (705:9): [True: 80, False: 1.55k]
  ------------------
  706|     35|        case Py_tp_free: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   82|     35|#define Py_tp_free 74
  ------------------
  |  Branch (706:9): [True: 35, False: 1.59k]
  ------------------
  707|      0|        case Py_nb_matrix_multiply: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   83|      0|#define Py_nb_matrix_multiply 75
  ------------------
  |  Branch (707:9): [True: 0, False: 1.63k]
  ------------------
  708|      0|        case Py_nb_inplace_matrix_multiply: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   84|      0|#define Py_nb_inplace_matrix_multiply 76
  ------------------
  |  Branch (708:9): [True: 0, False: 1.63k]
  ------------------
  709|      0|        case Py_am_await: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   85|      0|#define Py_am_await 77
  ------------------
  |  Branch (709:9): [True: 0, False: 1.63k]
  ------------------
  710|      0|        case Py_am_aiter: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   86|      0|#define Py_am_aiter 78
  ------------------
  |  Branch (710:9): [True: 0, False: 1.63k]
  ------------------
  711|      0|        case Py_am_anext: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   87|      0|#define Py_am_anext 79
  ------------------
  |  Branch (711:9): [True: 0, False: 1.63k]
  ------------------
  712|     10|        case Py_tp_finalize: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   88|     10|#define Py_tp_finalize 80
  ------------------
  |  Branch (712:9): [True: 10, False: 1.62k]
  ------------------
  713|      0|        case Py_am_send: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   89|      0|#define Py_am_send 81
  ------------------
  |  Branch (713:9): [True: 0, False: 1.63k]
  ------------------
  714|      0|        case Py_tp_vectorcall: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   90|      0|#define Py_tp_vectorcall 82
  ------------------
  |  Branch (714:9): [True: 0, False: 1.63k]
  ------------------
  715|      0|        case Py_tp_token: return _PySlot_DTYPE_PTR;
  ------------------
  |  |   91|      0|#define Py_tp_token 83
  ------------------
  |  Branch (715:9): [True: 0, False: 1.63k]
  ------------------
  716|      0|        case Py_mod_create: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   92|      0|#define Py_mod_create _Py_SLOT_COMPAT_VALUE(1, 84)
  |  |  ------------------
  |  |  |  |    7|      0|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  |  Branch (716:9): [True: 0, False: 1.63k]
  ------------------
  717|     66|        case Py_mod_exec: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   93|     66|#define Py_mod_exec _Py_SLOT_COMPAT_VALUE(2, 85)
  |  |  ------------------
  |  |  |  |    7|     66|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  |  Branch (717:9): [True: 66, False: 1.56k]
  ------------------
  718|     48|        case Py_mod_multiple_interpreters: return _PySlot_DTYPE_UINT64;
  ------------------
  |  |   94|     48|#define Py_mod_multiple_interpreters _Py_SLOT_COMPAT_VALUE(3, 86)
  |  |  ------------------
  |  |  |  |    7|     48|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  |  Branch (718:9): [True: 48, False: 1.58k]
  ------------------
  719|     48|        case Py_mod_gil: return _PySlot_DTYPE_UINT64;
  ------------------
  |  |   95|     48|#define Py_mod_gil _Py_SLOT_COMPAT_VALUE(4, 87)
  |  |  ------------------
  |  |  |  |    7|     48|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  |  Branch (719:9): [True: 48, False: 1.58k]
  ------------------
  720|      5|        case Py_bf_getbuffer: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   96|      5|#define Py_bf_getbuffer _Py_SLOT_COMPAT_VALUE(1, 88)
  |  |  ------------------
  |  |  |  |    7|      5|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  |  Branch (720:9): [True: 5, False: 1.62k]
  ------------------
  721|      5|        case Py_bf_releasebuffer: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   97|      5|#define Py_bf_releasebuffer _Py_SLOT_COMPAT_VALUE(2, 89)
  |  |  ------------------
  |  |  |  |    7|      5|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  |  Branch (721:9): [True: 5, False: 1.62k]
  ------------------
  722|      0|        case Py_mp_ass_subscript: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   98|      0|#define Py_mp_ass_subscript _Py_SLOT_COMPAT_VALUE(3, 90)
  |  |  ------------------
  |  |  |  |    7|      0|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  |  Branch (722:9): [True: 0, False: 1.63k]
  ------------------
  723|      0|        case Py_mp_length: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |   99|      0|#define Py_mp_length _Py_SLOT_COMPAT_VALUE(4, 91)
  |  |  ------------------
  |  |  |  |    7|      0|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  |  Branch (723:9): [True: 0, False: 1.63k]
  ------------------
  724|      0|        case Py_slot_subslots: return _PySlot_DTYPE_PTR;
  ------------------
  |  |  100|      0|#define Py_slot_subslots 92
  ------------------
  |  Branch (724:9): [True: 0, False: 1.63k]
  ------------------
  725|      0|        case Py_tp_slots: return _PySlot_DTYPE_PTR;
  ------------------
  |  |  101|      0|#define Py_tp_slots 93
  ------------------
  |  Branch (725:9): [True: 0, False: 1.63k]
  ------------------
  726|      0|        case Py_mod_slots: return _PySlot_DTYPE_PTR;
  ------------------
  |  |  102|      0|#define Py_mod_slots 94
  ------------------
  |  Branch (726:9): [True: 0, False: 1.63k]
  ------------------
  727|      0|        case Py_tp_name: return _PySlot_DTYPE_PTR;
  ------------------
  |  |  103|      0|#define Py_tp_name 95
  ------------------
  |  Branch (727:9): [True: 0, False: 1.63k]
  ------------------
  728|      0|        case Py_tp_basicsize: return _PySlot_DTYPE_SIZE;
  ------------------
  |  |  104|      0|#define Py_tp_basicsize 96
  ------------------
  |  Branch (728:9): [True: 0, False: 1.63k]
  ------------------
  729|      0|        case Py_tp_extra_basicsize: return _PySlot_DTYPE_SIZE;
  ------------------
  |  |  105|      0|#define Py_tp_extra_basicsize 97
  ------------------
  |  Branch (729:9): [True: 0, False: 1.63k]
  ------------------
  730|      0|        case Py_tp_itemsize: return _PySlot_DTYPE_SIZE;
  ------------------
  |  |  106|      0|#define Py_tp_itemsize 98
  ------------------
  |  Branch (730:9): [True: 0, False: 1.63k]
  ------------------
  731|      0|        case Py_tp_flags: return _PySlot_DTYPE_UINT64;
  ------------------
  |  |  107|      0|#define Py_tp_flags 99
  ------------------
  |  Branch (731:9): [True: 0, False: 1.63k]
  ------------------
  732|      0|        case Py_mod_name: return _PySlot_DTYPE_PTR;
  ------------------
  |  |  108|      0|#define Py_mod_name 100
  ------------------
  |  Branch (732:9): [True: 0, False: 1.63k]
  ------------------
  733|      0|        case Py_mod_doc: return _PySlot_DTYPE_PTR;
  ------------------
  |  |  109|      0|#define Py_mod_doc 101
  ------------------
  |  Branch (733:9): [True: 0, False: 1.63k]
  ------------------
  734|      0|        case Py_mod_state_size: return _PySlot_DTYPE_SIZE;
  ------------------
  |  |  110|      0|#define Py_mod_state_size 102
  ------------------
  |  Branch (734:9): [True: 0, False: 1.63k]
  ------------------
  735|      0|        case Py_mod_methods: return _PySlot_DTYPE_PTR;
  ------------------
  |  |  111|      0|#define Py_mod_methods 103
  ------------------
  |  Branch (735:9): [True: 0, False: 1.63k]
  ------------------
  736|      0|        case Py_mod_state_traverse: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |  112|      0|#define Py_mod_state_traverse 104
  ------------------
  |  Branch (736:9): [True: 0, False: 1.63k]
  ------------------
  737|      0|        case Py_mod_state_clear: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |  113|      0|#define Py_mod_state_clear 105
  ------------------
  |  Branch (737:9): [True: 0, False: 1.63k]
  ------------------
  738|      0|        case Py_mod_state_free: return _PySlot_DTYPE_FUNC;
  ------------------
  |  |  114|      0|#define Py_mod_state_free 106
  ------------------
  |  Branch (738:9): [True: 0, False: 1.63k]
  ------------------
  739|      0|        case Py_tp_metaclass: return _PySlot_DTYPE_PTR;
  ------------------
  |  |  115|      0|#define Py_tp_metaclass 107
  ------------------
  |  Branch (739:9): [True: 0, False: 1.63k]
  ------------------
  740|      0|        case Py_tp_module: return _PySlot_DTYPE_PTR;
  ------------------
  |  |  116|      0|#define Py_tp_module 108
  ------------------
  |  Branch (740:9): [True: 0, False: 1.63k]
  ------------------
  741|     60|        case Py_mod_abi: return _PySlot_DTYPE_PTR;
  ------------------
  |  |  117|     60|#define Py_mod_abi 109
  ------------------
  |  Branch (741:9): [True: 60, False: 1.57k]
  ------------------
  742|      0|        case Py_mod_token: return _PySlot_DTYPE_PTR;
  ------------------
  |  |  118|      0|#define Py_mod_token 110
  ------------------
  |  Branch (742:9): [True: 0, False: 1.63k]
  ------------------
  743|      0|        default: return _PySlot_DTYPE_VOID;
  ------------------
  |  Branch (743:9): [True: 0, False: 1.63k]
  ------------------
  744|  1.63k|    }
  745|  1.63k|}
slots.c:_PySlot_get_must_be_static:
  948|    379|{
  949|    379|    switch (slot_id) {
  ------------------
  |  Branch (949:13): [True: 76, False: 303]
  ------------------
  950|     33|        case Py_tp_methods: return true;
  ------------------
  |  |   72|     33|#define Py_tp_methods 64
  ------------------
  |  Branch (950:9): [True: 33, False: 346]
  ------------------
  951|     27|        case Py_tp_members: return true;
  ------------------
  |  |   80|     27|#define Py_tp_members 72
  ------------------
  |  Branch (951:9): [True: 27, False: 352]
  ------------------
  952|     16|        case Py_tp_getset: return true;
  ------------------
  |  |   81|     16|#define Py_tp_getset 73
  ------------------
  |  Branch (952:9): [True: 16, False: 363]
  ------------------
  953|      0|        case Py_mod_methods: return true;
  ------------------
  |  |  111|      0|#define Py_mod_methods 103
  ------------------
  |  Branch (953:9): [True: 0, False: 379]
  ------------------
  954|    379|    }
  955|    303|    return false;
  956|    379|}
slots.c:_PySlot_get_null_handling:
  843|    379|{
  844|    379|    switch (slot_id) {
  845|      0|        case Py_slot_end:
  ------------------
  |  |   12|      0|#define Py_slot_end 0
  ------------------
  |  Branch (845:9): [True: 0, False: 379]
  ------------------
  846|     33|        case Py_tp_doc:
  ------------------
  |  |   64|     33|#define Py_tp_doc 56
  ------------------
  |  Branch (846:9): [True: 33, False: 346]
  ------------------
  847|     33|        case Py_tp_token:
  ------------------
  |  |   91|     33|#define Py_tp_token 83
  ------------------
  |  Branch (847:9): [True: 0, False: 379]
  ------------------
  848|     57|        case Py_mod_multiple_interpreters:
  ------------------
  |  |   94|     57|#define Py_mod_multiple_interpreters _Py_SLOT_COMPAT_VALUE(3, 86)
  |  |  ------------------
  |  |  |  |    7|     57|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  |  Branch (848:9): [True: 24, False: 355]
  ------------------
  849|     81|        case Py_mod_gil:
  ------------------
  |  |   95|     81|#define Py_mod_gil _Py_SLOT_COMPAT_VALUE(4, 87)
  |  |  ------------------
  |  |  |  |    7|     81|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  |  Branch (849:9): [True: 24, False: 355]
  ------------------
  850|     81|        case Py_slot_subslots:
  ------------------
  |  |  100|     81|#define Py_slot_subslots 92
  ------------------
  |  Branch (850:9): [True: 0, False: 379]
  ------------------
  851|     81|        case Py_tp_slots:
  ------------------
  |  |  101|     81|#define Py_tp_slots 93
  ------------------
  |  Branch (851:9): [True: 0, False: 379]
  ------------------
  852|     81|        case Py_mod_slots:
  ------------------
  |  |  102|     81|#define Py_mod_slots 94
  ------------------
  |  Branch (852:9): [True: 0, False: 379]
  ------------------
  853|     81|        case Py_tp_basicsize:
  ------------------
  |  |  104|     81|#define Py_tp_basicsize 96
  ------------------
  |  Branch (853:9): [True: 0, False: 379]
  ------------------
  854|     81|        case Py_tp_extra_basicsize:
  ------------------
  |  |  105|     81|#define Py_tp_extra_basicsize 97
  ------------------
  |  Branch (854:9): [True: 0, False: 379]
  ------------------
  855|     81|        case Py_tp_itemsize:
  ------------------
  |  |  106|     81|#define Py_tp_itemsize 98
  ------------------
  |  Branch (855:9): [True: 0, False: 379]
  ------------------
  856|     81|        case Py_tp_flags:
  ------------------
  |  |  107|     81|#define Py_tp_flags 99
  ------------------
  |  Branch (856:9): [True: 0, False: 379]
  ------------------
  857|     81|        case Py_mod_state_size:
  ------------------
  |  |  110|     81|#define Py_mod_state_size 102
  ------------------
  |  Branch (857:9): [True: 0, False: 379]
  ------------------
  858|     81|            return _PySlot_PROBLEM_ALLOW;
  859|      0|        case Py_mp_subscript:
  ------------------
  |  |   13|      0|#define Py_mp_subscript 5
  ------------------
  |  Branch (859:9): [True: 0, False: 379]
  ------------------
  860|      0|        case Py_nb_absolute:
  ------------------
  |  |   14|      0|#define Py_nb_absolute 6
  ------------------
  |  Branch (860:9): [True: 0, False: 379]
  ------------------
  861|      0|        case Py_nb_add:
  ------------------
  |  |   15|      0|#define Py_nb_add 7
  ------------------
  |  Branch (861:9): [True: 0, False: 379]
  ------------------
  862|      0|        case Py_nb_and:
  ------------------
  |  |   16|      0|#define Py_nb_and 8
  ------------------
  |  Branch (862:9): [True: 0, False: 379]
  ------------------
  863|      0|        case Py_nb_bool:
  ------------------
  |  |   17|      0|#define Py_nb_bool 9
  ------------------
  |  Branch (863:9): [True: 0, False: 379]
  ------------------
  864|      0|        case Py_nb_divmod:
  ------------------
  |  |   18|      0|#define Py_nb_divmod 10
  ------------------
  |  Branch (864:9): [True: 0, False: 379]
  ------------------
  865|      0|        case Py_nb_float:
  ------------------
  |  |   19|      0|#define Py_nb_float 11
  ------------------
  |  Branch (865:9): [True: 0, False: 379]
  ------------------
  866|      0|        case Py_nb_floor_divide:
  ------------------
  |  |   20|      0|#define Py_nb_floor_divide 12
  ------------------
  |  Branch (866:9): [True: 0, False: 379]
  ------------------
  867|      0|        case Py_nb_index:
  ------------------
  |  |   21|      0|#define Py_nb_index 13
  ------------------
  |  Branch (867:9): [True: 0, False: 379]
  ------------------
  868|      0|        case Py_nb_inplace_add:
  ------------------
  |  |   22|      0|#define Py_nb_inplace_add 14
  ------------------
  |  Branch (868:9): [True: 0, False: 379]
  ------------------
  869|      0|        case Py_nb_inplace_and:
  ------------------
  |  |   23|      0|#define Py_nb_inplace_and 15
  ------------------
  |  Branch (869:9): [True: 0, False: 379]
  ------------------
  870|      0|        case Py_nb_inplace_floor_divide:
  ------------------
  |  |   24|      0|#define Py_nb_inplace_floor_divide 16
  ------------------
  |  Branch (870:9): [True: 0, False: 379]
  ------------------
  871|      0|        case Py_nb_inplace_lshift:
  ------------------
  |  |   25|      0|#define Py_nb_inplace_lshift 17
  ------------------
  |  Branch (871:9): [True: 0, False: 379]
  ------------------
  872|      0|        case Py_nb_inplace_multiply:
  ------------------
  |  |   26|      0|#define Py_nb_inplace_multiply 18
  ------------------
  |  Branch (872:9): [True: 0, False: 379]
  ------------------
  873|      0|        case Py_nb_inplace_or:
  ------------------
  |  |   27|      0|#define Py_nb_inplace_or 19
  ------------------
  |  Branch (873:9): [True: 0, False: 379]
  ------------------
  874|      0|        case Py_nb_inplace_power:
  ------------------
  |  |   28|      0|#define Py_nb_inplace_power 20
  ------------------
  |  Branch (874:9): [True: 0, False: 379]
  ------------------
  875|      0|        case Py_nb_inplace_remainder:
  ------------------
  |  |   29|      0|#define Py_nb_inplace_remainder 21
  ------------------
  |  Branch (875:9): [True: 0, False: 379]
  ------------------
  876|      0|        case Py_nb_inplace_rshift:
  ------------------
  |  |   30|      0|#define Py_nb_inplace_rshift 22
  ------------------
  |  Branch (876:9): [True: 0, False: 379]
  ------------------
  877|      0|        case Py_nb_inplace_subtract:
  ------------------
  |  |   31|      0|#define Py_nb_inplace_subtract 23
  ------------------
  |  Branch (877:9): [True: 0, False: 379]
  ------------------
  878|      0|        case Py_nb_inplace_true_divide:
  ------------------
  |  |   32|      0|#define Py_nb_inplace_true_divide 24
  ------------------
  |  Branch (878:9): [True: 0, False: 379]
  ------------------
  879|      0|        case Py_nb_inplace_xor:
  ------------------
  |  |   33|      0|#define Py_nb_inplace_xor 25
  ------------------
  |  Branch (879:9): [True: 0, False: 379]
  ------------------
  880|      0|        case Py_nb_int:
  ------------------
  |  |   34|      0|#define Py_nb_int 26
  ------------------
  |  Branch (880:9): [True: 0, False: 379]
  ------------------
  881|      0|        case Py_nb_invert:
  ------------------
  |  |   35|      0|#define Py_nb_invert 27
  ------------------
  |  Branch (881:9): [True: 0, False: 379]
  ------------------
  882|      0|        case Py_nb_lshift:
  ------------------
  |  |   36|      0|#define Py_nb_lshift 28
  ------------------
  |  Branch (882:9): [True: 0, False: 379]
  ------------------
  883|      0|        case Py_nb_multiply:
  ------------------
  |  |   37|      0|#define Py_nb_multiply 29
  ------------------
  |  Branch (883:9): [True: 0, False: 379]
  ------------------
  884|      0|        case Py_nb_negative:
  ------------------
  |  |   38|      0|#define Py_nb_negative 30
  ------------------
  |  Branch (884:9): [True: 0, False: 379]
  ------------------
  885|      2|        case Py_nb_or:
  ------------------
  |  |   39|      2|#define Py_nb_or 31
  ------------------
  |  Branch (885:9): [True: 2, False: 377]
  ------------------
  886|      2|        case Py_nb_positive:
  ------------------
  |  |   40|      2|#define Py_nb_positive 32
  ------------------
  |  Branch (886:9): [True: 0, False: 379]
  ------------------
  887|      2|        case Py_nb_power:
  ------------------
  |  |   41|      2|#define Py_nb_power 33
  ------------------
  |  Branch (887:9): [True: 0, False: 379]
  ------------------
  888|      2|        case Py_nb_remainder:
  ------------------
  |  |   42|      2|#define Py_nb_remainder 34
  ------------------
  |  Branch (888:9): [True: 0, False: 379]
  ------------------
  889|      2|        case Py_nb_rshift:
  ------------------
  |  |   43|      2|#define Py_nb_rshift 35
  ------------------
  |  Branch (889:9): [True: 0, False: 379]
  ------------------
  890|      2|        case Py_nb_subtract:
  ------------------
  |  |   44|      2|#define Py_nb_subtract 36
  ------------------
  |  Branch (890:9): [True: 0, False: 379]
  ------------------
  891|      2|        case Py_nb_true_divide:
  ------------------
  |  |   45|      2|#define Py_nb_true_divide 37
  ------------------
  |  Branch (891:9): [True: 0, False: 379]
  ------------------
  892|      2|        case Py_nb_xor:
  ------------------
  |  |   46|      2|#define Py_nb_xor 38
  ------------------
  |  Branch (892:9): [True: 0, False: 379]
  ------------------
  893|      2|        case Py_sq_ass_item:
  ------------------
  |  |   47|      2|#define Py_sq_ass_item 39
  ------------------
  |  Branch (893:9): [True: 0, False: 379]
  ------------------
  894|      2|        case Py_sq_concat:
  ------------------
  |  |   48|      2|#define Py_sq_concat 40
  ------------------
  |  Branch (894:9): [True: 0, False: 379]
  ------------------
  895|      2|        case Py_sq_contains:
  ------------------
  |  |   49|      2|#define Py_sq_contains 41
  ------------------
  |  Branch (895:9): [True: 0, False: 379]
  ------------------
  896|      2|        case Py_sq_inplace_concat:
  ------------------
  |  |   50|      2|#define Py_sq_inplace_concat 42
  ------------------
  |  Branch (896:9): [True: 0, False: 379]
  ------------------
  897|      2|        case Py_sq_inplace_repeat:
  ------------------
  |  |   51|      2|#define Py_sq_inplace_repeat 43
  ------------------
  |  Branch (897:9): [True: 0, False: 379]
  ------------------
  898|      2|        case Py_sq_item:
  ------------------
  |  |   52|      2|#define Py_sq_item 44
  ------------------
  |  Branch (898:9): [True: 0, False: 379]
  ------------------
  899|      2|        case Py_sq_length:
  ------------------
  |  |   53|      2|#define Py_sq_length 45
  ------------------
  |  Branch (899:9): [True: 0, False: 379]
  ------------------
  900|      2|        case Py_sq_repeat:
  ------------------
  |  |   54|      2|#define Py_sq_repeat 46
  ------------------
  |  Branch (900:9): [True: 0, False: 379]
  ------------------
  901|     10|        case Py_tp_alloc:
  ------------------
  |  |   55|     10|#define Py_tp_alloc 47
  ------------------
  |  Branch (901:9): [True: 8, False: 371]
  ------------------
  902|     10|        case Py_tp_base:
  ------------------
  |  |   56|     10|#define Py_tp_base 48
  ------------------
  |  Branch (902:9): [True: 0, False: 379]
  ------------------
  903|     10|        case Py_tp_bases:
  ------------------
  |  |   57|     10|#define Py_tp_bases 49
  ------------------
  |  Branch (903:9): [True: 0, False: 379]
  ------------------
  904|     11|        case Py_tp_call:
  ------------------
  |  |   58|     11|#define Py_tp_call 50
  ------------------
  |  Branch (904:9): [True: 1, False: 378]
  ------------------
  905|     29|        case Py_tp_clear:
  ------------------
  |  |   59|     29|#define Py_tp_clear 51
  ------------------
  |  Branch (905:9): [True: 18, False: 361]
  ------------------
  906|     65|        case Py_tp_dealloc:
  ------------------
  |  |   60|     65|#define Py_tp_dealloc 52
  ------------------
  |  Branch (906:9): [True: 36, False: 343]
  ------------------
  907|     65|        case Py_tp_del:
  ------------------
  |  |   61|     65|#define Py_tp_del 53
  ------------------
  |  Branch (907:9): [True: 0, False: 379]
  ------------------
  908|     65|        case Py_tp_descr_get:
  ------------------
  |  |   62|     65|#define Py_tp_descr_get 54
  ------------------
  |  Branch (908:9): [True: 0, False: 379]
  ------------------
  909|     65|        case Py_tp_descr_set:
  ------------------
  |  |   63|     65|#define Py_tp_descr_set 55
  ------------------
  |  Branch (909:9): [True: 0, False: 379]
  ------------------
  910|     65|        case Py_tp_getattr:
  ------------------
  |  |   65|     65|#define Py_tp_getattr 57
  ------------------
  |  Branch (910:9): [True: 0, False: 379]
  ------------------
  911|     66|        case Py_tp_getattro:
  ------------------
  |  |   66|     66|#define Py_tp_getattro 58
  ------------------
  |  Branch (911:9): [True: 1, False: 378]
  ------------------
  912|     66|        case Py_tp_hash:
  ------------------
  |  |   67|     66|#define Py_tp_hash 59
  ------------------
  |  Branch (912:9): [True: 0, False: 379]
  ------------------
  913|     75|        case Py_tp_init:
  ------------------
  |  |   68|     75|#define Py_tp_init 60
  ------------------
  |  Branch (913:9): [True: 9, False: 370]
  ------------------
  914|     75|        case Py_tp_is_gc:
  ------------------
  |  |   69|     75|#define Py_tp_is_gc 61
  ------------------
  |  Branch (914:9): [True: 0, False: 379]
  ------------------
  915|     79|        case Py_tp_iter:
  ------------------
  |  |   70|     79|#define Py_tp_iter 62
  ------------------
  |  Branch (915:9): [True: 4, False: 375]
  ------------------
  916|     86|        case Py_tp_iternext:
  ------------------
  |  |   71|     86|#define Py_tp_iternext 63
  ------------------
  |  Branch (916:9): [True: 7, False: 372]
  ------------------
  917|    119|        case Py_tp_methods:
  ------------------
  |  |   72|    119|#define Py_tp_methods 64
  ------------------
  |  Branch (917:9): [True: 33, False: 346]
  ------------------
  918|    141|        case Py_tp_new:
  ------------------
  |  |   73|    141|#define Py_tp_new 65
  ------------------
  |  Branch (918:9): [True: 22, False: 357]
  ------------------
  919|    166|        case Py_tp_repr:
  ------------------
  |  |   74|    166|#define Py_tp_repr 66
  ------------------
  |  Branch (919:9): [True: 25, False: 354]
  ------------------
  920|    168|        case Py_tp_richcompare:
  ------------------
  |  |   75|    168|#define Py_tp_richcompare 67
  ------------------
  |  Branch (920:9): [True: 2, False: 377]
  ------------------
  921|    168|        case Py_tp_setattr:
  ------------------
  |  |   76|    168|#define Py_tp_setattr 68
  ------------------
  |  Branch (921:9): [True: 0, False: 379]
  ------------------
  922|    169|        case Py_tp_setattro:
  ------------------
  |  |   77|    169|#define Py_tp_setattro 69
  ------------------
  |  Branch (922:9): [True: 1, False: 378]
  ------------------
  923|    169|        case Py_tp_str:
  ------------------
  |  |   78|    169|#define Py_tp_str 70
  ------------------
  |  Branch (923:9): [True: 0, False: 379]
  ------------------
  924|    202|        case Py_tp_traverse:
  ------------------
  |  |   79|    202|#define Py_tp_traverse 71
  ------------------
  |  Branch (924:9): [True: 33, False: 346]
  ------------------
  925|    218|        case Py_tp_getset:
  ------------------
  |  |   81|    218|#define Py_tp_getset 73
  ------------------
  |  Branch (925:9): [True: 16, False: 363]
  ------------------
  926|    225|        case Py_tp_free:
  ------------------
  |  |   82|    225|#define Py_tp_free 74
  ------------------
  |  Branch (926:9): [True: 7, False: 372]
  ------------------
  927|    225|        case Py_nb_matrix_multiply:
  ------------------
  |  |   83|    225|#define Py_nb_matrix_multiply 75
  ------------------
  |  Branch (927:9): [True: 0, False: 379]
  ------------------
  928|    225|        case Py_nb_inplace_matrix_multiply:
  ------------------
  |  |   84|    225|#define Py_nb_inplace_matrix_multiply 76
  ------------------
  |  Branch (928:9): [True: 0, False: 379]
  ------------------
  929|    225|        case Py_am_await:
  ------------------
  |  |   85|    225|#define Py_am_await 77
  ------------------
  |  Branch (929:9): [True: 0, False: 379]
  ------------------
  930|    225|        case Py_am_aiter:
  ------------------
  |  |   86|    225|#define Py_am_aiter 78
  ------------------
  |  Branch (930:9): [True: 0, False: 379]
  ------------------
  931|    225|        case Py_am_anext:
  ------------------
  |  |   87|    225|#define Py_am_anext 79
  ------------------
  |  Branch (931:9): [True: 0, False: 379]
  ------------------
  932|    227|        case Py_tp_finalize:
  ------------------
  |  |   88|    227|#define Py_tp_finalize 80
  ------------------
  |  Branch (932:9): [True: 2, False: 377]
  ------------------
  933|    227|        case Py_am_send:
  ------------------
  |  |   89|    227|#define Py_am_send 81
  ------------------
  |  Branch (933:9): [True: 0, False: 379]
  ------------------
  934|    227|        case Py_tp_vectorcall:
  ------------------
  |  |   90|    227|#define Py_tp_vectorcall 82
  ------------------
  |  Branch (934:9): [True: 0, False: 379]
  ------------------
  935|    227|        case Py_mod_create:
  ------------------
  |  |   92|    227|#define Py_mod_create _Py_SLOT_COMPAT_VALUE(1, 84)
  |  |  ------------------
  |  |  |  |    7|    227|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  |  Branch (935:9): [True: 0, False: 379]
  ------------------
  936|    228|        case Py_bf_getbuffer:
  ------------------
  |  |   96|    228|#define Py_bf_getbuffer _Py_SLOT_COMPAT_VALUE(1, 88)
  |  |  ------------------
  |  |  |  |    7|    228|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  |  Branch (936:9): [True: 1, False: 378]
  ------------------
  937|    229|        case Py_bf_releasebuffer:
  ------------------
  |  |   97|    229|#define Py_bf_releasebuffer _Py_SLOT_COMPAT_VALUE(2, 89)
  |  |  ------------------
  |  |  |  |    7|    229|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  |  Branch (937:9): [True: 1, False: 378]
  ------------------
  938|    229|        case Py_mp_ass_subscript:
  ------------------
  |  |   98|    229|#define Py_mp_ass_subscript _Py_SLOT_COMPAT_VALUE(3, 90)
  |  |  ------------------
  |  |  |  |    7|    229|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  |  Branch (938:9): [True: 0, False: 379]
  ------------------
  939|    229|        case Py_mp_length:
  ------------------
  |  |   99|    229|#define Py_mp_length _Py_SLOT_COMPAT_VALUE(4, 91)
  |  |  ------------------
  |  |  |  |    7|    229|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  |  Branch (939:9): [True: 0, False: 379]
  ------------------
  940|    229|            return _PySlot_PROBLEM_DEPRECATED;
  941|     69|        default:
  ------------------
  |  Branch (941:9): [True: 69, False: 310]
  ------------------
  942|     69|            return _PySlot_PROBLEM_REJECT;
  943|    379|    }
  944|    379|}
slots.c:_PySlot_get_duplicate_handling:
  749|    379|{
  750|    379|    switch (slot_id) {
  751|      0|        case Py_mp_subscript:
  ------------------
  |  |   13|      0|#define Py_mp_subscript 5
  ------------------
  |  Branch (751:9): [True: 0, False: 379]
  ------------------
  752|      0|        case Py_nb_absolute:
  ------------------
  |  |   14|      0|#define Py_nb_absolute 6
  ------------------
  |  Branch (752:9): [True: 0, False: 379]
  ------------------
  753|      0|        case Py_nb_add:
  ------------------
  |  |   15|      0|#define Py_nb_add 7
  ------------------
  |  Branch (753:9): [True: 0, False: 379]
  ------------------
  754|      0|        case Py_nb_and:
  ------------------
  |  |   16|      0|#define Py_nb_and 8
  ------------------
  |  Branch (754:9): [True: 0, False: 379]
  ------------------
  755|      0|        case Py_nb_bool:
  ------------------
  |  |   17|      0|#define Py_nb_bool 9
  ------------------
  |  Branch (755:9): [True: 0, False: 379]
  ------------------
  756|      0|        case Py_nb_divmod:
  ------------------
  |  |   18|      0|#define Py_nb_divmod 10
  ------------------
  |  Branch (756:9): [True: 0, False: 379]
  ------------------
  757|      0|        case Py_nb_float:
  ------------------
  |  |   19|      0|#define Py_nb_float 11
  ------------------
  |  Branch (757:9): [True: 0, False: 379]
  ------------------
  758|      0|        case Py_nb_floor_divide:
  ------------------
  |  |   20|      0|#define Py_nb_floor_divide 12
  ------------------
  |  Branch (758:9): [True: 0, False: 379]
  ------------------
  759|      0|        case Py_nb_index:
  ------------------
  |  |   21|      0|#define Py_nb_index 13
  ------------------
  |  Branch (759:9): [True: 0, False: 379]
  ------------------
  760|      0|        case Py_nb_inplace_add:
  ------------------
  |  |   22|      0|#define Py_nb_inplace_add 14
  ------------------
  |  Branch (760:9): [True: 0, False: 379]
  ------------------
  761|      0|        case Py_nb_inplace_and:
  ------------------
  |  |   23|      0|#define Py_nb_inplace_and 15
  ------------------
  |  Branch (761:9): [True: 0, False: 379]
  ------------------
  762|      0|        case Py_nb_inplace_floor_divide:
  ------------------
  |  |   24|      0|#define Py_nb_inplace_floor_divide 16
  ------------------
  |  Branch (762:9): [True: 0, False: 379]
  ------------------
  763|      0|        case Py_nb_inplace_lshift:
  ------------------
  |  |   25|      0|#define Py_nb_inplace_lshift 17
  ------------------
  |  Branch (763:9): [True: 0, False: 379]
  ------------------
  764|      0|        case Py_nb_inplace_multiply:
  ------------------
  |  |   26|      0|#define Py_nb_inplace_multiply 18
  ------------------
  |  Branch (764:9): [True: 0, False: 379]
  ------------------
  765|      0|        case Py_nb_inplace_or:
  ------------------
  |  |   27|      0|#define Py_nb_inplace_or 19
  ------------------
  |  Branch (765:9): [True: 0, False: 379]
  ------------------
  766|      0|        case Py_nb_inplace_power:
  ------------------
  |  |   28|      0|#define Py_nb_inplace_power 20
  ------------------
  |  Branch (766:9): [True: 0, False: 379]
  ------------------
  767|      0|        case Py_nb_inplace_remainder:
  ------------------
  |  |   29|      0|#define Py_nb_inplace_remainder 21
  ------------------
  |  Branch (767:9): [True: 0, False: 379]
  ------------------
  768|      0|        case Py_nb_inplace_rshift:
  ------------------
  |  |   30|      0|#define Py_nb_inplace_rshift 22
  ------------------
  |  Branch (768:9): [True: 0, False: 379]
  ------------------
  769|      0|        case Py_nb_inplace_subtract:
  ------------------
  |  |   31|      0|#define Py_nb_inplace_subtract 23
  ------------------
  |  Branch (769:9): [True: 0, False: 379]
  ------------------
  770|      0|        case Py_nb_inplace_true_divide:
  ------------------
  |  |   32|      0|#define Py_nb_inplace_true_divide 24
  ------------------
  |  Branch (770:9): [True: 0, False: 379]
  ------------------
  771|      0|        case Py_nb_inplace_xor:
  ------------------
  |  |   33|      0|#define Py_nb_inplace_xor 25
  ------------------
  |  Branch (771:9): [True: 0, False: 379]
  ------------------
  772|      0|        case Py_nb_int:
  ------------------
  |  |   34|      0|#define Py_nb_int 26
  ------------------
  |  Branch (772:9): [True: 0, False: 379]
  ------------------
  773|      0|        case Py_nb_invert:
  ------------------
  |  |   35|      0|#define Py_nb_invert 27
  ------------------
  |  Branch (773:9): [True: 0, False: 379]
  ------------------
  774|      0|        case Py_nb_lshift:
  ------------------
  |  |   36|      0|#define Py_nb_lshift 28
  ------------------
  |  Branch (774:9): [True: 0, False: 379]
  ------------------
  775|      0|        case Py_nb_multiply:
  ------------------
  |  |   37|      0|#define Py_nb_multiply 29
  ------------------
  |  Branch (775:9): [True: 0, False: 379]
  ------------------
  776|      0|        case Py_nb_negative:
  ------------------
  |  |   38|      0|#define Py_nb_negative 30
  ------------------
  |  Branch (776:9): [True: 0, False: 379]
  ------------------
  777|      2|        case Py_nb_or:
  ------------------
  |  |   39|      2|#define Py_nb_or 31
  ------------------
  |  Branch (777:9): [True: 2, False: 377]
  ------------------
  778|      2|        case Py_nb_positive:
  ------------------
  |  |   40|      2|#define Py_nb_positive 32
  ------------------
  |  Branch (778:9): [True: 0, False: 379]
  ------------------
  779|      2|        case Py_nb_power:
  ------------------
  |  |   41|      2|#define Py_nb_power 33
  ------------------
  |  Branch (779:9): [True: 0, False: 379]
  ------------------
  780|      2|        case Py_nb_remainder:
  ------------------
  |  |   42|      2|#define Py_nb_remainder 34
  ------------------
  |  Branch (780:9): [True: 0, False: 379]
  ------------------
  781|      2|        case Py_nb_rshift:
  ------------------
  |  |   43|      2|#define Py_nb_rshift 35
  ------------------
  |  Branch (781:9): [True: 0, False: 379]
  ------------------
  782|      2|        case Py_nb_subtract:
  ------------------
  |  |   44|      2|#define Py_nb_subtract 36
  ------------------
  |  Branch (782:9): [True: 0, False: 379]
  ------------------
  783|      2|        case Py_nb_true_divide:
  ------------------
  |  |   45|      2|#define Py_nb_true_divide 37
  ------------------
  |  Branch (783:9): [True: 0, False: 379]
  ------------------
  784|      2|        case Py_nb_xor:
  ------------------
  |  |   46|      2|#define Py_nb_xor 38
  ------------------
  |  Branch (784:9): [True: 0, False: 379]
  ------------------
  785|      2|        case Py_sq_ass_item:
  ------------------
  |  |   47|      2|#define Py_sq_ass_item 39
  ------------------
  |  Branch (785:9): [True: 0, False: 379]
  ------------------
  786|      2|        case Py_sq_concat:
  ------------------
  |  |   48|      2|#define Py_sq_concat 40
  ------------------
  |  Branch (786:9): [True: 0, False: 379]
  ------------------
  787|      2|        case Py_sq_contains:
  ------------------
  |  |   49|      2|#define Py_sq_contains 41
  ------------------
  |  Branch (787:9): [True: 0, False: 379]
  ------------------
  788|      2|        case Py_sq_inplace_concat:
  ------------------
  |  |   50|      2|#define Py_sq_inplace_concat 42
  ------------------
  |  Branch (788:9): [True: 0, False: 379]
  ------------------
  789|      2|        case Py_sq_inplace_repeat:
  ------------------
  |  |   51|      2|#define Py_sq_inplace_repeat 43
  ------------------
  |  Branch (789:9): [True: 0, False: 379]
  ------------------
  790|      2|        case Py_sq_item:
  ------------------
  |  |   52|      2|#define Py_sq_item 44
  ------------------
  |  Branch (790:9): [True: 0, False: 379]
  ------------------
  791|      2|        case Py_sq_length:
  ------------------
  |  |   53|      2|#define Py_sq_length 45
  ------------------
  |  Branch (791:9): [True: 0, False: 379]
  ------------------
  792|      2|        case Py_sq_repeat:
  ------------------
  |  |   54|      2|#define Py_sq_repeat 46
  ------------------
  |  Branch (792:9): [True: 0, False: 379]
  ------------------
  793|     10|        case Py_tp_alloc:
  ------------------
  |  |   55|     10|#define Py_tp_alloc 47
  ------------------
  |  Branch (793:9): [True: 8, False: 371]
  ------------------
  794|     10|        case Py_tp_base:
  ------------------
  |  |   56|     10|#define Py_tp_base 48
  ------------------
  |  Branch (794:9): [True: 0, False: 379]
  ------------------
  795|     10|        case Py_tp_bases:
  ------------------
  |  |   57|     10|#define Py_tp_bases 49
  ------------------
  |  Branch (795:9): [True: 0, False: 379]
  ------------------
  796|     11|        case Py_tp_call:
  ------------------
  |  |   58|     11|#define Py_tp_call 50
  ------------------
  |  Branch (796:9): [True: 1, False: 378]
  ------------------
  797|     29|        case Py_tp_clear:
  ------------------
  |  |   59|     29|#define Py_tp_clear 51
  ------------------
  |  Branch (797:9): [True: 18, False: 361]
  ------------------
  798|     65|        case Py_tp_dealloc:
  ------------------
  |  |   60|     65|#define Py_tp_dealloc 52
  ------------------
  |  Branch (798:9): [True: 36, False: 343]
  ------------------
  799|     65|        case Py_tp_del:
  ------------------
  |  |   61|     65|#define Py_tp_del 53
  ------------------
  |  Branch (799:9): [True: 0, False: 379]
  ------------------
  800|     65|        case Py_tp_descr_get:
  ------------------
  |  |   62|     65|#define Py_tp_descr_get 54
  ------------------
  |  Branch (800:9): [True: 0, False: 379]
  ------------------
  801|     65|        case Py_tp_descr_set:
  ------------------
  |  |   63|     65|#define Py_tp_descr_set 55
  ------------------
  |  Branch (801:9): [True: 0, False: 379]
  ------------------
  802|     65|        case Py_tp_getattr:
  ------------------
  |  |   65|     65|#define Py_tp_getattr 57
  ------------------
  |  Branch (802:9): [True: 0, False: 379]
  ------------------
  803|     66|        case Py_tp_getattro:
  ------------------
  |  |   66|     66|#define Py_tp_getattro 58
  ------------------
  |  Branch (803:9): [True: 1, False: 378]
  ------------------
  804|     66|        case Py_tp_hash:
  ------------------
  |  |   67|     66|#define Py_tp_hash 59
  ------------------
  |  Branch (804:9): [True: 0, False: 379]
  ------------------
  805|     75|        case Py_tp_init:
  ------------------
  |  |   68|     75|#define Py_tp_init 60
  ------------------
  |  Branch (805:9): [True: 9, False: 370]
  ------------------
  806|     75|        case Py_tp_is_gc:
  ------------------
  |  |   69|     75|#define Py_tp_is_gc 61
  ------------------
  |  Branch (806:9): [True: 0, False: 379]
  ------------------
  807|     79|        case Py_tp_iter:
  ------------------
  |  |   70|     79|#define Py_tp_iter 62
  ------------------
  |  Branch (807:9): [True: 4, False: 375]
  ------------------
  808|     86|        case Py_tp_iternext:
  ------------------
  |  |   71|     86|#define Py_tp_iternext 63
  ------------------
  |  Branch (808:9): [True: 7, False: 372]
  ------------------
  809|    119|        case Py_tp_methods:
  ------------------
  |  |   72|    119|#define Py_tp_methods 64
  ------------------
  |  Branch (809:9): [True: 33, False: 346]
  ------------------
  810|    141|        case Py_tp_new:
  ------------------
  |  |   73|    141|#define Py_tp_new 65
  ------------------
  |  Branch (810:9): [True: 22, False: 357]
  ------------------
  811|    166|        case Py_tp_repr:
  ------------------
  |  |   74|    166|#define Py_tp_repr 66
  ------------------
  |  Branch (811:9): [True: 25, False: 354]
  ------------------
  812|    168|        case Py_tp_richcompare:
  ------------------
  |  |   75|    168|#define Py_tp_richcompare 67
  ------------------
  |  Branch (812:9): [True: 2, False: 377]
  ------------------
  813|    168|        case Py_tp_setattr:
  ------------------
  |  |   76|    168|#define Py_tp_setattr 68
  ------------------
  |  Branch (813:9): [True: 0, False: 379]
  ------------------
  814|    169|        case Py_tp_setattro:
  ------------------
  |  |   77|    169|#define Py_tp_setattro 69
  ------------------
  |  Branch (814:9): [True: 1, False: 378]
  ------------------
  815|    169|        case Py_tp_str:
  ------------------
  |  |   78|    169|#define Py_tp_str 70
  ------------------
  |  Branch (815:9): [True: 0, False: 379]
  ------------------
  816|    202|        case Py_tp_traverse:
  ------------------
  |  |   79|    202|#define Py_tp_traverse 71
  ------------------
  |  Branch (816:9): [True: 33, False: 346]
  ------------------
  817|    218|        case Py_tp_getset:
  ------------------
  |  |   81|    218|#define Py_tp_getset 73
  ------------------
  |  Branch (817:9): [True: 16, False: 363]
  ------------------
  818|    225|        case Py_tp_free:
  ------------------
  |  |   82|    225|#define Py_tp_free 74
  ------------------
  |  Branch (818:9): [True: 7, False: 372]
  ------------------
  819|    225|        case Py_nb_matrix_multiply:
  ------------------
  |  |   83|    225|#define Py_nb_matrix_multiply 75
  ------------------
  |  Branch (819:9): [True: 0, False: 379]
  ------------------
  820|    225|        case Py_nb_inplace_matrix_multiply:
  ------------------
  |  |   84|    225|#define Py_nb_inplace_matrix_multiply 76
  ------------------
  |  Branch (820:9): [True: 0, False: 379]
  ------------------
  821|    225|        case Py_am_await:
  ------------------
  |  |   85|    225|#define Py_am_await 77
  ------------------
  |  Branch (821:9): [True: 0, False: 379]
  ------------------
  822|    225|        case Py_am_aiter:
  ------------------
  |  |   86|    225|#define Py_am_aiter 78
  ------------------
  |  Branch (822:9): [True: 0, False: 379]
  ------------------
  823|    225|        case Py_am_anext:
  ------------------
  |  |   87|    225|#define Py_am_anext 79
  ------------------
  |  Branch (823:9): [True: 0, False: 379]
  ------------------
  824|    227|        case Py_tp_finalize:
  ------------------
  |  |   88|    227|#define Py_tp_finalize 80
  ------------------
  |  Branch (824:9): [True: 2, False: 377]
  ------------------
  825|    227|        case Py_am_send:
  ------------------
  |  |   89|    227|#define Py_am_send 81
  ------------------
  |  Branch (825:9): [True: 0, False: 379]
  ------------------
  826|    227|        case Py_tp_vectorcall:
  ------------------
  |  |   90|    227|#define Py_tp_vectorcall 82
  ------------------
  |  Branch (826:9): [True: 0, False: 379]
  ------------------
  827|    227|        case Py_tp_token:
  ------------------
  |  |   91|    227|#define Py_tp_token 83
  ------------------
  |  Branch (827:9): [True: 0, False: 379]
  ------------------
  828|    228|        case Py_bf_getbuffer:
  ------------------
  |  |   96|    228|#define Py_bf_getbuffer _Py_SLOT_COMPAT_VALUE(1, 88)
  |  |  ------------------
  |  |  |  |    7|    228|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  |  Branch (828:9): [True: 1, False: 378]
  ------------------
  829|    229|        case Py_bf_releasebuffer:
  ------------------
  |  |   97|    229|#define Py_bf_releasebuffer _Py_SLOT_COMPAT_VALUE(2, 89)
  |  |  ------------------
  |  |  |  |    7|    229|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  |  Branch (829:9): [True: 1, False: 378]
  ------------------
  830|    229|        case Py_mp_ass_subscript:
  ------------------
  |  |   98|    229|#define Py_mp_ass_subscript _Py_SLOT_COMPAT_VALUE(3, 90)
  |  |  ------------------
  |  |  |  |    7|    229|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  |  Branch (830:9): [True: 0, False: 379]
  ------------------
  831|    229|        case Py_mp_length:
  ------------------
  |  |   99|    229|#define Py_mp_length _Py_SLOT_COMPAT_VALUE(4, 91)
  |  |  ------------------
  |  |  |  |    7|    229|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  |  Branch (831:9): [True: 0, False: 379]
  ------------------
  832|    229|            return _PySlot_PROBLEM_DEPRECATED;
  833|     22|        case Py_mod_exec:
  ------------------
  |  |   93|     22|#define Py_mod_exec _Py_SLOT_COMPAT_VALUE(2, 85)
  |  |  ------------------
  |  |  |  |    7|     22|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  |  Branch (833:9): [True: 22, False: 357]
  ------------------
  834|     42|        case Py_mod_abi:
  ------------------
  |  |  117|     42|#define Py_mod_abi 109
  ------------------
  |  Branch (834:9): [True: 20, False: 359]
  ------------------
  835|     42|            return _PySlot_PROBLEM_ALLOW;
  836|    108|        default:
  ------------------
  |  Branch (836:9): [True: 108, False: 271]
  ------------------
  837|    108|            return _PySlot_PROBLEM_REJECT;
  838|    379|    }
  839|    379|}

listobject.c:PyStackRef_AsPyObjectSteal:
  542|     29|{
  543|     29|    assert(!PyStackRef_IsNull(ref));
  ------------------
  |  Branch (543:5): [True: 29, False: 0]
  ------------------
  544|     29|    assert(!PyStackRef_IsTaggedInt(ref));
  ------------------
  |  Branch (544:5): [True: 29, False: 0]
  ------------------
  545|     29|    if (PyStackRef_RefcountOnObject(ref)) {
  ------------------
  |  Branch (545:9): [True: 8, False: 21]
  ------------------
  546|      8|        return BITS_TO_PTR(ref);
  ------------------
  |  |  464|      8|#define BITS_TO_PTR(REF) ((PyObject *)((REF).bits))
  ------------------
  547|      8|    }
  548|     21|    else {
  549|     21|        return Py_NewRef(BITS_TO_PTR_MASKED(ref));
  ------------------
  |  |  550|     21|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     21|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     21|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  550|     21|    }
  551|     29|}
listobject.c:PyStackRef_IsTaggedInt:
  428|     29|{
  429|     29|    return (i.bits & Py_TAG_BITS) == Py_INT_TAG;
  ------------------
  |  |   56|     29|#define Py_TAG_BITS 3
  ------------------
                  return (i.bits & Py_TAG_BITS) == Py_INT_TAG;
  ------------------
  |  |   53|     29|#define Py_INT_TAG 3
  ------------------
  430|     29|}
listobject.c:PyStackRef_RefcountOnObject:
  522|     29|{
  523|     29|    return (ref.bits & Py_TAG_REFCNT) == 0;
  ------------------
  |  |   55|     29|#define Py_TAG_REFCNT 1
  ------------------
  524|     29|}
longobject.c:PyStackRef_FromPyObjectBorrow:
  615|      4|{
  616|      4|    assert(obj != NULL);
  ------------------
  |  Branch (616:5): [True: 4, False: 0]
  ------------------
  617|      4|    return (_PyStackRef){ .bits = (uintptr_t)obj | Py_TAG_REFCNT};
  ------------------
  |  |   55|      4|#define Py_TAG_REFCNT 1
  ------------------
  618|      4|}
dictobject.c:_PyStackRef_FromPyObjectNew:
  583|  3.72k|{
  584|  3.72k|    assert(obj != NULL);
  ------------------
  |  Branch (584:5): [True: 3.72k, False: 0]
  ------------------
  585|       |#ifdef Py_GIL_DISABLED
  586|       |    if (_PyObject_HasDeferredRefcount(obj)) {
  587|       |        return (_PyStackRef){ .bits = (uintptr_t)obj | Py_TAG_REFCNT };
  588|       |    }
  589|       |#else
  590|  3.72k|    if (_Py_IsImmortal(obj)) {
  ------------------
  |  |  137|  3.72k|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  3.72k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  3.72k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 193, False: 3.53k]
  |  |  ------------------
  ------------------
  591|    193|        return (_PyStackRef){ .bits = (uintptr_t)obj | Py_TAG_REFCNT };
  ------------------
  |  |   55|    193|#define Py_TAG_REFCNT 1
  ------------------
  592|    193|    }
  593|  3.53k|#endif
  594|  3.53k|    _Py_INCREF_MORTAL(obj);
  595|  3.53k|    _PyStackRef ref = (_PyStackRef){ .bits = (uintptr_t)obj };
  596|  3.53k|    PyStackRef_CheckValid(ref);
  ------------------
  |  |  510|  3.53k|#define PyStackRef_CheckValid(REF) ((void)0)
  ------------------
  597|  3.53k|    return ref;
  598|  3.72k|}
dictobject.c:PyStackRef_RefcountOnObject:
  522|    752|{
  523|    752|    return (ref.bits & Py_TAG_REFCNT) == 0;
  ------------------
  |  |   55|    752|#define Py_TAG_REFCNT 1
  ------------------
  524|    752|}
dictobject.c:PyStackRef_AsPyObjectBorrow:
  528|    752|{
  529|    752|    assert(!PyStackRef_IsTaggedInt(ref));
  ------------------
  |  Branch (529:5): [True: 752, False: 0]
  ------------------
  530|    752|    return BITS_TO_PTR_MASKED(ref);
  ------------------
  |  |  465|    752|#define BITS_TO_PTR_MASKED(REF) ((PyObject *)(((REF).bits) & (~Py_TAG_REFCNT)))
  |  |  ------------------
  |  |  |  |   55|    752|#define Py_TAG_REFCNT 1
  |  |  ------------------
  ------------------
  531|    752|}
dictobject.c:PyStackRef_IsTaggedInt:
  428|    752|{
  429|    752|    return (i.bits & Py_TAG_BITS) == Py_INT_TAG;
  ------------------
  |  |   56|    752|#define Py_TAG_BITS 3
  ------------------
                  return (i.bits & Py_TAG_BITS) == Py_INT_TAG;
  ------------------
  |  |   53|    752|#define Py_INT_TAG 3
  ------------------
  430|    752|}
dictobject.c:PyStackRef_CLOSE:
  679|    752|{
  680|    752|    assert(!PyStackRef_IsNull(ref));
  ------------------
  |  Branch (680:5): [True: 752, False: 0]
  ------------------
  681|    752|    if (PyStackRef_RefcountOnObject(ref)) {
  ------------------
  |  Branch (681:9): [True: 752, False: 0]
  ------------------
  682|    752|        Py_DECREF_MORTAL(BITS_TO_PTR(ref));
  ------------------
  |  |  460|    752|#define Py_DECREF_MORTAL(op) Py_DECREF_MORTAL(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    752|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    752|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  683|    752|    }
  684|    752|}
object.c:PyStackRef_FromPyObjectSteal:
  555|    800|{
  556|    800|    assert(obj != NULL);
  ------------------
  |  Branch (556:5): [True: 800, False: 0]
  ------------------
  557|       |#ifdef Py_GIL_DISABLED
  558|       |    return (_PyStackRef){ .bits = (uintptr_t)obj };
  559|       |#else
  560|    800|#  if SIZEOF_VOID_P > 4
  561|    800|    unsigned int tag = obj->ob_flags & Py_TAG_REFCNT;
  ------------------
  |  |   55|    800|#define Py_TAG_REFCNT 1
  ------------------
  562|       |#  else
  563|       |    unsigned int tag = _Py_IsImmortal(obj) ? Py_TAG_REFCNT : 0;
  564|       |#  endif
  565|    800|    _PyStackRef ref = ((_PyStackRef){.bits = ((uintptr_t)(obj)) | tag});
  566|    800|    PyStackRef_CheckValid(ref);
  ------------------
  |  |  510|    800|#define PyStackRef_CheckValid(REF) ((void)0)
  ------------------
  567|    800|    return ref;
  568|    800|#endif
  569|    800|}
object.c:PyStackRef_AsPyObjectBorrow:
  528|  4.00k|{
  529|  4.00k|    assert(!PyStackRef_IsTaggedInt(ref));
  ------------------
  |  Branch (529:5): [True: 4.00k, False: 0]
  ------------------
  530|  4.00k|    return BITS_TO_PTR_MASKED(ref);
  ------------------
  |  |  465|  4.00k|#define BITS_TO_PTR_MASKED(REF) ((PyObject *)(((REF).bits) & (~Py_TAG_REFCNT)))
  |  |  ------------------
  |  |  |  |   55|  4.00k|#define Py_TAG_REFCNT 1
  |  |  ------------------
  ------------------
  531|  4.00k|}
object.c:PyStackRef_XCLOSE:
  701|  3.55k|{
  702|  3.55k|    assert(ref.bits != 0);
  ------------------
  |  Branch (702:5): [True: 3.55k, False: 0]
  ------------------
  703|  3.55k|    if (PyStackRef_RefcountOnObject(ref)) {
  ------------------
  |  Branch (703:9): [True: 749, False: 2.80k]
  ------------------
  704|    749|        assert(!PyStackRef_IsNull(ref));
  ------------------
  |  Branch (704:9): [True: 749, False: 0]
  ------------------
  705|    749|        Py_DECREF_MORTAL(BITS_TO_PTR(ref));
  ------------------
  |  |  460|    749|#define Py_DECREF_MORTAL(op) Py_DECREF_MORTAL(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    749|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    749|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  706|    749|    }
  707|  3.55k|}
object.c:PyStackRef_RefcountOnObject:
  522|  3.56k|{
  523|  3.56k|    return (ref.bits & Py_TAG_REFCNT) == 0;
  ------------------
  |  |   55|  3.56k|#define Py_TAG_REFCNT 1
  ------------------
  524|  3.56k|}
object.c:_PyThreadState_PushCStackRef:
  766|  3.30k|{
  767|       |#ifdef Py_GIL_DISABLED
  768|       |    _PyThreadStateImpl *tstate_impl = (_PyThreadStateImpl *)tstate;
  769|       |    ref->next = tstate_impl->c_stack_refs;
  770|       |    tstate_impl->c_stack_refs = ref;
  771|       |#endif
  772|  3.30k|    ref->ref = PyStackRef_NULL;
  773|  3.30k|}
object.c:PyStackRef_AsPyObjectSteal:
  542|      3|{
  543|      3|    assert(!PyStackRef_IsNull(ref));
  ------------------
  |  Branch (543:5): [True: 3, False: 0]
  ------------------
  544|      3|    assert(!PyStackRef_IsTaggedInt(ref));
  ------------------
  |  Branch (544:5): [True: 3, False: 0]
  ------------------
  545|      3|    if (PyStackRef_RefcountOnObject(ref)) {
  ------------------
  |  Branch (545:9): [True: 0, False: 3]
  ------------------
  546|      0|        return BITS_TO_PTR(ref);
  ------------------
  |  |  464|      0|#define BITS_TO_PTR(REF) ((PyObject *)((REF).bits))
  ------------------
  547|      0|    }
  548|      3|    else {
  549|      3|        return Py_NewRef(BITS_TO_PTR_MASKED(ref));
  ------------------
  |  |  550|      3|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  550|      3|    }
  551|      3|}
object.c:_PyThreadState_PopCStackRef:
  784|  3.30k|{
  785|       |#ifdef Py_GIL_DISABLED
  786|       |    _PyThreadStateImpl *tstate_impl = (_PyThreadStateImpl *)tstate;
  787|       |    assert(tstate_impl->c_stack_refs == ref);
  788|       |    tstate_impl->c_stack_refs = ref->next;
  789|       |#endif
  790|  3.30k|    PyStackRef_XCLOSE(ref->ref);
  791|  3.30k|}
object.c:PyStackRef_IsTaggedInt:
  428|  4.00k|{
  429|  4.00k|    return (i.bits & Py_TAG_BITS) == Py_INT_TAG;
  ------------------
  |  |   56|  4.00k|#define Py_TAG_BITS 3
  ------------------
                  return (i.bits & Py_TAG_BITS) == Py_INT_TAG;
  ------------------
  |  |   53|  4.00k|#define Py_INT_TAG 3
  ------------------
  430|  4.00k|}
tupleobject.c:PyStackRef_AsPyObjectSteal:
  542|    842|{
  543|    842|    assert(!PyStackRef_IsNull(ref));
  ------------------
  |  Branch (543:5): [True: 842, False: 0]
  ------------------
  544|    842|    assert(!PyStackRef_IsTaggedInt(ref));
  ------------------
  |  Branch (544:5): [True: 842, False: 0]
  ------------------
  545|    842|    if (PyStackRef_RefcountOnObject(ref)) {
  ------------------
  |  Branch (545:9): [True: 227, False: 615]
  ------------------
  546|    227|        return BITS_TO_PTR(ref);
  ------------------
  |  |  464|    227|#define BITS_TO_PTR(REF) ((PyObject *)((REF).bits))
  ------------------
  547|    227|    }
  548|    615|    else {
  549|    615|        return Py_NewRef(BITS_TO_PTR_MASKED(ref));
  ------------------
  |  |  550|    615|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    615|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    615|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  550|    615|    }
  551|    842|}
tupleobject.c:PyStackRef_IsTaggedInt:
  428|    842|{
  429|    842|    return (i.bits & Py_TAG_BITS) == Py_INT_TAG;
  ------------------
  |  |   56|    842|#define Py_TAG_BITS 3
  ------------------
                  return (i.bits & Py_TAG_BITS) == Py_INT_TAG;
  ------------------
  |  |   53|    842|#define Py_INT_TAG 3
  ------------------
  430|    842|}
tupleobject.c:PyStackRef_RefcountOnObject:
  522|    842|{
  523|    842|    return (ref.bits & Py_TAG_REFCNT) == 0;
  ------------------
  |  |   55|    842|#define Py_TAG_REFCNT 1
  ------------------
  524|    842|}
typeobject.c:PyStackRef_AsPyObjectBorrow:
  528|  5.06k|{
  529|  5.06k|    assert(!PyStackRef_IsTaggedInt(ref));
  ------------------
  |  Branch (529:5): [True: 5.06k, False: 0]
  ------------------
  530|  5.06k|    return BITS_TO_PTR_MASKED(ref);
  ------------------
  |  |  465|  5.06k|#define BITS_TO_PTR_MASKED(REF) ((PyObject *)(((REF).bits) & (~Py_TAG_REFCNT)))
  |  |  ------------------
  |  |  |  |   55|  5.06k|#define Py_TAG_REFCNT 1
  |  |  ------------------
  ------------------
  531|  5.06k|}
typeobject.c:PyStackRef_IsTaggedInt:
  428|  5.79k|{
  429|  5.79k|    return (i.bits & Py_TAG_BITS) == Py_INT_TAG;
  ------------------
  |  |   56|  5.79k|#define Py_TAG_BITS 3
  ------------------
                  return (i.bits & Py_TAG_BITS) == Py_INT_TAG;
  ------------------
  |  |   53|  5.79k|#define Py_INT_TAG 3
  ------------------
  430|  5.79k|}
typeobject.c:PyStackRef_XCLOSE:
  701|  12.1k|{
  702|  12.1k|    assert(ref.bits != 0);
  ------------------
  |  Branch (702:5): [True: 12.1k, False: 0]
  ------------------
  703|  12.1k|    if (PyStackRef_RefcountOnObject(ref)) {
  ------------------
  |  Branch (703:9): [True: 9.92k, False: 2.18k]
  ------------------
  704|  9.92k|        assert(!PyStackRef_IsNull(ref));
  ------------------
  |  Branch (704:9): [True: 9.92k, False: 0]
  ------------------
  705|  9.92k|        Py_DECREF_MORTAL(BITS_TO_PTR(ref));
  ------------------
  |  |  460|  9.92k|#define Py_DECREF_MORTAL(op) Py_DECREF_MORTAL(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  9.92k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  9.92k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  706|  9.92k|    }
  707|  12.1k|}
typeobject.c:PyStackRef_RefcountOnObject:
  522|  14.5k|{
  523|  14.5k|    return (ref.bits & Py_TAG_REFCNT) == 0;
  ------------------
  |  |   55|  14.5k|#define Py_TAG_REFCNT 1
  ------------------
  524|  14.5k|}
typeobject.c:PyStackRef_FromPyObjectSteal:
  555|    524|{
  556|    524|    assert(obj != NULL);
  ------------------
  |  Branch (556:5): [True: 524, False: 0]
  ------------------
  557|       |#ifdef Py_GIL_DISABLED
  558|       |    return (_PyStackRef){ .bits = (uintptr_t)obj };
  559|       |#else
  560|    524|#  if SIZEOF_VOID_P > 4
  561|    524|    unsigned int tag = obj->ob_flags & Py_TAG_REFCNT;
  ------------------
  |  |   55|    524|#define Py_TAG_REFCNT 1
  ------------------
  562|       |#  else
  563|       |    unsigned int tag = _Py_IsImmortal(obj) ? Py_TAG_REFCNT : 0;
  564|       |#  endif
  565|    524|    _PyStackRef ref = ((_PyStackRef){.bits = ((uintptr_t)(obj)) | tag});
  566|    524|    PyStackRef_CheckValid(ref);
  ------------------
  |  |  510|    524|#define PyStackRef_CheckValid(REF) ((void)0)
  ------------------
  567|    524|    return ref;
  568|    524|#endif
  569|    524|}
typeobject.c:PyStackRef_AsPyObjectSteal:
  542|    727|{
  543|    727|    assert(!PyStackRef_IsNull(ref));
  ------------------
  |  Branch (543:5): [True: 727, False: 0]
  ------------------
  544|    727|    assert(!PyStackRef_IsTaggedInt(ref));
  ------------------
  |  Branch (544:5): [True: 727, False: 0]
  ------------------
  545|    727|    if (PyStackRef_RefcountOnObject(ref)) {
  ------------------
  |  Branch (545:9): [True: 722, False: 5]
  ------------------
  546|    722|        return BITS_TO_PTR(ref);
  ------------------
  |  |  464|    722|#define BITS_TO_PTR(REF) ((PyObject *)((REF).bits))
  ------------------
  547|    722|    }
  548|      5|    else {
  549|      5|        return Py_NewRef(BITS_TO_PTR_MASKED(ref));
  ------------------
  |  |  550|      5|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  550|      5|    }
  551|    727|}
typeobject.c:_PyStackRef_FromPyObjectNew:
  583|  12.1k|{
  584|  12.1k|    assert(obj != NULL);
  ------------------
  |  Branch (584:5): [True: 12.1k, False: 0]
  ------------------
  585|       |#ifdef Py_GIL_DISABLED
  586|       |    if (_PyObject_HasDeferredRefcount(obj)) {
  587|       |        return (_PyStackRef){ .bits = (uintptr_t)obj | Py_TAG_REFCNT };
  588|       |    }
  589|       |#else
  590|  12.1k|    if (_Py_IsImmortal(obj)) {
  ------------------
  |  |  137|  12.1k|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  12.1k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  12.1k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 1.04k, False: 11.1k]
  |  |  ------------------
  ------------------
  591|  1.04k|        return (_PyStackRef){ .bits = (uintptr_t)obj | Py_TAG_REFCNT };
  ------------------
  |  |   55|  1.04k|#define Py_TAG_REFCNT 1
  ------------------
  592|  1.04k|    }
  593|  11.1k|#endif
  594|  11.1k|    _Py_INCREF_MORTAL(obj);
  595|  11.1k|    _PyStackRef ref = (_PyStackRef){ .bits = (uintptr_t)obj };
  596|  11.1k|    PyStackRef_CheckValid(ref);
  ------------------
  |  |  510|  11.1k|#define PyStackRef_CheckValid(REF) ((void)0)
  ------------------
  597|  11.1k|    return ref;
  598|  12.1k|}
typeobject.c:_PyThreadState_PushCStackRef:
  766|  12.3k|{
  767|       |#ifdef Py_GIL_DISABLED
  768|       |    _PyThreadStateImpl *tstate_impl = (_PyThreadStateImpl *)tstate;
  769|       |    ref->next = tstate_impl->c_stack_refs;
  770|       |    tstate_impl->c_stack_refs = ref;
  771|       |#endif
  772|  12.3k|    ref->ref = PyStackRef_NULL;
  773|  12.3k|}
typeobject.c:_PyThreadState_PopCStackRef:
  784|  11.6k|{
  785|       |#ifdef Py_GIL_DISABLED
  786|       |    _PyThreadStateImpl *tstate_impl = (_PyThreadStateImpl *)tstate;
  787|       |    assert(tstate_impl->c_stack_refs == ref);
  788|       |    tstate_impl->c_stack_refs = ref->next;
  789|       |#endif
  790|  11.6k|    PyStackRef_XCLOSE(ref->ref);
  791|  11.6k|}
typeobject.c:_PyThreadState_PopCStackRefSteal:
  795|    771|{
  796|       |#ifdef Py_GIL_DISABLED
  797|       |    _PyThreadStateImpl *tstate_impl = (_PyThreadStateImpl *)tstate;
  798|       |    assert(tstate_impl->c_stack_refs == ref);
  799|       |    tstate_impl->c_stack_refs = ref->next;
  800|       |#endif
  801|    771|    return ref->ref;
  802|    771|}
typeobject.c:PyStackRef_CLOSE:
  679|  1.69k|{
  680|  1.69k|    assert(!PyStackRef_IsNull(ref));
  ------------------
  |  Branch (680:5): [True: 1.69k, False: 0]
  ------------------
  681|  1.69k|    if (PyStackRef_RefcountOnObject(ref)) {
  ------------------
  |  Branch (681:9): [True: 1.68k, False: 9]
  ------------------
  682|  1.68k|        Py_DECREF_MORTAL(BITS_TO_PTR(ref));
  ------------------
  |  |  460|  1.68k|#define Py_DECREF_MORTAL(op) Py_DECREF_MORTAL(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  1.68k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.68k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  683|  1.68k|    }
  684|  1.69k|}
typeobject.c:_PyThreadState_PushCStackRefNew:
  777|    177|{
  778|    177|    _PyThreadState_PushCStackRef(tstate, ref);
  779|    177|    ref->ref = PyStackRef_FromPyObjectNew(obj);
  ------------------
  |  |  599|    177|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    177|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    177|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  780|    177|}
ceval.c:_PyThreadState_PushCStackRef:
  766|    630|{
  767|       |#ifdef Py_GIL_DISABLED
  768|       |    _PyThreadStateImpl *tstate_impl = (_PyThreadStateImpl *)tstate;
  769|       |    ref->next = tstate_impl->c_stack_refs;
  770|       |    tstate_impl->c_stack_refs = ref;
  771|       |#endif
  772|    630|    ref->ref = PyStackRef_NULL;
  773|    630|}
ceval.c:PyStackRef_FromPyObjectBorrow:
  615|  4.58k|{
  616|  4.58k|    assert(obj != NULL);
  ------------------
  |  Branch (616:5): [True: 4.58k, False: 0]
  ------------------
  617|  4.58k|    return (_PyStackRef){ .bits = (uintptr_t)obj | Py_TAG_REFCNT};
  ------------------
  |  |   55|  4.58k|#define Py_TAG_REFCNT 1
  ------------------
  618|  4.58k|}
ceval.c:PyStackRef_AsPyObjectBorrow:
  528|  76.3k|{
  529|  76.3k|    assert(!PyStackRef_IsTaggedInt(ref));
  ------------------
  |  Branch (529:5): [True: 76.3k, False: 0]
  ------------------
  530|  76.3k|    return BITS_TO_PTR_MASKED(ref);
  ------------------
  |  |  465|  76.3k|#define BITS_TO_PTR_MASKED(REF) ((PyObject *)(((REF).bits) & (~Py_TAG_REFCNT)))
  |  |  ------------------
  |  |  |  |   55|  76.3k|#define Py_TAG_REFCNT 1
  |  |  ------------------
  ------------------
  531|  76.3k|}
ceval.c:PyStackRef_XCLOSE:
  701|  13.5k|{
  702|  13.5k|    assert(ref.bits != 0);
  ------------------
  |  Branch (702:5): [True: 13.5k, False: 0]
  ------------------
  703|  13.5k|    if (PyStackRef_RefcountOnObject(ref)) {
  ------------------
  |  Branch (703:9): [True: 4.82k, False: 8.73k]
  ------------------
  704|  4.82k|        assert(!PyStackRef_IsNull(ref));
  ------------------
  |  Branch (704:9): [True: 4.82k, False: 0]
  ------------------
  705|  4.82k|        Py_DECREF_MORTAL(BITS_TO_PTR(ref));
  ------------------
  |  |  460|  4.82k|#define Py_DECREF_MORTAL(op) Py_DECREF_MORTAL(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  4.82k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  4.82k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  706|  4.82k|    }
  707|  13.5k|}
ceval.c:PyStackRef_RefcountOnObject:
  522|  30.8k|{
  523|  30.8k|    return (ref.bits & Py_TAG_REFCNT) == 0;
  ------------------
  |  |   55|  30.8k|#define Py_TAG_REFCNT 1
  ------------------
  524|  30.8k|}
ceval.c:PyStackRef_CLOSE:
  679|  10.6k|{
  680|  10.6k|    assert(!PyStackRef_IsNull(ref));
  ------------------
  |  Branch (680:5): [True: 10.6k, False: 0]
  ------------------
  681|  10.6k|    if (PyStackRef_RefcountOnObject(ref)) {
  ------------------
  |  Branch (681:9): [True: 5.12k, False: 5.48k]
  ------------------
  682|  5.12k|        Py_DECREF_MORTAL(BITS_TO_PTR(ref));
  ------------------
  |  |  460|  5.12k|#define Py_DECREF_MORTAL(op) Py_DECREF_MORTAL(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  5.12k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  5.12k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  683|  5.12k|    }
  684|  10.6k|}
ceval.c:_PyThreadState_PopCStackRefSteal:
  795|    630|{
  796|       |#ifdef Py_GIL_DISABLED
  797|       |    _PyThreadStateImpl *tstate_impl = (_PyThreadStateImpl *)tstate;
  798|       |    assert(tstate_impl->c_stack_refs == ref);
  799|       |    tstate_impl->c_stack_refs = ref->next;
  800|       |#endif
  801|    630|    return ref->ref;
  802|    630|}
ceval.c:PyStackRef_TYPE:
  727|    942|PyStackRef_TYPE(_PyStackRef stackref) {
  728|    942|    if (PyStackRef_IsTaggedInt(stackref)) {
  ------------------
  |  Branch (728:9): [True: 0, False: 942]
  ------------------
  729|      0|        return &PyLong_Type;
  730|      0|    }
  731|    942|    return Py_TYPE(PyStackRef_AsPyObjectBorrow(stackref));
  ------------------
  |  |  213|    942|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    942|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    942|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  732|    942|}
ceval.c:PyStackRef_TagInt:
  434|    351|{
  435|    351|    assert(Py_ARITHMETIC_RIGHT_SHIFT(intptr_t, (intptr_t)(((uintptr_t)i) << Py_TAGGED_SHIFT),
  ------------------
  |  Branch (435:5): [True: 351, False: 0]
  ------------------
  436|    351|                                     Py_TAGGED_SHIFT) == i);
  437|    351|    return (_PyStackRef){ .bits = ((((uintptr_t)i) << Py_TAGGED_SHIFT) | Py_INT_TAG) };
  ------------------
  |  |   58|    351|#define Py_TAGGED_SHIFT 2
  ------------------
                  return (_PyStackRef){ .bits = ((((uintptr_t)i) << Py_TAGGED_SHIFT) | Py_INT_TAG) };
  ------------------
  |  |   53|    351|#define Py_INT_TAG 3
  ------------------
  438|    351|}
ceval.c:PyStackRef_FromPyObjectSteal:
  555|  5.65k|{
  556|  5.65k|    assert(obj != NULL);
  ------------------
  |  Branch (556:5): [True: 5.65k, False: 0]
  ------------------
  557|       |#ifdef Py_GIL_DISABLED
  558|       |    return (_PyStackRef){ .bits = (uintptr_t)obj };
  559|       |#else
  560|  5.65k|#  if SIZEOF_VOID_P > 4
  561|  5.65k|    unsigned int tag = obj->ob_flags & Py_TAG_REFCNT;
  ------------------
  |  |   55|  5.65k|#define Py_TAG_REFCNT 1
  ------------------
  562|       |#  else
  563|       |    unsigned int tag = _Py_IsImmortal(obj) ? Py_TAG_REFCNT : 0;
  564|       |#  endif
  565|  5.65k|    _PyStackRef ref = ((_PyStackRef){.bits = ((uintptr_t)(obj)) | tag});
  566|  5.65k|    PyStackRef_CheckValid(ref);
  ------------------
  |  |  510|  5.65k|#define PyStackRef_CheckValid(REF) ((void)0)
  ------------------
  567|  5.65k|    return ref;
  568|  5.65k|#endif
  569|  5.65k|}
ceval.c:PyStackRef_CLOSE_SPECIALIZED:
  689|  2.30k|{
  690|  2.30k|    assert(!PyStackRef_IsNull(ref));
  ------------------
  |  Branch (690:5): [True: 2.30k, False: 0]
  ------------------
  691|  2.30k|    if (PyStackRef_RefcountOnObject(ref)) {
  ------------------
  |  Branch (691:9): [True: 228, False: 2.07k]
  ------------------
  692|    228|        Py_DECREF_MORTAL_SPECIALIZED(BITS_TO_PTR(ref), destruct);
  ------------------
  |  |  471|    228|#define Py_DECREF_MORTAL_SPECIALIZED(op, destruct) Py_DECREF_MORTAL_SPECIALIZED(_PyObject_CAST(op), destruct)
  |  |  ------------------
  |  |  |  |  171|    228|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    228|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  693|    228|    }
  694|  2.30k|}
ceval.c:PyStackRef_IsHeapSafe:
  638|  1.87k|{
  639|       |#ifdef Py_GIL_DISABLED
  640|       |    if ((ref.bits & Py_TAG_BITS) != Py_TAG_REFCNT) {
  641|       |        return true;
  642|       |    }
  643|       |    PyObject *obj = BITS_TO_PTR_MASKED(ref);
  644|       |    return obj == NULL || _PyObject_HasDeferredRefcount(obj);
  645|       |#else
  646|  1.87k|    return (ref.bits & Py_TAG_BITS) != Py_TAG_REFCNT || ref.bits == PyStackRef_NULL_BITS || _Py_IsImmortal(BITS_TO_PTR_MASKED(ref));
  ------------------
  |  |   56|  1.87k|#define Py_TAG_BITS 3
  ------------------
                  return (ref.bits & Py_TAG_BITS) != Py_TAG_REFCNT || ref.bits == PyStackRef_NULL_BITS || _Py_IsImmortal(BITS_TO_PTR_MASKED(ref));
  ------------------
  |  |   55|  3.74k|#define Py_TAG_REFCNT 1
  ------------------
                  return (ref.bits & Py_TAG_BITS) != Py_TAG_REFCNT || ref.bits == PyStackRef_NULL_BITS || _Py_IsImmortal(BITS_TO_PTR_MASKED(ref));
  ------------------
  |  |  467|  1.45k|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  ------------------
  |  |  |  |   55|  3.33k|#define Py_TAG_REFCNT 1
  |  |  ------------------
  ------------------
                  return (ref.bits & Py_TAG_BITS) != Py_TAG_REFCNT || ref.bits == PyStackRef_NULL_BITS || _Py_IsImmortal(BITS_TO_PTR_MASKED(ref));
  ------------------
  |  |  137|  3.31k|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  1.44k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.44k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 1.05k, False: 386]
  |  |  ------------------
  ------------------
  |  Branch (646:12): [True: 415, False: 1.45k]
  |  Branch (646:57): [True: 18, False: 1.44k]
  ------------------
  647|  1.87k|#endif
  648|  1.87k|}
ceval.c:PyStackRef_AsPyObjectSteal:
  542|  2.94k|{
  543|  2.94k|    assert(!PyStackRef_IsNull(ref));
  ------------------
  |  Branch (543:5): [True: 2.94k, False: 0]
  ------------------
  544|  2.94k|    assert(!PyStackRef_IsTaggedInt(ref));
  ------------------
  |  Branch (544:5): [True: 2.94k, False: 0]
  ------------------
  545|  2.94k|    if (PyStackRef_RefcountOnObject(ref)) {
  ------------------
  |  Branch (545:9): [True: 820, False: 2.12k]
  ------------------
  546|    820|        return BITS_TO_PTR(ref);
  ------------------
  |  |  464|    820|#define BITS_TO_PTR(REF) ((PyObject *)((REF).bits))
  ------------------
  547|    820|    }
  548|  2.12k|    else {
  549|  2.12k|        return Py_NewRef(BITS_TO_PTR_MASKED(ref));
  ------------------
  |  |  550|  2.12k|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|  2.12k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.12k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  550|  2.12k|    }
  551|  2.94k|}
ceval.c:_PyStackRef_FromPyObjectNew:
  583|  11.6k|{
  584|  11.6k|    assert(obj != NULL);
  ------------------
  |  Branch (584:5): [True: 11.6k, False: 0]
  ------------------
  585|       |#ifdef Py_GIL_DISABLED
  586|       |    if (_PyObject_HasDeferredRefcount(obj)) {
  587|       |        return (_PyStackRef){ .bits = (uintptr_t)obj | Py_TAG_REFCNT };
  588|       |    }
  589|       |#else
  590|  11.6k|    if (_Py_IsImmortal(obj)) {
  ------------------
  |  |  137|  11.6k|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  11.6k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  11.6k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 3.51k, False: 8.09k]
  |  |  ------------------
  ------------------
  591|  3.51k|        return (_PyStackRef){ .bits = (uintptr_t)obj | Py_TAG_REFCNT };
  ------------------
  |  |   55|  3.51k|#define Py_TAG_REFCNT 1
  ------------------
  592|  3.51k|    }
  593|  8.09k|#endif
  594|  8.09k|    _Py_INCREF_MORTAL(obj);
  595|  8.09k|    _PyStackRef ref = (_PyStackRef){ .bits = (uintptr_t)obj };
  596|  8.09k|    PyStackRef_CheckValid(ref);
  ------------------
  |  |  510|  8.09k|#define PyStackRef_CheckValid(REF) ((void)0)
  ------------------
  597|  8.09k|    return ref;
  598|  11.6k|}
ceval.c:PyStackRef_Wrap:
  386|    915|{
  387|    915|    assert(ptr != NULL);
  ------------------
  |  Branch (387:5): [True: 915, False: 0]
  ------------------
  388|       |#ifdef Py_DEBUG
  389|       |    assert(((uintptr_t)ptr & Py_TAG_BITS) == 0);
  390|       |    return (_PyStackRef){ .bits = ((uintptr_t)ptr) | Py_TAG_INVALID };
  391|       |#else
  392|    915|    return (_PyStackRef){ .bits = (uintptr_t)ptr };
  393|    915|#endif
  394|    915|}
ceval.c:PyStackRef_Unwrap:
  398|    915|{
  399|       |#ifdef Py_DEBUG
  400|       |    assert ((ref.bits & Py_TAG_BITS) == Py_TAG_INVALID);
  401|       |    return (void *)(ref.bits & ~Py_TAG_BITS);
  402|       |#else
  403|    915|    return (void *)(ref.bits);
  404|    915|#endif
  405|    915|}
ceval.c:PyStackRef_FromPyObjectStealMortal:
  573|    554|{
  574|    554|    assert(obj != NULL);
  ------------------
  |  Branch (574:5): [True: 554, False: 0]
  ------------------
  575|    554|    assert(!_Py_IsImmortal(obj));
  ------------------
  |  Branch (575:5): [True: 554, False: 0]
  ------------------
  576|    554|    _PyStackRef ref = (_PyStackRef){ .bits = (uintptr_t)obj };
  577|    554|    PyStackRef_CheckValid(ref);
  ------------------
  |  |  510|    554|#define PyStackRef_CheckValid(REF) ((void)0)
  ------------------
  578|    554|    return ref;
  579|    554|}
ceval.c:PyStackRef_DUP:
  627|  1.39k|{
  628|  1.39k|    assert(!PyStackRef_IsNull(ref));
  ------------------
  |  Branch (628:5): [True: 1.39k, False: 0]
  ------------------
  629|  1.39k|    if (PyStackRef_RefcountOnObject(ref)) {
  ------------------
  |  Branch (629:9): [True: 775, False: 620]
  ------------------
  630|    775|        _Py_INCREF_MORTAL(BITS_TO_PTR(ref));
  ------------------
  |  |  464|    775|#define BITS_TO_PTR(REF) ((PyObject *)((REF).bits))
  ------------------
  631|    775|    }
  632|  1.39k|    return ref;
  633|  1.39k|}
ceval.c:_PyStackRef_CloseStack:
  852|    920|{
  853|       |    // arguments is a pointer into the GC visible stack,
  854|       |    // so we must NULL out values as we clear them.
  855|  2.86k|    for (int i = total_args-1; i >= 0; i--) {
  ------------------
  |  Branch (855:32): [True: 1.94k, False: 920]
  ------------------
  856|  1.94k|        _PyStackRef tmp = arguments[i];
  857|  1.94k|        arguments[i] = PyStackRef_NULL;
  858|  1.94k|        PyStackRef_CLOSE(tmp);
  859|  1.94k|    }
  860|    920|}
ceval.c:PyStackRef_IsValid:
  421|     54|{
  422|       |    /* Invalid values are ERROR and NULL */
  423|     54|    return ref.bits >= Py_INT_TAG;
  ------------------
  |  |   53|     54|#define Py_INT_TAG 3
  ------------------
  424|     54|}
ceval.c:PyStackRef_IsError:
  409|     53|{
  410|     53|    return ref.bits == Py_TAG_INVALID;
  ------------------
  |  |   54|     53|#define Py_TAG_INVALID 2
  ------------------
  411|     53|}
ceval.c:PyStackRef_IsTaggedInt:
  428|  86.0k|{
  429|  86.0k|    return (i.bits & Py_TAG_BITS) == Py_INT_TAG;
  ------------------
  |  |   56|  86.0k|#define Py_TAG_BITS 3
  ------------------
                  return (i.bits & Py_TAG_BITS) == Py_INT_TAG;
  ------------------
  |  |   53|  86.0k|#define Py_INT_TAG 3
  ------------------
  430|  86.0k|}
ceval.c:PyStackRef_UntagInt:
  442|  1.58k|{
  443|  1.58k|    assert(PyStackRef_IsTaggedInt(i));
  ------------------
  |  Branch (443:5): [True: 1.58k, False: 0]
  ------------------
  444|  1.58k|    intptr_t val = (intptr_t)i.bits;
  445|  1.58k|    return Py_ARITHMETIC_RIGHT_SHIFT(intptr_t, val, Py_TAGGED_SHIFT);
  ------------------
  |  |  226|  1.58k|#define Py_ARITHMETIC_RIGHT_SHIFT(TYPE, I, J) ((I) >> (J))
  ------------------
  446|  1.58k|}
ceval.c:PyStackRef_IncrementTaggedIntNoOverflow:
  451|    709|{
  452|    709|    assert((ref.bits & Py_TAG_BITS) == Py_INT_TAG); // Is tagged int
  ------------------
  |  Branch (452:5): [True: 709, False: 0]
  ------------------
  453|    709|    assert((ref.bits & (~Py_TAG_BITS)) != (INTPTR_MAX & (~Py_TAG_BITS))); // Isn't about to overflow
  ------------------
  |  Branch (453:5): [True: 709, False: 0]
  ------------------
  454|    709|    return (_PyStackRef){ .bits = ref.bits + (1 << Py_TAGGED_SHIFT) };
  ------------------
  |  |   58|    709|#define Py_TAGGED_SHIFT 2
  ------------------
  455|    709|}
ceval.c:PyStackRef_MakeHeapSafe:
  652|  1.87k|{
  653|  1.87k|    if (PyStackRef_IsHeapSafe(ref)) {
  ------------------
  |  Branch (653:9): [True: 1.48k, False: 384]
  ------------------
  654|  1.48k|        return ref;
  655|  1.48k|    }
  656|    384|    PyObject *obj = BITS_TO_PTR_MASKED(ref);
  ------------------
  |  |  465|    384|#define BITS_TO_PTR_MASKED(REF) ((PyObject *)(((REF).bits) & (~Py_TAG_REFCNT)))
  |  |  ------------------
  |  |  |  |   55|    384|#define Py_TAG_REFCNT 1
  |  |  ------------------
  ------------------
  657|    384|    Py_INCREF(obj);
  ------------------
  |  |  310|    384|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    384|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    384|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  658|    384|    ref.bits = (uintptr_t)obj;
  659|    384|    PyStackRef_CheckValid(ref);
  ------------------
  |  |  510|    384|#define PyStackRef_CheckValid(REF) ((void)0)
  ------------------
  660|    384|    return ref;
  661|  1.87k|}
ceval.c:PyStackRef_Borrow:
  535|  8.30k|{
  536|  8.30k|    return (_PyStackRef){ .bits = ref.bits | Py_TAG_REFCNT };
  ------------------
  |  |   55|  8.30k|#define Py_TAG_REFCNT 1
  ------------------
  537|  8.30k|}
frame.c:PyStackRef_IsTaggedInt:
  428|    205|{
  429|    205|    return (i.bits & Py_TAG_BITS) == Py_INT_TAG;
  ------------------
  |  |   56|    205|#define Py_TAG_BITS 3
  ------------------
                  return (i.bits & Py_TAG_BITS) == Py_INT_TAG;
  ------------------
  |  |   53|    205|#define Py_INT_TAG 3
  ------------------
  430|    205|}
frame.c:PyStackRef_XCLOSE:
  701|  6.82k|{
  702|  6.82k|    assert(ref.bits != 0);
  ------------------
  |  Branch (702:5): [True: 6.82k, False: 0]
  ------------------
  703|  6.82k|    if (PyStackRef_RefcountOnObject(ref)) {
  ------------------
  |  Branch (703:9): [True: 4.37k, False: 2.45k]
  ------------------
  704|  4.37k|        assert(!PyStackRef_IsNull(ref));
  ------------------
  |  Branch (704:9): [True: 4.37k, False: 0]
  ------------------
  705|  4.37k|        Py_DECREF_MORTAL(BITS_TO_PTR(ref));
  ------------------
  |  |  460|  4.37k|#define Py_DECREF_MORTAL(op) Py_DECREF_MORTAL(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  4.37k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  4.37k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  706|  4.37k|    }
  707|  6.82k|}
frame.c:PyStackRef_RefcountOnObject:
  522|  6.83k|{
  523|  6.83k|    return (ref.bits & Py_TAG_REFCNT) == 0;
  ------------------
  |  |   55|  6.83k|#define Py_TAG_REFCNT 1
  ------------------
  524|  6.83k|}
frame.c:PyStackRef_MakeHeapSafe:
  652|     96|{
  653|     96|    if (PyStackRef_IsHeapSafe(ref)) {
  ------------------
  |  Branch (653:9): [True: 90, False: 6]
  ------------------
  654|     90|        return ref;
  655|     90|    }
  656|      6|    PyObject *obj = BITS_TO_PTR_MASKED(ref);
  ------------------
  |  |  465|      6|#define BITS_TO_PTR_MASKED(REF) ((PyObject *)(((REF).bits) & (~Py_TAG_REFCNT)))
  |  |  ------------------
  |  |  |  |   55|      6|#define Py_TAG_REFCNT 1
  |  |  ------------------
  ------------------
  657|      6|    Py_INCREF(obj);
  ------------------
  |  |  310|      6|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      6|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  658|      6|    ref.bits = (uintptr_t)obj;
  659|      6|    PyStackRef_CheckValid(ref);
  ------------------
  |  |  510|      6|#define PyStackRef_CheckValid(REF) ((void)0)
  ------------------
  660|      6|    return ref;
  661|     96|}
frame.c:PyStackRef_IsHeapSafe:
  638|     96|{
  639|       |#ifdef Py_GIL_DISABLED
  640|       |    if ((ref.bits & Py_TAG_BITS) != Py_TAG_REFCNT) {
  641|       |        return true;
  642|       |    }
  643|       |    PyObject *obj = BITS_TO_PTR_MASKED(ref);
  644|       |    return obj == NULL || _PyObject_HasDeferredRefcount(obj);
  645|       |#else
  646|     96|    return (ref.bits & Py_TAG_BITS) != Py_TAG_REFCNT || ref.bits == PyStackRef_NULL_BITS || _Py_IsImmortal(BITS_TO_PTR_MASKED(ref));
  ------------------
  |  |   56|     96|#define Py_TAG_BITS 3
  ------------------
                  return (ref.bits & Py_TAG_BITS) != Py_TAG_REFCNT || ref.bits == PyStackRef_NULL_BITS || _Py_IsImmortal(BITS_TO_PTR_MASKED(ref));
  ------------------
  |  |   55|    192|#define Py_TAG_REFCNT 1
  ------------------
                  return (ref.bits & Py_TAG_BITS) != Py_TAG_REFCNT || ref.bits == PyStackRef_NULL_BITS || _Py_IsImmortal(BITS_TO_PTR_MASKED(ref));
  ------------------
  |  |  467|     42|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  ------------------
  |  |  |  |   55|    138|#define Py_TAG_REFCNT 1
  |  |  ------------------
  ------------------
                  return (ref.bits & Py_TAG_BITS) != Py_TAG_REFCNT || ref.bits == PyStackRef_NULL_BITS || _Py_IsImmortal(BITS_TO_PTR_MASKED(ref));
  ------------------
  |  |  137|    117|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     21|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     21|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 15, False: 6]
  |  |  ------------------
  ------------------
  |  Branch (646:12): [True: 54, False: 42]
  |  Branch (646:57): [True: 21, False: 21]
  ------------------
  647|     96|#endif
  648|     96|}
frame.c:PyStackRef_DUP:
  627|     14|{
  628|     14|    assert(!PyStackRef_IsNull(ref));
  ------------------
  |  Branch (628:5): [True: 14, False: 0]
  ------------------
  629|     14|    if (PyStackRef_RefcountOnObject(ref)) {
  ------------------
  |  Branch (629:9): [True: 14, False: 0]
  ------------------
  630|     14|        _Py_INCREF_MORTAL(BITS_TO_PTR(ref));
  ------------------
  |  |  464|     14|#define BITS_TO_PTR(REF) ((PyObject *)((REF).bits))
  ------------------
  631|     14|    }
  632|     14|    return ref;
  633|     14|}
frame.c:PyStackRef_AsPyObjectBorrow:
  528|    205|{
  529|    205|    assert(!PyStackRef_IsTaggedInt(ref));
  ------------------
  |  Branch (529:5): [True: 205, False: 0]
  ------------------
  530|    205|    return BITS_TO_PTR_MASKED(ref);
  ------------------
  |  |  465|    205|#define BITS_TO_PTR_MASKED(REF) ((PyObject *)(((REF).bits) & (~Py_TAG_REFCNT)))
  |  |  ------------------
  |  |  |  |   55|    205|#define Py_TAG_REFCNT 1
  |  |  ------------------
  ------------------
  531|    205|}
specialize.c:PyStackRef_AsPyObjectBorrow:
  528|    814|{
  529|    814|    assert(!PyStackRef_IsTaggedInt(ref));
  ------------------
  |  Branch (529:5): [True: 814, False: 0]
  ------------------
  530|    814|    return BITS_TO_PTR_MASKED(ref);
  ------------------
  |  |  465|    814|#define BITS_TO_PTR_MASKED(REF) ((PyObject *)(((REF).bits) & (~Py_TAG_REFCNT)))
  |  |  ------------------
  |  |  |  |   55|    814|#define Py_TAG_REFCNT 1
  |  |  ------------------
  ------------------
  531|    814|}
specialize.c:PyStackRef_IsTaggedInt:
  428|    832|{
  429|    832|    return (i.bits & Py_TAG_BITS) == Py_INT_TAG;
  ------------------
  |  |   56|    832|#define Py_TAG_BITS 3
  ------------------
                  return (i.bits & Py_TAG_BITS) == Py_INT_TAG;
  ------------------
  |  |   53|    832|#define Py_INT_TAG 3
  ------------------
  430|    832|}
specialize.c:PyStackRef_TYPE:
  727|     18|PyStackRef_TYPE(_PyStackRef stackref) {
  728|     18|    if (PyStackRef_IsTaggedInt(stackref)) {
  ------------------
  |  Branch (728:9): [True: 0, False: 18]
  ------------------
  729|      0|        return &PyLong_Type;
  730|      0|    }
  731|     18|    return Py_TYPE(PyStackRef_AsPyObjectBorrow(stackref));
  ------------------
  |  |  213|     18|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     18|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     18|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  732|     18|}
sysmodule.c:PyStackRef_AsPyObjectBorrow:
  528|      2|{
  529|      2|    assert(!PyStackRef_IsTaggedInt(ref));
  ------------------
  |  Branch (529:5): [True: 2, False: 0]
  ------------------
  530|      2|    return BITS_TO_PTR_MASKED(ref);
  ------------------
  |  |  465|      2|#define BITS_TO_PTR_MASKED(REF) ((PyObject *)(((REF).bits) & (~Py_TAG_REFCNT)))
  |  |  ------------------
  |  |  |  |   55|      2|#define Py_TAG_REFCNT 1
  |  |  ------------------
  ------------------
  531|      2|}
sysmodule.c:PyStackRef_IsTaggedInt:
  428|      2|{
  429|      2|    return (i.bits & Py_TAG_BITS) == Py_INT_TAG;
  ------------------
  |  |   56|      2|#define Py_TAG_BITS 3
  ------------------
                  return (i.bits & Py_TAG_BITS) == Py_INT_TAG;
  ------------------
  |  |   53|      2|#define Py_INT_TAG 3
  ------------------
  430|      2|}
traceback.c:PyStackRef_AsPyObjectBorrow:
  528|    102|{
  529|    102|    assert(!PyStackRef_IsTaggedInt(ref));
  ------------------
  |  Branch (529:5): [True: 102, False: 0]
  ------------------
  530|    102|    return BITS_TO_PTR_MASKED(ref);
  ------------------
  |  |  465|    102|#define BITS_TO_PTR_MASKED(REF) ((PyObject *)(((REF).bits) & (~Py_TAG_REFCNT)))
  |  |  ------------------
  |  |  |  |   55|    102|#define Py_TAG_REFCNT 1
  |  |  ------------------
  ------------------
  531|    102|}
traceback.c:PyStackRef_IsTaggedInt:
  428|    102|{
  429|    102|    return (i.bits & Py_TAG_BITS) == Py_INT_TAG;
  ------------------
  |  |   56|    102|#define Py_TAG_BITS 3
  ------------------
                  return (i.bits & Py_TAG_BITS) == Py_INT_TAG;
  ------------------
  |  |   53|    102|#define Py_INT_TAG 3
  ------------------
  430|    102|}
call.c:_PyThreadState_PushCStackRef:
  766|    306|{
  767|       |#ifdef Py_GIL_DISABLED
  768|       |    _PyThreadStateImpl *tstate_impl = (_PyThreadStateImpl *)tstate;
  769|       |    ref->next = tstate_impl->c_stack_refs;
  770|       |    tstate_impl->c_stack_refs = ref;
  771|       |#endif
  772|    306|    ref->ref = PyStackRef_NULL;
  773|    306|}
call.c:PyStackRef_FromPyObjectBorrow:
  615|    153|{
  616|    153|    assert(obj != NULL);
  ------------------
  |  Branch (616:5): [True: 153, False: 0]
  ------------------
  617|    153|    return (_PyStackRef){ .bits = (uintptr_t)obj | Py_TAG_REFCNT};
  ------------------
  |  |   55|    153|#define Py_TAG_REFCNT 1
  ------------------
  618|    153|}
call.c:_PyThreadState_PopCStackRef:
  784|    306|{
  785|       |#ifdef Py_GIL_DISABLED
  786|       |    _PyThreadStateImpl *tstate_impl = (_PyThreadStateImpl *)tstate;
  787|       |    assert(tstate_impl->c_stack_refs == ref);
  788|       |    tstate_impl->c_stack_refs = ref->next;
  789|       |#endif
  790|    306|    PyStackRef_XCLOSE(ref->ref);
  791|    306|}
call.c:PyStackRef_XCLOSE:
  701|    306|{
  702|    306|    assert(ref.bits != 0);
  ------------------
  |  Branch (702:5): [True: 306, False: 0]
  ------------------
  703|    306|    if (PyStackRef_RefcountOnObject(ref)) {
  ------------------
  |  Branch (703:9): [True: 153, False: 153]
  ------------------
  704|    153|        assert(!PyStackRef_IsNull(ref));
  ------------------
  |  Branch (704:9): [True: 153, False: 0]
  ------------------
  705|    153|        Py_DECREF_MORTAL(BITS_TO_PTR(ref));
  ------------------
  |  |  460|    153|#define Py_DECREF_MORTAL(op) Py_DECREF_MORTAL(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    153|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    153|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  706|    153|    }
  707|    306|}
call.c:PyStackRef_RefcountOnObject:
  522|    306|{
  523|    306|    return (ref.bits & Py_TAG_REFCNT) == 0;
  ------------------
  |  |   55|    306|#define Py_TAG_REFCNT 1
  ------------------
  524|    306|}
call.c:PyStackRef_AsPyObjectBorrow:
  528|    306|{
  529|    306|    assert(!PyStackRef_IsTaggedInt(ref));
  ------------------
  |  Branch (529:5): [True: 306, False: 0]
  ------------------
  530|    306|    return BITS_TO_PTR_MASKED(ref);
  ------------------
  |  |  465|    306|#define BITS_TO_PTR_MASKED(REF) ((PyObject *)(((REF).bits) & (~Py_TAG_REFCNT)))
  |  |  ------------------
  |  |  |  |   55|    306|#define Py_TAG_REFCNT 1
  |  |  ------------------
  ------------------
  531|    306|}
call.c:PyStackRef_IsTaggedInt:
  428|    306|{
  429|    306|    return (i.bits & Py_TAG_BITS) == Py_INT_TAG;
  ------------------
  |  |   56|    306|#define Py_TAG_BITS 3
  ------------------
                  return (i.bits & Py_TAG_BITS) == Py_INT_TAG;
  ------------------
  |  |   53|    306|#define Py_INT_TAG 3
  ------------------
  430|    306|}
genobject.c:PyStackRef_XCLOSE:
  701|     21|{
  702|     21|    assert(ref.bits != 0);
  ------------------
  |  Branch (702:5): [True: 21, False: 0]
  ------------------
  703|     21|    if (PyStackRef_RefcountOnObject(ref)) {
  ------------------
  |  Branch (703:9): [True: 21, False: 0]
  ------------------
  704|     21|        assert(!PyStackRef_IsNull(ref));
  ------------------
  |  Branch (704:9): [True: 21, False: 0]
  ------------------
  705|     21|        Py_DECREF_MORTAL(BITS_TO_PTR(ref));
  ------------------
  |  |  460|     21|#define Py_DECREF_MORTAL(op) Py_DECREF_MORTAL(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     21|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     21|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  706|     21|    }
  707|     21|}
genobject.c:PyStackRef_RefcountOnObject:
  522|     21|{
  523|     21|    return (ref.bits & Py_TAG_REFCNT) == 0;
  ------------------
  |  |   55|     21|#define Py_TAG_REFCNT 1
  ------------------
  524|     21|}
genobject.c:_PyStackRef_FromPyObjectNew:
  583|     34|{
  584|     34|    assert(obj != NULL);
  ------------------
  |  Branch (584:5): [True: 34, False: 0]
  ------------------
  585|       |#ifdef Py_GIL_DISABLED
  586|       |    if (_PyObject_HasDeferredRefcount(obj)) {
  587|       |        return (_PyStackRef){ .bits = (uintptr_t)obj | Py_TAG_REFCNT };
  588|       |    }
  589|       |#else
  590|     34|    if (_Py_IsImmortal(obj)) {
  ------------------
  |  |  137|     34|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     34|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     34|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 34, False: 0]
  |  |  ------------------
  ------------------
  591|     34|        return (_PyStackRef){ .bits = (uintptr_t)obj | Py_TAG_REFCNT };
  ------------------
  |  |   55|     34|#define Py_TAG_REFCNT 1
  ------------------
  592|     34|    }
  593|      0|#endif
  594|      0|    _Py_INCREF_MORTAL(obj);
  595|      0|    _PyStackRef ref = (_PyStackRef){ .bits = (uintptr_t)obj };
  596|      0|    PyStackRef_CheckValid(ref);
  ------------------
  |  |  510|      0|#define PyStackRef_CheckValid(REF) ((void)0)
  ------------------
  597|      0|    return ref;
  598|     34|}
genobject.c:PyStackRef_IsTaggedInt:
  428|      6|{
  429|      6|    return (i.bits & Py_TAG_BITS) == Py_INT_TAG;
  ------------------
  |  |   56|      6|#define Py_TAG_BITS 3
  ------------------
                  return (i.bits & Py_TAG_BITS) == Py_INT_TAG;
  ------------------
  |  |   53|      6|#define Py_INT_TAG 3
  ------------------
  430|      6|}
genobject.c:PyStackRef_AsPyObjectBorrow:
  528|      6|{
  529|      6|    assert(!PyStackRef_IsTaggedInt(ref));
  ------------------
  |  Branch (529:5): [True: 6, False: 0]
  ------------------
  530|      6|    return BITS_TO_PTR_MASKED(ref);
  ------------------
  |  |  465|      6|#define BITS_TO_PTR_MASKED(REF) ((PyObject *)(((REF).bits) & (~Py_TAG_REFCNT)))
  |  |  ------------------
  |  |  |  |   55|      6|#define Py_TAG_REFCNT 1
  |  |  ------------------
  ------------------
  531|      6|}
frameobject.c:PyStackRef_AsPyObjectBorrow:
  528|     23|{
  529|     23|    assert(!PyStackRef_IsTaggedInt(ref));
  ------------------
  |  Branch (529:5): [True: 23, False: 0]
  ------------------
  530|     23|    return BITS_TO_PTR_MASKED(ref);
  ------------------
  |  |  465|     23|#define BITS_TO_PTR_MASKED(REF) ((PyObject *)(((REF).bits) & (~Py_TAG_REFCNT)))
  |  |  ------------------
  |  |  |  |   55|     23|#define Py_TAG_REFCNT 1
  |  |  ------------------
  ------------------
  531|     23|}
frameobject.c:PyStackRef_IsTaggedInt:
  428|     23|{
  429|     23|    return (i.bits & Py_TAG_BITS) == Py_INT_TAG;
  ------------------
  |  |   56|     23|#define Py_TAG_BITS 3
  ------------------
                  return (i.bits & Py_TAG_BITS) == Py_INT_TAG;
  ------------------
  |  |   53|     23|#define Py_INT_TAG 3
  ------------------
  430|     23|}
frameobject.c:PyStackRef_RefcountOnObject:
  522|     96|{
  523|     96|    return (ref.bits & Py_TAG_REFCNT) == 0;
  ------------------
  |  |   55|     96|#define Py_TAG_REFCNT 1
  ------------------
  524|     96|}
frameobject.c:PyStackRef_XCLOSE:
  701|     96|{
  702|     96|    assert(ref.bits != 0);
  ------------------
  |  Branch (702:5): [True: 96, False: 0]
  ------------------
  703|     96|    if (PyStackRef_RefcountOnObject(ref)) {
  ------------------
  |  Branch (703:9): [True: 60, False: 36]
  ------------------
  704|     60|        assert(!PyStackRef_IsNull(ref));
  ------------------
  |  Branch (704:9): [True: 60, False: 0]
  ------------------
  705|     60|        Py_DECREF_MORTAL(BITS_TO_PTR(ref));
  ------------------
  |  |  460|     60|#define Py_DECREF_MORTAL(op) Py_DECREF_MORTAL(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     60|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     60|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  706|     60|    }
  707|     96|}
lazyimportobject.c:PyStackRef_AsPyObjectBorrow:
  528|      8|{
  529|      8|    assert(!PyStackRef_IsTaggedInt(ref));
  ------------------
  |  Branch (529:5): [True: 8, False: 0]
  ------------------
  530|      8|    return BITS_TO_PTR_MASKED(ref);
  ------------------
  |  |  465|      8|#define BITS_TO_PTR_MASKED(REF) ((PyObject *)(((REF).bits) & (~Py_TAG_REFCNT)))
  |  |  ------------------
  |  |  |  |   55|      8|#define Py_TAG_REFCNT 1
  |  |  ------------------
  ------------------
  531|      8|}
lazyimportobject.c:PyStackRef_IsTaggedInt:
  428|      8|{
  429|      8|    return (i.bits & Py_TAG_BITS) == Py_INT_TAG;
  ------------------
  |  |   56|      8|#define Py_TAG_BITS 3
  ------------------
                  return (i.bits & Py_TAG_BITS) == Py_INT_TAG;
  ------------------
  |  |   53|      8|#define Py_INT_TAG 3
  ------------------
  430|      8|}

longobject.c:_PyStructSequence_InitBuiltin:
   29|      1|{
   30|      1|    return _PyStructSequence_InitBuiltinWithFlags(interp, type, desc, 0);
   31|      1|}
errors.c:_PyStructSequence_InitBuiltin:
   29|      1|{
   30|      1|    return _PyStructSequence_InitBuiltinWithFlags(interp, type, desc, 0);
   31|      1|}
sysmodule.c:_PyStructSequence_InitBuiltin:
   29|      2|{
   30|      2|    return _PyStructSequence_InitBuiltinWithFlags(interp, type, desc, 0);
   31|      2|}
thread.c:_PyStructSequence_InitBuiltin:
   29|      1|{
   30|      1|    return _PyStructSequence_InitBuiltinWithFlags(interp, type, desc, 0);
   31|      1|}
floatobject.c:_PyStructSequence_InitBuiltin:
   29|      1|{
   30|      1|    return _PyStructSequence_InitBuiltinWithFlags(interp, type, desc, 0);
   31|      1|}

dictobject.c:_PyTuple_Recycle:
   53|     33|{
   54|     33|    _PyTuple_RESET_HASH_CACHE(op);
  ------------------
  |  |   44|     33|    do {                                    \
  |  |   45|     33|        assert(op != NULL);                 \
  |  |   46|     66|        _PyTuple_CAST(op)->ob_hash = -1;    \
  |  |  ------------------
  |  |  |  |   19|     33|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     33|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|     66|    } while (0)
  |  |  ------------------
  |  |  |  Branch (47:14): [Folded, False: 33]
  |  |  ------------------
  ------------------
  |  Branch (54:5): [True: 33, False: 0]
  |  Branch (54:5): [True: 33, False: 0]
  ------------------
   55|     33|    if (!_PyObject_GC_IS_TRACKED(op)) {
  ------------------
  |  |   81|     33|#define _PyObject_GC_IS_TRACKED(op) _PyObject_GC_IS_TRACKED(_Py_CAST(PyObject*, op))
  |  |  ------------------
  |  |  |  |   37|     33|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (55:9): [True: 30, False: 3]
  ------------------
   56|     30|        _PyObject_GC_TRACK(op);
  ------------------
  |  |  513|     30|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     30|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     30|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   57|     30|    }
   58|     33|}

object.c:_PyType_IsReady:
  110|  3.77k|{
  111|       |    return _PyType_GetDict(type) != NULL;
  112|  3.77k|}
typeobject.c:_PyType_IsReady:
  110|  1.54k|{
  111|       |    return _PyType_GetDict(type) != NULL;
  112|  1.54k|}
weakrefobject.c:_PyStaticType_GET_WEAKREFS_LISTPTR:
   49|    286|{
   50|    286|    assert(state != NULL);
  ------------------
  |  Branch (50:5): [True: 286, False: 0]
  ------------------
   51|    286|    return &state->tp_weaklist;
   52|    286|}
modsupport.c:_PyType_IsReady:
  110|     19|{
  111|       |    return _PyType_GetDict(type) != NULL;
  112|     19|}
specialize.c:_PyType_IsReady:
  110|    300|{
  111|       |    return _PyType_GetDict(type) != NULL;
  112|    300|}
_abc.c:_PyType_GetModuleState:
   81|     29|{
   82|     29|    assert(PyType_Check(type));
  ------------------
  |  Branch (82:5): [True: 29, False: 0]
  ------------------
   83|     29|    assert(type->tp_flags & Py_TPFLAGS_HEAPTYPE);
  ------------------
  |  Branch (83:5): [True: 29, False: 0]
  ------------------
   84|     29|    PyHeapTypeObject *et = (PyHeapTypeObject *)type;
   85|     29|    assert(et->ht_module);
  ------------------
  |  Branch (85:5): [True: 29, False: 0]
  ------------------
   86|     29|    PyModuleObject *mod = (PyModuleObject *)(et->ht_module);
   87|     29|    assert(mod != NULL);
  ------------------
  |  Branch (87:5): [True: 29, False: 0]
  ------------------
   88|     29|    return mod->md_state;
   89|     29|}

unicodeobject.c:_PyUnicodeWriter_WriteCharInline:
  110|      2|{
  111|      2|    assert(ch <= _Py_MAX_UNICODE);
  ------------------
  |  Branch (111:5): [True: 2, False: 0]
  ------------------
  112|      2|    if (_PyUnicodeWriter_Prepare(writer, 1, ch) < 0)
  ------------------
  |  |  562|      2|    (((MAXCHAR) <= (WRITER)->maxchar                                  \
  |  |  ------------------
  |  |  |  Branch (562:7): [True: 0, False: 2]
  |  |  ------------------
  |  |  563|      2|      && (LENGTH) <= (WRITER)->size - (WRITER)->pos)                  \
  |  |  ------------------
  |  |  |  Branch (563:10): [True: 0, False: 0]
  |  |  ------------------
  |  |  564|      2|     ? 0                                                              \
  |  |  565|      2|     : (((LENGTH) == 0)                                               \
  |  |  ------------------
  |  |  |  Branch (565:9): [Folded, False: 2]
  |  |  ------------------
  |  |  566|      2|        ? 0                                                           \
  |  |  567|      2|        : _PyUnicodeWriter_PrepareInternal((WRITER), (LENGTH), (MAXCHAR))))
  ------------------
  |  Branch (112:9): [True: 0, False: 2]
  ------------------
  113|      0|        return -1;
  114|      2|    PyUnicode_WRITE(writer->kind, writer->data, writer->pos, ch);
  ------------------
  |  |  335|      2|    PyUnicode_WRITE(_Py_STATIC_CAST(int, kind), _Py_CAST(void*, data), \
  |  |  ------------------
  |  |  |  |   34|      2|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |                   PyUnicode_WRITE(_Py_STATIC_CAST(int, kind), _Py_CAST(void*, data), \
  |  |  ------------------
  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  336|      2|                    (index), _Py_STATIC_CAST(Py_UCS4, value))
  |  |  ------------------
  |  |  |  |   34|      2|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  115|      2|    writer->pos++;
  116|      2|    return 0;
  117|      2|}
unicodeobject.c:_PyUnicode_EnsureUnicode:
   99|    240|{
  100|    240|    if (!PyUnicode_Check(obj)) {
  ------------------
  |  |  103|    240|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|    240|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (100:9): [True: 0, False: 240]
  ------------------
  101|      0|        PyErr_Format(PyExc_TypeError,
  102|      0|                     "must be str, not %T", obj);
  103|      0|        return -1;
  104|      0|    }
  105|    240|    return 0;
  106|    240|}

unicodeobject.c:_PyUnicode_InitStaticStrings:
   13|      1|_PyUnicode_InitStaticStrings(PyInterpreterState *interp) {
   14|      1|    PyObject *string;
   15|      1|    string = &_Py_ID(AGEN_CLOSED);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   16|      1|    _PyUnicode_InternStatic(interp, &string);
   17|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (17:5): [True: 1, False: 0]
  ------------------
   18|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (18:5): [True: 1, False: 0]
  ------------------
   19|      1|    string = &_Py_ID(AGEN_CREATED);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   20|      1|    _PyUnicode_InternStatic(interp, &string);
   21|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (21:5): [True: 1, False: 0]
  ------------------
   22|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (22:5): [True: 1, False: 0]
  ------------------
   23|      1|    string = &_Py_ID(AGEN_RUNNING);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   24|      1|    _PyUnicode_InternStatic(interp, &string);
   25|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (25:5): [True: 1, False: 0]
  ------------------
   26|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (26:5): [True: 1, False: 0]
  ------------------
   27|      1|    string = &_Py_ID(AGEN_SUSPENDED);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   28|      1|    _PyUnicode_InternStatic(interp, &string);
   29|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (29:5): [True: 1, False: 0]
  ------------------
   30|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (30:5): [True: 1, False: 0]
  ------------------
   31|      1|    string = &_Py_ID(CANCELLED);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   32|      1|    _PyUnicode_InternStatic(interp, &string);
   33|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (33:5): [True: 1, False: 0]
  ------------------
   34|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (34:5): [True: 1, False: 0]
  ------------------
   35|      1|    string = &_Py_ID(CORO_CLOSED);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   36|      1|    _PyUnicode_InternStatic(interp, &string);
   37|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (37:5): [True: 1, False: 0]
  ------------------
   38|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (38:5): [True: 1, False: 0]
  ------------------
   39|      1|    string = &_Py_ID(CORO_CREATED);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   40|      1|    _PyUnicode_InternStatic(interp, &string);
   41|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (41:5): [True: 1, False: 0]
  ------------------
   42|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (42:5): [True: 1, False: 0]
  ------------------
   43|      1|    string = &_Py_ID(CORO_RUNNING);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   44|      1|    _PyUnicode_InternStatic(interp, &string);
   45|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (45:5): [True: 1, False: 0]
  ------------------
   46|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (46:5): [True: 1, False: 0]
  ------------------
   47|      1|    string = &_Py_ID(CORO_SUSPENDED);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   48|      1|    _PyUnicode_InternStatic(interp, &string);
   49|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (49:5): [True: 1, False: 0]
  ------------------
   50|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (50:5): [True: 1, False: 0]
  ------------------
   51|      1|    string = &_Py_ID(Emax);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   52|      1|    _PyUnicode_InternStatic(interp, &string);
   53|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (53:5): [True: 1, False: 0]
  ------------------
   54|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (54:5): [True: 1, False: 0]
  ------------------
   55|      1|    string = &_Py_ID(Emin);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   56|      1|    _PyUnicode_InternStatic(interp, &string);
   57|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (57:5): [True: 1, False: 0]
  ------------------
   58|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (58:5): [True: 1, False: 0]
  ------------------
   59|      1|    string = &_Py_ID(FINISHED);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   60|      1|    _PyUnicode_InternStatic(interp, &string);
   61|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (61:5): [True: 1, False: 0]
  ------------------
   62|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (62:5): [True: 1, False: 0]
  ------------------
   63|      1|    string = &_Py_ID(False);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   64|      1|    _PyUnicode_InternStatic(interp, &string);
   65|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (65:5): [True: 1, False: 0]
  ------------------
   66|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (66:5): [True: 1, False: 0]
  ------------------
   67|      1|    string = &_Py_ID(GEN_CLOSED);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   68|      1|    _PyUnicode_InternStatic(interp, &string);
   69|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (69:5): [True: 1, False: 0]
  ------------------
   70|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (70:5): [True: 1, False: 0]
  ------------------
   71|      1|    string = &_Py_ID(GEN_CREATED);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   72|      1|    _PyUnicode_InternStatic(interp, &string);
   73|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (73:5): [True: 1, False: 0]
  ------------------
   74|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (74:5): [True: 1, False: 0]
  ------------------
   75|      1|    string = &_Py_ID(GEN_RUNNING);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   76|      1|    _PyUnicode_InternStatic(interp, &string);
   77|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (77:5): [True: 1, False: 0]
  ------------------
   78|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (78:5): [True: 1, False: 0]
  ------------------
   79|      1|    string = &_Py_ID(GEN_SUSPENDED);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   80|      1|    _PyUnicode_InternStatic(interp, &string);
   81|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (81:5): [True: 1, False: 0]
  ------------------
   82|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (82:5): [True: 1, False: 0]
  ------------------
   83|      1|    string = &_Py_ID(JSONDecodeError);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   84|      1|    _PyUnicode_InternStatic(interp, &string);
   85|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (85:5): [True: 1, False: 0]
  ------------------
   86|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (86:5): [True: 1, False: 0]
  ------------------
   87|      1|    string = &_Py_ID(PENDING);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   88|      1|    _PyUnicode_InternStatic(interp, &string);
   89|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (89:5): [True: 1, False: 0]
  ------------------
   90|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (90:5): [True: 1, False: 0]
  ------------------
   91|      1|    string = &_Py_ID(Py_Repr);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   92|      1|    _PyUnicode_InternStatic(interp, &string);
   93|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (93:5): [True: 1, False: 0]
  ------------------
   94|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (94:5): [True: 1, False: 0]
  ------------------
   95|      1|    string = &_Py_ID(TextIOWrapper);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   96|      1|    _PyUnicode_InternStatic(interp, &string);
   97|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (97:5): [True: 1, False: 0]
  ------------------
   98|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (98:5): [True: 1, False: 0]
  ------------------
   99|      1|    string = &_Py_ID(True);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  100|      1|    _PyUnicode_InternStatic(interp, &string);
  101|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (101:5): [True: 1, False: 0]
  ------------------
  102|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (102:5): [True: 1, False: 0]
  ------------------
  103|      1|    string = &_Py_ID(WarningMessage);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  104|      1|    _PyUnicode_InternStatic(interp, &string);
  105|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (105:5): [True: 1, False: 0]
  ------------------
  106|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (106:5): [True: 1, False: 0]
  ------------------
  107|      1|    string = &_Py_ID(_WindowsConsoleIO);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  108|      1|    _PyUnicode_InternStatic(interp, &string);
  109|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (109:5): [True: 1, False: 0]
  ------------------
  110|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (110:5): [True: 1, False: 0]
  ------------------
  111|      1|    string = &_Py_ID(__IOBase_closed);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  112|      1|    _PyUnicode_InternStatic(interp, &string);
  113|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (113:5): [True: 1, False: 0]
  ------------------
  114|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (114:5): [True: 1, False: 0]
  ------------------
  115|      1|    string = &_Py_ID(__abc_tpflags__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  116|      1|    _PyUnicode_InternStatic(interp, &string);
  117|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (117:5): [True: 1, False: 0]
  ------------------
  118|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (118:5): [True: 1, False: 0]
  ------------------
  119|      1|    string = &_Py_ID(__abs__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  120|      1|    _PyUnicode_InternStatic(interp, &string);
  121|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (121:5): [True: 1, False: 0]
  ------------------
  122|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (122:5): [True: 1, False: 0]
  ------------------
  123|      1|    string = &_Py_ID(__abstractmethods__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  124|      1|    _PyUnicode_InternStatic(interp, &string);
  125|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (125:5): [True: 1, False: 0]
  ------------------
  126|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (126:5): [True: 1, False: 0]
  ------------------
  127|      1|    string = &_Py_ID(__add__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  128|      1|    _PyUnicode_InternStatic(interp, &string);
  129|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (129:5): [True: 1, False: 0]
  ------------------
  130|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (130:5): [True: 1, False: 0]
  ------------------
  131|      1|    string = &_Py_ID(__aenter__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  132|      1|    _PyUnicode_InternStatic(interp, &string);
  133|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (133:5): [True: 1, False: 0]
  ------------------
  134|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (134:5): [True: 1, False: 0]
  ------------------
  135|      1|    string = &_Py_ID(__aexit__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  136|      1|    _PyUnicode_InternStatic(interp, &string);
  137|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (137:5): [True: 1, False: 0]
  ------------------
  138|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (138:5): [True: 1, False: 0]
  ------------------
  139|      1|    string = &_Py_ID(__aiter__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  140|      1|    _PyUnicode_InternStatic(interp, &string);
  141|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (141:5): [True: 1, False: 0]
  ------------------
  142|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (142:5): [True: 1, False: 0]
  ------------------
  143|      1|    string = &_Py_ID(__all__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  144|      1|    _PyUnicode_InternStatic(interp, &string);
  145|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (145:5): [True: 1, False: 0]
  ------------------
  146|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (146:5): [True: 1, False: 0]
  ------------------
  147|      1|    string = &_Py_ID(__and__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  148|      1|    _PyUnicode_InternStatic(interp, &string);
  149|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (149:5): [True: 1, False: 0]
  ------------------
  150|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (150:5): [True: 1, False: 0]
  ------------------
  151|      1|    string = &_Py_ID(__anext__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  152|      1|    _PyUnicode_InternStatic(interp, &string);
  153|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (153:5): [True: 1, False: 0]
  ------------------
  154|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (154:5): [True: 1, False: 0]
  ------------------
  155|      1|    string = &_Py_ID(__annotate__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  156|      1|    _PyUnicode_InternStatic(interp, &string);
  157|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (157:5): [True: 1, False: 0]
  ------------------
  158|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (158:5): [True: 1, False: 0]
  ------------------
  159|      1|    string = &_Py_ID(__annotate_func__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  160|      1|    _PyUnicode_InternStatic(interp, &string);
  161|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (161:5): [True: 1, False: 0]
  ------------------
  162|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (162:5): [True: 1, False: 0]
  ------------------
  163|      1|    string = &_Py_ID(__annotations__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  164|      1|    _PyUnicode_InternStatic(interp, &string);
  165|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (165:5): [True: 1, False: 0]
  ------------------
  166|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (166:5): [True: 1, False: 0]
  ------------------
  167|      1|    string = &_Py_ID(__annotations_cache__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  168|      1|    _PyUnicode_InternStatic(interp, &string);
  169|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (169:5): [True: 1, False: 0]
  ------------------
  170|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (170:5): [True: 1, False: 0]
  ------------------
  171|      1|    string = &_Py_ID(__args__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  172|      1|    _PyUnicode_InternStatic(interp, &string);
  173|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (173:5): [True: 1, False: 0]
  ------------------
  174|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (174:5): [True: 1, False: 0]
  ------------------
  175|      1|    string = &_Py_ID(__await__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  176|      1|    _PyUnicode_InternStatic(interp, &string);
  177|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (177:5): [True: 1, False: 0]
  ------------------
  178|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (178:5): [True: 1, False: 0]
  ------------------
  179|      1|    string = &_Py_ID(__bases__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  180|      1|    _PyUnicode_InternStatic(interp, &string);
  181|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (181:5): [True: 1, False: 0]
  ------------------
  182|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (182:5): [True: 1, False: 0]
  ------------------
  183|      1|    string = &_Py_ID(__bool__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  184|      1|    _PyUnicode_InternStatic(interp, &string);
  185|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (185:5): [True: 1, False: 0]
  ------------------
  186|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (186:5): [True: 1, False: 0]
  ------------------
  187|      1|    string = &_Py_ID(__buffer__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  188|      1|    _PyUnicode_InternStatic(interp, &string);
  189|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (189:5): [True: 1, False: 0]
  ------------------
  190|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (190:5): [True: 1, False: 0]
  ------------------
  191|      1|    string = &_Py_ID(__build_class__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  192|      1|    _PyUnicode_InternStatic(interp, &string);
  193|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (193:5): [True: 1, False: 0]
  ------------------
  194|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (194:5): [True: 1, False: 0]
  ------------------
  195|      1|    string = &_Py_ID(__builtins__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  196|      1|    _PyUnicode_InternStatic(interp, &string);
  197|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (197:5): [True: 1, False: 0]
  ------------------
  198|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (198:5): [True: 1, False: 0]
  ------------------
  199|      1|    string = &_Py_ID(__bytes__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  200|      1|    _PyUnicode_InternStatic(interp, &string);
  201|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (201:5): [True: 1, False: 0]
  ------------------
  202|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (202:5): [True: 1, False: 0]
  ------------------
  203|      1|    string = &_Py_ID(__call__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  204|      1|    _PyUnicode_InternStatic(interp, &string);
  205|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (205:5): [True: 1, False: 0]
  ------------------
  206|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (206:5): [True: 1, False: 0]
  ------------------
  207|      1|    string = &_Py_ID(__cantrace__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  208|      1|    _PyUnicode_InternStatic(interp, &string);
  209|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (209:5): [True: 1, False: 0]
  ------------------
  210|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (210:5): [True: 1, False: 0]
  ------------------
  211|      1|    string = &_Py_ID(__ceil__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  212|      1|    _PyUnicode_InternStatic(interp, &string);
  213|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (213:5): [True: 1, False: 0]
  ------------------
  214|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (214:5): [True: 1, False: 0]
  ------------------
  215|      1|    string = &_Py_ID(__class__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  216|      1|    _PyUnicode_InternStatic(interp, &string);
  217|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (217:5): [True: 1, False: 0]
  ------------------
  218|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (218:5): [True: 1, False: 0]
  ------------------
  219|      1|    string = &_Py_ID(__class_getitem__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  220|      1|    _PyUnicode_InternStatic(interp, &string);
  221|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (221:5): [True: 1, False: 0]
  ------------------
  222|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (222:5): [True: 1, False: 0]
  ------------------
  223|      1|    string = &_Py_ID(__classcell__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  224|      1|    _PyUnicode_InternStatic(interp, &string);
  225|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (225:5): [True: 1, False: 0]
  ------------------
  226|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (226:5): [True: 1, False: 0]
  ------------------
  227|      1|    string = &_Py_ID(__classdict__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  228|      1|    _PyUnicode_InternStatic(interp, &string);
  229|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (229:5): [True: 1, False: 0]
  ------------------
  230|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (230:5): [True: 1, False: 0]
  ------------------
  231|      1|    string = &_Py_ID(__classdictcell__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  232|      1|    _PyUnicode_InternStatic(interp, &string);
  233|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (233:5): [True: 1, False: 0]
  ------------------
  234|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (234:5): [True: 1, False: 0]
  ------------------
  235|      1|    string = &_Py_ID(__complex__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  236|      1|    _PyUnicode_InternStatic(interp, &string);
  237|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (237:5): [True: 1, False: 0]
  ------------------
  238|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (238:5): [True: 1, False: 0]
  ------------------
  239|      1|    string = &_Py_ID(__conditional_annotations__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  240|      1|    _PyUnicode_InternStatic(interp, &string);
  241|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (241:5): [True: 1, False: 0]
  ------------------
  242|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (242:5): [True: 1, False: 0]
  ------------------
  243|      1|    string = &_Py_ID(__contains__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  244|      1|    _PyUnicode_InternStatic(interp, &string);
  245|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (245:5): [True: 1, False: 0]
  ------------------
  246|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (246:5): [True: 1, False: 0]
  ------------------
  247|      1|    string = &_Py_ID(__ctypes_from_outparam__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  248|      1|    _PyUnicode_InternStatic(interp, &string);
  249|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (249:5): [True: 1, False: 0]
  ------------------
  250|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (250:5): [True: 1, False: 0]
  ------------------
  251|      1|    string = &_Py_ID(__del__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  252|      1|    _PyUnicode_InternStatic(interp, &string);
  253|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (253:5): [True: 1, False: 0]
  ------------------
  254|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (254:5): [True: 1, False: 0]
  ------------------
  255|      1|    string = &_Py_ID(__delattr__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  256|      1|    _PyUnicode_InternStatic(interp, &string);
  257|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (257:5): [True: 1, False: 0]
  ------------------
  258|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (258:5): [True: 1, False: 0]
  ------------------
  259|      1|    string = &_Py_ID(__delete__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  260|      1|    _PyUnicode_InternStatic(interp, &string);
  261|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (261:5): [True: 1, False: 0]
  ------------------
  262|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (262:5): [True: 1, False: 0]
  ------------------
  263|      1|    string = &_Py_ID(__delitem__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  264|      1|    _PyUnicode_InternStatic(interp, &string);
  265|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (265:5): [True: 1, False: 0]
  ------------------
  266|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (266:5): [True: 1, False: 0]
  ------------------
  267|      1|    string = &_Py_ID(__dict__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  268|      1|    _PyUnicode_InternStatic(interp, &string);
  269|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (269:5): [True: 1, False: 0]
  ------------------
  270|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (270:5): [True: 1, False: 0]
  ------------------
  271|      1|    string = &_Py_ID(__dictoffset__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  272|      1|    _PyUnicode_InternStatic(interp, &string);
  273|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (273:5): [True: 1, False: 0]
  ------------------
  274|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (274:5): [True: 1, False: 0]
  ------------------
  275|      1|    string = &_Py_ID(__dir__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  276|      1|    _PyUnicode_InternStatic(interp, &string);
  277|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (277:5): [True: 1, False: 0]
  ------------------
  278|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (278:5): [True: 1, False: 0]
  ------------------
  279|      1|    string = &_Py_ID(__divmod__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  280|      1|    _PyUnicode_InternStatic(interp, &string);
  281|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (281:5): [True: 1, False: 0]
  ------------------
  282|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (282:5): [True: 1, False: 0]
  ------------------
  283|      1|    string = &_Py_ID(__doc__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  284|      1|    _PyUnicode_InternStatic(interp, &string);
  285|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (285:5): [True: 1, False: 0]
  ------------------
  286|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (286:5): [True: 1, False: 0]
  ------------------
  287|      1|    string = &_Py_ID(__enter__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  288|      1|    _PyUnicode_InternStatic(interp, &string);
  289|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (289:5): [True: 1, False: 0]
  ------------------
  290|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (290:5): [True: 1, False: 0]
  ------------------
  291|      1|    string = &_Py_ID(__eq__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  292|      1|    _PyUnicode_InternStatic(interp, &string);
  293|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (293:5): [True: 1, False: 0]
  ------------------
  294|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (294:5): [True: 1, False: 0]
  ------------------
  295|      1|    string = &_Py_ID(__exit__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  296|      1|    _PyUnicode_InternStatic(interp, &string);
  297|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (297:5): [True: 1, False: 0]
  ------------------
  298|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (298:5): [True: 1, False: 0]
  ------------------
  299|      1|    string = &_Py_ID(__file__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  300|      1|    _PyUnicode_InternStatic(interp, &string);
  301|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (301:5): [True: 1, False: 0]
  ------------------
  302|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (302:5): [True: 1, False: 0]
  ------------------
  303|      1|    string = &_Py_ID(__firstlineno__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  304|      1|    _PyUnicode_InternStatic(interp, &string);
  305|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (305:5): [True: 1, False: 0]
  ------------------
  306|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (306:5): [True: 1, False: 0]
  ------------------
  307|      1|    string = &_Py_ID(__float__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  308|      1|    _PyUnicode_InternStatic(interp, &string);
  309|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (309:5): [True: 1, False: 0]
  ------------------
  310|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (310:5): [True: 1, False: 0]
  ------------------
  311|      1|    string = &_Py_ID(__floor__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  312|      1|    _PyUnicode_InternStatic(interp, &string);
  313|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (313:5): [True: 1, False: 0]
  ------------------
  314|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (314:5): [True: 1, False: 0]
  ------------------
  315|      1|    string = &_Py_ID(__floordiv__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  316|      1|    _PyUnicode_InternStatic(interp, &string);
  317|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (317:5): [True: 1, False: 0]
  ------------------
  318|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (318:5): [True: 1, False: 0]
  ------------------
  319|      1|    string = &_Py_ID(__format__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  320|      1|    _PyUnicode_InternStatic(interp, &string);
  321|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (321:5): [True: 1, False: 0]
  ------------------
  322|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (322:5): [True: 1, False: 0]
  ------------------
  323|      1|    string = &_Py_ID(__fspath__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  324|      1|    _PyUnicode_InternStatic(interp, &string);
  325|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (325:5): [True: 1, False: 0]
  ------------------
  326|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (326:5): [True: 1, False: 0]
  ------------------
  327|      1|    string = &_Py_ID(__ge__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  328|      1|    _PyUnicode_InternStatic(interp, &string);
  329|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (329:5): [True: 1, False: 0]
  ------------------
  330|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (330:5): [True: 1, False: 0]
  ------------------
  331|      1|    string = &_Py_ID(__get__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  332|      1|    _PyUnicode_InternStatic(interp, &string);
  333|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (333:5): [True: 1, False: 0]
  ------------------
  334|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (334:5): [True: 1, False: 0]
  ------------------
  335|      1|    string = &_Py_ID(__getattr__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  336|      1|    _PyUnicode_InternStatic(interp, &string);
  337|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (337:5): [True: 1, False: 0]
  ------------------
  338|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (338:5): [True: 1, False: 0]
  ------------------
  339|      1|    string = &_Py_ID(__getattribute__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  340|      1|    _PyUnicode_InternStatic(interp, &string);
  341|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (341:5): [True: 1, False: 0]
  ------------------
  342|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (342:5): [True: 1, False: 0]
  ------------------
  343|      1|    string = &_Py_ID(__getinitargs__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  344|      1|    _PyUnicode_InternStatic(interp, &string);
  345|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (345:5): [True: 1, False: 0]
  ------------------
  346|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (346:5): [True: 1, False: 0]
  ------------------
  347|      1|    string = &_Py_ID(__getitem__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  348|      1|    _PyUnicode_InternStatic(interp, &string);
  349|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (349:5): [True: 1, False: 0]
  ------------------
  350|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (350:5): [True: 1, False: 0]
  ------------------
  351|      1|    string = &_Py_ID(__getnewargs__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  352|      1|    _PyUnicode_InternStatic(interp, &string);
  353|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (353:5): [True: 1, False: 0]
  ------------------
  354|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (354:5): [True: 1, False: 0]
  ------------------
  355|      1|    string = &_Py_ID(__getnewargs_ex__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  356|      1|    _PyUnicode_InternStatic(interp, &string);
  357|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (357:5): [True: 1, False: 0]
  ------------------
  358|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (358:5): [True: 1, False: 0]
  ------------------
  359|      1|    string = &_Py_ID(__getstate__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  360|      1|    _PyUnicode_InternStatic(interp, &string);
  361|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (361:5): [True: 1, False: 0]
  ------------------
  362|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (362:5): [True: 1, False: 0]
  ------------------
  363|      1|    string = &_Py_ID(__gt__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  364|      1|    _PyUnicode_InternStatic(interp, &string);
  365|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (365:5): [True: 1, False: 0]
  ------------------
  366|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (366:5): [True: 1, False: 0]
  ------------------
  367|      1|    string = &_Py_ID(__hash__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  368|      1|    _PyUnicode_InternStatic(interp, &string);
  369|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (369:5): [True: 1, False: 0]
  ------------------
  370|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (370:5): [True: 1, False: 0]
  ------------------
  371|      1|    string = &_Py_ID(__iadd__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  372|      1|    _PyUnicode_InternStatic(interp, &string);
  373|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (373:5): [True: 1, False: 0]
  ------------------
  374|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (374:5): [True: 1, False: 0]
  ------------------
  375|      1|    string = &_Py_ID(__iand__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  376|      1|    _PyUnicode_InternStatic(interp, &string);
  377|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (377:5): [True: 1, False: 0]
  ------------------
  378|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (378:5): [True: 1, False: 0]
  ------------------
  379|      1|    string = &_Py_ID(__ifloordiv__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  380|      1|    _PyUnicode_InternStatic(interp, &string);
  381|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (381:5): [True: 1, False: 0]
  ------------------
  382|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (382:5): [True: 1, False: 0]
  ------------------
  383|      1|    string = &_Py_ID(__ilshift__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  384|      1|    _PyUnicode_InternStatic(interp, &string);
  385|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (385:5): [True: 1, False: 0]
  ------------------
  386|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (386:5): [True: 1, False: 0]
  ------------------
  387|      1|    string = &_Py_ID(__imatmul__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  388|      1|    _PyUnicode_InternStatic(interp, &string);
  389|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (389:5): [True: 1, False: 0]
  ------------------
  390|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (390:5): [True: 1, False: 0]
  ------------------
  391|      1|    string = &_Py_ID(__imod__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  392|      1|    _PyUnicode_InternStatic(interp, &string);
  393|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (393:5): [True: 1, False: 0]
  ------------------
  394|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (394:5): [True: 1, False: 0]
  ------------------
  395|      1|    string = &_Py_ID(__import__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  396|      1|    _PyUnicode_InternStatic(interp, &string);
  397|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (397:5): [True: 1, False: 0]
  ------------------
  398|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (398:5): [True: 1, False: 0]
  ------------------
  399|      1|    string = &_Py_ID(__imul__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  400|      1|    _PyUnicode_InternStatic(interp, &string);
  401|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (401:5): [True: 1, False: 0]
  ------------------
  402|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (402:5): [True: 1, False: 0]
  ------------------
  403|      1|    string = &_Py_ID(__index__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  404|      1|    _PyUnicode_InternStatic(interp, &string);
  405|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (405:5): [True: 1, False: 0]
  ------------------
  406|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (406:5): [True: 1, False: 0]
  ------------------
  407|      1|    string = &_Py_ID(__init__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  408|      1|    _PyUnicode_InternStatic(interp, &string);
  409|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (409:5): [True: 1, False: 0]
  ------------------
  410|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (410:5): [True: 1, False: 0]
  ------------------
  411|      1|    string = &_Py_ID(__init_subclass__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  412|      1|    _PyUnicode_InternStatic(interp, &string);
  413|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (413:5): [True: 1, False: 0]
  ------------------
  414|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (414:5): [True: 1, False: 0]
  ------------------
  415|      1|    string = &_Py_ID(__instancecheck__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  416|      1|    _PyUnicode_InternStatic(interp, &string);
  417|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (417:5): [True: 1, False: 0]
  ------------------
  418|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (418:5): [True: 1, False: 0]
  ------------------
  419|      1|    string = &_Py_ID(__int__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  420|      1|    _PyUnicode_InternStatic(interp, &string);
  421|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (421:5): [True: 1, False: 0]
  ------------------
  422|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (422:5): [True: 1, False: 0]
  ------------------
  423|      1|    string = &_Py_ID(__invert__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  424|      1|    _PyUnicode_InternStatic(interp, &string);
  425|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (425:5): [True: 1, False: 0]
  ------------------
  426|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (426:5): [True: 1, False: 0]
  ------------------
  427|      1|    string = &_Py_ID(__ior__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  428|      1|    _PyUnicode_InternStatic(interp, &string);
  429|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (429:5): [True: 1, False: 0]
  ------------------
  430|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (430:5): [True: 1, False: 0]
  ------------------
  431|      1|    string = &_Py_ID(__ipow__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  432|      1|    _PyUnicode_InternStatic(interp, &string);
  433|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (433:5): [True: 1, False: 0]
  ------------------
  434|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (434:5): [True: 1, False: 0]
  ------------------
  435|      1|    string = &_Py_ID(__irshift__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  436|      1|    _PyUnicode_InternStatic(interp, &string);
  437|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (437:5): [True: 1, False: 0]
  ------------------
  438|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (438:5): [True: 1, False: 0]
  ------------------
  439|      1|    string = &_Py_ID(__isabstractmethod__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  440|      1|    _PyUnicode_InternStatic(interp, &string);
  441|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (441:5): [True: 1, False: 0]
  ------------------
  442|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (442:5): [True: 1, False: 0]
  ------------------
  443|      1|    string = &_Py_ID(__isub__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  444|      1|    _PyUnicode_InternStatic(interp, &string);
  445|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (445:5): [True: 1, False: 0]
  ------------------
  446|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (446:5): [True: 1, False: 0]
  ------------------
  447|      1|    string = &_Py_ID(__iter__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  448|      1|    _PyUnicode_InternStatic(interp, &string);
  449|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (449:5): [True: 1, False: 0]
  ------------------
  450|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (450:5): [True: 1, False: 0]
  ------------------
  451|      1|    string = &_Py_ID(__itruediv__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  452|      1|    _PyUnicode_InternStatic(interp, &string);
  453|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (453:5): [True: 1, False: 0]
  ------------------
  454|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (454:5): [True: 1, False: 0]
  ------------------
  455|      1|    string = &_Py_ID(__ixor__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  456|      1|    _PyUnicode_InternStatic(interp, &string);
  457|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (457:5): [True: 1, False: 0]
  ------------------
  458|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (458:5): [True: 1, False: 0]
  ------------------
  459|      1|    string = &_Py_ID(__lazy_import__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  460|      1|    _PyUnicode_InternStatic(interp, &string);
  461|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (461:5): [True: 1, False: 0]
  ------------------
  462|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (462:5): [True: 1, False: 0]
  ------------------
  463|      1|    string = &_Py_ID(__lazy_modules__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  464|      1|    _PyUnicode_InternStatic(interp, &string);
  465|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (465:5): [True: 1, False: 0]
  ------------------
  466|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (466:5): [True: 1, False: 0]
  ------------------
  467|      1|    string = &_Py_ID(__le__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  468|      1|    _PyUnicode_InternStatic(interp, &string);
  469|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (469:5): [True: 1, False: 0]
  ------------------
  470|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (470:5): [True: 1, False: 0]
  ------------------
  471|      1|    string = &_Py_ID(__len__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  472|      1|    _PyUnicode_InternStatic(interp, &string);
  473|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (473:5): [True: 1, False: 0]
  ------------------
  474|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (474:5): [True: 1, False: 0]
  ------------------
  475|      1|    string = &_Py_ID(__length_hint__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  476|      1|    _PyUnicode_InternStatic(interp, &string);
  477|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (477:5): [True: 1, False: 0]
  ------------------
  478|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (478:5): [True: 1, False: 0]
  ------------------
  479|      1|    string = &_Py_ID(__lltrace__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  480|      1|    _PyUnicode_InternStatic(interp, &string);
  481|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (481:5): [True: 1, False: 0]
  ------------------
  482|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (482:5): [True: 1, False: 0]
  ------------------
  483|      1|    string = &_Py_ID(__loader__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  484|      1|    _PyUnicode_InternStatic(interp, &string);
  485|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (485:5): [True: 1, False: 0]
  ------------------
  486|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (486:5): [True: 1, False: 0]
  ------------------
  487|      1|    string = &_Py_ID(__lshift__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  488|      1|    _PyUnicode_InternStatic(interp, &string);
  489|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (489:5): [True: 1, False: 0]
  ------------------
  490|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (490:5): [True: 1, False: 0]
  ------------------
  491|      1|    string = &_Py_ID(__lt__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  492|      1|    _PyUnicode_InternStatic(interp, &string);
  493|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (493:5): [True: 1, False: 0]
  ------------------
  494|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (494:5): [True: 1, False: 0]
  ------------------
  495|      1|    string = &_Py_ID(__main__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  496|      1|    _PyUnicode_InternStatic(interp, &string);
  497|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (497:5): [True: 1, False: 0]
  ------------------
  498|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (498:5): [True: 1, False: 0]
  ------------------
  499|      1|    string = &_Py_ID(__match_args__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  500|      1|    _PyUnicode_InternStatic(interp, &string);
  501|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (501:5): [True: 1, False: 0]
  ------------------
  502|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (502:5): [True: 1, False: 0]
  ------------------
  503|      1|    string = &_Py_ID(__matmul__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  504|      1|    _PyUnicode_InternStatic(interp, &string);
  505|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (505:5): [True: 1, False: 0]
  ------------------
  506|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (506:5): [True: 1, False: 0]
  ------------------
  507|      1|    string = &_Py_ID(__missing__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  508|      1|    _PyUnicode_InternStatic(interp, &string);
  509|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (509:5): [True: 1, False: 0]
  ------------------
  510|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (510:5): [True: 1, False: 0]
  ------------------
  511|      1|    string = &_Py_ID(__mod__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  512|      1|    _PyUnicode_InternStatic(interp, &string);
  513|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (513:5): [True: 1, False: 0]
  ------------------
  514|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (514:5): [True: 1, False: 0]
  ------------------
  515|      1|    string = &_Py_ID(__module__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  516|      1|    _PyUnicode_InternStatic(interp, &string);
  517|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (517:5): [True: 1, False: 0]
  ------------------
  518|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (518:5): [True: 1, False: 0]
  ------------------
  519|      1|    string = &_Py_ID(__mro_entries__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  520|      1|    _PyUnicode_InternStatic(interp, &string);
  521|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (521:5): [True: 1, False: 0]
  ------------------
  522|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (522:5): [True: 1, False: 0]
  ------------------
  523|      1|    string = &_Py_ID(__mul__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  524|      1|    _PyUnicode_InternStatic(interp, &string);
  525|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (525:5): [True: 1, False: 0]
  ------------------
  526|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (526:5): [True: 1, False: 0]
  ------------------
  527|      1|    string = &_Py_ID(__name__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  528|      1|    _PyUnicode_InternStatic(interp, &string);
  529|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (529:5): [True: 1, False: 0]
  ------------------
  530|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (530:5): [True: 1, False: 0]
  ------------------
  531|      1|    string = &_Py_ID(__ne__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  532|      1|    _PyUnicode_InternStatic(interp, &string);
  533|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (533:5): [True: 1, False: 0]
  ------------------
  534|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (534:5): [True: 1, False: 0]
  ------------------
  535|      1|    string = &_Py_ID(__neg__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  536|      1|    _PyUnicode_InternStatic(interp, &string);
  537|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (537:5): [True: 1, False: 0]
  ------------------
  538|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (538:5): [True: 1, False: 0]
  ------------------
  539|      1|    string = &_Py_ID(__new__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  540|      1|    _PyUnicode_InternStatic(interp, &string);
  541|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (541:5): [True: 1, False: 0]
  ------------------
  542|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (542:5): [True: 1, False: 0]
  ------------------
  543|      1|    string = &_Py_ID(__newobj__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  544|      1|    _PyUnicode_InternStatic(interp, &string);
  545|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (545:5): [True: 1, False: 0]
  ------------------
  546|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (546:5): [True: 1, False: 0]
  ------------------
  547|      1|    string = &_Py_ID(__newobj_ex__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  548|      1|    _PyUnicode_InternStatic(interp, &string);
  549|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (549:5): [True: 1, False: 0]
  ------------------
  550|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (550:5): [True: 1, False: 0]
  ------------------
  551|      1|    string = &_Py_ID(__next__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  552|      1|    _PyUnicode_InternStatic(interp, &string);
  553|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (553:5): [True: 1, False: 0]
  ------------------
  554|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (554:5): [True: 1, False: 0]
  ------------------
  555|      1|    string = &_Py_ID(__notes__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  556|      1|    _PyUnicode_InternStatic(interp, &string);
  557|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (557:5): [True: 1, False: 0]
  ------------------
  558|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (558:5): [True: 1, False: 0]
  ------------------
  559|      1|    string = &_Py_ID(__or__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  560|      1|    _PyUnicode_InternStatic(interp, &string);
  561|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (561:5): [True: 1, False: 0]
  ------------------
  562|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (562:5): [True: 1, False: 0]
  ------------------
  563|      1|    string = &_Py_ID(__orig_class__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  564|      1|    _PyUnicode_InternStatic(interp, &string);
  565|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (565:5): [True: 1, False: 0]
  ------------------
  566|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (566:5): [True: 1, False: 0]
  ------------------
  567|      1|    string = &_Py_ID(__origin__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  568|      1|    _PyUnicode_InternStatic(interp, &string);
  569|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (569:5): [True: 1, False: 0]
  ------------------
  570|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (570:5): [True: 1, False: 0]
  ------------------
  571|      1|    string = &_Py_ID(__package__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  572|      1|    _PyUnicode_InternStatic(interp, &string);
  573|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (573:5): [True: 1, False: 0]
  ------------------
  574|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (574:5): [True: 1, False: 0]
  ------------------
  575|      1|    string = &_Py_ID(__parameters__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  576|      1|    _PyUnicode_InternStatic(interp, &string);
  577|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (577:5): [True: 1, False: 0]
  ------------------
  578|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (578:5): [True: 1, False: 0]
  ------------------
  579|      1|    string = &_Py_ID(__path__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  580|      1|    _PyUnicode_InternStatic(interp, &string);
  581|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (581:5): [True: 1, False: 0]
  ------------------
  582|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (582:5): [True: 1, False: 0]
  ------------------
  583|      1|    string = &_Py_ID(__pos__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  584|      1|    _PyUnicode_InternStatic(interp, &string);
  585|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (585:5): [True: 1, False: 0]
  ------------------
  586|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (586:5): [True: 1, False: 0]
  ------------------
  587|      1|    string = &_Py_ID(__pow__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  588|      1|    _PyUnicode_InternStatic(interp, &string);
  589|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (589:5): [True: 1, False: 0]
  ------------------
  590|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (590:5): [True: 1, False: 0]
  ------------------
  591|      1|    string = &_Py_ID(__prepare__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  592|      1|    _PyUnicode_InternStatic(interp, &string);
  593|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (593:5): [True: 1, False: 0]
  ------------------
  594|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (594:5): [True: 1, False: 0]
  ------------------
  595|      1|    string = &_Py_ID(__qualname__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  596|      1|    _PyUnicode_InternStatic(interp, &string);
  597|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (597:5): [True: 1, False: 0]
  ------------------
  598|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (598:5): [True: 1, False: 0]
  ------------------
  599|      1|    string = &_Py_ID(__radd__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  600|      1|    _PyUnicode_InternStatic(interp, &string);
  601|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (601:5): [True: 1, False: 0]
  ------------------
  602|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (602:5): [True: 1, False: 0]
  ------------------
  603|      1|    string = &_Py_ID(__rand__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  604|      1|    _PyUnicode_InternStatic(interp, &string);
  605|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (605:5): [True: 1, False: 0]
  ------------------
  606|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (606:5): [True: 1, False: 0]
  ------------------
  607|      1|    string = &_Py_ID(__rdivmod__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  608|      1|    _PyUnicode_InternStatic(interp, &string);
  609|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (609:5): [True: 1, False: 0]
  ------------------
  610|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (610:5): [True: 1, False: 0]
  ------------------
  611|      1|    string = &_Py_ID(__reduce__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  612|      1|    _PyUnicode_InternStatic(interp, &string);
  613|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (613:5): [True: 1, False: 0]
  ------------------
  614|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (614:5): [True: 1, False: 0]
  ------------------
  615|      1|    string = &_Py_ID(__reduce_ex__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  616|      1|    _PyUnicode_InternStatic(interp, &string);
  617|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (617:5): [True: 1, False: 0]
  ------------------
  618|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (618:5): [True: 1, False: 0]
  ------------------
  619|      1|    string = &_Py_ID(__release_buffer__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  620|      1|    _PyUnicode_InternStatic(interp, &string);
  621|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (621:5): [True: 1, False: 0]
  ------------------
  622|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (622:5): [True: 1, False: 0]
  ------------------
  623|      1|    string = &_Py_ID(__repr__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  624|      1|    _PyUnicode_InternStatic(interp, &string);
  625|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (625:5): [True: 1, False: 0]
  ------------------
  626|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (626:5): [True: 1, False: 0]
  ------------------
  627|      1|    string = &_Py_ID(__reversed__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  628|      1|    _PyUnicode_InternStatic(interp, &string);
  629|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (629:5): [True: 1, False: 0]
  ------------------
  630|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (630:5): [True: 1, False: 0]
  ------------------
  631|      1|    string = &_Py_ID(__rfloordiv__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  632|      1|    _PyUnicode_InternStatic(interp, &string);
  633|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (633:5): [True: 1, False: 0]
  ------------------
  634|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (634:5): [True: 1, False: 0]
  ------------------
  635|      1|    string = &_Py_ID(__rlshift__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  636|      1|    _PyUnicode_InternStatic(interp, &string);
  637|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (637:5): [True: 1, False: 0]
  ------------------
  638|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (638:5): [True: 1, False: 0]
  ------------------
  639|      1|    string = &_Py_ID(__rmatmul__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  640|      1|    _PyUnicode_InternStatic(interp, &string);
  641|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (641:5): [True: 1, False: 0]
  ------------------
  642|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (642:5): [True: 1, False: 0]
  ------------------
  643|      1|    string = &_Py_ID(__rmod__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  644|      1|    _PyUnicode_InternStatic(interp, &string);
  645|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (645:5): [True: 1, False: 0]
  ------------------
  646|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (646:5): [True: 1, False: 0]
  ------------------
  647|      1|    string = &_Py_ID(__rmul__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  648|      1|    _PyUnicode_InternStatic(interp, &string);
  649|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (649:5): [True: 1, False: 0]
  ------------------
  650|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (650:5): [True: 1, False: 0]
  ------------------
  651|      1|    string = &_Py_ID(__ror__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  652|      1|    _PyUnicode_InternStatic(interp, &string);
  653|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (653:5): [True: 1, False: 0]
  ------------------
  654|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (654:5): [True: 1, False: 0]
  ------------------
  655|      1|    string = &_Py_ID(__round__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  656|      1|    _PyUnicode_InternStatic(interp, &string);
  657|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (657:5): [True: 1, False: 0]
  ------------------
  658|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (658:5): [True: 1, False: 0]
  ------------------
  659|      1|    string = &_Py_ID(__rpow__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  660|      1|    _PyUnicode_InternStatic(interp, &string);
  661|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (661:5): [True: 1, False: 0]
  ------------------
  662|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (662:5): [True: 1, False: 0]
  ------------------
  663|      1|    string = &_Py_ID(__rrshift__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  664|      1|    _PyUnicode_InternStatic(interp, &string);
  665|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (665:5): [True: 1, False: 0]
  ------------------
  666|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (666:5): [True: 1, False: 0]
  ------------------
  667|      1|    string = &_Py_ID(__rshift__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  668|      1|    _PyUnicode_InternStatic(interp, &string);
  669|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (669:5): [True: 1, False: 0]
  ------------------
  670|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (670:5): [True: 1, False: 0]
  ------------------
  671|      1|    string = &_Py_ID(__rsub__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  672|      1|    _PyUnicode_InternStatic(interp, &string);
  673|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (673:5): [True: 1, False: 0]
  ------------------
  674|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (674:5): [True: 1, False: 0]
  ------------------
  675|      1|    string = &_Py_ID(__rtruediv__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  676|      1|    _PyUnicode_InternStatic(interp, &string);
  677|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (677:5): [True: 1, False: 0]
  ------------------
  678|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (678:5): [True: 1, False: 0]
  ------------------
  679|      1|    string = &_Py_ID(__rxor__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  680|      1|    _PyUnicode_InternStatic(interp, &string);
  681|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (681:5): [True: 1, False: 0]
  ------------------
  682|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (682:5): [True: 1, False: 0]
  ------------------
  683|      1|    string = &_Py_ID(__set__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  684|      1|    _PyUnicode_InternStatic(interp, &string);
  685|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (685:5): [True: 1, False: 0]
  ------------------
  686|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (686:5): [True: 1, False: 0]
  ------------------
  687|      1|    string = &_Py_ID(__set_name__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  688|      1|    _PyUnicode_InternStatic(interp, &string);
  689|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (689:5): [True: 1, False: 0]
  ------------------
  690|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (690:5): [True: 1, False: 0]
  ------------------
  691|      1|    string = &_Py_ID(__setattr__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  692|      1|    _PyUnicode_InternStatic(interp, &string);
  693|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (693:5): [True: 1, False: 0]
  ------------------
  694|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (694:5): [True: 1, False: 0]
  ------------------
  695|      1|    string = &_Py_ID(__setitem__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  696|      1|    _PyUnicode_InternStatic(interp, &string);
  697|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (697:5): [True: 1, False: 0]
  ------------------
  698|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (698:5): [True: 1, False: 0]
  ------------------
  699|      1|    string = &_Py_ID(__setstate__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  700|      1|    _PyUnicode_InternStatic(interp, &string);
  701|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (701:5): [True: 1, False: 0]
  ------------------
  702|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (702:5): [True: 1, False: 0]
  ------------------
  703|      1|    string = &_Py_ID(__sizeof__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  704|      1|    _PyUnicode_InternStatic(interp, &string);
  705|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (705:5): [True: 1, False: 0]
  ------------------
  706|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (706:5): [True: 1, False: 0]
  ------------------
  707|      1|    string = &_Py_ID(__slotnames__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  708|      1|    _PyUnicode_InternStatic(interp, &string);
  709|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (709:5): [True: 1, False: 0]
  ------------------
  710|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (710:5): [True: 1, False: 0]
  ------------------
  711|      1|    string = &_Py_ID(__slots__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  712|      1|    _PyUnicode_InternStatic(interp, &string);
  713|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (713:5): [True: 1, False: 0]
  ------------------
  714|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (714:5): [True: 1, False: 0]
  ------------------
  715|      1|    string = &_Py_ID(__spec__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  716|      1|    _PyUnicode_InternStatic(interp, &string);
  717|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (717:5): [True: 1, False: 0]
  ------------------
  718|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (718:5): [True: 1, False: 0]
  ------------------
  719|      1|    string = &_Py_ID(__static_attributes__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  720|      1|    _PyUnicode_InternStatic(interp, &string);
  721|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (721:5): [True: 1, False: 0]
  ------------------
  722|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (722:5): [True: 1, False: 0]
  ------------------
  723|      1|    string = &_Py_ID(__str__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  724|      1|    _PyUnicode_InternStatic(interp, &string);
  725|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (725:5): [True: 1, False: 0]
  ------------------
  726|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (726:5): [True: 1, False: 0]
  ------------------
  727|      1|    string = &_Py_ID(__sub__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  728|      1|    _PyUnicode_InternStatic(interp, &string);
  729|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (729:5): [True: 1, False: 0]
  ------------------
  730|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (730:5): [True: 1, False: 0]
  ------------------
  731|      1|    string = &_Py_ID(__subclasscheck__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  732|      1|    _PyUnicode_InternStatic(interp, &string);
  733|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (733:5): [True: 1, False: 0]
  ------------------
  734|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (734:5): [True: 1, False: 0]
  ------------------
  735|      1|    string = &_Py_ID(__subclasshook__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  736|      1|    _PyUnicode_InternStatic(interp, &string);
  737|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (737:5): [True: 1, False: 0]
  ------------------
  738|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (738:5): [True: 1, False: 0]
  ------------------
  739|      1|    string = &_Py_ID(__truediv__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  740|      1|    _PyUnicode_InternStatic(interp, &string);
  741|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (741:5): [True: 1, False: 0]
  ------------------
  742|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (742:5): [True: 1, False: 0]
  ------------------
  743|      1|    string = &_Py_ID(__trunc__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  744|      1|    _PyUnicode_InternStatic(interp, &string);
  745|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (745:5): [True: 1, False: 0]
  ------------------
  746|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (746:5): [True: 1, False: 0]
  ------------------
  747|      1|    string = &_Py_ID(__type_params__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  748|      1|    _PyUnicode_InternStatic(interp, &string);
  749|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (749:5): [True: 1, False: 0]
  ------------------
  750|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (750:5): [True: 1, False: 0]
  ------------------
  751|      1|    string = &_Py_ID(__typing_is_unpacked_typevartuple__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  752|      1|    _PyUnicode_InternStatic(interp, &string);
  753|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (753:5): [True: 1, False: 0]
  ------------------
  754|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (754:5): [True: 1, False: 0]
  ------------------
  755|      1|    string = &_Py_ID(__typing_prepare_subst__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  756|      1|    _PyUnicode_InternStatic(interp, &string);
  757|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (757:5): [True: 1, False: 0]
  ------------------
  758|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (758:5): [True: 1, False: 0]
  ------------------
  759|      1|    string = &_Py_ID(__typing_subst__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  760|      1|    _PyUnicode_InternStatic(interp, &string);
  761|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (761:5): [True: 1, False: 0]
  ------------------
  762|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (762:5): [True: 1, False: 0]
  ------------------
  763|      1|    string = &_Py_ID(__typing_unpacked_tuple_args__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  764|      1|    _PyUnicode_InternStatic(interp, &string);
  765|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (765:5): [True: 1, False: 0]
  ------------------
  766|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (766:5): [True: 1, False: 0]
  ------------------
  767|      1|    string = &_Py_ID(__warningregistry__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  768|      1|    _PyUnicode_InternStatic(interp, &string);
  769|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (769:5): [True: 1, False: 0]
  ------------------
  770|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (770:5): [True: 1, False: 0]
  ------------------
  771|      1|    string = &_Py_ID(__weaklistoffset__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  772|      1|    _PyUnicode_InternStatic(interp, &string);
  773|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (773:5): [True: 1, False: 0]
  ------------------
  774|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (774:5): [True: 1, False: 0]
  ------------------
  775|      1|    string = &_Py_ID(__weakref__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  776|      1|    _PyUnicode_InternStatic(interp, &string);
  777|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (777:5): [True: 1, False: 0]
  ------------------
  778|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (778:5): [True: 1, False: 0]
  ------------------
  779|      1|    string = &_Py_ID(__xor__);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  780|      1|    _PyUnicode_InternStatic(interp, &string);
  781|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (781:5): [True: 1, False: 0]
  ------------------
  782|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (782:5): [True: 1, False: 0]
  ------------------
  783|      1|    string = &_Py_ID(_abc_impl);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  784|      1|    _PyUnicode_InternStatic(interp, &string);
  785|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (785:5): [True: 1, False: 0]
  ------------------
  786|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (786:5): [True: 1, False: 0]
  ------------------
  787|      1|    string = &_Py_ID(_abstract_);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  788|      1|    _PyUnicode_InternStatic(interp, &string);
  789|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (789:5): [True: 1, False: 0]
  ------------------
  790|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (790:5): [True: 1, False: 0]
  ------------------
  791|      1|    string = &_Py_ID(_active);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  792|      1|    _PyUnicode_InternStatic(interp, &string);
  793|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (793:5): [True: 1, False: 0]
  ------------------
  794|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (794:5): [True: 1, False: 0]
  ------------------
  795|      1|    string = &_Py_ID(_anonymous_);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  796|      1|    _PyUnicode_InternStatic(interp, &string);
  797|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (797:5): [True: 1, False: 0]
  ------------------
  798|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (798:5): [True: 1, False: 0]
  ------------------
  799|      1|    string = &_Py_ID(_argtypes_);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  800|      1|    _PyUnicode_InternStatic(interp, &string);
  801|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (801:5): [True: 1, False: 0]
  ------------------
  802|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (802:5): [True: 1, False: 0]
  ------------------
  803|      1|    string = &_Py_ID(_as_parameter_);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  804|      1|    _PyUnicode_InternStatic(interp, &string);
  805|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (805:5): [True: 1, False: 0]
  ------------------
  806|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (806:5): [True: 1, False: 0]
  ------------------
  807|      1|    string = &_Py_ID(_asyncio_future_blocking);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  808|      1|    _PyUnicode_InternStatic(interp, &string);
  809|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (809:5): [True: 1, False: 0]
  ------------------
  810|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (810:5): [True: 1, False: 0]
  ------------------
  811|      1|    string = &_Py_ID(_blksize);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  812|      1|    _PyUnicode_InternStatic(interp, &string);
  813|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (813:5): [True: 1, False: 0]
  ------------------
  814|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (814:5): [True: 1, False: 0]
  ------------------
  815|      1|    string = &_Py_ID(_bootstrap);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  816|      1|    _PyUnicode_InternStatic(interp, &string);
  817|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (817:5): [True: 1, False: 0]
  ------------------
  818|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (818:5): [True: 1, False: 0]
  ------------------
  819|      1|    string = &_Py_ID(_check_retval_);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  820|      1|    _PyUnicode_InternStatic(interp, &string);
  821|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (821:5): [True: 1, False: 0]
  ------------------
  822|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (822:5): [True: 1, False: 0]
  ------------------
  823|      1|    string = &_Py_ID(_dealloc_warn);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  824|      1|    _PyUnicode_InternStatic(interp, &string);
  825|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (825:5): [True: 1, False: 0]
  ------------------
  826|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (826:5): [True: 1, False: 0]
  ------------------
  827|      1|    string = &_Py_ID(_feature_version);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  828|      1|    _PyUnicode_InternStatic(interp, &string);
  829|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (829:5): [True: 1, False: 0]
  ------------------
  830|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (830:5): [True: 1, False: 0]
  ------------------
  831|      1|    string = &_Py_ID(_field_types);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  832|      1|    _PyUnicode_InternStatic(interp, &string);
  833|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (833:5): [True: 1, False: 0]
  ------------------
  834|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (834:5): [True: 1, False: 0]
  ------------------
  835|      1|    string = &_Py_ID(_fields_);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  836|      1|    _PyUnicode_InternStatic(interp, &string);
  837|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (837:5): [True: 1, False: 0]
  ------------------
  838|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (838:5): [True: 1, False: 0]
  ------------------
  839|      1|    string = &_Py_ID(_filters);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  840|      1|    _PyUnicode_InternStatic(interp, &string);
  841|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (841:5): [True: 1, False: 0]
  ------------------
  842|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (842:5): [True: 1, False: 0]
  ------------------
  843|      1|    string = &_Py_ID(_finalizing);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  844|      1|    _PyUnicode_InternStatic(interp, &string);
  845|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (845:5): [True: 1, False: 0]
  ------------------
  846|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (846:5): [True: 1, False: 0]
  ------------------
  847|      1|    string = &_Py_ID(_find_and_load);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  848|      1|    _PyUnicode_InternStatic(interp, &string);
  849|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (849:5): [True: 1, False: 0]
  ------------------
  850|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (850:5): [True: 1, False: 0]
  ------------------
  851|      1|    string = &_Py_ID(_fix_up_module);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  852|      1|    _PyUnicode_InternStatic(interp, &string);
  853|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (853:5): [True: 1, False: 0]
  ------------------
  854|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (854:5): [True: 1, False: 0]
  ------------------
  855|      1|    string = &_Py_ID(_flags_);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  856|      1|    _PyUnicode_InternStatic(interp, &string);
  857|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (857:5): [True: 1, False: 0]
  ------------------
  858|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (858:5): [True: 1, False: 0]
  ------------------
  859|      1|    string = &_Py_ID(_get_sourcefile);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  860|      1|    _PyUnicode_InternStatic(interp, &string);
  861|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (861:5): [True: 1, False: 0]
  ------------------
  862|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (862:5): [True: 1, False: 0]
  ------------------
  863|      1|    string = &_Py_ID(_handle_fromlist);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  864|      1|    _PyUnicode_InternStatic(interp, &string);
  865|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (865:5): [True: 1, False: 0]
  ------------------
  866|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (866:5): [True: 1, False: 0]
  ------------------
  867|      1|    string = &_Py_ID(_initializing);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  868|      1|    _PyUnicode_InternStatic(interp, &string);
  869|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (869:5): [True: 1, False: 0]
  ------------------
  870|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (870:5): [True: 1, False: 0]
  ------------------
  871|      1|    string = &_Py_ID(_internal_use);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  872|      1|    _PyUnicode_InternStatic(interp, &string);
  873|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (873:5): [True: 1, False: 0]
  ------------------
  874|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (874:5): [True: 1, False: 0]
  ------------------
  875|      1|    string = &_Py_ID(_io);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  876|      1|    _PyUnicode_InternStatic(interp, &string);
  877|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (877:5): [True: 1, False: 0]
  ------------------
  878|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (878:5): [True: 1, False: 0]
  ------------------
  879|      1|    string = &_Py_ID(_is_text_encoding);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  880|      1|    _PyUnicode_InternStatic(interp, &string);
  881|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (881:5): [True: 1, False: 0]
  ------------------
  882|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (882:5): [True: 1, False: 0]
  ------------------
  883|      1|    string = &_Py_ID(_isatty_open_only);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  884|      1|    _PyUnicode_InternStatic(interp, &string);
  885|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (885:5): [True: 1, False: 0]
  ------------------
  886|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (886:5): [True: 1, False: 0]
  ------------------
  887|      1|    string = &_Py_ID(_length_);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  888|      1|    _PyUnicode_InternStatic(interp, &string);
  889|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (889:5): [True: 1, False: 0]
  ------------------
  890|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (890:5): [True: 1, False: 0]
  ------------------
  891|      1|    string = &_Py_ID(_limbo);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  892|      1|    _PyUnicode_InternStatic(interp, &string);
  893|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (893:5): [True: 1, False: 0]
  ------------------
  894|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (894:5): [True: 1, False: 0]
  ------------------
  895|      1|    string = &_Py_ID(_lock_unlock_module);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  896|      1|    _PyUnicode_InternStatic(interp, &string);
  897|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (897:5): [True: 1, False: 0]
  ------------------
  898|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (898:5): [True: 1, False: 0]
  ------------------
  899|      1|    string = &_Py_ID(_loop);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  900|      1|    _PyUnicode_InternStatic(interp, &string);
  901|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (901:5): [True: 1, False: 0]
  ------------------
  902|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (902:5): [True: 1, False: 0]
  ------------------
  903|      1|    string = &_Py_ID(_needs_com_addref_);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  904|      1|    _PyUnicode_InternStatic(interp, &string);
  905|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (905:5): [True: 1, False: 0]
  ------------------
  906|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (906:5): [True: 1, False: 0]
  ------------------
  907|      1|    string = &_Py_ID(_only_immortal);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  908|      1|    _PyUnicode_InternStatic(interp, &string);
  909|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (909:5): [True: 1, False: 0]
  ------------------
  910|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (910:5): [True: 1, False: 0]
  ------------------
  911|      1|    string = &_Py_ID(_restype_);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  912|      1|    _PyUnicode_InternStatic(interp, &string);
  913|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (913:5): [True: 1, False: 0]
  ------------------
  914|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (914:5): [True: 1, False: 0]
  ------------------
  915|      1|    string = &_Py_ID(_showwarnmsg);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  916|      1|    _PyUnicode_InternStatic(interp, &string);
  917|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (917:5): [True: 1, False: 0]
  ------------------
  918|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (918:5): [True: 1, False: 0]
  ------------------
  919|      1|    string = &_Py_ID(_shutdown);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  920|      1|    _PyUnicode_InternStatic(interp, &string);
  921|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (921:5): [True: 1, False: 0]
  ------------------
  922|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (922:5): [True: 1, False: 0]
  ------------------
  923|      1|    string = &_Py_ID(_slotnames);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  924|      1|    _PyUnicode_InternStatic(interp, &string);
  925|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (925:5): [True: 1, False: 0]
  ------------------
  926|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (926:5): [True: 1, False: 0]
  ------------------
  927|      1|    string = &_Py_ID(_strptime);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  928|      1|    _PyUnicode_InternStatic(interp, &string);
  929|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (929:5): [True: 1, False: 0]
  ------------------
  930|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (930:5): [True: 1, False: 0]
  ------------------
  931|      1|    string = &_Py_ID(_strptime_datetime_date);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  932|      1|    _PyUnicode_InternStatic(interp, &string);
  933|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (933:5): [True: 1, False: 0]
  ------------------
  934|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (934:5): [True: 1, False: 0]
  ------------------
  935|      1|    string = &_Py_ID(_strptime_datetime_datetime);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  936|      1|    _PyUnicode_InternStatic(interp, &string);
  937|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (937:5): [True: 1, False: 0]
  ------------------
  938|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (938:5): [True: 1, False: 0]
  ------------------
  939|      1|    string = &_Py_ID(_strptime_datetime_time);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  940|      1|    _PyUnicode_InternStatic(interp, &string);
  941|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (941:5): [True: 1, False: 0]
  ------------------
  942|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (942:5): [True: 1, False: 0]
  ------------------
  943|      1|    string = &_Py_ID(_type_);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  944|      1|    _PyUnicode_InternStatic(interp, &string);
  945|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (945:5): [True: 1, False: 0]
  ------------------
  946|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (946:5): [True: 1, False: 0]
  ------------------
  947|      1|    string = &_Py_ID(_uninitialized_submodules);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  948|      1|    _PyUnicode_InternStatic(interp, &string);
  949|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (949:5): [True: 1, False: 0]
  ------------------
  950|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (950:5): [True: 1, False: 0]
  ------------------
  951|      1|    string = &_Py_ID(_warn_unawaited_coroutine);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  952|      1|    _PyUnicode_InternStatic(interp, &string);
  953|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (953:5): [True: 1, False: 0]
  ------------------
  954|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (954:5): [True: 1, False: 0]
  ------------------
  955|      1|    string = &_Py_ID(_xoptions);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  956|      1|    _PyUnicode_InternStatic(interp, &string);
  957|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (957:5): [True: 1, False: 0]
  ------------------
  958|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (958:5): [True: 1, False: 0]
  ------------------
  959|      1|    string = &_Py_ID(abs_tol);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  960|      1|    _PyUnicode_InternStatic(interp, &string);
  961|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (961:5): [True: 1, False: 0]
  ------------------
  962|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (962:5): [True: 1, False: 0]
  ------------------
  963|      1|    string = &_Py_ID(access);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  964|      1|    _PyUnicode_InternStatic(interp, &string);
  965|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (965:5): [True: 1, False: 0]
  ------------------
  966|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (966:5): [True: 1, False: 0]
  ------------------
  967|      1|    string = &_Py_ID(aclose);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  968|      1|    _PyUnicode_InternStatic(interp, &string);
  969|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (969:5): [True: 1, False: 0]
  ------------------
  970|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (970:5): [True: 1, False: 0]
  ------------------
  971|      1|    string = &_Py_ID(add);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  972|      1|    _PyUnicode_InternStatic(interp, &string);
  973|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (973:5): [True: 1, False: 0]
  ------------------
  974|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (974:5): [True: 1, False: 0]
  ------------------
  975|      1|    string = &_Py_ID(add_done_callback);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  976|      1|    _PyUnicode_InternStatic(interp, &string);
  977|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (977:5): [True: 1, False: 0]
  ------------------
  978|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (978:5): [True: 1, False: 0]
  ------------------
  979|      1|    string = &_Py_ID(adobe);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  980|      1|    _PyUnicode_InternStatic(interp, &string);
  981|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (981:5): [True: 1, False: 0]
  ------------------
  982|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (982:5): [True: 1, False: 0]
  ------------------
  983|      1|    string = &_Py_ID(after_in_child);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  984|      1|    _PyUnicode_InternStatic(interp, &string);
  985|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (985:5): [True: 1, False: 0]
  ------------------
  986|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (986:5): [True: 1, False: 0]
  ------------------
  987|      1|    string = &_Py_ID(after_in_parent);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  988|      1|    _PyUnicode_InternStatic(interp, &string);
  989|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (989:5): [True: 1, False: 0]
  ------------------
  990|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (990:5): [True: 1, False: 0]
  ------------------
  991|      1|    string = &_Py_ID(alias);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  992|      1|    _PyUnicode_InternStatic(interp, &string);
  993|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (993:5): [True: 1, False: 0]
  ------------------
  994|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (994:5): [True: 1, False: 0]
  ------------------
  995|      1|    string = &_Py_ID(align);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  996|      1|    _PyUnicode_InternStatic(interp, &string);
  997|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (997:5): [True: 1, False: 0]
  ------------------
  998|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (998:5): [True: 1, False: 0]
  ------------------
  999|      1|    string = &_Py_ID(all);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1000|      1|    _PyUnicode_InternStatic(interp, &string);
 1001|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1001:5): [True: 1, False: 0]
  ------------------
 1002|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1002:5): [True: 1, False: 0]
  ------------------
 1003|      1|    string = &_Py_ID(all_interpreters);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1004|      1|    _PyUnicode_InternStatic(interp, &string);
 1005|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1005:5): [True: 1, False: 0]
  ------------------
 1006|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1006:5): [True: 1, False: 0]
  ------------------
 1007|      1|    string = &_Py_ID(all_threads);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1008|      1|    _PyUnicode_InternStatic(interp, &string);
 1009|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1009:5): [True: 1, False: 0]
  ------------------
 1010|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1010:5): [True: 1, False: 0]
  ------------------
 1011|      1|    string = &_Py_ID(allow_code);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1012|      1|    _PyUnicode_InternStatic(interp, &string);
 1013|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1013:5): [True: 1, False: 0]
  ------------------
 1014|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1014:5): [True: 1, False: 0]
  ------------------
 1015|      1|    string = &_Py_ID(alphabet);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1016|      1|    _PyUnicode_InternStatic(interp, &string);
 1017|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1017:5): [True: 1, False: 0]
  ------------------
 1018|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1018:5): [True: 1, False: 0]
  ------------------
 1019|      1|    string = &_Py_ID(any);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1020|      1|    _PyUnicode_InternStatic(interp, &string);
 1021|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1021:5): [True: 1, False: 0]
  ------------------
 1022|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1022:5): [True: 1, False: 0]
  ------------------
 1023|      1|    string = &_Py_ID(append);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1024|      1|    _PyUnicode_InternStatic(interp, &string);
 1025|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1025:5): [True: 1, False: 0]
  ------------------
 1026|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1026:5): [True: 1, False: 0]
  ------------------
 1027|      1|    string = &_Py_ID(arg);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1028|      1|    _PyUnicode_InternStatic(interp, &string);
 1029|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1029:5): [True: 1, False: 0]
  ------------------
 1030|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1030:5): [True: 1, False: 0]
  ------------------
 1031|      1|    string = &_Py_ID(argdefs);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1032|      1|    _PyUnicode_InternStatic(interp, &string);
 1033|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1033:5): [True: 1, False: 0]
  ------------------
 1034|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1034:5): [True: 1, False: 0]
  ------------------
 1035|      1|    string = &_Py_ID(args);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1036|      1|    _PyUnicode_InternStatic(interp, &string);
 1037|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1037:5): [True: 1, False: 0]
  ------------------
 1038|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1038:5): [True: 1, False: 0]
  ------------------
 1039|      1|    string = &_Py_ID(arguments);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1040|      1|    _PyUnicode_InternStatic(interp, &string);
 1041|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1041:5): [True: 1, False: 0]
  ------------------
 1042|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1042:5): [True: 1, False: 0]
  ------------------
 1043|      1|    string = &_Py_ID(argv);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1044|      1|    _PyUnicode_InternStatic(interp, &string);
 1045|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1045:5): [True: 1, False: 0]
  ------------------
 1046|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1046:5): [True: 1, False: 0]
  ------------------
 1047|      1|    string = &_Py_ID(as_integer_ratio);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1048|      1|    _PyUnicode_InternStatic(interp, &string);
 1049|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1049:5): [True: 1, False: 0]
  ------------------
 1050|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1050:5): [True: 1, False: 0]
  ------------------
 1051|      1|    string = &_Py_ID(asend);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1052|      1|    _PyUnicode_InternStatic(interp, &string);
 1053|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1053:5): [True: 1, False: 0]
  ------------------
 1054|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1054:5): [True: 1, False: 0]
  ------------------
 1055|      1|    string = &_Py_ID(ast);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1056|      1|    _PyUnicode_InternStatic(interp, &string);
 1057|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1057:5): [True: 1, False: 0]
  ------------------
 1058|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1058:5): [True: 1, False: 0]
  ------------------
 1059|      1|    string = &_Py_ID(athrow);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1060|      1|    _PyUnicode_InternStatic(interp, &string);
 1061|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1061:5): [True: 1, False: 0]
  ------------------
 1062|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1062:5): [True: 1, False: 0]
  ------------------
 1063|      1|    string = &_Py_ID(attribute);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1064|      1|    _PyUnicode_InternStatic(interp, &string);
 1065|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1065:5): [True: 1, False: 0]
  ------------------
 1066|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1066:5): [True: 1, False: 0]
  ------------------
 1067|      1|    string = &_Py_ID(autocommit);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1068|      1|    _PyUnicode_InternStatic(interp, &string);
 1069|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1069:5): [True: 1, False: 0]
  ------------------
 1070|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1070:5): [True: 1, False: 0]
  ------------------
 1071|      1|    string = &_Py_ID(backtick);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1072|      1|    _PyUnicode_InternStatic(interp, &string);
 1073|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1073:5): [True: 1, False: 0]
  ------------------
 1074|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1074:5): [True: 1, False: 0]
  ------------------
 1075|      1|    string = &_Py_ID(base);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1076|      1|    _PyUnicode_InternStatic(interp, &string);
 1077|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1077:5): [True: 1, False: 0]
  ------------------
 1078|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1078:5): [True: 1, False: 0]
  ------------------
 1079|      1|    string = &_Py_ID(before);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1080|      1|    _PyUnicode_InternStatic(interp, &string);
 1081|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1081:5): [True: 1, False: 0]
  ------------------
 1082|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1082:5): [True: 1, False: 0]
  ------------------
 1083|      1|    string = &_Py_ID(big);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1084|      1|    _PyUnicode_InternStatic(interp, &string);
 1085|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1085:5): [True: 1, False: 0]
  ------------------
 1086|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1086:5): [True: 1, False: 0]
  ------------------
 1087|      1|    string = &_Py_ID(binary_form);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1088|      1|    _PyUnicode_InternStatic(interp, &string);
 1089|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1089:5): [True: 1, False: 0]
  ------------------
 1090|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1090:5): [True: 1, False: 0]
  ------------------
 1091|      1|    string = &_Py_ID(bit_offset);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1092|      1|    _PyUnicode_InternStatic(interp, &string);
 1093|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1093:5): [True: 1, False: 0]
  ------------------
 1094|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1094:5): [True: 1, False: 0]
  ------------------
 1095|      1|    string = &_Py_ID(bit_size);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1096|      1|    _PyUnicode_InternStatic(interp, &string);
 1097|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1097:5): [True: 1, False: 0]
  ------------------
 1098|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1098:5): [True: 1, False: 0]
  ------------------
 1099|      1|    string = &_Py_ID(block);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1100|      1|    _PyUnicode_InternStatic(interp, &string);
 1101|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1101:5): [True: 1, False: 0]
  ------------------
 1102|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1102:5): [True: 1, False: 0]
  ------------------
 1103|      1|    string = &_Py_ID(blocking);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1104|      1|    _PyUnicode_InternStatic(interp, &string);
 1105|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1105:5): [True: 1, False: 0]
  ------------------
 1106|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1106:5): [True: 1, False: 0]
  ------------------
 1107|      1|    string = &_Py_ID(bound);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1108|      1|    _PyUnicode_InternStatic(interp, &string);
 1109|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1109:5): [True: 1, False: 0]
  ------------------
 1110|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1110:5): [True: 1, False: 0]
  ------------------
 1111|      1|    string = &_Py_ID(buffer);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1112|      1|    _PyUnicode_InternStatic(interp, &string);
 1113|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1113:5): [True: 1, False: 0]
  ------------------
 1114|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1114:5): [True: 1, False: 0]
  ------------------
 1115|      1|    string = &_Py_ID(buffer_callback);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1116|      1|    _PyUnicode_InternStatic(interp, &string);
 1117|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1117:5): [True: 1, False: 0]
  ------------------
 1118|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1118:5): [True: 1, False: 0]
  ------------------
 1119|      1|    string = &_Py_ID(buffer_size);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1120|      1|    _PyUnicode_InternStatic(interp, &string);
 1121|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1121:5): [True: 1, False: 0]
  ------------------
 1122|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1122:5): [True: 1, False: 0]
  ------------------
 1123|      1|    string = &_Py_ID(buffering);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1124|      1|    _PyUnicode_InternStatic(interp, &string);
 1125|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1125:5): [True: 1, False: 0]
  ------------------
 1126|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1126:5): [True: 1, False: 0]
  ------------------
 1127|      1|    string = &_Py_ID(buffers);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1128|      1|    _PyUnicode_InternStatic(interp, &string);
 1129|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1129:5): [True: 1, False: 0]
  ------------------
 1130|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1130:5): [True: 1, False: 0]
  ------------------
 1131|      1|    string = &_Py_ID(bufsize);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1132|      1|    _PyUnicode_InternStatic(interp, &string);
 1133|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1133:5): [True: 1, False: 0]
  ------------------
 1134|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1134:5): [True: 1, False: 0]
  ------------------
 1135|      1|    string = &_Py_ID(builtins);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1136|      1|    _PyUnicode_InternStatic(interp, &string);
 1137|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1137:5): [True: 1, False: 0]
  ------------------
 1138|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1138:5): [True: 1, False: 0]
  ------------------
 1139|      1|    string = &_Py_ID(byte_offset);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1140|      1|    _PyUnicode_InternStatic(interp, &string);
 1141|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1141:5): [True: 1, False: 0]
  ------------------
 1142|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1142:5): [True: 1, False: 0]
  ------------------
 1143|      1|    string = &_Py_ID(byte_size);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1144|      1|    _PyUnicode_InternStatic(interp, &string);
 1145|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1145:5): [True: 1, False: 0]
  ------------------
 1146|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1146:5): [True: 1, False: 0]
  ------------------
 1147|      1|    string = &_Py_ID(byteorder);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1148|      1|    _PyUnicode_InternStatic(interp, &string);
 1149|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1149:5): [True: 1, False: 0]
  ------------------
 1150|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1150:5): [True: 1, False: 0]
  ------------------
 1151|      1|    string = &_Py_ID(bytes);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1152|      1|    _PyUnicode_InternStatic(interp, &string);
 1153|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1153:5): [True: 1, False: 0]
  ------------------
 1154|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1154:5): [True: 1, False: 0]
  ------------------
 1155|      1|    string = &_Py_ID(bytes_per_sep);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1156|      1|    _PyUnicode_InternStatic(interp, &string);
 1157|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1157:5): [True: 1, False: 0]
  ------------------
 1158|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1158:5): [True: 1, False: 0]
  ------------------
 1159|      1|    string = &_Py_ID(c_call);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1160|      1|    _PyUnicode_InternStatic(interp, &string);
 1161|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1161:5): [True: 1, False: 0]
  ------------------
 1162|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1162:5): [True: 1, False: 0]
  ------------------
 1163|      1|    string = &_Py_ID(c_exception);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1164|      1|    _PyUnicode_InternStatic(interp, &string);
 1165|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1165:5): [True: 1, False: 0]
  ------------------
 1166|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1166:5): [True: 1, False: 0]
  ------------------
 1167|      1|    string = &_Py_ID(c_parameter_type);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1168|      1|    _PyUnicode_InternStatic(interp, &string);
 1169|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1169:5): [True: 1, False: 0]
  ------------------
 1170|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1170:5): [True: 1, False: 0]
  ------------------
 1171|      1|    string = &_Py_ID(c_return);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1172|      1|    _PyUnicode_InternStatic(interp, &string);
 1173|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1173:5): [True: 1, False: 0]
  ------------------
 1174|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1174:5): [True: 1, False: 0]
  ------------------
 1175|      1|    string = &_Py_ID(c_stack);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1176|      1|    _PyUnicode_InternStatic(interp, &string);
 1177|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1177:5): [True: 1, False: 0]
  ------------------
 1178|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1178:5): [True: 1, False: 0]
  ------------------
 1179|      1|    string = &_Py_ID(cache_frames);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1180|      1|    _PyUnicode_InternStatic(interp, &string);
 1181|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1181:5): [True: 1, False: 0]
  ------------------
 1182|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1182:5): [True: 1, False: 0]
  ------------------
 1183|      1|    string = &_Py_ID(cached_datetime_module);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1184|      1|    _PyUnicode_InternStatic(interp, &string);
 1185|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1185:5): [True: 1, False: 0]
  ------------------
 1186|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1186:5): [True: 1, False: 0]
  ------------------
 1187|      1|    string = &_Py_ID(cached_statements);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1188|      1|    _PyUnicode_InternStatic(interp, &string);
 1189|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1189:5): [True: 1, False: 0]
  ------------------
 1190|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1190:5): [True: 1, False: 0]
  ------------------
 1191|      1|    string = &_Py_ID(cadata);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1192|      1|    _PyUnicode_InternStatic(interp, &string);
 1193|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1193:5): [True: 1, False: 0]
  ------------------
 1194|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1194:5): [True: 1, False: 0]
  ------------------
 1195|      1|    string = &_Py_ID(cafile);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1196|      1|    _PyUnicode_InternStatic(interp, &string);
 1197|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1197:5): [True: 1, False: 0]
  ------------------
 1198|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1198:5): [True: 1, False: 0]
  ------------------
 1199|      1|    string = &_Py_ID(call);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1200|      1|    _PyUnicode_InternStatic(interp, &string);
 1201|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1201:5): [True: 1, False: 0]
  ------------------
 1202|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1202:5): [True: 1, False: 0]
  ------------------
 1203|      1|    string = &_Py_ID(call_exception_handler);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1204|      1|    _PyUnicode_InternStatic(interp, &string);
 1205|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1205:5): [True: 1, False: 0]
  ------------------
 1206|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1206:5): [True: 1, False: 0]
  ------------------
 1207|      1|    string = &_Py_ID(call_soon);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1208|      1|    _PyUnicode_InternStatic(interp, &string);
 1209|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1209:5): [True: 1, False: 0]
  ------------------
 1210|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1210:5): [True: 1, False: 0]
  ------------------
 1211|      1|    string = &_Py_ID(callable);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1212|      1|    _PyUnicode_InternStatic(interp, &string);
 1213|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1213:5): [True: 1, False: 0]
  ------------------
 1214|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1214:5): [True: 1, False: 0]
  ------------------
 1215|      1|    string = &_Py_ID(callback);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1216|      1|    _PyUnicode_InternStatic(interp, &string);
 1217|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1217:5): [True: 1, False: 0]
  ------------------
 1218|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1218:5): [True: 1, False: 0]
  ------------------
 1219|      1|    string = &_Py_ID(cancel);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1220|      1|    _PyUnicode_InternStatic(interp, &string);
 1221|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1221:5): [True: 1, False: 0]
  ------------------
 1222|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1222:5): [True: 1, False: 0]
  ------------------
 1223|      1|    string = &_Py_ID(canonical);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1224|      1|    _PyUnicode_InternStatic(interp, &string);
 1225|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1225:5): [True: 1, False: 0]
  ------------------
 1226|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1226:5): [True: 1, False: 0]
  ------------------
 1227|      1|    string = &_Py_ID(capath);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1228|      1|    _PyUnicode_InternStatic(interp, &string);
 1229|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1229:5): [True: 1, False: 0]
  ------------------
 1230|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1230:5): [True: 1, False: 0]
  ------------------
 1231|      1|    string = &_Py_ID(capitals);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1232|      1|    _PyUnicode_InternStatic(interp, &string);
 1233|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1233:5): [True: 1, False: 0]
  ------------------
 1234|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1234:5): [True: 1, False: 0]
  ------------------
 1235|      1|    string = &_Py_ID(category);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1236|      1|    _PyUnicode_InternStatic(interp, &string);
 1237|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1237:5): [True: 1, False: 0]
  ------------------
 1238|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1238:5): [True: 1, False: 0]
  ------------------
 1239|      1|    string = &_Py_ID(cb_type);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1240|      1|    _PyUnicode_InternStatic(interp, &string);
 1241|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1241:5): [True: 1, False: 0]
  ------------------
 1242|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1242:5): [True: 1, False: 0]
  ------------------
 1243|      1|    string = &_Py_ID(certfile);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1244|      1|    _PyUnicode_InternStatic(interp, &string);
 1245|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1245:5): [True: 1, False: 0]
  ------------------
 1246|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1246:5): [True: 1, False: 0]
  ------------------
 1247|      1|    string = &_Py_ID(chain);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1248|      1|    _PyUnicode_InternStatic(interp, &string);
 1249|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1249:5): [True: 1, False: 0]
  ------------------
 1250|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1250:5): [True: 1, False: 0]
  ------------------
 1251|      1|    string = &_Py_ID(check_same_thread);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1252|      1|    _PyUnicode_InternStatic(interp, &string);
 1253|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1253:5): [True: 1, False: 0]
  ------------------
 1254|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1254:5): [True: 1, False: 0]
  ------------------
 1255|      1|    string = &_Py_ID(clamp);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1256|      1|    _PyUnicode_InternStatic(interp, &string);
 1257|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1257:5): [True: 1, False: 0]
  ------------------
 1258|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1258:5): [True: 1, False: 0]
  ------------------
 1259|      1|    string = &_Py_ID(clear);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1260|      1|    _PyUnicode_InternStatic(interp, &string);
 1261|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1261:5): [True: 1, False: 0]
  ------------------
 1262|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1262:5): [True: 1, False: 0]
  ------------------
 1263|      1|    string = &_Py_ID(close);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1264|      1|    _PyUnicode_InternStatic(interp, &string);
 1265|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1265:5): [True: 1, False: 0]
  ------------------
 1266|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1266:5): [True: 1, False: 0]
  ------------------
 1267|      1|    string = &_Py_ID(closed);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1268|      1|    _PyUnicode_InternStatic(interp, &string);
 1269|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1269:5): [True: 1, False: 0]
  ------------------
 1270|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1270:5): [True: 1, False: 0]
  ------------------
 1271|      1|    string = &_Py_ID(closefd);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1272|      1|    _PyUnicode_InternStatic(interp, &string);
 1273|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1273:5): [True: 1, False: 0]
  ------------------
 1274|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1274:5): [True: 1, False: 0]
  ------------------
 1275|      1|    string = &_Py_ID(closure);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1276|      1|    _PyUnicode_InternStatic(interp, &string);
 1277|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1277:5): [True: 1, False: 0]
  ------------------
 1278|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1278:5): [True: 1, False: 0]
  ------------------
 1279|      1|    string = &_Py_ID(co_argcount);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1280|      1|    _PyUnicode_InternStatic(interp, &string);
 1281|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1281:5): [True: 1, False: 0]
  ------------------
 1282|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1282:5): [True: 1, False: 0]
  ------------------
 1283|      1|    string = &_Py_ID(co_cellvars);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1284|      1|    _PyUnicode_InternStatic(interp, &string);
 1285|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1285:5): [True: 1, False: 0]
  ------------------
 1286|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1286:5): [True: 1, False: 0]
  ------------------
 1287|      1|    string = &_Py_ID(co_code);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1288|      1|    _PyUnicode_InternStatic(interp, &string);
 1289|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1289:5): [True: 1, False: 0]
  ------------------
 1290|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1290:5): [True: 1, False: 0]
  ------------------
 1291|      1|    string = &_Py_ID(co_consts);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1292|      1|    _PyUnicode_InternStatic(interp, &string);
 1293|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1293:5): [True: 1, False: 0]
  ------------------
 1294|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1294:5): [True: 1, False: 0]
  ------------------
 1295|      1|    string = &_Py_ID(co_exceptiontable);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1296|      1|    _PyUnicode_InternStatic(interp, &string);
 1297|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1297:5): [True: 1, False: 0]
  ------------------
 1298|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1298:5): [True: 1, False: 0]
  ------------------
 1299|      1|    string = &_Py_ID(co_filename);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1300|      1|    _PyUnicode_InternStatic(interp, &string);
 1301|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1301:5): [True: 1, False: 0]
  ------------------
 1302|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1302:5): [True: 1, False: 0]
  ------------------
 1303|      1|    string = &_Py_ID(co_firstlineno);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1304|      1|    _PyUnicode_InternStatic(interp, &string);
 1305|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1305:5): [True: 1, False: 0]
  ------------------
 1306|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1306:5): [True: 1, False: 0]
  ------------------
 1307|      1|    string = &_Py_ID(co_flags);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1308|      1|    _PyUnicode_InternStatic(interp, &string);
 1309|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1309:5): [True: 1, False: 0]
  ------------------
 1310|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1310:5): [True: 1, False: 0]
  ------------------
 1311|      1|    string = &_Py_ID(co_freevars);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1312|      1|    _PyUnicode_InternStatic(interp, &string);
 1313|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1313:5): [True: 1, False: 0]
  ------------------
 1314|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1314:5): [True: 1, False: 0]
  ------------------
 1315|      1|    string = &_Py_ID(co_kwonlyargcount);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1316|      1|    _PyUnicode_InternStatic(interp, &string);
 1317|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1317:5): [True: 1, False: 0]
  ------------------
 1318|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1318:5): [True: 1, False: 0]
  ------------------
 1319|      1|    string = &_Py_ID(co_linetable);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1320|      1|    _PyUnicode_InternStatic(interp, &string);
 1321|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1321:5): [True: 1, False: 0]
  ------------------
 1322|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1322:5): [True: 1, False: 0]
  ------------------
 1323|      1|    string = &_Py_ID(co_name);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1324|      1|    _PyUnicode_InternStatic(interp, &string);
 1325|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1325:5): [True: 1, False: 0]
  ------------------
 1326|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1326:5): [True: 1, False: 0]
  ------------------
 1327|      1|    string = &_Py_ID(co_names);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1328|      1|    _PyUnicode_InternStatic(interp, &string);
 1329|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1329:5): [True: 1, False: 0]
  ------------------
 1330|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1330:5): [True: 1, False: 0]
  ------------------
 1331|      1|    string = &_Py_ID(co_nlocals);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1332|      1|    _PyUnicode_InternStatic(interp, &string);
 1333|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1333:5): [True: 1, False: 0]
  ------------------
 1334|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1334:5): [True: 1, False: 0]
  ------------------
 1335|      1|    string = &_Py_ID(co_posonlyargcount);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1336|      1|    _PyUnicode_InternStatic(interp, &string);
 1337|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1337:5): [True: 1, False: 0]
  ------------------
 1338|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1338:5): [True: 1, False: 0]
  ------------------
 1339|      1|    string = &_Py_ID(co_qualname);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1340|      1|    _PyUnicode_InternStatic(interp, &string);
 1341|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1341:5): [True: 1, False: 0]
  ------------------
 1342|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1342:5): [True: 1, False: 0]
  ------------------
 1343|      1|    string = &_Py_ID(co_stacksize);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1344|      1|    _PyUnicode_InternStatic(interp, &string);
 1345|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1345:5): [True: 1, False: 0]
  ------------------
 1346|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1346:5): [True: 1, False: 0]
  ------------------
 1347|      1|    string = &_Py_ID(co_varnames);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1348|      1|    _PyUnicode_InternStatic(interp, &string);
 1349|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1349:5): [True: 1, False: 0]
  ------------------
 1350|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1350:5): [True: 1, False: 0]
  ------------------
 1351|      1|    string = &_Py_ID(code);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1352|      1|    _PyUnicode_InternStatic(interp, &string);
 1353|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1353:5): [True: 1, False: 0]
  ------------------
 1354|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1354:5): [True: 1, False: 0]
  ------------------
 1355|      1|    string = &_Py_ID(col_offset);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1356|      1|    _PyUnicode_InternStatic(interp, &string);
 1357|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1357:5): [True: 1, False: 0]
  ------------------
 1358|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1358:5): [True: 1, False: 0]
  ------------------
 1359|      1|    string = &_Py_ID(collector);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1360|      1|    _PyUnicode_InternStatic(interp, &string);
 1361|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1361:5): [True: 1, False: 0]
  ------------------
 1362|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1362:5): [True: 1, False: 0]
  ------------------
 1363|      1|    string = &_Py_ID(command);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1364|      1|    _PyUnicode_InternStatic(interp, &string);
 1365|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1365:5): [True: 1, False: 0]
  ------------------
 1366|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1366:5): [True: 1, False: 0]
  ------------------
 1367|      1|    string = &_Py_ID(comment_factory);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1368|      1|    _PyUnicode_InternStatic(interp, &string);
 1369|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1369:5): [True: 1, False: 0]
  ------------------
 1370|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1370:5): [True: 1, False: 0]
  ------------------
 1371|      1|    string = &_Py_ID(compile_mode);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1372|      1|    _PyUnicode_InternStatic(interp, &string);
 1373|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1373:5): [True: 1, False: 0]
  ------------------
 1374|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1374:5): [True: 1, False: 0]
  ------------------
 1375|      1|    string = &_Py_ID(compression);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1376|      1|    _PyUnicode_InternStatic(interp, &string);
 1377|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1377:5): [True: 1, False: 0]
  ------------------
 1378|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1378:5): [True: 1, False: 0]
  ------------------
 1379|      1|    string = &_Py_ID(config);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1380|      1|    _PyUnicode_InternStatic(interp, &string);
 1381|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1381:5): [True: 1, False: 0]
  ------------------
 1382|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1382:5): [True: 1, False: 0]
  ------------------
 1383|      1|    string = &_Py_ID(consts);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1384|      1|    _PyUnicode_InternStatic(interp, &string);
 1385|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1385:5): [True: 1, False: 0]
  ------------------
 1386|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1386:5): [True: 1, False: 0]
  ------------------
 1387|      1|    string = &_Py_ID(context);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1388|      1|    _PyUnicode_InternStatic(interp, &string);
 1389|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1389:5): [True: 1, False: 0]
  ------------------
 1390|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1390:5): [True: 1, False: 0]
  ------------------
 1391|      1|    string = &_Py_ID(contravariant);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1392|      1|    _PyUnicode_InternStatic(interp, &string);
 1393|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1393:5): [True: 1, False: 0]
  ------------------
 1394|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1394:5): [True: 1, False: 0]
  ------------------
 1395|      1|    string = &_Py_ID(conversion);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1396|      1|    _PyUnicode_InternStatic(interp, &string);
 1397|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1397:5): [True: 1, False: 0]
  ------------------
 1398|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1398:5): [True: 1, False: 0]
  ------------------
 1399|      1|    string = &_Py_ID(cookie);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1400|      1|    _PyUnicode_InternStatic(interp, &string);
 1401|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1401:5): [True: 1, False: 0]
  ------------------
 1402|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1402:5): [True: 1, False: 0]
  ------------------
 1403|      1|    string = &_Py_ID(copy);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1404|      1|    _PyUnicode_InternStatic(interp, &string);
 1405|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1405:5): [True: 1, False: 0]
  ------------------
 1406|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1406:5): [True: 1, False: 0]
  ------------------
 1407|      1|    string = &_Py_ID(copyreg);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1408|      1|    _PyUnicode_InternStatic(interp, &string);
 1409|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1409:5): [True: 1, False: 0]
  ------------------
 1410|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1410:5): [True: 1, False: 0]
  ------------------
 1411|      1|    string = &_Py_ID(coro);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1412|      1|    _PyUnicode_InternStatic(interp, &string);
 1413|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1413:5): [True: 1, False: 0]
  ------------------
 1414|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1414:5): [True: 1, False: 0]
  ------------------
 1415|      1|    string = &_Py_ID(count);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1416|      1|    _PyUnicode_InternStatic(interp, &string);
 1417|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1417:5): [True: 1, False: 0]
  ------------------
 1418|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1418:5): [True: 1, False: 0]
  ------------------
 1419|      1|    string = &_Py_ID(covariant);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1420|      1|    _PyUnicode_InternStatic(interp, &string);
 1421|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1421:5): [True: 1, False: 0]
  ------------------
 1422|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1422:5): [True: 1, False: 0]
  ------------------
 1423|      1|    string = &_Py_ID(ctx);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1424|      1|    _PyUnicode_InternStatic(interp, &string);
 1425|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1425:5): [True: 1, False: 0]
  ------------------
 1426|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1426:5): [True: 1, False: 0]
  ------------------
 1427|      1|    string = &_Py_ID(cwd);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1428|      1|    _PyUnicode_InternStatic(interp, &string);
 1429|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1429:5): [True: 1, False: 0]
  ------------------
 1430|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1430:5): [True: 1, False: 0]
  ------------------
 1431|      1|    string = &_Py_ID(d_parameter_type);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1432|      1|    _PyUnicode_InternStatic(interp, &string);
 1433|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1433:5): [True: 1, False: 0]
  ------------------
 1434|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1434:5): [True: 1, False: 0]
  ------------------
 1435|      1|    string = &_Py_ID(data);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1436|      1|    _PyUnicode_InternStatic(interp, &string);
 1437|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1437:5): [True: 1, False: 0]
  ------------------
 1438|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1438:5): [True: 1, False: 0]
  ------------------
 1439|      1|    string = &_Py_ID(database);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1440|      1|    _PyUnicode_InternStatic(interp, &string);
 1441|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1441:5): [True: 1, False: 0]
  ------------------
 1442|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1442:5): [True: 1, False: 0]
  ------------------
 1443|      1|    string = &_Py_ID(date);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1444|      1|    _PyUnicode_InternStatic(interp, &string);
 1445|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1445:5): [True: 1, False: 0]
  ------------------
 1446|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1446:5): [True: 1, False: 0]
  ------------------
 1447|      1|    string = &_Py_ID(day);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1448|      1|    _PyUnicode_InternStatic(interp, &string);
 1449|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1449:5): [True: 1, False: 0]
  ------------------
 1450|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1450:5): [True: 1, False: 0]
  ------------------
 1451|      1|    string = &_Py_ID(days);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1452|      1|    _PyUnicode_InternStatic(interp, &string);
 1453|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1453:5): [True: 1, False: 0]
  ------------------
 1454|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1454:5): [True: 1, False: 0]
  ------------------
 1455|      1|    string = &_Py_ID(debug);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1456|      1|    _PyUnicode_InternStatic(interp, &string);
 1457|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1457:5): [True: 1, False: 0]
  ------------------
 1458|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1458:5): [True: 1, False: 0]
  ------------------
 1459|      1|    string = &_Py_ID(decode);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1460|      1|    _PyUnicode_InternStatic(interp, &string);
 1461|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1461:5): [True: 1, False: 0]
  ------------------
 1462|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1462:5): [True: 1, False: 0]
  ------------------
 1463|      1|    string = &_Py_ID(decoder);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1464|      1|    _PyUnicode_InternStatic(interp, &string);
 1465|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1465:5): [True: 1, False: 0]
  ------------------
 1466|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1466:5): [True: 1, False: 0]
  ------------------
 1467|      1|    string = &_Py_ID(default);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1468|      1|    _PyUnicode_InternStatic(interp, &string);
 1469|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1469:5): [True: 1, False: 0]
  ------------------
 1470|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1470:5): [True: 1, False: 0]
  ------------------
 1471|      1|    string = &_Py_ID(defaultaction);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1472|      1|    _PyUnicode_InternStatic(interp, &string);
 1473|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1473:5): [True: 1, False: 0]
  ------------------
 1474|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1474:5): [True: 1, False: 0]
  ------------------
 1475|      1|    string = &_Py_ID(delete);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1476|      1|    _PyUnicode_InternStatic(interp, &string);
 1477|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1477:5): [True: 1, False: 0]
  ------------------
 1478|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1478:5): [True: 1, False: 0]
  ------------------
 1479|      1|    string = &_Py_ID(depth);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1480|      1|    _PyUnicode_InternStatic(interp, &string);
 1481|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1481:5): [True: 1, False: 0]
  ------------------
 1482|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1482:5): [True: 1, False: 0]
  ------------------
 1483|      1|    string = &_Py_ID(desired_access);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1484|      1|    _PyUnicode_InternStatic(interp, &string);
 1485|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1485:5): [True: 1, False: 0]
  ------------------
 1486|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1486:5): [True: 1, False: 0]
  ------------------
 1487|      1|    string = &_Py_ID(detect_types);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1488|      1|    _PyUnicode_InternStatic(interp, &string);
 1489|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1489:5): [True: 1, False: 0]
  ------------------
 1490|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1490:5): [True: 1, False: 0]
  ------------------
 1491|      1|    string = &_Py_ID(deterministic);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1492|      1|    _PyUnicode_InternStatic(interp, &string);
 1493|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1493:5): [True: 1, False: 0]
  ------------------
 1494|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1494:5): [True: 1, False: 0]
  ------------------
 1495|      1|    string = &_Py_ID(device);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1496|      1|    _PyUnicode_InternStatic(interp, &string);
 1497|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1497:5): [True: 1, False: 0]
  ------------------
 1498|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1498:5): [True: 1, False: 0]
  ------------------
 1499|      1|    string = &_Py_ID(dict);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1500|      1|    _PyUnicode_InternStatic(interp, &string);
 1501|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1501:5): [True: 1, False: 0]
  ------------------
 1502|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1502:5): [True: 1, False: 0]
  ------------------
 1503|      1|    string = &_Py_ID(difference_update);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1504|      1|    _PyUnicode_InternStatic(interp, &string);
 1505|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1505:5): [True: 1, False: 0]
  ------------------
 1506|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1506:5): [True: 1, False: 0]
  ------------------
 1507|      1|    string = &_Py_ID(digest);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1508|      1|    _PyUnicode_InternStatic(interp, &string);
 1509|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1509:5): [True: 1, False: 0]
  ------------------
 1510|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1510:5): [True: 1, False: 0]
  ------------------
 1511|      1|    string = &_Py_ID(digest_size);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1512|      1|    _PyUnicode_InternStatic(interp, &string);
 1513|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1513:5): [True: 1, False: 0]
  ------------------
 1514|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1514:5): [True: 1, False: 0]
  ------------------
 1515|      1|    string = &_Py_ID(digestmod);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1516|      1|    _PyUnicode_InternStatic(interp, &string);
 1517|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1517:5): [True: 1, False: 0]
  ------------------
 1518|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1518:5): [True: 1, False: 0]
  ------------------
 1519|      1|    string = &_Py_ID(dir_fd);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1520|      1|    _PyUnicode_InternStatic(interp, &string);
 1521|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1521:5): [True: 1, False: 0]
  ------------------
 1522|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1522:5): [True: 1, False: 0]
  ------------------
 1523|      1|    string = &_Py_ID(discard);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1524|      1|    _PyUnicode_InternStatic(interp, &string);
 1525|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1525:5): [True: 1, False: 0]
  ------------------
 1526|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1526:5): [True: 1, False: 0]
  ------------------
 1527|      1|    string = &_Py_ID(dispatch_table);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1528|      1|    _PyUnicode_InternStatic(interp, &string);
 1529|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1529:5): [True: 1, False: 0]
  ------------------
 1530|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1530:5): [True: 1, False: 0]
  ------------------
 1531|      1|    string = &_Py_ID(displayhook);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1532|      1|    _PyUnicode_InternStatic(interp, &string);
 1533|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1533:5): [True: 1, False: 0]
  ------------------
 1534|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1534:5): [True: 1, False: 0]
  ------------------
 1535|      1|    string = &_Py_ID(dklen);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1536|      1|    _PyUnicode_InternStatic(interp, &string);
 1537|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1537:5): [True: 1, False: 0]
  ------------------
 1538|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1538:5): [True: 1, False: 0]
  ------------------
 1539|      1|    string = &_Py_ID(doc);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1540|      1|    _PyUnicode_InternStatic(interp, &string);
 1541|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1541:5): [True: 1, False: 0]
  ------------------
 1542|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1542:5): [True: 1, False: 0]
  ------------------
 1543|      1|    string = &_Py_ID(done);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1544|      1|    _PyUnicode_InternStatic(interp, &string);
 1545|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1545:5): [True: 1, False: 0]
  ------------------
 1546|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1546:5): [True: 1, False: 0]
  ------------------
 1547|      1|    string = &_Py_ID(dont_inherit);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1548|      1|    _PyUnicode_InternStatic(interp, &string);
 1549|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1549:5): [True: 1, False: 0]
  ------------------
 1550|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1550:5): [True: 1, False: 0]
  ------------------
 1551|      1|    string = &_Py_ID(dst);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1552|      1|    _PyUnicode_InternStatic(interp, &string);
 1553|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1553:5): [True: 1, False: 0]
  ------------------
 1554|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1554:5): [True: 1, False: 0]
  ------------------
 1555|      1|    string = &_Py_ID(dst_dir_fd);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1556|      1|    _PyUnicode_InternStatic(interp, &string);
 1557|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1557:5): [True: 1, False: 0]
  ------------------
 1558|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1558:5): [True: 1, False: 0]
  ------------------
 1559|      1|    string = &_Py_ID(eager_start);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1560|      1|    _PyUnicode_InternStatic(interp, &string);
 1561|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1561:5): [True: 1, False: 0]
  ------------------
 1562|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1562:5): [True: 1, False: 0]
  ------------------
 1563|      1|    string = &_Py_ID(effective_ids);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1564|      1|    _PyUnicode_InternStatic(interp, &string);
 1565|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1565:5): [True: 1, False: 0]
  ------------------
 1566|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1566:5): [True: 1, False: 0]
  ------------------
 1567|      1|    string = &_Py_ID(element_factory);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1568|      1|    _PyUnicode_InternStatic(interp, &string);
 1569|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1569:5): [True: 1, False: 0]
  ------------------
 1570|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1570:5): [True: 1, False: 0]
  ------------------
 1571|      1|    string = &_Py_ID(emptyerror);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1572|      1|    _PyUnicode_InternStatic(interp, &string);
 1573|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1573:5): [True: 1, False: 0]
  ------------------
 1574|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1574:5): [True: 1, False: 0]
  ------------------
 1575|      1|    string = &_Py_ID(encode);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1576|      1|    _PyUnicode_InternStatic(interp, &string);
 1577|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1577:5): [True: 1, False: 0]
  ------------------
 1578|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1578:5): [True: 1, False: 0]
  ------------------
 1579|      1|    string = &_Py_ID(encoding);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1580|      1|    _PyUnicode_InternStatic(interp, &string);
 1581|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1581:5): [True: 1, False: 0]
  ------------------
 1582|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1582:5): [True: 1, False: 0]
  ------------------
 1583|      1|    string = &_Py_ID(end);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1584|      1|    _PyUnicode_InternStatic(interp, &string);
 1585|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1585:5): [True: 1, False: 0]
  ------------------
 1586|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1586:5): [True: 1, False: 0]
  ------------------
 1587|      1|    string = &_Py_ID(end_col_offset);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1588|      1|    _PyUnicode_InternStatic(interp, &string);
 1589|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1589:5): [True: 1, False: 0]
  ------------------
 1590|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1590:5): [True: 1, False: 0]
  ------------------
 1591|      1|    string = &_Py_ID(end_lineno);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1592|      1|    _PyUnicode_InternStatic(interp, &string);
 1593|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1593:5): [True: 1, False: 0]
  ------------------
 1594|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1594:5): [True: 1, False: 0]
  ------------------
 1595|      1|    string = &_Py_ID(end_offset);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1596|      1|    _PyUnicode_InternStatic(interp, &string);
 1597|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1597:5): [True: 1, False: 0]
  ------------------
 1598|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1598:5): [True: 1, False: 0]
  ------------------
 1599|      1|    string = &_Py_ID(endpos);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1600|      1|    _PyUnicode_InternStatic(interp, &string);
 1601|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1601:5): [True: 1, False: 0]
  ------------------
 1602|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1602:5): [True: 1, False: 0]
  ------------------
 1603|      1|    string = &_Py_ID(entrypoint);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1604|      1|    _PyUnicode_InternStatic(interp, &string);
 1605|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1605:5): [True: 1, False: 0]
  ------------------
 1606|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1606:5): [True: 1, False: 0]
  ------------------
 1607|      1|    string = &_Py_ID(env);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1608|      1|    _PyUnicode_InternStatic(interp, &string);
 1609|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1609:5): [True: 1, False: 0]
  ------------------
 1610|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1610:5): [True: 1, False: 0]
  ------------------
 1611|      1|    string = &_Py_ID(errors);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1612|      1|    _PyUnicode_InternStatic(interp, &string);
 1613|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1613:5): [True: 1, False: 0]
  ------------------
 1614|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1614:5): [True: 1, False: 0]
  ------------------
 1615|      1|    string = &_Py_ID(event);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1616|      1|    _PyUnicode_InternStatic(interp, &string);
 1617|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1617:5): [True: 1, False: 0]
  ------------------
 1618|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1618:5): [True: 1, False: 0]
  ------------------
 1619|      1|    string = &_Py_ID(eventmask);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1620|      1|    _PyUnicode_InternStatic(interp, &string);
 1621|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1621:5): [True: 1, False: 0]
  ------------------
 1622|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1622:5): [True: 1, False: 0]
  ------------------
 1623|      1|    string = &_Py_ID(exc);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1624|      1|    _PyUnicode_InternStatic(interp, &string);
 1625|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1625:5): [True: 1, False: 0]
  ------------------
 1626|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1626:5): [True: 1, False: 0]
  ------------------
 1627|      1|    string = &_Py_ID(exc_tb);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1628|      1|    _PyUnicode_InternStatic(interp, &string);
 1629|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1629:5): [True: 1, False: 0]
  ------------------
 1630|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1630:5): [True: 1, False: 0]
  ------------------
 1631|      1|    string = &_Py_ID(exc_type);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1632|      1|    _PyUnicode_InternStatic(interp, &string);
 1633|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1633:5): [True: 1, False: 0]
  ------------------
 1634|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1634:5): [True: 1, False: 0]
  ------------------
 1635|      1|    string = &_Py_ID(exc_val);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1636|      1|    _PyUnicode_InternStatic(interp, &string);
 1637|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1637:5): [True: 1, False: 0]
  ------------------
 1638|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1638:5): [True: 1, False: 0]
  ------------------
 1639|      1|    string = &_Py_ID(exc_value);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1640|      1|    _PyUnicode_InternStatic(interp, &string);
 1641|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1641:5): [True: 1, False: 0]
  ------------------
 1642|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1642:5): [True: 1, False: 0]
  ------------------
 1643|      1|    string = &_Py_ID(excepthook);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1644|      1|    _PyUnicode_InternStatic(interp, &string);
 1645|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1645:5): [True: 1, False: 0]
  ------------------
 1646|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1646:5): [True: 1, False: 0]
  ------------------
 1647|      1|    string = &_Py_ID(exception);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1648|      1|    _PyUnicode_InternStatic(interp, &string);
 1649|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1649:5): [True: 1, False: 0]
  ------------------
 1650|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1650:5): [True: 1, False: 0]
  ------------------
 1651|      1|    string = &_Py_ID(existing_file_name);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1652|      1|    _PyUnicode_InternStatic(interp, &string);
 1653|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1653:5): [True: 1, False: 0]
  ------------------
 1654|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1654:5): [True: 1, False: 0]
  ------------------
 1655|      1|    string = &_Py_ID(exit);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1656|      1|    _PyUnicode_InternStatic(interp, &string);
 1657|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1657:5): [True: 1, False: 0]
  ------------------
 1658|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1658:5): [True: 1, False: 0]
  ------------------
 1659|      1|    string = &_Py_ID(exp);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1660|      1|    _PyUnicode_InternStatic(interp, &string);
 1661|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1661:5): [True: 1, False: 0]
  ------------------
 1662|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1662:5): [True: 1, False: 0]
  ------------------
 1663|      1|    string = &_Py_ID(expression);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1664|      1|    _PyUnicode_InternStatic(interp, &string);
 1665|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1665:5): [True: 1, False: 0]
  ------------------
 1666|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1666:5): [True: 1, False: 0]
  ------------------
 1667|      1|    string = &_Py_ID(extend);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1668|      1|    _PyUnicode_InternStatic(interp, &string);
 1669|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1669:5): [True: 1, False: 0]
  ------------------
 1670|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1670:5): [True: 1, False: 0]
  ------------------
 1671|      1|    string = &_Py_ID(extra_tokens);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1672|      1|    _PyUnicode_InternStatic(interp, &string);
 1673|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1673:5): [True: 1, False: 0]
  ------------------
 1674|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1674:5): [True: 1, False: 0]
  ------------------
 1675|      1|    string = &_Py_ID(facility);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1676|      1|    _PyUnicode_InternStatic(interp, &string);
 1677|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1677:5): [True: 1, False: 0]
  ------------------
 1678|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1678:5): [True: 1, False: 0]
  ------------------
 1679|      1|    string = &_Py_ID(factory);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1680|      1|    _PyUnicode_InternStatic(interp, &string);
 1681|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1681:5): [True: 1, False: 0]
  ------------------
 1682|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1682:5): [True: 1, False: 0]
  ------------------
 1683|      1|    string = &_Py_ID(fallback);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1684|      1|    _PyUnicode_InternStatic(interp, &string);
 1685|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1685:5): [True: 1, False: 0]
  ------------------
 1686|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1686:5): [True: 1, False: 0]
  ------------------
 1687|      1|    string = &_Py_ID(false);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1688|      1|    _PyUnicode_InternStatic(interp, &string);
 1689|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1689:5): [True: 1, False: 0]
  ------------------
 1690|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1690:5): [True: 1, False: 0]
  ------------------
 1691|      1|    string = &_Py_ID(family);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1692|      1|    _PyUnicode_InternStatic(interp, &string);
 1693|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1693:5): [True: 1, False: 0]
  ------------------
 1694|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1694:5): [True: 1, False: 0]
  ------------------
 1695|      1|    string = &_Py_ID(fanout);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1696|      1|    _PyUnicode_InternStatic(interp, &string);
 1697|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1697:5): [True: 1, False: 0]
  ------------------
 1698|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1698:5): [True: 1, False: 0]
  ------------------
 1699|      1|    string = &_Py_ID(fd);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1700|      1|    _PyUnicode_InternStatic(interp, &string);
 1701|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1701:5): [True: 1, False: 0]
  ------------------
 1702|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1702:5): [True: 1, False: 0]
  ------------------
 1703|      1|    string = &_Py_ID(fd2);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1704|      1|    _PyUnicode_InternStatic(interp, &string);
 1705|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1705:5): [True: 1, False: 0]
  ------------------
 1706|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1706:5): [True: 1, False: 0]
  ------------------
 1707|      1|    string = &_Py_ID(fdel);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1708|      1|    _PyUnicode_InternStatic(interp, &string);
 1709|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1709:5): [True: 1, False: 0]
  ------------------
 1710|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1710:5): [True: 1, False: 0]
  ------------------
 1711|      1|    string = &_Py_ID(fget);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1712|      1|    _PyUnicode_InternStatic(interp, &string);
 1713|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1713:5): [True: 1, False: 0]
  ------------------
 1714|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1714:5): [True: 1, False: 0]
  ------------------
 1715|      1|    string = &_Py_ID(fields);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1716|      1|    _PyUnicode_InternStatic(interp, &string);
 1717|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1717:5): [True: 1, False: 0]
  ------------------
 1718|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1718:5): [True: 1, False: 0]
  ------------------
 1719|      1|    string = &_Py_ID(file);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1720|      1|    _PyUnicode_InternStatic(interp, &string);
 1721|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1721:5): [True: 1, False: 0]
  ------------------
 1722|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1722:5): [True: 1, False: 0]
  ------------------
 1723|      1|    string = &_Py_ID(file_actions);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1724|      1|    _PyUnicode_InternStatic(interp, &string);
 1725|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1725:5): [True: 1, False: 0]
  ------------------
 1726|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1726:5): [True: 1, False: 0]
  ------------------
 1727|      1|    string = &_Py_ID(filename);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1728|      1|    _PyUnicode_InternStatic(interp, &string);
 1729|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1729:5): [True: 1, False: 0]
  ------------------
 1730|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1730:5): [True: 1, False: 0]
  ------------------
 1731|      1|    string = &_Py_ID(fileno);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1732|      1|    _PyUnicode_InternStatic(interp, &string);
 1733|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1733:5): [True: 1, False: 0]
  ------------------
 1734|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1734:5): [True: 1, False: 0]
  ------------------
 1735|      1|    string = &_Py_ID(filepath);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1736|      1|    _PyUnicode_InternStatic(interp, &string);
 1737|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1737:5): [True: 1, False: 0]
  ------------------
 1738|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1738:5): [True: 1, False: 0]
  ------------------
 1739|      1|    string = &_Py_ID(fillvalue);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1740|      1|    _PyUnicode_InternStatic(interp, &string);
 1741|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1741:5): [True: 1, False: 0]
  ------------------
 1742|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1742:5): [True: 1, False: 0]
  ------------------
 1743|      1|    string = &_Py_ID(filter);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1744|      1|    _PyUnicode_InternStatic(interp, &string);
 1745|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1745:5): [True: 1, False: 0]
  ------------------
 1746|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1746:5): [True: 1, False: 0]
  ------------------
 1747|      1|    string = &_Py_ID(filters);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1748|      1|    _PyUnicode_InternStatic(interp, &string);
 1749|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1749:5): [True: 1, False: 0]
  ------------------
 1750|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1750:5): [True: 1, False: 0]
  ------------------
 1751|      1|    string = &_Py_ID(final);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1752|      1|    _PyUnicode_InternStatic(interp, &string);
 1753|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1753:5): [True: 1, False: 0]
  ------------------
 1754|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1754:5): [True: 1, False: 0]
  ------------------
 1755|      1|    string = &_Py_ID(find_class);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1756|      1|    _PyUnicode_InternStatic(interp, &string);
 1757|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1757:5): [True: 1, False: 0]
  ------------------
 1758|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1758:5): [True: 1, False: 0]
  ------------------
 1759|      1|    string = &_Py_ID(fix_imports);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1760|      1|    _PyUnicode_InternStatic(interp, &string);
 1761|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1761:5): [True: 1, False: 0]
  ------------------
 1762|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1762:5): [True: 1, False: 0]
  ------------------
 1763|      1|    string = &_Py_ID(flags);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1764|      1|    _PyUnicode_InternStatic(interp, &string);
 1765|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1765:5): [True: 1, False: 0]
  ------------------
 1766|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1766:5): [True: 1, False: 0]
  ------------------
 1767|      1|    string = &_Py_ID(flush);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1768|      1|    _PyUnicode_InternStatic(interp, &string);
 1769|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1769:5): [True: 1, False: 0]
  ------------------
 1770|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1770:5): [True: 1, False: 0]
  ------------------
 1771|      1|    string = &_Py_ID(fold);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1772|      1|    _PyUnicode_InternStatic(interp, &string);
 1773|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1773:5): [True: 1, False: 0]
  ------------------
 1774|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1774:5): [True: 1, False: 0]
  ------------------
 1775|      1|    string = &_Py_ID(foldspaces);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1776|      1|    _PyUnicode_InternStatic(interp, &string);
 1777|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1777:5): [True: 1, False: 0]
  ------------------
 1778|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1778:5): [True: 1, False: 0]
  ------------------
 1779|      1|    string = &_Py_ID(follow_symlinks);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1780|      1|    _PyUnicode_InternStatic(interp, &string);
 1781|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1781:5): [True: 1, False: 0]
  ------------------
 1782|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1782:5): [True: 1, False: 0]
  ------------------
 1783|      1|    string = &_Py_ID(format);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1784|      1|    _PyUnicode_InternStatic(interp, &string);
 1785|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1785:5): [True: 1, False: 0]
  ------------------
 1786|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1786:5): [True: 1, False: 0]
  ------------------
 1787|      1|    string = &_Py_ID(format_spec);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1788|      1|    _PyUnicode_InternStatic(interp, &string);
 1789|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1789:5): [True: 1, False: 0]
  ------------------
 1790|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1790:5): [True: 1, False: 0]
  ------------------
 1791|      1|    string = &_Py_ID(frame_buffer);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1792|      1|    _PyUnicode_InternStatic(interp, &string);
 1793|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1793:5): [True: 1, False: 0]
  ------------------
 1794|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1794:5): [True: 1, False: 0]
  ------------------
 1795|      1|    string = &_Py_ID(free_threaded);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1796|      1|    _PyUnicode_InternStatic(interp, &string);
 1797|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1797:5): [True: 1, False: 0]
  ------------------
 1798|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1798:5): [True: 1, False: 0]
  ------------------
 1799|      1|    string = &_Py_ID(from_param);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1800|      1|    _PyUnicode_InternStatic(interp, &string);
 1801|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1801:5): [True: 1, False: 0]
  ------------------
 1802|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1802:5): [True: 1, False: 0]
  ------------------
 1803|      1|    string = &_Py_ID(fromlist);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1804|      1|    _PyUnicode_InternStatic(interp, &string);
 1805|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1805:5): [True: 1, False: 0]
  ------------------
 1806|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1806:5): [True: 1, False: 0]
  ------------------
 1807|      1|    string = &_Py_ID(fromtimestamp);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1808|      1|    _PyUnicode_InternStatic(interp, &string);
 1809|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1809:5): [True: 1, False: 0]
  ------------------
 1810|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1810:5): [True: 1, False: 0]
  ------------------
 1811|      1|    string = &_Py_ID(fromutc);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1812|      1|    _PyUnicode_InternStatic(interp, &string);
 1813|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1813:5): [True: 1, False: 0]
  ------------------
 1814|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1814:5): [True: 1, False: 0]
  ------------------
 1815|      1|    string = &_Py_ID(fset);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1816|      1|    _PyUnicode_InternStatic(interp, &string);
 1817|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1817:5): [True: 1, False: 0]
  ------------------
 1818|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1818:5): [True: 1, False: 0]
  ------------------
 1819|      1|    string = &_Py_ID(fullerror);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1820|      1|    _PyUnicode_InternStatic(interp, &string);
 1821|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1821:5): [True: 1, False: 0]
  ------------------
 1822|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1822:5): [True: 1, False: 0]
  ------------------
 1823|      1|    string = &_Py_ID(func);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1824|      1|    _PyUnicode_InternStatic(interp, &string);
 1825|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1825:5): [True: 1, False: 0]
  ------------------
 1826|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1826:5): [True: 1, False: 0]
  ------------------
 1827|      1|    string = &_Py_ID(future);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1828|      1|    _PyUnicode_InternStatic(interp, &string);
 1829|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1829:5): [True: 1, False: 0]
  ------------------
 1830|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1830:5): [True: 1, False: 0]
  ------------------
 1831|      1|    string = &_Py_ID(gc);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1832|      1|    _PyUnicode_InternStatic(interp, &string);
 1833|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1833:5): [True: 1, False: 0]
  ------------------
 1834|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1834:5): [True: 1, False: 0]
  ------------------
 1835|      1|    string = &_Py_ID(generation);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1836|      1|    _PyUnicode_InternStatic(interp, &string);
 1837|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1837:5): [True: 1, False: 0]
  ------------------
 1838|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1838:5): [True: 1, False: 0]
  ------------------
 1839|      1|    string = &_Py_ID(get);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1840|      1|    _PyUnicode_InternStatic(interp, &string);
 1841|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1841:5): [True: 1, False: 0]
  ------------------
 1842|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1842:5): [True: 1, False: 0]
  ------------------
 1843|      1|    string = &_Py_ID(get_debug);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1844|      1|    _PyUnicode_InternStatic(interp, &string);
 1845|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1845:5): [True: 1, False: 0]
  ------------------
 1846|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1846:5): [True: 1, False: 0]
  ------------------
 1847|      1|    string = &_Py_ID(get_event_loop);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1848|      1|    _PyUnicode_InternStatic(interp, &string);
 1849|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1849:5): [True: 1, False: 0]
  ------------------
 1850|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1850:5): [True: 1, False: 0]
  ------------------
 1851|      1|    string = &_Py_ID(get_loop);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1852|      1|    _PyUnicode_InternStatic(interp, &string);
 1853|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1853:5): [True: 1, False: 0]
  ------------------
 1854|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1854:5): [True: 1, False: 0]
  ------------------
 1855|      1|    string = &_Py_ID(get_source);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1856|      1|    _PyUnicode_InternStatic(interp, &string);
 1857|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1857:5): [True: 1, False: 0]
  ------------------
 1858|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1858:5): [True: 1, False: 0]
  ------------------
 1859|      1|    string = &_Py_ID(getattr);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1860|      1|    _PyUnicode_InternStatic(interp, &string);
 1861|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1861:5): [True: 1, False: 0]
  ------------------
 1862|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1862:5): [True: 1, False: 0]
  ------------------
 1863|      1|    string = &_Py_ID(getstate);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1864|      1|    _PyUnicode_InternStatic(interp, &string);
 1865|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1865:5): [True: 1, False: 0]
  ------------------
 1866|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1866:5): [True: 1, False: 0]
  ------------------
 1867|      1|    string = &_Py_ID(gid);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1868|      1|    _PyUnicode_InternStatic(interp, &string);
 1869|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1869:5): [True: 1, False: 0]
  ------------------
 1870|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1870:5): [True: 1, False: 0]
  ------------------
 1871|      1|    string = &_Py_ID(globals);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1872|      1|    _PyUnicode_InternStatic(interp, &string);
 1873|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1873:5): [True: 1, False: 0]
  ------------------
 1874|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1874:5): [True: 1, False: 0]
  ------------------
 1875|      1|    string = &_Py_ID(groupindex);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1876|      1|    _PyUnicode_InternStatic(interp, &string);
 1877|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1877:5): [True: 1, False: 0]
  ------------------
 1878|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1878:5): [True: 1, False: 0]
  ------------------
 1879|      1|    string = &_Py_ID(groups);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1880|      1|    _PyUnicode_InternStatic(interp, &string);
 1881|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1881:5): [True: 1, False: 0]
  ------------------
 1882|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1882:5): [True: 1, False: 0]
  ------------------
 1883|      1|    string = &_Py_ID(handle);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1884|      1|    _PyUnicode_InternStatic(interp, &string);
 1885|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1885:5): [True: 1, False: 0]
  ------------------
 1886|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1886:5): [True: 1, False: 0]
  ------------------
 1887|      1|    string = &_Py_ID(handle_seq);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1888|      1|    _PyUnicode_InternStatic(interp, &string);
 1889|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1889:5): [True: 1, False: 0]
  ------------------
 1890|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1890:5): [True: 1, False: 0]
  ------------------
 1891|      1|    string = &_Py_ID(has_location);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1892|      1|    _PyUnicode_InternStatic(interp, &string);
 1893|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1893:5): [True: 1, False: 0]
  ------------------
 1894|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1894:5): [True: 1, False: 0]
  ------------------
 1895|      1|    string = &_Py_ID(hash_name);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1896|      1|    _PyUnicode_InternStatic(interp, &string);
 1897|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1897:5): [True: 1, False: 0]
  ------------------
 1898|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1898:5): [True: 1, False: 0]
  ------------------
 1899|      1|    string = &_Py_ID(header);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1900|      1|    _PyUnicode_InternStatic(interp, &string);
 1901|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1901:5): [True: 1, False: 0]
  ------------------
 1902|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1902:5): [True: 1, False: 0]
  ------------------
 1903|      1|    string = &_Py_ID(headers);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1904|      1|    _PyUnicode_InternStatic(interp, &string);
 1905|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1905:5): [True: 1, False: 0]
  ------------------
 1906|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1906:5): [True: 1, False: 0]
  ------------------
 1907|      1|    string = &_Py_ID(hi);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1908|      1|    _PyUnicode_InternStatic(interp, &string);
 1909|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1909:5): [True: 1, False: 0]
  ------------------
 1910|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1910:5): [True: 1, False: 0]
  ------------------
 1911|      1|    string = &_Py_ID(hook);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1912|      1|    _PyUnicode_InternStatic(interp, &string);
 1913|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1913:5): [True: 1, False: 0]
  ------------------
 1914|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1914:5): [True: 1, False: 0]
  ------------------
 1915|      1|    string = &_Py_ID(hour);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1916|      1|    _PyUnicode_InternStatic(interp, &string);
 1917|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1917:5): [True: 1, False: 0]
  ------------------
 1918|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1918:5): [True: 1, False: 0]
  ------------------
 1919|      1|    string = &_Py_ID(hours);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1920|      1|    _PyUnicode_InternStatic(interp, &string);
 1921|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1921:5): [True: 1, False: 0]
  ------------------
 1922|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1922:5): [True: 1, False: 0]
  ------------------
 1923|      1|    string = &_Py_ID(id);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1924|      1|    _PyUnicode_InternStatic(interp, &string);
 1925|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1925:5): [True: 1, False: 0]
  ------------------
 1926|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1926:5): [True: 1, False: 0]
  ------------------
 1927|      1|    string = &_Py_ID(ident);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1928|      1|    _PyUnicode_InternStatic(interp, &string);
 1929|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1929:5): [True: 1, False: 0]
  ------------------
 1930|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1930:5): [True: 1, False: 0]
  ------------------
 1931|      1|    string = &_Py_ID(identity_hint);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1932|      1|    _PyUnicode_InternStatic(interp, &string);
 1933|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1933:5): [True: 1, False: 0]
  ------------------
 1934|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1934:5): [True: 1, False: 0]
  ------------------
 1935|      1|    string = &_Py_ID(ignore);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1936|      1|    _PyUnicode_InternStatic(interp, &string);
 1937|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1937:5): [True: 1, False: 0]
  ------------------
 1938|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1938:5): [True: 1, False: 0]
  ------------------
 1939|      1|    string = &_Py_ID(ignorechars);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1940|      1|    _PyUnicode_InternStatic(interp, &string);
 1941|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1941:5): [True: 1, False: 0]
  ------------------
 1942|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1942:5): [True: 1, False: 0]
  ------------------
 1943|      1|    string = &_Py_ID(imag);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1944|      1|    _PyUnicode_InternStatic(interp, &string);
 1945|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1945:5): [True: 1, False: 0]
  ------------------
 1946|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1946:5): [True: 1, False: 0]
  ------------------
 1947|      1|    string = &_Py_ID(implieslink);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1948|      1|    _PyUnicode_InternStatic(interp, &string);
 1949|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1949:5): [True: 1, False: 0]
  ------------------
 1950|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1950:5): [True: 1, False: 0]
  ------------------
 1951|      1|    string = &_Py_ID(importlib);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1952|      1|    _PyUnicode_InternStatic(interp, &string);
 1953|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1953:5): [True: 1, False: 0]
  ------------------
 1954|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1954:5): [True: 1, False: 0]
  ------------------
 1955|      1|    string = &_Py_ID(in_fd);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1956|      1|    _PyUnicode_InternStatic(interp, &string);
 1957|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1957:5): [True: 1, False: 0]
  ------------------
 1958|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1958:5): [True: 1, False: 0]
  ------------------
 1959|      1|    string = &_Py_ID(include_aliases);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1960|      1|    _PyUnicode_InternStatic(interp, &string);
 1961|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1961:5): [True: 1, False: 0]
  ------------------
 1962|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1962:5): [True: 1, False: 0]
  ------------------
 1963|      1|    string = &_Py_ID(incoming);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1964|      1|    _PyUnicode_InternStatic(interp, &string);
 1965|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1965:5): [True: 1, False: 0]
  ------------------
 1966|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1966:5): [True: 1, False: 0]
  ------------------
 1967|      1|    string = &_Py_ID(index);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1968|      1|    _PyUnicode_InternStatic(interp, &string);
 1969|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1969:5): [True: 1, False: 0]
  ------------------
 1970|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1970:5): [True: 1, False: 0]
  ------------------
 1971|      1|    string = &_Py_ID(indexgroup);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1972|      1|    _PyUnicode_InternStatic(interp, &string);
 1973|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1973:5): [True: 1, False: 0]
  ------------------
 1974|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1974:5): [True: 1, False: 0]
  ------------------
 1975|      1|    string = &_Py_ID(inf);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1976|      1|    _PyUnicode_InternStatic(interp, &string);
 1977|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1977:5): [True: 1, False: 0]
  ------------------
 1978|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1978:5): [True: 1, False: 0]
  ------------------
 1979|      1|    string = &_Py_ID(infer_variance);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1980|      1|    _PyUnicode_InternStatic(interp, &string);
 1981|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1981:5): [True: 1, False: 0]
  ------------------
 1982|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1982:5): [True: 1, False: 0]
  ------------------
 1983|      1|    string = &_Py_ID(inherit_handle);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1984|      1|    _PyUnicode_InternStatic(interp, &string);
 1985|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1985:5): [True: 1, False: 0]
  ------------------
 1986|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1986:5): [True: 1, False: 0]
  ------------------
 1987|      1|    string = &_Py_ID(inheritable);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1988|      1|    _PyUnicode_InternStatic(interp, &string);
 1989|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1989:5): [True: 1, False: 0]
  ------------------
 1990|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1990:5): [True: 1, False: 0]
  ------------------
 1991|      1|    string = &_Py_ID(initial);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1992|      1|    _PyUnicode_InternStatic(interp, &string);
 1993|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1993:5): [True: 1, False: 0]
  ------------------
 1994|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1994:5): [True: 1, False: 0]
  ------------------
 1995|      1|    string = &_Py_ID(initial_bytes);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1996|      1|    _PyUnicode_InternStatic(interp, &string);
 1997|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (1997:5): [True: 1, False: 0]
  ------------------
 1998|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (1998:5): [True: 1, False: 0]
  ------------------
 1999|      1|    string = &_Py_ID(initial_owner);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2000|      1|    _PyUnicode_InternStatic(interp, &string);
 2001|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2001:5): [True: 1, False: 0]
  ------------------
 2002|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2002:5): [True: 1, False: 0]
  ------------------
 2003|      1|    string = &_Py_ID(initial_state);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2004|      1|    _PyUnicode_InternStatic(interp, &string);
 2005|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2005:5): [True: 1, False: 0]
  ------------------
 2006|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2006:5): [True: 1, False: 0]
  ------------------
 2007|      1|    string = &_Py_ID(initial_value);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2008|      1|    _PyUnicode_InternStatic(interp, &string);
 2009|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2009:5): [True: 1, False: 0]
  ------------------
 2010|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2010:5): [True: 1, False: 0]
  ------------------
 2011|      1|    string = &_Py_ID(initval);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2012|      1|    _PyUnicode_InternStatic(interp, &string);
 2013|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2013:5): [True: 1, False: 0]
  ------------------
 2014|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2014:5): [True: 1, False: 0]
  ------------------
 2015|      1|    string = &_Py_ID(inner_size);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2016|      1|    _PyUnicode_InternStatic(interp, &string);
 2017|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2017:5): [True: 1, False: 0]
  ------------------
 2018|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2018:5): [True: 1, False: 0]
  ------------------
 2019|      1|    string = &_Py_ID(input);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2020|      1|    _PyUnicode_InternStatic(interp, &string);
 2021|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2021:5): [True: 1, False: 0]
  ------------------
 2022|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2022:5): [True: 1, False: 0]
  ------------------
 2023|      1|    string = &_Py_ID(insert_comments);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2024|      1|    _PyUnicode_InternStatic(interp, &string);
 2025|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2025:5): [True: 1, False: 0]
  ------------------
 2026|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2026:5): [True: 1, False: 0]
  ------------------
 2027|      1|    string = &_Py_ID(insert_pis);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2028|      1|    _PyUnicode_InternStatic(interp, &string);
 2029|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2029:5): [True: 1, False: 0]
  ------------------
 2030|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2030:5): [True: 1, False: 0]
  ------------------
 2031|      1|    string = &_Py_ID(instructions);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2032|      1|    _PyUnicode_InternStatic(interp, &string);
 2033|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2033:5): [True: 1, False: 0]
  ------------------
 2034|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2034:5): [True: 1, False: 0]
  ------------------
 2035|      1|    string = &_Py_ID(intern);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2036|      1|    _PyUnicode_InternStatic(interp, &string);
 2037|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2037:5): [True: 1, False: 0]
  ------------------
 2038|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2038:5): [True: 1, False: 0]
  ------------------
 2039|      1|    string = &_Py_ID(intersection);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2040|      1|    _PyUnicode_InternStatic(interp, &string);
 2041|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2041:5): [True: 1, False: 0]
  ------------------
 2042|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2042:5): [True: 1, False: 0]
  ------------------
 2043|      1|    string = &_Py_ID(interval);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2044|      1|    _PyUnicode_InternStatic(interp, &string);
 2045|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2045:5): [True: 1, False: 0]
  ------------------
 2046|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2046:5): [True: 1, False: 0]
  ------------------
 2047|      1|    string = &_Py_ID(io);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2048|      1|    _PyUnicode_InternStatic(interp, &string);
 2049|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2049:5): [True: 1, False: 0]
  ------------------
 2050|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2050:5): [True: 1, False: 0]
  ------------------
 2051|      1|    string = &_Py_ID(is_compress);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2052|      1|    _PyUnicode_InternStatic(interp, &string);
 2053|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2053:5): [True: 1, False: 0]
  ------------------
 2054|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2054:5): [True: 1, False: 0]
  ------------------
 2055|      1|    string = &_Py_ID(is_raw);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2056|      1|    _PyUnicode_InternStatic(interp, &string);
 2057|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2057:5): [True: 1, False: 0]
  ------------------
 2058|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2058:5): [True: 1, False: 0]
  ------------------
 2059|      1|    string = &_Py_ID(is_running);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2060|      1|    _PyUnicode_InternStatic(interp, &string);
 2061|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2061:5): [True: 1, False: 0]
  ------------------
 2062|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2062:5): [True: 1, False: 0]
  ------------------
 2063|      1|    string = &_Py_ID(is_struct);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2064|      1|    _PyUnicode_InternStatic(interp, &string);
 2065|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2065:5): [True: 1, False: 0]
  ------------------
 2066|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2066:5): [True: 1, False: 0]
  ------------------
 2067|      1|    string = &_Py_ID(isatty);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2068|      1|    _PyUnicode_InternStatic(interp, &string);
 2069|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2069:5): [True: 1, False: 0]
  ------------------
 2070|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2070:5): [True: 1, False: 0]
  ------------------
 2071|      1|    string = &_Py_ID(isinstance);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2072|      1|    _PyUnicode_InternStatic(interp, &string);
 2073|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2073:5): [True: 1, False: 0]
  ------------------
 2074|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2074:5): [True: 1, False: 0]
  ------------------
 2075|      1|    string = &_Py_ID(isoformat);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2076|      1|    _PyUnicode_InternStatic(interp, &string);
 2077|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2077:5): [True: 1, False: 0]
  ------------------
 2078|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2078:5): [True: 1, False: 0]
  ------------------
 2079|      1|    string = &_Py_ID(isolation_level);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2080|      1|    _PyUnicode_InternStatic(interp, &string);
 2081|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2081:5): [True: 1, False: 0]
  ------------------
 2082|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2082:5): [True: 1, False: 0]
  ------------------
 2083|      1|    string = &_Py_ID(istext);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2084|      1|    _PyUnicode_InternStatic(interp, &string);
 2085|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2085:5): [True: 1, False: 0]
  ------------------
 2086|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2086:5): [True: 1, False: 0]
  ------------------
 2087|      1|    string = &_Py_ID(item);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2088|      1|    _PyUnicode_InternStatic(interp, &string);
 2089|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2089:5): [True: 1, False: 0]
  ------------------
 2090|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2090:5): [True: 1, False: 0]
  ------------------
 2091|      1|    string = &_Py_ID(items);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2092|      1|    _PyUnicode_InternStatic(interp, &string);
 2093|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2093:5): [True: 1, False: 0]
  ------------------
 2094|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2094:5): [True: 1, False: 0]
  ------------------
 2095|      1|    string = &_Py_ID(iter);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2096|      1|    _PyUnicode_InternStatic(interp, &string);
 2097|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2097:5): [True: 1, False: 0]
  ------------------
 2098|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2098:5): [True: 1, False: 0]
  ------------------
 2099|      1|    string = &_Py_ID(iterable);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2100|      1|    _PyUnicode_InternStatic(interp, &string);
 2101|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2101:5): [True: 1, False: 0]
  ------------------
 2102|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2102:5): [True: 1, False: 0]
  ------------------
 2103|      1|    string = &_Py_ID(iterations);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2104|      1|    _PyUnicode_InternStatic(interp, &string);
 2105|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2105:5): [True: 1, False: 0]
  ------------------
 2106|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2106:5): [True: 1, False: 0]
  ------------------
 2107|      1|    string = &_Py_ID(join);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2108|      1|    _PyUnicode_InternStatic(interp, &string);
 2109|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2109:5): [True: 1, False: 0]
  ------------------
 2110|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2110:5): [True: 1, False: 0]
  ------------------
 2111|      1|    string = &_Py_ID(jump);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2112|      1|    _PyUnicode_InternStatic(interp, &string);
 2113|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2113:5): [True: 1, False: 0]
  ------------------
 2114|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2114:5): [True: 1, False: 0]
  ------------------
 2115|      1|    string = &_Py_ID(keepends);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2116|      1|    _PyUnicode_InternStatic(interp, &string);
 2117|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2117:5): [True: 1, False: 0]
  ------------------
 2118|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2118:5): [True: 1, False: 0]
  ------------------
 2119|      1|    string = &_Py_ID(key);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2120|      1|    _PyUnicode_InternStatic(interp, &string);
 2121|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2121:5): [True: 1, False: 0]
  ------------------
 2122|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2122:5): [True: 1, False: 0]
  ------------------
 2123|      1|    string = &_Py_ID(keyfile);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2124|      1|    _PyUnicode_InternStatic(interp, &string);
 2125|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2125:5): [True: 1, False: 0]
  ------------------
 2126|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2126:5): [True: 1, False: 0]
  ------------------
 2127|      1|    string = &_Py_ID(keys);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2128|      1|    _PyUnicode_InternStatic(interp, &string);
 2129|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2129:5): [True: 1, False: 0]
  ------------------
 2130|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2130:5): [True: 1, False: 0]
  ------------------
 2131|      1|    string = &_Py_ID(kind);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2132|      1|    _PyUnicode_InternStatic(interp, &string);
 2133|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2133:5): [True: 1, False: 0]
  ------------------
 2134|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2134:5): [True: 1, False: 0]
  ------------------
 2135|      1|    string = &_Py_ID(kw);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2136|      1|    _PyUnicode_InternStatic(interp, &string);
 2137|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2137:5): [True: 1, False: 0]
  ------------------
 2138|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2138:5): [True: 1, False: 0]
  ------------------
 2139|      1|    string = &_Py_ID(kw1);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2140|      1|    _PyUnicode_InternStatic(interp, &string);
 2141|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2141:5): [True: 1, False: 0]
  ------------------
 2142|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2142:5): [True: 1, False: 0]
  ------------------
 2143|      1|    string = &_Py_ID(kw2);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2144|      1|    _PyUnicode_InternStatic(interp, &string);
 2145|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2145:5): [True: 1, False: 0]
  ------------------
 2146|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2146:5): [True: 1, False: 0]
  ------------------
 2147|      1|    string = &_Py_ID(kwargs);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2148|      1|    _PyUnicode_InternStatic(interp, &string);
 2149|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2149:5): [True: 1, False: 0]
  ------------------
 2150|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2150:5): [True: 1, False: 0]
  ------------------
 2151|      1|    string = &_Py_ID(kwdefaults);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2152|      1|    _PyUnicode_InternStatic(interp, &string);
 2153|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2153:5): [True: 1, False: 0]
  ------------------
 2154|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2154:5): [True: 1, False: 0]
  ------------------
 2155|      1|    string = &_Py_ID(label);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2156|      1|    _PyUnicode_InternStatic(interp, &string);
 2157|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2157:5): [True: 1, False: 0]
  ------------------
 2158|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2158:5): [True: 1, False: 0]
  ------------------
 2159|      1|    string = &_Py_ID(last);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2160|      1|    _PyUnicode_InternStatic(interp, &string);
 2161|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2161:5): [True: 1, False: 0]
  ------------------
 2162|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2162:5): [True: 1, False: 0]
  ------------------
 2163|      1|    string = &_Py_ID(last_exc);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2164|      1|    _PyUnicode_InternStatic(interp, &string);
 2165|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2165:5): [True: 1, False: 0]
  ------------------
 2166|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2166:5): [True: 1, False: 0]
  ------------------
 2167|      1|    string = &_Py_ID(last_node);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2168|      1|    _PyUnicode_InternStatic(interp, &string);
 2169|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2169:5): [True: 1, False: 0]
  ------------------
 2170|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2170:5): [True: 1, False: 0]
  ------------------
 2171|      1|    string = &_Py_ID(last_traceback);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2172|      1|    _PyUnicode_InternStatic(interp, &string);
 2173|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2173:5): [True: 1, False: 0]
  ------------------
 2174|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2174:5): [True: 1, False: 0]
  ------------------
 2175|      1|    string = &_Py_ID(last_type);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2176|      1|    _PyUnicode_InternStatic(interp, &string);
 2177|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2177:5): [True: 1, False: 0]
  ------------------
 2178|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2178:5): [True: 1, False: 0]
  ------------------
 2179|      1|    string = &_Py_ID(last_value);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2180|      1|    _PyUnicode_InternStatic(interp, &string);
 2181|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2181:5): [True: 1, False: 0]
  ------------------
 2182|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2182:5): [True: 1, False: 0]
  ------------------
 2183|      1|    string = &_Py_ID(latin1);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2184|      1|    _PyUnicode_InternStatic(interp, &string);
 2185|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2185:5): [True: 1, False: 0]
  ------------------
 2186|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2186:5): [True: 1, False: 0]
  ------------------
 2187|      1|    string = &_Py_ID(leaf_size);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2188|      1|    _PyUnicode_InternStatic(interp, &string);
 2189|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2189:5): [True: 1, False: 0]
  ------------------
 2190|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2190:5): [True: 1, False: 0]
  ------------------
 2191|      1|    string = &_Py_ID(legacy);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2192|      1|    _PyUnicode_InternStatic(interp, &string);
 2193|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2193:5): [True: 1, False: 0]
  ------------------
 2194|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2194:5): [True: 1, False: 0]
  ------------------
 2195|      1|    string = &_Py_ID(len);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2196|      1|    _PyUnicode_InternStatic(interp, &string);
 2197|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2197:5): [True: 1, False: 0]
  ------------------
 2198|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2198:5): [True: 1, False: 0]
  ------------------
 2199|      1|    string = &_Py_ID(length);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2200|      1|    _PyUnicode_InternStatic(interp, &string);
 2201|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2201:5): [True: 1, False: 0]
  ------------------
 2202|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2202:5): [True: 1, False: 0]
  ------------------
 2203|      1|    string = &_Py_ID(level);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2204|      1|    _PyUnicode_InternStatic(interp, &string);
 2205|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2205:5): [True: 1, False: 0]
  ------------------
 2206|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2206:5): [True: 1, False: 0]
  ------------------
 2207|      1|    string = &_Py_ID(limit);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2208|      1|    _PyUnicode_InternStatic(interp, &string);
 2209|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2209:5): [True: 1, False: 0]
  ------------------
 2210|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2210:5): [True: 1, False: 0]
  ------------------
 2211|      1|    string = &_Py_ID(line);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2212|      1|    _PyUnicode_InternStatic(interp, &string);
 2213|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2213:5): [True: 1, False: 0]
  ------------------
 2214|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2214:5): [True: 1, False: 0]
  ------------------
 2215|      1|    string = &_Py_ID(line_buffering);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2216|      1|    _PyUnicode_InternStatic(interp, &string);
 2217|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2217:5): [True: 1, False: 0]
  ------------------
 2218|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2218:5): [True: 1, False: 0]
  ------------------
 2219|      1|    string = &_Py_ID(lineno);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2220|      1|    _PyUnicode_InternStatic(interp, &string);
 2221|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2221:5): [True: 1, False: 0]
  ------------------
 2222|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2222:5): [True: 1, False: 0]
  ------------------
 2223|      1|    string = &_Py_ID(little);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2224|      1|    _PyUnicode_InternStatic(interp, &string);
 2225|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2225:5): [True: 1, False: 0]
  ------------------
 2226|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2226:5): [True: 1, False: 0]
  ------------------
 2227|      1|    string = &_Py_ID(lo);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2228|      1|    _PyUnicode_InternStatic(interp, &string);
 2229|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2229:5): [True: 1, False: 0]
  ------------------
 2230|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2230:5): [True: 1, False: 0]
  ------------------
 2231|      1|    string = &_Py_ID(locale);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2232|      1|    _PyUnicode_InternStatic(interp, &string);
 2233|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2233:5): [True: 1, False: 0]
  ------------------
 2234|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2234:5): [True: 1, False: 0]
  ------------------
 2235|      1|    string = &_Py_ID(locals);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2236|      1|    _PyUnicode_InternStatic(interp, &string);
 2237|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2237:5): [True: 1, False: 0]
  ------------------
 2238|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2238:5): [True: 1, False: 0]
  ------------------
 2239|      1|    string = &_Py_ID(logoption);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2240|      1|    _PyUnicode_InternStatic(interp, &string);
 2241|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2241:5): [True: 1, False: 0]
  ------------------
 2242|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2242:5): [True: 1, False: 0]
  ------------------
 2243|      1|    string = &_Py_ID(loop);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2244|      1|    _PyUnicode_InternStatic(interp, &string);
 2245|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2245:5): [True: 1, False: 0]
  ------------------
 2246|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2246:5): [True: 1, False: 0]
  ------------------
 2247|      1|    string = &_Py_ID(manual_reset);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2248|      1|    _PyUnicode_InternStatic(interp, &string);
 2249|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2249:5): [True: 1, False: 0]
  ------------------
 2250|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2250:5): [True: 1, False: 0]
  ------------------
 2251|      1|    string = &_Py_ID(mapping);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2252|      1|    _PyUnicode_InternStatic(interp, &string);
 2253|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2253:5): [True: 1, False: 0]
  ------------------
 2254|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2254:5): [True: 1, False: 0]
  ------------------
 2255|      1|    string = &_Py_ID(mask);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2256|      1|    _PyUnicode_InternStatic(interp, &string);
 2257|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2257:5): [True: 1, False: 0]
  ------------------
 2258|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2258:5): [True: 1, False: 0]
  ------------------
 2259|      1|    string = &_Py_ID(match);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2260|      1|    _PyUnicode_InternStatic(interp, &string);
 2261|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2261:5): [True: 1, False: 0]
  ------------------
 2262|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2262:5): [True: 1, False: 0]
  ------------------
 2263|      1|    string = &_Py_ID(max_length);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2264|      1|    _PyUnicode_InternStatic(interp, &string);
 2265|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2265:5): [True: 1, False: 0]
  ------------------
 2266|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2266:5): [True: 1, False: 0]
  ------------------
 2267|      1|    string = &_Py_ID(max_threads);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2268|      1|    _PyUnicode_InternStatic(interp, &string);
 2269|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2269:5): [True: 1, False: 0]
  ------------------
 2270|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2270:5): [True: 1, False: 0]
  ------------------
 2271|      1|    string = &_Py_ID(maxdigits);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2272|      1|    _PyUnicode_InternStatic(interp, &string);
 2273|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2273:5): [True: 1, False: 0]
  ------------------
 2274|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2274:5): [True: 1, False: 0]
  ------------------
 2275|      1|    string = &_Py_ID(maxevents);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2276|      1|    _PyUnicode_InternStatic(interp, &string);
 2277|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2277:5): [True: 1, False: 0]
  ------------------
 2278|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2278:5): [True: 1, False: 0]
  ------------------
 2279|      1|    string = &_Py_ID(maxlen);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2280|      1|    _PyUnicode_InternStatic(interp, &string);
 2281|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2281:5): [True: 1, False: 0]
  ------------------
 2282|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2282:5): [True: 1, False: 0]
  ------------------
 2283|      1|    string = &_Py_ID(maxmem);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2284|      1|    _PyUnicode_InternStatic(interp, &string);
 2285|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2285:5): [True: 1, False: 0]
  ------------------
 2286|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2286:5): [True: 1, False: 0]
  ------------------
 2287|      1|    string = &_Py_ID(maxsize);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2288|      1|    _PyUnicode_InternStatic(interp, &string);
 2289|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2289:5): [True: 1, False: 0]
  ------------------
 2290|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2290:5): [True: 1, False: 0]
  ------------------
 2291|      1|    string = &_Py_ID(maxsplit);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2292|      1|    _PyUnicode_InternStatic(interp, &string);
 2293|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2293:5): [True: 1, False: 0]
  ------------------
 2294|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2294:5): [True: 1, False: 0]
  ------------------
 2295|      1|    string = &_Py_ID(maxvalue);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2296|      1|    _PyUnicode_InternStatic(interp, &string);
 2297|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2297:5): [True: 1, False: 0]
  ------------------
 2298|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2298:5): [True: 1, False: 0]
  ------------------
 2299|      1|    string = &_Py_ID(memLevel);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2300|      1|    _PyUnicode_InternStatic(interp, &string);
 2301|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2301:5): [True: 1, False: 0]
  ------------------
 2302|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2302:5): [True: 1, False: 0]
  ------------------
 2303|      1|    string = &_Py_ID(memlimit);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2304|      1|    _PyUnicode_InternStatic(interp, &string);
 2305|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2305:5): [True: 1, False: 0]
  ------------------
 2306|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2306:5): [True: 1, False: 0]
  ------------------
 2307|      1|    string = &_Py_ID(message);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2308|      1|    _PyUnicode_InternStatic(interp, &string);
 2309|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2309:5): [True: 1, False: 0]
  ------------------
 2310|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2310:5): [True: 1, False: 0]
  ------------------
 2311|      1|    string = &_Py_ID(metaclass);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2312|      1|    _PyUnicode_InternStatic(interp, &string);
 2313|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2313:5): [True: 1, False: 0]
  ------------------
 2314|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2314:5): [True: 1, False: 0]
  ------------------
 2315|      1|    string = &_Py_ID(metadata);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2316|      1|    _PyUnicode_InternStatic(interp, &string);
 2317|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2317:5): [True: 1, False: 0]
  ------------------
 2318|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2318:5): [True: 1, False: 0]
  ------------------
 2319|      1|    string = &_Py_ID(method);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2320|      1|    _PyUnicode_InternStatic(interp, &string);
 2321|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2321:5): [True: 1, False: 0]
  ------------------
 2322|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2322:5): [True: 1, False: 0]
  ------------------
 2323|      1|    string = &_Py_ID(microsecond);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2324|      1|    _PyUnicode_InternStatic(interp, &string);
 2325|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2325:5): [True: 1, False: 0]
  ------------------
 2326|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2326:5): [True: 1, False: 0]
  ------------------
 2327|      1|    string = &_Py_ID(microseconds);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2328|      1|    _PyUnicode_InternStatic(interp, &string);
 2329|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2329:5): [True: 1, False: 0]
  ------------------
 2330|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2330:5): [True: 1, False: 0]
  ------------------
 2331|      1|    string = &_Py_ID(milliseconds);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2332|      1|    _PyUnicode_InternStatic(interp, &string);
 2333|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2333:5): [True: 1, False: 0]
  ------------------
 2334|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2334:5): [True: 1, False: 0]
  ------------------
 2335|      1|    string = &_Py_ID(minute);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2336|      1|    _PyUnicode_InternStatic(interp, &string);
 2337|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2337:5): [True: 1, False: 0]
  ------------------
 2338|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2338:5): [True: 1, False: 0]
  ------------------
 2339|      1|    string = &_Py_ID(minutes);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2340|      1|    _PyUnicode_InternStatic(interp, &string);
 2341|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2341:5): [True: 1, False: 0]
  ------------------
 2342|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2342:5): [True: 1, False: 0]
  ------------------
 2343|      1|    string = &_Py_ID(mod);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2344|      1|    _PyUnicode_InternStatic(interp, &string);
 2345|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2345:5): [True: 1, False: 0]
  ------------------
 2346|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2346:5): [True: 1, False: 0]
  ------------------
 2347|      1|    string = &_Py_ID(mode);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2348|      1|    _PyUnicode_InternStatic(interp, &string);
 2349|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2349:5): [True: 1, False: 0]
  ------------------
 2350|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2350:5): [True: 1, False: 0]
  ------------------
 2351|      1|    string = &_Py_ID(module);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2352|      1|    _PyUnicode_InternStatic(interp, &string);
 2353|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2353:5): [True: 1, False: 0]
  ------------------
 2354|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2354:5): [True: 1, False: 0]
  ------------------
 2355|      1|    string = &_Py_ID(module_globals);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2356|      1|    _PyUnicode_InternStatic(interp, &string);
 2357|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2357:5): [True: 1, False: 0]
  ------------------
 2358|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2358:5): [True: 1, False: 0]
  ------------------
 2359|      1|    string = &_Py_ID(modules);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2360|      1|    _PyUnicode_InternStatic(interp, &string);
 2361|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2361:5): [True: 1, False: 0]
  ------------------
 2362|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2362:5): [True: 1, False: 0]
  ------------------
 2363|      1|    string = &_Py_ID(modulo);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2364|      1|    _PyUnicode_InternStatic(interp, &string);
 2365|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2365:5): [True: 1, False: 0]
  ------------------
 2366|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2366:5): [True: 1, False: 0]
  ------------------
 2367|      1|    string = &_Py_ID(month);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2368|      1|    _PyUnicode_InternStatic(interp, &string);
 2369|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2369:5): [True: 1, False: 0]
  ------------------
 2370|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2370:5): [True: 1, False: 0]
  ------------------
 2371|      1|    string = &_Py_ID(mro);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2372|      1|    _PyUnicode_InternStatic(interp, &string);
 2373|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2373:5): [True: 1, False: 0]
  ------------------
 2374|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2374:5): [True: 1, False: 0]
  ------------------
 2375|      1|    string = &_Py_ID(msg);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2376|      1|    _PyUnicode_InternStatic(interp, &string);
 2377|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2377:5): [True: 1, False: 0]
  ------------------
 2378|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2378:5): [True: 1, False: 0]
  ------------------
 2379|      1|    string = &_Py_ID(mutex);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2380|      1|    _PyUnicode_InternStatic(interp, &string);
 2381|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2381:5): [True: 1, False: 0]
  ------------------
 2382|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2382:5): [True: 1, False: 0]
  ------------------
 2383|      1|    string = &_Py_ID(mycmp);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2384|      1|    _PyUnicode_InternStatic(interp, &string);
 2385|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2385:5): [True: 1, False: 0]
  ------------------
 2386|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2386:5): [True: 1, False: 0]
  ------------------
 2387|      1|    string = &_Py_ID(n_fields);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2388|      1|    _PyUnicode_InternStatic(interp, &string);
 2389|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2389:5): [True: 1, False: 0]
  ------------------
 2390|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2390:5): [True: 1, False: 0]
  ------------------
 2391|      1|    string = &_Py_ID(n_sequence_fields);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2392|      1|    _PyUnicode_InternStatic(interp, &string);
 2393|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2393:5): [True: 1, False: 0]
  ------------------
 2394|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2394:5): [True: 1, False: 0]
  ------------------
 2395|      1|    string = &_Py_ID(n_unnamed_fields);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2396|      1|    _PyUnicode_InternStatic(interp, &string);
 2397|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2397:5): [True: 1, False: 0]
  ------------------
 2398|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2398:5): [True: 1, False: 0]
  ------------------
 2399|      1|    string = &_Py_ID(name);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2400|      1|    _PyUnicode_InternStatic(interp, &string);
 2401|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2401:5): [True: 1, False: 0]
  ------------------
 2402|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2402:5): [True: 1, False: 0]
  ------------------
 2403|      1|    string = &_Py_ID(name_from);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2404|      1|    _PyUnicode_InternStatic(interp, &string);
 2405|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2405:5): [True: 1, False: 0]
  ------------------
 2406|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2406:5): [True: 1, False: 0]
  ------------------
 2407|      1|    string = &_Py_ID(namespace_separator);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2408|      1|    _PyUnicode_InternStatic(interp, &string);
 2409|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2409:5): [True: 1, False: 0]
  ------------------
 2410|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2410:5): [True: 1, False: 0]
  ------------------
 2411|      1|    string = &_Py_ID(namespaces);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2412|      1|    _PyUnicode_InternStatic(interp, &string);
 2413|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2413:5): [True: 1, False: 0]
  ------------------
 2414|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2414:5): [True: 1, False: 0]
  ------------------
 2415|      1|    string = &_Py_ID(native);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2416|      1|    _PyUnicode_InternStatic(interp, &string);
 2417|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2417:5): [True: 1, False: 0]
  ------------------
 2418|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2418:5): [True: 1, False: 0]
  ------------------
 2419|      1|    string = &_Py_ID(ndigits);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2420|      1|    _PyUnicode_InternStatic(interp, &string);
 2421|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2421:5): [True: 1, False: 0]
  ------------------
 2422|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2422:5): [True: 1, False: 0]
  ------------------
 2423|      1|    string = &_Py_ID(nested);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2424|      1|    _PyUnicode_InternStatic(interp, &string);
 2425|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2425:5): [True: 1, False: 0]
  ------------------
 2426|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2426:5): [True: 1, False: 0]
  ------------------
 2427|      1|    string = &_Py_ID(new_file_name);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2428|      1|    _PyUnicode_InternStatic(interp, &string);
 2429|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2429:5): [True: 1, False: 0]
  ------------------
 2430|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2430:5): [True: 1, False: 0]
  ------------------
 2431|      1|    string = &_Py_ID(new_limit);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2432|      1|    _PyUnicode_InternStatic(interp, &string);
 2433|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2433:5): [True: 1, False: 0]
  ------------------
 2434|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2434:5): [True: 1, False: 0]
  ------------------
 2435|      1|    string = &_Py_ID(newline);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2436|      1|    _PyUnicode_InternStatic(interp, &string);
 2437|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2437:5): [True: 1, False: 0]
  ------------------
 2438|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2438:5): [True: 1, False: 0]
  ------------------
 2439|      1|    string = &_Py_ID(newlines);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2440|      1|    _PyUnicode_InternStatic(interp, &string);
 2441|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2441:5): [True: 1, False: 0]
  ------------------
 2442|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2442:5): [True: 1, False: 0]
  ------------------
 2443|      1|    string = &_Py_ID(next);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2444|      1|    _PyUnicode_InternStatic(interp, &string);
 2445|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2445:5): [True: 1, False: 0]
  ------------------
 2446|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2446:5): [True: 1, False: 0]
  ------------------
 2447|      1|    string = &_Py_ID(nlocals);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2448|      1|    _PyUnicode_InternStatic(interp, &string);
 2449|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2449:5): [True: 1, False: 0]
  ------------------
 2450|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2450:5): [True: 1, False: 0]
  ------------------
 2451|      1|    string = &_Py_ID(node_depth);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2452|      1|    _PyUnicode_InternStatic(interp, &string);
 2453|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2453:5): [True: 1, False: 0]
  ------------------
 2454|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2454:5): [True: 1, False: 0]
  ------------------
 2455|      1|    string = &_Py_ID(node_offset);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2456|      1|    _PyUnicode_InternStatic(interp, &string);
 2457|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2457:5): [True: 1, False: 0]
  ------------------
 2458|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2458:5): [True: 1, False: 0]
  ------------------
 2459|      1|    string = &_Py_ID(ns);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2460|      1|    _PyUnicode_InternStatic(interp, &string);
 2461|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2461:5): [True: 1, False: 0]
  ------------------
 2462|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2462:5): [True: 1, False: 0]
  ------------------
 2463|      1|    string = &_Py_ID(nstype);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2464|      1|    _PyUnicode_InternStatic(interp, &string);
 2465|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2465:5): [True: 1, False: 0]
  ------------------
 2466|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2466:5): [True: 1, False: 0]
  ------------------
 2467|      1|    string = &_Py_ID(nt);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2468|      1|    _PyUnicode_InternStatic(interp, &string);
 2469|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2469:5): [True: 1, False: 0]
  ------------------
 2470|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2470:5): [True: 1, False: 0]
  ------------------
 2471|      1|    string = &_Py_ID(null);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2472|      1|    _PyUnicode_InternStatic(interp, &string);
 2473|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2473:5): [True: 1, False: 0]
  ------------------
 2474|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2474:5): [True: 1, False: 0]
  ------------------
 2475|      1|    string = &_Py_ID(number);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2476|      1|    _PyUnicode_InternStatic(interp, &string);
 2477|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2477:5): [True: 1, False: 0]
  ------------------
 2478|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2478:5): [True: 1, False: 0]
  ------------------
 2479|      1|    string = &_Py_ID(obj);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2480|      1|    _PyUnicode_InternStatic(interp, &string);
 2481|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2481:5): [True: 1, False: 0]
  ------------------
 2482|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2482:5): [True: 1, False: 0]
  ------------------
 2483|      1|    string = &_Py_ID(object);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2484|      1|    _PyUnicode_InternStatic(interp, &string);
 2485|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2485:5): [True: 1, False: 0]
  ------------------
 2486|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2486:5): [True: 1, False: 0]
  ------------------
 2487|      1|    string = &_Py_ID(offset);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2488|      1|    _PyUnicode_InternStatic(interp, &string);
 2489|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2489:5): [True: 1, False: 0]
  ------------------
 2490|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2490:5): [True: 1, False: 0]
  ------------------
 2491|      1|    string = &_Py_ID(offset_dst);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2492|      1|    _PyUnicode_InternStatic(interp, &string);
 2493|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2493:5): [True: 1, False: 0]
  ------------------
 2494|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2494:5): [True: 1, False: 0]
  ------------------
 2495|      1|    string = &_Py_ID(offset_src);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2496|      1|    _PyUnicode_InternStatic(interp, &string);
 2497|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2497:5): [True: 1, False: 0]
  ------------------
 2498|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2498:5): [True: 1, False: 0]
  ------------------
 2499|      1|    string = &_Py_ID(on_type_read);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2500|      1|    _PyUnicode_InternStatic(interp, &string);
 2501|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2501:5): [True: 1, False: 0]
  ------------------
 2502|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2502:5): [True: 1, False: 0]
  ------------------
 2503|      1|    string = &_Py_ID(onceregistry);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2504|      1|    _PyUnicode_InternStatic(interp, &string);
 2505|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2505:5): [True: 1, False: 0]
  ------------------
 2506|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2506:5): [True: 1, False: 0]
  ------------------
 2507|      1|    string = &_Py_ID(only_active_thread);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2508|      1|    _PyUnicode_InternStatic(interp, &string);
 2509|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2509:5): [True: 1, False: 0]
  ------------------
 2510|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2510:5): [True: 1, False: 0]
  ------------------
 2511|      1|    string = &_Py_ID(only_keys);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2512|      1|    _PyUnicode_InternStatic(interp, &string);
 2513|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2513:5): [True: 1, False: 0]
  ------------------
 2514|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2514:5): [True: 1, False: 0]
  ------------------
 2515|      1|    string = &_Py_ID(oparg);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2516|      1|    _PyUnicode_InternStatic(interp, &string);
 2517|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2517:5): [True: 1, False: 0]
  ------------------
 2518|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2518:5): [True: 1, False: 0]
  ------------------
 2519|      1|    string = &_Py_ID(opcode);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2520|      1|    _PyUnicode_InternStatic(interp, &string);
 2521|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2521:5): [True: 1, False: 0]
  ------------------
 2522|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2522:5): [True: 1, False: 0]
  ------------------
 2523|      1|    string = &_Py_ID(opcodes);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2524|      1|    _PyUnicode_InternStatic(interp, &string);
 2525|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2525:5): [True: 1, False: 0]
  ------------------
 2526|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2526:5): [True: 1, False: 0]
  ------------------
 2527|      1|    string = &_Py_ID(open);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2528|      1|    _PyUnicode_InternStatic(interp, &string);
 2529|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2529:5): [True: 1, False: 0]
  ------------------
 2530|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2530:5): [True: 1, False: 0]
  ------------------
 2531|      1|    string = &_Py_ID(opener);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2532|      1|    _PyUnicode_InternStatic(interp, &string);
 2533|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2533:5): [True: 1, False: 0]
  ------------------
 2534|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2534:5): [True: 1, False: 0]
  ------------------
 2535|      1|    string = &_Py_ID(operation);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2536|      1|    _PyUnicode_InternStatic(interp, &string);
 2537|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2537:5): [True: 1, False: 0]
  ------------------
 2538|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2538:5): [True: 1, False: 0]
  ------------------
 2539|      1|    string = &_Py_ID(optimize);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2540|      1|    _PyUnicode_InternStatic(interp, &string);
 2541|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2541:5): [True: 1, False: 0]
  ------------------
 2542|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2542:5): [True: 1, False: 0]
  ------------------
 2543|      1|    string = &_Py_ID(options);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2544|      1|    _PyUnicode_InternStatic(interp, &string);
 2545|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2545:5): [True: 1, False: 0]
  ------------------
 2546|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2546:5): [True: 1, False: 0]
  ------------------
 2547|      1|    string = &_Py_ID(order);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2548|      1|    _PyUnicode_InternStatic(interp, &string);
 2549|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2549:5): [True: 1, False: 0]
  ------------------
 2550|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2550:5): [True: 1, False: 0]
  ------------------
 2551|      1|    string = &_Py_ID(origin);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2552|      1|    _PyUnicode_InternStatic(interp, &string);
 2553|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2553:5): [True: 1, False: 0]
  ------------------
 2554|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2554:5): [True: 1, False: 0]
  ------------------
 2555|      1|    string = &_Py_ID(other);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2556|      1|    _PyUnicode_InternStatic(interp, &string);
 2557|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2557:5): [True: 1, False: 0]
  ------------------
 2558|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2558:5): [True: 1, False: 0]
  ------------------
 2559|      1|    string = &_Py_ID(out_fd);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2560|      1|    _PyUnicode_InternStatic(interp, &string);
 2561|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2561:5): [True: 1, False: 0]
  ------------------
 2562|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2562:5): [True: 1, False: 0]
  ------------------
 2563|      1|    string = &_Py_ID(outgoing);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2564|      1|    _PyUnicode_InternStatic(interp, &string);
 2565|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2565:5): [True: 1, False: 0]
  ------------------
 2566|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2566:5): [True: 1, False: 0]
  ------------------
 2567|      1|    string = &_Py_ID(outpath);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2568|      1|    _PyUnicode_InternStatic(interp, &string);
 2569|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2569:5): [True: 1, False: 0]
  ------------------
 2570|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2570:5): [True: 1, False: 0]
  ------------------
 2571|      1|    string = &_Py_ID(overlapped);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2572|      1|    _PyUnicode_InternStatic(interp, &string);
 2573|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2573:5): [True: 1, False: 0]
  ------------------
 2574|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2574:5): [True: 1, False: 0]
  ------------------
 2575|      1|    string = &_Py_ID(owner);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2576|      1|    _PyUnicode_InternStatic(interp, &string);
 2577|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2577:5): [True: 1, False: 0]
  ------------------
 2578|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2578:5): [True: 1, False: 0]
  ------------------
 2579|      1|    string = &_Py_ID(pad);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2580|      1|    _PyUnicode_InternStatic(interp, &string);
 2581|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2581:5): [True: 1, False: 0]
  ------------------
 2582|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2582:5): [True: 1, False: 0]
  ------------------
 2583|      1|    string = &_Py_ID(padded);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2584|      1|    _PyUnicode_InternStatic(interp, &string);
 2585|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2585:5): [True: 1, False: 0]
  ------------------
 2586|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2586:5): [True: 1, False: 0]
  ------------------
 2587|      1|    string = &_Py_ID(pages);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2588|      1|    _PyUnicode_InternStatic(interp, &string);
 2589|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2589:5): [True: 1, False: 0]
  ------------------
 2590|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2590:5): [True: 1, False: 0]
  ------------------
 2591|      1|    string = &_Py_ID(parameter);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2592|      1|    _PyUnicode_InternStatic(interp, &string);
 2593|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2593:5): [True: 1, False: 0]
  ------------------
 2594|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2594:5): [True: 1, False: 0]
  ------------------
 2595|      1|    string = &_Py_ID(parent);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2596|      1|    _PyUnicode_InternStatic(interp, &string);
 2597|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2597:5): [True: 1, False: 0]
  ------------------
 2598|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2598:5): [True: 1, False: 0]
  ------------------
 2599|      1|    string = &_Py_ID(password);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2600|      1|    _PyUnicode_InternStatic(interp, &string);
 2601|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2601:5): [True: 1, False: 0]
  ------------------
 2602|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2602:5): [True: 1, False: 0]
  ------------------
 2603|      1|    string = &_Py_ID(path);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2604|      1|    _PyUnicode_InternStatic(interp, &string);
 2605|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2605:5): [True: 1, False: 0]
  ------------------
 2606|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2606:5): [True: 1, False: 0]
  ------------------
 2607|      1|    string = &_Py_ID(pattern);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2608|      1|    _PyUnicode_InternStatic(interp, &string);
 2609|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2609:5): [True: 1, False: 0]
  ------------------
 2610|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2610:5): [True: 1, False: 0]
  ------------------
 2611|      1|    string = &_Py_ID(peek);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2612|      1|    _PyUnicode_InternStatic(interp, &string);
 2613|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2613:5): [True: 1, False: 0]
  ------------------
 2614|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2614:5): [True: 1, False: 0]
  ------------------
 2615|      1|    string = &_Py_ID(persistent_id);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2616|      1|    _PyUnicode_InternStatic(interp, &string);
 2617|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2617:5): [True: 1, False: 0]
  ------------------
 2618|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2618:5): [True: 1, False: 0]
  ------------------
 2619|      1|    string = &_Py_ID(persistent_load);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2620|      1|    _PyUnicode_InternStatic(interp, &string);
 2621|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2621:5): [True: 1, False: 0]
  ------------------
 2622|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2622:5): [True: 1, False: 0]
  ------------------
 2623|      1|    string = &_Py_ID(person);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2624|      1|    _PyUnicode_InternStatic(interp, &string);
 2625|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2625:5): [True: 1, False: 0]
  ------------------
 2626|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2626:5): [True: 1, False: 0]
  ------------------
 2627|      1|    string = &_Py_ID(pi_factory);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2628|      1|    _PyUnicode_InternStatic(interp, &string);
 2629|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2629:5): [True: 1, False: 0]
  ------------------
 2630|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2630:5): [True: 1, False: 0]
  ------------------
 2631|      1|    string = &_Py_ID(pid);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2632|      1|    _PyUnicode_InternStatic(interp, &string);
 2633|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2633:5): [True: 1, False: 0]
  ------------------
 2634|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2634:5): [True: 1, False: 0]
  ------------------
 2635|      1|    string = &_Py_ID(pidfd);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2636|      1|    _PyUnicode_InternStatic(interp, &string);
 2637|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2637:5): [True: 1, False: 0]
  ------------------
 2638|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2638:5): [True: 1, False: 0]
  ------------------
 2639|      1|    string = &_Py_ID(pointer_bits);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2640|      1|    _PyUnicode_InternStatic(interp, &string);
 2641|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2641:5): [True: 1, False: 0]
  ------------------
 2642|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2642:5): [True: 1, False: 0]
  ------------------
 2643|      1|    string = &_Py_ID(policy);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2644|      1|    _PyUnicode_InternStatic(interp, &string);
 2645|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2645:5): [True: 1, False: 0]
  ------------------
 2646|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2646:5): [True: 1, False: 0]
  ------------------
 2647|      1|    string = &_Py_ID(pos);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2648|      1|    _PyUnicode_InternStatic(interp, &string);
 2649|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2649:5): [True: 1, False: 0]
  ------------------
 2650|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2650:5): [True: 1, False: 0]
  ------------------
 2651|      1|    string = &_Py_ID(pos1);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2652|      1|    _PyUnicode_InternStatic(interp, &string);
 2653|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2653:5): [True: 1, False: 0]
  ------------------
 2654|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2654:5): [True: 1, False: 0]
  ------------------
 2655|      1|    string = &_Py_ID(pos2);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2656|      1|    _PyUnicode_InternStatic(interp, &string);
 2657|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2657:5): [True: 1, False: 0]
  ------------------
 2658|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2658:5): [True: 1, False: 0]
  ------------------
 2659|      1|    string = &_Py_ID(posix);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2660|      1|    _PyUnicode_InternStatic(interp, &string);
 2661|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2661:5): [True: 1, False: 0]
  ------------------
 2662|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2662:5): [True: 1, False: 0]
  ------------------
 2663|      1|    string = &_Py_ID(prec);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2664|      1|    _PyUnicode_InternStatic(interp, &string);
 2665|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2665:5): [True: 1, False: 0]
  ------------------
 2666|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2666:5): [True: 1, False: 0]
  ------------------
 2667|      1|    string = &_Py_ID(preserve_exc);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2668|      1|    _PyUnicode_InternStatic(interp, &string);
 2669|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2669:5): [True: 1, False: 0]
  ------------------
 2670|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2670:5): [True: 1, False: 0]
  ------------------
 2671|      1|    string = &_Py_ID(print_file_and_line);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2672|      1|    _PyUnicode_InternStatic(interp, &string);
 2673|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2673:5): [True: 1, False: 0]
  ------------------
 2674|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2674:5): [True: 1, False: 0]
  ------------------
 2675|      1|    string = &_Py_ID(priority);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2676|      1|    _PyUnicode_InternStatic(interp, &string);
 2677|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2677:5): [True: 1, False: 0]
  ------------------
 2678|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2678:5): [True: 1, False: 0]
  ------------------
 2679|      1|    string = &_Py_ID(progress);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2680|      1|    _PyUnicode_InternStatic(interp, &string);
 2681|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2681:5): [True: 1, False: 0]
  ------------------
 2682|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2682:5): [True: 1, False: 0]
  ------------------
 2683|      1|    string = &_Py_ID(progress_callback);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2684|      1|    _PyUnicode_InternStatic(interp, &string);
 2685|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2685:5): [True: 1, False: 0]
  ------------------
 2686|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2686:5): [True: 1, False: 0]
  ------------------
 2687|      1|    string = &_Py_ID(progress_routine);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2688|      1|    _PyUnicode_InternStatic(interp, &string);
 2689|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2689:5): [True: 1, False: 0]
  ------------------
 2690|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2690:5): [True: 1, False: 0]
  ------------------
 2691|      1|    string = &_Py_ID(proto);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2692|      1|    _PyUnicode_InternStatic(interp, &string);
 2693|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2693:5): [True: 1, False: 0]
  ------------------
 2694|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2694:5): [True: 1, False: 0]
  ------------------
 2695|      1|    string = &_Py_ID(protocol);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2696|      1|    _PyUnicode_InternStatic(interp, &string);
 2697|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2697:5): [True: 1, False: 0]
  ------------------
 2698|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2698:5): [True: 1, False: 0]
  ------------------
 2699|      1|    string = &_Py_ID(ps1);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2700|      1|    _PyUnicode_InternStatic(interp, &string);
 2701|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2701:5): [True: 1, False: 0]
  ------------------
 2702|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2702:5): [True: 1, False: 0]
  ------------------
 2703|      1|    string = &_Py_ID(ps2);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2704|      1|    _PyUnicode_InternStatic(interp, &string);
 2705|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2705:5): [True: 1, False: 0]
  ------------------
 2706|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2706:5): [True: 1, False: 0]
  ------------------
 2707|      1|    string = &_Py_ID(qid);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2708|      1|    _PyUnicode_InternStatic(interp, &string);
 2709|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2709:5): [True: 1, False: 0]
  ------------------
 2710|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2710:5): [True: 1, False: 0]
  ------------------
 2711|      1|    string = &_Py_ID(qualname);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2712|      1|    _PyUnicode_InternStatic(interp, &string);
 2713|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2713:5): [True: 1, False: 0]
  ------------------
 2714|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2714:5): [True: 1, False: 0]
  ------------------
 2715|      1|    string = &_Py_ID(query);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2716|      1|    _PyUnicode_InternStatic(interp, &string);
 2717|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2717:5): [True: 1, False: 0]
  ------------------
 2718|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2718:5): [True: 1, False: 0]
  ------------------
 2719|      1|    string = &_Py_ID(queuetype);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2720|      1|    _PyUnicode_InternStatic(interp, &string);
 2721|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2721:5): [True: 1, False: 0]
  ------------------
 2722|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2722:5): [True: 1, False: 0]
  ------------------
 2723|      1|    string = &_Py_ID(quotetabs);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2724|      1|    _PyUnicode_InternStatic(interp, &string);
 2725|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2725:5): [True: 1, False: 0]
  ------------------
 2726|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2726:5): [True: 1, False: 0]
  ------------------
 2727|      1|    string = &_Py_ID(raw);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2728|      1|    _PyUnicode_InternStatic(interp, &string);
 2729|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2729:5): [True: 1, False: 0]
  ------------------
 2730|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2730:5): [True: 1, False: 0]
  ------------------
 2731|      1|    string = &_Py_ID(read);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2732|      1|    _PyUnicode_InternStatic(interp, &string);
 2733|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2733:5): [True: 1, False: 0]
  ------------------
 2734|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2734:5): [True: 1, False: 0]
  ------------------
 2735|      1|    string = &_Py_ID(read1);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2736|      1|    _PyUnicode_InternStatic(interp, &string);
 2737|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2737:5): [True: 1, False: 0]
  ------------------
 2738|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2738:5): [True: 1, False: 0]
  ------------------
 2739|      1|    string = &_Py_ID(readable);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2740|      1|    _PyUnicode_InternStatic(interp, &string);
 2741|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2741:5): [True: 1, False: 0]
  ------------------
 2742|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2742:5): [True: 1, False: 0]
  ------------------
 2743|      1|    string = &_Py_ID(readall);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2744|      1|    _PyUnicode_InternStatic(interp, &string);
 2745|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2745:5): [True: 1, False: 0]
  ------------------
 2746|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2746:5): [True: 1, False: 0]
  ------------------
 2747|      1|    string = &_Py_ID(readinto);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2748|      1|    _PyUnicode_InternStatic(interp, &string);
 2749|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2749:5): [True: 1, False: 0]
  ------------------
 2750|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2750:5): [True: 1, False: 0]
  ------------------
 2751|      1|    string = &_Py_ID(readinto1);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2752|      1|    _PyUnicode_InternStatic(interp, &string);
 2753|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2753:5): [True: 1, False: 0]
  ------------------
 2754|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2754:5): [True: 1, False: 0]
  ------------------
 2755|      1|    string = &_Py_ID(readline);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2756|      1|    _PyUnicode_InternStatic(interp, &string);
 2757|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2757:5): [True: 1, False: 0]
  ------------------
 2758|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2758:5): [True: 1, False: 0]
  ------------------
 2759|      1|    string = &_Py_ID(readonly);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2760|      1|    _PyUnicode_InternStatic(interp, &string);
 2761|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2761:5): [True: 1, False: 0]
  ------------------
 2762|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2762:5): [True: 1, False: 0]
  ------------------
 2763|      1|    string = &_Py_ID(real);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2764|      1|    _PyUnicode_InternStatic(interp, &string);
 2765|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2765:5): [True: 1, False: 0]
  ------------------
 2766|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2766:5): [True: 1, False: 0]
  ------------------
 2767|      1|    string = &_Py_ID(recursive);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2768|      1|    _PyUnicode_InternStatic(interp, &string);
 2769|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2769:5): [True: 1, False: 0]
  ------------------
 2770|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2770:5): [True: 1, False: 0]
  ------------------
 2771|      1|    string = &_Py_ID(reducer_override);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2772|      1|    _PyUnicode_InternStatic(interp, &string);
 2773|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2773:5): [True: 1, False: 0]
  ------------------
 2774|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2774:5): [True: 1, False: 0]
  ------------------
 2775|      1|    string = &_Py_ID(registry);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2776|      1|    _PyUnicode_InternStatic(interp, &string);
 2777|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2777:5): [True: 1, False: 0]
  ------------------
 2778|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2778:5): [True: 1, False: 0]
  ------------------
 2779|      1|    string = &_Py_ID(rel_tol);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2780|      1|    _PyUnicode_InternStatic(interp, &string);
 2781|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2781:5): [True: 1, False: 0]
  ------------------
 2782|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2782:5): [True: 1, False: 0]
  ------------------
 2783|      1|    string = &_Py_ID(release);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2784|      1|    _PyUnicode_InternStatic(interp, &string);
 2785|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2785:5): [True: 1, False: 0]
  ------------------
 2786|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2786:5): [True: 1, False: 0]
  ------------------
 2787|      1|    string = &_Py_ID(reload);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2788|      1|    _PyUnicode_InternStatic(interp, &string);
 2789|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2789:5): [True: 1, False: 0]
  ------------------
 2790|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2790:5): [True: 1, False: 0]
  ------------------
 2791|      1|    string = &_Py_ID(repeat);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2792|      1|    _PyUnicode_InternStatic(interp, &string);
 2793|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2793:5): [True: 1, False: 0]
  ------------------
 2794|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2794:5): [True: 1, False: 0]
  ------------------
 2795|      1|    string = &_Py_ID(repl);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2796|      1|    _PyUnicode_InternStatic(interp, &string);
 2797|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2797:5): [True: 1, False: 0]
  ------------------
 2798|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2798:5): [True: 1, False: 0]
  ------------------
 2799|      1|    string = &_Py_ID(replace);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2800|      1|    _PyUnicode_InternStatic(interp, &string);
 2801|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2801:5): [True: 1, False: 0]
  ------------------
 2802|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2802:5): [True: 1, False: 0]
  ------------------
 2803|      1|    string = &_Py_ID(reqrefs);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2804|      1|    _PyUnicode_InternStatic(interp, &string);
 2805|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2805:5): [True: 1, False: 0]
  ------------------
 2806|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2806:5): [True: 1, False: 0]
  ------------------
 2807|      1|    string = &_Py_ID(require_ready);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2808|      1|    _PyUnicode_InternStatic(interp, &string);
 2809|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2809:5): [True: 1, False: 0]
  ------------------
 2810|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2810:5): [True: 1, False: 0]
  ------------------
 2811|      1|    string = &_Py_ID(reserved);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2812|      1|    _PyUnicode_InternStatic(interp, &string);
 2813|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2813:5): [True: 1, False: 0]
  ------------------
 2814|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2814:5): [True: 1, False: 0]
  ------------------
 2815|      1|    string = &_Py_ID(reset);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2816|      1|    _PyUnicode_InternStatic(interp, &string);
 2817|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2817:5): [True: 1, False: 0]
  ------------------
 2818|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2818:5): [True: 1, False: 0]
  ------------------
 2819|      1|    string = &_Py_ID(resetids);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2820|      1|    _PyUnicode_InternStatic(interp, &string);
 2821|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2821:5): [True: 1, False: 0]
  ------------------
 2822|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2822:5): [True: 1, False: 0]
  ------------------
 2823|      1|    string = &_Py_ID(restrict);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2824|      1|    _PyUnicode_InternStatic(interp, &string);
 2825|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2825:5): [True: 1, False: 0]
  ------------------
 2826|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2826:5): [True: 1, False: 0]
  ------------------
 2827|      1|    string = &_Py_ID(return);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2828|      1|    _PyUnicode_InternStatic(interp, &string);
 2829|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2829:5): [True: 1, False: 0]
  ------------------
 2830|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2830:5): [True: 1, False: 0]
  ------------------
 2831|      1|    string = &_Py_ID(reverse);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2832|      1|    _PyUnicode_InternStatic(interp, &string);
 2833|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2833:5): [True: 1, False: 0]
  ------------------
 2834|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2834:5): [True: 1, False: 0]
  ------------------
 2835|      1|    string = &_Py_ID(reversed);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2836|      1|    _PyUnicode_InternStatic(interp, &string);
 2837|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2837:5): [True: 1, False: 0]
  ------------------
 2838|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2838:5): [True: 1, False: 0]
  ------------------
 2839|      1|    string = &_Py_ID(rounding);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2840|      1|    _PyUnicode_InternStatic(interp, &string);
 2841|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2841:5): [True: 1, False: 0]
  ------------------
 2842|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2842:5): [True: 1, False: 0]
  ------------------
 2843|      1|    string = &_Py_ID(salt);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2844|      1|    _PyUnicode_InternStatic(interp, &string);
 2845|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2845:5): [True: 1, False: 0]
  ------------------
 2846|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2846:5): [True: 1, False: 0]
  ------------------
 2847|      1|    string = &_Py_ID(sample_interval_us);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2848|      1|    _PyUnicode_InternStatic(interp, &string);
 2849|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2849:5): [True: 1, False: 0]
  ------------------
 2850|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2850:5): [True: 1, False: 0]
  ------------------
 2851|      1|    string = &_Py_ID(sched_priority);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2852|      1|    _PyUnicode_InternStatic(interp, &string);
 2853|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2853:5): [True: 1, False: 0]
  ------------------
 2854|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2854:5): [True: 1, False: 0]
  ------------------
 2855|      1|    string = &_Py_ID(scheduler);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2856|      1|    _PyUnicode_InternStatic(interp, &string);
 2857|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2857:5): [True: 1, False: 0]
  ------------------
 2858|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2858:5): [True: 1, False: 0]
  ------------------
 2859|      1|    string = &_Py_ID(script);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2860|      1|    _PyUnicode_InternStatic(interp, &string);
 2861|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2861:5): [True: 1, False: 0]
  ------------------
 2862|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2862:5): [True: 1, False: 0]
  ------------------
 2863|      1|    string = &_Py_ID(second);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2864|      1|    _PyUnicode_InternStatic(interp, &string);
 2865|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2865:5): [True: 1, False: 0]
  ------------------
 2866|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2866:5): [True: 1, False: 0]
  ------------------
 2867|      1|    string = &_Py_ID(seconds);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2868|      1|    _PyUnicode_InternStatic(interp, &string);
 2869|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2869:5): [True: 1, False: 0]
  ------------------
 2870|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2870:5): [True: 1, False: 0]
  ------------------
 2871|      1|    string = &_Py_ID(security_attributes);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2872|      1|    _PyUnicode_InternStatic(interp, &string);
 2873|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2873:5): [True: 1, False: 0]
  ------------------
 2874|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2874:5): [True: 1, False: 0]
  ------------------
 2875|      1|    string = &_Py_ID(seek);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2876|      1|    _PyUnicode_InternStatic(interp, &string);
 2877|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2877:5): [True: 1, False: 0]
  ------------------
 2878|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2878:5): [True: 1, False: 0]
  ------------------
 2879|      1|    string = &_Py_ID(seekable);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2880|      1|    _PyUnicode_InternStatic(interp, &string);
 2881|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2881:5): [True: 1, False: 0]
  ------------------
 2882|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2882:5): [True: 1, False: 0]
  ------------------
 2883|      1|    string = &_Py_ID(selectors);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2884|      1|    _PyUnicode_InternStatic(interp, &string);
 2885|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2885:5): [True: 1, False: 0]
  ------------------
 2886|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2886:5): [True: 1, False: 0]
  ------------------
 2887|      1|    string = &_Py_ID(self);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2888|      1|    _PyUnicode_InternStatic(interp, &string);
 2889|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2889:5): [True: 1, False: 0]
  ------------------
 2890|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2890:5): [True: 1, False: 0]
  ------------------
 2891|      1|    string = &_Py_ID(send);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2892|      1|    _PyUnicode_InternStatic(interp, &string);
 2893|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2893:5): [True: 1, False: 0]
  ------------------
 2894|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2894:5): [True: 1, False: 0]
  ------------------
 2895|      1|    string = &_Py_ID(sep);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2896|      1|    _PyUnicode_InternStatic(interp, &string);
 2897|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2897:5): [True: 1, False: 0]
  ------------------
 2898|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2898:5): [True: 1, False: 0]
  ------------------
 2899|      1|    string = &_Py_ID(sequence);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2900|      1|    _PyUnicode_InternStatic(interp, &string);
 2901|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2901:5): [True: 1, False: 0]
  ------------------
 2902|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2902:5): [True: 1, False: 0]
  ------------------
 2903|      1|    string = &_Py_ID(server_hostname);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2904|      1|    _PyUnicode_InternStatic(interp, &string);
 2905|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2905:5): [True: 1, False: 0]
  ------------------
 2906|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2906:5): [True: 1, False: 0]
  ------------------
 2907|      1|    string = &_Py_ID(server_side);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2908|      1|    _PyUnicode_InternStatic(interp, &string);
 2909|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2909:5): [True: 1, False: 0]
  ------------------
 2910|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2910:5): [True: 1, False: 0]
  ------------------
 2911|      1|    string = &_Py_ID(session);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2912|      1|    _PyUnicode_InternStatic(interp, &string);
 2913|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2913:5): [True: 1, False: 0]
  ------------------
 2914|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2914:5): [True: 1, False: 0]
  ------------------
 2915|      1|    string = &_Py_ID(setpgroup);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2916|      1|    _PyUnicode_InternStatic(interp, &string);
 2917|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2917:5): [True: 1, False: 0]
  ------------------
 2918|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2918:5): [True: 1, False: 0]
  ------------------
 2919|      1|    string = &_Py_ID(setsid);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2920|      1|    _PyUnicode_InternStatic(interp, &string);
 2921|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2921:5): [True: 1, False: 0]
  ------------------
 2922|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2922:5): [True: 1, False: 0]
  ------------------
 2923|      1|    string = &_Py_ID(setsigdef);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2924|      1|    _PyUnicode_InternStatic(interp, &string);
 2925|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2925:5): [True: 1, False: 0]
  ------------------
 2926|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2926:5): [True: 1, False: 0]
  ------------------
 2927|      1|    string = &_Py_ID(setsigmask);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2928|      1|    _PyUnicode_InternStatic(interp, &string);
 2929|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2929:5): [True: 1, False: 0]
  ------------------
 2930|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2930:5): [True: 1, False: 0]
  ------------------
 2931|      1|    string = &_Py_ID(setstate);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2932|      1|    _PyUnicode_InternStatic(interp, &string);
 2933|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2933:5): [True: 1, False: 0]
  ------------------
 2934|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2934:5): [True: 1, False: 0]
  ------------------
 2935|      1|    string = &_Py_ID(shape);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2936|      1|    _PyUnicode_InternStatic(interp, &string);
 2937|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2937:5): [True: 1, False: 0]
  ------------------
 2938|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2938:5): [True: 1, False: 0]
  ------------------
 2939|      1|    string = &_Py_ID(shared);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2940|      1|    _PyUnicode_InternStatic(interp, &string);
 2941|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2941:5): [True: 1, False: 0]
  ------------------
 2942|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2942:5): [True: 1, False: 0]
  ------------------
 2943|      1|    string = &_Py_ID(short);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2944|      1|    _PyUnicode_InternStatic(interp, &string);
 2945|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2945:5): [True: 1, False: 0]
  ------------------
 2946|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2946:5): [True: 1, False: 0]
  ------------------
 2947|      1|    string = &_Py_ID(show_cmd);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2948|      1|    _PyUnicode_InternStatic(interp, &string);
 2949|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2949:5): [True: 1, False: 0]
  ------------------
 2950|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2950:5): [True: 1, False: 0]
  ------------------
 2951|      1|    string = &_Py_ID(signed);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2952|      1|    _PyUnicode_InternStatic(interp, &string);
 2953|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2953:5): [True: 1, False: 0]
  ------------------
 2954|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2954:5): [True: 1, False: 0]
  ------------------
 2955|      1|    string = &_Py_ID(signum);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2956|      1|    _PyUnicode_InternStatic(interp, &string);
 2957|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2957:5): [True: 1, False: 0]
  ------------------
 2958|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2958:5): [True: 1, False: 0]
  ------------------
 2959|      1|    string = &_Py_ID(size);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2960|      1|    _PyUnicode_InternStatic(interp, &string);
 2961|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2961:5): [True: 1, False: 0]
  ------------------
 2962|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2962:5): [True: 1, False: 0]
  ------------------
 2963|      1|    string = &_Py_ID(sizehint);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2964|      1|    _PyUnicode_InternStatic(interp, &string);
 2965|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2965:5): [True: 1, False: 0]
  ------------------
 2966|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2966:5): [True: 1, False: 0]
  ------------------
 2967|      1|    string = &_Py_ID(skip_file_prefixes);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2968|      1|    _PyUnicode_InternStatic(interp, &string);
 2969|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2969:5): [True: 1, False: 0]
  ------------------
 2970|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2970:5): [True: 1, False: 0]
  ------------------
 2971|      1|    string = &_Py_ID(skip_non_matching_threads);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2972|      1|    _PyUnicode_InternStatic(interp, &string);
 2973|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2973:5): [True: 1, False: 0]
  ------------------
 2974|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2974:5): [True: 1, False: 0]
  ------------------
 2975|      1|    string = &_Py_ID(sleep);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2976|      1|    _PyUnicode_InternStatic(interp, &string);
 2977|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2977:5): [True: 1, False: 0]
  ------------------
 2978|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2978:5): [True: 1, False: 0]
  ------------------
 2979|      1|    string = &_Py_ID(sock);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2980|      1|    _PyUnicode_InternStatic(interp, &string);
 2981|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2981:5): [True: 1, False: 0]
  ------------------
 2982|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2982:5): [True: 1, False: 0]
  ------------------
 2983|      1|    string = &_Py_ID(sort);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2984|      1|    _PyUnicode_InternStatic(interp, &string);
 2985|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2985:5): [True: 1, False: 0]
  ------------------
 2986|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2986:5): [True: 1, False: 0]
  ------------------
 2987|      1|    string = &_Py_ID(source);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2988|      1|    _PyUnicode_InternStatic(interp, &string);
 2989|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2989:5): [True: 1, False: 0]
  ------------------
 2990|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2990:5): [True: 1, False: 0]
  ------------------
 2991|      1|    string = &_Py_ID(source_traceback);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2992|      1|    _PyUnicode_InternStatic(interp, &string);
 2993|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2993:5): [True: 1, False: 0]
  ------------------
 2994|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2994:5): [True: 1, False: 0]
  ------------------
 2995|      1|    string = &_Py_ID(spam);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2996|      1|    _PyUnicode_InternStatic(interp, &string);
 2997|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (2997:5): [True: 1, False: 0]
  ------------------
 2998|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (2998:5): [True: 1, False: 0]
  ------------------
 2999|      1|    string = &_Py_ID(src);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3000|      1|    _PyUnicode_InternStatic(interp, &string);
 3001|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3001:5): [True: 1, False: 0]
  ------------------
 3002|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3002:5): [True: 1, False: 0]
  ------------------
 3003|      1|    string = &_Py_ID(src_dir_fd);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3004|      1|    _PyUnicode_InternStatic(interp, &string);
 3005|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3005:5): [True: 1, False: 0]
  ------------------
 3006|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3006:5): [True: 1, False: 0]
  ------------------
 3007|      1|    string = &_Py_ID(stack_frames);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3008|      1|    _PyUnicode_InternStatic(interp, &string);
 3009|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3009:5): [True: 1, False: 0]
  ------------------
 3010|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3010:5): [True: 1, False: 0]
  ------------------
 3011|      1|    string = &_Py_ID(stacklevel);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3012|      1|    _PyUnicode_InternStatic(interp, &string);
 3013|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3013:5): [True: 1, False: 0]
  ------------------
 3014|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3014:5): [True: 1, False: 0]
  ------------------
 3015|      1|    string = &_Py_ID(start);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3016|      1|    _PyUnicode_InternStatic(interp, &string);
 3017|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3017:5): [True: 1, False: 0]
  ------------------
 3018|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3018:5): [True: 1, False: 0]
  ------------------
 3019|      1|    string = &_Py_ID(start_time_us);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3020|      1|    _PyUnicode_InternStatic(interp, &string);
 3021|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3021:5): [True: 1, False: 0]
  ------------------
 3022|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3022:5): [True: 1, False: 0]
  ------------------
 3023|      1|    string = &_Py_ID(statement);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3024|      1|    _PyUnicode_InternStatic(interp, &string);
 3025|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3025:5): [True: 1, False: 0]
  ------------------
 3026|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3026:5): [True: 1, False: 0]
  ------------------
 3027|      1|    string = &_Py_ID(stats);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3028|      1|    _PyUnicode_InternStatic(interp, &string);
 3029|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3029:5): [True: 1, False: 0]
  ------------------
 3030|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3030:5): [True: 1, False: 0]
  ------------------
 3031|      1|    string = &_Py_ID(status);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3032|      1|    _PyUnicode_InternStatic(interp, &string);
 3033|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3033:5): [True: 1, False: 0]
  ------------------
 3034|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3034:5): [True: 1, False: 0]
  ------------------
 3035|      1|    string = &_Py_ID(stderr);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3036|      1|    _PyUnicode_InternStatic(interp, &string);
 3037|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3037:5): [True: 1, False: 0]
  ------------------
 3038|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3038:5): [True: 1, False: 0]
  ------------------
 3039|      1|    string = &_Py_ID(stdin);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3040|      1|    _PyUnicode_InternStatic(interp, &string);
 3041|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3041:5): [True: 1, False: 0]
  ------------------
 3042|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3042:5): [True: 1, False: 0]
  ------------------
 3043|      1|    string = &_Py_ID(stdout);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3044|      1|    _PyUnicode_InternStatic(interp, &string);
 3045|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3045:5): [True: 1, False: 0]
  ------------------
 3046|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3046:5): [True: 1, False: 0]
  ------------------
 3047|      1|    string = &_Py_ID(step);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3048|      1|    _PyUnicode_InternStatic(interp, &string);
 3049|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3049:5): [True: 1, False: 0]
  ------------------
 3050|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3050:5): [True: 1, False: 0]
  ------------------
 3051|      1|    string = &_Py_ID(steps);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3052|      1|    _PyUnicode_InternStatic(interp, &string);
 3053|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3053:5): [True: 1, False: 0]
  ------------------
 3054|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3054:5): [True: 1, False: 0]
  ------------------
 3055|      1|    string = &_Py_ID(store_name);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3056|      1|    _PyUnicode_InternStatic(interp, &string);
 3057|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3057:5): [True: 1, False: 0]
  ------------------
 3058|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3058:5): [True: 1, False: 0]
  ------------------
 3059|      1|    string = &_Py_ID(strategy);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3060|      1|    _PyUnicode_InternStatic(interp, &string);
 3061|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3061:5): [True: 1, False: 0]
  ------------------
 3062|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3062:5): [True: 1, False: 0]
  ------------------
 3063|      1|    string = &_Py_ID(strftime);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3064|      1|    _PyUnicode_InternStatic(interp, &string);
 3065|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3065:5): [True: 1, False: 0]
  ------------------
 3066|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3066:5): [True: 1, False: 0]
  ------------------
 3067|      1|    string = &_Py_ID(strict);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3068|      1|    _PyUnicode_InternStatic(interp, &string);
 3069|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3069:5): [True: 1, False: 0]
  ------------------
 3070|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3070:5): [True: 1, False: 0]
  ------------------
 3071|      1|    string = &_Py_ID(strict_mode);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3072|      1|    _PyUnicode_InternStatic(interp, &string);
 3073|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3073:5): [True: 1, False: 0]
  ------------------
 3074|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3074:5): [True: 1, False: 0]
  ------------------
 3075|      1|    string = &_Py_ID(string);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3076|      1|    _PyUnicode_InternStatic(interp, &string);
 3077|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3077:5): [True: 1, False: 0]
  ------------------
 3078|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3078:5): [True: 1, False: 0]
  ------------------
 3079|      1|    string = &_Py_ID(sub_key);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3080|      1|    _PyUnicode_InternStatic(interp, &string);
 3081|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3081:5): [True: 1, False: 0]
  ------------------
 3082|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3082:5): [True: 1, False: 0]
  ------------------
 3083|      1|    string = &_Py_ID(subcalls);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3084|      1|    _PyUnicode_InternStatic(interp, &string);
 3085|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3085:5): [True: 1, False: 0]
  ------------------
 3086|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3086:5): [True: 1, False: 0]
  ------------------
 3087|      1|    string = &_Py_ID(symmetric_difference_update);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3088|      1|    _PyUnicode_InternStatic(interp, &string);
 3089|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3089:5): [True: 1, False: 0]
  ------------------
 3090|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3090:5): [True: 1, False: 0]
  ------------------
 3091|      1|    string = &_Py_ID(tabsize);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3092|      1|    _PyUnicode_InternStatic(interp, &string);
 3093|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3093:5): [True: 1, False: 0]
  ------------------
 3094|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3094:5): [True: 1, False: 0]
  ------------------
 3095|      1|    string = &_Py_ID(tag);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3096|      1|    _PyUnicode_InternStatic(interp, &string);
 3097|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3097:5): [True: 1, False: 0]
  ------------------
 3098|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3098:5): [True: 1, False: 0]
  ------------------
 3099|      1|    string = &_Py_ID(take_bytes);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3100|      1|    _PyUnicode_InternStatic(interp, &string);
 3101|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3101:5): [True: 1, False: 0]
  ------------------
 3102|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3102:5): [True: 1, False: 0]
  ------------------
 3103|      1|    string = &_Py_ID(target);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3104|      1|    _PyUnicode_InternStatic(interp, &string);
 3105|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3105:5): [True: 1, False: 0]
  ------------------
 3106|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3106:5): [True: 1, False: 0]
  ------------------
 3107|      1|    string = &_Py_ID(target_is_directory);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3108|      1|    _PyUnicode_InternStatic(interp, &string);
 3109|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3109:5): [True: 1, False: 0]
  ------------------
 3110|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3110:5): [True: 1, False: 0]
  ------------------
 3111|      1|    string = &_Py_ID(targetfd);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3112|      1|    _PyUnicode_InternStatic(interp, &string);
 3113|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3113:5): [True: 1, False: 0]
  ------------------
 3114|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3114:5): [True: 1, False: 0]
  ------------------
 3115|      1|    string = &_Py_ID(task);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3116|      1|    _PyUnicode_InternStatic(interp, &string);
 3117|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3117:5): [True: 1, False: 0]
  ------------------
 3118|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3118:5): [True: 1, False: 0]
  ------------------
 3119|      1|    string = &_Py_ID(tb_frame);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3120|      1|    _PyUnicode_InternStatic(interp, &string);
 3121|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3121:5): [True: 1, False: 0]
  ------------------
 3122|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3122:5): [True: 1, False: 0]
  ------------------
 3123|      1|    string = &_Py_ID(tb_lasti);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3124|      1|    _PyUnicode_InternStatic(interp, &string);
 3125|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3125:5): [True: 1, False: 0]
  ------------------
 3126|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3126:5): [True: 1, False: 0]
  ------------------
 3127|      1|    string = &_Py_ID(tb_lineno);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3128|      1|    _PyUnicode_InternStatic(interp, &string);
 3129|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3129:5): [True: 1, False: 0]
  ------------------
 3130|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3130:5): [True: 1, False: 0]
  ------------------
 3131|      1|    string = &_Py_ID(tb_next);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3132|      1|    _PyUnicode_InternStatic(interp, &string);
 3133|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3133:5): [True: 1, False: 0]
  ------------------
 3134|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3134:5): [True: 1, False: 0]
  ------------------
 3135|      1|    string = &_Py_ID(tell);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3136|      1|    _PyUnicode_InternStatic(interp, &string);
 3137|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3137:5): [True: 1, False: 0]
  ------------------
 3138|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3138:5): [True: 1, False: 0]
  ------------------
 3139|      1|    string = &_Py_ID(template);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3140|      1|    _PyUnicode_InternStatic(interp, &string);
 3141|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3141:5): [True: 1, False: 0]
  ------------------
 3142|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3142:5): [True: 1, False: 0]
  ------------------
 3143|      1|    string = &_Py_ID(term);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3144|      1|    _PyUnicode_InternStatic(interp, &string);
 3145|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3145:5): [True: 1, False: 0]
  ------------------
 3146|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3146:5): [True: 1, False: 0]
  ------------------
 3147|      1|    string = &_Py_ID(text);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3148|      1|    _PyUnicode_InternStatic(interp, &string);
 3149|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3149:5): [True: 1, False: 0]
  ------------------
 3150|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3150:5): [True: 1, False: 0]
  ------------------
 3151|      1|    string = &_Py_ID(third);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3152|      1|    _PyUnicode_InternStatic(interp, &string);
 3153|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3153:5): [True: 1, False: 0]
  ------------------
 3154|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3154:5): [True: 1, False: 0]
  ------------------
 3155|      1|    string = &_Py_ID(threading);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3156|      1|    _PyUnicode_InternStatic(interp, &string);
 3157|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3157:5): [True: 1, False: 0]
  ------------------
 3158|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3158:5): [True: 1, False: 0]
  ------------------
 3159|      1|    string = &_Py_ID(throw);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3160|      1|    _PyUnicode_InternStatic(interp, &string);
 3161|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3161:5): [True: 1, False: 0]
  ------------------
 3162|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3162:5): [True: 1, False: 0]
  ------------------
 3163|      1|    string = &_Py_ID(time);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3164|      1|    _PyUnicode_InternStatic(interp, &string);
 3165|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3165:5): [True: 1, False: 0]
  ------------------
 3166|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3166:5): [True: 1, False: 0]
  ------------------
 3167|      1|    string = &_Py_ID(timeout);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3168|      1|    _PyUnicode_InternStatic(interp, &string);
 3169|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3169:5): [True: 1, False: 0]
  ------------------
 3170|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3170:5): [True: 1, False: 0]
  ------------------
 3171|      1|    string = &_Py_ID(timer);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3172|      1|    _PyUnicode_InternStatic(interp, &string);
 3173|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3173:5): [True: 1, False: 0]
  ------------------
 3174|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3174:5): [True: 1, False: 0]
  ------------------
 3175|      1|    string = &_Py_ID(times);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3176|      1|    _PyUnicode_InternStatic(interp, &string);
 3177|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3177:5): [True: 1, False: 0]
  ------------------
 3178|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3178:5): [True: 1, False: 0]
  ------------------
 3179|      1|    string = &_Py_ID(timespec);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3180|      1|    _PyUnicode_InternStatic(interp, &string);
 3181|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3181:5): [True: 1, False: 0]
  ------------------
 3182|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3182:5): [True: 1, False: 0]
  ------------------
 3183|      1|    string = &_Py_ID(timestamp);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3184|      1|    _PyUnicode_InternStatic(interp, &string);
 3185|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3185:5): [True: 1, False: 0]
  ------------------
 3186|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3186:5): [True: 1, False: 0]
  ------------------
 3187|      1|    string = &_Py_ID(timestamp_us);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3188|      1|    _PyUnicode_InternStatic(interp, &string);
 3189|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3189:5): [True: 1, False: 0]
  ------------------
 3190|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3190:5): [True: 1, False: 0]
  ------------------
 3191|      1|    string = &_Py_ID(timetuple);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3192|      1|    _PyUnicode_InternStatic(interp, &string);
 3193|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3193:5): [True: 1, False: 0]
  ------------------
 3194|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3194:5): [True: 1, False: 0]
  ------------------
 3195|      1|    string = &_Py_ID(timeunit);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3196|      1|    _PyUnicode_InternStatic(interp, &string);
 3197|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3197:5): [True: 1, False: 0]
  ------------------
 3198|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3198:5): [True: 1, False: 0]
  ------------------
 3199|      1|    string = &_Py_ID(top);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3200|      1|    _PyUnicode_InternStatic(interp, &string);
 3201|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3201:5): [True: 1, False: 0]
  ------------------
 3202|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3202:5): [True: 1, False: 0]
  ------------------
 3203|      1|    string = &_Py_ID(traceback);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3204|      1|    _PyUnicode_InternStatic(interp, &string);
 3205|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3205:5): [True: 1, False: 0]
  ------------------
 3206|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3206:5): [True: 1, False: 0]
  ------------------
 3207|      1|    string = &_Py_ID(trailers);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3208|      1|    _PyUnicode_InternStatic(interp, &string);
 3209|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3209:5): [True: 1, False: 0]
  ------------------
 3210|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3210:5): [True: 1, False: 0]
  ------------------
 3211|      1|    string = &_Py_ID(translate);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3212|      1|    _PyUnicode_InternStatic(interp, &string);
 3213|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3213:5): [True: 1, False: 0]
  ------------------
 3214|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3214:5): [True: 1, False: 0]
  ------------------
 3215|      1|    string = &_Py_ID(traps);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3216|      1|    _PyUnicode_InternStatic(interp, &string);
 3217|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3217:5): [True: 1, False: 0]
  ------------------
 3218|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3218:5): [True: 1, False: 0]
  ------------------
 3219|      1|    string = &_Py_ID(true);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3220|      1|    _PyUnicode_InternStatic(interp, &string);
 3221|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3221:5): [True: 1, False: 0]
  ------------------
 3222|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3222:5): [True: 1, False: 0]
  ------------------
 3223|      1|    string = &_Py_ID(truncate);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3224|      1|    _PyUnicode_InternStatic(interp, &string);
 3225|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3225:5): [True: 1, False: 0]
  ------------------
 3226|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3226:5): [True: 1, False: 0]
  ------------------
 3227|      1|    string = &_Py_ID(twice);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3228|      1|    _PyUnicode_InternStatic(interp, &string);
 3229|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3229:5): [True: 1, False: 0]
  ------------------
 3230|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3230:5): [True: 1, False: 0]
  ------------------
 3231|      1|    string = &_Py_ID(txt);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3232|      1|    _PyUnicode_InternStatic(interp, &string);
 3233|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3233:5): [True: 1, False: 0]
  ------------------
 3234|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3234:5): [True: 1, False: 0]
  ------------------
 3235|      1|    string = &_Py_ID(type);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3236|      1|    _PyUnicode_InternStatic(interp, &string);
 3237|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3237:5): [True: 1, False: 0]
  ------------------
 3238|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3238:5): [True: 1, False: 0]
  ------------------
 3239|      1|    string = &_Py_ID(type_params);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3240|      1|    _PyUnicode_InternStatic(interp, &string);
 3241|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3241:5): [True: 1, False: 0]
  ------------------
 3242|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3242:5): [True: 1, False: 0]
  ------------------
 3243|      1|    string = &_Py_ID(tz);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3244|      1|    _PyUnicode_InternStatic(interp, &string);
 3245|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3245:5): [True: 1, False: 0]
  ------------------
 3246|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3246:5): [True: 1, False: 0]
  ------------------
 3247|      1|    string = &_Py_ID(tzinfo);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3248|      1|    _PyUnicode_InternStatic(interp, &string);
 3249|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3249:5): [True: 1, False: 0]
  ------------------
 3250|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3250:5): [True: 1, False: 0]
  ------------------
 3251|      1|    string = &_Py_ID(tzname);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3252|      1|    _PyUnicode_InternStatic(interp, &string);
 3253|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3253:5): [True: 1, False: 0]
  ------------------
 3254|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3254:5): [True: 1, False: 0]
  ------------------
 3255|      1|    string = &_Py_ID(uid);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3256|      1|    _PyUnicode_InternStatic(interp, &string);
 3257|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3257:5): [True: 1, False: 0]
  ------------------
 3258|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3258:5): [True: 1, False: 0]
  ------------------
 3259|      1|    string = &_Py_ID(unboundop);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3260|      1|    _PyUnicode_InternStatic(interp, &string);
 3261|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3261:5): [True: 1, False: 0]
  ------------------
 3262|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3262:5): [True: 1, False: 0]
  ------------------
 3263|      1|    string = &_Py_ID(unlink);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3264|      1|    _PyUnicode_InternStatic(interp, &string);
 3265|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3265:5): [True: 1, False: 0]
  ------------------
 3266|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3266:5): [True: 1, False: 0]
  ------------------
 3267|      1|    string = &_Py_ID(unraisablehook);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3268|      1|    _PyUnicode_InternStatic(interp, &string);
 3269|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3269:5): [True: 1, False: 0]
  ------------------
 3270|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3270:5): [True: 1, False: 0]
  ------------------
 3271|      1|    string = &_Py_ID(updates);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3272|      1|    _PyUnicode_InternStatic(interp, &string);
 3273|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3273:5): [True: 1, False: 0]
  ------------------
 3274|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3274:5): [True: 1, False: 0]
  ------------------
 3275|      1|    string = &_Py_ID(uri);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3276|      1|    _PyUnicode_InternStatic(interp, &string);
 3277|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3277:5): [True: 1, False: 0]
  ------------------
 3278|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3278:5): [True: 1, False: 0]
  ------------------
 3279|      1|    string = &_Py_ID(usedforsecurity);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3280|      1|    _PyUnicode_InternStatic(interp, &string);
 3281|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3281:5): [True: 1, False: 0]
  ------------------
 3282|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3282:5): [True: 1, False: 0]
  ------------------
 3283|      1|    string = &_Py_ID(value);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3284|      1|    _PyUnicode_InternStatic(interp, &string);
 3285|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3285:5): [True: 1, False: 0]
  ------------------
 3286|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3286:5): [True: 1, False: 0]
  ------------------
 3287|      1|    string = &_Py_ID(values);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3288|      1|    _PyUnicode_InternStatic(interp, &string);
 3289|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3289:5): [True: 1, False: 0]
  ------------------
 3290|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3290:5): [True: 1, False: 0]
  ------------------
 3291|      1|    string = &_Py_ID(version);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3292|      1|    _PyUnicode_InternStatic(interp, &string);
 3293|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3293:5): [True: 1, False: 0]
  ------------------
 3294|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3294:5): [True: 1, False: 0]
  ------------------
 3295|      1|    string = &_Py_ID(volume);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3296|      1|    _PyUnicode_InternStatic(interp, &string);
 3297|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3297:5): [True: 1, False: 0]
  ------------------
 3298|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3298:5): [True: 1, False: 0]
  ------------------
 3299|      1|    string = &_Py_ID(wait_all);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3300|      1|    _PyUnicode_InternStatic(interp, &string);
 3301|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3301:5): [True: 1, False: 0]
  ------------------
 3302|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3302:5): [True: 1, False: 0]
  ------------------
 3303|      1|    string = &_Py_ID(warn_on_full_buffer);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3304|      1|    _PyUnicode_InternStatic(interp, &string);
 3305|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3305:5): [True: 1, False: 0]
  ------------------
 3306|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3306:5): [True: 1, False: 0]
  ------------------
 3307|      1|    string = &_Py_ID(warnings);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3308|      1|    _PyUnicode_InternStatic(interp, &string);
 3309|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3309:5): [True: 1, False: 0]
  ------------------
 3310|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3310:5): [True: 1, False: 0]
  ------------------
 3311|      1|    string = &_Py_ID(warnoptions);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3312|      1|    _PyUnicode_InternStatic(interp, &string);
 3313|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3313:5): [True: 1, False: 0]
  ------------------
 3314|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3314:5): [True: 1, False: 0]
  ------------------
 3315|      1|    string = &_Py_ID(wbits);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3316|      1|    _PyUnicode_InternStatic(interp, &string);
 3317|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3317:5): [True: 1, False: 0]
  ------------------
 3318|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3318:5): [True: 1, False: 0]
  ------------------
 3319|      1|    string = &_Py_ID(week);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3320|      1|    _PyUnicode_InternStatic(interp, &string);
 3321|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3321:5): [True: 1, False: 0]
  ------------------
 3322|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3322:5): [True: 1, False: 0]
  ------------------
 3323|      1|    string = &_Py_ID(weekday);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3324|      1|    _PyUnicode_InternStatic(interp, &string);
 3325|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3325:5): [True: 1, False: 0]
  ------------------
 3326|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3326:5): [True: 1, False: 0]
  ------------------
 3327|      1|    string = &_Py_ID(weeks);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3328|      1|    _PyUnicode_InternStatic(interp, &string);
 3329|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3329:5): [True: 1, False: 0]
  ------------------
 3330|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3330:5): [True: 1, False: 0]
  ------------------
 3331|      1|    string = &_Py_ID(which);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3332|      1|    _PyUnicode_InternStatic(interp, &string);
 3333|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3333:5): [True: 1, False: 0]
  ------------------
 3334|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3334:5): [True: 1, False: 0]
  ------------------
 3335|      1|    string = &_Py_ID(who);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3336|      1|    _PyUnicode_InternStatic(interp, &string);
 3337|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3337:5): [True: 1, False: 0]
  ------------------
 3338|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3338:5): [True: 1, False: 0]
  ------------------
 3339|      1|    string = &_Py_ID(withdata);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3340|      1|    _PyUnicode_InternStatic(interp, &string);
 3341|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3341:5): [True: 1, False: 0]
  ------------------
 3342|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3342:5): [True: 1, False: 0]
  ------------------
 3343|      1|    string = &_Py_ID(wrapcol);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3344|      1|    _PyUnicode_InternStatic(interp, &string);
 3345|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3345:5): [True: 1, False: 0]
  ------------------
 3346|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3346:5): [True: 1, False: 0]
  ------------------
 3347|      1|    string = &_Py_ID(writable);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3348|      1|    _PyUnicode_InternStatic(interp, &string);
 3349|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3349:5): [True: 1, False: 0]
  ------------------
 3350|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3350:5): [True: 1, False: 0]
  ------------------
 3351|      1|    string = &_Py_ID(write);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3352|      1|    _PyUnicode_InternStatic(interp, &string);
 3353|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3353:5): [True: 1, False: 0]
  ------------------
 3354|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3354:5): [True: 1, False: 0]
  ------------------
 3355|      1|    string = &_Py_ID(write_through);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3356|      1|    _PyUnicode_InternStatic(interp, &string);
 3357|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3357:5): [True: 1, False: 0]
  ------------------
 3358|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3358:5): [True: 1, False: 0]
  ------------------
 3359|      1|    string = &_Py_ID(year);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3360|      1|    _PyUnicode_InternStatic(interp, &string);
 3361|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3361:5): [True: 1, False: 0]
  ------------------
 3362|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3362:5): [True: 1, False: 0]
  ------------------
 3363|      1|    string = &_Py_ID(zdict);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3364|      1|    _PyUnicode_InternStatic(interp, &string);
 3365|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3365:5): [True: 1, False: 0]
  ------------------
 3366|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3366:5): [True: 1, False: 0]
  ------------------
 3367|      1|    string = &_Py_ID(zstd_dict);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3368|      1|    _PyUnicode_InternStatic(interp, &string);
 3369|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3369:5): [True: 1, False: 0]
  ------------------
 3370|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3370:5): [True: 1, False: 0]
  ------------------
 3371|      1|    string = &_Py_STR(empty);
  ------------------
  |  |  919|      1|     (_Py_SINGLETON(strings.literals._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3372|      1|    _PyUnicode_InternStatic(interp, &string);
 3373|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3373:5): [True: 1, False: 0]
  ------------------
 3374|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3374:5): [True: 1, False: 0]
  ------------------
 3375|      1|    string = &_Py_STR(dbl_percent);
  ------------------
  |  |  919|      1|     (_Py_SINGLETON(strings.literals._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3376|      1|    _PyUnicode_InternStatic(interp, &string);
 3377|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3377:5): [True: 1, False: 0]
  ------------------
 3378|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3378:5): [True: 1, False: 0]
  ------------------
 3379|      1|    string = &_Py_STR(dot_locals);
  ------------------
  |  |  919|      1|     (_Py_SINGLETON(strings.literals._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3380|      1|    _PyUnicode_InternStatic(interp, &string);
 3381|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3381:5): [True: 1, False: 0]
  ------------------
 3382|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3382:5): [True: 1, False: 0]
  ------------------
 3383|      1|    string = &_Py_STR(defaults);
  ------------------
  |  |  919|      1|     (_Py_SINGLETON(strings.literals._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3384|      1|    _PyUnicode_InternStatic(interp, &string);
 3385|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3385:5): [True: 1, False: 0]
  ------------------
 3386|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3386:5): [True: 1, False: 0]
  ------------------
 3387|      1|    string = &_Py_STR(format);
  ------------------
  |  |  919|      1|     (_Py_SINGLETON(strings.literals._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3388|      1|    _PyUnicode_InternStatic(interp, &string);
 3389|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3389:5): [True: 1, False: 0]
  ------------------
 3390|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3390:5): [True: 1, False: 0]
  ------------------
 3391|      1|    string = &_Py_STR(generic_base);
  ------------------
  |  |  919|      1|     (_Py_SINGLETON(strings.literals._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3392|      1|    _PyUnicode_InternStatic(interp, &string);
 3393|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3393:5): [True: 1, False: 0]
  ------------------
 3394|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3394:5): [True: 1, False: 0]
  ------------------
 3395|      1|    string = &_Py_STR(kwdefaults);
  ------------------
  |  |  919|      1|     (_Py_SINGLETON(strings.literals._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3396|      1|    _PyUnicode_InternStatic(interp, &string);
 3397|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3397:5): [True: 1, False: 0]
  ------------------
 3398|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3398:5): [True: 1, False: 0]
  ------------------
 3399|      1|    string = &_Py_STR(type_params);
  ------------------
  |  |  919|      1|     (_Py_SINGLETON(strings.literals._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3400|      1|    _PyUnicode_InternStatic(interp, &string);
 3401|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3401:5): [True: 1, False: 0]
  ------------------
 3402|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3402:5): [True: 1, False: 0]
  ------------------
 3403|      1|    string = &_Py_STR(str_replace_inf);
  ------------------
  |  |  919|      1|     (_Py_SINGLETON(strings.literals._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3404|      1|    _PyUnicode_InternStatic(interp, &string);
 3405|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3405:5): [True: 1, False: 0]
  ------------------
 3406|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3406:5): [True: 1, False: 0]
  ------------------
 3407|      1|    string = &_Py_STR(gc);
  ------------------
  |  |  919|      1|     (_Py_SINGLETON(strings.literals._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3408|      1|    _PyUnicode_InternStatic(interp, &string);
 3409|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3409:5): [True: 1, False: 0]
  ------------------
 3410|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3410:5): [True: 1, False: 0]
  ------------------
 3411|      1|    string = &_Py_STR(anon_null);
  ------------------
  |  |  919|      1|     (_Py_SINGLETON(strings.literals._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3412|      1|    _PyUnicode_InternStatic(interp, &string);
 3413|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3413:5): [True: 1, False: 0]
  ------------------
 3414|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3414:5): [True: 1, False: 0]
  ------------------
 3415|      1|    string = &_Py_STR(anon_dictcomp);
  ------------------
  |  |  919|      1|     (_Py_SINGLETON(strings.literals._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3416|      1|    _PyUnicode_InternStatic(interp, &string);
 3417|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3417:5): [True: 1, False: 0]
  ------------------
 3418|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3418:5): [True: 1, False: 0]
  ------------------
 3419|      1|    string = &_Py_STR(anon_genexpr);
  ------------------
  |  |  919|      1|     (_Py_SINGLETON(strings.literals._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3420|      1|    _PyUnicode_InternStatic(interp, &string);
 3421|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3421:5): [True: 1, False: 0]
  ------------------
 3422|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3422:5): [True: 1, False: 0]
  ------------------
 3423|      1|    string = &_Py_STR(anon_lambda);
  ------------------
  |  |  919|      1|     (_Py_SINGLETON(strings.literals._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3424|      1|    _PyUnicode_InternStatic(interp, &string);
 3425|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3425:5): [True: 1, False: 0]
  ------------------
 3426|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3426:5): [True: 1, False: 0]
  ------------------
 3427|      1|    string = &_Py_STR(anon_listcomp);
  ------------------
  |  |  919|      1|     (_Py_SINGLETON(strings.literals._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3428|      1|    _PyUnicode_InternStatic(interp, &string);
 3429|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3429:5): [True: 1, False: 0]
  ------------------
 3430|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3430:5): [True: 1, False: 0]
  ------------------
 3431|      1|    string = &_Py_STR(anon_module);
  ------------------
  |  |  919|      1|     (_Py_SINGLETON(strings.literals._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3432|      1|    _PyUnicode_InternStatic(interp, &string);
 3433|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3433:5): [True: 1, False: 0]
  ------------------
 3434|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3434:5): [True: 1, False: 0]
  ------------------
 3435|      1|    string = &_Py_STR(native);
  ------------------
  |  |  919|      1|     (_Py_SINGLETON(strings.literals._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3436|      1|    _PyUnicode_InternStatic(interp, &string);
 3437|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3437:5): [True: 1, False: 0]
  ------------------
 3438|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3438:5): [True: 1, False: 0]
  ------------------
 3439|      1|    string = &_Py_STR(anon_setcomp);
  ------------------
  |  |  919|      1|     (_Py_SINGLETON(strings.literals._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3440|      1|    _PyUnicode_InternStatic(interp, &string);
 3441|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3441:5): [True: 1, False: 0]
  ------------------
 3442|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3442:5): [True: 1, False: 0]
  ------------------
 3443|      1|    string = &_Py_STR(anon_string);
  ------------------
  |  |  919|      1|     (_Py_SINGLETON(strings.literals._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3444|      1|    _PyUnicode_InternStatic(interp, &string);
 3445|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3445:5): [True: 1, False: 0]
  ------------------
 3446|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3446:5): [True: 1, False: 0]
  ------------------
 3447|      1|    string = &_Py_STR(anon_unknown);
  ------------------
  |  |  919|      1|     (_Py_SINGLETON(strings.literals._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3448|      1|    _PyUnicode_InternStatic(interp, &string);
 3449|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3449:5): [True: 1, False: 0]
  ------------------
 3450|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3450:5): [True: 1, False: 0]
  ------------------
 3451|      1|    string = &_Py_STR(json_decoder);
  ------------------
  |  |  919|      1|     (_Py_SINGLETON(strings.literals._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3452|      1|    _PyUnicode_InternStatic(interp, &string);
 3453|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3453:5): [True: 1, False: 0]
  ------------------
 3454|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3454:5): [True: 1, False: 0]
  ------------------
 3455|      1|    string = &_Py_STR(list_err);
  ------------------
  |  |  919|      1|     (_Py_SINGLETON(strings.literals._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3456|      1|    _PyUnicode_InternStatic(interp, &string);
 3457|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3457:5): [True: 1, False: 0]
  ------------------
 3458|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3458:5): [True: 1, False: 0]
  ------------------
 3459|      1|    string = &_Py_STR(utf_8);
  ------------------
  |  |  919|      1|     (_Py_SINGLETON(strings.literals._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3460|      1|    _PyUnicode_InternStatic(interp, &string);
 3461|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3461:5): [True: 1, False: 0]
  ------------------
 3462|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3462:5): [True: 1, False: 0]
  ------------------
 3463|      1|    string = &_Py_STR(dbl_open_br);
  ------------------
  |  |  919|      1|     (_Py_SINGLETON(strings.literals._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3464|      1|    _PyUnicode_InternStatic(interp, &string);
 3465|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3465:5): [True: 1, False: 0]
  ------------------
 3466|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3466:5): [True: 1, False: 0]
  ------------------
 3467|      1|    string = &_Py_STR(dbl_close_br);
  ------------------
  |  |  919|      1|     (_Py_SINGLETON(strings.literals._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3468|      1|    _PyUnicode_InternStatic(interp, &string);
 3469|      1|    assert(_PyUnicode_CheckConsistency(string, 1));
  ------------------
  |  Branch (3469:5): [True: 1, False: 0]
  ------------------
 3470|      1|    assert(PyUnicode_GET_LENGTH(string) != 1);
  ------------------
  |  Branch (3470:5): [True: 1, False: 0]
  ------------------
 3471|      1|}

weakrefobject.c:_PyWeakref_GET_REF:
   73|    122|{
   74|    122|    assert(PyWeakref_Check(ref_obj));
  ------------------
  |  Branch (74:5): [True: 0, False: 0]
  |  Branch (74:5): [True: 0, False: 0]
  |  Branch (74:5): [True: 122, False: 0]
  ------------------
   75|    122|    PyWeakReference *ref = _Py_CAST(PyWeakReference*, ref_obj);
  ------------------
  |  |   37|    122|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
   76|       |
   77|    122|    PyObject *obj = FT_ATOMIC_LOAD_PTR(ref->wr_object);
  ------------------
  |  |  145|    122|#define FT_ATOMIC_LOAD_PTR(value) value
  ------------------
   78|    122|    if (obj == Py_None) {
  ------------------
  |  |  616|    122|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (78:9): [True: 0, False: 122]
  ------------------
   79|       |        // clear_weakref() was called
   80|      0|        return NULL;
   81|      0|    }
   82|       |
   83|    122|    LOCK_WEAKREFS(obj);
   84|       |#ifdef Py_GIL_DISABLED
   85|       |    if (ref->wr_object == Py_None) {
   86|       |        // clear_weakref() was called
   87|       |        UNLOCK_WEAKREFS(obj);
   88|       |        return NULL;
   89|       |    }
   90|       |#endif
   91|    122|    if (_Py_TryIncref(obj)) {
  ------------------
  |  Branch (91:9): [True: 122, False: 0]
  ------------------
   92|    122|        UNLOCK_WEAKREFS(obj);
   93|    122|        return obj;
   94|    122|    }
   95|      0|    UNLOCK_WEAKREFS(obj);
   96|       |    return NULL;
   97|    122|}
import.c:_PyWeakref_GET_REF:
   73|      1|{
   74|      1|    assert(PyWeakref_Check(ref_obj));
  ------------------
  |  Branch (74:5): [True: 0, False: 0]
  |  Branch (74:5): [True: 0, False: 0]
  |  Branch (74:5): [True: 1, False: 0]
  ------------------
   75|      1|    PyWeakReference *ref = _Py_CAST(PyWeakReference*, ref_obj);
  ------------------
  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
   76|       |
   77|      1|    PyObject *obj = FT_ATOMIC_LOAD_PTR(ref->wr_object);
  ------------------
  |  |  145|      1|#define FT_ATOMIC_LOAD_PTR(value) value
  ------------------
   78|      1|    if (obj == Py_None) {
  ------------------
  |  |  616|      1|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (78:9): [True: 0, False: 1]
  ------------------
   79|       |        // clear_weakref() was called
   80|      0|        return NULL;
   81|      0|    }
   82|       |
   83|      1|    LOCK_WEAKREFS(obj);
   84|       |#ifdef Py_GIL_DISABLED
   85|       |    if (ref->wr_object == Py_None) {
   86|       |        // clear_weakref() was called
   87|       |        UNLOCK_WEAKREFS(obj);
   88|       |        return NULL;
   89|       |    }
   90|       |#endif
   91|      1|    if (_Py_TryIncref(obj)) {
  ------------------
  |  Branch (91:9): [True: 1, False: 0]
  ------------------
   92|      1|        UNLOCK_WEAKREFS(obj);
   93|      1|        return obj;
   94|      1|    }
   95|      0|    UNLOCK_WEAKREFS(obj);
   96|       |    return NULL;
   97|      1|}
_weakref.c:_PyWeakref_IS_DEAD:
  100|     30|{
  101|     30|    assert(PyWeakref_Check(ref_obj));
  ------------------
  |  Branch (101:5): [True: 0, False: 0]
  |  Branch (101:5): [True: 0, False: 0]
  |  Branch (101:5): [True: 30, False: 0]
  ------------------
  102|     30|    int ret = 0;
  103|     30|    PyWeakReference *ref = _Py_CAST(PyWeakReference*, ref_obj);
  ------------------
  |  |   37|     30|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  104|     30|    PyObject *obj = FT_ATOMIC_LOAD_PTR(ref->wr_object);
  ------------------
  |  |  145|     30|#define FT_ATOMIC_LOAD_PTR(value) value
  ------------------
  105|     30|    if (obj == Py_None) {
  ------------------
  |  |  616|     30|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (105:9): [True: 30, False: 0]
  ------------------
  106|       |        // clear_weakref() was called
  107|     30|        ret = 1;
  108|     30|    }
  109|      0|    else {
  110|      0|        LOCK_WEAKREFS(obj);
  111|       |        // See _PyWeakref_GET_REF() for the rationale of this test
  112|       |#ifdef Py_GIL_DISABLED
  113|       |        ret = (ref->wr_object == Py_None) || _is_dead(obj);
  114|       |#else
  115|      0|        ret = _is_dead(obj);
  116|      0|#endif
  117|      0|        UNLOCK_WEAKREFS(obj);
  118|      0|    }
  119|     30|    return ret;
  120|     30|}

exceptions.c:PyType_Check:
  762|     75|static inline int PyType_Check(PyObject *op) {
  763|     75|    return PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TYPE_SUBCLASS);
  ------------------
  |  |  760|     75|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  ------------------
  764|     75|}
exceptions.c:PyType_HasFeature:
  749|    712|{
  750|    712|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|    712|    flags = type->tp_flags;
  756|    712|#endif
  757|    712|    return ((flags & feature) != 0);
  758|    712|}
exceptions.c:_Py_SIZE_impl:
  240|     27|{
  241|     27|    assert(Py_TYPE(ob) != &PyLong_Type);
  ------------------
  |  Branch (241:5): [True: 27, False: 0]
  ------------------
  242|     27|    assert(Py_TYPE(ob) != &PyBool_Type);
  ------------------
  |  Branch (242:5): [True: 27, False: 0]
  ------------------
  243|     27|    return  _PyVarObject_CAST(ob)->ob_size;
  ------------------
  |  |  182|     27|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  ------------------
  |  |  |  |   37|     27|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  244|     27|}
exceptions.c:_Py_TYPE_impl:
  233|  1.14k|{
  234|  1.14k|    return ob->ob_type;
  235|  1.14k|}
exceptions.c:PyObject_TypeCheck:
  374|     98|static inline int PyObject_TypeCheck(PyObject *ob, PyTypeObject *type) {
  375|     98|    return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  215|    196|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|     98|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     98|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 66, False: 32]
  |  |  ------------------
  ------------------
                  return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  213|     32|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     32|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     32|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (375:36): [True: 32, False: 0]
  ------------------
  376|     98|}
exceptions.c:_Py_IS_TYPE_impl:
  248|    223|{
  249|    223|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|    223|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    223|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    223|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|    223|}
genericaliasobject.c:PyType_HasFeature:
  749|      2|{
  750|      2|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|      2|    flags = type->tp_flags;
  756|      2|#endif
  757|      2|    return ((flags & feature) != 0);
  758|      2|}
genericaliasobject.c:_Py_TYPE_impl:
  233|      4|{
  234|      4|    return ob->ob_type;
  235|      4|}
listobject.c:_Py_SET_SIZE_impl:
  254|  6.45k|{
  255|  6.45k|    assert(Py_TYPE(_PyObject_CAST(ob)) != &PyLong_Type);
  ------------------
  |  Branch (255:5): [True: 6.45k, False: 0]
  ------------------
  256|  6.45k|    assert(Py_TYPE(_PyObject_CAST(ob)) != &PyBool_Type);
  ------------------
  |  Branch (256:5): [True: 6.45k, False: 0]
  ------------------
  257|       |#ifdef Py_GIL_DISABLED
  258|       |    _Py_atomic_store_ssize_relaxed(&ob->ob_size, size);
  259|       |#else
  260|  6.45k|    ob->ob_size = size;
  261|  6.45k|#endif
  262|  6.45k|}
listobject.c:PyType_HasFeature:
  749|  49.2k|{
  750|  49.2k|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|  49.2k|    flags = type->tp_flags;
  756|  49.2k|#endif
  757|  49.2k|    return ((flags & feature) != 0);
  758|  49.2k|}
listobject.c:_Py_TYPE_impl:
  233|  88.6k|{
  234|  88.6k|    return ob->ob_type;
  235|  88.6k|}
listobject.c:_Py_SIZE_impl:
  240|  10.0k|{
  241|  10.0k|    assert(Py_TYPE(ob) != &PyLong_Type);
  ------------------
  |  Branch (241:5): [True: 10.0k, False: 0]
  ------------------
  242|  10.0k|    assert(Py_TYPE(ob) != &PyBool_Type);
  ------------------
  |  Branch (242:5): [True: 10.0k, False: 0]
  ------------------
  243|  10.0k|    return  _PyVarObject_CAST(ob)->ob_size;
  ------------------
  |  |  182|  10.0k|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  ------------------
  |  |  |  |   37|  10.0k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  244|  10.0k|}
listobject.c:_Py_IS_TYPE_impl:
  248|  6.36k|{
  249|  6.36k|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|  6.36k|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  6.36k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  6.36k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|  6.36k|}
listobject.c:PyType_Check:
  762|     24|static inline int PyType_Check(PyObject *op) {
  763|     24|    return PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TYPE_SUBCLASS);
  ------------------
  |  |  760|     24|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  ------------------
  764|     24|}
longobject.c:Py_SET_TYPE:
  206|    666|{
  207|    666|    ob->ob_type = type;
  208|    666|}
longobject.c:PyType_HasFeature:
  749|  5.84k|{
  750|  5.84k|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|  5.84k|    flags = type->tp_flags;
  756|  5.84k|#endif
  757|  5.84k|    return ((flags & feature) != 0);
  758|  5.84k|}
longobject.c:_Py_TYPE_impl:
  233|  3.80k|{
  234|  3.80k|    return ob->ob_type;
  235|  3.80k|}
longobject.c:_Py_IS_TYPE_impl:
  248|    264|{
  249|    264|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|    264|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    264|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    264|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|    264|}
dictobject.c:PyType_HasFeature:
  749|   141k|{
  750|   141k|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|   141k|    flags = type->tp_flags;
  756|   141k|#endif
  757|   141k|    return ((flags & feature) != 0);
  758|   141k|}
dictobject.c:_Py_TYPE_impl:
  233|   328k|{
  234|   328k|    return ob->ob_type;
  235|   328k|}
dictobject.c:PyObject_TypeCheck:
  374|  22.9k|static inline int PyObject_TypeCheck(PyObject *ob, PyTypeObject *type) {
  375|  22.9k|    return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  215|  45.9k|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|  22.9k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  22.9k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 0, False: 22.9k]
  |  |  ------------------
  ------------------
                  return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  213|  22.9k|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  22.9k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  22.9k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (375:36): [True: 0, False: 22.9k]
  ------------------
  376|  22.9k|}
dictobject.c:_Py_IS_TYPE_impl:
  248|   159k|{
  249|   159k|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|   159k|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|   159k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|   159k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|   159k|}
dictobject.c:_Py_SIZE_impl:
  240|    201|{
  241|    201|    assert(Py_TYPE(ob) != &PyLong_Type);
  ------------------
  |  Branch (241:5): [True: 201, False: 0]
  ------------------
  242|    201|    assert(Py_TYPE(ob) != &PyBool_Type);
  ------------------
  |  Branch (242:5): [True: 201, False: 0]
  ------------------
  243|    201|    return  _PyVarObject_CAST(ob)->ob_size;
  ------------------
  |  |  182|    201|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  ------------------
  |  |  |  |   37|    201|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  244|    201|}
moduleobject.c:PyObject_TypeCheck:
  374|  1.72k|static inline int PyObject_TypeCheck(PyObject *ob, PyTypeObject *type) {
  375|  1.72k|    return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  215|  3.45k|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|  1.72k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.72k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 1.72k, False: 0]
  |  |  ------------------
  ------------------
                  return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (375:36): [True: 0, False: 0]
  ------------------
  376|  1.72k|}
moduleobject.c:Py_SET_TYPE:
  206|     16|{
  207|     16|    ob->ob_type = type;
  208|     16|}
moduleobject.c:PyType_HasFeature:
  749|  2.44k|{
  750|  2.44k|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|  2.44k|    flags = type->tp_flags;
  756|  2.44k|#endif
  757|  2.44k|    return ((flags & feature) != 0);
  758|  2.44k|}
moduleobject.c:_Py_TYPE_impl:
  233|  5.67k|{
  234|  5.67k|    return ob->ob_type;
  235|  5.67k|}
moduleobject.c:_Py_IS_TYPE_impl:
  248|  3.19k|{
  249|  3.19k|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|  3.19k|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  3.19k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  3.19k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|  3.19k|}
moduleobject.c:_Py_SIZE_impl:
  240|     14|{
  241|     14|    assert(Py_TYPE(ob) != &PyLong_Type);
  ------------------
  |  Branch (241:5): [True: 14, False: 0]
  ------------------
  242|     14|    assert(Py_TYPE(ob) != &PyBool_Type);
  ------------------
  |  Branch (242:5): [True: 14, False: 0]
  ------------------
  243|     14|    return  _PyVarObject_CAST(ob)->ob_size;
  ------------------
  |  |  182|     14|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  ------------------
  |  |  |  |   37|     14|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  244|     14|}
object.c:_Py_TYPE_impl:
  233|  70.3k|{
  234|  70.3k|    return ob->ob_type;
  235|  70.3k|}
object.c:PyType_HasFeature:
  749|  7.56k|{
  750|  7.56k|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|  7.56k|    flags = type->tp_flags;
  756|  7.56k|#endif
  757|  7.56k|    return ((flags & feature) != 0);
  758|  7.56k|}
object.c:Py_SET_TYPE:
  206|    828|{
  207|    828|    ob->ob_type = type;
  208|    828|}
object.c:_Py_IS_TYPE_impl:
  248|  8.41k|{
  249|  8.41k|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|  8.41k|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  8.41k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  8.41k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|  8.41k|}
object.c:_Py_SET_SIZE_impl:
  254|    743|{
  255|    743|    assert(Py_TYPE(_PyObject_CAST(ob)) != &PyLong_Type);
  ------------------
  |  Branch (255:5): [True: 743, False: 0]
  ------------------
  256|    743|    assert(Py_TYPE(_PyObject_CAST(ob)) != &PyBool_Type);
  ------------------
  |  Branch (256:5): [True: 743, False: 0]
  ------------------
  257|       |#ifdef Py_GIL_DISABLED
  258|       |    _Py_atomic_store_ssize_relaxed(&ob->ob_size, size);
  259|       |#else
  260|    743|    ob->ob_size = size;
  261|    743|#endif
  262|    743|}
rangeobject.c:_Py_IS_TYPE_impl:
  248|      7|{
  249|      7|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|      7|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      7|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|      7|}
rangeobject.c:_Py_TYPE_impl:
  233|     19|{
  234|     19|    return ob->ob_type;
  235|     19|}
rangeobject.c:PyType_HasFeature:
  749|     12|{
  750|     12|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|     12|    flags = type->tp_flags;
  756|     12|#endif
  757|     12|    return ((flags & feature) != 0);
  758|     12|}
setobject.c:PyType_HasFeature:
  749|    819|{
  750|    819|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|    819|    flags = type->tp_flags;
  756|    819|#endif
  757|    819|    return ((flags & feature) != 0);
  758|    819|}
setobject.c:_Py_IS_TYPE_impl:
  248|  2.41k|{
  249|  2.41k|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|  2.41k|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  2.41k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.41k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|  2.41k|}
setobject.c:_Py_TYPE_impl:
  233|  3.31k|{
  234|  3.31k|    return ob->ob_type;
  235|  3.31k|}
setobject.c:PyType_Check:
  762|    125|static inline int PyType_Check(PyObject *op) {
  763|    125|    return PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TYPE_SUBCLASS);
  ------------------
  |  |  760|    125|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  ------------------
  764|    125|}
structseq.c:PyType_HasFeature:
  749|    511|{
  750|    511|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|    511|    flags = type->tp_flags;
  756|    511|#endif
  757|    511|    return ((flags & feature) != 0);
  758|    511|}
structseq.c:_Py_TYPE_impl:
  233|  1.98k|{
  234|  1.98k|    return ob->ob_type;
  235|  1.98k|}
structseq.c:_Py_SET_SIZE_impl:
  254|     20|{
  255|     20|    assert(Py_TYPE(_PyObject_CAST(ob)) != &PyLong_Type);
  ------------------
  |  Branch (255:5): [True: 20, False: 0]
  ------------------
  256|     20|    assert(Py_TYPE(_PyObject_CAST(ob)) != &PyBool_Type);
  ------------------
  |  Branch (256:5): [True: 20, False: 0]
  ------------------
  257|       |#ifdef Py_GIL_DISABLED
  258|       |    _Py_atomic_store_ssize_relaxed(&ob->ob_size, size);
  259|       |#else
  260|     20|    ob->ob_size = size;
  261|     20|#endif
  262|     20|}
structseq.c:_Py_SIZE_impl:
  240|    505|{
  241|    505|    assert(Py_TYPE(ob) != &PyLong_Type);
  ------------------
  |  Branch (241:5): [True: 505, False: 0]
  ------------------
  242|    505|    assert(Py_TYPE(ob) != &PyBool_Type);
  ------------------
  |  Branch (242:5): [True: 505, False: 0]
  ------------------
  243|    505|    return  _PyVarObject_CAST(ob)->ob_size;
  ------------------
  |  |  182|    505|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  ------------------
  |  |  |  |   37|    505|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  244|    505|}
structseq.c:Py_SET_TYPE:
  206|      8|{
  207|      8|    ob->ob_type = type;
  208|      8|}
tupleobject.c:PyType_HasFeature:
  749|  14.2k|{
  750|  14.2k|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|  14.2k|    flags = type->tp_flags;
  756|  14.2k|#endif
  757|  14.2k|    return ((flags & feature) != 0);
  758|  14.2k|}
tupleobject.c:_Py_TYPE_impl:
  233|  39.6k|{
  234|  39.6k|    return ob->ob_type;
  235|  39.6k|}
tupleobject.c:_Py_SIZE_impl:
  240|  9.93k|{
  241|  9.93k|    assert(Py_TYPE(ob) != &PyLong_Type);
  ------------------
  |  Branch (241:5): [True: 9.93k, False: 0]
  ------------------
  242|  9.93k|    assert(Py_TYPE(ob) != &PyBool_Type);
  ------------------
  |  Branch (242:5): [True: 9.93k, False: 0]
  ------------------
  243|  9.93k|    return  _PyVarObject_CAST(ob)->ob_size;
  ------------------
  |  |  182|  9.93k|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  ------------------
  |  |  |  |   37|  9.93k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  244|  9.93k|}
tupleobject.c:_Py_IS_TYPE_impl:
  248|  2.98k|{
  249|  2.98k|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|  2.98k|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  2.98k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.98k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|  2.98k|}
tupleobject.c:PyType_Check:
  762|      1|static inline int PyType_Check(PyObject *op) {
  763|      1|    return PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TYPE_SUBCLASS);
  ------------------
  |  |  760|      1|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  ------------------
  764|      1|}
typeobject.c:_Py_IS_TYPE_impl:
  248|  16.7k|{
  249|  16.7k|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|  16.7k|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  16.7k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  16.7k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|  16.7k|}
typeobject.c:PyType_Check:
  762|  35.2k|static inline int PyType_Check(PyObject *op) {
  763|  35.2k|    return PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TYPE_SUBCLASS);
  ------------------
  |  |  760|  35.2k|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  ------------------
  764|  35.2k|}
typeobject.c:PyType_HasFeature:
  749|   254k|{
  750|   254k|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|   254k|    flags = type->tp_flags;
  756|   254k|#endif
  757|   254k|    return ((flags & feature) != 0);
  758|   254k|}
typeobject.c:_Py_TYPE_impl:
  233|   363k|{
  234|   363k|    return ob->ob_type;
  235|   363k|}
typeobject.c:Py_SET_TYPE:
  206|  3.83k|{
  207|  3.83k|    ob->ob_type = type;
  208|  3.83k|}
typeobject.c:_Py_SET_SIZE_impl:
  254|    127|{
  255|    127|    assert(Py_TYPE(_PyObject_CAST(ob)) != &PyLong_Type);
  ------------------
  |  Branch (255:5): [True: 127, False: 0]
  ------------------
  256|    127|    assert(Py_TYPE(_PyObject_CAST(ob)) != &PyBool_Type);
  ------------------
  |  Branch (256:5): [True: 127, False: 0]
  ------------------
  257|       |#ifdef Py_GIL_DISABLED
  258|       |    _Py_atomic_store_ssize_relaxed(&ob->ob_size, size);
  259|       |#else
  260|    127|    ob->ob_size = size;
  261|    127|#endif
  262|    127|}
typeobject.c:_Py_SIZE_impl:
  240|  44.6k|{
  241|  44.6k|    assert(Py_TYPE(ob) != &PyLong_Type);
  ------------------
  |  Branch (241:5): [True: 44.6k, False: 0]
  ------------------
  242|  44.6k|    assert(Py_TYPE(ob) != &PyBool_Type);
  ------------------
  |  Branch (242:5): [True: 44.6k, False: 0]
  ------------------
  243|  44.6k|    return  _PyVarObject_CAST(ob)->ob_size;
  ------------------
  |  |  182|  44.6k|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  ------------------
  |  |  |  |   37|  44.6k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  244|  44.6k|}
typeobject.c:PyObject_TypeCheck:
  374|    812|static inline int PyObject_TypeCheck(PyObject *ob, PyTypeObject *type) {
  375|    812|    return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  215|  1.62k|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|    812|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    812|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 802, False: 10]
  |  |  ------------------
  ------------------
                  return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  213|     10|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     10|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (375:36): [True: 10, False: 0]
  ------------------
  376|    812|}
unicode_writer.c:PyType_HasFeature:
  749|    291|{
  750|    291|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|    291|    flags = type->tp_flags;
  756|    291|#endif
  757|    291|    return ((flags & feature) != 0);
  758|    291|}
unicode_writer.c:_Py_TYPE_impl:
  233|    291|{
  234|    291|    return ob->ob_type;
  235|    291|}
unicodeobject.c:PyType_HasFeature:
  749|   403k|{
  750|   403k|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|   403k|    flags = type->tp_flags;
  756|   403k|#endif
  757|   403k|    return ((flags & feature) != 0);
  758|   403k|}
unicodeobject.c:_Py_TYPE_impl:
  233|   427k|{
  234|   427k|    return ob->ob_type;
  235|   427k|}
unicodeobject.c:Py_SET_TYPE:
  206|  9.82k|{
  207|  9.82k|    ob->ob_type = type;
  208|  9.82k|}
unicodeobject.c:_Py_IS_TYPE_impl:
  248|  19.3k|{
  249|  19.3k|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|  19.3k|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  19.3k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  19.3k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|  19.3k|}
unicodeobject.c:_Py_SIZE_impl:
  240|    253|{
  241|    253|    assert(Py_TYPE(ob) != &PyLong_Type);
  ------------------
  |  Branch (241:5): [True: 253, False: 0]
  ------------------
  242|    253|    assert(Py_TYPE(ob) != &PyBool_Type);
  ------------------
  |  Branch (242:5): [True: 253, False: 0]
  ------------------
  243|    253|    return  _PyVarObject_CAST(ob)->ob_size;
  ------------------
  |  |  182|    253|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  ------------------
  |  |  |  |   37|    253|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  244|    253|}
unicodeobject.c:_Py_SET_SIZE_impl:
  254|      2|{
  255|      2|    assert(Py_TYPE(_PyObject_CAST(ob)) != &PyLong_Type);
  ------------------
  |  Branch (255:5): [True: 2, False: 0]
  ------------------
  256|      2|    assert(Py_TYPE(_PyObject_CAST(ob)) != &PyBool_Type);
  ------------------
  |  Branch (256:5): [True: 2, False: 0]
  ------------------
  257|       |#ifdef Py_GIL_DISABLED
  258|       |    _Py_atomic_store_ssize_relaxed(&ob->ob_size, size);
  259|       |#else
  260|      2|    ob->ob_size = size;
  261|      2|#endif
  262|      2|}
weakrefobject.c:_Py_TYPE_impl:
  233|  4.05k|{
  234|  4.05k|    return ob->ob_type;
  235|  4.05k|}
weakrefobject.c:PyType_Check:
  762|    857|static inline int PyType_Check(PyObject *op) {
  763|    857|    return PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TYPE_SUBCLASS);
  ------------------
  |  |  760|    857|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  ------------------
  764|    857|}
weakrefobject.c:PyObject_TypeCheck:
  374|    834|static inline int PyObject_TypeCheck(PyObject *ob, PyTypeObject *type) {
  375|    834|    return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  215|  1.66k|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|    834|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    834|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 804, False: 30]
  |  |  ------------------
  ------------------
                  return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  213|     30|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     30|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     30|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (375:36): [True: 30, False: 0]
  ------------------
  376|    834|}
weakrefobject.c:_Py_IS_TYPE_impl:
  248|  1.30k|{
  249|  1.30k|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|  1.30k|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  1.30k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.30k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|  1.30k|}
weakrefobject.c:_Py_SIZE_impl:
  240|    108|{
  241|    108|    assert(Py_TYPE(ob) != &PyLong_Type);
  ------------------
  |  Branch (241:5): [True: 108, False: 0]
  ------------------
  242|    108|    assert(Py_TYPE(ob) != &PyBool_Type);
  ------------------
  |  Branch (242:5): [True: 108, False: 0]
  ------------------
  243|    108|    return  _PyVarObject_CAST(ob)->ob_size;
  ------------------
  |  |  182|    108|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  ------------------
  |  |  |  |   37|    108|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  244|    108|}
weakrefobject.c:PyType_HasFeature:
  749|  1.07k|{
  750|  1.07k|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|  1.07k|    flags = type->tp_flags;
  756|  1.07k|#endif
  757|  1.07k|    return ((flags & feature) != 0);
  758|  1.07k|}
_warnings.c:PyType_HasFeature:
  749|     10|{
  750|     10|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|     10|    flags = type->tp_flags;
  756|     10|#endif
  757|     10|    return ((flags & feature) != 0);
  758|     10|}
_warnings.c:_Py_TYPE_impl:
  233|     10|{
  234|     10|    return ob->ob_type;
  235|     10|}
bltinmodule.c:_Py_TYPE_impl:
  233|    864|{
  234|    864|    return ob->ob_type;
  235|    864|}
bltinmodule.c:PyType_Check:
  762|    155|static inline int PyType_Check(PyObject *op) {
  763|    155|    return PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TYPE_SUBCLASS);
  ------------------
  |  |  760|    155|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  ------------------
  764|    155|}
bltinmodule.c:PyType_HasFeature:
  749|    464|{
  750|    464|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|    464|    flags = type->tp_flags;
  756|    464|#endif
  757|    464|    return ((flags & feature) != 0);
  758|    464|}
bltinmodule.c:_Py_SIZE_impl:
  240|     76|{
  241|     76|    assert(Py_TYPE(ob) != &PyLong_Type);
  ------------------
  |  Branch (241:5): [True: 76, False: 0]
  ------------------
  242|     76|    assert(Py_TYPE(ob) != &PyBool_Type);
  ------------------
  |  Branch (242:5): [True: 76, False: 0]
  ------------------
  243|     76|    return  _PyVarObject_CAST(ob)->ob_size;
  ------------------
  |  |  182|     76|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  ------------------
  |  |  |  |   37|     76|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  244|     76|}
bltinmodule.c:_Py_IS_TYPE_impl:
  248|    196|{
  249|    196|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|    196|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    196|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    196|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|    196|}
ceval.c:PyType_HasFeature:
  749|  18.4k|{
  750|  18.4k|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|  18.4k|    flags = type->tp_flags;
  756|  18.4k|#endif
  757|  18.4k|    return ((flags & feature) != 0);
  758|  18.4k|}
ceval.c:_Py_TYPE_impl:
  233|  77.4k|{
  234|  77.4k|    return ob->ob_type;
  235|  77.4k|}
ceval.c:PyType_Check:
  762|    408|static inline int PyType_Check(PyObject *op) {
  763|    408|    return PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TYPE_SUBCLASS);
  ------------------
  |  |  760|    408|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  ------------------
  764|    408|}
ceval.c:_Py_IS_TYPE_impl:
  248|  31.9k|{
  249|  31.9k|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|  31.9k|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  31.9k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  31.9k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|  31.9k|}
ceval.c:PyObject_TypeCheck:
  374|  1.89k|static inline int PyObject_TypeCheck(PyObject *ob, PyTypeObject *type) {
  375|  1.89k|    return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  215|  3.78k|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|  1.89k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.89k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 1.89k, False: 0]
  |  |  ------------------
  ------------------
                  return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (375:36): [True: 0, False: 0]
  ------------------
  376|  1.89k|}
ceval.c:_Py_SIZE_impl:
  240|  2.27k|{
  241|  2.27k|    assert(Py_TYPE(ob) != &PyLong_Type);
  ------------------
  |  Branch (241:5): [True: 2.27k, False: 0]
  ------------------
  242|  2.27k|    assert(Py_TYPE(ob) != &PyBool_Type);
  ------------------
  |  Branch (242:5): [True: 2.27k, False: 0]
  ------------------
  243|  2.27k|    return  _PyVarObject_CAST(ob)->ob_size;
  ------------------
  |  |  182|  2.27k|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  ------------------
  |  |  |  |   37|  2.27k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  244|  2.27k|}
ceval.c:_Py_SET_SIZE_impl:
  254|    467|{
  255|    467|    assert(Py_TYPE(_PyObject_CAST(ob)) != &PyLong_Type);
  ------------------
  |  Branch (255:5): [True: 467, False: 0]
  ------------------
  256|    467|    assert(Py_TYPE(_PyObject_CAST(ob)) != &PyBool_Type);
  ------------------
  |  Branch (256:5): [True: 467, False: 0]
  ------------------
  257|       |#ifdef Py_GIL_DISABLED
  258|       |    _Py_atomic_store_ssize_relaxed(&ob->ob_size, size);
  259|       |#else
  260|    467|    ob->ob_size = size;
  261|    467|#endif
  262|    467|}
codecs.c:_Py_IS_TYPE_impl:
  248|      3|{
  249|      3|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|      3|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|      3|}
codecs.c:_Py_SIZE_impl:
  240|      1|{
  241|      1|    assert(Py_TYPE(ob) != &PyLong_Type);
  ------------------
  |  Branch (241:5): [True: 1, False: 0]
  ------------------
  242|      1|    assert(Py_TYPE(ob) != &PyBool_Type);
  ------------------
  |  Branch (242:5): [True: 1, False: 0]
  ------------------
  243|      1|    return  _PyVarObject_CAST(ob)->ob_size;
  ------------------
  |  |  182|      1|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  ------------------
  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  244|      1|}
codecs.c:PyType_HasFeature:
  749|      2|{
  750|      2|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|      2|    flags = type->tp_flags;
  756|      2|#endif
  757|      2|    return ((flags & feature) != 0);
  758|      2|}
codecs.c:_Py_TYPE_impl:
  233|      7|{
  234|      7|    return ob->ob_type;
  235|      7|}
context.c:_Py_TYPE_impl:
  233|      1|{
  234|      1|    return ob->ob_type;
  235|      1|}
context.c:PyType_HasFeature:
  749|      1|{
  750|      1|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|      1|    flags = type->tp_flags;
  756|      1|#endif
  757|      1|    return ((flags & feature) != 0);
  758|      1|}
errors.c:PyType_Check:
  762|    540|static inline int PyType_Check(PyObject *op) {
  763|    540|    return PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TYPE_SUBCLASS);
  ------------------
  |  |  760|    540|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  ------------------
  764|    540|}
errors.c:PyType_HasFeature:
  749|  1.82k|{
  750|  1.82k|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|  1.82k|    flags = type->tp_flags;
  756|  1.82k|#endif
  757|  1.82k|    return ((flags & feature) != 0);
  758|  1.82k|}
errors.c:_Py_TYPE_impl:
  233|  1.84k|{
  234|  1.84k|    return ob->ob_type;
  235|  1.84k|}
frame.c:_Py_IS_TYPE_impl:
  248|    205|{
  249|    205|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|    205|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    205|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    205|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|    205|}
frame.c:_Py_TYPE_impl:
  233|    205|{
  234|    205|    return ob->ob_type;
  235|    205|}
gc.c:_Py_SIZE_impl:
  240|      8|{
  241|      8|    assert(Py_TYPE(ob) != &PyLong_Type);
  ------------------
  |  Branch (241:5): [True: 8, False: 0]
  ------------------
  242|      8|    assert(Py_TYPE(ob) != &PyBool_Type);
  ------------------
  |  Branch (242:5): [True: 8, False: 0]
  ------------------
  243|      8|    return  _PyVarObject_CAST(ob)->ob_size;
  ------------------
  |  |  182|      8|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  ------------------
  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  244|      8|}
gc.c:PyType_HasFeature:
  749|     34|{
  750|     34|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|     34|    flags = type->tp_flags;
  756|     34|#endif
  757|     34|    return ((flags & feature) != 0);
  758|     34|}
gc.c:_Py_IS_TYPE_impl:
  248|  5.11k|{
  249|  5.11k|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|  5.11k|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  5.11k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  5.11k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|  5.11k|}
gc.c:PyType_Check:
  762|     26|static inline int PyType_Check(PyObject *op) {
  763|     26|    return PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TYPE_SUBCLASS);
  ------------------
  |  |  760|     26|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  ------------------
  764|     26|}
gc.c:PyObject_TypeCheck:
  374|     22|static inline int PyObject_TypeCheck(PyObject *ob, PyTypeObject *type) {
  375|     22|    return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  215|     44|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|     22|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     22|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 0, False: 22]
  |  |  ------------------
  ------------------
                  return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  213|     22|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     22|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     22|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (375:36): [True: 0, False: 22]
  ------------------
  376|     22|}
gc.c:Py_SET_TYPE:
  206|  4.95k|{
  207|  4.95k|    ob->ob_type = type;
  208|  4.95k|}
gc.c:_Py_TYPE_impl:
  233|  62.3k|{
  234|  62.3k|    return ob->ob_type;
  235|  62.3k|}
gc.c:_Py_SET_SIZE_impl:
  254|  2.43k|{
  255|  2.43k|    assert(Py_TYPE(_PyObject_CAST(ob)) != &PyLong_Type);
  ------------------
  |  Branch (255:5): [True: 2.43k, False: 0]
  ------------------
  256|  2.43k|    assert(Py_TYPE(_PyObject_CAST(ob)) != &PyBool_Type);
  ------------------
  |  Branch (256:5): [True: 2.43k, False: 0]
  ------------------
  257|       |#ifdef Py_GIL_DISABLED
  258|       |    _Py_atomic_store_ssize_relaxed(&ob->ob_size, size);
  259|       |#else
  260|  2.43k|    ob->ob_size = size;
  261|  2.43k|#endif
  262|  2.43k|}
getargs.c:PyType_HasFeature:
  749|  1.39k|{
  750|  1.39k|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|  1.39k|    flags = type->tp_flags;
  756|  1.39k|#endif
  757|  1.39k|    return ((flags & feature) != 0);
  758|  1.39k|}
getargs.c:_Py_TYPE_impl:
  233|  2.36k|{
  234|  2.36k|    return ob->ob_type;
  235|  2.36k|}
getargs.c:_Py_SIZE_impl:
  240|    429|{
  241|    429|    assert(Py_TYPE(ob) != &PyLong_Type);
  ------------------
  |  Branch (241:5): [True: 429, False: 0]
  ------------------
  242|    429|    assert(Py_TYPE(ob) != &PyBool_Type);
  ------------------
  |  Branch (242:5): [True: 429, False: 0]
  ------------------
  243|    429|    return  _PyVarObject_CAST(ob)->ob_size;
  ------------------
  |  |  182|    429|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  ------------------
  |  |  |  |   37|    429|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  244|    429|}
getargs.c:_Py_IS_TYPE_impl:
  248|     24|{
  249|     24|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|     24|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     24|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     24|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|     24|}
import.c:_Py_SIZE_impl:
  240|      7|{
  241|      7|    assert(Py_TYPE(ob) != &PyLong_Type);
  ------------------
  |  Branch (241:5): [True: 7, False: 0]
  ------------------
  242|      7|    assert(Py_TYPE(ob) != &PyBool_Type);
  ------------------
  |  Branch (242:5): [True: 7, False: 0]
  ------------------
  243|      7|    return  _PyVarObject_CAST(ob)->ob_size;
  ------------------
  |  |  182|      7|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  ------------------
  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  244|      7|}
import.c:PyType_HasFeature:
  749|    362|{
  750|    362|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|    362|    flags = type->tp_flags;
  756|    362|#endif
  757|    362|    return ((flags & feature) != 0);
  758|    362|}
import.c:_Py_TYPE_impl:
  233|    419|{
  234|    419|    return ob->ob_type;
  235|    419|}
import.c:PyObject_TypeCheck:
  374|     22|static inline int PyObject_TypeCheck(PyObject *ob, PyTypeObject *type) {
  375|     22|    return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  215|     44|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|     22|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     22|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 22, False: 0]
  |  |  ------------------
  ------------------
                  return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (375:36): [True: 0, False: 0]
  ------------------
  376|     22|}
import.c:_Py_IS_TYPE_impl:
  248|     41|{
  249|     41|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|     41|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     41|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     41|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|     41|}
importdl.c:PyType_HasFeature:
  749|     12|{
  750|     12|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|     12|    flags = type->tp_flags;
  756|     12|#endif
  757|     12|    return ((flags & feature) != 0);
  758|     12|}
importdl.c:_Py_TYPE_impl:
  233|     36|{
  234|     36|    return ob->ob_type;
  235|     36|}
importdl.c:_Py_IS_TYPE_impl:
  248|     24|{
  249|     24|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|     24|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     24|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     24|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|     24|}
importdl.c:PyObject_TypeCheck:
  374|     12|static inline int PyObject_TypeCheck(PyObject *ob, PyTypeObject *type) {
  375|     12|    return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  215|     24|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|     12|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     12|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 12, False: 0]
  |  |  ------------------
  ------------------
                  return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (375:36): [True: 0, False: 0]
  ------------------
  376|     12|}
initconfig.c:PyType_HasFeature:
  749|     32|{
  750|     32|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|     32|    flags = type->tp_flags;
  756|     32|#endif
  757|     32|    return ((flags & feature) != 0);
  758|     32|}
initconfig.c:_Py_TYPE_impl:
  233|     50|{
  234|     50|    return ob->ob_type;
  235|     50|}
initconfig.c:_Py_SIZE_impl:
  240|      5|{
  241|      5|    assert(Py_TYPE(ob) != &PyLong_Type);
  ------------------
  |  Branch (241:5): [True: 5, False: 0]
  ------------------
  242|      5|    assert(Py_TYPE(ob) != &PyBool_Type);
  ------------------
  |  Branch (242:5): [True: 5, False: 0]
  ------------------
  243|      5|    return  _PyVarObject_CAST(ob)->ob_size;
  ------------------
  |  |  182|      5|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  ------------------
  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  244|      5|}
initconfig.c:_Py_IS_TYPE_impl:
  248|      8|{
  249|      8|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|      8|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      8|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|      8|}
intrinsics.c:PyType_HasFeature:
  749|  2.99k|{
  750|  2.99k|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|  2.99k|    flags = type->tp_flags;
  756|  2.99k|#endif
  757|  2.99k|    return ((flags & feature) != 0);
  758|  2.99k|}
intrinsics.c:_Py_TYPE_impl:
  233|  3.49k|{
  234|  3.49k|    return ob->ob_type;
  235|  3.49k|}
intrinsics.c:_Py_IS_TYPE_impl:
  248|    493|{
  249|    493|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|    493|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    493|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    493|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|    493|}
marshal.c:PyType_HasFeature:
  749|  27.9k|{
  750|  27.9k|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|  27.9k|    flags = type->tp_flags;
  756|  27.9k|#endif
  757|  27.9k|    return ((flags & feature) != 0);
  758|  27.9k|}
marshal.c:_Py_TYPE_impl:
  233|  63.5k|{
  234|  63.5k|    return ob->ob_type;
  235|  63.5k|}
marshal.c:_Py_SIZE_impl:
  240|  17.7k|{
  241|  17.7k|    assert(Py_TYPE(ob) != &PyLong_Type);
  ------------------
  |  Branch (241:5): [True: 17.7k, False: 0]
  ------------------
  242|  17.7k|    assert(Py_TYPE(ob) != &PyBool_Type);
  ------------------
  |  Branch (242:5): [True: 17.7k, False: 0]
  ------------------
  243|  17.7k|    return  _PyVarObject_CAST(ob)->ob_size;
  ------------------
  |  |  182|  17.7k|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  ------------------
  |  |  |  |   37|  17.7k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  244|  17.7k|}
modsupport.c:_Py_TYPE_impl:
  233|    404|{
  234|    404|    return ob->ob_type;
  235|    404|}
modsupport.c:PyType_HasFeature:
  749|     37|{
  750|     37|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|     37|    flags = type->tp_flags;
  756|     37|#endif
  757|     37|    return ((flags & feature) != 0);
  758|     37|}
modsupport.c:_Py_SIZE_impl:
  240|     37|{
  241|     37|    assert(Py_TYPE(ob) != &PyLong_Type);
  ------------------
  |  Branch (241:5): [True: 37, False: 0]
  ------------------
  242|     37|    assert(Py_TYPE(ob) != &PyBool_Type);
  ------------------
  |  Branch (242:5): [True: 37, False: 0]
  ------------------
  243|     37|    return  _PyVarObject_CAST(ob)->ob_size;
  ------------------
  |  |  182|     37|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  ------------------
  |  |  |  |   37|     37|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  244|     37|}
modsupport.c:PyObject_TypeCheck:
  374|    293|static inline int PyObject_TypeCheck(PyObject *ob, PyTypeObject *type) {
  375|    293|    return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  215|    586|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|    293|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    293|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 293, False: 0]
  |  |  ------------------
  ------------------
                  return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (375:36): [True: 0, False: 0]
  ------------------
  376|    293|}
modsupport.c:_Py_IS_TYPE_impl:
  248|    293|{
  249|    293|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|    293|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    293|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    293|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|    293|}
pylifecycle.c:PyType_HasFeature:
  749|      1|{
  750|      1|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|      1|    flags = type->tp_flags;
  756|      1|#endif
  757|      1|    return ((flags & feature) != 0);
  758|      1|}
pylifecycle.c:_Py_TYPE_impl:
  233|      1|{
  234|      1|    return ob->ob_type;
  235|      1|}
specialize.c:PyType_Check:
  762|    302|static inline int PyType_Check(PyObject *op) {
  763|    302|    return PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TYPE_SUBCLASS);
  ------------------
  |  |  760|    302|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  ------------------
  764|    302|}
specialize.c:_Py_TYPE_impl:
  233|  4.74k|{
  234|  4.74k|    return ob->ob_type;
  235|  4.74k|}
specialize.c:_Py_IS_TYPE_impl:
  248|  1.84k|{
  249|  1.84k|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|  1.84k|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  1.84k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.84k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|  1.84k|}
specialize.c:PyObject_TypeCheck:
  374|    139|static inline int PyObject_TypeCheck(PyObject *ob, PyTypeObject *type) {
  375|    139|    return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  215|    278|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|    139|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    139|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 139, False: 0]
  |  |  ------------------
  ------------------
                  return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (375:36): [True: 0, False: 0]
  ------------------
  376|    139|}
specialize.c:_Py_SIZE_impl:
  240|     14|{
  241|     14|    assert(Py_TYPE(ob) != &PyLong_Type);
  ------------------
  |  Branch (241:5): [True: 14, False: 0]
  ------------------
  242|     14|    assert(Py_TYPE(ob) != &PyBool_Type);
  ------------------
  |  Branch (242:5): [True: 14, False: 0]
  ------------------
  243|     14|    return  _PyVarObject_CAST(ob)->ob_size;
  ------------------
  |  |  182|     14|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  ------------------
  |  |  |  |   37|     14|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  244|     14|}
specialize.c:PyType_HasFeature:
  749|    378|{
  750|    378|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|    378|    flags = type->tp_flags;
  756|    378|#endif
  757|    378|    return ((flags & feature) != 0);
  758|    378|}
symtable.c:PyType_HasFeature:
  749|     50|{
  750|     50|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|     50|    flags = type->tp_flags;
  756|     50|#endif
  757|     50|    return ((flags & feature) != 0);
  758|     50|}
symtable.c:_Py_TYPE_impl:
  233|     50|{
  234|     50|    return ob->ob_type;
  235|     50|}
sysmodule.c:PyType_HasFeature:
  749|    320|{
  750|    320|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|    320|    flags = type->tp_flags;
  756|    320|#endif
  757|    320|    return ((flags & feature) != 0);
  758|    320|}
sysmodule.c:_Py_TYPE_impl:
  233|    914|{
  234|    914|    return ob->ob_type;
  235|    914|}
sysmodule.c:_Py_IS_TYPE_impl:
  248|      2|{
  249|      2|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|      2|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|      2|}
sysmodule.c:_Py_SIZE_impl:
  240|    296|{
  241|    296|    assert(Py_TYPE(ob) != &PyLong_Type);
  ------------------
  |  Branch (241:5): [True: 296, False: 0]
  ------------------
  242|    296|    assert(Py_TYPE(ob) != &PyBool_Type);
  ------------------
  |  Branch (242:5): [True: 296, False: 0]
  ------------------
  243|    296|    return  _PyVarObject_CAST(ob)->ob_size;
  ------------------
  |  |  182|    296|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  ------------------
  |  |  |  |   37|    296|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  244|    296|}
traceback.c:_Py_IS_TYPE_impl:
  248|    224|{
  249|    224|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|    224|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    224|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    224|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|    224|}
traceback.c:PyType_HasFeature:
  749|    102|{
  750|    102|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|    102|    flags = type->tp_flags;
  756|    102|#endif
  757|    102|    return ((flags & feature) != 0);
  758|    102|}
traceback.c:_Py_TYPE_impl:
  233|    326|{
  234|    326|    return ob->ob_type;
  235|    326|}
posixmodule.c:_Py_IS_TYPE_impl:
  248|     17|{
  249|     17|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|     17|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     17|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     17|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|     17|}
posixmodule.c:_Py_SIZE_impl:
  240|     23|{
  241|     23|    assert(Py_TYPE(ob) != &PyLong_Type);
  ------------------
  |  Branch (241:5): [True: 23, False: 0]
  ------------------
  242|     23|    assert(Py_TYPE(ob) != &PyBool_Type);
  ------------------
  |  Branch (242:5): [True: 23, False: 0]
  ------------------
  243|     23|    return  _PyVarObject_CAST(ob)->ob_size;
  ------------------
  |  |  182|     23|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  ------------------
  |  |  |  |   37|     23|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  244|     23|}
posixmodule.c:_Py_TYPE_impl:
  233|    214|{
  234|    214|    return ob->ob_type;
  235|    214|}
posixmodule.c:PyType_HasFeature:
  749|    151|{
  750|    151|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|    151|    flags = type->tp_flags;
  756|    151|#endif
  757|    151|    return ((flags & feature) != 0);
  758|    151|}
posixmodule.c:PyObject_TypeCheck:
  374|     17|static inline int PyObject_TypeCheck(PyObject *ob, PyTypeObject *type) {
  375|     17|    return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  215|     34|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|     17|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     17|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 17, False: 0]
  |  |  ------------------
  ------------------
                  return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (375:36): [True: 0, False: 0]
  ------------------
  376|     17|}
_datetimemodule.c:PyObject_TypeCheck:
  374|      2|static inline int PyObject_TypeCheck(PyObject *ob, PyTypeObject *type) {
  375|      2|    return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  215|      4|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
                  return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (375:36): [True: 0, False: 0]
  ------------------
  376|      2|}
_datetimemodule.c:_Py_IS_TYPE_impl:
  248|      2|{
  249|      2|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|      2|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|      2|}
_datetimemodule.c:_Py_TYPE_impl:
  233|      2|{
  234|      2|    return ob->ob_type;
  235|      2|}
_datetimemodule.c:Py_SET_TYPE:
  206|      4|{
  207|      4|    ob->ob_type = type;
  208|      4|}
_codecsmodule.c:PyType_HasFeature:
  749|      7|{
  750|      7|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|      7|    flags = type->tp_flags;
  756|      7|#endif
  757|      7|    return ((flags & feature) != 0);
  758|      7|}
_codecsmodule.c:_Py_TYPE_impl:
  233|      7|{
  234|      7|    return ob->ob_type;
  235|      7|}
_iomodule.c:PyType_HasFeature:
  749|      3|{
  750|      3|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|      3|    flags = type->tp_flags;
  756|      3|#endif
  757|      3|    return ((flags & feature) != 0);
  758|      3|}
_iomodule.c:_Py_TYPE_impl:
  233|      9|{
  234|      9|    return ob->ob_type;
  235|      9|}
_iomodule.c:PyObject_TypeCheck:
  374|      6|static inline int PyObject_TypeCheck(PyObject *ob, PyTypeObject *type) {
  375|      6|    return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  215|     12|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|      6|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 6, False: 0]
  |  |  ------------------
  ------------------
                  return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (375:36): [True: 0, False: 0]
  ------------------
  376|      6|}
_iomodule.c:_Py_IS_TYPE_impl:
  248|      6|{
  249|      6|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|      6|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      6|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|      6|}
fileio.c:_Py_TYPE_impl:
  233|     21|{
  234|     21|    return ob->ob_type;
  235|     21|}
fileio.c:PyType_HasFeature:
  749|     12|{
  750|     12|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|     12|    flags = type->tp_flags;
  756|     12|#endif
  757|     12|    return ((flags & feature) != 0);
  758|     12|}
fileio.c:_Py_SIZE_impl:
  240|      3|{
  241|      3|    assert(Py_TYPE(ob) != &PyLong_Type);
  ------------------
  |  Branch (241:5): [True: 3, False: 0]
  ------------------
  242|      3|    assert(Py_TYPE(ob) != &PyBool_Type);
  ------------------
  |  Branch (242:5): [True: 3, False: 0]
  ------------------
  243|      3|    return  _PyVarObject_CAST(ob)->ob_size;
  ------------------
  |  |  182|      3|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  ------------------
  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  244|      3|}
fileio.c:_Py_IS_TYPE_impl:
  248|      3|{
  249|      3|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|      3|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|      3|}
bufferedio.c:_Py_IS_TYPE_impl:
  248|      9|{
  249|      9|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|      9|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      9|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      9|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|      9|}
bufferedio.c:_Py_TYPE_impl:
  233|     27|{
  234|     27|    return ob->ob_type;
  235|     27|}
bufferedio.c:PyType_HasFeature:
  749|      9|{
  750|      9|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|      9|    flags = type->tp_flags;
  756|      9|#endif
  757|      9|    return ((flags & feature) != 0);
  758|      9|}
bufferedio.c:_Py_SIZE_impl:
  240|      3|{
  241|      3|    assert(Py_TYPE(ob) != &PyLong_Type);
  ------------------
  |  Branch (241:5): [True: 3, False: 0]
  ------------------
  242|      3|    assert(Py_TYPE(ob) != &PyBool_Type);
  ------------------
  |  Branch (242:5): [True: 3, False: 0]
  ------------------
  243|      3|    return  _PyVarObject_CAST(ob)->ob_size;
  ------------------
  |  |  182|      3|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  ------------------
  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  244|      3|}
bufferedio.c:PyObject_TypeCheck:
  374|      3|static inline int PyObject_TypeCheck(PyObject *ob, PyTypeObject *type) {
  375|      3|    return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  215|      6|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 3, False: 0]
  |  |  ------------------
  ------------------
                  return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (375:36): [True: 0, False: 0]
  ------------------
  376|      3|}
textio.c:_Py_SIZE_impl:
  240|      3|{
  241|      3|    assert(Py_TYPE(ob) != &PyLong_Type);
  ------------------
  |  Branch (241:5): [True: 3, False: 0]
  ------------------
  242|      3|    assert(Py_TYPE(ob) != &PyBool_Type);
  ------------------
  |  Branch (242:5): [True: 3, False: 0]
  ------------------
  243|      3|    return  _PyVarObject_CAST(ob)->ob_size;
  ------------------
  |  |  182|      3|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  ------------------
  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  244|      3|}
textio.c:PyType_HasFeature:
  749|     32|{
  750|     32|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|     32|    flags = type->tp_flags;
  756|     32|#endif
  757|     32|    return ((flags & feature) != 0);
  758|     32|}
textio.c:_Py_TYPE_impl:
  233|     52|{
  234|     52|    return ob->ob_type;
  235|     52|}
textio.c:PyObject_TypeCheck:
  374|      3|static inline int PyObject_TypeCheck(PyObject *ob, PyTypeObject *type) {
  375|      3|    return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  215|      6|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 3, False: 0]
  |  |  ------------------
  ------------------
                  return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (375:36): [True: 0, False: 0]
  ------------------
  376|      3|}
textio.c:_Py_IS_TYPE_impl:
  248|     11|{
  249|     11|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|     11|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     11|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     11|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|     11|}
_threadmodule.c:PyObject_TypeCheck:
  374|     51|static inline int PyObject_TypeCheck(PyObject *ob, PyTypeObject *type) {
  375|     51|    return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  215|    102|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|     51|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     51|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 51, False: 0]
  |  |  ------------------
  ------------------
                  return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (375:36): [True: 0, False: 0]
  ------------------
  376|     51|}
_threadmodule.c:_Py_IS_TYPE_impl:
  248|     51|{
  249|     51|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|     51|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     51|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     51|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|     51|}
_threadmodule.c:_Py_TYPE_impl:
  233|     99|{
  234|     99|    return ob->ob_type;
  235|     99|}
timemodule.c:_Py_TYPE_impl:
  233|      3|{
  234|      3|    return ob->ob_type;
  235|      3|}
timemodule.c:PyObject_TypeCheck:
  374|      3|static inline int PyObject_TypeCheck(PyObject *ob, PyTypeObject *type) {
  375|      3|    return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  215|      6|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 3, False: 0]
  |  |  ------------------
  ------------------
                  return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (375:36): [True: 0, False: 0]
  ------------------
  376|      3|}
timemodule.c:_Py_IS_TYPE_impl:
  248|      3|{
  249|      3|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|      3|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|      3|}
_weakref.c:PyType_HasFeature:
  749|     30|{
  750|     30|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|     30|    flags = type->tp_flags;
  756|     30|#endif
  757|     30|    return ((flags & feature) != 0);
  758|     30|}
_weakref.c:_Py_TYPE_impl:
  233|    150|{
  234|    150|    return ob->ob_type;
  235|    150|}
_weakref.c:PyObject_TypeCheck:
  374|     60|static inline int PyObject_TypeCheck(PyObject *ob, PyTypeObject *type) {
  375|     60|    return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  215|    120|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|     60|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     60|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 0, False: 60]
  |  |  ------------------
  ------------------
                  return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  213|     60|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     60|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     60|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (375:36): [True: 60, False: 0]
  ------------------
  376|     60|}
_weakref.c:_Py_IS_TYPE_impl:
  248|     60|{
  249|     60|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|     60|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     60|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     60|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|     60|}
_abc.c:PyObject_TypeCheck:
  374|    134|static inline int PyObject_TypeCheck(PyObject *ob, PyTypeObject *type) {
  375|    134|    return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  215|    268|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|    134|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    134|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 134, False: 0]
  |  |  ------------------
  ------------------
                  return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (375:36): [True: 0, False: 0]
  ------------------
  376|    134|}
_abc.c:_Py_IS_TYPE_impl:
  248|    208|{
  249|    208|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|    208|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    208|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    208|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|    208|}
_abc.c:_Py_TYPE_impl:
  233|  4.15k|{
  234|  4.15k|    return ob->ob_type;
  235|  4.15k|}
_abc.c:PyType_HasFeature:
  749|  2.60k|{
  750|  2.60k|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|  2.60k|    flags = type->tp_flags;
  756|  2.60k|#endif
  757|  2.60k|    return ((flags & feature) != 0);
  758|  2.60k|}
_abc.c:_Py_SIZE_impl:
  240|    671|{
  241|    671|    assert(Py_TYPE(ob) != &PyLong_Type);
  ------------------
  |  Branch (241:5): [True: 671, False: 0]
  ------------------
  242|    671|    assert(Py_TYPE(ob) != &PyBool_Type);
  ------------------
  |  Branch (242:5): [True: 671, False: 0]
  ------------------
  243|    671|    return  _PyVarObject_CAST(ob)->ob_size;
  ------------------
  |  |  182|    671|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  ------------------
  |  |  |  |   37|    671|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  244|    671|}
_abc.c:PyType_Check:
  762|    144|static inline int PyType_Check(PyObject *op) {
  763|    144|    return PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TYPE_SUBCLASS);
  ------------------
  |  |  760|    144|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  ------------------
  764|    144|}
_stat.c:PyType_HasFeature:
  749|      1|{
  750|      1|    unsigned long flags;
  751|      1|#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|      1|    flags = PyType_GetFlags(type);
  754|       |#else
  755|       |    flags = type->tp_flags;
  756|       |#endif
  757|      1|    return ((flags & feature) != 0);
  758|      1|}
_stat.c:_Py_TYPE_impl:
  233|      1|{
  234|      1|    return ob->ob_type;
  235|      1|}
getpath.c:_Py_IS_TYPE_impl:
  248|      1|{
  249|      1|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|      1|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|      1|}
getpath.c:_Py_TYPE_impl:
  233|    111|{
  234|    111|    return ob->ob_type;
  235|    111|}
getpath.c:PyType_HasFeature:
  749|     84|{
  750|     84|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|     84|    flags = type->tp_flags;
  756|     84|#endif
  757|     84|    return ((flags & feature) != 0);
  758|     84|}
getpath.c:_Py_SIZE_impl:
  240|     13|{
  241|     13|    assert(Py_TYPE(ob) != &PyLong_Type);
  ------------------
  |  Branch (241:5): [True: 13, False: 0]
  ------------------
  242|     13|    assert(Py_TYPE(ob) != &PyBool_Type);
  ------------------
  |  Branch (242:5): [True: 13, False: 0]
  ------------------
  243|     13|    return  _PyVarObject_CAST(ob)->ob_size;
  ------------------
  |  |  182|     13|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  ------------------
  |  |  |  |   37|     13|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  244|     13|}
abstract.c:_Py_TYPE_impl:
  233|  5.75k|{
  234|  5.75k|    return ob->ob_type;
  235|  5.75k|}
abstract.c:PyType_HasFeature:
  749|    309|{
  750|    309|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|    309|    flags = type->tp_flags;
  756|    309|#endif
  757|    309|    return ((flags & feature) != 0);
  758|    309|}
abstract.c:PyType_Check:
  762|    192|static inline int PyType_Check(PyObject *op) {
  763|    192|    return PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TYPE_SUBCLASS);
  ------------------
  |  |  760|    192|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  ------------------
  764|    192|}
abstract.c:_Py_IS_TYPE_impl:
  248|  2.85k|{
  249|  2.85k|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|  2.85k|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  2.85k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.85k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|  2.85k|}
abstract.c:PyObject_TypeCheck:
  374|     26|static inline int PyObject_TypeCheck(PyObject *ob, PyTypeObject *type) {
  375|     26|    return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  215|     52|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|     26|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     26|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 0, False: 26]
  |  |  ------------------
  ------------------
                  return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  213|     26|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     26|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     26|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (375:36): [True: 0, False: 26]
  ------------------
  376|     26|}
abstract.c:PyType_CheckExact:
  772|    172|static inline int PyType_CheckExact(PyObject *op) {
  773|    172|    return Py_IS_TYPE(op, &PyType_Type);
  ------------------
  |  |  215|    172|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|    172|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    172|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  774|    172|}
boolobject.c:_Py_TYPE_impl:
  233|      1|{
  234|      1|    return ob->ob_type;
  235|      1|}
boolobject.c:PyType_Check:
  762|      1|static inline int PyType_Check(PyObject *op) {
  763|      1|    return PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TYPE_SUBCLASS);
  ------------------
  |  |  760|      1|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  ------------------
  764|      1|}
boolobject.c:PyType_HasFeature:
  749|      1|{
  750|      1|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|      1|    flags = type->tp_flags;
  756|      1|#endif
  757|      1|    return ((flags & feature) != 0);
  758|      1|}
bytearrayobject.c:PyType_HasFeature:
  749|     85|{
  750|     85|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|     85|    flags = type->tp_flags;
  756|     85|#endif
  757|     85|    return ((flags & feature) != 0);
  758|     85|}
bytearrayobject.c:_Py_SET_SIZE_impl:
  254|     82|{
  255|     82|    assert(Py_TYPE(_PyObject_CAST(ob)) != &PyLong_Type);
  ------------------
  |  Branch (255:5): [True: 82, False: 0]
  ------------------
  256|     82|    assert(Py_TYPE(_PyObject_CAST(ob)) != &PyBool_Type);
  ------------------
  |  Branch (256:5): [True: 82, False: 0]
  ------------------
  257|       |#ifdef Py_GIL_DISABLED
  258|       |    _Py_atomic_store_ssize_relaxed(&ob->ob_size, size);
  259|       |#else
  260|     82|    ob->ob_size = size;
  261|     82|#endif
  262|     82|}
bytearrayobject.c:PyObject_TypeCheck:
  374|     83|static inline int PyObject_TypeCheck(PyObject *ob, PyTypeObject *type) {
  375|     83|    return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  215|    166|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|     83|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     83|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 83, False: 0]
  |  |  ------------------
  ------------------
                  return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (375:36): [True: 0, False: 0]
  ------------------
  376|     83|}
bytearrayobject.c:_Py_IS_TYPE_impl:
  248|     83|{
  249|     83|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|     83|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     83|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     83|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|     83|}
bytearrayobject.c:_Py_SIZE_impl:
  240|      2|{
  241|      2|    assert(Py_TYPE(ob) != &PyLong_Type);
  ------------------
  |  Branch (241:5): [True: 2, False: 0]
  ------------------
  242|      2|    assert(Py_TYPE(ob) != &PyBool_Type);
  ------------------
  |  Branch (242:5): [True: 2, False: 0]
  ------------------
  243|      2|    return  _PyVarObject_CAST(ob)->ob_size;
  ------------------
  |  |  182|      2|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  ------------------
  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  244|      2|}
bytearrayobject.c:_Py_TYPE_impl:
  233|    418|{
  234|    418|    return ob->ob_type;
  235|    418|}
bytesobject.c:Py_SET_TYPE:
  206|  2.47k|{
  207|  2.47k|    ob->ob_type = type;
  208|  2.47k|}
bytesobject.c:PyType_HasFeature:
  749|     50|{
  750|     50|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|     50|    flags = type->tp_flags;
  756|     50|#endif
  757|     50|    return ((flags & feature) != 0);
  758|     50|}
bytesobject.c:_Py_TYPE_impl:
  233|  5.09k|{
  234|  5.09k|    return ob->ob_type;
  235|  5.09k|}
bytesobject.c:_Py_SIZE_impl:
  240|     41|{
  241|     41|    assert(Py_TYPE(ob) != &PyLong_Type);
  ------------------
  |  Branch (241:5): [True: 41, False: 0]
  ------------------
  242|     41|    assert(Py_TYPE(ob) != &PyBool_Type);
  ------------------
  |  Branch (242:5): [True: 41, False: 0]
  ------------------
  243|     41|    return  _PyVarObject_CAST(ob)->ob_size;
  ------------------
  |  |  182|     41|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  ------------------
  |  |  |  |   37|     41|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  244|     41|}
bytesobject.c:_Py_SET_SIZE_impl:
  254|  2.47k|{
  255|  2.47k|    assert(Py_TYPE(_PyObject_CAST(ob)) != &PyLong_Type);
  ------------------
  |  Branch (255:5): [True: 2.47k, False: 0]
  ------------------
  256|  2.47k|    assert(Py_TYPE(_PyObject_CAST(ob)) != &PyBool_Type);
  ------------------
  |  Branch (256:5): [True: 2.47k, False: 0]
  ------------------
  257|       |#ifdef Py_GIL_DISABLED
  258|       |    _Py_atomic_store_ssize_relaxed(&ob->ob_size, size);
  259|       |#else
  260|  2.47k|    ob->ob_size = size;
  261|  2.47k|#endif
  262|  2.47k|}
call.c:_Py_TYPE_impl:
  233|  5.52k|{
  234|  5.52k|    return ob->ob_type;
  235|  5.52k|}
call.c:PyType_HasFeature:
  749|  3.73k|{
  750|  3.73k|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|  3.73k|    flags = type->tp_flags;
  756|  3.73k|#endif
  757|  3.73k|    return ((flags & feature) != 0);
  758|  3.73k|}
call.c:_Py_SIZE_impl:
  240|    434|{
  241|    434|    assert(Py_TYPE(ob) != &PyLong_Type);
  ------------------
  |  Branch (241:5): [True: 434, False: 0]
  ------------------
  242|    434|    assert(Py_TYPE(ob) != &PyBool_Type);
  ------------------
  |  Branch (242:5): [True: 434, False: 0]
  ------------------
  243|    434|    return  _PyVarObject_CAST(ob)->ob_size;
  ------------------
  |  |  182|    434|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  ------------------
  |  |  |  |   37|    434|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  244|    434|}
call.c:_Py_IS_TYPE_impl:
  248|    318|{
  249|    318|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|    318|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    318|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    318|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|    318|}
cellobject.c:_Py_IS_TYPE_impl:
  248|     80|{
  249|     80|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|     80|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     80|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     80|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|     80|}
cellobject.c:_Py_TYPE_impl:
  233|     80|{
  234|     80|    return ob->ob_type;
  235|     80|}
classobject.c:_Py_IS_TYPE_impl:
  248|    403|{
  249|    403|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|    403|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    403|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    403|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|    403|}
classobject.c:_Py_TYPE_impl:
  233|    403|{
  234|    403|    return ob->ob_type;
  235|    403|}
codeobject.c:PyType_HasFeature:
  749|  60.5k|{
  750|  60.5k|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|  60.5k|    flags = type->tp_flags;
  756|  60.5k|#endif
  757|  60.5k|    return ((flags & feature) != 0);
  758|  60.5k|}
codeobject.c:_Py_TYPE_impl:
  233|   105k|{
  234|   105k|    return ob->ob_type;
  235|   105k|}
codeobject.c:_Py_SIZE_impl:
  240|  15.4k|{
  241|  15.4k|    assert(Py_TYPE(ob) != &PyLong_Type);
  ------------------
  |  Branch (241:5): [True: 15.4k, False: 0]
  ------------------
  242|  15.4k|    assert(Py_TYPE(ob) != &PyBool_Type);
  ------------------
  |  Branch (242:5): [True: 15.4k, False: 0]
  ------------------
  243|  15.4k|    return  _PyVarObject_CAST(ob)->ob_size;
  ------------------
  |  |  182|  15.4k|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  ------------------
  |  |  |  |   37|  15.4k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  244|  15.4k|}
codeobject.c:_Py_IS_TYPE_impl:
  248|  13.8k|{
  249|  13.8k|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|  13.8k|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  13.8k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  13.8k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|  13.8k|}
descrobject.c:PyType_HasFeature:
  749|    503|{
  750|    503|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|    503|    flags = type->tp_flags;
  756|    503|#endif
  757|    503|    return ((flags & feature) != 0);
  758|    503|}
descrobject.c:PyType_Check:
  762|    175|static inline int PyType_Check(PyObject *op) {
  763|    175|    return PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TYPE_SUBCLASS);
  ------------------
  |  |  760|    175|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  ------------------
  764|    175|}
descrobject.c:_Py_SIZE_impl:
  240|     37|{
  241|     37|    assert(Py_TYPE(ob) != &PyLong_Type);
  ------------------
  |  Branch (241:5): [True: 37, False: 0]
  ------------------
  242|     37|    assert(Py_TYPE(ob) != &PyBool_Type);
  ------------------
  |  Branch (242:5): [True: 37, False: 0]
  ------------------
  243|     37|    return  _PyVarObject_CAST(ob)->ob_size;
  ------------------
  |  |  182|     37|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  ------------------
  |  |  |  |   37|     37|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  244|     37|}
descrobject.c:_Py_TYPE_impl:
  233|  2.85k|{
  234|  2.85k|    return ob->ob_type;
  235|  2.85k|}
descrobject.c:_Py_IS_TYPE_impl:
  248|  1.15k|{
  249|  1.15k|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|  1.15k|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  1.15k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.15k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|  1.15k|}
descrobject.c:PyObject_TypeCheck:
  374|  1.11k|static inline int PyObject_TypeCheck(PyObject *ob, PyTypeObject *type) {
  375|  1.11k|    return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  215|  2.22k|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|  1.11k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.11k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 856, False: 254]
  |  |  ------------------
  ------------------
                  return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  213|    254|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    254|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    254|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (375:36): [True: 254, False: 0]
  ------------------
  376|  1.11k|}
enumobject.c:_Py_TYPE_impl:
  233|      6|{
  234|      6|    return ob->ob_type;
  235|      6|}
enumobject.c:PyType_HasFeature:
  749|      6|{
  750|      6|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|      6|    flags = type->tp_flags;
  756|      6|#endif
  757|      6|    return ((flags & feature) != 0);
  758|      6|}
enumobject.c:PyType_Check:
  762|      3|static inline int PyType_Check(PyObject *op) {
  763|      3|    return PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TYPE_SUBCLASS);
  ------------------
  |  |  760|      3|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  ------------------
  764|      3|}
genobject.c:_Py_IS_TYPE_impl:
  248|     98|{
  249|     98|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|     98|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     98|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     98|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|     98|}
genobject.c:_Py_TYPE_impl:
  233|     98|{
  234|     98|    return ob->ob_type;
  235|     98|}
floatobject.c:Py_SET_TYPE:
  206|     10|{
  207|     10|    ob->ob_type = type;
  208|     10|}
floatobject.c:PyType_HasFeature:
  749|      3|{
  750|      3|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|      3|    flags = type->tp_flags;
  756|      3|#endif
  757|      3|    return ((flags & feature) != 0);
  758|      3|}
floatobject.c:_Py_TYPE_impl:
  233|    144|{
  234|    144|    return ob->ob_type;
  235|    144|}
floatobject.c:PyObject_TypeCheck:
  374|     60|static inline int PyObject_TypeCheck(PyObject *ob, PyTypeObject *type) {
  375|     60|    return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  215|    120|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|     60|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     60|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 57, False: 3]
  |  |  ------------------
  ------------------
                  return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  213|      3|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (375:36): [True: 0, False: 3]
  ------------------
  376|     60|}
floatobject.c:_Py_IS_TYPE_impl:
  248|    138|{
  249|    138|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|    138|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    138|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    138|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|    138|}
frameobject.c:PyObject_TypeCheck:
  374|     94|static inline int PyObject_TypeCheck(PyObject *ob, PyTypeObject *type) {
  375|     94|    return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  215|    188|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|     94|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     94|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 94, False: 0]
  |  |  ------------------
  ------------------
                  return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (375:36): [True: 0, False: 0]
  ------------------
  376|     94|}
frameobject.c:_Py_IS_TYPE_impl:
  248|    118|{
  249|    118|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|    118|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    118|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    118|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|    118|}
frameobject.c:_Py_SIZE_impl:
  240|      1|{
  241|      1|    assert(Py_TYPE(ob) != &PyLong_Type);
  ------------------
  |  Branch (241:5): [True: 1, False: 0]
  ------------------
  242|      1|    assert(Py_TYPE(ob) != &PyBool_Type);
  ------------------
  |  Branch (242:5): [True: 1, False: 0]
  ------------------
  243|      1|    return  _PyVarObject_CAST(ob)->ob_size;
  ------------------
  |  |  182|      1|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  ------------------
  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  244|      1|}
frameobject.c:PyType_HasFeature:
  749|      2|{
  750|      2|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|      2|    flags = type->tp_flags;
  756|      2|#endif
  757|      2|    return ((flags & feature) != 0);
  758|      2|}
frameobject.c:_Py_TYPE_impl:
  233|    123|{
  234|    123|    return ob->ob_type;
  235|    123|}
funcobject.c:PyType_HasFeature:
  749|  1.79k|{
  750|  1.79k|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|  1.79k|    flags = type->tp_flags;
  756|  1.79k|#endif
  757|  1.79k|    return ((flags & feature) != 0);
  758|  1.79k|}
funcobject.c:_Py_TYPE_impl:
  233|  3.10k|{
  234|  3.10k|    return ob->ob_type;
  235|  3.10k|}
funcobject.c:PyObject_TypeCheck:
  374|    255|static inline int PyObject_TypeCheck(PyObject *ob, PyTypeObject *type) {
  375|    255|    return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  215|    510|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|    255|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    255|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 255, False: 0]
  |  |  ------------------
  ------------------
                  return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (375:36): [True: 0, False: 0]
  ------------------
  376|    255|}
funcobject.c:_Py_IS_TYPE_impl:
  248|  1.30k|{
  249|  1.30k|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|  1.30k|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  1.30k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.30k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|  1.30k|}
lazyimportobject.c:PyType_HasFeature:
  749|      4|{
  750|      4|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|      4|    flags = type->tp_flags;
  756|      4|#endif
  757|      4|    return ((flags & feature) != 0);
  758|      4|}
lazyimportobject.c:_Py_TYPE_impl:
  233|     12|{
  234|     12|    return ob->ob_type;
  235|     12|}
lazyimportobject.c:_Py_IS_TYPE_impl:
  248|      8|{
  249|      8|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|      8|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      8|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|      8|}
methodobject.c:PyObject_TypeCheck:
  374|  5.01k|static inline int PyObject_TypeCheck(PyObject *ob, PyTypeObject *type) {
  375|  5.01k|    return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  215|  10.0k|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|  5.01k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  5.01k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 5.00k, False: 7]
  |  |  ------------------
  ------------------
                  return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
  ------------------
  |  |  213|      7|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      7|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (375:36): [True: 4, False: 3]
  ------------------
  376|  5.01k|}
methodobject.c:_Py_IS_TYPE_impl:
  248|  5.26k|{
  249|  5.26k|    return Py_TYPE(ob) == type;
  ------------------
  |  |  213|  5.26k|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  5.26k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  5.26k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|  5.26k|}
methodobject.c:_Py_TYPE_impl:
  233|  5.27k|{
  234|  5.27k|    return ob->ob_type;
  235|  5.27k|}
methodobject.c:PyType_Check:
  762|      3|static inline int PyType_Check(PyObject *op) {
  763|      3|    return PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TYPE_SUBCLASS);
  ------------------
  |  |  760|      3|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  ------------------
  764|      3|}
methodobject.c:PyType_HasFeature:
  749|      6|{
  750|      6|    unsigned long flags;
  751|       |#ifdef Py_LIMITED_API
  752|       |    // PyTypeObject is opaque in the limited C API
  753|       |    flags = PyType_GetFlags(type);
  754|       |#else
  755|      6|    flags = type->tp_flags;
  756|      6|#endif
  757|      6|    return ((flags & feature) != 0);
  758|      6|}
namespaceobject.c:_Py_TYPE_impl:
  233|     16|{
  234|     16|    return ob->ob_type;
  235|     16|}
crossinterp.c:_Py_TYPE_impl:
  233|      1|{
  234|      1|    return ob->ob_type;
  235|      1|}

gc.c:PyDTrace_GC_START_ENABLED:
   44|      2|static inline int PyDTrace_GC_START_ENABLED(void) { return 0; }
gc.c:PyDTrace_GC_DONE_ENABLED:
   45|      2|static inline int PyDTrace_GC_DONE_ENABLED(void) { return 0; }
import.c:PyDTrace_IMPORT_FIND_LOAD_START_ENABLED:
   50|     24|static inline int PyDTrace_IMPORT_FIND_LOAD_START_ENABLED(void) { return 0; }
import.c:PyDTrace_IMPORT_FIND_LOAD_DONE_ENABLED:
   51|     24|static inline int PyDTrace_IMPORT_FIND_LOAD_DONE_ENABLED(void) { return 0; }
sysmodule.c:PyDTrace_AUDIT_ENABLED:
   52|     70|static inline int PyDTrace_AUDIT_ENABLED(void) { return 0; }

exceptions.c:_Py_XNewRef:
  541|    334|{
  542|    334|    Py_XINCREF(obj);
  ------------------
  |  |  514|    334|#  define Py_XINCREF(op) Py_XINCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    334|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    334|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  543|    334|    return obj;
  544|    334|}
exceptions.c:Py_XINCREF:
  508|    334|{
  509|    334|    if (op != _Py_NULL) {
  ------------------
  |  |   57|    334|#  define _Py_NULL NULL
  ------------------
  |  Branch (509:9): [True: 41, False: 293]
  ------------------
  510|     41|        Py_INCREF(op);
  ------------------
  |  |  310|     41|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     41|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     41|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  511|     41|    }
  512|    334|}
exceptions.c:Py_XDECREF:
  518|    263|{
  519|    263|    if (op != _Py_NULL) {
  ------------------
  |  |   57|    263|#  define _Py_NULL NULL
  ------------------
  |  Branch (519:9): [True: 49, False: 214]
  ------------------
  520|     49|        Py_DECREF(op);
  ------------------
  |  |  430|     49|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     49|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     49|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  521|     49|    }
  522|    263|}
exceptions.c:_Py_NewRef:
  535|    192|{
  536|    192|    Py_INCREF(obj);
  ------------------
  |  |  310|    192|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    192|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    192|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|    192|    return obj;
  538|    192|}
exceptions.c:Py_INCREF:
  256|    243|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|    243|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|    243|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 12, False: 231]
  ------------------
  288|       |        // the object is immortal
  289|     12|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|     12|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|     12|        return;
  291|     12|    }
  292|    231|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|    231|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|    231|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|    231|#endif
  308|    231|}
exceptions.c:Py_DECREF:
  418|    441|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|    441|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|    441|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    441|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    441|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 107, False: 334]
  |  |  ------------------
  ------------------
  422|    107|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|    107|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|    107|        return;
  424|    107|    }
  425|    334|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|    334|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|    334|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 224, False: 110]
  ------------------
  427|    224|        _Py_Dealloc(op);
  428|    224|    }
  429|    334|}
exceptions.c:_Py_IsImmortal:
  127|    441|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|    441|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|    441|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|    441|}
genericaliasobject.c:Py_XDECREF:
  518|      6|{
  519|      6|    if (op != _Py_NULL) {
  ------------------
  |  |   57|      6|#  define _Py_NULL NULL
  ------------------
  |  Branch (519:9): [True: 4, False: 2]
  ------------------
  520|      4|        Py_DECREF(op);
  ------------------
  |  |  430|      4|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  521|      4|    }
  522|      6|}
genericaliasobject.c:Py_DECREF:
  418|      4|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|      4|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|      4|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 2, False: 2]
  |  |  ------------------
  ------------------
  422|      2|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|      2|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|      2|        return;
  424|      2|    }
  425|      2|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|      2|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|      2|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 2, False: 0]
  ------------------
  427|      2|        _Py_Dealloc(op);
  428|      2|    }
  429|      2|}
genericaliasobject.c:_Py_IsImmortal:
  127|      4|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|      4|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|      4|}
genericaliasobject.c:_Py_NewRef:
  535|      2|{
  536|      2|    Py_INCREF(obj);
  ------------------
  |  |  310|      2|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|      2|    return obj;
  538|      2|}
genericaliasobject.c:Py_INCREF:
  256|      2|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|      2|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|      2|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 2, False: 0]
  ------------------
  288|       |        // the object is immortal
  289|      2|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|      2|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|      2|        return;
  291|      2|    }
  292|      0|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|      0|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|      0|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|      0|#endif
  308|      0|}
genericaliasobject.c:_Py_REFCNT:
  105|      2|    static inline Py_ssize_t _Py_REFCNT(PyObject *ob) {
  106|      2|    #if !defined(Py_GIL_DISABLED)
  107|      2|        return ob->ob_refcnt;
  108|       |    #else
  109|       |        uint32_t local = _Py_atomic_load_uint32_relaxed(&ob->ob_ref_local);
  110|       |        if (local == _Py_IMMORTAL_REFCNT_LOCAL) {
  111|       |            return _Py_IMMORTAL_INITIAL_REFCNT;
  112|       |        }
  113|       |        Py_ssize_t shared = _Py_atomic_load_ssize_relaxed(&ob->ob_ref_shared);
  114|       |        return _Py_STATIC_CAST(Py_ssize_t, local) +
  115|       |               Py_ARITHMETIC_RIGHT_SHIFT(Py_ssize_t, shared, _Py_REF_SHARED_SHIFT);
  116|       |    #endif
  117|      2|    }
listobject.c:Py_DECREF:
  418|  8.54k|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|  8.54k|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|  8.54k|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  8.54k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  8.54k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 5.15k, False: 3.39k]
  |  |  ------------------
  ------------------
  422|  5.15k|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|  5.15k|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|  5.15k|        return;
  424|  5.15k|    }
  425|  3.39k|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|  3.39k|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|  3.39k|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 1.04k, False: 2.34k]
  ------------------
  427|  1.04k|        _Py_Dealloc(op);
  428|  1.04k|    }
  429|  3.39k|}
listobject.c:_Py_IsImmortal:
  127|  8.54k|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|  8.54k|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|  8.54k|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|  8.54k|}
listobject.c:Py_XDECREF:
  518|  7.64k|{
  519|  7.64k|    if (op != _Py_NULL) {
  ------------------
  |  |   57|  7.64k|#  define _Py_NULL NULL
  ------------------
  |  Branch (519:9): [True: 7.61k, False: 33]
  ------------------
  520|  7.61k|        Py_DECREF(op);
  ------------------
  |  |  430|  7.61k|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  7.61k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  7.61k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  521|  7.61k|    }
  522|  7.64k|}
listobject.c:_Py_NewRef:
  535|  8.04k|{
  536|  8.04k|    Py_INCREF(obj);
  ------------------
  |  |  310|  8.04k|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  8.04k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  8.04k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|  8.04k|    return obj;
  538|  8.04k|}
listobject.c:Py_INCREF:
  256|  8.14k|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|  8.14k|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|  8.14k|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 5.01k, False: 3.12k]
  ------------------
  288|       |        // the object is immortal
  289|  5.01k|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|  5.01k|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|  5.01k|        return;
  291|  5.01k|    }
  292|  3.12k|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|  3.12k|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|  3.12k|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|  3.12k|#endif
  308|  3.12k|}
listobject.c:_Py_XNewRef:
  541|     39|{
  542|     39|    Py_XINCREF(obj);
  ------------------
  |  |  514|     39|#  define Py_XINCREF(op) Py_XINCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     39|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     39|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  543|     39|    return obj;
  544|     39|}
listobject.c:Py_XINCREF:
  508|     39|{
  509|     39|    if (op != _Py_NULL) {
  ------------------
  |  |   57|     39|#  define _Py_NULL NULL
  ------------------
  |  Branch (509:9): [True: 39, False: 0]
  ------------------
  510|     39|        Py_INCREF(op);
  ------------------
  |  |  310|     39|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     39|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     39|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  511|     39|    }
  512|     39|}
longobject.c:_Py_IsImmortal:
  127|    679|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|    679|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|    679|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|    679|}
longobject.c:Py_DECREF:
  418|      2|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|      2|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|      2|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  422|      2|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|      2|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|      2|        return;
  424|      2|    }
  425|      0|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|      0|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 0, False: 0]
  ------------------
  427|      0|        _Py_Dealloc(op);
  428|      0|    }
  429|      0|}
longobject.c:Py_INCREF:
  256|    666|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|    666|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|    666|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 666, False: 0]
  ------------------
  288|       |        // the object is immortal
  289|    666|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|    666|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|    666|        return;
  291|    666|    }
  292|      0|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|      0|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|      0|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|      0|#endif
  308|      0|}
longobject.c:_Py_REFCNT:
  105|      4|    static inline Py_ssize_t _Py_REFCNT(PyObject *ob) {
  106|      4|    #if !defined(Py_GIL_DISABLED)
  107|      4|        return ob->ob_refcnt;
  108|       |    #else
  109|       |        uint32_t local = _Py_atomic_load_uint32_relaxed(&ob->ob_ref_local);
  110|       |        if (local == _Py_IMMORTAL_REFCNT_LOCAL) {
  111|       |            return _Py_IMMORTAL_INITIAL_REFCNT;
  112|       |        }
  113|       |        Py_ssize_t shared = _Py_atomic_load_ssize_relaxed(&ob->ob_ref_shared);
  114|       |        return _Py_STATIC_CAST(Py_ssize_t, local) +
  115|       |               Py_ARITHMETIC_RIGHT_SHIFT(Py_ssize_t, shared, _Py_REF_SHARED_SHIFT);
  116|       |    #endif
  117|      4|    }
dictobject.c:_Py_XNewRef:
  541|    505|{
  542|    505|    Py_XINCREF(obj);
  ------------------
  |  |  514|    505|#  define Py_XINCREF(op) Py_XINCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    505|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    505|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  543|    505|    return obj;
  544|    505|}
dictobject.c:Py_XINCREF:
  508|    505|{
  509|    505|    if (op != _Py_NULL) {
  ------------------
  |  |   57|    505|#  define _Py_NULL NULL
  ------------------
  |  Branch (509:9): [True: 347, False: 158]
  ------------------
  510|    347|        Py_INCREF(op);
  ------------------
  |  |  310|    347|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    347|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    347|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  511|    347|    }
  512|    505|}
dictobject.c:_Py_IsImmortal:
  127|  12.8k|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|  12.8k|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|  12.8k|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|  12.8k|}
dictobject.c:_Py_IsStaticImmortal:
  141|  4.28k|{
  142|  4.28k|#if defined(Py_GIL_DISABLED) || SIZEOF_VOID_P > 4
  143|  4.28k|    return (op->ob_flags & _Py_STATICALLY_ALLOCATED_FLAG) != 0;
  ------------------
  |  |  583|  4.28k|#define _Py_STATICALLY_ALLOCATED_FLAG (1 << 2)
  ------------------
  144|       |#else
  145|       |    return op->ob_refcnt >= _Py_STATIC_IMMORTAL_MINIMUM_REFCNT;
  146|       |#endif
  147|  4.28k|}
dictobject.c:Py_INCREF:
  256|  39.4k|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|  39.4k|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|  39.4k|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 15.5k, False: 23.8k]
  ------------------
  288|       |        // the object is immortal
  289|  15.5k|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|  15.5k|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|  15.5k|        return;
  291|  15.5k|    }
  292|  23.8k|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|  23.8k|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|  23.8k|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|  23.8k|#endif
  308|  23.8k|}
dictobject.c:Py_DECREF:
  418|  8.16k|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|  8.16k|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|  8.16k|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  8.16k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  8.16k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 5.92k, False: 2.23k]
  |  |  ------------------
  ------------------
  422|  5.92k|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|  5.92k|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|  5.92k|        return;
  424|  5.92k|    }
  425|  2.23k|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|  2.23k|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|  2.23k|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 557, False: 1.68k]
  ------------------
  427|    557|        _Py_Dealloc(op);
  428|    557|    }
  429|  2.23k|}
dictobject.c:_Py_REFCNT:
  105|  14.7k|    static inline Py_ssize_t _Py_REFCNT(PyObject *ob) {
  106|  14.7k|    #if !defined(Py_GIL_DISABLED)
  107|  14.7k|        return ob->ob_refcnt;
  108|       |    #else
  109|       |        uint32_t local = _Py_atomic_load_uint32_relaxed(&ob->ob_ref_local);
  110|       |        if (local == _Py_IMMORTAL_REFCNT_LOCAL) {
  111|       |            return _Py_IMMORTAL_INITIAL_REFCNT;
  112|       |        }
  113|       |        Py_ssize_t shared = _Py_atomic_load_ssize_relaxed(&ob->ob_ref_shared);
  114|       |        return _Py_STATIC_CAST(Py_ssize_t, local) +
  115|       |               Py_ARITHMETIC_RIGHT_SHIFT(Py_ssize_t, shared, _Py_REF_SHARED_SHIFT);
  116|       |    #endif
  117|  14.7k|    }
dictobject.c:_Py_NewRef:
  535|  33.5k|{
  536|  33.5k|    Py_INCREF(obj);
  ------------------
  |  |  310|  33.5k|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  33.5k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  33.5k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|  33.5k|    return obj;
  538|  33.5k|}
dictobject.c:Py_XDECREF:
  518|  5.55k|{
  519|  5.55k|    if (op != _Py_NULL) {
  ------------------
  |  |   57|  5.55k|#  define _Py_NULL NULL
  ------------------
  |  Branch (519:9): [True: 5.22k, False: 333]
  ------------------
  520|  5.22k|        Py_DECREF(op);
  ------------------
  |  |  430|  5.22k|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  5.22k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  5.22k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  521|  5.22k|    }
  522|  5.55k|}
dictobject.c:Py_SET_REFCNT:
  154|  1.00k|static inline void Py_SET_REFCNT(PyObject *ob, Py_ssize_t refcnt) {
  155|  1.00k|    assert(refcnt >= 0);
  ------------------
  |  Branch (155:5): [True: 1.00k, False: 0]
  ------------------
  156|       |#if (defined(Py_LIMITED_API) && Py_LIMITED_API+0 >= 0x030d0000) \
  157|       |    || defined(_Py_OPAQUE_PYOBJECT)
  158|       |    // Stable ABI implements Py_SET_REFCNT() as a function call
  159|       |    // on limited C API version 3.13 and newer, and abi3t.
  160|       |    _Py_SetRefcnt(ob, refcnt);
  161|       |#else
  162|       |    // This immortal check is for code that is unaware of immortal objects.
  163|       |    // The runtime tracks these objects and we should avoid as much
  164|       |    // as possible having extensions inadvertently change the refcnt
  165|       |    // of an immortalized object.
  166|  1.00k|    if (_Py_IsImmortal(ob)) {
  ------------------
  |  |  137|  1.00k|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  1.00k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.00k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 0, False: 1.00k]
  |  |  ------------------
  ------------------
  167|      0|        return;
  168|      0|    }
  169|  1.00k|#ifndef Py_GIL_DISABLED
  170|  1.00k|#if SIZEOF_VOID_P > 4
  171|  1.00k|    ob->ob_refcnt = (uint32_t)refcnt;
  172|       |#else
  173|       |    ob->ob_refcnt = refcnt;
  174|       |#endif
  175|       |#else
  176|       |    if (_Py_IsOwnedByCurrentThread(ob)) {
  177|       |        if ((size_t)refcnt > (size_t)UINT32_MAX) {
  178|       |            // On overflow, make the object immortal
  179|       |            ob->ob_tid = _Py_UNOWNED_TID;
  180|       |            ob->ob_ref_local = _Py_IMMORTAL_REFCNT_LOCAL;
  181|       |            ob->ob_ref_shared = 0;
  182|       |        }
  183|       |        else {
  184|       |            // Set local refcount to desired refcount and shared refcount
  185|       |            // to zero, but preserve the shared refcount flags.
  186|       |            ob->ob_ref_local = _Py_STATIC_CAST(uint32_t, refcnt);
  187|       |            ob->ob_ref_shared &= _Py_REF_SHARED_FLAG_MASK;
  188|       |        }
  189|       |    }
  190|       |    else {
  191|       |        // Set local refcount to zero and shared refcount to desired refcount.
  192|       |        // Mark the object as merged.
  193|       |        ob->ob_tid = _Py_UNOWNED_TID;
  194|       |        ob->ob_ref_local = 0;
  195|       |        ob->ob_ref_shared = _Py_REF_SHARED(refcnt, _Py_REF_MERGED);
  196|       |    }
  197|       |#endif  // Py_GIL_DISABLED
  198|  1.00k|#endif  // Py_LIMITED_API
  199|  1.00k|}
moduleobject.c:Py_SET_REFCNT:
  154|     16|static inline void Py_SET_REFCNT(PyObject *ob, Py_ssize_t refcnt) {
  155|     16|    assert(refcnt >= 0);
  ------------------
  |  Branch (155:5): [True: 16, False: 0]
  ------------------
  156|       |#if (defined(Py_LIMITED_API) && Py_LIMITED_API+0 >= 0x030d0000) \
  157|       |    || defined(_Py_OPAQUE_PYOBJECT)
  158|       |    // Stable ABI implements Py_SET_REFCNT() as a function call
  159|       |    // on limited C API version 3.13 and newer, and abi3t.
  160|       |    _Py_SetRefcnt(ob, refcnt);
  161|       |#else
  162|       |    // This immortal check is for code that is unaware of immortal objects.
  163|       |    // The runtime tracks these objects and we should avoid as much
  164|       |    // as possible having extensions inadvertently change the refcnt
  165|       |    // of an immortalized object.
  166|     16|    if (_Py_IsImmortal(ob)) {
  ------------------
  |  |  137|     16|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     16|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     16|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 16, False: 0]
  |  |  ------------------
  ------------------
  167|     16|        return;
  168|     16|    }
  169|      0|#ifndef Py_GIL_DISABLED
  170|      0|#if SIZEOF_VOID_P > 4
  171|      0|    ob->ob_refcnt = (uint32_t)refcnt;
  172|       |#else
  173|       |    ob->ob_refcnt = refcnt;
  174|       |#endif
  175|       |#else
  176|       |    if (_Py_IsOwnedByCurrentThread(ob)) {
  177|       |        if ((size_t)refcnt > (size_t)UINT32_MAX) {
  178|       |            // On overflow, make the object immortal
  179|       |            ob->ob_tid = _Py_UNOWNED_TID;
  180|       |            ob->ob_ref_local = _Py_IMMORTAL_REFCNT_LOCAL;
  181|       |            ob->ob_ref_shared = 0;
  182|       |        }
  183|       |        else {
  184|       |            // Set local refcount to desired refcount and shared refcount
  185|       |            // to zero, but preserve the shared refcount flags.
  186|       |            ob->ob_ref_local = _Py_STATIC_CAST(uint32_t, refcnt);
  187|       |            ob->ob_ref_shared &= _Py_REF_SHARED_FLAG_MASK;
  188|       |        }
  189|       |    }
  190|       |    else {
  191|       |        // Set local refcount to zero and shared refcount to desired refcount.
  192|       |        // Mark the object as merged.
  193|       |        ob->ob_tid = _Py_UNOWNED_TID;
  194|       |        ob->ob_ref_local = 0;
  195|       |        ob->ob_ref_shared = _Py_REF_SHARED(refcnt, _Py_REF_MERGED);
  196|       |    }
  197|       |#endif  // Py_GIL_DISABLED
  198|      0|#endif  // Py_LIMITED_API
  199|      0|}
moduleobject.c:_Py_IsImmortal:
  127|    557|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|    557|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|    557|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|    557|}
moduleobject.c:_Py_NewRef:
  535|     33|{
  536|     33|    Py_INCREF(obj);
  ------------------
  |  |  310|     33|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     33|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     33|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|     33|    return obj;
  538|     33|}
moduleobject.c:Py_INCREF:
  256|     33|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|     33|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|     33|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 21, False: 12]
  ------------------
  288|       |        // the object is immortal
  289|     21|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|     21|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|     21|        return;
  291|     21|    }
  292|     12|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|     12|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|     12|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|     12|#endif
  308|     12|}
moduleobject.c:Py_DECREF:
  418|    541|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|    541|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|    541|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    541|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    541|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 58, False: 483]
  |  |  ------------------
  ------------------
  422|     58|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|     58|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|     58|        return;
  424|     58|    }
  425|    483|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|    483|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|    483|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 0, False: 483]
  ------------------
  427|      0|        _Py_Dealloc(op);
  428|      0|    }
  429|    483|}
moduleobject.c:Py_XDECREF:
  518|     43|{
  519|     43|    if (op != _Py_NULL) {
  ------------------
  |  |   57|     43|#  define _Py_NULL NULL
  ------------------
  |  Branch (519:9): [True: 1, False: 42]
  ------------------
  520|      1|        Py_DECREF(op);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  521|      1|    }
  522|     43|}
object.c:_Py_REFCNT:
  105|    105|    static inline Py_ssize_t _Py_REFCNT(PyObject *ob) {
  106|    105|    #if !defined(Py_GIL_DISABLED)
  107|    105|        return ob->ob_refcnt;
  108|       |    #else
  109|       |        uint32_t local = _Py_atomic_load_uint32_relaxed(&ob->ob_ref_local);
  110|       |        if (local == _Py_IMMORTAL_REFCNT_LOCAL) {
  111|       |            return _Py_IMMORTAL_INITIAL_REFCNT;
  112|       |        }
  113|       |        Py_ssize_t shared = _Py_atomic_load_ssize_relaxed(&ob->ob_ref_shared);
  114|       |        return _Py_STATIC_CAST(Py_ssize_t, local) +
  115|       |               Py_ARITHMETIC_RIGHT_SHIFT(Py_ssize_t, shared, _Py_REF_SHARED_SHIFT);
  116|       |    #endif
  117|    105|    }
object.c:Py_XDECREF:
  518|     22|{
  519|     22|    if (op != _Py_NULL) {
  ------------------
  |  |   57|     22|#  define _Py_NULL NULL
  ------------------
  |  Branch (519:9): [True: 4, False: 18]
  ------------------
  520|      4|        Py_DECREF(op);
  ------------------
  |  |  430|      4|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  521|      4|    }
  522|     22|}
object.c:Py_INCREF:
  256|  7.69k|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|  7.69k|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|  7.69k|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 5.23k, False: 2.45k]
  ------------------
  288|       |        // the object is immortal
  289|  5.23k|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|  5.23k|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|  5.23k|        return;
  291|  5.23k|    }
  292|  2.45k|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|  2.45k|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|  2.45k|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|  2.45k|#endif
  308|  2.45k|}
object.c:Py_DECREF:
  418|  7.69k|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|  7.69k|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|  7.69k|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  7.69k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  7.69k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 4.71k, False: 2.97k]
  |  |  ------------------
  ------------------
  422|  4.71k|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|  4.71k|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|  4.71k|        return;
  424|  4.71k|    }
  425|  2.97k|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|  2.97k|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|  2.97k|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 5, False: 2.97k]
  ------------------
  427|      5|        _Py_Dealloc(op);
  428|      5|    }
  429|  2.97k|}
object.c:_Py_NewRef:
  535|     49|{
  536|     49|    Py_INCREF(obj);
  ------------------
  |  |  310|     49|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     49|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     49|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|     49|    return obj;
  538|     49|}
object.c:_Py_IsImmortal:
  127|  15.8k|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|  15.8k|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|  15.8k|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|  15.8k|}
object.c:_Py_IsStaticImmortal:
  141|    749|{
  142|    749|#if defined(Py_GIL_DISABLED) || SIZEOF_VOID_P > 4
  143|    749|    return (op->ob_flags & _Py_STATICALLY_ALLOCATED_FLAG) != 0;
  ------------------
  |  |  583|    749|#define _Py_STATICALLY_ALLOCATED_FLAG (1 << 2)
  ------------------
  144|       |#else
  145|       |    return op->ob_refcnt >= _Py_STATIC_IMMORTAL_MINIMUM_REFCNT;
  146|       |#endif
  147|    749|}
object.c:Py_SET_REFCNT:
  154|     42|static inline void Py_SET_REFCNT(PyObject *ob, Py_ssize_t refcnt) {
  155|     42|    assert(refcnt >= 0);
  ------------------
  |  Branch (155:5): [True: 42, False: 0]
  ------------------
  156|       |#if (defined(Py_LIMITED_API) && Py_LIMITED_API+0 >= 0x030d0000) \
  157|       |    || defined(_Py_OPAQUE_PYOBJECT)
  158|       |    // Stable ABI implements Py_SET_REFCNT() as a function call
  159|       |    // on limited C API version 3.13 and newer, and abi3t.
  160|       |    _Py_SetRefcnt(ob, refcnt);
  161|       |#else
  162|       |    // This immortal check is for code that is unaware of immortal objects.
  163|       |    // The runtime tracks these objects and we should avoid as much
  164|       |    // as possible having extensions inadvertently change the refcnt
  165|       |    // of an immortalized object.
  166|     42|    if (_Py_IsImmortal(ob)) {
  ------------------
  |  |  137|     42|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     42|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     42|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 0, False: 42]
  |  |  ------------------
  ------------------
  167|      0|        return;
  168|      0|    }
  169|     42|#ifndef Py_GIL_DISABLED
  170|     42|#if SIZEOF_VOID_P > 4
  171|     42|    ob->ob_refcnt = (uint32_t)refcnt;
  172|       |#else
  173|       |    ob->ob_refcnt = refcnt;
  174|       |#endif
  175|       |#else
  176|       |    if (_Py_IsOwnedByCurrentThread(ob)) {
  177|       |        if ((size_t)refcnt > (size_t)UINT32_MAX) {
  178|       |            // On overflow, make the object immortal
  179|       |            ob->ob_tid = _Py_UNOWNED_TID;
  180|       |            ob->ob_ref_local = _Py_IMMORTAL_REFCNT_LOCAL;
  181|       |            ob->ob_ref_shared = 0;
  182|       |        }
  183|       |        else {
  184|       |            // Set local refcount to desired refcount and shared refcount
  185|       |            // to zero, but preserve the shared refcount flags.
  186|       |            ob->ob_ref_local = _Py_STATIC_CAST(uint32_t, refcnt);
  187|       |            ob->ob_ref_shared &= _Py_REF_SHARED_FLAG_MASK;
  188|       |        }
  189|       |    }
  190|       |    else {
  191|       |        // Set local refcount to zero and shared refcount to desired refcount.
  192|       |        // Mark the object as merged.
  193|       |        ob->ob_tid = _Py_UNOWNED_TID;
  194|       |        ob->ob_ref_local = 0;
  195|       |        ob->ob_ref_shared = _Py_REF_SHARED(refcnt, _Py_REF_MERGED);
  196|       |    }
  197|       |#endif  // Py_GIL_DISABLED
  198|     42|#endif  // Py_LIMITED_API
  199|     42|}
rangeobject.c:Py_DECREF:
  418|     23|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|     23|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|     23|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     23|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     23|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 17, False: 6]
  |  |  ------------------
  ------------------
  422|     17|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|     17|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|     17|        return;
  424|     17|    }
  425|      6|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|      6|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|      6|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 5, False: 1]
  ------------------
  427|      5|        _Py_Dealloc(op);
  428|      5|    }
  429|      6|}
rangeobject.c:_Py_IsImmortal:
  127|     23|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|     23|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|     23|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|     23|}
rangeobject.c:_Py_NewRef:
  535|      3|{
  536|      3|    Py_INCREF(obj);
  ------------------
  |  |  310|      3|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|      3|    return obj;
  538|      3|}
rangeobject.c:Py_INCREF:
  256|      4|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|      4|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|      4|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 3, False: 1]
  ------------------
  288|       |        // the object is immortal
  289|      3|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|      3|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|      3|        return;
  291|      3|    }
  292|      1|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|      1|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|      1|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|      1|#endif
  308|      1|}
rangeobject.c:Py_XDECREF:
  518|      3|{
  519|      3|    if (op != _Py_NULL) {
  ------------------
  |  |   57|      3|#  define _Py_NULL NULL
  ------------------
  |  Branch (519:9): [True: 3, False: 0]
  ------------------
  520|      3|        Py_DECREF(op);
  ------------------
  |  |  430|      3|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  521|      3|    }
  522|      3|}
setobject.c:Py_DECREF:
  418|    646|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|    646|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|    646|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    646|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    646|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 0, False: 646]
  |  |  ------------------
  ------------------
  422|      0|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|      0|        return;
  424|      0|    }
  425|    646|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|    646|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|    646|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 13, False: 633]
  ------------------
  427|     13|        _Py_Dealloc(op);
  428|     13|    }
  429|    646|}
setobject.c:_Py_IsImmortal:
  127|    646|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|    646|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|    646|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|    646|}
setobject.c:Py_INCREF:
  256|    837|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|    837|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|    837|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 119, False: 718]
  ------------------
  288|       |        // the object is immortal
  289|    119|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|    119|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|    119|        return;
  291|    119|    }
  292|    718|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|    718|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|    718|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|    718|#endif
  308|    718|}
setobject.c:Py_XDECREF:
  518|     31|{
  519|     31|    if (op != _Py_NULL) {
  ------------------
  |  |   57|     31|#  define _Py_NULL NULL
  ------------------
  |  Branch (519:9): [True: 1, False: 30]
  ------------------
  520|      1|        Py_DECREF(op);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  521|      1|    }
  522|     31|}
setobject.c:_Py_REFCNT:
  105|     89|    static inline Py_ssize_t _Py_REFCNT(PyObject *ob) {
  106|     89|    #if !defined(Py_GIL_DISABLED)
  107|     89|        return ob->ob_refcnt;
  108|       |    #else
  109|       |        uint32_t local = _Py_atomic_load_uint32_relaxed(&ob->ob_ref_local);
  110|       |        if (local == _Py_IMMORTAL_REFCNT_LOCAL) {
  111|       |            return _Py_IMMORTAL_INITIAL_REFCNT;
  112|       |        }
  113|       |        Py_ssize_t shared = _Py_atomic_load_ssize_relaxed(&ob->ob_ref_shared);
  114|       |        return _Py_STATIC_CAST(Py_ssize_t, local) +
  115|       |               Py_ARITHMETIC_RIGHT_SHIFT(Py_ssize_t, shared, _Py_REF_SHARED_SHIFT);
  116|       |    #endif
  117|     89|    }
setobject.c:_Py_NewRef:
  535|    833|{
  536|    833|    Py_INCREF(obj);
  ------------------
  |  |  310|    833|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    833|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    833|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|    833|    return obj;
  538|    833|}
sliceobject.c:_Py_NewRef:
  535|    141|{
  536|    141|    Py_INCREF(obj);
  ------------------
  |  |  310|    141|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    141|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    141|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|    141|    return obj;
  538|    141|}
sliceobject.c:Py_INCREF:
  256|    141|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|    141|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|    141|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 141, False: 0]
  ------------------
  288|       |        // the object is immortal
  289|    141|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|    141|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|    141|        return;
  291|    141|    }
  292|      0|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|      0|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|      0|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|      0|#endif
  308|      0|}
sliceobject.c:Py_DECREF:
  418|     24|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|     24|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|     24|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     24|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     24|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 24, False: 0]
  |  |  ------------------
  ------------------
  422|     24|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|     24|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|     24|        return;
  424|     24|    }
  425|      0|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|      0|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 0, False: 0]
  ------------------
  427|      0|        _Py_Dealloc(op);
  428|      0|    }
  429|      0|}
sliceobject.c:_Py_IsImmortal:
  127|     24|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|     24|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|     24|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|     24|}
structseq.c:_Py_IsImmortal:
  127|    348|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|    348|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|    348|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|    348|}
structseq.c:Py_XDECREF:
  518|    266|{
  519|    266|    if (op != _Py_NULL) {
  ------------------
  |  |   57|    266|#  define _Py_NULL NULL
  ------------------
  |  Branch (519:9): [True: 266, False: 0]
  ------------------
  520|    266|        Py_DECREF(op);
  ------------------
  |  |  430|    266|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    266|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    266|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  521|    266|    }
  522|    266|}
structseq.c:Py_DECREF:
  418|    348|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|    348|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|    348|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    348|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    348|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 121, False: 227]
  |  |  ------------------
  ------------------
  422|    121|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|    121|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|    121|        return;
  424|    121|    }
  425|    227|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|    227|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|    227|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 190, False: 37]
  ------------------
  427|    190|        _Py_Dealloc(op);
  428|    190|    }
  429|    227|}
tupleobject.c:_Py_REFCNT:
  105|     17|    static inline Py_ssize_t _Py_REFCNT(PyObject *ob) {
  106|     17|    #if !defined(Py_GIL_DISABLED)
  107|     17|        return ob->ob_refcnt;
  108|       |    #else
  109|       |        uint32_t local = _Py_atomic_load_uint32_relaxed(&ob->ob_ref_local);
  110|       |        if (local == _Py_IMMORTAL_REFCNT_LOCAL) {
  111|       |            return _Py_IMMORTAL_INITIAL_REFCNT;
  112|       |        }
  113|       |        Py_ssize_t shared = _Py_atomic_load_ssize_relaxed(&ob->ob_ref_shared);
  114|       |        return _Py_STATIC_CAST(Py_ssize_t, local) +
  115|       |               Py_ARITHMETIC_RIGHT_SHIFT(Py_ssize_t, shared, _Py_REF_SHARED_SHIFT);
  116|       |    #endif
  117|     17|    }
tupleobject.c:Py_XDECREF:
  518|  7.35k|{
  519|  7.35k|    if (op != _Py_NULL) {
  ------------------
  |  |   57|  7.35k|#  define _Py_NULL NULL
  ------------------
  |  Branch (519:9): [True: 7.34k, False: 12]
  ------------------
  520|  7.34k|        Py_DECREF(op);
  ------------------
  |  |  430|  7.34k|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  7.34k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  7.34k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  521|  7.34k|    }
  522|  7.35k|}
tupleobject.c:_Py_NewRef:
  535|  2.75k|{
  536|  2.75k|    Py_INCREF(obj);
  ------------------
  |  |  310|  2.75k|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  2.75k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.75k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|  2.75k|    return obj;
  538|  2.75k|}
tupleobject.c:Py_INCREF:
  256|  2.76k|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|  2.76k|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|  2.76k|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 1.10k, False: 1.66k]
  ------------------
  288|       |        // the object is immortal
  289|  1.10k|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|  1.10k|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|  1.10k|        return;
  291|  1.10k|    }
  292|  1.66k|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|  1.66k|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|  1.66k|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|  1.66k|#endif
  308|  1.66k|}
tupleobject.c:Py_DECREF:
  418|  7.35k|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|  7.35k|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|  7.35k|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  7.35k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  7.35k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 4.43k, False: 2.91k]
  |  |  ------------------
  ------------------
  422|  4.43k|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|  4.43k|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|  4.43k|        return;
  424|  4.43k|    }
  425|  2.91k|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|  2.91k|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|  2.91k|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 383, False: 2.53k]
  ------------------
  427|    383|        _Py_Dealloc(op);
  428|    383|    }
  429|  2.91k|}
tupleobject.c:_Py_IsImmortal:
  127|  7.35k|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|  7.35k|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|  7.35k|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|  7.35k|}
typeobject.c:_Py_NewRef:
  535|  3.04k|{
  536|  3.04k|    Py_INCREF(obj);
  ------------------
  |  |  310|  3.04k|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  3.04k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  3.04k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|  3.04k|    return obj;
  538|  3.04k|}
typeobject.c:_Py_XNewRef:
  541|    376|{
  542|    376|    Py_XINCREF(obj);
  ------------------
  |  |  514|    376|#  define Py_XINCREF(op) Py_XINCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    376|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    376|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  543|    376|    return obj;
  544|    376|}
typeobject.c:Py_XINCREF:
  508|    463|{
  509|    463|    if (op != _Py_NULL) {
  ------------------
  |  |   57|    463|#  define _Py_NULL NULL
  ------------------
  |  Branch (509:9): [True: 112, False: 351]
  ------------------
  510|    112|        Py_INCREF(op);
  ------------------
  |  |  310|    112|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    112|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    112|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  511|    112|    }
  512|    463|}
typeobject.c:Py_INCREF:
  256|  7.08k|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|  7.08k|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|  7.08k|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 5.40k, False: 1.68k]
  ------------------
  288|       |        // the object is immortal
  289|  5.40k|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|  5.40k|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|  5.40k|        return;
  291|  5.40k|    }
  292|  1.68k|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|  1.68k|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|  1.68k|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|  1.68k|#endif
  308|  1.68k|}
typeobject.c:Py_DECREF:
  418|  6.85k|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|  6.85k|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|  6.85k|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  6.85k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  6.85k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 1.52k, False: 5.32k]
  |  |  ------------------
  ------------------
  422|  1.52k|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|  1.52k|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|  1.52k|        return;
  424|  1.52k|    }
  425|  5.32k|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|  5.32k|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|  5.32k|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 433, False: 4.89k]
  ------------------
  427|    433|        _Py_Dealloc(op);
  428|    433|    }
  429|  5.32k|}
typeobject.c:_Py_IsImmortal:
  127|  22.8k|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|  22.8k|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|  22.8k|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|  22.8k|}
typeobject.c:_Py_REFCNT:
  105|    489|    static inline Py_ssize_t _Py_REFCNT(PyObject *ob) {
  106|    489|    #if !defined(Py_GIL_DISABLED)
  107|    489|        return ob->ob_refcnt;
  108|       |    #else
  109|       |        uint32_t local = _Py_atomic_load_uint32_relaxed(&ob->ob_ref_local);
  110|       |        if (local == _Py_IMMORTAL_REFCNT_LOCAL) {
  111|       |            return _Py_IMMORTAL_INITIAL_REFCNT;
  112|       |        }
  113|       |        Py_ssize_t shared = _Py_atomic_load_ssize_relaxed(&ob->ob_ref_shared);
  114|       |        return _Py_STATIC_CAST(Py_ssize_t, local) +
  115|       |               Py_ARITHMETIC_RIGHT_SHIFT(Py_ssize_t, shared, _Py_REF_SHARED_SHIFT);
  116|       |    #endif
  117|    489|    }
typeobject.c:_Py_IsStaticImmortal:
  141|  22.7k|{
  142|  22.7k|#if defined(Py_GIL_DISABLED) || SIZEOF_VOID_P > 4
  143|  22.7k|    return (op->ob_flags & _Py_STATICALLY_ALLOCATED_FLAG) != 0;
  ------------------
  |  |  583|  22.7k|#define _Py_STATICALLY_ALLOCATED_FLAG (1 << 2)
  ------------------
  144|       |#else
  145|       |    return op->ob_refcnt >= _Py_STATIC_IMMORTAL_MINIMUM_REFCNT;
  146|       |#endif
  147|  22.7k|}
typeobject.c:Py_XDECREF:
  518|  1.50k|{
  519|  1.50k|    if (op != _Py_NULL) {
  ------------------
  |  |   57|  1.50k|#  define _Py_NULL NULL
  ------------------
  |  Branch (519:9): [True: 340, False: 1.16k]
  ------------------
  520|    340|        Py_DECREF(op);
  ------------------
  |  |  430|    340|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    340|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    340|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  521|    340|    }
  522|  1.50k|}
unicode_writer.c:Py_DECREF:
  418|      2|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|      2|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|      2|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  422|      0|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|      0|        return;
  424|      0|    }
  425|      2|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|      2|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|      2|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 2, False: 0]
  ------------------
  427|      2|        _Py_Dealloc(op);
  428|      2|    }
  429|      2|}
unicode_writer.c:_Py_IsImmortal:
  127|      2|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|      2|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|      2|}
unicodeobject.c:Py_DECREF:
  418|  14.4k|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|  14.4k|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|  14.4k|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  14.4k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  14.4k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 73, False: 14.3k]
  |  |  ------------------
  ------------------
  422|     73|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|     73|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|     73|        return;
  424|     73|    }
  425|  14.3k|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|  14.3k|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|  14.3k|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 3.89k, False: 10.4k]
  ------------------
  427|  3.89k|        _Py_Dealloc(op);
  428|  3.89k|    }
  429|  14.3k|}
unicodeobject.c:_Py_IsImmortal:
  127|  38.0k|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|  38.0k|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|  38.0k|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|  38.0k|}
unicodeobject.c:_Py_REFCNT:
  105|     41|    static inline Py_ssize_t _Py_REFCNT(PyObject *ob) {
  106|     41|    #if !defined(Py_GIL_DISABLED)
  107|     41|        return ob->ob_refcnt;
  108|       |    #else
  109|       |        uint32_t local = _Py_atomic_load_uint32_relaxed(&ob->ob_ref_local);
  110|       |        if (local == _Py_IMMORTAL_REFCNT_LOCAL) {
  111|       |            return _Py_IMMORTAL_INITIAL_REFCNT;
  112|       |        }
  113|       |        Py_ssize_t shared = _Py_atomic_load_ssize_relaxed(&ob->ob_ref_shared);
  114|       |        return _Py_STATIC_CAST(Py_ssize_t, local) +
  115|       |               Py_ARITHMETIC_RIGHT_SHIFT(Py_ssize_t, shared, _Py_REF_SHARED_SHIFT);
  116|       |    #endif
  117|     41|    }
unicodeobject.c:_Py_NewRef:
  535|  2.83k|{
  536|  2.83k|    Py_INCREF(obj);
  ------------------
  |  |  310|  2.83k|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  2.83k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.83k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|  2.83k|    return obj;
  538|  2.83k|}
unicodeobject.c:Py_XDECREF:
  518|     72|{
  519|     72|    if (op != _Py_NULL) {
  ------------------
  |  |   57|     72|#  define _Py_NULL NULL
  ------------------
  |  Branch (519:9): [True: 70, False: 2]
  ------------------
  520|     70|        Py_DECREF(op);
  ------------------
  |  |  430|     70|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     70|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     70|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  521|     70|    }
  522|     72|}
unicodeobject.c:Py_INCREF:
  256|  12.8k|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|  12.8k|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|  12.8k|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 12.7k, False: 97]
  ------------------
  288|       |        // the object is immortal
  289|  12.7k|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|  12.7k|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|  12.7k|        return;
  291|  12.7k|    }
  292|     97|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|     97|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|     97|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|     97|#endif
  308|     97|}
weakrefobject.c:Py_INCREF:
  256|    334|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|    334|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|    334|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 86, False: 248]
  ------------------
  288|       |        // the object is immortal
  289|     86|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|     86|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|     86|        return;
  291|     86|    }
  292|    248|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|    248|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|    248|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|    248|#endif
  308|    248|}
weakrefobject.c:_Py_XNewRef:
  541|    472|{
  542|    472|    Py_XINCREF(obj);
  ------------------
  |  |  514|    472|#  define Py_XINCREF(op) Py_XINCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    472|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    472|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  543|    472|    return obj;
  544|    472|}
weakrefobject.c:Py_XINCREF:
  508|    472|{
  509|    472|    if (op != _Py_NULL) {
  ------------------
  |  |   57|    472|#  define _Py_NULL NULL
  ------------------
  |  Branch (509:9): [True: 106, False: 366]
  ------------------
  510|    106|        Py_INCREF(op);
  ------------------
  |  |  310|    106|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    106|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    106|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  511|    106|    }
  512|    472|}
weakrefobject.c:Py_DECREF:
  418|    187|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|    187|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|    187|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    187|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    187|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 125, False: 62]
  |  |  ------------------
  ------------------
  422|    125|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|    125|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|    125|        return;
  424|    125|    }
  425|     62|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|     62|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|     62|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 62, False: 0]
  ------------------
  427|     62|        _Py_Dealloc(op);
  428|     62|    }
  429|     62|}
weakrefobject.c:_Py_IsImmortal:
  127|    187|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|    187|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|    187|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|    187|}
weakrefobject.c:_Py_REFCNT:
  105|    436|    static inline Py_ssize_t _Py_REFCNT(PyObject *ob) {
  106|    436|    #if !defined(Py_GIL_DISABLED)
  107|    436|        return ob->ob_refcnt;
  108|       |    #else
  109|       |        uint32_t local = _Py_atomic_load_uint32_relaxed(&ob->ob_ref_local);
  110|       |        if (local == _Py_IMMORTAL_REFCNT_LOCAL) {
  111|       |            return _Py_IMMORTAL_INITIAL_REFCNT;
  112|       |        }
  113|       |        Py_ssize_t shared = _Py_atomic_load_ssize_relaxed(&ob->ob_ref_shared);
  114|       |        return _Py_STATIC_CAST(Py_ssize_t, local) +
  115|       |               Py_ARITHMETIC_RIGHT_SHIFT(Py_ssize_t, shared, _Py_REF_SHARED_SHIFT);
  116|       |    #endif
  117|    436|    }
weakrefobject.c:Py_XDECREF:
  518|    125|{
  519|    125|    if (op != _Py_NULL) {
  ------------------
  |  |   57|    125|#  define _Py_NULL NULL
  ------------------
  |  Branch (519:9): [True: 8, False: 117]
  ------------------
  520|      8|        Py_DECREF(op);
  ------------------
  |  |  430|      8|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      8|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  521|      8|    }
  522|    125|}
_warnings.c:_Py_NewRef:
  535|      4|{
  536|      4|    Py_INCREF(obj);
  ------------------
  |  |  310|      4|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|      4|    return obj;
  538|      4|}
_warnings.c:Py_INCREF:
  256|      4|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|      4|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|      4|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 4, False: 0]
  ------------------
  288|       |        // the object is immortal
  289|      4|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|      4|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|      4|        return;
  291|      4|    }
  292|      0|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|      0|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|      0|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|      0|#endif
  308|      0|}
_warnings.c:Py_DECREF:
  418|      5|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|      5|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|      5|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 5, False: 0]
  |  |  ------------------
  ------------------
  422|      5|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|      5|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|      5|        return;
  424|      5|    }
  425|      0|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|      0|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 0, False: 0]
  ------------------
  427|      0|        _Py_Dealloc(op);
  428|      0|    }
  429|      0|}
_warnings.c:_Py_IsImmortal:
  127|      5|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|      5|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|      5|}
bltinmodule.c:Py_XDECREF:
  518|    339|{
  519|    339|    if (op != _Py_NULL) {
  ------------------
  |  |   57|    339|#  define _Py_NULL NULL
  ------------------
  |  Branch (519:9): [True: 265, False: 74]
  ------------------
  520|    265|        Py_DECREF(op);
  ------------------
  |  |  430|    265|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    265|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    265|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  521|    265|    }
  522|    339|}
bltinmodule.c:_Py_NewRef:
  535|     64|{
  536|     64|    Py_INCREF(obj);
  ------------------
  |  |  310|     64|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     64|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     64|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|     64|    return obj;
  538|     64|}
bltinmodule.c:Py_INCREF:
  256|    158|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|    158|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|    158|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 87, False: 71]
  ------------------
  288|       |        // the object is immortal
  289|     87|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|     87|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|     87|        return;
  291|     87|    }
  292|     71|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|     71|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|     71|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|     71|#endif
  308|     71|}
bltinmodule.c:_Py_XNewRef:
  541|      6|{
  542|      6|    Py_XINCREF(obj);
  ------------------
  |  |  514|      6|#  define Py_XINCREF(op) Py_XINCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      6|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  543|      6|    return obj;
  544|      6|}
bltinmodule.c:Py_XINCREF:
  508|      6|{
  509|      6|    if (op != _Py_NULL) {
  ------------------
  |  |   57|      6|#  define _Py_NULL NULL
  ------------------
  |  Branch (509:9): [True: 6, False: 0]
  ------------------
  510|      6|        Py_INCREF(op);
  ------------------
  |  |  310|      6|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      6|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  511|      6|    }
  512|      6|}
bltinmodule.c:_Py_IsImmortal:
  127|    566|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|    566|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|    566|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|    566|}
bltinmodule.c:Py_DECREF:
  418|    566|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|    566|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|    566|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    566|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    566|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 210, False: 356]
  |  |  ------------------
  ------------------
  422|    210|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|    210|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|    210|        return;
  424|    210|    }
  425|    356|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|    356|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|    356|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 191, False: 165]
  ------------------
  427|    191|        _Py_Dealloc(op);
  428|    191|    }
  429|    356|}
ceval.c:_Py_IsImmortal:
  127|  14.1k|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|  14.1k|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|  14.1k|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|  14.1k|}
ceval.c:_Py_NewRef:
  535|  2.21k|{
  536|  2.21k|    Py_INCREF(obj);
  ------------------
  |  |  310|  2.21k|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  2.21k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.21k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|  2.21k|    return obj;
  538|  2.21k|}
ceval.c:_Py_IsStaticImmortal:
  141|  19.0k|{
  142|  19.0k|#if defined(Py_GIL_DISABLED) || SIZEOF_VOID_P > 4
  143|  19.0k|    return (op->ob_flags & _Py_STATICALLY_ALLOCATED_FLAG) != 0;
  ------------------
  |  |  583|  19.0k|#define _Py_STATICALLY_ALLOCATED_FLAG (1 << 2)
  ------------------
  144|       |#else
  145|       |    return op->ob_refcnt >= _Py_STATIC_IMMORTAL_MINIMUM_REFCNT;
  146|       |#endif
  147|  19.0k|}
ceval.c:_Py_REFCNT:
  105|     17|    static inline Py_ssize_t _Py_REFCNT(PyObject *ob) {
  106|     17|    #if !defined(Py_GIL_DISABLED)
  107|     17|        return ob->ob_refcnt;
  108|       |    #else
  109|       |        uint32_t local = _Py_atomic_load_uint32_relaxed(&ob->ob_ref_local);
  110|       |        if (local == _Py_IMMORTAL_REFCNT_LOCAL) {
  111|       |            return _Py_IMMORTAL_INITIAL_REFCNT;
  112|       |        }
  113|       |        Py_ssize_t shared = _Py_atomic_load_ssize_relaxed(&ob->ob_ref_shared);
  114|       |        return _Py_STATIC_CAST(Py_ssize_t, local) +
  115|       |               Py_ARITHMETIC_RIGHT_SHIFT(Py_ssize_t, shared, _Py_REF_SHARED_SHIFT);
  116|       |    #endif
  117|     17|    }
ceval.c:Py_INCREF:
  256|  2.91k|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|  2.91k|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|  2.91k|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 1.77k, False: 1.14k]
  ------------------
  288|       |        // the object is immortal
  289|  1.77k|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|  1.77k|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|  1.77k|        return;
  291|  1.77k|    }
  292|  1.14k|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|  1.14k|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|  1.14k|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|  1.14k|#endif
  308|  1.14k|}
ceval.c:Py_XDECREF:
  518|     91|{
  519|     91|    if (op != _Py_NULL) {
  ------------------
  |  |   57|     91|#  define _Py_NULL NULL
  ------------------
  |  Branch (519:9): [True: 9, False: 82]
  ------------------
  520|      9|        Py_DECREF(op);
  ------------------
  |  |  430|      9|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      9|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      9|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  521|      9|    }
  522|     91|}
ceval.c:Py_DECREF:
  418|      9|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|      9|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|      9|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      9|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      9|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 0, False: 9]
  |  |  ------------------
  ------------------
  422|      0|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|      0|        return;
  424|      0|    }
  425|      9|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|      9|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|      9|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 2, False: 7]
  ------------------
  427|      2|        _Py_Dealloc(op);
  428|      2|    }
  429|      9|}
ceval.c:Py_XINCREF:
  508|    609|{
  509|    609|    if (op != _Py_NULL) {
  ------------------
  |  |   57|    609|#  define _Py_NULL NULL
  ------------------
  |  Branch (509:9): [True: 291, False: 318]
  ------------------
  510|    291|        Py_INCREF(op);
  ------------------
  |  |  310|    291|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    291|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    291|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  511|    291|    }
  512|    609|}
ceval.c:_Py_XNewRef:
  541|    191|{
  542|    191|    Py_XINCREF(obj);
  ------------------
  |  |  514|    191|#  define Py_XINCREF(op) Py_XINCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    191|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    191|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  543|    191|    return obj;
  544|    191|}
codecs.c:Py_DECREF:
  418|     22|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|     22|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|     22|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     22|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     22|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 9, False: 13]
  |  |  ------------------
  ------------------
  422|      9|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|      9|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|      9|        return;
  424|      9|    }
  425|     13|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|     13|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|     13|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 0, False: 13]
  ------------------
  427|      0|        _Py_Dealloc(op);
  428|      0|    }
  429|     13|}
codecs.c:_Py_IsImmortal:
  127|     22|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|     22|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|     22|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|     22|}
context.c:_Py_NewRef:
  535|      1|{
  536|      1|    Py_INCREF(obj);
  ------------------
  |  |  310|      1|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|      1|    return obj;
  538|      1|}
context.c:Py_INCREF:
  256|      1|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|      1|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|      1|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 0, False: 1]
  ------------------
  288|       |        // the object is immortal
  289|      0|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|      0|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|      0|        return;
  291|      0|    }
  292|      1|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|      1|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|      1|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|      1|#endif
  308|      1|}
context.c:Py_DECREF:
  418|      2|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|      2|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|      2|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 1, False: 1]
  |  |  ------------------
  ------------------
  422|      1|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|      1|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|      1|        return;
  424|      1|    }
  425|      1|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|      1|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|      1|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 0, False: 1]
  ------------------
  427|      0|        _Py_Dealloc(op);
  428|      0|    }
  429|      1|}
context.c:_Py_IsImmortal:
  127|      2|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|      2|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|      2|}
context.c:Py_XINCREF:
  508|      1|{
  509|      1|    if (op != _Py_NULL) {
  ------------------
  |  |   57|      1|#  define _Py_NULL NULL
  ------------------
  |  Branch (509:9): [True: 0, False: 1]
  ------------------
  510|      0|        Py_INCREF(op);
  ------------------
  |  |  310|      0|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  511|      0|    }
  512|      1|}
context.c:_Py_XNewRef:
  541|      1|{
  542|      1|    Py_XINCREF(obj);
  ------------------
  |  |  514|      1|#  define Py_XINCREF(op) Py_XINCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  543|      1|    return obj;
  544|      1|}
errors.c:Py_XDECREF:
  518|    640|{
  519|    640|    if (op != _Py_NULL) {
  ------------------
  |  |   57|    640|#  define _Py_NULL NULL
  ------------------
  |  Branch (519:9): [True: 67, False: 573]
  ------------------
  520|     67|        Py_DECREF(op);
  ------------------
  |  |  430|     67|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     67|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     67|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  521|     67|    }
  522|    640|}
errors.c:Py_DECREF:
  418|    292|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|    292|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|    292|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    292|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    292|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 123, False: 169]
  |  |  ------------------
  ------------------
  422|    123|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|    123|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|    123|        return;
  424|    123|    }
  425|    169|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|    169|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|    169|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 33, False: 136]
  ------------------
  427|     33|        _Py_Dealloc(op);
  428|     33|    }
  429|    169|}
errors.c:_Py_IsImmortal:
  127|    292|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|    292|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|    292|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|    292|}
errors.c:Py_XINCREF:
  508|    114|{
  509|    114|    if (op != _Py_NULL) {
  ------------------
  |  |   57|    114|#  define _Py_NULL NULL
  ------------------
  |  Branch (509:9): [True: 114, False: 0]
  ------------------
  510|    114|        Py_INCREF(op);
  ------------------
  |  |  310|    114|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    114|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    114|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  511|    114|    }
  512|    114|}
errors.c:Py_INCREF:
  256|    238|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|    238|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|    238|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 123, False: 115]
  ------------------
  288|       |        // the object is immortal
  289|    123|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|    123|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|    123|        return;
  291|    123|    }
  292|    115|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|    115|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|    115|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|    115|#endif
  308|    115|}
errors.c:_Py_NewRef:
  535|    115|{
  536|    115|    Py_INCREF(obj);
  ------------------
  |  |  310|    115|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    115|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    115|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|    115|    return obj;
  538|    115|}
frame.c:_Py_IsStaticImmortal:
  141|  4.38k|{
  142|  4.38k|#if defined(Py_GIL_DISABLED) || SIZEOF_VOID_P > 4
  143|  4.38k|    return (op->ob_flags & _Py_STATICALLY_ALLOCATED_FLAG) != 0;
  ------------------
  |  |  583|  4.38k|#define _Py_STATICALLY_ALLOCATED_FLAG (1 << 2)
  ------------------
  144|       |#else
  145|       |    return op->ob_refcnt >= _Py_STATIC_IMMORTAL_MINIMUM_REFCNT;
  146|       |#endif
  147|  4.38k|}
frame.c:Py_DECREF:
  418|    193|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|    193|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|    193|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    193|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    193|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 0, False: 193]
  |  |  ------------------
  ------------------
  422|      0|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|      0|        return;
  424|      0|    }
  425|    193|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|    193|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|    193|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 79, False: 114]
  ------------------
  427|     79|        _Py_Dealloc(op);
  428|     79|    }
  429|    193|}
frame.c:_Py_IsImmortal:
  127|    214|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|    214|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|    214|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|    214|}
frame.c:_Py_REFCNT:
  105|     93|    static inline Py_ssize_t _Py_REFCNT(PyObject *ob) {
  106|     93|    #if !defined(Py_GIL_DISABLED)
  107|     93|        return ob->ob_refcnt;
  108|       |    #else
  109|       |        uint32_t local = _Py_atomic_load_uint32_relaxed(&ob->ob_ref_local);
  110|       |        if (local == _Py_IMMORTAL_REFCNT_LOCAL) {
  111|       |            return _Py_IMMORTAL_INITIAL_REFCNT;
  112|       |        }
  113|       |        Py_ssize_t shared = _Py_atomic_load_ssize_relaxed(&ob->ob_ref_shared);
  114|       |        return _Py_STATIC_CAST(Py_ssize_t, local) +
  115|       |               Py_ARITHMETIC_RIGHT_SHIFT(Py_ssize_t, shared, _Py_REF_SHARED_SHIFT);
  116|       |    #endif
  117|     93|    }
frame.c:Py_INCREF:
  256|     20|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|     20|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|     20|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 0, False: 20]
  ------------------
  288|       |        // the object is immortal
  289|      0|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|      0|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|      0|        return;
  291|      0|    }
  292|     20|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|     20|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|     20|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|     20|#endif
  308|     20|}
frame.c:_Py_NewRef:
  535|     14|{
  536|     14|    Py_INCREF(obj);
  ------------------
  |  |  310|     14|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     14|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     14|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|     14|    return obj;
  538|     14|}
gc.c:Py_DECREF:
  418|      6|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|      6|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|      6|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      6|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 0, False: 6]
  |  |  ------------------
  ------------------
  422|      0|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|      0|        return;
  424|      0|    }
  425|      6|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|      6|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|      6|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 5, False: 1]
  ------------------
  427|      5|        _Py_Dealloc(op);
  428|      5|    }
  429|      6|}
gc.c:_Py_IsImmortal:
  127|  10.0k|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|  10.0k|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|  10.0k|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|  10.0k|}
gc.c:Py_INCREF:
  256|  4.95k|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|  4.95k|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|  4.95k|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 4.94k, False: 16]
  ------------------
  288|       |        // the object is immortal
  289|  4.94k|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|  4.94k|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|  4.94k|        return;
  291|  4.94k|    }
  292|     16|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|     16|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|     16|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|     16|#endif
  308|     16|}
gc.c:_Py_REFCNT:
  105|  5.09k|    static inline Py_ssize_t _Py_REFCNT(PyObject *ob) {
  106|  5.09k|    #if !defined(Py_GIL_DISABLED)
  107|  5.09k|        return ob->ob_refcnt;
  108|       |    #else
  109|       |        uint32_t local = _Py_atomic_load_uint32_relaxed(&ob->ob_ref_local);
  110|       |        if (local == _Py_IMMORTAL_REFCNT_LOCAL) {
  111|       |            return _Py_IMMORTAL_INITIAL_REFCNT;
  112|       |        }
  113|       |        Py_ssize_t shared = _Py_atomic_load_ssize_relaxed(&ob->ob_ref_shared);
  114|       |        return _Py_STATIC_CAST(Py_ssize_t, local) +
  115|       |               Py_ARITHMETIC_RIGHT_SHIFT(Py_ssize_t, shared, _Py_REF_SHARED_SHIFT);
  116|       |    #endif
  117|  5.09k|    }
gc.c:Py_XDECREF:
  518|      4|{
  519|      4|    if (op != _Py_NULL) {
  ------------------
  |  |   57|      4|#  define _Py_NULL NULL
  ------------------
  |  Branch (519:9): [True: 0, False: 4]
  ------------------
  520|      0|        Py_DECREF(op);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  521|      0|    }
  522|      4|}
getargs.c:_Py_NewRef:
  535|      2|{
  536|      2|    Py_INCREF(obj);
  ------------------
  |  |  310|      2|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|      2|    return obj;
  538|      2|}
getargs.c:Py_INCREF:
  256|      2|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|      2|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|      2|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 1, False: 1]
  ------------------
  288|       |        // the object is immortal
  289|      1|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|      1|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|      1|        return;
  291|      1|    }
  292|      1|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|      1|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|      1|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|      1|#endif
  308|      1|}
getargs.c:Py_DECREF:
  418|      9|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|      9|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|      9|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      9|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      9|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 3, False: 6]
  |  |  ------------------
  ------------------
  422|      3|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|      3|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|      3|        return;
  424|      3|    }
  425|      6|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|      6|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|      6|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 0, False: 6]
  ------------------
  427|      0|        _Py_Dealloc(op);
  428|      0|    }
  429|      6|}
getargs.c:_Py_IsImmortal:
  127|      9|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|      9|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|      9|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|      9|}
import.c:Py_INCREF:
  256|    315|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|    315|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|    315|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 71, False: 244]
  ------------------
  288|       |        // the object is immortal
  289|     71|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|     71|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|     71|        return;
  291|     71|    }
  292|    244|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|    244|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|    244|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|    244|#endif
  308|    244|}
import.c:Py_DECREF:
  418|    590|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|    590|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|    590|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    590|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    590|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 91, False: 499]
  |  |  ------------------
  ------------------
  422|     91|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|     91|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|     91|        return;
  424|     91|    }
  425|    499|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|    499|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|    499|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 31, False: 468]
  ------------------
  427|     31|        _Py_Dealloc(op);
  428|     31|    }
  429|    499|}
import.c:_Py_IsImmortal:
  127|    590|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|    590|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|    590|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|    590|}
import.c:Py_XDECREF:
  518|    272|{
  519|    272|    if (op != _Py_NULL) {
  ------------------
  |  |   57|    272|#  define _Py_NULL NULL
  ------------------
  |  Branch (519:9): [True: 212, False: 60]
  ------------------
  520|    212|        Py_DECREF(op);
  ------------------
  |  |  430|    212|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    212|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    212|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  521|    212|    }
  522|    272|}
import.c:_Py_REFCNT:
  105|      1|    static inline Py_ssize_t _Py_REFCNT(PyObject *ob) {
  106|      1|    #if !defined(Py_GIL_DISABLED)
  107|      1|        return ob->ob_refcnt;
  108|       |    #else
  109|       |        uint32_t local = _Py_atomic_load_uint32_relaxed(&ob->ob_ref_local);
  110|       |        if (local == _Py_IMMORTAL_REFCNT_LOCAL) {
  111|       |            return _Py_IMMORTAL_INITIAL_REFCNT;
  112|       |        }
  113|       |        Py_ssize_t shared = _Py_atomic_load_ssize_relaxed(&ob->ob_ref_shared);
  114|       |        return _Py_STATIC_CAST(Py_ssize_t, local) +
  115|       |               Py_ARITHMETIC_RIGHT_SHIFT(Py_ssize_t, shared, _Py_REF_SHARED_SHIFT);
  116|       |    #endif
  117|      1|    }
import.c:Py_XINCREF:
  508|      8|{
  509|      8|    if (op != _Py_NULL) {
  ------------------
  |  |   57|      8|#  define _Py_NULL NULL
  ------------------
  |  Branch (509:9): [True: 2, False: 6]
  ------------------
  510|      2|        Py_INCREF(op);
  ------------------
  |  |  310|      2|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  511|      2|    }
  512|      8|}
import.c:_Py_NewRef:
  535|    161|{
  536|    161|    Py_INCREF(obj);
  ------------------
  |  |  310|    161|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    161|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    161|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|    161|    return obj;
  538|    161|}
import.c:_Py_XNewRef:
  541|      8|{
  542|      8|    Py_XINCREF(obj);
  ------------------
  |  |  514|      8|#  define Py_XINCREF(op) Py_XINCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      8|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  543|      8|    return obj;
  544|      8|}
importdl.c:Py_DECREF:
  418|     24|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|     24|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|     24|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     24|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     24|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 11, False: 13]
  |  |  ------------------
  ------------------
  422|     11|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|     11|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|     11|        return;
  424|     11|    }
  425|     13|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|     13|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|     13|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 12, False: 1]
  ------------------
  427|     12|        _Py_Dealloc(op);
  428|     12|    }
  429|     13|}
importdl.c:_Py_IsImmortal:
  127|     24|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|     24|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|     24|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|     24|}
importdl.c:_Py_NewRef:
  535|     12|{
  536|     12|    Py_INCREF(obj);
  ------------------
  |  |  310|     12|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     12|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     12|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|     12|    return obj;
  538|     12|}
importdl.c:Py_INCREF:
  256|     12|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|     12|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|     12|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 11, False: 1]
  ------------------
  288|       |        // the object is immortal
  289|     11|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|     11|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|     11|        return;
  291|     11|    }
  292|      1|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|      1|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|      1|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|      1|#endif
  308|      1|}
initconfig.c:Py_DECREF:
  418|    142|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|    142|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|    142|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    142|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    142|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 115, False: 27]
  |  |  ------------------
  ------------------
  422|    115|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|    115|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|    115|        return;
  424|    115|    }
  425|     27|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|     27|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|     27|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 0, False: 27]
  ------------------
  427|      0|        _Py_Dealloc(op);
  428|      0|    }
  429|     27|}
initconfig.c:_Py_IsImmortal:
  127|    142|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|    142|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|    142|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|    142|}
initconfig.c:_Py_NewRef:
  535|     16|{
  536|     16|    Py_INCREF(obj);
  ------------------
  |  |  310|     16|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     16|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     16|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|     16|    return obj;
  538|     16|}
initconfig.c:Py_INCREF:
  256|     16|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|     16|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|     16|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 16, False: 0]
  ------------------
  288|       |        // the object is immortal
  289|     16|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|     16|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|     16|        return;
  291|     16|    }
  292|      0|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|      0|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|      0|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|      0|#endif
  308|      0|}
instrumentation.c:Py_DECREF:
  418|     24|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|     24|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|     24|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     24|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     24|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 15, False: 9]
  |  |  ------------------
  ------------------
  422|     15|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|     15|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|     15|        return;
  424|     15|    }
  425|      9|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|      9|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|      9|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 0, False: 9]
  ------------------
  427|      0|        _Py_Dealloc(op);
  428|      0|    }
  429|      9|}
instrumentation.c:_Py_IsImmortal:
  127|     24|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|     24|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|     24|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|     24|}
intrinsics.c:Py_DECREF:
  418|  1.01k|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|  1.01k|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|  1.01k|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  1.01k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.01k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 513, False: 501]
  |  |  ------------------
  ------------------
  422|    513|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|    513|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|    513|        return;
  424|    513|    }
  425|    501|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|    501|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|    501|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 3, False: 498]
  ------------------
  427|      3|        _Py_Dealloc(op);
  428|      3|    }
  429|    501|}
intrinsics.c:_Py_IsImmortal:
  127|  1.01k|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|  1.01k|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|  1.01k|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|  1.01k|}
intrinsics.c:Py_XDECREF:
  518|    489|{
  519|    489|    if (op != _Py_NULL) {
  ------------------
  |  |   57|    489|#  define _Py_NULL NULL
  ------------------
  |  Branch (519:9): [True: 489, False: 0]
  ------------------
  520|    489|        Py_DECREF(op);
  ------------------
  |  |  430|    489|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    489|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    489|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  521|    489|    }
  522|    489|}
intrinsics.c:_Py_REFCNT:
  105|      4|    static inline Py_ssize_t _Py_REFCNT(PyObject *ob) {
  106|      4|    #if !defined(Py_GIL_DISABLED)
  107|      4|        return ob->ob_refcnt;
  108|       |    #else
  109|       |        uint32_t local = _Py_atomic_load_uint32_relaxed(&ob->ob_ref_local);
  110|       |        if (local == _Py_IMMORTAL_REFCNT_LOCAL) {
  111|       |            return _Py_IMMORTAL_INITIAL_REFCNT;
  112|       |        }
  113|       |        Py_ssize_t shared = _Py_atomic_load_ssize_relaxed(&ob->ob_ref_shared);
  114|       |        return _Py_STATIC_CAST(Py_ssize_t, local) +
  115|       |               Py_ARITHMETIC_RIGHT_SHIFT(Py_ssize_t, shared, _Py_REF_SHARED_SHIFT);
  116|       |    #endif
  117|      4|    }
marshal.c:Py_XDECREF:
  518|  7.57k|{
  519|  7.57k|    if (op != _Py_NULL) {
  ------------------
  |  |   57|  7.57k|#  define _Py_NULL NULL
  ------------------
  |  Branch (519:9): [True: 7.57k, False: 0]
  ------------------
  520|  7.57k|        Py_DECREF(op);
  ------------------
  |  |  430|  7.57k|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  7.57k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  7.57k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  521|  7.57k|    }
  522|  7.57k|}
marshal.c:_Py_NewRef:
  535|  7.87k|{
  536|  7.87k|    Py_INCREF(obj);
  ------------------
  |  |  310|  7.87k|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  7.87k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  7.87k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|  7.87k|    return obj;
  538|  7.87k|}
marshal.c:Py_INCREF:
  256|  7.87k|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|  7.87k|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|  7.87k|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 7.08k, False: 790]
  ------------------
  288|       |        // the object is immortal
  289|  7.08k|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|  7.08k|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|  7.08k|        return;
  291|  7.08k|    }
  292|    790|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|    790|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|    790|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|    790|#endif
  308|    790|}
marshal.c:Py_DECREF:
  418|  7.60k|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|  7.60k|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|  7.60k|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  7.60k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  7.60k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 3.11k, False: 4.49k]
  |  |  ------------------
  ------------------
  422|  3.11k|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|  3.11k|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|  3.11k|        return;
  424|  3.11k|    }
  425|  4.49k|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|  4.49k|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|  4.49k|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 16, False: 4.48k]
  ------------------
  427|     16|        _Py_Dealloc(op);
  428|     16|    }
  429|  4.49k|}
marshal.c:_Py_IsImmortal:
  127|  7.60k|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|  7.60k|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|  7.60k|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|  7.60k|}
modsupport.c:Py_INCREF:
  256|     92|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|     92|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|     92|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 29, False: 63]
  ------------------
  288|       |        // the object is immortal
  289|     29|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|     29|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|     29|        return;
  291|     29|    }
  292|     63|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|     63|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|     63|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|     63|#endif
  308|     63|}
modsupport.c:Py_XDECREF:
  518|    254|{
  519|    254|    if (op != _Py_NULL) {
  ------------------
  |  |   57|    254|#  define _Py_NULL NULL
  ------------------
  |  Branch (519:9): [True: 254, False: 0]
  ------------------
  520|    254|        Py_DECREF(op);
  ------------------
  |  |  430|    254|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    254|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    254|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  521|    254|    }
  522|    254|}
modsupport.c:Py_DECREF:
  418|    256|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|    256|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|    256|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    256|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    256|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 173, False: 83]
  |  |  ------------------
  ------------------
  422|    173|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|    173|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|    173|        return;
  424|    173|    }
  425|     83|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|     83|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|     83|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 0, False: 83]
  ------------------
  427|      0|        _Py_Dealloc(op);
  428|      0|    }
  429|     83|}
modsupport.c:_Py_IsImmortal:
  127|    256|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|    256|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|    256|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|    256|}
pylifecycle.c:_Py_NewRef:
  535|      1|{
  536|      1|    Py_INCREF(obj);
  ------------------
  |  |  310|      1|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|      1|    return obj;
  538|      1|}
pylifecycle.c:Py_INCREF:
  256|      1|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|      1|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|      1|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 0, False: 1]
  ------------------
  288|       |        // the object is immortal
  289|      0|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|      0|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|      0|        return;
  291|      0|    }
  292|      1|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|      1|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|      1|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|      1|#endif
  308|      1|}
pylifecycle.c:Py_DECREF:
  418|     36|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|     36|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|     36|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     36|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     36|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 7, False: 29]
  |  |  ------------------
  ------------------
  422|      7|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|      7|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|      7|        return;
  424|      7|    }
  425|     29|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|     29|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|     29|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 3, False: 26]
  ------------------
  427|      3|        _Py_Dealloc(op);
  428|      3|    }
  429|     29|}
pylifecycle.c:_Py_IsImmortal:
  127|     36|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|     36|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|     36|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|     36|}
pylifecycle.c:Py_XDECREF:
  518|      6|{
  519|      6|    if (op != _Py_NULL) {
  ------------------
  |  |   57|      6|#  define _Py_NULL NULL
  ------------------
  |  Branch (519:9): [True: 6, False: 0]
  ------------------
  520|      6|        Py_DECREF(op);
  ------------------
  |  |  430|      6|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      6|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  521|      6|    }
  522|      6|}
specialize.c:Py_XDECREF:
  518|    246|{
  519|    246|    if (op != _Py_NULL) {
  ------------------
  |  |   57|    246|#  define _Py_NULL NULL
  ------------------
  |  Branch (519:9): [True: 100, False: 146]
  ------------------
  520|    100|        Py_DECREF(op);
  ------------------
  |  |  430|    100|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    100|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    100|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  521|    100|    }
  522|    246|}
specialize.c:Py_DECREF:
  418|    105|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|    105|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|    105|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    105|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    105|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 2, False: 103]
  |  |  ------------------
  ------------------
  422|      2|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|      2|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|      2|        return;
  424|      2|    }
  425|    103|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|    103|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|    103|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 0, False: 103]
  ------------------
  427|      0|        _Py_Dealloc(op);
  428|      0|    }
  429|    103|}
specialize.c:_Py_IsImmortal:
  127|    105|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|    105|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|    105|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|    105|}
structmember.c:Py_INCREF:
  256|    250|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|    250|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|    250|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 94, False: 156]
  ------------------
  288|       |        // the object is immortal
  289|     94|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|     94|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|     94|        return;
  291|     94|    }
  292|    156|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|    156|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|    156|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|    156|#endif
  308|    156|}
structmember.c:Py_XINCREF:
  508|     69|{
  509|     69|    if (op != _Py_NULL) {
  ------------------
  |  |   57|     69|#  define _Py_NULL NULL
  ------------------
  |  Branch (509:9): [True: 69, False: 0]
  ------------------
  510|     69|        Py_INCREF(op);
  ------------------
  |  |  310|     69|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     69|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     69|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  511|     69|    }
  512|     69|}
structmember.c:Py_DECREF:
  418|     19|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|     19|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|     19|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     19|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     19|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 13, False: 6]
  |  |  ------------------
  ------------------
  422|     13|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|     13|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|     13|        return;
  424|     13|    }
  425|      6|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|      6|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|      6|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 0, False: 6]
  ------------------
  427|      0|        _Py_Dealloc(op);
  428|      0|    }
  429|      6|}
structmember.c:_Py_IsImmortal:
  127|     19|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|     19|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|     19|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|     19|}
structmember.c:_Py_XNewRef:
  541|     65|{
  542|     65|    Py_XINCREF(obj);
  ------------------
  |  |  514|     65|#  define Py_XINCREF(op) Py_XINCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     65|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     65|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  543|     65|    return obj;
  544|     65|}
structmember.c:Py_XDECREF:
  518|     65|{
  519|     65|    if (op != _Py_NULL) {
  ------------------
  |  |   57|     65|#  define _Py_NULL NULL
  ------------------
  |  Branch (519:9): [True: 19, False: 46]
  ------------------
  520|     19|        Py_DECREF(op);
  ------------------
  |  |  430|     19|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     19|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     19|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  521|     19|    }
  522|     65|}
symtable.c:_Py_NewRef:
  535|      5|{
  536|      5|    Py_INCREF(obj);
  ------------------
  |  |  310|      5|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|      5|    return obj;
  538|      5|}
symtable.c:Py_INCREF:
  256|      5|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|      5|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|      5|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 5, False: 0]
  ------------------
  288|       |        // the object is immortal
  289|      5|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|      5|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|      5|        return;
  291|      5|    }
  292|      0|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|      0|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|      0|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|      0|#endif
  308|      0|}
sysmodule.c:Py_XDECREF:
  518|     71|{
  519|     71|    if (op != _Py_NULL) {
  ------------------
  |  |   57|     71|#  define _Py_NULL NULL
  ------------------
  |  Branch (519:9): [True: 49, False: 22]
  ------------------
  520|     49|        Py_DECREF(op);
  ------------------
  |  |  430|     49|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     49|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     49|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  521|     49|    }
  522|     71|}
sysmodule.c:Py_DECREF:
  418|    149|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|    149|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|    149|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    149|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    149|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 71, False: 78]
  |  |  ------------------
  ------------------
  422|     71|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|     71|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|     71|        return;
  424|     71|    }
  425|     78|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|     78|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|     78|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 29, False: 49]
  ------------------
  427|     29|        _Py_Dealloc(op);
  428|     29|    }
  429|     78|}
sysmodule.c:_Py_IsImmortal:
  127|    149|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|    149|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|    149|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|    149|}
sysmodule.c:_Py_XNewRef:
  541|      1|{
  542|      1|    Py_XINCREF(obj);
  ------------------
  |  |  514|      1|#  define Py_XINCREF(op) Py_XINCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  543|      1|    return obj;
  544|      1|}
sysmodule.c:Py_XINCREF:
  508|      1|{
  509|      1|    if (op != _Py_NULL) {
  ------------------
  |  |   57|      1|#  define _Py_NULL NULL
  ------------------
  |  Branch (509:9): [True: 1, False: 0]
  ------------------
  510|      1|        Py_INCREF(op);
  ------------------
  |  |  310|      1|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  511|      1|    }
  512|      1|}
sysmodule.c:Py_INCREF:
  256|     48|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|     48|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|     48|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 44, False: 4]
  ------------------
  288|       |        // the object is immortal
  289|     44|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|     44|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|     44|        return;
  291|     44|    }
  292|      4|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|      4|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|      4|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|      4|#endif
  308|      4|}
sysmodule.c:_Py_NewRef:
  535|     47|{
  536|     47|    Py_INCREF(obj);
  ------------------
  |  |  310|     47|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     47|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     47|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|     47|    return obj;
  538|     47|}
traceback.c:Py_INCREF:
  256|    112|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|    112|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|    112|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 0, False: 112]
  ------------------
  288|       |        // the object is immortal
  289|      0|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|      0|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|      0|        return;
  291|      0|    }
  292|    112|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|    112|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|    112|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|    112|#endif
  308|    112|}
traceback.c:Py_XINCREF:
  508|    204|{
  509|    204|    if (op != _Py_NULL) {
  ------------------
  |  |   57|    204|#  define _Py_NULL NULL
  ------------------
  |  Branch (509:9): [True: 112, False: 92]
  ------------------
  510|    112|        Py_INCREF(op);
  ------------------
  |  |  310|    112|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    112|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    112|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  511|    112|    }
  512|    204|}
traceback.c:_Py_XNewRef:
  541|    204|{
  542|    204|    Py_XINCREF(obj);
  ------------------
  |  |  514|    204|#  define Py_XINCREF(op) Py_XINCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    204|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    204|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  543|    204|    return obj;
  544|    204|}
traceback.c:Py_XDECREF:
  518|    408|{
  519|    408|    if (op != _Py_NULL) {
  ------------------
  |  |   57|    408|#  define _Py_NULL NULL
  ------------------
  |  Branch (519:9): [True: 224, False: 184]
  ------------------
  520|    224|        Py_DECREF(op);
  ------------------
  |  |  430|    224|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    224|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    224|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  521|    224|    }
  522|    408|}
traceback.c:Py_DECREF:
  418|    224|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|    224|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|    224|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    224|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    224|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 0, False: 224]
  |  |  ------------------
  ------------------
  422|      0|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|      0|        return;
  424|      0|    }
  425|    224|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|    224|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|    224|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 24, False: 200]
  ------------------
  427|     24|        _Py_Dealloc(op);
  428|     24|    }
  429|    224|}
traceback.c:_Py_IsImmortal:
  127|    224|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|    224|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|    224|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|    224|}
posixmodule.c:Py_DECREF:
  418|    608|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|    608|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|    608|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    608|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    608|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 169, False: 439]
  |  |  ------------------
  ------------------
  422|    169|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|    169|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|    169|        return;
  424|    169|    }
  425|    439|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|    439|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|    439|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 23, False: 416]
  ------------------
  427|     23|        _Py_Dealloc(op);
  428|     23|    }
  429|    439|}
posixmodule.c:_Py_IsImmortal:
  127|    608|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|    608|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|    608|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|    608|}
posixmodule.c:_Py_NewRef:
  535|     40|{
  536|     40|    Py_INCREF(obj);
  ------------------
  |  |  310|     40|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     40|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     40|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|     40|    return obj;
  538|     40|}
posixmodule.c:Py_INCREF:
  256|     68|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|     68|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|     68|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 6, False: 62]
  ------------------
  288|       |        // the object is immortal
  289|      6|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|      6|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|      6|        return;
  291|      6|    }
  292|     62|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|     62|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|     62|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|     62|#endif
  308|     62|}
_datetimemodule.c:Py_INCREF:
  256|      6|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|      6|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|      6|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 4, False: 2]
  ------------------
  288|       |        // the object is immortal
  289|      4|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|      4|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|      4|        return;
  291|      4|    }
  292|      2|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|      2|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|      2|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|      2|#endif
  308|      2|}
_datetimemodule.c:_Py_NewRef:
  535|      2|{
  536|      2|    Py_INCREF(obj);
  ------------------
  |  |  310|      2|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|      2|    return obj;
  538|      2|}
_datetimemodule.c:Py_DECREF:
  418|     16|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|     16|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|     16|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     16|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     16|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 0, False: 16]
  |  |  ------------------
  ------------------
  422|      0|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|      0|        return;
  424|      0|    }
  425|     16|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|     16|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|     16|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 0, False: 16]
  ------------------
  427|      0|        _Py_Dealloc(op);
  428|      0|    }
  429|     16|}
_datetimemodule.c:_Py_IsImmortal:
  127|     20|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|     20|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|     20|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|     20|}
_datetimemodule.c:_Py_XNewRef:
  541|      2|{
  542|      2|    Py_XINCREF(obj);
  ------------------
  |  |  514|      2|#  define Py_XINCREF(op) Py_XINCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  543|      2|    return obj;
  544|      2|}
_datetimemodule.c:Py_XINCREF:
  508|      2|{
  509|      2|    if (op != _Py_NULL) {
  ------------------
  |  |   57|      2|#  define _Py_NULL NULL
  ------------------
  |  Branch (509:9): [True: 0, False: 2]
  ------------------
  510|      0|        Py_INCREF(op);
  ------------------
  |  |  310|      0|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  511|      0|    }
  512|      2|}
errnomodule.c:Py_DECREF:
  333|    275|static inline void Py_DECREF(PyObject *op) {
  334|    275|#  if Py_LIMITED_API+0 >= 0x030a00A7
  335|    275|    _Py_DecRef(op);
  336|       |#  else
  337|       |    Py_DecRef(op);
  338|       |#  endif
  339|    275|}
_iomodule.c:Py_DECREF:
  418|     20|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|     20|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|     20|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     20|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     20|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 11, False: 9]
  |  |  ------------------
  ------------------
  422|     11|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|     11|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|     11|        return;
  424|     11|    }
  425|      9|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|      9|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|      9|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 6, False: 3]
  ------------------
  427|      6|        _Py_Dealloc(op);
  428|      6|    }
  429|      9|}
_iomodule.c:_Py_IsImmortal:
  127|     20|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|     20|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|     20|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|     20|}
_iomodule.c:_Py_NewRef:
  535|      3|{
  536|      3|    Py_INCREF(obj);
  ------------------
  |  |  310|      3|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|      3|    return obj;
  538|      3|}
_iomodule.c:Py_INCREF:
  256|      3|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|      3|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|      3|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 3, False: 0]
  ------------------
  288|       |        // the object is immortal
  289|      3|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|      3|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|      3|        return;
  291|      3|    }
  292|      0|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|      0|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|      0|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|      0|#endif
  308|      0|}
iobase.c:Py_DECREF:
  418|      3|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|      3|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|      3|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 3, False: 0]
  |  |  ------------------
  ------------------
  422|      3|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|      3|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|      3|        return;
  424|      3|    }
  425|      0|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|      0|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 0, False: 0]
  ------------------
  427|      0|        _Py_Dealloc(op);
  428|      0|    }
  429|      0|}
iobase.c:_Py_IsImmortal:
  127|      3|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|      3|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|      3|}
bufferedio.c:Py_DECREF:
  418|      8|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|      8|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|      8|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      8|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 5, False: 3]
  |  |  ------------------
  ------------------
  422|      5|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|      5|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|      5|        return;
  424|      5|    }
  425|      3|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|      3|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|      3|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 0, False: 3]
  ------------------
  427|      0|        _Py_Dealloc(op);
  428|      0|    }
  429|      3|}
bufferedio.c:_Py_IsImmortal:
  127|      8|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|      8|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|      8|}
bufferedio.c:Py_XDECREF:
  518|      3|{
  519|      3|    if (op != _Py_NULL) {
  ------------------
  |  |   57|      3|#  define _Py_NULL NULL
  ------------------
  |  Branch (519:9): [True: 0, False: 3]
  ------------------
  520|      0|        Py_DECREF(op);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  521|      0|    }
  522|      3|}
bufferedio.c:_Py_NewRef:
  535|      1|{
  536|      1|    Py_INCREF(obj);
  ------------------
  |  |  310|      1|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|      1|    return obj;
  538|      1|}
bufferedio.c:Py_INCREF:
  256|      3|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|      3|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|      3|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 0, False: 3]
  ------------------
  288|       |        // the object is immortal
  289|      0|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|      0|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|      0|        return;
  291|      0|    }
  292|      3|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|      3|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|      3|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|      3|#endif
  308|      3|}
textio.c:_Py_NewRef:
  535|      6|{
  536|      6|    Py_INCREF(obj);
  ------------------
  |  |  310|      6|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      6|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|      6|    return obj;
  538|      6|}
textio.c:Py_INCREF:
  256|      6|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|      6|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|      6|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 0, False: 6]
  ------------------
  288|       |        // the object is immortal
  289|      0|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|      0|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|      0|        return;
  291|      0|    }
  292|      6|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|      6|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|      6|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|      6|#endif
  308|      6|}
textio.c:Py_DECREF:
  418|     16|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|     16|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|     16|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     16|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     16|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 11, False: 5]
  |  |  ------------------
  ------------------
  422|     11|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|     11|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|     11|        return;
  424|     11|    }
  425|      5|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|      5|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|      5|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 0, False: 5]
  ------------------
  427|      0|        _Py_Dealloc(op);
  428|      0|    }
  429|      5|}
textio.c:_Py_IsImmortal:
  127|     16|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|     16|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|     16|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|     16|}
textio.c:Py_XDECREF:
  518|      5|{
  519|      5|    if (op != _Py_NULL) {
  ------------------
  |  |   57|      5|#  define _Py_NULL NULL
  ------------------
  |  Branch (519:9): [True: 2, False: 3]
  ------------------
  520|      2|        Py_DECREF(op);
  ------------------
  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  521|      2|    }
  522|      5|}
_threadmodule.c:Py_DECREF:
  418|     48|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|     48|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|     48|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     48|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     48|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 0, False: 48]
  |  |  ------------------
  ------------------
  422|      0|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|      0|        return;
  424|      0|    }
  425|     48|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|     48|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|     48|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 0, False: 48]
  ------------------
  427|      0|        _Py_Dealloc(op);
  428|      0|    }
  429|     48|}
_threadmodule.c:_Py_IsImmortal:
  127|     48|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|     48|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|     48|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|     48|}
_abc.c:Py_INCREF:
  256|    348|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|    348|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|    348|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 348, False: 0]
  ------------------
  288|       |        // the object is immortal
  289|    348|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|    348|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|    348|        return;
  291|    348|    }
  292|      0|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|      0|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|      0|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|      0|#endif
  308|      0|}
_abc.c:Py_DECREF:
  418|  1.15k|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|  1.15k|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|  1.15k|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  1.15k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.15k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 376, False: 776]
  |  |  ------------------
  ------------------
  422|    376|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|    376|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|    376|        return;
  424|    376|    }
  425|    776|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|    776|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|    776|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 110, False: 666]
  ------------------
  427|    110|        _Py_Dealloc(op);
  428|    110|    }
  429|    776|}
_abc.c:_Py_IsImmortal:
  127|  1.15k|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|  1.15k|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|  1.15k|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|  1.15k|}
_abc.c:Py_XDECREF:
  518|    148|{
  519|    148|    if (op != _Py_NULL) {
  ------------------
  |  |   57|    148|#  define _Py_NULL NULL
  ------------------
  |  Branch (519:9): [True: 105, False: 43]
  ------------------
  520|    105|        Py_DECREF(op);
  ------------------
  |  |  430|    105|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    105|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    105|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  521|    105|    }
  522|    148|}
_abc.c:_Py_NewRef:
  535|     34|{
  536|     34|    Py_INCREF(obj);
  ------------------
  |  |  310|     34|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     34|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     34|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|     34|    return obj;
  538|     34|}
_abc.c:_Py_XNewRef:
  541|     34|{
  542|     34|    Py_XINCREF(obj);
  ------------------
  |  |  514|     34|#  define Py_XINCREF(op) Py_XINCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     34|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     34|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  543|     34|    return obj;
  544|     34|}
_abc.c:Py_XINCREF:
  508|     34|{
  509|     34|    if (op != _Py_NULL) {
  ------------------
  |  |   57|     34|#  define _Py_NULL NULL
  ------------------
  |  Branch (509:9): [True: 34, False: 0]
  ------------------
  510|     34|        Py_INCREF(op);
  ------------------
  |  |  310|     34|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     34|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     34|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  511|     34|    }
  512|     34|}
getpath.c:Py_DECREF:
  418|     32|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|     32|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|     32|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     32|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     32|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 12, False: 20]
  |  |  ------------------
  ------------------
  422|     12|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|     12|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|     12|        return;
  424|     12|    }
  425|     20|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|     20|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|     20|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 1, False: 19]
  ------------------
  427|      1|        _Py_Dealloc(op);
  428|      1|    }
  429|     20|}
getpath.c:_Py_IsImmortal:
  127|     32|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|     32|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|     32|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|     32|}
getpath.c:_Py_NewRef:
  535|      8|{
  536|      8|    Py_INCREF(obj);
  ------------------
  |  |  310|      8|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      8|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|      8|    return obj;
  538|      8|}
getpath.c:Py_INCREF:
  256|     18|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|     18|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|     18|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 18, False: 0]
  ------------------
  288|       |        // the object is immortal
  289|     18|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|     18|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|     18|        return;
  291|     18|    }
  292|      0|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|      0|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|      0|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|      0|#endif
  308|      0|}
getpath.c:_Py_XNewRef:
  541|     10|{
  542|     10|    Py_XINCREF(obj);
  ------------------
  |  |  514|     10|#  define Py_XINCREF(op) Py_XINCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     10|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  543|     10|    return obj;
  544|     10|}
getpath.c:Py_XINCREF:
  508|     10|{
  509|     10|    if (op != _Py_NULL) {
  ------------------
  |  |   57|     10|#  define _Py_NULL NULL
  ------------------
  |  Branch (509:9): [True: 10, False: 0]
  ------------------
  510|     10|        Py_INCREF(op);
  ------------------
  |  |  310|     10|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     10|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  511|     10|    }
  512|     10|}
abstract.c:_Py_NewRef:
  535|    752|{
  536|    752|    Py_INCREF(obj);
  ------------------
  |  |  310|    752|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    752|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    752|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|    752|    return obj;
  538|    752|}
abstract.c:Py_INCREF:
  256|    752|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|    752|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|    752|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 51, False: 701]
  ------------------
  288|       |        // the object is immortal
  289|     51|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|     51|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|     51|        return;
  291|     51|    }
  292|    701|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|    701|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|    701|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|    701|#endif
  308|    701|}
abstract.c:Py_DECREF:
  418|    301|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|    301|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|    301|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    301|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    301|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 169, False: 132]
  |  |  ------------------
  ------------------
  422|    169|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|    169|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|    169|        return;
  424|    169|    }
  425|    132|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|    132|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|    132|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 131, False: 1]
  ------------------
  427|    131|        _Py_Dealloc(op);
  428|    131|    }
  429|    132|}
abstract.c:_Py_IsImmortal:
  127|    301|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|    301|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|    301|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|    301|}
bytearrayobject.c:Py_DECREF:
  418|     83|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|     83|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|     83|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     83|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     83|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 1, False: 82]
  |  |  ------------------
  ------------------
  422|      1|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|      1|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|      1|        return;
  424|      1|    }
  425|     82|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|     82|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|     82|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 82, False: 0]
  ------------------
  427|     82|        _Py_Dealloc(op);
  428|     82|    }
  429|     82|}
bytearrayobject.c:_Py_IsImmortal:
  127|     83|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|     83|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|     83|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|     83|}
bytearrayobject.c:Py_XDECREF:
  518|     83|{
  519|     83|    if (op != _Py_NULL) {
  ------------------
  |  |   57|     83|#  define _Py_NULL NULL
  ------------------
  |  Branch (519:9): [True: 83, False: 0]
  ------------------
  520|     83|        Py_DECREF(op);
  ------------------
  |  |  430|     83|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     83|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     83|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  521|     83|    }
  522|     83|}
bytearrayobject.c:_Py_NewRef:
  535|      1|{
  536|      1|    Py_INCREF(obj);
  ------------------
  |  |  310|      1|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|      1|    return obj;
  538|      1|}
bytearrayobject.c:Py_INCREF:
  256|      1|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|      1|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|      1|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 0, False: 1]
  ------------------
  288|       |        // the object is immortal
  289|      0|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|      0|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|      0|        return;
  291|      0|    }
  292|      1|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|      1|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|      1|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|      1|#endif
  308|      1|}
bytesobject.c:_Py_IsImmortal:
  127|  2.50k|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|  2.50k|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|  2.50k|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|  2.50k|}
bytesobject.c:Py_INCREF:
  256|  2.48k|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|  2.48k|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|  2.48k|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 2.48k, False: 0]
  ------------------
  288|       |        // the object is immortal
  289|  2.48k|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|  2.48k|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|  2.48k|        return;
  291|  2.48k|    }
  292|      0|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|      0|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|      0|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|      0|#endif
  308|      0|}
bytesobject.c:Py_DECREF:
  418|      1|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|      1|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|      1|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  422|      1|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|      1|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|      1|        return;
  424|      1|    }
  425|      0|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|      0|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 0, False: 0]
  ------------------
  427|      0|        _Py_Dealloc(op);
  428|      0|    }
  429|      0|}
bytesobject.c:Py_XDECREF:
  518|      2|{
  519|      2|    if (op != _Py_NULL) {
  ------------------
  |  |   57|      2|#  define _Py_NULL NULL
  ------------------
  |  Branch (519:9): [True: 1, False: 1]
  ------------------
  520|      1|        Py_DECREF(op);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  521|      1|    }
  522|      2|}
bytesobject.c:_Py_NewRef:
  535|      1|{
  536|      1|    Py_INCREF(obj);
  ------------------
  |  |  310|      1|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|      1|    return obj;
  538|      1|}
call.c:Py_DECREF:
  418|    778|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|    778|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|    778|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    778|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    778|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 207, False: 571]
  |  |  ------------------
  ------------------
  422|    207|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|    207|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|    207|        return;
  424|    207|    }
  425|    571|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|    571|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|    571|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 450, False: 121]
  ------------------
  427|    450|        _Py_Dealloc(op);
  428|    450|    }
  429|    571|}
call.c:_Py_IsImmortal:
  127|    778|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|    778|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|    778|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|    778|}
call.c:_Py_IsStaticImmortal:
  141|    153|{
  142|    153|#if defined(Py_GIL_DISABLED) || SIZEOF_VOID_P > 4
  143|    153|    return (op->ob_flags & _Py_STATICALLY_ALLOCATED_FLAG) != 0;
  ------------------
  |  |  583|    153|#define _Py_STATICALLY_ALLOCATED_FLAG (1 << 2)
  ------------------
  144|       |#else
  145|       |    return op->ob_refcnt >= _Py_STATIC_IMMORTAL_MINIMUM_REFCNT;
  146|       |#endif
  147|    153|}
call.c:_Py_NewRef:
  535|    122|{
  536|    122|    Py_INCREF(obj);
  ------------------
  |  |  310|    122|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    122|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    122|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|    122|    return obj;
  538|    122|}
call.c:Py_INCREF:
  256|    122|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|    122|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|    122|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 101, False: 21]
  ------------------
  288|       |        // the object is immortal
  289|    101|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|    101|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|    101|        return;
  291|    101|    }
  292|     21|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|     21|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|     21|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|     21|#endif
  308|     21|}
cellobject.c:_Py_XNewRef:
  541|    185|{
  542|    185|    Py_XINCREF(obj);
  ------------------
  |  |  514|    185|#  define Py_XINCREF(op) Py_XINCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    185|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    185|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  543|    185|    return obj;
  544|    185|}
cellobject.c:Py_XINCREF:
  508|    185|{
  509|    185|    if (op != _Py_NULL) {
  ------------------
  |  |   57|    185|#  define _Py_NULL NULL
  ------------------
  |  Branch (509:9): [True: 96, False: 89]
  ------------------
  510|     96|        Py_INCREF(op);
  ------------------
  |  |  310|     96|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     96|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     96|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  511|     96|    }
  512|    185|}
cellobject.c:Py_INCREF:
  256|     96|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|     96|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|     96|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 0, False: 96]
  ------------------
  288|       |        // the object is immortal
  289|      0|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|      0|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|      0|        return;
  291|      0|    }
  292|     96|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|     96|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|     96|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|     96|#endif
  308|     96|}
cellobject.c:Py_XDECREF:
  518|    163|{
  519|    163|    if (op != _Py_NULL) {
  ------------------
  |  |   57|    163|#  define _Py_NULL NULL
  ------------------
  |  Branch (519:9): [True: 156, False: 7]
  ------------------
  520|    156|        Py_DECREF(op);
  ------------------
  |  |  430|    156|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    156|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    156|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  521|    156|    }
  522|    163|}
cellobject.c:Py_DECREF:
  418|    156|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|    156|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|    156|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    156|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    156|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 1, False: 155]
  |  |  ------------------
  ------------------
  422|      1|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|      1|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|      1|        return;
  424|      1|    }
  425|    155|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|    155|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|    155|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 0, False: 155]
  ------------------
  427|      0|        _Py_Dealloc(op);
  428|      0|    }
  429|    155|}
cellobject.c:_Py_IsImmortal:
  127|    156|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|    156|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|    156|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|    156|}
classobject.c:_Py_NewRef:
  535|    392|{
  536|    392|    Py_INCREF(obj);
  ------------------
  |  |  310|    392|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    392|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    392|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|    392|    return obj;
  538|    392|}
classobject.c:Py_INCREF:
  256|    392|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|    392|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|    392|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 0, False: 392]
  ------------------
  288|       |        // the object is immortal
  289|      0|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|      0|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|      0|        return;
  291|      0|    }
  292|    392|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|    392|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|    392|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|    392|#endif
  308|    392|}
classobject.c:_Py_REFCNT:
  105|    196|    static inline Py_ssize_t _Py_REFCNT(PyObject *ob) {
  106|    196|    #if !defined(Py_GIL_DISABLED)
  107|    196|        return ob->ob_refcnt;
  108|       |    #else
  109|       |        uint32_t local = _Py_atomic_load_uint32_relaxed(&ob->ob_ref_local);
  110|       |        if (local == _Py_IMMORTAL_REFCNT_LOCAL) {
  111|       |            return _Py_IMMORTAL_INITIAL_REFCNT;
  112|       |        }
  113|       |        Py_ssize_t shared = _Py_atomic_load_ssize_relaxed(&ob->ob_ref_shared);
  114|       |        return _Py_STATIC_CAST(Py_ssize_t, local) +
  115|       |               Py_ARITHMETIC_RIGHT_SHIFT(Py_ssize_t, shared, _Py_REF_SHARED_SHIFT);
  116|       |    #endif
  117|    196|    }
classobject.c:Py_DECREF:
  418|    392|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|    392|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|    392|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    392|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    392|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 0, False: 392]
  |  |  ------------------
  ------------------
  422|      0|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|      0|        return;
  424|      0|    }
  425|    392|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|    392|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|    392|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 0, False: 392]
  ------------------
  427|      0|        _Py_Dealloc(op);
  428|      0|    }
  429|    392|}
classobject.c:_Py_IsImmortal:
  127|    392|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|    392|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|    392|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|    392|}
classobject.c:Py_XDECREF:
  518|    196|{
  519|    196|    if (op != _Py_NULL) {
  ------------------
  |  |   57|    196|#  define _Py_NULL NULL
  ------------------
  |  Branch (519:9): [True: 196, False: 0]
  ------------------
  520|    196|        Py_DECREF(op);
  ------------------
  |  |  430|    196|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    196|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    196|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  521|    196|    }
  522|    196|}
codeobject.c:_Py_NewRef:
  535|  6.68k|{
  536|  6.68k|    Py_INCREF(obj);
  ------------------
  |  |  310|  6.68k|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  6.68k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  6.68k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|  6.68k|    return obj;
  538|  6.68k|}
codeobject.c:Py_INCREF:
  256|  6.68k|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|  6.68k|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|  6.68k|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 2.94k, False: 3.73k]
  ------------------
  288|       |        // the object is immortal
  289|  2.94k|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|  2.94k|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|  2.94k|        return;
  291|  2.94k|    }
  292|  3.73k|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|  3.73k|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|  3.73k|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|  3.73k|#endif
  308|  3.73k|}
codeobject.c:Py_XDECREF:
  518|  1.98k|{
  519|  1.98k|    if (op != _Py_NULL) {
  ------------------
  |  |   57|  1.98k|#  define _Py_NULL NULL
  ------------------
  |  Branch (519:9): [True: 1.24k, False: 743]
  ------------------
  520|  1.24k|        Py_DECREF(op);
  ------------------
  |  |  430|  1.24k|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  1.24k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.24k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  521|  1.24k|    }
  522|  1.98k|}
codeobject.c:_Py_REFCNT:
  105|  1.43k|    static inline Py_ssize_t _Py_REFCNT(PyObject *ob) {
  106|  1.43k|    #if !defined(Py_GIL_DISABLED)
  107|  1.43k|        return ob->ob_refcnt;
  108|       |    #else
  109|       |        uint32_t local = _Py_atomic_load_uint32_relaxed(&ob->ob_ref_local);
  110|       |        if (local == _Py_IMMORTAL_REFCNT_LOCAL) {
  111|       |            return _Py_IMMORTAL_INITIAL_REFCNT;
  112|       |        }
  113|       |        Py_ssize_t shared = _Py_atomic_load_ssize_relaxed(&ob->ob_ref_shared);
  114|       |        return _Py_STATIC_CAST(Py_ssize_t, local) +
  115|       |               Py_ARITHMETIC_RIGHT_SHIFT(Py_ssize_t, shared, _Py_REF_SHARED_SHIFT);
  116|       |    #endif
  117|  1.43k|    }
codeobject.c:Py_DECREF:
  418|  1.24k|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|  1.24k|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|  1.24k|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  1.24k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.24k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 604, False: 642]
  |  |  ------------------
  ------------------
  422|    604|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|    604|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|    604|        return;
  424|    604|    }
  425|    642|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|    642|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|    642|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 528, False: 114]
  ------------------
  427|    528|        _Py_Dealloc(op);
  428|    528|    }
  429|    642|}
codeobject.c:_Py_IsImmortal:
  127|  1.52k|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|  1.52k|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|  1.52k|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|  1.52k|}
codeobject.c:Py_SET_REFCNT:
  154|    276|static inline void Py_SET_REFCNT(PyObject *ob, Py_ssize_t refcnt) {
  155|    276|    assert(refcnt >= 0);
  ------------------
  |  Branch (155:5): [True: 276, False: 0]
  ------------------
  156|       |#if (defined(Py_LIMITED_API) && Py_LIMITED_API+0 >= 0x030d0000) \
  157|       |    || defined(_Py_OPAQUE_PYOBJECT)
  158|       |    // Stable ABI implements Py_SET_REFCNT() as a function call
  159|       |    // on limited C API version 3.13 and newer, and abi3t.
  160|       |    _Py_SetRefcnt(ob, refcnt);
  161|       |#else
  162|       |    // This immortal check is for code that is unaware of immortal objects.
  163|       |    // The runtime tracks these objects and we should avoid as much
  164|       |    // as possible having extensions inadvertently change the refcnt
  165|       |    // of an immortalized object.
  166|    276|    if (_Py_IsImmortal(ob)) {
  ------------------
  |  |  137|    276|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    276|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    276|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 0, False: 276]
  |  |  ------------------
  ------------------
  167|      0|        return;
  168|      0|    }
  169|    276|#ifndef Py_GIL_DISABLED
  170|    276|#if SIZEOF_VOID_P > 4
  171|    276|    ob->ob_refcnt = (uint32_t)refcnt;
  172|       |#else
  173|       |    ob->ob_refcnt = refcnt;
  174|       |#endif
  175|       |#else
  176|       |    if (_Py_IsOwnedByCurrentThread(ob)) {
  177|       |        if ((size_t)refcnt > (size_t)UINT32_MAX) {
  178|       |            // On overflow, make the object immortal
  179|       |            ob->ob_tid = _Py_UNOWNED_TID;
  180|       |            ob->ob_ref_local = _Py_IMMORTAL_REFCNT_LOCAL;
  181|       |            ob->ob_ref_shared = 0;
  182|       |        }
  183|       |        else {
  184|       |            // Set local refcount to desired refcount and shared refcount
  185|       |            // to zero, but preserve the shared refcount flags.
  186|       |            ob->ob_ref_local = _Py_STATIC_CAST(uint32_t, refcnt);
  187|       |            ob->ob_ref_shared &= _Py_REF_SHARED_FLAG_MASK;
  188|       |        }
  189|       |    }
  190|       |    else {
  191|       |        // Set local refcount to zero and shared refcount to desired refcount.
  192|       |        // Mark the object as merged.
  193|       |        ob->ob_tid = _Py_UNOWNED_TID;
  194|       |        ob->ob_ref_local = 0;
  195|       |        ob->ob_ref_shared = _Py_REF_SHARED(refcnt, _Py_REF_MERGED);
  196|       |    }
  197|       |#endif  // Py_GIL_DISABLED
  198|    276|#endif  // Py_LIMITED_API
  199|    276|}
descrobject.c:Py_XDECREF:
  518|    146|{
  519|    146|    if (op != _Py_NULL) {
  ------------------
  |  |   57|    146|#  define _Py_NULL NULL
  ------------------
  |  Branch (519:9): [True: 64, False: 82]
  ------------------
  520|     64|        Py_DECREF(op);
  ------------------
  |  |  430|     64|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     64|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     64|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  521|     64|    }
  522|    146|}
descrobject.c:Py_DECREF:
  418|    222|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|    222|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|    222|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    222|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    222|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 49, False: 173]
  |  |  ------------------
  ------------------
  422|     49|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|     49|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|     49|        return;
  424|     49|    }
  425|    173|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|    173|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|    173|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 38, False: 135]
  ------------------
  427|     38|        _Py_Dealloc(op);
  428|     38|    }
  429|    173|}
descrobject.c:_Py_IsImmortal:
  127|    222|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|    222|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|    222|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|    222|}
descrobject.c:_Py_XNewRef:
  541|  2.40k|{
  542|  2.40k|    Py_XINCREF(obj);
  ------------------
  |  |  514|  2.40k|#  define Py_XINCREF(op) Py_XINCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  2.40k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.40k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  543|  2.40k|    return obj;
  544|  2.40k|}
descrobject.c:Py_XINCREF:
  508|  2.40k|{
  509|  2.40k|    if (op != _Py_NULL) {
  ------------------
  |  |   57|  2.40k|#  define _Py_NULL NULL
  ------------------
  |  Branch (509:9): [True: 2.39k, False: 10]
  ------------------
  510|  2.39k|        Py_INCREF(op);
  ------------------
  |  |  310|  2.39k|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  2.39k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.39k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  511|  2.39k|    }
  512|  2.40k|}
descrobject.c:Py_INCREF:
  256|  2.50k|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|  2.50k|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|  2.50k|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 1.89k, False: 609]
  ------------------
  288|       |        // the object is immortal
  289|  1.89k|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|  1.89k|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|  1.89k|        return;
  291|  1.89k|    }
  292|    609|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|    609|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|    609|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|    609|#endif
  308|    609|}
descrobject.c:_Py_NewRef:
  535|    112|{
  536|    112|    Py_INCREF(obj);
  ------------------
  |  |  310|    112|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    112|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    112|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|    112|    return obj;
  538|    112|}
enumobject.c:Py_DECREF:
  418|      3|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|      3|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|      3|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  422|      0|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|      0|        return;
  424|      0|    }
  425|      3|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|      3|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|      3|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 3, False: 0]
  ------------------
  427|      3|        _Py_Dealloc(op);
  428|      3|    }
  429|      3|}
enumobject.c:_Py_IsImmortal:
  127|      3|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|      3|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|      3|}
genobject.c:Py_INCREF:
  256|     42|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|     42|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|     42|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 42, False: 0]
  ------------------
  288|       |        // the object is immortal
  289|     42|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|     42|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|     42|        return;
  291|     42|    }
  292|      0|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|      0|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|      0|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|      0|#endif
  308|      0|}
genobject.c:_Py_NewRef:
  535|     42|{
  536|     42|    Py_INCREF(obj);
  ------------------
  |  |  310|     42|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     42|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     42|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|     42|    return obj;
  538|     42|}
genobject.c:Py_DECREF:
  418|     58|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|     58|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|     58|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     58|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     58|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 58, False: 0]
  |  |  ------------------
  ------------------
  422|     58|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|     58|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|     58|        return;
  424|     58|    }
  425|      0|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|      0|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 0, False: 0]
  ------------------
  427|      0|        _Py_Dealloc(op);
  428|      0|    }
  429|      0|}
genobject.c:_Py_IsImmortal:
  127|     92|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|     92|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|     92|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|     92|}
genobject.c:_Py_REFCNT:
  105|     21|    static inline Py_ssize_t _Py_REFCNT(PyObject *ob) {
  106|     21|    #if !defined(Py_GIL_DISABLED)
  107|     21|        return ob->ob_refcnt;
  108|       |    #else
  109|       |        uint32_t local = _Py_atomic_load_uint32_relaxed(&ob->ob_ref_local);
  110|       |        if (local == _Py_IMMORTAL_REFCNT_LOCAL) {
  111|       |            return _Py_IMMORTAL_INITIAL_REFCNT;
  112|       |        }
  113|       |        Py_ssize_t shared = _Py_atomic_load_ssize_relaxed(&ob->ob_ref_shared);
  114|       |        return _Py_STATIC_CAST(Py_ssize_t, local) +
  115|       |               Py_ARITHMETIC_RIGHT_SHIFT(Py_ssize_t, shared, _Py_REF_SHARED_SHIFT);
  116|       |    #endif
  117|     21|    }
genobject.c:_Py_IsStaticImmortal:
  141|     21|{
  142|     21|#if defined(Py_GIL_DISABLED) || SIZEOF_VOID_P > 4
  143|     21|    return (op->ob_flags & _Py_STATICALLY_ALLOCATED_FLAG) != 0;
  ------------------
  |  |  583|     21|#define _Py_STATICALLY_ALLOCATED_FLAG (1 << 2)
  ------------------
  144|       |#else
  145|       |    return op->ob_refcnt >= _Py_STATIC_IMMORTAL_MINIMUM_REFCNT;
  146|       |#endif
  147|     21|}
floatobject.c:_Py_IsImmortal:
  127|     10|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|     10|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|     10|}
floatobject.c:Py_INCREF:
  256|     10|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|     10|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|     10|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 10, False: 0]
  ------------------
  288|       |        // the object is immortal
  289|     10|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|     10|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|     10|        return;
  291|     10|    }
  292|      0|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|      0|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|      0|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|      0|#endif
  308|      0|}
frameobject.c:Py_INCREF:
  256|      9|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|      9|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|      9|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 0, False: 9]
  ------------------
  288|       |        // the object is immortal
  289|      0|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|      0|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|      0|        return;
  291|      0|    }
  292|      9|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|      9|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|      9|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|      9|#endif
  308|      9|}
frameobject.c:_Py_IsImmortal:
  127|     16|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|     16|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|     16|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|     16|}
frameobject.c:_Py_IsStaticImmortal:
  141|     60|{
  142|     60|#if defined(Py_GIL_DISABLED) || SIZEOF_VOID_P > 4
  143|     60|    return (op->ob_flags & _Py_STATICALLY_ALLOCATED_FLAG) != 0;
  ------------------
  |  |  583|     60|#define _Py_STATICALLY_ALLOCATED_FLAG (1 << 2)
  ------------------
  144|       |#else
  145|       |    return op->ob_refcnt >= _Py_STATIC_IMMORTAL_MINIMUM_REFCNT;
  146|       |#endif
  147|     60|}
frameobject.c:Py_DECREF:
  418|     16|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|     16|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|     16|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     16|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     16|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 0, False: 16]
  |  |  ------------------
  ------------------
  422|      0|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|      0|        return;
  424|      0|    }
  425|     16|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|     16|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|     16|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 1, False: 15]
  ------------------
  427|      1|        _Py_Dealloc(op);
  428|      1|    }
  429|     16|}
frameobject.c:_Py_NewRef:
  535|      9|{
  536|      9|    Py_INCREF(obj);
  ------------------
  |  |  310|      9|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      9|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      9|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|      9|    return obj;
  538|      9|}
funcobject.c:Py_XDECREF:
  518|     78|{
  519|     78|    if (op != _Py_NULL) {
  ------------------
  |  |   57|     78|#  define _Py_NULL NULL
  ------------------
  |  Branch (519:9): [True: 18, False: 60]
  ------------------
  520|     18|        Py_DECREF(op);
  ------------------
  |  |  430|     18|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     18|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     18|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  521|     18|    }
  522|     78|}
funcobject.c:Py_INCREF:
  256|  4.06k|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|  4.06k|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|  4.06k|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 2.11k, False: 1.95k]
  ------------------
  288|       |        // the object is immortal
  289|  2.11k|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|  2.11k|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|  2.11k|        return;
  291|  2.11k|    }
  292|  1.95k|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|  1.95k|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|  1.95k|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|  1.95k|#endif
  308|  1.95k|}
funcobject.c:_Py_NewRef:
  535|  1.07k|{
  536|  1.07k|    Py_INCREF(obj);
  ------------------
  |  |  310|  1.07k|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  1.07k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.07k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|  1.07k|    return obj;
  538|  1.07k|}
funcobject.c:_Py_XNewRef:
  541|     48|{
  542|     48|    Py_XINCREF(obj);
  ------------------
  |  |  514|     48|#  define Py_XINCREF(op) Py_XINCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     48|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     48|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  543|     48|    return obj;
  544|     48|}
funcobject.c:Py_XINCREF:
  508|     48|{
  509|     48|    if (op != _Py_NULL) {
  ------------------
  |  |   57|     48|#  define _Py_NULL NULL
  ------------------
  |  Branch (509:9): [True: 0, False: 48]
  ------------------
  510|      0|        Py_INCREF(op);
  ------------------
  |  |  310|      0|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  511|      0|    }
  512|     48|}
funcobject.c:_Py_REFCNT:
  105|  1.60k|    static inline Py_ssize_t _Py_REFCNT(PyObject *ob) {
  106|  1.60k|    #if !defined(Py_GIL_DISABLED)
  107|  1.60k|        return ob->ob_refcnt;
  108|       |    #else
  109|       |        uint32_t local = _Py_atomic_load_uint32_relaxed(&ob->ob_ref_local);
  110|       |        if (local == _Py_IMMORTAL_REFCNT_LOCAL) {
  111|       |            return _Py_IMMORTAL_INITIAL_REFCNT;
  112|       |        }
  113|       |        Py_ssize_t shared = _Py_atomic_load_ssize_relaxed(&ob->ob_ref_shared);
  114|       |        return _Py_STATIC_CAST(Py_ssize_t, local) +
  115|       |               Py_ARITHMETIC_RIGHT_SHIFT(Py_ssize_t, shared, _Py_REF_SHARED_SHIFT);
  116|       |    #endif
  117|  1.60k|    }
funcobject.c:Py_DECREF:
  418|  1.80k|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|  1.80k|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|  1.80k|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  1.80k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.80k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 1.09k, False: 712]
  |  |  ------------------
  ------------------
  422|  1.09k|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|  1.09k|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|  1.09k|        return;
  424|  1.09k|    }
  425|    712|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|    712|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|    712|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 41, False: 671]
  ------------------
  427|     41|        _Py_Dealloc(op);
  428|     41|    }
  429|    712|}
funcobject.c:_Py_IsImmortal:
  127|  2.14k|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|  2.14k|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|  2.14k|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|  2.14k|}
funcobject.c:Py_SET_REFCNT:
  154|    336|static inline void Py_SET_REFCNT(PyObject *ob, Py_ssize_t refcnt) {
  155|    336|    assert(refcnt >= 0);
  ------------------
  |  Branch (155:5): [True: 336, False: 0]
  ------------------
  156|       |#if (defined(Py_LIMITED_API) && Py_LIMITED_API+0 >= 0x030d0000) \
  157|       |    || defined(_Py_OPAQUE_PYOBJECT)
  158|       |    // Stable ABI implements Py_SET_REFCNT() as a function call
  159|       |    // on limited C API version 3.13 and newer, and abi3t.
  160|       |    _Py_SetRefcnt(ob, refcnt);
  161|       |#else
  162|       |    // This immortal check is for code that is unaware of immortal objects.
  163|       |    // The runtime tracks these objects and we should avoid as much
  164|       |    // as possible having extensions inadvertently change the refcnt
  165|       |    // of an immortalized object.
  166|    336|    if (_Py_IsImmortal(ob)) {
  ------------------
  |  |  137|    336|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    336|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    336|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 0, False: 336]
  |  |  ------------------
  ------------------
  167|      0|        return;
  168|      0|    }
  169|    336|#ifndef Py_GIL_DISABLED
  170|    336|#if SIZEOF_VOID_P > 4
  171|    336|    ob->ob_refcnt = (uint32_t)refcnt;
  172|       |#else
  173|       |    ob->ob_refcnt = refcnt;
  174|       |#endif
  175|       |#else
  176|       |    if (_Py_IsOwnedByCurrentThread(ob)) {
  177|       |        if ((size_t)refcnt > (size_t)UINT32_MAX) {
  178|       |            // On overflow, make the object immortal
  179|       |            ob->ob_tid = _Py_UNOWNED_TID;
  180|       |            ob->ob_ref_local = _Py_IMMORTAL_REFCNT_LOCAL;
  181|       |            ob->ob_ref_shared = 0;
  182|       |        }
  183|       |        else {
  184|       |            // Set local refcount to desired refcount and shared refcount
  185|       |            // to zero, but preserve the shared refcount flags.
  186|       |            ob->ob_ref_local = _Py_STATIC_CAST(uint32_t, refcnt);
  187|       |            ob->ob_ref_shared &= _Py_REF_SHARED_FLAG_MASK;
  188|       |        }
  189|       |    }
  190|       |    else {
  191|       |        // Set local refcount to zero and shared refcount to desired refcount.
  192|       |        // Mark the object as merged.
  193|       |        ob->ob_tid = _Py_UNOWNED_TID;
  194|       |        ob->ob_ref_local = 0;
  195|       |        ob->ob_ref_shared = _Py_REF_SHARED(refcnt, _Py_REF_MERGED);
  196|       |    }
  197|       |#endif  // Py_GIL_DISABLED
  198|    336|#endif  // Py_LIMITED_API
  199|    336|}
interpolationobject.c:Py_DECREF:
  418|      1|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|      1|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|      1|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  422|      0|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|      0|        return;
  424|      0|    }
  425|      1|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|      1|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|      1|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 0, False: 1]
  ------------------
  427|      0|        _Py_Dealloc(op);
  428|      0|    }
  429|      1|}
interpolationobject.c:_Py_IsImmortal:
  127|      1|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|      1|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|      1|}
lazyimportobject.c:_Py_XNewRef:
  541|      8|{
  542|      8|    Py_XINCREF(obj);
  ------------------
  |  |  514|      8|#  define Py_XINCREF(op) Py_XINCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      8|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  543|      8|    return obj;
  544|      8|}
lazyimportobject.c:Py_XINCREF:
  508|      8|{
  509|      8|    if (op != _Py_NULL) {
  ------------------
  |  |   57|      8|#  define _Py_NULL NULL
  ------------------
  |  Branch (509:9): [True: 4, False: 4]
  ------------------
  510|      4|        Py_INCREF(op);
  ------------------
  |  |  310|      4|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  511|      4|    }
  512|      8|}
lazyimportobject.c:Py_INCREF:
  256|     12|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|     12|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|     12|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 4, False: 8]
  ------------------
  288|       |        // the object is immortal
  289|      4|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|      4|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|      4|        return;
  291|      4|    }
  292|      8|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|      8|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|      8|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|      8|#endif
  308|      8|}
lazyimportobject.c:_Py_NewRef:
  535|      8|{
  536|      8|    Py_INCREF(obj);
  ------------------
  |  |  310|      8|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      8|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|      8|    return obj;
  538|      8|}
methodobject.c:_Py_NewRef:
  535|      2|{
  536|      2|    Py_INCREF(obj);
  ------------------
  |  |  310|      2|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|      2|    return obj;
  538|      2|}
methodobject.c:Py_INCREF:
  256|  1.31k|{
  257|       |#if (defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))) \
  258|       |    || defined(_Py_OPAQUE_PYOBJECT)
  259|       |    // Stable ABI implements Py_INCREF() as a function call on limited C API
  260|       |    // version 3.12 and newer, abi3t, and on Python built in debug mode.
  261|       |    // _Py_IncRef() was added to Python 3.10.0a7, use Py_IncRef() on older versions.
  262|       |    // Py_IncRef() accepts NULL whereas _Py_IncRef() doesn't.
  263|       |#  if Py_LIMITED_API+0 >= 0x030a00A7
  264|       |    _Py_IncRef(op);
  265|       |#  else
  266|       |    Py_IncRef(op);
  267|       |#  endif
  268|       |#else
  269|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  270|       |    // directly PyObject.ob_refcnt.
  271|       |#if defined(Py_GIL_DISABLED)
  272|       |    uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
  273|       |    uint32_t new_local = local + 1;
  274|       |    if (new_local == 0) {
  275|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  276|       |        // local is equal to _Py_IMMORTAL_REFCNT_LOCAL: do nothing
  277|       |        return;
  278|       |    }
  279|       |    if (_Py_IsOwnedByCurrentThread(op)) {
  280|       |        _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, new_local);
  281|       |    }
  282|       |    else {
  283|       |        _Py_atomic_add_ssize(&op->ob_ref_shared, (1 << _Py_REF_SHARED_SHIFT));
  284|       |    }
  285|       |#elif SIZEOF_VOID_P > 4
  286|       |    uint32_t cur_refcnt = op->ob_refcnt;
  287|  1.31k|    if (cur_refcnt >= _Py_IMMORTAL_INITIAL_REFCNT) {
  ------------------
  |  |   47|  1.31k|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
  |  Branch (287:9): [True: 475, False: 835]
  ------------------
  288|       |        // the object is immortal
  289|    475|        _Py_INCREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   21|    475|#  define _Py_INCREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  290|    475|        return;
  291|    475|    }
  292|    835|    op->ob_refcnt = cur_refcnt + 1;
  293|       |#else
  294|       |    if (_Py_IsImmortal(op)) {
  295|       |        _Py_INCREF_IMMORTAL_STAT_INC();
  296|       |        return;
  297|       |    }
  298|       |    op->ob_refcnt++;
  299|       |#endif
  300|    835|    _Py_INCREF_STAT_INC();
  ------------------
  |  |   19|    835|#  define _Py_INCREF_STAT_INC() ((void)0)
  ------------------
  301|       |#ifdef Py_REF_DEBUG
  302|       |    // Don't count the incref if the object is immortal.
  303|       |    if (!_Py_IsImmortal(op)) {
  304|       |        _Py_INCREF_IncRefTotal();
  305|       |    }
  306|       |#endif
  307|    835|#endif
  308|    835|}
methodobject.c:_Py_XNewRef:
  541|  1.76k|{
  542|  1.76k|    Py_XINCREF(obj);
  ------------------
  |  |  514|  1.76k|#  define Py_XINCREF(op) Py_XINCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  1.76k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.76k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  543|  1.76k|    return obj;
  544|  1.76k|}
methodobject.c:Py_XINCREF:
  508|  1.76k|{
  509|  1.76k|    if (op != _Py_NULL) {
  ------------------
  |  |   57|  1.76k|#  define _Py_NULL NULL
  ------------------
  |  Branch (509:9): [True: 1.30k, False: 454]
  ------------------
  510|  1.30k|        Py_INCREF(op);
  ------------------
  |  |  310|  1.30k|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  1.30k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.30k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  511|  1.30k|    }
  512|  1.76k|}
methodobject.c:_Py_REFCNT:
  105|    254|    static inline Py_ssize_t _Py_REFCNT(PyObject *ob) {
  106|    254|    #if !defined(Py_GIL_DISABLED)
  107|    254|        return ob->ob_refcnt;
  108|       |    #else
  109|       |        uint32_t local = _Py_atomic_load_uint32_relaxed(&ob->ob_ref_local);
  110|       |        if (local == _Py_IMMORTAL_REFCNT_LOCAL) {
  111|       |            return _Py_IMMORTAL_INITIAL_REFCNT;
  112|       |        }
  113|       |        Py_ssize_t shared = _Py_atomic_load_ssize_relaxed(&ob->ob_ref_shared);
  114|       |        return _Py_STATIC_CAST(Py_ssize_t, local) +
  115|       |               Py_ARITHMETIC_RIGHT_SHIFT(Py_ssize_t, shared, _Py_REF_SHARED_SHIFT);
  116|       |    #endif
  117|    254|    }
methodobject.c:Py_XDECREF:
  518|    762|{
  519|    762|    if (op != _Py_NULL) {
  ------------------
  |  |   57|    762|#  define _Py_NULL NULL
  ------------------
  |  Branch (519:9): [True: 244, False: 518]
  ------------------
  520|    244|        Py_DECREF(op);
  ------------------
  |  |  430|    244|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    244|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    244|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  521|    244|    }
  522|    762|}
methodobject.c:Py_DECREF:
  418|    247|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|    247|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|    247|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    247|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    247|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 57, False: 190]
  |  |  ------------------
  ------------------
  422|     57|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|     57|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|     57|        return;
  424|     57|    }
  425|    190|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|    190|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|    190|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 11, False: 179]
  ------------------
  427|     11|        _Py_Dealloc(op);
  428|     11|    }
  429|    190|}
methodobject.c:_Py_IsImmortal:
  127|    247|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|    247|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|    247|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|    247|}
namespaceobject.c:Py_DECREF:
  418|      1|{
  419|       |    // Non-limited C API and limited C API for Python 3.9 and older access
  420|       |    // directly PyObject.ob_refcnt.
  421|      1|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|      1|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  422|      0|        _Py_DECREF_IMMORTAL_STAT_INC();
  ------------------
  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  ------------------
  423|      0|        return;
  424|      0|    }
  425|      1|    _Py_DECREF_STAT_INC();
  ------------------
  |  |   20|      1|#  define _Py_DECREF_STAT_INC() ((void)0)
  ------------------
  426|      1|    if (--op->ob_refcnt == 0) {
  ------------------
  |  Branch (426:9): [True: 1, False: 0]
  ------------------
  427|      1|        _Py_Dealloc(op);
  428|      1|    }
  429|      1|}
namespaceobject.c:_Py_IsImmortal:
  127|      1|{
  128|       |#if defined(Py_GIL_DISABLED)
  129|       |    return (_Py_atomic_load_uint32_relaxed(&op->ob_ref_local) ==
  130|       |            _Py_IMMORTAL_REFCNT_LOCAL);
  131|       |#elif SIZEOF_VOID_P > 4
  132|      1|    return _Py_CAST(int32_t, op->ob_refcnt) < 0;
  ------------------
  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  ------------------
  133|       |#else
  134|       |    return op->ob_refcnt >= _Py_IMMORTAL_MINIMUM_REFCNT;
  135|       |#endif
  136|      1|}

PyInit__abc:
 1000|      1|{
 1001|      1|    return PyModuleDef_Init(&_abcmodule);
 1002|      1|}
_abc.c:get_abc_state:
   29|    134|{
   30|    134|    void *state = _PyModule_GetState(module);
   31|    134|    assert(state != NULL);
  ------------------
  |  Branch (31:5): [True: 134, False: 0]
  ------------------
   32|    134|    return (_abcmodule_state *)state;
   33|    134|}
_abc.c:get_invalidation_counter:
   37|     63|{
   38|       |#ifdef Py_GIL_DISABLED
   39|       |    return _Py_atomic_load_uint64(&state->abc_invalidation_counter);
   40|       |#else
   41|     63|    return state->abc_invalidation_counter;
   42|     63|#endif
   43|     63|}
_abc.c:_abc__abc_init:
  499|     29|{
  500|     29|    _abcmodule_state *state = get_abc_state(module);
  501|     29|    PyObject *data;
  502|     29|    if (compute_abstract_methods(self) < 0) {
  ------------------
  |  Branch (502:9): [True: 0, False: 29]
  ------------------
  503|      0|        return NULL;
  504|      0|    }
  505|       |
  506|       |    /* Set up inheritance registry. */
  507|     29|    data = abc_data_new(state->_abc_data_type, NULL, NULL);
  508|     29|    if (data == NULL) {
  ------------------
  |  Branch (508:9): [True: 0, False: 29]
  ------------------
  509|      0|        return NULL;
  510|      0|    }
  511|     29|    if (PyObject_SetAttr(self, &_Py_ID(_abc_impl), data) < 0) {
  ------------------
  |  |  917|     29|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     29|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     29|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (511:9): [True: 0, False: 29]
  ------------------
  512|      0|        Py_DECREF(data);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  513|      0|        return NULL;
  514|      0|    }
  515|     29|    Py_DECREF(data);
  ------------------
  |  |  430|     29|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     29|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     29|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  516|       |    /* If __abc_tpflags__ & COLLECTION_FLAGS is set, then set the corresponding bit(s)
  517|       |     * in the new class.
  518|       |     * Used by collections.abc.Sequence and collections.abc.Mapping to indicate
  519|       |     * their special status w.r.t. pattern matching. */
  520|     29|    if (PyType_Check(self)) {
  ------------------
  |  |  766|     29|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     29|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     29|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (766:28): [True: 29, False: 0]
  |  |  ------------------
  ------------------
  521|     29|        PyTypeObject *cls = (PyTypeObject *)self;
  522|     29|        PyObject *dict = _PyType_GetDict(cls);
  523|     29|        PyObject *flags = NULL;
  524|     29|        if (PyDict_Pop(dict, &_Py_ID(__abc_tpflags__), &flags) < 0) {
  ------------------
  |  |  917|     29|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     29|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     29|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (524:13): [True: 0, False: 29]
  ------------------
  525|      0|            return NULL;
  526|      0|        }
  527|     29|        if (flags == NULL || !PyLong_CheckExact(flags)) {
  ------------------
  |  |   14|      2|#define PyLong_CheckExact(op) Py_IS_TYPE((op), &PyLong_Type)
  |  |  ------------------
  |  |  |  |  215|      2|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (527:13): [True: 27, False: 2]
  |  Branch (527:30): [True: 0, False: 2]
  ------------------
  528|     27|            Py_XDECREF(flags);
  ------------------
  |  |  524|     27|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     27|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     27|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  529|     27|            Py_RETURN_NONE;
  ------------------
  |  |  628|     27|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|     27|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
  530|     27|        }
  531|       |
  532|      2|        long val = PyLong_AsLong(flags);
  533|      2|        Py_DECREF(flags);
  ------------------
  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  534|      2|        if (val == -1 && PyErr_Occurred()) {
  ------------------
  |  Branch (534:13): [True: 0, False: 2]
  |  Branch (534:26): [True: 0, False: 0]
  ------------------
  535|      0|            return NULL;
  536|      0|        }
  537|      2|        if ((val & COLLECTION_FLAGS) == COLLECTION_FLAGS) {
  ------------------
  |  |  484|      2|#define COLLECTION_FLAGS (Py_TPFLAGS_SEQUENCE | Py_TPFLAGS_MAPPING)
  |  |  ------------------
  |  |  |  |  490|      2|#define Py_TPFLAGS_SEQUENCE (1 << 5)
  |  |  ------------------
  |  |               #define COLLECTION_FLAGS (Py_TPFLAGS_SEQUENCE | Py_TPFLAGS_MAPPING)
  |  |  ------------------
  |  |  |  |  492|      2|#define Py_TPFLAGS_MAPPING (1 << 6)
  |  |  ------------------
  ------------------
                      if ((val & COLLECTION_FLAGS) == COLLECTION_FLAGS) {
  ------------------
  |  |  484|      2|#define COLLECTION_FLAGS (Py_TPFLAGS_SEQUENCE | Py_TPFLAGS_MAPPING)
  |  |  ------------------
  |  |  |  |  490|      2|#define Py_TPFLAGS_SEQUENCE (1 << 5)
  |  |  ------------------
  |  |               #define COLLECTION_FLAGS (Py_TPFLAGS_SEQUENCE | Py_TPFLAGS_MAPPING)
  |  |  ------------------
  |  |  |  |  492|      2|#define Py_TPFLAGS_MAPPING (1 << 6)
  |  |  ------------------
  ------------------
  |  Branch (537:13): [True: 0, False: 2]
  ------------------
  538|      0|            PyErr_SetString(PyExc_TypeError, "__abc_tpflags__ cannot be both Py_TPFLAGS_SEQUENCE and Py_TPFLAGS_MAPPING");
  539|      0|            return NULL;
  540|      0|        }
  541|      2|        _PyType_SetFlags((PyTypeObject *)self, 0, val & COLLECTION_FLAGS);
  ------------------
  |  |  484|      2|#define COLLECTION_FLAGS (Py_TPFLAGS_SEQUENCE | Py_TPFLAGS_MAPPING)
  |  |  ------------------
  |  |  |  |  490|      2|#define Py_TPFLAGS_SEQUENCE (1 << 5)
  |  |  ------------------
  |  |               #define COLLECTION_FLAGS (Py_TPFLAGS_SEQUENCE | Py_TPFLAGS_MAPPING)
  |  |  ------------------
  |  |  |  |  492|      2|#define Py_TPFLAGS_MAPPING (1 << 6)
  |  |  ------------------
  ------------------
  542|      2|    }
  543|      2|    Py_RETURN_NONE;
  ------------------
  |  |  628|      2|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|      2|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
  544|     29|}
_abc.c:compute_abstract_methods:
  363|     29|{
  364|     29|    int ret = -1;
  365|     29|    PyObject *abstracts = PyFrozenSet_New(NULL);
  366|     29|    if (abstracts == NULL) {
  ------------------
  |  Branch (366:9): [True: 0, False: 29]
  ------------------
  367|      0|        return -1;
  368|      0|    }
  369|       |
  370|     29|    PyObject *ns = NULL, *items = NULL, *bases = NULL;  // Py_XDECREF()ed on error.
  371|       |
  372|       |    /* Stage 1: direct abstract methods. */
  373|     29|    ns = PyObject_GetAttr(self, &_Py_ID(__dict__));
  ------------------
  |  |  917|     29|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     29|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     29|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  374|     29|    if (!ns) {
  ------------------
  |  Branch (374:9): [True: 0, False: 29]
  ------------------
  375|      0|        goto error;
  376|      0|    }
  377|       |
  378|       |    // We can't use PyDict_Next(ns) even when ns is dict because
  379|       |    // _PyObject_IsAbstract() can mutate ns.
  380|     29|    items = PyMapping_Items(ns);
  381|     29|    if (!items) {
  ------------------
  |  Branch (381:9): [True: 0, False: 29]
  ------------------
  382|      0|        goto error;
  383|      0|    }
  384|     29|    assert(PyList_Check(items));
  ------------------
  |  Branch (384:5): [True: 29, False: 0]
  ------------------
  385|    309|    for (Py_ssize_t pos = 0; pos < PyList_GET_SIZE(items); pos++) {
  ------------------
  |  |   38|    309|#define PyList_GET_SIZE(op) PyList_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    309|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    309|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (385:30): [True: 280, False: 29]
  ------------------
  386|    280|        PyObject *it = PySequence_Fast(
  387|    280|                PyList_GET_ITEM(items, pos),
  ------------------
  |  |   40|    280|#define PyList_GET_ITEM(op, index) (_PyList_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   26|    280|    (assert(PyList_Check(op)), _Py_CAST(PyListObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    280|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (387:17): [True: 280, False: 0]
  ------------------
  388|      0|                "items() returned non-iterable");
  389|    280|        if (!it) {
  ------------------
  |  Branch (389:13): [True: 0, False: 280]
  ------------------
  390|      0|            goto error;
  391|      0|        }
  392|    280|        if (PySequence_Fast_GET_SIZE(it) != 2) {
  ------------------
  |  |   92|    280|    (PyList_Check(o) ? PyList_GET_SIZE(o) : PyTuple_GET_SIZE(o))
  |  |  ------------------
  |  |  |  |   25|    280|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LIST_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|    280|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (760:41): [True: 0, False: 280]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (PyList_Check(o) ? PyList_GET_SIZE(o) : PyTuple_GET_SIZE(o))
  |  |  ------------------
  |  |  |  |   38|      0|#define PyList_GET_SIZE(op) PyList_GET_SIZE(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (PyList_Check(o) ? PyList_GET_SIZE(o) : PyTuple_GET_SIZE(o))
  |  |  ------------------
  |  |  |  |   27|    280|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    280|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    280|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (392:13): [True: 0, False: 280]
  ------------------
  393|      0|            PyErr_SetString(PyExc_TypeError,
  394|      0|                            "items() returned item which size is not 2");
  395|      0|            Py_DECREF(it);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  396|      0|            goto error;
  397|      0|        }
  398|       |
  399|       |        // borrowed
  400|    280|        PyObject *key = PySequence_Fast_GET_ITEM(it, 0);
  ------------------
  |  |   97|    280|     (PyList_Check(o) ? PyList_GET_ITEM((o), (i)) : PyTuple_GET_ITEM((o), (i)))
  |  |  ------------------
  |  |  |  |   25|    280|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LIST_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|    280|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (760:41): [True: 0, False: 280]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                    (PyList_Check(o) ? PyList_GET_ITEM((o), (i)) : PyTuple_GET_ITEM((o), (i)))
  |  |  ------------------
  |  |  |  |   40|      0|#define PyList_GET_ITEM(op, index) (_PyList_CAST(op)->ob_item[(index)])
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|    (assert(PyList_Check(op)), _Py_CAST(PyListObject*, (op)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                    (PyList_Check(o) ? PyList_GET_ITEM((o), (i)) : PyTuple_GET_ITEM((o), (i)))
  |  |  ------------------
  |  |  |  |   29|    280|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  |  |  ------------------
  |  |  |  |  |  |   19|    280|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    280|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (400:25): [True: 0, False: 0]
  |  Branch (400:25): [True: 280, False: 0]
  ------------------
  401|    280|        PyObject *value = PySequence_Fast_GET_ITEM(it, 1);
  ------------------
  |  |   97|    280|     (PyList_Check(o) ? PyList_GET_ITEM((o), (i)) : PyTuple_GET_ITEM((o), (i)))
  |  |  ------------------
  |  |  |  |   25|    280|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LIST_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|    280|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (760:41): [True: 0, False: 280]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                    (PyList_Check(o) ? PyList_GET_ITEM((o), (i)) : PyTuple_GET_ITEM((o), (i)))
  |  |  ------------------
  |  |  |  |   40|      0|#define PyList_GET_ITEM(op, index) (_PyList_CAST(op)->ob_item[(index)])
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|    (assert(PyList_Check(op)), _Py_CAST(PyListObject*, (op)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                    (PyList_Check(o) ? PyList_GET_ITEM((o), (i)) : PyTuple_GET_ITEM((o), (i)))
  |  |  ------------------
  |  |  |  |   29|    280|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  |  |  ------------------
  |  |  |  |  |  |   19|    280|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    280|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (401:27): [True: 0, False: 0]
  |  Branch (401:27): [True: 280, False: 0]
  ------------------
  402|       |        // items or it may be cleared while accessing __abstractmethod__
  403|       |        // So we need to keep strong reference for key
  404|    280|        Py_INCREF(key);
  ------------------
  |  |  310|    280|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    280|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    280|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  405|    280|        int is_abstract = _PyObject_IsAbstract(value);
  406|    280|        if (is_abstract < 0 ||
  ------------------
  |  Branch (406:13): [True: 0, False: 280]
  ------------------
  407|    280|                (is_abstract && PySet_Add(abstracts, key) < 0)) {
  ------------------
  |  Branch (407:18): [True: 27, False: 253]
  |  Branch (407:33): [True: 0, False: 27]
  ------------------
  408|      0|            Py_DECREF(it);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  409|      0|            Py_DECREF(key);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  410|      0|            goto error;
  411|      0|        }
  412|    280|        Py_DECREF(key);
  ------------------
  |  |  430|    280|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    280|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    280|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  413|    280|        Py_DECREF(it);
  ------------------
  |  |  430|    280|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    280|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    280|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  414|    280|    }
  415|       |
  416|       |    /* Stage 2: inherited abstract methods. */
  417|     29|    bases = PyObject_GetAttr(self, &_Py_ID(__bases__));
  ------------------
  |  |  917|     29|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     29|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     29|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  418|     29|    if (!bases) {
  ------------------
  |  Branch (418:9): [True: 0, False: 29]
  ------------------
  419|      0|        goto error;
  420|      0|    }
  421|     29|    if (!PyTuple_Check(bases)) {
  ------------------
  |  |   27|     29|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TUPLE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     29|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (421:9): [True: 0, False: 29]
  ------------------
  422|      0|        PyErr_SetString(PyExc_TypeError, "__bases__ is not tuple");
  423|      0|        goto error;
  424|      0|    }
  425|       |
  426|     64|    for (Py_ssize_t pos = 0; pos < PyTuple_GET_SIZE(bases); pos++) {
  ------------------
  |  |   27|     64|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     64|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     64|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (426:30): [True: 35, False: 29]
  ------------------
  427|     35|        PyObject *item = PyTuple_GET_ITEM(bases, pos);  // borrowed
  ------------------
  |  |   29|     35|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|     35|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     35|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (427:26): [True: 35, False: 0]
  ------------------
  428|      0|        PyObject *base_abstracts, *iter;
  429|       |
  430|     35|        if (PyObject_GetOptionalAttr(item, &_Py_ID(__abstractmethods__),
  ------------------
  |  |  917|     35|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     35|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     35|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (430:13): [True: 0, False: 35]
  ------------------
  431|     35|                                 &base_abstracts) < 0) {
  432|      0|            goto error;
  433|      0|        }
  434|     35|        if (base_abstracts == NULL) {
  ------------------
  |  Branch (434:13): [True: 9, False: 26]
  ------------------
  435|      9|            continue;
  436|      9|        }
  437|     26|        if (!(iter = PyObject_GetIter(base_abstracts))) {
  ------------------
  |  Branch (437:13): [True: 0, False: 26]
  ------------------
  438|      0|            Py_DECREF(base_abstracts);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  439|      0|            goto error;
  440|      0|        }
  441|     26|        Py_DECREF(base_abstracts);
  ------------------
  |  |  430|     26|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     26|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     26|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  442|     26|        PyObject *key, *value;
  443|     71|        while ((key = PyIter_Next(iter))) {
  ------------------
  |  Branch (443:16): [True: 45, False: 26]
  ------------------
  444|     45|            if (PyObject_GetOptionalAttr(self, key, &value) < 0) {
  ------------------
  |  Branch (444:17): [True: 0, False: 45]
  ------------------
  445|      0|                Py_DECREF(key);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  446|      0|                Py_DECREF(iter);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  447|      0|                goto error;
  448|      0|            }
  449|     45|            if (value == NULL) {
  ------------------
  |  Branch (449:17): [True: 0, False: 45]
  ------------------
  450|      0|                Py_DECREF(key);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  451|      0|                continue;
  452|      0|            }
  453|       |
  454|     45|            int is_abstract = _PyObject_IsAbstract(value);
  455|     45|            Py_DECREF(value);
  ------------------
  |  |  430|     45|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     45|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     45|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  456|     45|            if (is_abstract < 0 ||
  ------------------
  |  Branch (456:17): [True: 0, False: 45]
  ------------------
  457|     45|                    (is_abstract && PySet_Add(abstracts, key) < 0))
  ------------------
  |  Branch (457:22): [True: 21, False: 24]
  |  Branch (457:37): [True: 0, False: 21]
  ------------------
  458|      0|            {
  459|      0|                Py_DECREF(key);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  460|      0|                Py_DECREF(iter);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  461|      0|                goto error;
  462|      0|            }
  463|     45|            Py_DECREF(key);
  ------------------
  |  |  430|     45|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     45|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     45|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  464|     45|        }
  465|     26|        Py_DECREF(iter);
  ------------------
  |  |  430|     26|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     26|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     26|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  466|     26|        if (PyErr_Occurred()) {
  ------------------
  |  Branch (466:13): [True: 0, False: 26]
  ------------------
  467|      0|            goto error;
  468|      0|        }
  469|     26|    }
  470|       |
  471|     29|    if (PyObject_SetAttr(self, &_Py_ID(__abstractmethods__), abstracts) < 0) {
  ------------------
  |  |  917|     29|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     29|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     29|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (471:9): [True: 0, False: 29]
  ------------------
  472|      0|        goto error;
  473|      0|    }
  474|       |
  475|     29|    ret = 0;
  476|     29|error:
  477|     29|    Py_DECREF(abstracts);
  ------------------
  |  |  430|     29|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     29|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     29|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  478|     29|    Py_XDECREF(ns);
  ------------------
  |  |  524|     29|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     29|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     29|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  479|     29|    Py_XDECREF(items);
  ------------------
  |  |  524|     29|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     29|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     29|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  480|     29|    Py_XDECREF(bases);
  ------------------
  |  |  524|     29|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     29|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     29|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  481|     29|    return ret;
  482|     29|}
_abc.c:abc_data_new:
  125|     29|{
  126|     29|    _abc_data *self = (_abc_data *) type->tp_alloc(type, 0);
  127|     29|    _abcmodule_state *state = NULL;
  128|     29|    if (self == NULL) {
  ------------------
  |  Branch (128:9): [True: 0, False: 29]
  ------------------
  129|      0|        return NULL;
  130|      0|    }
  131|       |
  132|     29|    state = _PyType_GetModuleState(type);
  133|     29|    if (state == NULL) {
  ------------------
  |  Branch (133:9): [True: 0, False: 29]
  ------------------
  134|      0|        Py_DECREF(self);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  135|      0|        return NULL;
  136|      0|    }
  137|       |
  138|     29|    self->_abc_registry = NULL;
  139|     29|    self->_abc_cache = NULL;
  140|       |    self->_abc_negative_cache = NULL;
  141|     29|    self->_abc_negative_cache_version = get_invalidation_counter(state);
  142|     29|    return (PyObject *) self;
  143|     29|}
_abc.c:_get_impl:
  166|     52|{
  167|     52|    _abcmodule_state *state = get_abc_state(module);
  168|     52|    PyObject *impl = PyObject_GetAttr(self, &_Py_ID(_abc_impl));
  ------------------
  |  |  917|     52|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     52|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     52|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  169|     52|    if (impl == NULL) {
  ------------------
  |  Branch (169:9): [True: 0, False: 52]
  ------------------
  170|      0|        return NULL;
  171|      0|    }
  172|     52|    if (!Py_IS_TYPE(impl, state->_abc_data_type)) {
  ------------------
  |  |  215|     52|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|     52|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     52|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (172:9): [True: 0, False: 52]
  ------------------
  173|      0|        PyErr_SetString(PyExc_TypeError, "_abc_impl is set to a wrong type");
  174|      0|        Py_DECREF(impl);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  175|      0|        return NULL;
  176|      0|    }
  177|     52|    return (_abc_data *)impl;
  178|     52|}
_abc.c:get_cache_version:
   74|     34|{
   75|       |#ifdef Py_GIL_DISABLED
   76|       |    return _Py_atomic_load_uint64(&impl->_abc_negative_cache_version);
   77|       |#else
   78|     34|    return impl->_abc_negative_cache_version;
   79|     34|#endif
   80|     34|}
_abc.c:_abc__abc_register_impl:
  560|     34|{
  561|     34|    if (!PyType_Check(subclass)) {
  ------------------
  |  |  766|     34|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     34|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     34|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (561:9): [True: 0, False: 34]
  ------------------
  562|      0|        PyErr_SetString(PyExc_TypeError, "Can only register classes");
  563|      0|        return NULL;
  564|      0|    }
  565|     34|    int result = PyObject_IsSubclass(subclass, self);
  566|     34|    if (result > 0) {
  ------------------
  |  Branch (566:9): [True: 16, False: 18]
  ------------------
  567|     16|        return Py_NewRef(subclass);  /* Already a subclass. */
  ------------------
  |  |  550|     16|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     16|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     16|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  568|     16|    }
  569|     18|    if (result < 0) {
  ------------------
  |  Branch (569:9): [True: 0, False: 18]
  ------------------
  570|      0|        return NULL;
  571|      0|    }
  572|       |    /* Subtle: test for cycles *after* testing for "already a subclass";
  573|       |       this means we allow X.register(X) and interpret it as a no-op. */
  574|     18|    result = PyObject_IsSubclass(self, subclass);
  575|     18|    if (result > 0) {
  ------------------
  |  Branch (575:9): [True: 0, False: 18]
  ------------------
  576|       |        /* This would create a cycle, which is bad for the algorithm below. */
  577|      0|        PyErr_SetString(PyExc_RuntimeError, "Refusing to create an inheritance cycle");
  578|      0|        return NULL;
  579|      0|    }
  580|     18|    if (result < 0) {
  ------------------
  |  Branch (580:9): [True: 0, False: 18]
  ------------------
  581|      0|        return NULL;
  582|      0|    }
  583|     18|    _abc_data *impl = _get_impl(module, self);
  584|     18|    if (impl == NULL) {
  ------------------
  |  Branch (584:9): [True: 0, False: 18]
  ------------------
  585|      0|        return NULL;
  586|      0|    }
  587|     18|    if (_add_to_weak_set(impl, &impl->_abc_registry, subclass) < 0) {
  ------------------
  |  Branch (587:9): [True: 0, False: 18]
  ------------------
  588|      0|        Py_DECREF(impl);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  589|      0|        return NULL;
  590|      0|    }
  591|     18|    Py_DECREF(impl);
  ------------------
  |  |  430|     18|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     18|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     18|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  592|       |
  593|       |    /* Invalidate negative cache */
  594|     18|    increment_invalidation_counter(get_abc_state(module));
  595|       |
  596|       |    /* Set Py_TPFLAGS_SEQUENCE or Py_TPFLAGS_MAPPING flag */
  597|     18|    if (PyType_Check(self)) {
  ------------------
  |  |  766|     18|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     18|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     18|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (766:28): [True: 18, False: 0]
  |  |  ------------------
  ------------------
  598|     18|        unsigned long collection_flag =
  599|     18|            PyType_GetFlags((PyTypeObject *)self) & COLLECTION_FLAGS;
  ------------------
  |  |  484|     18|#define COLLECTION_FLAGS (Py_TPFLAGS_SEQUENCE | Py_TPFLAGS_MAPPING)
  |  |  ------------------
  |  |  |  |  490|     18|#define Py_TPFLAGS_SEQUENCE (1 << 5)
  |  |  ------------------
  |  |               #define COLLECTION_FLAGS (Py_TPFLAGS_SEQUENCE | Py_TPFLAGS_MAPPING)
  |  |  ------------------
  |  |  |  |  492|     18|#define Py_TPFLAGS_MAPPING (1 << 6)
  |  |  ------------------
  ------------------
  600|     18|        if (collection_flag) {
  ------------------
  |  Branch (600:13): [True: 13, False: 5]
  ------------------
  601|     13|            _PyType_SetFlagsRecursive((PyTypeObject *)subclass,
  602|     13|                                      COLLECTION_FLAGS,
  ------------------
  |  |  484|     13|#define COLLECTION_FLAGS (Py_TPFLAGS_SEQUENCE | Py_TPFLAGS_MAPPING)
  |  |  ------------------
  |  |  |  |  490|     13|#define Py_TPFLAGS_SEQUENCE (1 << 5)
  |  |  ------------------
  |  |               #define COLLECTION_FLAGS (Py_TPFLAGS_SEQUENCE | Py_TPFLAGS_MAPPING)
  |  |  ------------------
  |  |  |  |  492|     13|#define Py_TPFLAGS_MAPPING (1 << 6)
  |  |  ------------------
  ------------------
  603|     13|                                      collection_flag);
  604|     13|        }
  605|     18|    }
  606|     18|    return Py_NewRef(subclass);
  ------------------
  |  |  550|     18|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     18|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     18|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  607|     18|}
_abc.c:_add_to_weak_set:
  224|     52|{
  225|     52|    PyObject *set;
  226|     52|    Py_BEGIN_CRITICAL_SECTION(impl);
  ------------------
  |  |   51|     52|    {
  ------------------
  227|     52|    set = *pset;
  228|     52|    if (set == NULL) {
  ------------------
  |  Branch (228:9): [True: 24, False: 28]
  ------------------
  229|     24|        set = *pset = PySet_New(NULL);
  230|     24|    }
  231|     52|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|     52|    }
  ------------------
  232|     52|    if (set == NULL) {
  ------------------
  |  Branch (232:9): [True: 0, False: 52]
  ------------------
  233|      0|        return -1;
  234|      0|    }
  235|       |
  236|     52|    PyObject *ref, *wr;
  237|     52|    PyObject *destroy_cb;
  238|     52|    wr = PyWeakref_NewRef(set, NULL);
  239|     52|    if (wr == NULL) {
  ------------------
  |  Branch (239:9): [True: 0, False: 52]
  ------------------
  240|      0|        return -1;
  241|      0|    }
  242|     52|    destroy_cb = PyCFunction_NewEx(&_destroy_def, wr, NULL);
  ------------------
  |  |   87|     52|#define PyCFunction_NewEx(ML, SELF, MOD) PyCMethod_New((ML), (SELF), (MOD), NULL)
  ------------------
  243|     52|    if (destroy_cb == NULL) {
  ------------------
  |  Branch (243:9): [True: 0, False: 52]
  ------------------
  244|      0|        Py_DECREF(wr);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  245|      0|        return -1;
  246|      0|    }
  247|     52|    ref = PyWeakref_NewRef(obj, destroy_cb);
  248|     52|    Py_DECREF(destroy_cb);
  ------------------
  |  |  430|     52|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     52|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     52|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  249|     52|    if (ref == NULL) {
  ------------------
  |  Branch (249:9): [True: 0, False: 52]
  ------------------
  250|      0|        Py_DECREF(wr);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  251|      0|        return -1;
  252|      0|    }
  253|     52|    int ret = PySet_Add(set, ref);
  254|     52|    Py_DECREF(wr);
  ------------------
  |  |  430|     52|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     52|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     52|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  255|     52|    Py_DECREF(ref);
  ------------------
  |  |  430|     52|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     52|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     52|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  256|     52|    return ret;
  257|     52|}
_abc.c:increment_invalidation_counter:
   47|     18|{
   48|       |#ifdef Py_GIL_DISABLED
   49|       |    _Py_atomic_add_uint64(&state->abc_invalidation_counter, 1);
   50|       |#else
   51|     18|    state->abc_invalidation_counter++;
   52|     18|#endif
   53|     18|}
_abc.c:_in_weak_set:
  182|     78|{
  183|     78|    PyObject *set;
  184|     78|    Py_BEGIN_CRITICAL_SECTION(impl);
  ------------------
  |  |   51|     78|    {
  ------------------
  185|     78|    set = *pset;
  186|     78|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|     78|    }
  ------------------
  187|     78|    if (set == NULL || PySet_GET_SIZE(set) == 0) {
  ------------------
  |  |   71|     20|#define PySet_GET_SIZE(so) PySet_GET_SIZE(_PyObject_CAST(so))
  |  |  ------------------
  |  |  |  |  171|     20|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     20|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (187:9): [True: 58, False: 20]
  |  Branch (187:24): [True: 0, False: 20]
  ------------------
  188|     58|        return 0;
  189|     58|    }
  190|     20|    PyObject *ref = PyWeakref_NewRef(obj, NULL);
  191|     20|    if (ref == NULL) {
  ------------------
  |  Branch (191:9): [True: 0, False: 20]
  ------------------
  192|      0|        if (PyErr_ExceptionMatches(PyExc_TypeError)) {
  ------------------
  |  Branch (192:13): [True: 0, False: 0]
  ------------------
  193|      0|            PyErr_Clear();
  194|      0|            return 0;
  195|      0|        }
  196|      0|        return -1;
  197|      0|    }
  198|     20|    int res = PySet_Contains(set, ref);
  199|     20|    Py_DECREF(ref);
  ------------------
  |  |  430|     20|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     20|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     20|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  200|     20|    return res;
  201|     20|}
_abc.c:_abc__abc_subclasscheck_impl:
  712|     34|{
  713|     34|    if (!PyType_Check(subclass)) {
  ------------------
  |  |  766|     34|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     34|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     34|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (713:9): [True: 0, False: 34]
  ------------------
  714|      0|        PyErr_SetString(PyExc_TypeError, "issubclass() arg 1 must be a class");
  715|      0|        return NULL;
  716|      0|    }
  717|       |
  718|     34|    PyObject *ok, *subclasses = NULL, *result = NULL;
  719|     34|    _abcmodule_state *state = NULL;
  720|     34|    Py_ssize_t pos;
  721|     34|    int incache;
  722|     34|    _abc_data *impl = _get_impl(module, self);
  723|     34|    if (impl == NULL) {
  ------------------
  |  Branch (723:9): [True: 0, False: 34]
  ------------------
  724|      0|        return NULL;
  725|      0|    }
  726|       |
  727|       |    /* 1. Check cache. */
  728|     34|    incache = _in_weak_set(impl, &impl->_abc_cache, subclass);
  729|     34|    if (incache < 0) {
  ------------------
  |  Branch (729:9): [True: 0, False: 34]
  ------------------
  730|      0|        goto end;
  731|      0|    }
  732|     34|    if (incache > 0) {
  ------------------
  |  Branch (732:9): [True: 0, False: 34]
  ------------------
  733|      0|        result = Py_True;
  ------------------
  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  734|      0|        goto end;
  735|      0|    }
  736|       |
  737|     34|    state = get_abc_state(module);
  738|       |    /* 2. Check negative cache; may have to invalidate. */
  739|     34|    uint64_t invalidation_counter = get_invalidation_counter(state);
  740|     34|    if (get_cache_version(impl) < invalidation_counter) {
  ------------------
  |  Branch (740:9): [True: 8, False: 26]
  ------------------
  741|       |        /* Invalidate the negative cache. */
  742|      8|        PyObject *negative_cache;
  743|      8|        Py_BEGIN_CRITICAL_SECTION(impl);
  ------------------
  |  |   51|      8|    {
  ------------------
  744|      8|        negative_cache = impl->_abc_negative_cache;
  745|      8|        Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|      8|    }
  ------------------
  746|      8|        if (negative_cache != NULL && PySet_Clear(negative_cache) < 0) {
  ------------------
  |  Branch (746:13): [True: 8, False: 0]
  |  Branch (746:39): [True: 0, False: 8]
  ------------------
  747|      0|            goto end;
  748|      0|        }
  749|      8|        set_cache_version(impl, invalidation_counter);
  750|      8|    }
  751|     26|    else {
  752|     26|        incache = _in_weak_set(impl, &impl->_abc_negative_cache, subclass);
  753|     26|        if (incache < 0) {
  ------------------
  |  Branch (753:13): [True: 0, False: 26]
  ------------------
  754|      0|            goto end;
  755|      0|        }
  756|     26|        if (incache > 0) {
  ------------------
  |  Branch (756:13): [True: 0, False: 26]
  ------------------
  757|      0|            result = Py_False;
  ------------------
  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  758|      0|            goto end;
  759|      0|        }
  760|     26|    }
  761|       |
  762|       |    /* 3. Check the subclass hook. */
  763|     34|    ok = PyObject_CallMethodOneArg(
  764|     34|            (PyObject *)self, &_Py_ID(__subclasshook__), subclass);
  ------------------
  |  |  917|     34|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     34|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     34|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  765|     34|    if (ok == NULL) {
  ------------------
  |  Branch (765:9): [True: 0, False: 34]
  ------------------
  766|      0|        goto end;
  767|      0|    }
  768|     34|    if (ok == Py_True) {
  ------------------
  |  |   26|     34|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  ------------------
  |  |  |  |  171|     34|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     34|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (768:9): [True: 16, False: 18]
  ------------------
  769|     16|        Py_DECREF(ok);
  ------------------
  |  |  430|     16|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     16|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     16|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  770|     16|        if (_add_to_weak_set(impl, &impl->_abc_cache, subclass) < 0) {
  ------------------
  |  Branch (770:13): [True: 0, False: 16]
  ------------------
  771|      0|            goto end;
  772|      0|        }
  773|     16|        result = Py_True;
  ------------------
  |  |   26|     16|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  ------------------
  |  |  |  |  171|     16|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     16|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  774|     16|        goto end;
  775|     16|    }
  776|     18|    if (ok == Py_False) {
  ------------------
  |  |   25|     18|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  ------------------
  |  |  |  |  171|     18|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     18|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (776:9): [True: 0, False: 18]
  ------------------
  777|      0|        Py_DECREF(ok);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  778|      0|        if (_add_to_weak_set(impl, &impl->_abc_negative_cache, subclass) < 0) {
  ------------------
  |  Branch (778:13): [True: 0, False: 0]
  ------------------
  779|      0|            goto end;
  780|      0|        }
  781|      0|        result = Py_False;
  ------------------
  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  782|      0|        goto end;
  783|      0|    }
  784|     18|    if (ok != Py_NotImplemented) {
  ------------------
  |  |  640|     18|#  define Py_NotImplemented (&_Py_NotImplementedStruct)
  ------------------
  |  Branch (784:9): [True: 0, False: 18]
  ------------------
  785|      0|        Py_DECREF(ok);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  786|      0|        PyErr_SetString(PyExc_AssertionError, "__subclasshook__ must return either"
  787|      0|                                              " False, True, or NotImplemented");
  788|      0|        goto end;
  789|      0|    }
  790|     18|    Py_DECREF(ok);
  ------------------
  |  |  430|     18|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     18|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     18|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  791|       |
  792|       |    /* 4. Check if it's a direct subclass. */
  793|     18|    if (PyType_IsSubtype((PyTypeObject *)subclass, (PyTypeObject *)self)) {
  ------------------
  |  Branch (793:9): [True: 0, False: 18]
  ------------------
  794|      0|        if (_add_to_weak_set(impl, &impl->_abc_cache, subclass) < 0) {
  ------------------
  |  Branch (794:13): [True: 0, False: 0]
  ------------------
  795|      0|            goto end;
  796|      0|        }
  797|      0|        result = Py_True;
  ------------------
  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  798|      0|        goto end;
  799|      0|    }
  800|       |
  801|       |    /* 5. Check if it's a subclass of a registered class (recursive). */
  802|     18|    if (subclasscheck_check_registry(impl, subclass, &result)) {
  ------------------
  |  Branch (802:9): [True: 0, False: 18]
  ------------------
  803|       |        // Exception occurred or result is set.
  804|      0|        goto end;
  805|      0|    }
  806|       |
  807|       |    /* 6. Check if it's a subclass of a subclass (recursive). */
  808|     18|    subclasses = PyObject_CallMethod(self, "__subclasses__", NULL);
  809|     18|    if (subclasses == NULL) {
  ------------------
  |  Branch (809:9): [True: 0, False: 18]
  ------------------
  810|      0|        goto end;
  811|      0|    }
  812|     18|    if (!PyList_Check(subclasses)) {
  ------------------
  |  |   25|     18|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LIST_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     18|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (812:9): [True: 0, False: 18]
  ------------------
  813|      0|        PyErr_SetString(PyExc_TypeError, "__subclasses__() must return a list");
  814|      0|        goto end;
  815|      0|    }
  816|     18|    for (pos = 0; pos < PyList_GET_SIZE(subclasses); pos++) {
  ------------------
  |  |   38|     18|#define PyList_GET_SIZE(op) PyList_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     18|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     18|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (816:19): [True: 0, False: 18]
  ------------------
  817|      0|        PyObject *scls = PyList_GetItemRef(subclasses, pos);
  818|      0|        if (scls == NULL) {
  ------------------
  |  Branch (818:13): [True: 0, False: 0]
  ------------------
  819|      0|            goto end;
  820|      0|        }
  821|      0|        int r = PyObject_IsSubclass(subclass, scls);
  822|      0|        Py_DECREF(scls);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  823|      0|        if (r > 0) {
  ------------------
  |  Branch (823:13): [True: 0, False: 0]
  ------------------
  824|      0|            if (_add_to_weak_set(impl, &impl->_abc_cache, subclass) < 0) {
  ------------------
  |  Branch (824:17): [True: 0, False: 0]
  ------------------
  825|      0|                goto end;
  826|      0|            }
  827|      0|            result = Py_True;
  ------------------
  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  828|      0|            goto end;
  829|      0|        }
  830|      0|        if (r < 0) {
  ------------------
  |  Branch (830:13): [True: 0, False: 0]
  ------------------
  831|      0|            goto end;
  832|      0|        }
  833|      0|    }
  834|       |
  835|       |    /* No dice; update negative cache. */
  836|     18|    if (_add_to_weak_set(impl, &impl->_abc_negative_cache, subclass) < 0) {
  ------------------
  |  Branch (836:9): [True: 0, False: 18]
  ------------------
  837|      0|        goto end;
  838|      0|    }
  839|     18|    result = Py_False;
  ------------------
  |  |   25|     18|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  ------------------
  |  |  |  |  171|     18|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     18|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  840|       |
  841|     34|end:
  842|     34|    Py_DECREF(impl);
  ------------------
  |  |  430|     34|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     34|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     34|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  843|     34|    Py_XDECREF(subclasses);
  ------------------
  |  |  524|     34|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     34|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     34|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  844|     34|    return Py_XNewRef(result);
  ------------------
  |  |  551|     34|#  define Py_XNewRef(obj) _Py_XNewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     34|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     34|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  845|     18|}
_abc.c:set_cache_version:
   84|      8|{
   85|       |#ifdef Py_GIL_DISABLED
   86|       |    _Py_atomic_store_uint64(&impl->_abc_negative_cache_version, version);
   87|       |#else
   88|      8|    impl->_abc_negative_cache_version = version;
   89|      8|#endif
   90|      8|}
_abc.c:subclasscheck_check_registry:
  851|     18|{
  852|       |    // Fast path: check subclass is in weakref directly.
  853|     18|    int ret = _in_weak_set(impl, &impl->_abc_registry, subclass);
  854|     18|    if (ret < 0) {
  ------------------
  |  Branch (854:9): [True: 0, False: 18]
  ------------------
  855|      0|        *result = NULL;
  856|      0|        return -1;
  857|      0|    }
  858|     18|    if (ret > 0) {
  ------------------
  |  Branch (858:9): [True: 0, False: 18]
  ------------------
  859|      0|        *result = Py_True;
  ------------------
  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  860|      0|        return 1;
  861|      0|    }
  862|       |
  863|     18|    PyObject *registry_shared;
  864|     18|    Py_BEGIN_CRITICAL_SECTION(impl);
  ------------------
  |  |   51|     18|    {
  ------------------
  865|     18|    registry_shared = impl->_abc_registry;
  866|     18|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|     18|    }
  ------------------
  867|     18|    if (registry_shared == NULL) {
  ------------------
  |  Branch (867:9): [True: 10, False: 8]
  ------------------
  868|     10|        return 0;
  869|     10|    }
  870|       |
  871|       |    // Make a local copy of the registry to protect against concurrent
  872|       |    // modifications of _abc_registry.
  873|      8|    PyObject *registry = PyFrozenSet_New(registry_shared);
  874|      8|    if (registry == NULL) {
  ------------------
  |  Branch (874:9): [True: 0, False: 8]
  ------------------
  875|      0|        return -1;
  876|      0|    }
  877|      8|    PyObject *key;
  878|      8|    Py_ssize_t pos = 0;
  879|      8|    Py_hash_t hash;
  880|       |
  881|     23|    while (_PySet_NextEntry(registry, &pos, &key, &hash)) {
  ------------------
  |  Branch (881:12): [True: 15, False: 8]
  ------------------
  882|     15|        PyObject *rkey;
  883|     15|        if (PyWeakref_GetRef(key, &rkey) < 0) {
  ------------------
  |  Branch (883:13): [True: 0, False: 15]
  ------------------
  884|       |            // Someone inject non-weakref type in the registry.
  885|      0|            ret = -1;
  886|      0|            break;
  887|      0|        }
  888|       |
  889|     15|        if (rkey == NULL) {
  ------------------
  |  Branch (889:13): [True: 0, False: 15]
  ------------------
  890|      0|            continue;
  891|      0|        }
  892|     15|        int r = PyObject_IsSubclass(subclass, rkey);
  893|     15|        Py_DECREF(rkey);
  ------------------
  |  |  430|     15|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     15|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     15|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  894|     15|        if (r < 0) {
  ------------------
  |  Branch (894:13): [True: 0, False: 15]
  ------------------
  895|      0|            ret = -1;
  896|      0|            break;
  897|      0|        }
  898|     15|        if (r > 0) {
  ------------------
  |  Branch (898:13): [True: 0, False: 15]
  ------------------
  899|      0|            if (_add_to_weak_set(impl, &impl->_abc_cache, subclass) < 0) {
  ------------------
  |  Branch (899:17): [True: 0, False: 0]
  ------------------
  900|      0|                ret = -1;
  901|      0|                break;
  902|      0|            }
  903|      0|            *result = Py_True;
  ------------------
  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  904|      0|            ret = 1;
  905|      0|            break;
  906|      0|        }
  907|     15|    }
  908|       |
  909|      8|    Py_DECREF(registry);
  ------------------
  |  |  430|      8|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      8|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  910|      8|    return ret;
  911|      8|}
_abc.c:_abcmodule_exec:
  945|      1|{
  946|      1|    _abcmodule_state *state = get_abc_state(module);
  947|      1|    state->abc_invalidation_counter = 0;
  948|      1|    state->_abc_data_type = (PyTypeObject *)PyType_FromModuleAndSpec(module, &_abc_data_type_spec, NULL);
  949|      1|    if (state->_abc_data_type == NULL) {
  ------------------
  |  Branch (949:9): [True: 0, False: 1]
  ------------------
  950|      0|        return -1;
  951|      0|    }
  952|       |
  953|      1|    return 0;
  954|      1|}

PyInit__codecs:
 1136|      1|{
 1137|      1|    return PyModuleDef_Init(&codecsmodule);
 1138|      1|}
_codecsmodule.c:_codecs_register:
   66|      1|{
   67|      1|    if (PyCodec_Register(search_function))
  ------------------
  |  Branch (67:9): [True: 0, False: 1]
  ------------------
   68|      0|        return NULL;
   69|       |
   70|      1|    Py_RETURN_NONE;
  ------------------
  |  |  628|      1|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|      1|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
   71|      1|}
_codecsmodule.c:_codecs_lookup_error_impl:
 1017|      6|{
 1018|      6|    return PyCodec_LookupError(name);
 1019|      6|}
_codecsmodule.c:_codecs__normalize_encoding_impl:
 1035|      1|{
 1036|      1|    Py_ssize_t len;
 1037|      1|    const char *cstr = PyUnicode_AsUTF8AndSize(encoding, &len);
 1038|      1|    if (cstr == NULL) {
  ------------------
  |  Branch (1038:9): [True: 0, False: 1]
  ------------------
 1039|      0|        return NULL;
 1040|      0|    }
 1041|       |
 1042|      1|    if (len > PY_SSIZE_T_MAX) {
  ------------------
  |  |  137|      1|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (1042:9): [True: 0, False: 1]
  ------------------
 1043|      0|        PyErr_SetString(PyExc_OverflowError, "encoding is too large");
 1044|      0|        return NULL;
 1045|      0|    }
 1046|       |
 1047|      1|    char *normalized = PyMem_Malloc(len + 1);
 1048|      1|    if (normalized == NULL) {
  ------------------
  |  Branch (1048:9): [True: 0, False: 1]
  ------------------
 1049|      0|        return PyErr_NoMemory();
 1050|      0|    }
 1051|       |
 1052|      1|    if (!_Py_normalize_encoding(cstr, normalized, len + 1, 0)) {
  ------------------
  |  Branch (1052:9): [True: 0, False: 1]
  ------------------
 1053|      0|        PyMem_Free(normalized);
 1054|      0|        return NULL;
 1055|      0|    }
 1056|       |
 1057|      1|    PyObject *result = PyUnicode_FromString(normalized);
 1058|      1|    PyMem_Free(normalized);
 1059|      1|    return result;
 1060|      1|}

_PyDateTime_InitTypes:
 7491|      1|{
 7492|       |    /* Bases classes must be initialized before subclasses,
 7493|       |     * so capi_types must have the types in the appropriate order. */
 7494|      7|    for (size_t i = 0; i < Py_ARRAY_LENGTH(capi_types); i++) {
  ------------------
  |  |  196|      7|    (sizeof(array) / sizeof((array)[0]))
  ------------------
  |  Branch (7494:24): [True: 6, False: 1]
  ------------------
 7495|      6|        PyTypeObject *type = capi_types[i];
 7496|      6|        if (_PyStaticType_InitForExtension(interp, type) < 0) {
  ------------------
  |  Branch (7496:13): [True: 0, False: 6]
  ------------------
 7497|      0|            return _PyStatus_ERR("could not initialize static types");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 7498|      0|        }
 7499|      6|    }
 7500|       |
 7501|      1|#define DATETIME_ADD_MACRO(dict, c, value_expr)         \
 7502|      1|    do {                                                \
 7503|      1|        assert(!PyErr_Occurred());                      \
 7504|      1|        PyObject *value = (value_expr);                 \
 7505|      1|        if (value == NULL) {                            \
 7506|      1|            goto error;                                 \
 7507|      1|        }                                               \
 7508|      1|        if (PyDict_SetItemString(dict, c, value) < 0) { \
 7509|      1|            Py_DECREF(value);                           \
 7510|      1|            goto error;                                 \
 7511|      1|        }                                               \
 7512|      1|        Py_DECREF(value);                               \
 7513|      1|    } while(0)
 7514|       |
 7515|       |    /* timedelta values */
 7516|      1|    PyObject *d = _PyType_GetDict(&PyDateTime_DeltaType);
 7517|      1|    DATETIME_ADD_MACRO(d, "resolution", new_delta(0, 0, 1, 0));
  ------------------
  |  | 7502|      1|    do {                                                \
  |  | 7503|      1|        assert(!PyErr_Occurred());                      \
  |  | 7504|      1|        PyObject *value = (value_expr);                 \
  |  | 7505|      1|        if (value == NULL) {                            \
  |  |  ------------------
  |  |  |  Branch (7505:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 7506|      0|            goto error;                                 \
  |  | 7507|      0|        }                                               \
  |  | 7508|      1|        if (PyDict_SetItemString(dict, c, value) < 0) { \
  |  |  ------------------
  |  |  |  Branch (7508:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 7509|      0|            Py_DECREF(value);                           \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7510|      0|            goto error;                                 \
  |  | 7511|      0|        }                                               \
  |  | 7512|      1|        Py_DECREF(value);                               \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7513|      1|    } while(0)
  |  |  ------------------
  |  |  |  Branch (7513:13): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (7517:5): [True: 1, False: 0]
  ------------------
 7518|      1|    DATETIME_ADD_MACRO(d, "min", new_delta(-MAX_DELTA_DAYS, 0, 0, 0));
  ------------------
  |  | 7502|      1|    do {                                                \
  |  | 7503|      1|        assert(!PyErr_Occurred());                      \
  |  | 7504|      1|        PyObject *value = (value_expr);                 \
  |  | 7505|      1|        if (value == NULL) {                            \
  |  |  ------------------
  |  |  |  Branch (7505:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 7506|      0|            goto error;                                 \
  |  | 7507|      0|        }                                               \
  |  | 7508|      1|        if (PyDict_SetItemString(dict, c, value) < 0) { \
  |  |  ------------------
  |  |  |  Branch (7508:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 7509|      0|            Py_DECREF(value);                           \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7510|      0|            goto error;                                 \
  |  | 7511|      0|        }                                               \
  |  | 7512|      1|        Py_DECREF(value);                               \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7513|      1|    } while(0)
  |  |  ------------------
  |  |  |  Branch (7513:13): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (7518:5): [True: 1, False: 0]
  ------------------
 7519|      1|    DATETIME_ADD_MACRO(d, "max",
  ------------------
  |  | 7502|      1|    do {                                                \
  |  | 7503|      1|        assert(!PyErr_Occurred());                      \
  |  | 7504|      1|        PyObject *value = (value_expr);                 \
  |  | 7505|      1|        if (value == NULL) {                            \
  |  |  ------------------
  |  |  |  Branch (7505:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 7506|      0|            goto error;                                 \
  |  | 7507|      0|        }                                               \
  |  | 7508|      1|        if (PyDict_SetItemString(dict, c, value) < 0) { \
  |  |  ------------------
  |  |  |  Branch (7508:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 7509|      0|            Py_DECREF(value);                           \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7510|      0|            goto error;                                 \
  |  | 7511|      0|        }                                               \
  |  | 7512|      1|        Py_DECREF(value);                               \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7513|      1|    } while(0)
  |  |  ------------------
  |  |  |  Branch (7513:13): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (7519:5): [True: 1, False: 0]
  ------------------
 7520|      1|                        new_delta(MAX_DELTA_DAYS, 24*3600-1, 1000000-1, 0));
 7521|       |
 7522|       |    /* date values */
 7523|      1|    d = _PyType_GetDict(&PyDateTime_DateType);
 7524|      1|    DATETIME_ADD_MACRO(d, "min", new_date(1, 1, 1));
  ------------------
  |  | 7502|      1|    do {                                                \
  |  | 7503|      1|        assert(!PyErr_Occurred());                      \
  |  | 7504|      1|        PyObject *value = (value_expr);                 \
  |  | 7505|      1|        if (value == NULL) {                            \
  |  |  ------------------
  |  |  |  Branch (7505:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 7506|      0|            goto error;                                 \
  |  | 7507|      0|        }                                               \
  |  | 7508|      1|        if (PyDict_SetItemString(dict, c, value) < 0) { \
  |  |  ------------------
  |  |  |  Branch (7508:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 7509|      0|            Py_DECREF(value);                           \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7510|      0|            goto error;                                 \
  |  | 7511|      0|        }                                               \
  |  | 7512|      1|        Py_DECREF(value);                               \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7513|      1|    } while(0)
  |  |  ------------------
  |  |  |  Branch (7513:13): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (7524:5): [True: 1, False: 0]
  ------------------
 7525|      1|    DATETIME_ADD_MACRO(d, "max", new_date(MAXYEAR, 12, 31));
  ------------------
  |  | 7502|      1|    do {                                                \
  |  | 7503|      1|        assert(!PyErr_Occurred());                      \
  |  | 7504|      1|        PyObject *value = (value_expr);                 \
  |  | 7505|      1|        if (value == NULL) {                            \
  |  |  ------------------
  |  |  |  Branch (7505:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 7506|      0|            goto error;                                 \
  |  | 7507|      0|        }                                               \
  |  | 7508|      1|        if (PyDict_SetItemString(dict, c, value) < 0) { \
  |  |  ------------------
  |  |  |  Branch (7508:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 7509|      0|            Py_DECREF(value);                           \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7510|      0|            goto error;                                 \
  |  | 7511|      0|        }                                               \
  |  | 7512|      1|        Py_DECREF(value);                               \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7513|      1|    } while(0)
  |  |  ------------------
  |  |  |  Branch (7513:13): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (7525:5): [True: 1, False: 0]
  ------------------
 7526|      1|    DATETIME_ADD_MACRO(d, "resolution", new_delta(1, 0, 0, 0));
  ------------------
  |  | 7502|      1|    do {                                                \
  |  | 7503|      1|        assert(!PyErr_Occurred());                      \
  |  | 7504|      1|        PyObject *value = (value_expr);                 \
  |  | 7505|      1|        if (value == NULL) {                            \
  |  |  ------------------
  |  |  |  Branch (7505:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 7506|      0|            goto error;                                 \
  |  | 7507|      0|        }                                               \
  |  | 7508|      1|        if (PyDict_SetItemString(dict, c, value) < 0) { \
  |  |  ------------------
  |  |  |  Branch (7508:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 7509|      0|            Py_DECREF(value);                           \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7510|      0|            goto error;                                 \
  |  | 7511|      0|        }                                               \
  |  | 7512|      1|        Py_DECREF(value);                               \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7513|      1|    } while(0)
  |  |  ------------------
  |  |  |  Branch (7513:13): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (7526:5): [True: 1, False: 0]
  ------------------
 7527|       |
 7528|       |    /* time values */
 7529|      1|    d = _PyType_GetDict(&PyDateTime_TimeType);
 7530|      1|    DATETIME_ADD_MACRO(d, "min", new_time(0, 0, 0, 0, Py_None, 0));
  ------------------
  |  | 7502|      1|    do {                                                \
  |  | 7503|      1|        assert(!PyErr_Occurred());                      \
  |  | 7504|      1|        PyObject *value = (value_expr);                 \
  |  | 7505|      1|        if (value == NULL) {                            \
  |  |  ------------------
  |  |  |  Branch (7505:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 7506|      0|            goto error;                                 \
  |  | 7507|      0|        }                                               \
  |  | 7508|      1|        if (PyDict_SetItemString(dict, c, value) < 0) { \
  |  |  ------------------
  |  |  |  Branch (7508:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 7509|      0|            Py_DECREF(value);                           \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7510|      0|            goto error;                                 \
  |  | 7511|      0|        }                                               \
  |  | 7512|      1|        Py_DECREF(value);                               \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7513|      1|    } while(0)
  |  |  ------------------
  |  |  |  Branch (7513:13): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (7530:5): [True: 1, False: 0]
  ------------------
 7531|      1|    DATETIME_ADD_MACRO(d, "max", new_time(23, 59, 59, 999999, Py_None, 0));
  ------------------
  |  | 7502|      1|    do {                                                \
  |  | 7503|      1|        assert(!PyErr_Occurred());                      \
  |  | 7504|      1|        PyObject *value = (value_expr);                 \
  |  | 7505|      1|        if (value == NULL) {                            \
  |  |  ------------------
  |  |  |  Branch (7505:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 7506|      0|            goto error;                                 \
  |  | 7507|      0|        }                                               \
  |  | 7508|      1|        if (PyDict_SetItemString(dict, c, value) < 0) { \
  |  |  ------------------
  |  |  |  Branch (7508:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 7509|      0|            Py_DECREF(value);                           \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7510|      0|            goto error;                                 \
  |  | 7511|      0|        }                                               \
  |  | 7512|      1|        Py_DECREF(value);                               \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7513|      1|    } while(0)
  |  |  ------------------
  |  |  |  Branch (7513:13): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (7531:5): [True: 1, False: 0]
  ------------------
 7532|      1|    DATETIME_ADD_MACRO(d, "resolution", new_delta(0, 0, 1, 0));
  ------------------
  |  | 7502|      1|    do {                                                \
  |  | 7503|      1|        assert(!PyErr_Occurred());                      \
  |  | 7504|      1|        PyObject *value = (value_expr);                 \
  |  | 7505|      1|        if (value == NULL) {                            \
  |  |  ------------------
  |  |  |  Branch (7505:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 7506|      0|            goto error;                                 \
  |  | 7507|      0|        }                                               \
  |  | 7508|      1|        if (PyDict_SetItemString(dict, c, value) < 0) { \
  |  |  ------------------
  |  |  |  Branch (7508:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 7509|      0|            Py_DECREF(value);                           \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7510|      0|            goto error;                                 \
  |  | 7511|      0|        }                                               \
  |  | 7512|      1|        Py_DECREF(value);                               \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7513|      1|    } while(0)
  |  |  ------------------
  |  |  |  Branch (7513:13): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (7532:5): [True: 1, False: 0]
  ------------------
 7533|       |
 7534|       |    /* datetime values */
 7535|      1|    d = _PyType_GetDict(&PyDateTime_DateTimeType);
 7536|      1|    DATETIME_ADD_MACRO(d, "min",
  ------------------
  |  | 7502|      1|    do {                                                \
  |  | 7503|      1|        assert(!PyErr_Occurred());                      \
  |  | 7504|      1|        PyObject *value = (value_expr);                 \
  |  | 7505|      1|        if (value == NULL) {                            \
  |  |  ------------------
  |  |  |  Branch (7505:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 7506|      0|            goto error;                                 \
  |  | 7507|      0|        }                                               \
  |  | 7508|      1|        if (PyDict_SetItemString(dict, c, value) < 0) { \
  |  |  ------------------
  |  |  |  Branch (7508:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 7509|      0|            Py_DECREF(value);                           \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7510|      0|            goto error;                                 \
  |  | 7511|      0|        }                                               \
  |  | 7512|      1|        Py_DECREF(value);                               \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7513|      1|    } while(0)
  |  |  ------------------
  |  |  |  Branch (7513:13): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (7536:5): [True: 1, False: 0]
  ------------------
 7537|      1|                        new_datetime(1, 1, 1, 0, 0, 0, 0, Py_None, 0));
 7538|      1|    DATETIME_ADD_MACRO(d, "max", new_datetime(MAXYEAR, 12, 31, 23, 59, 59,
  ------------------
  |  | 7502|      1|    do {                                                \
  |  | 7503|      1|        assert(!PyErr_Occurred());                      \
  |  | 7504|      1|        PyObject *value = (value_expr);                 \
  |  | 7505|      1|        if (value == NULL) {                            \
  |  |  ------------------
  |  |  |  Branch (7505:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 7506|      0|            goto error;                                 \
  |  | 7507|      0|        }                                               \
  |  | 7508|      1|        if (PyDict_SetItemString(dict, c, value) < 0) { \
  |  |  ------------------
  |  |  |  Branch (7508:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 7509|      0|            Py_DECREF(value);                           \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7510|      0|            goto error;                                 \
  |  | 7511|      0|        }                                               \
  |  | 7512|      1|        Py_DECREF(value);                               \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7513|      1|    } while(0)
  |  |  ------------------
  |  |  |  Branch (7513:13): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (7538:5): [True: 1, False: 0]
  ------------------
 7539|      1|                                                999999, Py_None, 0));
 7540|      1|    DATETIME_ADD_MACRO(d, "resolution", new_delta(0, 0, 1, 0));
  ------------------
  |  | 7502|      1|    do {                                                \
  |  | 7503|      1|        assert(!PyErr_Occurred());                      \
  |  | 7504|      1|        PyObject *value = (value_expr);                 \
  |  | 7505|      1|        if (value == NULL) {                            \
  |  |  ------------------
  |  |  |  Branch (7505:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 7506|      0|            goto error;                                 \
  |  | 7507|      0|        }                                               \
  |  | 7508|      1|        if (PyDict_SetItemString(dict, c, value) < 0) { \
  |  |  ------------------
  |  |  |  Branch (7508:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 7509|      0|            Py_DECREF(value);                           \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7510|      0|            goto error;                                 \
  |  | 7511|      0|        }                                               \
  |  | 7512|      1|        Py_DECREF(value);                               \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7513|      1|    } while(0)
  |  |  ------------------
  |  |  |  Branch (7513:13): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (7540:5): [True: 1, False: 0]
  ------------------
 7541|       |
 7542|       |    /* timezone values */
 7543|      1|    d = _PyType_GetDict(&PyDateTime_TimeZoneType);
 7544|      1|    if (PyDict_SetItemString(d, "utc", (PyObject *)&utc_timezone) < 0) {
  ------------------
  |  Branch (7544:9): [True: 0, False: 1]
  ------------------
 7545|      0|        goto error;
 7546|      0|    }
 7547|       |
 7548|       |    /* bpo-37642: These attributes are rounded to the nearest minute for backwards
 7549|       |    * compatibility, even though the constructor will accept a wider range of
 7550|       |    * values. This may change in the future.*/
 7551|       |
 7552|       |    /* -23:59 */
 7553|      1|    DATETIME_ADD_MACRO(d, "min", create_timezone_from_delta(-1, 60, 0, 1));
  ------------------
  |  | 7502|      1|    do {                                                \
  |  | 7503|      1|        assert(!PyErr_Occurred());                      \
  |  | 7504|      1|        PyObject *value = (value_expr);                 \
  |  | 7505|      1|        if (value == NULL) {                            \
  |  |  ------------------
  |  |  |  Branch (7505:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 7506|      0|            goto error;                                 \
  |  | 7507|      0|        }                                               \
  |  | 7508|      1|        if (PyDict_SetItemString(dict, c, value) < 0) { \
  |  |  ------------------
  |  |  |  Branch (7508:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 7509|      0|            Py_DECREF(value);                           \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7510|      0|            goto error;                                 \
  |  | 7511|      0|        }                                               \
  |  | 7512|      1|        Py_DECREF(value);                               \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7513|      1|    } while(0)
  |  |  ------------------
  |  |  |  Branch (7513:13): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (7553:5): [True: 1, False: 0]
  ------------------
 7554|       |
 7555|       |    /* +23:59 */
 7556|      1|    DATETIME_ADD_MACRO(
  ------------------
  |  | 7502|      1|    do {                                                \
  |  | 7503|      1|        assert(!PyErr_Occurred());                      \
  |  | 7504|      1|        PyObject *value = (value_expr);                 \
  |  | 7505|      1|        if (value == NULL) {                            \
  |  |  ------------------
  |  |  |  Branch (7505:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 7506|      0|            goto error;                                 \
  |  | 7507|      0|        }                                               \
  |  | 7508|      1|        if (PyDict_SetItemString(dict, c, value) < 0) { \
  |  |  ------------------
  |  |  |  Branch (7508:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 7509|      0|            Py_DECREF(value);                           \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7510|      0|            goto error;                                 \
  |  | 7511|      0|        }                                               \
  |  | 7512|      1|        Py_DECREF(value);                               \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7513|      1|    } while(0)
  |  |  ------------------
  |  |  |  Branch (7513:13): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (7556:5): [True: 1, False: 0]
  ------------------
 7557|      1|            d, "max", create_timezone_from_delta(0, (23 * 60 + 59) * 60, 0, 0));
 7558|       |
 7559|      1|#undef DATETIME_ADD_MACRO
 7560|       |
 7561|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 7562|       |
 7563|      0|error:
 7564|      0|    return _PyStatus_NO_MEMORY();
  ------------------
  |  |   33|      0|#define _PyStatus_NO_MEMORY() _PyStatus_ERR(_PyStatus_NO_MEMORY_ERRMSG)
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  ------------------
 7565|      1|}
_datetimemodule.c:days_in_month:
  432|      4|{
  433|      4|    assert(month >= 1);
  ------------------
  |  Branch (433:5): [True: 4, False: 0]
  ------------------
  434|      4|    assert(month <= 12);
  ------------------
  |  Branch (434:5): [True: 4, False: 0]
  ------------------
  435|      4|    if (month == 2 && is_leap(year))
  ------------------
  |  Branch (435:9): [True: 0, False: 4]
  |  Branch (435:23): [True: 0, False: 0]
  ------------------
  436|      0|        return 29;
  437|      4|    else
  438|      4|        return _days_in_month[month];
  439|      4|}
_datetimemodule.c:new_delta_ex:
 1373|      8|{
 1374|      8|    PyDateTime_Delta *self;
 1375|       |
 1376|      8|    if (normalize)
  ------------------
  |  Branch (1376:9): [True: 1, False: 7]
  ------------------
 1377|      1|        normalize_d_s_us(&days, &seconds, &microseconds);
 1378|      8|    assert(0 <= seconds && seconds < 24*3600);
  ------------------
  |  Branch (1378:5): [True: 8, False: 0]
  |  Branch (1378:5): [True: 8, False: 0]
  ------------------
 1379|      8|    assert(0 <= microseconds && microseconds < 1000000);
  ------------------
  |  Branch (1379:5): [True: 8, False: 0]
  |  Branch (1379:5): [True: 8, False: 0]
  ------------------
 1380|       |
 1381|      8|    if (check_delta_day_range(days) < 0)
  ------------------
  |  Branch (1381:9): [True: 0, False: 8]
  ------------------
 1382|      0|        return NULL;
 1383|       |
 1384|      8|    self = look_up_delta(days, seconds, microseconds, type);
 1385|      8|    if (self != NULL) {
  ------------------
  |  Branch (1385:9): [True: 0, False: 8]
  ------------------
 1386|      0|        return (PyObject *)self;
 1387|      0|    }
 1388|      8|    assert(!PyErr_Occurred());
  ------------------
  |  Branch (1388:5): [True: 8, False: 0]
  ------------------
 1389|       |
 1390|      8|    self = (PyDateTime_Delta *) (type->tp_alloc(type, 0));
 1391|      8|    if (self != NULL) {
  ------------------
  |  Branch (1391:9): [True: 8, False: 0]
  ------------------
 1392|      8|        self->hashcode = -1;
 1393|      8|        SET_TD_DAYS(self, days);
  ------------------
  |  |  315|      8|#define SET_TD_DAYS(o, v)       ((o)->days = (v))
  ------------------
 1394|      8|        SET_TD_SECONDS(self, seconds);
  ------------------
  |  |  316|      8|#define SET_TD_SECONDS(o, v)    ((o)->seconds = (v))
  ------------------
 1395|      8|        SET_TD_MICROSECONDS(self, microseconds);
  ------------------
  |  |  317|      8|#define SET_TD_MICROSECONDS(o, v) ((o)->microseconds = (v))
  ------------------
 1396|      8|    }
 1397|      8|    return (PyObject *) self;
 1398|      8|}
_datetimemodule.c:normalize_d_s_us:
  737|      1|{
  738|      1|    if (*us < 0 || *us >= 1000000) {
  ------------------
  |  Branch (738:9): [True: 0, False: 1]
  |  Branch (738:20): [True: 0, False: 1]
  ------------------
  739|      0|        normalize_pair(s, us, 1000000);
  740|       |        /* |s| can't be bigger than about
  741|       |         * |original s| + |original us|/1000000 now.
  742|       |         */
  743|       |
  744|      0|    }
  745|      1|    if (*s < 0 || *s >= 24*3600) {
  ------------------
  |  Branch (745:9): [True: 0, False: 1]
  |  Branch (745:19): [True: 0, False: 1]
  ------------------
  746|      0|        normalize_pair(d, s, 24*3600);
  747|       |        /* |d| can't be bigger than about
  748|       |         * |original d| +
  749|       |         * (|original s| + |original us|/1000000) / (24*3600) now.
  750|       |         */
  751|      0|    }
  752|      1|    assert(0 <= *s && *s < 24*3600);
  ------------------
  |  Branch (752:5): [True: 1, False: 0]
  |  Branch (752:5): [True: 1, False: 0]
  ------------------
  753|      1|    assert(0 <= *us && *us < 1000000);
  ------------------
  |  Branch (753:5): [True: 1, False: 0]
  |  Branch (753:5): [True: 1, False: 0]
  ------------------
  754|      1|}
_datetimemodule.c:check_delta_day_range:
  638|      8|{
  639|      8|    if (-MAX_DELTA_DAYS <= days && days <= MAX_DELTA_DAYS)
  ------------------
  |  |  267|      8|#define MAX_DELTA_DAYS 999999999
  ------------------
                  if (-MAX_DELTA_DAYS <= days && days <= MAX_DELTA_DAYS)
  ------------------
  |  |  267|      8|#define MAX_DELTA_DAYS 999999999
  ------------------
  |  Branch (639:9): [True: 8, False: 0]
  |  Branch (639:36): [True: 8, False: 0]
  ------------------
  640|      8|        return 0;
  641|      0|    PyErr_Format(PyExc_OverflowError,
  642|      0|                 "days=%d; must have magnitude <= %d",
  643|      0|                 days, MAX_DELTA_DAYS);
  ------------------
  |  |  267|      0|#define MAX_DELTA_DAYS 999999999
  ------------------
  644|      0|    return -1;
  645|      8|}
_datetimemodule.c:look_up_delta:
 3146|      8|{
 3147|      8|    if (days == 0 && seconds == 0 && microseconds == 0
  ------------------
  |  Branch (3147:9): [True: 4, False: 4]
  |  Branch (3147:22): [True: 3, False: 1]
  |  Branch (3147:38): [True: 0, False: 3]
  ------------------
 3148|      0|            && type == Py_TYPE(&zero_delta))
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3148:16): [True: 0, False: 0]
  ------------------
 3149|      0|    {
 3150|      0|        return &zero_delta;
 3151|      0|    }
 3152|      8|    return NULL;
 3153|      8|}
_datetimemodule.c:check_tzinfo_subclass:
 1477|      4|{
 1478|      4|    if (p == Py_None || PyTZInfo_Check(p))
  ------------------
  |  |  616|      8|#  define Py_None (&_Py_NoneStruct)
  ------------------
                  if (p == Py_None || PyTZInfo_Check(p))
  ------------------
  |  |  100|      0|#define PyTZInfo_Check(op) PyObject_TypeCheck(op, TZINFO_TYPE(NO_STATE))
  |  |  ------------------
  |  |  |  |  378|      0|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (378:40): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1478:9): [True: 4, False: 0]
  ------------------
 1479|      4|        return 0;
 1480|      0|    PyErr_Format(PyExc_TypeError,
 1481|      0|                 "tzinfo argument must be None or of a tzinfo subclass, "
 1482|      0|                 "not type '%s'",
 1483|      0|                 Py_TYPE(p)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1484|      0|    return -1;
 1485|      4|}
_datetimemodule.c:new_date_ex:
 1156|      2|{
 1157|      2|    PyDateTime_Date *self;
 1158|       |
 1159|      2|    if (check_date_args(year, month, day) < 0) {
  ------------------
  |  Branch (1159:9): [True: 0, False: 2]
  ------------------
 1160|      0|        return NULL;
 1161|      0|    }
 1162|       |
 1163|      2|    self = (PyDateTime_Date *)(type->tp_alloc(type, 0));
 1164|      2|    if (self != NULL)
  ------------------
  |  Branch (1164:9): [True: 2, False: 0]
  ------------------
 1165|      2|        set_date_fields(self, year, month, day);
 1166|      2|    return (PyObject *)self;
 1167|      2|}
_datetimemodule.c:check_date_args:
  652|      4|{
  653|       |
  654|      4|    if (year < MINYEAR || year > MAXYEAR) {
  ------------------
  |  |  258|      8|#define MINYEAR 1
  ------------------
                  if (year < MINYEAR || year > MAXYEAR) {
  ------------------
  |  |  259|      4|#define MAXYEAR 9999
  ------------------
  |  Branch (654:9): [True: 0, False: 4]
  |  Branch (654:27): [True: 0, False: 4]
  ------------------
  655|      0|        PyErr_Format(PyExc_ValueError,
  656|      0|                     "year must be in %d..%d, not %d", MINYEAR, MAXYEAR, year);
  ------------------
  |  |  258|      0|#define MINYEAR 1
  ------------------
                                   "year must be in %d..%d, not %d", MINYEAR, MAXYEAR, year);
  ------------------
  |  |  259|      0|#define MAXYEAR 9999
  ------------------
  657|      0|        return -1;
  658|      0|    }
  659|      4|    if (month < 1 || month > 12) {
  ------------------
  |  Branch (659:9): [True: 0, False: 4]
  |  Branch (659:22): [True: 0, False: 4]
  ------------------
  660|      0|        PyErr_Format(PyExc_ValueError,
  661|      0|                     "month must be in 1..12, not %d", month);
  662|      0|        return -1;
  663|      0|    }
  664|      4|    int dim = days_in_month(year, month);
  665|      4|    if (day < 1 || day > dim) {
  ------------------
  |  Branch (665:9): [True: 0, False: 4]
  |  Branch (665:20): [True: 0, False: 4]
  ------------------
  666|      0|        PyErr_Format(PyExc_ValueError,
  667|      0|                     "day %i must be in range 1..%d for month %i in year %i",
  668|      0|                     day, dim, month, year);
  669|      0|        return -1;
  670|      0|    }
  671|      4|    return 0;
  672|      4|}
_datetimemodule.c:set_date_fields:
  903|      4|{
  904|      4|    self->hashcode = -1;
  905|      4|    SET_YEAR(self, y);
  ------------------
  |  |  280|      4|#define SET_YEAR(o, v)          (((o)->data[0] = ((v) & 0xff00) >> 8), \
  |  |  281|      4|                 ((o)->data[1] = ((v) & 0x00ff)))
  ------------------
  906|      4|    SET_MONTH(self, m);
  ------------------
  |  |  282|      4|#define SET_MONTH(o, v)         (PyDateTime_GET_MONTH(o) = (v))
  |  |  ------------------
  |  |  |  |  124|      4|#define PyDateTime_GET_MONTH(o)    (((PyDateTime_Date*)(o))->data[2])
  |  |  ------------------
  ------------------
  907|      4|    SET_DAY(self, d);
  ------------------
  |  |  283|      4|#define SET_DAY(o, v)           (PyDateTime_GET_DAY(o) = (v))
  |  |  ------------------
  |  |  |  |  125|      4|#define PyDateTime_GET_DAY(o)      (((PyDateTime_Date*)(o))->data[3])
  |  |  ------------------
  ------------------
  908|      4|}
_datetimemodule.c:check_time_args:
  679|      4|{
  680|      4|    if (h < 0 || h > 23) {
  ------------------
  |  Branch (680:9): [True: 0, False: 4]
  |  Branch (680:18): [True: 0, False: 4]
  ------------------
  681|      0|        PyErr_Format(PyExc_ValueError, "hour must be in 0..23, not %i", h);
  682|      0|        return -1;
  683|      0|    }
  684|      4|    if (m < 0 || m > 59) {
  ------------------
  |  Branch (684:9): [True: 0, False: 4]
  |  Branch (684:18): [True: 0, False: 4]
  ------------------
  685|      0|        PyErr_Format(PyExc_ValueError, "minute must be in 0..59, not %i", m);
  686|      0|        return -1;
  687|      0|    }
  688|      4|    if (s < 0 || s > 59) {
  ------------------
  |  Branch (688:9): [True: 0, False: 4]
  |  Branch (688:18): [True: 0, False: 4]
  ------------------
  689|      0|        PyErr_Format(PyExc_ValueError, "second must be in 0..59, not %i", s);
  690|      0|        return -1;
  691|      0|    }
  692|      4|    if (us < 0 || us > 999999) {
  ------------------
  |  Branch (692:9): [True: 0, False: 4]
  |  Branch (692:19): [True: 0, False: 4]
  ------------------
  693|      0|        PyErr_Format(PyExc_ValueError,
  694|      0|                     "microsecond must be in 0..999999, not %i", us);
  695|      0|        return -1;
  696|      0|    }
  697|      4|    if (fold != 0 && fold != 1) {
  ------------------
  |  Branch (697:9): [True: 0, False: 4]
  |  Branch (697:22): [True: 0, False: 0]
  ------------------
  698|      0|        PyErr_Format(PyExc_ValueError,
  699|      0|                     "fold must be either 0 or 1, not %i", fold);
  700|      0|        return -1;
  701|      0|    }
  702|      4|    return 0;
  703|      4|}
_datetimemodule.c:create_timezone:
 1419|      2|{
 1420|      2|    PyDateTime_TimeZone *self;
 1421|      2|    PyTypeObject *type = TIMEZONE_TYPE(NO_STATE);
  ------------------
  |  |   80|      2|#define TIMEZONE_TYPE(st) &PyDateTime_TimeZoneType
  ------------------
 1422|       |
 1423|      2|    assert(offset != NULL);
  ------------------
  |  Branch (1423:5): [True: 2, False: 0]
  ------------------
 1424|      2|    assert(PyDelta_Check(offset));
  ------------------
  |  Branch (1424:5): [True: 2, False: 0]
  ------------------
 1425|      2|    assert(name == NULL || PyUnicode_Check(name));
  ------------------
  |  Branch (1425:5): [True: 2, False: 0]
  |  Branch (1425:5): [True: 0, False: 0]
  ------------------
 1426|       |
 1427|      2|    self = look_up_timezone(offset, name);
 1428|      2|    if (self != NULL) {
  ------------------
  |  Branch (1428:9): [True: 0, False: 2]
  ------------------
 1429|      0|        return (PyObject *)self;
 1430|      0|    }
 1431|      2|    assert(!PyErr_Occurred());
  ------------------
  |  Branch (1431:5): [True: 2, False: 0]
  ------------------
 1432|       |
 1433|      2|    self = (PyDateTime_TimeZone *)(type->tp_alloc(type, 0));
 1434|      2|    if (self == NULL) {
  ------------------
  |  Branch (1434:9): [True: 0, False: 2]
  ------------------
 1435|      0|        return NULL;
 1436|      0|    }
 1437|      2|    self->offset = Py_NewRef(offset);
  ------------------
  |  |  550|      2|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1438|      2|    self->name = Py_XNewRef(name);
  ------------------
  |  |  551|      2|#  define Py_XNewRef(obj) _Py_XNewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1439|      2|    return (PyObject *)self;
 1440|      2|}
_datetimemodule.c:look_up_timezone:
 4573|      2|{
 4574|      2|    if (offset == utc_timezone.offset && name == NULL) {
  ------------------
  |  Branch (4574:9): [True: 0, False: 2]
  |  Branch (4574:42): [True: 0, False: 0]
  ------------------
 4575|      0|        return (PyDateTime_TimeZone *)CONST_UTC(NO_STATE);
  ------------------
  |  |  116|      0|#define CONST_UTC(st) ((PyObject *)&utc_timezone)
  ------------------
 4576|      0|    }
 4577|      2|    return NULL;
 4578|      2|}
_datetimemodule.c:time_alloc:
  873|      2|{
  874|      2|    size_t size = aware ? sizeof(PyDateTime_Time) : sizeof(_PyDateTime_BaseTime);
  ------------------
  |  Branch (874:19): [True: 0, False: 2]
  ------------------
  875|      2|    PyObject *self = (PyObject *)PyObject_Malloc(size);
  876|      2|    if (self == NULL) {
  ------------------
  |  Branch (876:9): [True: 0, False: 2]
  ------------------
  877|      0|        return PyErr_NoMemory();
  878|      0|    }
  879|      2|    _PyObject_Init(self, type);
  880|      2|    return self;
  881|      2|}
_datetimemodule.c:new_time_ex2:
 1307|      2|{
 1308|      2|    PyDateTime_Time *self;
 1309|      2|    char aware = tzinfo != Py_None;
  ------------------
  |  |  616|      2|#  define Py_None (&_Py_NoneStruct)
  ------------------
 1310|       |
 1311|      2|    if (check_time_args(hour, minute, second, usecond, fold) < 0) {
  ------------------
  |  Branch (1311:9): [True: 0, False: 2]
  ------------------
 1312|      0|        return NULL;
 1313|      0|    }
 1314|      2|    if (check_tzinfo_subclass(tzinfo) < 0) {
  ------------------
  |  Branch (1314:9): [True: 0, False: 2]
  ------------------
 1315|      0|        return NULL;
 1316|      0|    }
 1317|       |
 1318|      2|    self = (PyDateTime_Time *) (type->tp_alloc(type, aware));
 1319|      2|    if (self != NULL) {
  ------------------
  |  Branch (1319:9): [True: 2, False: 0]
  ------------------
 1320|      2|        self->hastzinfo = aware;
 1321|      2|        self->hashcode = -1;
 1322|      2|        TIME_SET_HOUR(self, hour);
  ------------------
  |  |  301|      2|#define TIME_SET_HOUR(o, v)     (PyDateTime_TIME_GET_HOUR(o) = (v))
  |  |  ------------------
  |  |  |  |  139|      2|#define PyDateTime_TIME_GET_HOUR(o)        (((PyDateTime_Time*)(o))->data[0])
  |  |  ------------------
  ------------------
 1323|      2|        TIME_SET_MINUTE(self, minute);
  ------------------
  |  |  302|      2|#define TIME_SET_MINUTE(o, v)   (PyDateTime_TIME_GET_MINUTE(o) = (v))
  |  |  ------------------
  |  |  |  |  140|      2|#define PyDateTime_TIME_GET_MINUTE(o)      (((PyDateTime_Time*)(o))->data[1])
  |  |  ------------------
  ------------------
 1324|      2|        TIME_SET_SECOND(self, second);
  ------------------
  |  |  303|      2|#define TIME_SET_SECOND(o, v)   (PyDateTime_TIME_GET_SECOND(o) = (v))
  |  |  ------------------
  |  |  |  |  141|      2|#define PyDateTime_TIME_GET_SECOND(o)      (((PyDateTime_Time*)(o))->data[2])
  |  |  ------------------
  ------------------
 1325|      2|        TIME_SET_MICROSECOND(self, usecond);
  ------------------
  |  |  305|      2|    (((o)->data[3] = ((v) & 0xff0000) >> 16), \
  |  |  306|      2|     ((o)->data[4] = ((v) & 0x00ff00) >> 8), \
  |  |  307|      2|     ((o)->data[5] = ((v) & 0x0000ff)))
  ------------------
 1326|      2|        if (aware) {
  ------------------
  |  Branch (1326:13): [True: 0, False: 2]
  ------------------
 1327|      0|            self->tzinfo = Py_NewRef(tzinfo);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1328|      0|        }
 1329|      2|        TIME_SET_FOLD(self, fold);
  ------------------
  |  |  308|      2|#define TIME_SET_FOLD(o, v)   (PyDateTime_TIME_GET_FOLD(o) = (v))
  |  |  ------------------
  |  |  |  |  146|      2|#define PyDateTime_TIME_GET_FOLD(o)        (((PyDateTime_Time*)(o))->fold)
  |  |  ------------------
  ------------------
 1330|      2|    }
 1331|      2|    return (PyObject *)self;
 1332|      2|}
_datetimemodule.c:datetime_alloc:
  885|      2|{
  886|      2|    size_t size = aware ? sizeof(PyDateTime_DateTime) : sizeof(_PyDateTime_BaseDateTime);
  ------------------
  |  Branch (886:19): [True: 0, False: 2]
  ------------------
  887|      2|    PyObject *self = (PyObject *)PyObject_Malloc(size);
  888|      2|    if (self == NULL) {
  ------------------
  |  Branch (888:9): [True: 0, False: 2]
  ------------------
  889|      0|        return PyErr_NoMemory();
  890|      0|    }
  891|      2|    _PyObject_Init(self, type);
  892|      2|    return self;
  893|      2|}
_datetimemodule.c:new_datetime_ex2:
 1199|      2|{
 1200|      2|    PyDateTime_DateTime *self;
 1201|      2|    char aware = tzinfo != Py_None;
  ------------------
  |  |  616|      2|#  define Py_None (&_Py_NoneStruct)
  ------------------
 1202|       |
 1203|      2|    if (check_date_args(year, month, day) < 0) {
  ------------------
  |  Branch (1203:9): [True: 0, False: 2]
  ------------------
 1204|      0|        return NULL;
 1205|      0|    }
 1206|      2|    if (check_time_args(hour, minute, second, usecond, fold) < 0) {
  ------------------
  |  Branch (1206:9): [True: 0, False: 2]
  ------------------
 1207|      0|        return NULL;
 1208|      0|    }
 1209|      2|    if (check_tzinfo_subclass(tzinfo) < 0) {
  ------------------
  |  Branch (1209:9): [True: 0, False: 2]
  ------------------
 1210|      0|        return NULL;
 1211|      0|    }
 1212|       |
 1213|      2|    self = (PyDateTime_DateTime *) (type->tp_alloc(type, aware));
 1214|      2|    if (self != NULL) {
  ------------------
  |  Branch (1214:9): [True: 2, False: 0]
  ------------------
 1215|      2|        self->hastzinfo = aware;
 1216|      2|        set_date_fields((PyDateTime_Date *)self, year, month, day);
 1217|      2|        DATE_SET_HOUR(self, hour);
  ------------------
  |  |  286|      2|#define DATE_SET_HOUR(o, v)     (PyDateTime_DATE_GET_HOUR(o) = (v))
  |  |  ------------------
  |  |  |  |  127|      2|#define PyDateTime_DATE_GET_HOUR(o)        (((PyDateTime_DateTime*)(o))->data[4])
  |  |  ------------------
  ------------------
 1218|      2|        DATE_SET_MINUTE(self, minute);
  ------------------
  |  |  287|      2|#define DATE_SET_MINUTE(o, v)   (PyDateTime_DATE_GET_MINUTE(o) = (v))
  |  |  ------------------
  |  |  |  |  128|      2|#define PyDateTime_DATE_GET_MINUTE(o)      (((PyDateTime_DateTime*)(o))->data[5])
  |  |  ------------------
  ------------------
 1219|      2|        DATE_SET_SECOND(self, second);
  ------------------
  |  |  288|      2|#define DATE_SET_SECOND(o, v)   (PyDateTime_DATE_GET_SECOND(o) = (v))
  |  |  ------------------
  |  |  |  |  129|      2|#define PyDateTime_DATE_GET_SECOND(o)      (((PyDateTime_DateTime*)(o))->data[6])
  |  |  ------------------
  ------------------
 1220|      2|        DATE_SET_MICROSECOND(self, usecond);
  ------------------
  |  |  290|      2|    (((o)->data[7] = ((v) & 0xff0000) >> 16), \
  |  |  291|      2|     ((o)->data[8] = ((v) & 0x00ff00) >> 8), \
  |  |  292|      2|     ((o)->data[9] = ((v) & 0x0000ff)))
  ------------------
 1221|      2|        if (aware) {
  ------------------
  |  Branch (1221:13): [True: 0, False: 2]
  ------------------
 1222|      0|            self->tzinfo = Py_NewRef(tzinfo);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1223|      0|        }
 1224|      2|        DATE_SET_FOLD(self, fold);
  ------------------
  |  |  293|      2|#define DATE_SET_FOLD(o, v)   (PyDateTime_DATE_GET_FOLD(o) = (v))
  |  |  ------------------
  |  |  |  |  134|      2|#define PyDateTime_DATE_GET_FOLD(o)        (((PyDateTime_DateTime*)(o))->fold)
  |  |  ------------------
  ------------------
 1225|      2|    }
 1226|      2|    return (PyObject *)self;
 1227|      2|}
_datetimemodule.c:create_timezone_from_delta:
 7372|      2|{
 7373|      2|    PyObject *delta = new_delta(days, sec, ms, normalize);
  ------------------
  |  | 1401|      2|    new_delta_ex(d, s, us, normalize, DELTA_TYPE(NO_STATE))
  |  |  ------------------
  |  |  |  |   78|      2|#define DELTA_TYPE(st) &PyDateTime_DeltaType
  |  |  ------------------
  ------------------
 7374|      2|    if (delta == NULL) {
  ------------------
  |  Branch (7374:9): [True: 0, False: 2]
  ------------------
 7375|      0|        return NULL;
 7376|      0|    }
 7377|      2|    PyObject *tz = create_timezone(delta, NULL);
 7378|      2|    Py_DECREF(delta);
  ------------------
  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7379|      2|    return tz;
 7380|      2|}

PyNumber_AsOff_t:
  527|      5|{
  528|      5|    Py_off_t result;
  529|      5|    PyObject *runerr;
  530|      5|    PyObject *value = _PyNumber_Index(item);
  531|      5|    if (value == NULL)
  ------------------
  |  Branch (531:9): [True: 0, False: 5]
  ------------------
  532|      0|        return -1;
  533|       |
  534|       |    /* We're done if PyLong_AsSsize_t() returns without error. */
  535|      5|    result = PyLong_AsOff_t(value);
  ------------------
  |  |  111|      5|# define PyLong_AsOff_t     PyLong_AsSsize_t
  ------------------
  536|      5|    if (result != -1 || !(runerr = PyErr_Occurred()))
  ------------------
  |  Branch (536:9): [True: 5, False: 0]
  |  Branch (536:25): [True: 0, False: 0]
  ------------------
  537|      5|        goto finish;
  538|       |
  539|       |    /* Error handling code -- only manage OverflowError differently */
  540|      0|    if (!PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError))
  ------------------
  |  Branch (540:9): [True: 0, False: 0]
  ------------------
  541|      0|        goto finish;
  542|       |
  543|      0|    PyErr_Clear();
  544|       |    /* If no error-handling desired then the default clipping
  545|       |       is sufficient.
  546|       |     */
  547|      0|    if (!err) {
  ------------------
  |  Branch (547:9): [True: 0, False: 0]
  ------------------
  548|      0|        assert(PyLong_Check(value));
  ------------------
  |  Branch (548:9): [True: 0, False: 0]
  ------------------
  549|      0|        if (_PyLong_IsNegative((PyLongObject *)value))
  ------------------
  |  Branch (549:13): [True: 0, False: 0]
  ------------------
  550|      0|            result = PY_OFF_T_MIN;
  ------------------
  |  |  114|      0|# define PY_OFF_T_MIN       PY_SSIZE_T_MIN
  |  |  ------------------
  |  |  |  |  146|      0|#define PY_SSIZE_T_MIN (-PY_SSIZE_T_MAX-1)
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|#   define PY_SSIZE_T_MAX SSIZE_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  551|      0|        else
  552|      0|            result = PY_OFF_T_MAX;
  ------------------
  |  |  113|      0|# define PY_OFF_T_MAX       PY_SSIZE_T_MAX
  |  |  ------------------
  |  |  |  |  137|      0|#   define PY_SSIZE_T_MAX SSIZE_MAX
  |  |  ------------------
  ------------------
  553|      0|    }
  554|      0|    else {
  555|       |        /* Otherwise replace the error with caller's error object. */
  556|      0|        PyErr_Format(err,
  557|      0|                     "cannot fit '%.200s' into an offset-sized integer",
  558|      0|                     Py_TYPE(item)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  559|      0|    }
  560|       |
  561|      5| finish:
  562|      5|    Py_DECREF(value);
  ------------------
  |  |  430|      5|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  563|      5|    return result;
  564|      0|}
PyInit__io:
  746|      1|{
  747|      1|    return PyModuleDef_Init(&_PyIO_Module);
  748|      1|}
_iomodule.c:_io_open_impl:
  204|      3|{
  205|      3|    size_t i;
  206|       |
  207|      3|    int creating = 0, reading = 0, writing = 0, appending = 0, updating = 0;
  208|      3|    int text = 0, binary = 0;
  209|       |
  210|      3|    char rawmode[6], *m;
  211|      3|    int line_buffering, is_number, isatty = 0;
  212|       |
  213|      3|    PyObject *raw, *modeobj = NULL, *buffer, *wrapper, *result = NULL, *path_or_fd = NULL;
  214|       |
  215|      3|    is_number = PyNumber_Check(file);
  216|       |
  217|      3|    if (is_number) {
  ------------------
  |  Branch (217:9): [True: 3, False: 0]
  ------------------
  218|      3|        path_or_fd = Py_NewRef(file);
  ------------------
  |  |  550|      3|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  219|      3|    } else {
  220|      0|        path_or_fd = PyOS_FSPath(file);
  221|      0|        if (path_or_fd == NULL) {
  ------------------
  |  Branch (221:13): [True: 0, False: 0]
  ------------------
  222|      0|            return NULL;
  223|      0|        }
  224|      0|    }
  225|       |
  226|      3|    if (!is_number &&
  ------------------
  |  Branch (226:9): [True: 0, False: 3]
  ------------------
  227|      3|        !PyUnicode_Check(path_or_fd) &&
  ------------------
  |  |  103|      0|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      3|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (227:9): [True: 0, False: 0]
  ------------------
  228|      0|        !PyBytes_Check(path_or_fd)) {
  ------------------
  |  |   28|      0|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_BYTES_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (228:9): [True: 0, False: 0]
  ------------------
  229|      0|        PyErr_Format(PyExc_TypeError, "invalid file: %R", file);
  230|      0|        goto error;
  231|      0|    }
  232|       |
  233|       |    /* Decode mode */
  234|      9|    for (i = 0; i < strlen(mode); i++) {
  ------------------
  |  Branch (234:17): [True: 6, False: 3]
  ------------------
  235|      6|        char c = mode[i];
  236|       |
  237|      6|        switch (c) {
  238|      0|        case 'x':
  ------------------
  |  Branch (238:9): [True: 0, False: 6]
  ------------------
  239|      0|            creating = 1;
  240|      0|            break;
  241|      1|        case 'r':
  ------------------
  |  Branch (241:9): [True: 1, False: 5]
  ------------------
  242|      1|            reading = 1;
  243|      1|            break;
  244|      2|        case 'w':
  ------------------
  |  Branch (244:9): [True: 2, False: 4]
  ------------------
  245|      2|            writing = 1;
  246|      2|            break;
  247|      0|        case 'a':
  ------------------
  |  Branch (247:9): [True: 0, False: 6]
  ------------------
  248|      0|            appending = 1;
  249|      0|            break;
  250|      0|        case '+':
  ------------------
  |  Branch (250:9): [True: 0, False: 6]
  ------------------
  251|      0|            updating = 1;
  252|      0|            break;
  253|      0|        case 't':
  ------------------
  |  Branch (253:9): [True: 0, False: 6]
  ------------------
  254|      0|            text = 1;
  255|      0|            break;
  256|      3|        case 'b':
  ------------------
  |  Branch (256:9): [True: 3, False: 3]
  ------------------
  257|      3|            binary = 1;
  258|      3|            break;
  259|      0|        default:
  ------------------
  |  Branch (259:9): [True: 0, False: 6]
  ------------------
  260|      0|            goto invalid_mode;
  261|      6|        }
  262|       |
  263|       |        /* c must not be duplicated */
  264|      6|        if (strchr(mode+i+1, c)) {
  ------------------
  |  Branch (264:13): [True: 0, False: 6]
  ------------------
  265|      0|          invalid_mode:
  266|      0|            PyErr_Format(PyExc_ValueError, "invalid mode: '%s'", mode);
  267|      0|            goto error;
  268|      0|        }
  269|       |
  270|      6|    }
  271|       |
  272|      3|    m = rawmode;
  273|      3|    if (creating)  *(m++) = 'x';
  ------------------
  |  Branch (273:9): [True: 0, False: 3]
  ------------------
  274|      3|    if (reading)   *(m++) = 'r';
  ------------------
  |  Branch (274:9): [True: 1, False: 2]
  ------------------
  275|      3|    if (writing)   *(m++) = 'w';
  ------------------
  |  Branch (275:9): [True: 2, False: 1]
  ------------------
  276|      3|    if (appending) *(m++) = 'a';
  ------------------
  |  Branch (276:9): [True: 0, False: 3]
  ------------------
  277|      3|    if (updating)  *(m++) = '+';
  ------------------
  |  Branch (277:9): [True: 0, False: 3]
  ------------------
  278|      3|    *m = '\0';
  279|       |
  280|       |    /* Parameters validation */
  281|      3|    if (text && binary) {
  ------------------
  |  Branch (281:9): [True: 0, False: 3]
  |  Branch (281:17): [True: 0, False: 0]
  ------------------
  282|      0|        PyErr_SetString(PyExc_ValueError,
  283|      0|                        "can't have text and binary mode at once");
  284|      0|        goto error;
  285|      0|    }
  286|       |
  287|      3|    if (creating + reading + writing + appending > 1) {
  ------------------
  |  Branch (287:9): [True: 0, False: 3]
  ------------------
  288|      0|        PyErr_SetString(PyExc_ValueError,
  289|      0|                        "must have exactly one of create/read/write/append mode");
  290|      0|        goto error;
  291|      0|    }
  292|       |
  293|      3|    if (binary && encoding != NULL) {
  ------------------
  |  Branch (293:9): [True: 3, False: 0]
  |  Branch (293:19): [True: 0, False: 3]
  ------------------
  294|      0|        PyErr_SetString(PyExc_ValueError,
  295|      0|                        "binary mode doesn't take an encoding argument");
  296|      0|        goto error;
  297|      0|    }
  298|       |
  299|      3|    if (binary && errors != NULL) {
  ------------------
  |  Branch (299:9): [True: 3, False: 0]
  |  Branch (299:19): [True: 0, False: 3]
  ------------------
  300|      0|        PyErr_SetString(PyExc_ValueError,
  301|      0|                        "binary mode doesn't take an errors argument");
  302|      0|        goto error;
  303|      0|    }
  304|       |
  305|      3|    if (binary && newline != NULL) {
  ------------------
  |  Branch (305:9): [True: 3, False: 0]
  |  Branch (305:19): [True: 0, False: 3]
  ------------------
  306|      0|        PyErr_SetString(PyExc_ValueError,
  307|      0|                        "binary mode doesn't take a newline argument");
  308|      0|        goto error;
  309|      0|    }
  310|       |
  311|      3|    if (binary && buffering == 1) {
  ------------------
  |  Branch (311:9): [True: 3, False: 0]
  |  Branch (311:19): [True: 0, False: 3]
  ------------------
  312|      0|        if (PyErr_WarnEx(PyExc_RuntimeWarning,
  ------------------
  |  Branch (312:13): [True: 0, False: 0]
  ------------------
  313|      0|                         "line buffering (buffering=1) isn't supported in "
  314|      0|                         "binary mode, the default buffer size will be used",
  315|      0|                         1) < 0) {
  316|      0|           goto error;
  317|      0|        }
  318|      0|    }
  319|       |
  320|       |    /* Create the Raw file stream */
  321|      3|    _PyIO_State *state = get_io_state(module);
  322|      3|    {
  323|      3|        PyObject *RawIO_class = (PyObject *)state->PyFileIO_Type;
  324|       |#ifdef HAVE_WINDOWS_CONSOLE_IO
  325|       |        const PyConfig *config = _Py_GetConfig();
  326|       |        if (!config->legacy_windows_stdio && _PyIO_get_console_type(path_or_fd) != '\0') {
  327|       |            RawIO_class = (PyObject *)state->PyWindowsConsoleIO_Type;
  328|       |            encoding = "utf-8";
  329|       |        }
  330|       |#endif
  331|      3|        raw = PyObject_CallFunction(RawIO_class, "OsOO",
  332|      3|                                    path_or_fd, rawmode,
  333|      3|                                    closefd ? Py_True : Py_False,
  ------------------
  |  |   26|      3|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                                                  closefd ? Py_True : Py_False,
  ------------------
  |  |   25|      3|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (333:37): [True: 0, False: 3]
  ------------------
  334|      3|                                    opener);
  335|      3|    }
  336|       |
  337|      3|    if (raw == NULL)
  ------------------
  |  Branch (337:9): [True: 0, False: 3]
  ------------------
  338|      0|        goto error;
  339|      3|    result = raw;
  340|       |
  341|      3|    Py_SETREF(path_or_fd, NULL);
  ------------------
  |  |  352|      3|    do { \
  |  |  353|      3|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  354|      3|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  355|      3|        *_tmp_dst_ptr = (src); \
  |  |  356|      3|        Py_DECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  430|      3|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  357|      3|    } while (0)
  |  |  ------------------
  |  |  |  Branch (357:14): [Folded, False: 3]
  |  |  ------------------
  ------------------
  342|       |
  343|      3|    modeobj = PyUnicode_FromString(mode);
  344|      3|    if (modeobj == NULL)
  ------------------
  |  Branch (344:9): [True: 0, False: 3]
  ------------------
  345|      0|        goto error;
  346|       |
  347|       |    /* buffering */
  348|      3|    if (buffering < 0) {
  ------------------
  |  Branch (348:9): [True: 3, False: 0]
  ------------------
  349|      3|        PyObject *res = PyObject_CallMethodNoArgs(raw, &_Py_ID(_isatty_open_only));
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  350|      3|        if (res == NULL)
  ------------------
  |  Branch (350:13): [True: 0, False: 3]
  ------------------
  351|      0|            goto error;
  352|      3|        isatty = PyObject_IsTrue(res);
  353|      3|        Py_DECREF(res);
  ------------------
  |  |  430|      3|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  354|      3|        if (isatty < 0)
  ------------------
  |  Branch (354:13): [True: 0, False: 3]
  ------------------
  355|      0|            goto error;
  356|      3|    }
  357|       |
  358|      3|    if (buffering == 1 || isatty) {
  ------------------
  |  Branch (358:9): [True: 0, False: 3]
  |  Branch (358:27): [True: 0, False: 3]
  ------------------
  359|      0|        buffering = -1;
  360|      0|        line_buffering = 1;
  361|      0|    }
  362|      3|    else
  363|      3|        line_buffering = 0;
  364|       |
  365|      3|    if (buffering < 0) {
  ------------------
  |  Branch (365:9): [True: 3, False: 0]
  ------------------
  366|      3|        PyObject *blksize_obj;
  367|      3|        blksize_obj = PyObject_GetAttr(raw, &_Py_ID(_blksize));
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  368|      3|        if (blksize_obj == NULL)
  ------------------
  |  Branch (368:13): [True: 0, False: 3]
  ------------------
  369|      0|            goto error;
  370|      3|        buffering = PyLong_AsLong(blksize_obj);
  371|      3|        Py_DECREF(blksize_obj);
  ------------------
  |  |  430|      3|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  372|      3|        if (buffering == -1 && PyErr_Occurred())
  ------------------
  |  Branch (372:13): [True: 0, False: 3]
  |  Branch (372:32): [True: 0, False: 0]
  ------------------
  373|      0|            goto error;
  374|      3|        buffering = Py_MAX(Py_MIN(buffering, 8192 * 1024), DEFAULT_BUFFER_SIZE);
  ------------------
  |  |  115|      6|#define Py_MAX(x, y) (((x) > (y)) ? (x) : (y))
  |  |  ------------------
  |  |  |  Branch (115:23): [True: 0, False: 3]
  |  |  |  Branch (115:25): [True: 0, False: 3]
  |  |  |  Branch (115:38): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  375|      3|    }
  376|      3|    if (buffering < 0) {
  ------------------
  |  Branch (376:9): [True: 0, False: 3]
  ------------------
  377|      0|        PyErr_SetString(PyExc_ValueError,
  378|      0|                        "invalid buffering size");
  379|      0|        goto error;
  380|      0|    }
  381|       |
  382|       |    /* if not buffering, returns the raw file object */
  383|      3|    if (buffering == 0) {
  ------------------
  |  Branch (383:9): [True: 0, False: 3]
  ------------------
  384|      0|        if (!binary) {
  ------------------
  |  Branch (384:13): [True: 0, False: 0]
  ------------------
  385|      0|            PyErr_SetString(PyExc_ValueError,
  386|      0|                            "can't have unbuffered text I/O");
  387|      0|            goto error;
  388|      0|        }
  389|       |
  390|      0|        Py_DECREF(modeobj);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  391|      0|        return result;
  392|      0|    }
  393|       |
  394|       |    /* wraps into a buffered file */
  395|      3|    {
  396|      3|        PyObject *Buffered_class;
  397|       |
  398|      3|        if (updating) {
  ------------------
  |  Branch (398:13): [True: 0, False: 3]
  ------------------
  399|      0|            Buffered_class = (PyObject *)state->PyBufferedRandom_Type;
  400|      0|        }
  401|      3|        else if (creating || writing || appending) {
  ------------------
  |  Branch (401:18): [True: 0, False: 3]
  |  Branch (401:30): [True: 2, False: 1]
  |  Branch (401:41): [True: 0, False: 1]
  ------------------
  402|      2|            Buffered_class = (PyObject *)state->PyBufferedWriter_Type;
  403|      2|        }
  404|      1|        else if (reading) {
  ------------------
  |  Branch (404:18): [True: 1, False: 0]
  ------------------
  405|      1|            Buffered_class = (PyObject *)state->PyBufferedReader_Type;
  406|      1|        }
  407|      0|        else {
  408|      0|            PyErr_Format(PyExc_ValueError,
  409|      0|                         "unknown mode: '%s'", mode);
  410|      0|            goto error;
  411|      0|        }
  412|       |
  413|      3|        buffer = PyObject_CallFunction(Buffered_class, "Oi", raw, buffering);
  414|      3|    }
  415|      3|    if (buffer == NULL)
  ------------------
  |  Branch (415:9): [True: 0, False: 3]
  ------------------
  416|      0|        goto error;
  417|      3|    result = buffer;
  418|      3|    Py_DECREF(raw);
  ------------------
  |  |  430|      3|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  419|       |
  420|       |
  421|       |    /* if binary, returns the buffered file */
  422|      3|    if (binary) {
  ------------------
  |  Branch (422:9): [True: 3, False: 0]
  ------------------
  423|      3|        Py_DECREF(modeobj);
  ------------------
  |  |  430|      3|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  424|      3|        return result;
  425|      3|    }
  426|       |
  427|       |    /* wraps into a TextIOWrapper */
  428|      0|    wrapper = PyObject_CallFunction((PyObject *)state->PyTextIOWrapper_Type,
  429|      0|                                    "OsssO",
  430|      0|                                    buffer,
  431|      0|                                    encoding, errors, newline,
  432|      0|                                    line_buffering ? Py_True : Py_False);
  ------------------
  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                                                  line_buffering ? Py_True : Py_False);
  ------------------
  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (432:37): [True: 0, False: 0]
  ------------------
  433|      0|    if (wrapper == NULL)
  ------------------
  |  Branch (433:9): [True: 0, False: 0]
  ------------------
  434|      0|        goto error;
  435|      0|    result = wrapper;
  436|      0|    Py_DECREF(buffer);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  437|       |
  438|      0|    if (PyObject_SetAttr(wrapper, &_Py_ID(mode), modeobj) < 0)
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (438:9): [True: 0, False: 0]
  ------------------
  439|      0|        goto error;
  440|      0|    Py_DECREF(modeobj);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  441|      0|    return result;
  442|       |
  443|      0|  error:
  444|      0|    if (result != NULL) {
  ------------------
  |  Branch (444:9): [True: 0, False: 0]
  ------------------
  445|      0|        PyObject *exc = PyErr_GetRaisedException();
  446|      0|        PyObject *close_result = PyObject_CallMethodNoArgs(result, &_Py_ID(close));
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  447|      0|        _PyErr_ChainExceptions1(exc);
  448|      0|        Py_XDECREF(close_result);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  449|      0|        Py_DECREF(result);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  450|      0|    }
  451|      0|    Py_XDECREF(path_or_fd);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  452|      0|    Py_XDECREF(modeobj);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  453|       |    return NULL;
  454|      0|}
_iomodule.c:iomodule_exec:
  653|      1|{
  654|      1|    _PyIO_State *state = get_io_state(m);
  655|       |
  656|       |    /* DEFAULT_BUFFER_SIZE */
  657|      1|    if (PyModule_AddIntMacro(m, DEFAULT_BUFFER_SIZE) < 0)
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  ------------------
  |  Branch (657:9): [True: 0, False: 1]
  ------------------
  658|      0|        return -1;
  659|       |
  660|       |    /* UnsupportedOperation inherits from ValueError and OSError */
  661|      1|    state->unsupported_operation = PyObject_CallFunction(
  662|      1|        (PyObject *)&PyType_Type, "s(OO){}",
  663|      1|        "UnsupportedOperation", PyExc_OSError, PyExc_ValueError);
  664|      1|    if (state->unsupported_operation == NULL)
  ------------------
  |  Branch (664:9): [True: 0, False: 1]
  ------------------
  665|      0|        return -1;
  666|      1|    if (PyObject_SetAttrString(state->unsupported_operation,
  ------------------
  |  Branch (666:9): [True: 0, False: 1]
  ------------------
  667|      1|                               "__module__", &_Py_ID(io)) < 0)
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  668|      0|    {
  669|      0|        return -1;
  670|      0|    }
  671|      1|    if (PyModule_AddObjectRef(m, "UnsupportedOperation",
  ------------------
  |  Branch (671:9): [True: 0, False: 1]
  ------------------
  672|      1|                              state->unsupported_operation) < 0)
  673|      0|    {
  674|      0|        return -1;
  675|      0|    }
  676|       |
  677|       |    /* BlockingIOError, for compatibility */
  678|      1|    if (PyModule_AddObjectRef(m, "BlockingIOError",
  ------------------
  |  Branch (678:9): [True: 0, False: 1]
  ------------------
  679|      1|                              (PyObject *) PyExc_BlockingIOError) < 0) {
  680|      0|        return -1;
  681|      0|    }
  682|       |
  683|       |    // Base classes
  684|      1|    ADD_TYPE(m, state->PyIncrementalNewlineDecoder_Type, &_Py_nldecoder_spec, NULL);
  ------------------
  |  |  639|      1|#define ADD_TYPE(module, type, spec, base)                               \
  |  |  640|      1|do {                                                                     \
  |  |  641|      1|    type = (PyTypeObject *)PyType_FromModuleAndSpec(module, spec,        \
  |  |  642|      1|                                                    (PyObject *)base);   \
  |  |  643|      1|    if (type == NULL) {                                                  \
  |  |  ------------------
  |  |  |  Branch (643:9): [True: 0, False: 1]
  |  |  ------------------
  |  |  644|      0|        return -1;                                                       \
  |  |  645|      0|    }                                                                    \
  |  |  646|      1|    if (PyModule_AddType(module, type) < 0) {                            \
  |  |  ------------------
  |  |  |  Branch (646:9): [True: 0, False: 1]
  |  |  ------------------
  |  |  647|      0|        return -1;                                                       \
  |  |  648|      0|    }                                                                    \
  |  |  649|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (649:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  685|      1|    ADD_TYPE(m, state->PyBytesIOBuffer_Type, &_Py_bytesiobuf_spec, NULL);
  ------------------
  |  |  639|      1|#define ADD_TYPE(module, type, spec, base)                               \
  |  |  640|      1|do {                                                                     \
  |  |  641|      1|    type = (PyTypeObject *)PyType_FromModuleAndSpec(module, spec,        \
  |  |  642|      1|                                                    (PyObject *)base);   \
  |  |  643|      1|    if (type == NULL) {                                                  \
  |  |  ------------------
  |  |  |  Branch (643:9): [True: 0, False: 1]
  |  |  ------------------
  |  |  644|      0|        return -1;                                                       \
  |  |  645|      0|    }                                                                    \
  |  |  646|      1|    if (PyModule_AddType(module, type) < 0) {                            \
  |  |  ------------------
  |  |  |  Branch (646:9): [True: 0, False: 1]
  |  |  ------------------
  |  |  647|      0|        return -1;                                                       \
  |  |  648|      0|    }                                                                    \
  |  |  649|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (649:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  686|      1|    ADD_TYPE(m, state->PyIOBase_Type, &_Py_iobase_spec, NULL);
  ------------------
  |  |  639|      1|#define ADD_TYPE(module, type, spec, base)                               \
  |  |  640|      1|do {                                                                     \
  |  |  641|      1|    type = (PyTypeObject *)PyType_FromModuleAndSpec(module, spec,        \
  |  |  642|      1|                                                    (PyObject *)base);   \
  |  |  643|      1|    if (type == NULL) {                                                  \
  |  |  ------------------
  |  |  |  Branch (643:9): [True: 0, False: 1]
  |  |  ------------------
  |  |  644|      0|        return -1;                                                       \
  |  |  645|      0|    }                                                                    \
  |  |  646|      1|    if (PyModule_AddType(module, type) < 0) {                            \
  |  |  ------------------
  |  |  |  Branch (646:9): [True: 0, False: 1]
  |  |  ------------------
  |  |  647|      0|        return -1;                                                       \
  |  |  648|      0|    }                                                                    \
  |  |  649|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (649:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  687|       |
  688|       |    // PyIOBase_Type subclasses
  689|      1|    ADD_TYPE(m, state->PyTextIOBase_Type, &_Py_textiobase_spec,
  ------------------
  |  |  639|      1|#define ADD_TYPE(module, type, spec, base)                               \
  |  |  640|      1|do {                                                                     \
  |  |  641|      1|    type = (PyTypeObject *)PyType_FromModuleAndSpec(module, spec,        \
  |  |  642|      1|                                                    (PyObject *)base);   \
  |  |  643|      1|    if (type == NULL) {                                                  \
  |  |  ------------------
  |  |  |  Branch (643:9): [True: 0, False: 1]
  |  |  ------------------
  |  |  644|      0|        return -1;                                                       \
  |  |  645|      0|    }                                                                    \
  |  |  646|      1|    if (PyModule_AddType(module, type) < 0) {                            \
  |  |  ------------------
  |  |  |  Branch (646:9): [True: 0, False: 1]
  |  |  ------------------
  |  |  647|      0|        return -1;                                                       \
  |  |  648|      0|    }                                                                    \
  |  |  649|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (649:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  690|      1|             state->PyIOBase_Type);
  691|      1|    ADD_TYPE(m, state->PyBufferedIOBase_Type, &_Py_bufferediobase_spec,
  ------------------
  |  |  639|      1|#define ADD_TYPE(module, type, spec, base)                               \
  |  |  640|      1|do {                                                                     \
  |  |  641|      1|    type = (PyTypeObject *)PyType_FromModuleAndSpec(module, spec,        \
  |  |  642|      1|                                                    (PyObject *)base);   \
  |  |  643|      1|    if (type == NULL) {                                                  \
  |  |  ------------------
  |  |  |  Branch (643:9): [True: 0, False: 1]
  |  |  ------------------
  |  |  644|      0|        return -1;                                                       \
  |  |  645|      0|    }                                                                    \
  |  |  646|      1|    if (PyModule_AddType(module, type) < 0) {                            \
  |  |  ------------------
  |  |  |  Branch (646:9): [True: 0, False: 1]
  |  |  ------------------
  |  |  647|      0|        return -1;                                                       \
  |  |  648|      0|    }                                                                    \
  |  |  649|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (649:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  692|      1|             state->PyIOBase_Type);
  693|      1|    ADD_TYPE(m, state->PyRawIOBase_Type, &_Py_rawiobase_spec,
  ------------------
  |  |  639|      1|#define ADD_TYPE(module, type, spec, base)                               \
  |  |  640|      1|do {                                                                     \
  |  |  641|      1|    type = (PyTypeObject *)PyType_FromModuleAndSpec(module, spec,        \
  |  |  642|      1|                                                    (PyObject *)base);   \
  |  |  643|      1|    if (type == NULL) {                                                  \
  |  |  ------------------
  |  |  |  Branch (643:9): [True: 0, False: 1]
  |  |  ------------------
  |  |  644|      0|        return -1;                                                       \
  |  |  645|      0|    }                                                                    \
  |  |  646|      1|    if (PyModule_AddType(module, type) < 0) {                            \
  |  |  ------------------
  |  |  |  Branch (646:9): [True: 0, False: 1]
  |  |  ------------------
  |  |  647|      0|        return -1;                                                       \
  |  |  648|      0|    }                                                                    \
  |  |  649|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (649:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  694|      1|             state->PyIOBase_Type);
  695|       |
  696|       |    // PyBufferedIOBase_Type(PyIOBase_Type) subclasses
  697|      1|    ADD_TYPE(m, state->PyBytesIO_Type, &_Py_bytesio_spec, state->PyBufferedIOBase_Type);
  ------------------
  |  |  639|      1|#define ADD_TYPE(module, type, spec, base)                               \
  |  |  640|      1|do {                                                                     \
  |  |  641|      1|    type = (PyTypeObject *)PyType_FromModuleAndSpec(module, spec,        \
  |  |  642|      1|                                                    (PyObject *)base);   \
  |  |  643|      1|    if (type == NULL) {                                                  \
  |  |  ------------------
  |  |  |  Branch (643:9): [True: 0, False: 1]
  |  |  ------------------
  |  |  644|      0|        return -1;                                                       \
  |  |  645|      0|    }                                                                    \
  |  |  646|      1|    if (PyModule_AddType(module, type) < 0) {                            \
  |  |  ------------------
  |  |  |  Branch (646:9): [True: 0, False: 1]
  |  |  ------------------
  |  |  647|      0|        return -1;                                                       \
  |  |  648|      0|    }                                                                    \
  |  |  649|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (649:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  698|      1|    ADD_TYPE(m, state->PyBufferedWriter_Type, &_Py_bufferedwriter_spec,
  ------------------
  |  |  639|      1|#define ADD_TYPE(module, type, spec, base)                               \
  |  |  640|      1|do {                                                                     \
  |  |  641|      1|    type = (PyTypeObject *)PyType_FromModuleAndSpec(module, spec,        \
  |  |  642|      1|                                                    (PyObject *)base);   \
  |  |  643|      1|    if (type == NULL) {                                                  \
  |  |  ------------------
  |  |  |  Branch (643:9): [True: 0, False: 1]
  |  |  ------------------
  |  |  644|      0|        return -1;                                                       \
  |  |  645|      0|    }                                                                    \
  |  |  646|      1|    if (PyModule_AddType(module, type) < 0) {                            \
  |  |  ------------------
  |  |  |  Branch (646:9): [True: 0, False: 1]
  |  |  ------------------
  |  |  647|      0|        return -1;                                                       \
  |  |  648|      0|    }                                                                    \
  |  |  649|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (649:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  699|      1|             state->PyBufferedIOBase_Type);
  700|      1|    ADD_TYPE(m, state->PyBufferedReader_Type, &_Py_bufferedreader_spec,
  ------------------
  |  |  639|      1|#define ADD_TYPE(module, type, spec, base)                               \
  |  |  640|      1|do {                                                                     \
  |  |  641|      1|    type = (PyTypeObject *)PyType_FromModuleAndSpec(module, spec,        \
  |  |  642|      1|                                                    (PyObject *)base);   \
  |  |  643|      1|    if (type == NULL) {                                                  \
  |  |  ------------------
  |  |  |  Branch (643:9): [True: 0, False: 1]
  |  |  ------------------
  |  |  644|      0|        return -1;                                                       \
  |  |  645|      0|    }                                                                    \
  |  |  646|      1|    if (PyModule_AddType(module, type) < 0) {                            \
  |  |  ------------------
  |  |  |  Branch (646:9): [True: 0, False: 1]
  |  |  ------------------
  |  |  647|      0|        return -1;                                                       \
  |  |  648|      0|    }                                                                    \
  |  |  649|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (649:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  701|      1|             state->PyBufferedIOBase_Type);
  702|      1|    ADD_TYPE(m, state->PyBufferedRWPair_Type, &_Py_bufferedrwpair_spec,
  ------------------
  |  |  639|      1|#define ADD_TYPE(module, type, spec, base)                               \
  |  |  640|      1|do {                                                                     \
  |  |  641|      1|    type = (PyTypeObject *)PyType_FromModuleAndSpec(module, spec,        \
  |  |  642|      1|                                                    (PyObject *)base);   \
  |  |  643|      1|    if (type == NULL) {                                                  \
  |  |  ------------------
  |  |  |  Branch (643:9): [True: 0, False: 1]
  |  |  ------------------
  |  |  644|      0|        return -1;                                                       \
  |  |  645|      0|    }                                                                    \
  |  |  646|      1|    if (PyModule_AddType(module, type) < 0) {                            \
  |  |  ------------------
  |  |  |  Branch (646:9): [True: 0, False: 1]
  |  |  ------------------
  |  |  647|      0|        return -1;                                                       \
  |  |  648|      0|    }                                                                    \
  |  |  649|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (649:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  703|      1|             state->PyBufferedIOBase_Type);
  704|      1|    ADD_TYPE(m, state->PyBufferedRandom_Type, &_Py_bufferedrandom_spec,
  ------------------
  |  |  639|      1|#define ADD_TYPE(module, type, spec, base)                               \
  |  |  640|      1|do {                                                                     \
  |  |  641|      1|    type = (PyTypeObject *)PyType_FromModuleAndSpec(module, spec,        \
  |  |  642|      1|                                                    (PyObject *)base);   \
  |  |  643|      1|    if (type == NULL) {                                                  \
  |  |  ------------------
  |  |  |  Branch (643:9): [True: 0, False: 1]
  |  |  ------------------
  |  |  644|      0|        return -1;                                                       \
  |  |  645|      0|    }                                                                    \
  |  |  646|      1|    if (PyModule_AddType(module, type) < 0) {                            \
  |  |  ------------------
  |  |  |  Branch (646:9): [True: 0, False: 1]
  |  |  ------------------
  |  |  647|      0|        return -1;                                                       \
  |  |  648|      0|    }                                                                    \
  |  |  649|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (649:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  705|      1|             state->PyBufferedIOBase_Type);
  706|       |
  707|       |    // PyRawIOBase_Type(PyIOBase_Type) subclasses
  708|      1|    ADD_TYPE(m, state->PyFileIO_Type, &_Py_fileio_spec, state->PyRawIOBase_Type);
  ------------------
  |  |  639|      1|#define ADD_TYPE(module, type, spec, base)                               \
  |  |  640|      1|do {                                                                     \
  |  |  641|      1|    type = (PyTypeObject *)PyType_FromModuleAndSpec(module, spec,        \
  |  |  642|      1|                                                    (PyObject *)base);   \
  |  |  643|      1|    if (type == NULL) {                                                  \
  |  |  ------------------
  |  |  |  Branch (643:9): [True: 0, False: 1]
  |  |  ------------------
  |  |  644|      0|        return -1;                                                       \
  |  |  645|      0|    }                                                                    \
  |  |  646|      1|    if (PyModule_AddType(module, type) < 0) {                            \
  |  |  ------------------
  |  |  |  Branch (646:9): [True: 0, False: 1]
  |  |  ------------------
  |  |  647|      0|        return -1;                                                       \
  |  |  648|      0|    }                                                                    \
  |  |  649|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (649:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  709|       |
  710|       |#ifdef HAVE_WINDOWS_CONSOLE_IO
  711|       |    ADD_TYPE(m, state->PyWindowsConsoleIO_Type, &_Py_winconsoleio_spec,
  712|       |             state->PyRawIOBase_Type);
  713|       |#endif
  714|       |
  715|       |    // PyTextIOBase_Type(PyIOBase_Type) subclasses
  716|      1|    ADD_TYPE(m, state->PyStringIO_Type, &_Py_stringio_spec, state->PyTextIOBase_Type);
  ------------------
  |  |  639|      1|#define ADD_TYPE(module, type, spec, base)                               \
  |  |  640|      1|do {                                                                     \
  |  |  641|      1|    type = (PyTypeObject *)PyType_FromModuleAndSpec(module, spec,        \
  |  |  642|      1|                                                    (PyObject *)base);   \
  |  |  643|      1|    if (type == NULL) {                                                  \
  |  |  ------------------
  |  |  |  Branch (643:9): [True: 0, False: 1]
  |  |  ------------------
  |  |  644|      0|        return -1;                                                       \
  |  |  645|      0|    }                                                                    \
  |  |  646|      1|    if (PyModule_AddType(module, type) < 0) {                            \
  |  |  ------------------
  |  |  |  Branch (646:9): [True: 0, False: 1]
  |  |  ------------------
  |  |  647|      0|        return -1;                                                       \
  |  |  648|      0|    }                                                                    \
  |  |  649|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (649:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  717|      1|    ADD_TYPE(m, state->PyTextIOWrapper_Type, &_Py_textiowrapper_spec,
  ------------------
  |  |  639|      1|#define ADD_TYPE(module, type, spec, base)                               \
  |  |  640|      1|do {                                                                     \
  |  |  641|      1|    type = (PyTypeObject *)PyType_FromModuleAndSpec(module, spec,        \
  |  |  642|      1|                                                    (PyObject *)base);   \
  |  |  643|      1|    if (type == NULL) {                                                  \
  |  |  ------------------
  |  |  |  Branch (643:9): [True: 0, False: 1]
  |  |  ------------------
  |  |  644|      0|        return -1;                                                       \
  |  |  645|      0|    }                                                                    \
  |  |  646|      1|    if (PyModule_AddType(module, type) < 0) {                            \
  |  |  ------------------
  |  |  |  Branch (646:9): [True: 0, False: 1]
  |  |  ------------------
  |  |  647|      0|        return -1;                                                       \
  |  |  648|      0|    }                                                                    \
  |  |  649|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (649:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
  718|      1|             state->PyTextIOBase_Type);
  719|       |
  720|      1|#undef ADD_TYPE
  721|      1|    return 0;
  722|      1|}
_iomodule.c:iomodule_traverse:
  567|      2|iomodule_traverse(PyObject *mod, visitproc visit, void *arg) {
  568|      2|    _PyIO_State *state = get_io_state(mod);
  569|      2|    Py_VISIT(state->unsupported_operation);
  ------------------
  |  |  194|      2|    do {                                                                \
  |  |  195|      2|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 2, False: 0]
  |  |  ------------------
  |  |  196|      2|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      2|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 2]
  |  |  ------------------
  |  |  198|      2|                return vret;                                            \
  |  |  199|      2|        }                                                               \
  |  |  200|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
  570|       |
  571|      2|    Py_VISIT(state->PyIOBase_Type);
  ------------------
  |  |  194|      2|    do {                                                                \
  |  |  195|      2|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 2, False: 0]
  |  |  ------------------
  |  |  196|      2|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      2|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 2]
  |  |  ------------------
  |  |  198|      2|                return vret;                                            \
  |  |  199|      2|        }                                                               \
  |  |  200|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
  572|      2|    Py_VISIT(state->PyIncrementalNewlineDecoder_Type);
  ------------------
  |  |  194|      2|    do {                                                                \
  |  |  195|      2|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 2, False: 0]
  |  |  ------------------
  |  |  196|      2|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      2|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 2]
  |  |  ------------------
  |  |  198|      2|                return vret;                                            \
  |  |  199|      2|        }                                                               \
  |  |  200|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
  573|      2|    Py_VISIT(state->PyRawIOBase_Type);
  ------------------
  |  |  194|      2|    do {                                                                \
  |  |  195|      2|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 2, False: 0]
  |  |  ------------------
  |  |  196|      2|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      2|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 2]
  |  |  ------------------
  |  |  198|      2|                return vret;                                            \
  |  |  199|      2|        }                                                               \
  |  |  200|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
  574|      2|    Py_VISIT(state->PyBufferedIOBase_Type);
  ------------------
  |  |  194|      2|    do {                                                                \
  |  |  195|      2|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 2, False: 0]
  |  |  ------------------
  |  |  196|      2|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      2|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 2]
  |  |  ------------------
  |  |  198|      2|                return vret;                                            \
  |  |  199|      2|        }                                                               \
  |  |  200|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
  575|      2|    Py_VISIT(state->PyBufferedRWPair_Type);
  ------------------
  |  |  194|      2|    do {                                                                \
  |  |  195|      2|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 2, False: 0]
  |  |  ------------------
  |  |  196|      2|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      2|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 2]
  |  |  ------------------
  |  |  198|      2|                return vret;                                            \
  |  |  199|      2|        }                                                               \
  |  |  200|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
  576|      2|    Py_VISIT(state->PyBufferedRandom_Type);
  ------------------
  |  |  194|      2|    do {                                                                \
  |  |  195|      2|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 2, False: 0]
  |  |  ------------------
  |  |  196|      2|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      2|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 2]
  |  |  ------------------
  |  |  198|      2|                return vret;                                            \
  |  |  199|      2|        }                                                               \
  |  |  200|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
  577|      2|    Py_VISIT(state->PyBufferedReader_Type);
  ------------------
  |  |  194|      2|    do {                                                                \
  |  |  195|      2|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 2, False: 0]
  |  |  ------------------
  |  |  196|      2|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      2|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 2]
  |  |  ------------------
  |  |  198|      2|                return vret;                                            \
  |  |  199|      2|        }                                                               \
  |  |  200|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
  578|      2|    Py_VISIT(state->PyBufferedWriter_Type);
  ------------------
  |  |  194|      2|    do {                                                                \
  |  |  195|      2|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 2, False: 0]
  |  |  ------------------
  |  |  196|      2|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      2|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 2]
  |  |  ------------------
  |  |  198|      2|                return vret;                                            \
  |  |  199|      2|        }                                                               \
  |  |  200|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
  579|      2|    Py_VISIT(state->PyBytesIOBuffer_Type);
  ------------------
  |  |  194|      2|    do {                                                                \
  |  |  195|      2|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 2, False: 0]
  |  |  ------------------
  |  |  196|      2|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      2|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 2]
  |  |  ------------------
  |  |  198|      2|                return vret;                                            \
  |  |  199|      2|        }                                                               \
  |  |  200|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
  580|      2|    Py_VISIT(state->PyBytesIO_Type);
  ------------------
  |  |  194|      2|    do {                                                                \
  |  |  195|      2|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 2, False: 0]
  |  |  ------------------
  |  |  196|      2|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      2|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 2]
  |  |  ------------------
  |  |  198|      2|                return vret;                                            \
  |  |  199|      2|        }                                                               \
  |  |  200|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
  581|      2|    Py_VISIT(state->PyFileIO_Type);
  ------------------
  |  |  194|      2|    do {                                                                \
  |  |  195|      2|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 2, False: 0]
  |  |  ------------------
  |  |  196|      2|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      2|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 2]
  |  |  ------------------
  |  |  198|      2|                return vret;                                            \
  |  |  199|      2|        }                                                               \
  |  |  200|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
  582|      2|    Py_VISIT(state->PyStringIO_Type);
  ------------------
  |  |  194|      2|    do {                                                                \
  |  |  195|      2|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 2, False: 0]
  |  |  ------------------
  |  |  196|      2|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      2|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 2]
  |  |  ------------------
  |  |  198|      2|                return vret;                                            \
  |  |  199|      2|        }                                                               \
  |  |  200|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
  583|      2|    Py_VISIT(state->PyTextIOBase_Type);
  ------------------
  |  |  194|      2|    do {                                                                \
  |  |  195|      2|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 2, False: 0]
  |  |  ------------------
  |  |  196|      2|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      2|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 2]
  |  |  ------------------
  |  |  198|      2|                return vret;                                            \
  |  |  199|      2|        }                                                               \
  |  |  200|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
  584|      2|    Py_VISIT(state->PyTextIOWrapper_Type);
  ------------------
  |  |  194|      2|    do {                                                                \
  |  |  195|      2|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 2, False: 0]
  |  |  ------------------
  |  |  196|      2|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      2|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 2]
  |  |  ------------------
  |  |  198|      2|                return vret;                                            \
  |  |  199|      2|        }                                                               \
  |  |  200|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
  585|       |#ifdef HAVE_WINDOWS_CONSOLE_IO
  586|       |    Py_VISIT(state->PyWindowsConsoleIO_Type);
  587|       |#endif
  588|      2|    return 0;
  589|      2|}

_iomodule.c:get_io_state:
  171|      6|{
  172|      6|    void *state = _PyModule_GetState(module);
  173|      6|    assert(state != NULL);
  ------------------
  |  Branch (173:5): [True: 6, False: 0]
  ------------------
  174|      6|    return (_PyIO_State *)state;
  175|      6|}
bufferedio.c:find_io_state_by_def:
  187|      3|{
  188|      3|    PyObject *mod = PyType_GetModuleByDef(type, &_PyIO_Module);
  189|      3|    assert(mod != NULL);
  ------------------
  |  Branch (189:5): [True: 3, False: 0]
  ------------------
  190|      3|    return get_io_state(mod);
  191|      3|}
bufferedio.c:get_io_state:
  171|      3|{
  172|      3|    void *state = _PyModule_GetState(module);
  173|      3|    assert(state != NULL);
  ------------------
  |  Branch (173:5): [True: 3, False: 0]
  ------------------
  174|      3|    return (_PyIO_State *)state;
  175|      3|}
textio.c:find_io_state_by_def:
  187|      3|{
  188|      3|    PyObject *mod = PyType_GetModuleByDef(type, &_PyIO_Module);
  189|      3|    assert(mod != NULL);
  ------------------
  |  Branch (189:5): [True: 3, False: 0]
  ------------------
  190|      3|    return get_io_state(mod);
  191|      3|}
textio.c:get_io_state:
  171|      3|{
  172|      3|    void *state = _PyModule_GetState(module);
  173|      3|    assert(state != NULL);
  ------------------
  |  Branch (173:5): [True: 3, False: 0]
  ------------------
  174|      3|    return (_PyIO_State *)state;
  175|      3|}

bufferedio.c:_bufferedwriter_reset_buf:
 1924|      2|{
 1925|      2|    self->write_pos = 0;
 1926|      2|    self->write_end = -1;
 1927|      2|}
bufferedio.c:_bufferedreader_reset_buf:
 1577|      1|{
 1578|      1|    self->read_end = -1;
 1579|      1|}
bufferedio.c:_io__Buffered_seekable_impl:
  642|      3|{
  643|      3|    CHECK_INITIALIZED(self)
  ------------------
  |  |  341|      3|    if (self->ok <= 0) { \
  |  |  ------------------
  |  |  |  Branch (341:9): [True: 0, False: 3]
  |  |  ------------------
  |  |  342|      0|        if (self->detached) { \
  |  |  ------------------
  |  |  |  Branch (342:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  343|      0|            PyErr_SetString(PyExc_ValueError, \
  |  |  344|      0|                 "raw stream has been detached"); \
  |  |  345|      0|        } else { \
  |  |  346|      0|            PyErr_SetString(PyExc_ValueError, \
  |  |  347|      0|                "I/O operation on uninitialized object"); \
  |  |  348|      0|        } \
  |  |  349|      0|        return NULL; \
  |  |  350|      0|    }
  ------------------
  644|      3|    return PyObject_CallMethodNoArgs(self->raw, &_Py_ID(seekable));
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  645|      3|}
bufferedio.c:_io__Buffered_readable_impl:
  655|      1|{
  656|      1|    CHECK_INITIALIZED(self)
  ------------------
  |  |  341|      1|    if (self->ok <= 0) { \
  |  |  ------------------
  |  |  |  Branch (341:9): [True: 0, False: 1]
  |  |  ------------------
  |  |  342|      0|        if (self->detached) { \
  |  |  ------------------
  |  |  |  Branch (342:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  343|      0|            PyErr_SetString(PyExc_ValueError, \
  |  |  344|      0|                 "raw stream has been detached"); \
  |  |  345|      0|        } else { \
  |  |  346|      0|            PyErr_SetString(PyExc_ValueError, \
  |  |  347|      0|                "I/O operation on uninitialized object"); \
  |  |  348|      0|        } \
  |  |  349|      0|        return NULL; \
  |  |  350|      0|    }
  ------------------
  657|      1|    return PyObject_CallMethodNoArgs(self->raw, &_Py_ID(readable));
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  658|      1|}
bufferedio.c:_buffered_raw_tell:
  785|      5|{
  786|      5|    Py_off_t n;
  787|      5|    PyObject *res;
  788|      5|    res = PyObject_CallMethodNoArgs(self->raw, &_Py_ID(tell));
  ------------------
  |  |  917|      5|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      5|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      5|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  789|      5|    if (res == NULL)
  ------------------
  |  Branch (789:9): [True: 0, False: 5]
  ------------------
  790|      0|        return -1;
  791|      5|    n = PyNumber_AsOff_t(res, PyExc_ValueError);
  792|      5|    Py_DECREF(res);
  ------------------
  |  |  430|      5|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  793|      5|    if (n < 0) {
  ------------------
  |  Branch (793:9): [True: 0, False: 5]
  ------------------
  794|      0|        if (!PyErr_Occurred())
  ------------------
  |  Branch (794:13): [True: 0, False: 0]
  ------------------
  795|      0|            PyErr_Format(PyExc_OSError,
  796|      0|                         "Raw stream returned invalid position %" PY_PRIdOFF,
  ------------------
  |  |  116|      0|# define PY_PRIdOFF         "zd"
  ------------------
  797|      0|                         (PY_OFF_T_COMPAT)n);
  798|      0|        return -1;
  799|      0|    }
  800|      5|    self->abs_pos = n;
  801|      5|    return n;
  802|      5|}
bufferedio.c:_io__Buffered_tell_impl:
 1337|      2|{
 1338|      2|    Py_off_t pos;
 1339|       |
 1340|      2|    CHECK_INITIALIZED(self)
  ------------------
  |  |  341|      2|    if (self->ok <= 0) { \
  |  |  ------------------
  |  |  |  Branch (341:9): [True: 0, False: 2]
  |  |  ------------------
  |  |  342|      0|        if (self->detached) { \
  |  |  ------------------
  |  |  |  Branch (342:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  343|      0|            PyErr_SetString(PyExc_ValueError, \
  |  |  344|      0|                 "raw stream has been detached"); \
  |  |  345|      0|        } else { \
  |  |  346|      0|            PyErr_SetString(PyExc_ValueError, \
  |  |  347|      0|                "I/O operation on uninitialized object"); \
  |  |  348|      0|        } \
  |  |  349|      0|        return NULL; \
  |  |  350|      0|    }
  ------------------
 1341|      2|    pos = _buffered_raw_tell(self);
 1342|      2|    if (pos == -1)
  ------------------
  |  Branch (1342:9): [True: 0, False: 2]
  ------------------
 1343|      0|        return NULL;
 1344|      2|    pos -= RAW_OFFSET(self);
  ------------------
  |  |  402|      2|    (((VALID_READ_BUFFER(self) || VALID_WRITE_BUFFER(self)) \
  |  |  ------------------
  |  |  |  |  385|      4|    (self->readable && self->read_end != -1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (385:6): [True: 0, False: 2]
  |  |  |  |  |  Branch (385:24): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (((VALID_READ_BUFFER(self) || VALID_WRITE_BUFFER(self)) \
  |  |  ------------------
  |  |  |  |  388|      2|    (self->writable && self->write_end != -1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (388:6): [True: 2, False: 0]
  |  |  |  |  |  Branch (388:24): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  403|      2|        && self->raw_pos >= 0) ? self->raw_pos - self->pos : 0)
  |  |  ------------------
  |  |  |  Branch (403:12): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1345|       |
 1346|       |    // GH-95782
 1347|      2|    if (pos < 0)
  ------------------
  |  Branch (1347:9): [True: 0, False: 2]
  ------------------
 1348|      0|        pos = 0;
 1349|       |
 1350|      2|    return PyLong_FromOff_t(pos);
  ------------------
  |  |  112|      2|# define PyLong_FromOff_t   PyLong_FromSsize_t
  ------------------
 1351|      2|}
bufferedio.c:_io_BufferedReader___init___impl:
 1593|      1|{
 1594|      1|    self->ok = 0;
 1595|      1|    self->detached = 0;
 1596|       |
 1597|      1|    _PyIO_State *state = find_io_state_by_def(Py_TYPE(self));
  ------------------
  |  |  213|      1|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1598|      1|    if (_PyIOBase_check_readable(state, raw, Py_True) == NULL) {
  ------------------
  |  |   26|      1|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1598:9): [True: 0, False: 1]
  ------------------
 1599|      0|        return -1;
 1600|      0|    }
 1601|       |
 1602|      1|    Py_XSETREF(self->raw, Py_NewRef(raw));
  ------------------
  |  |  374|      1|    do { \
  |  |  375|      1|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      1|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  376|      1|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      1|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  377|      1|        *_tmp_dst_ptr = (src); \
  |  |  378|      1|        Py_XDECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  524|      1|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  379|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (379:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1603|      1|    self->buffer_size = buffer_size;
 1604|      1|    self->readable = 1;
 1605|      1|    self->writable = 0;
 1606|       |
 1607|      1|    if (_buffered_init(self) < 0)
  ------------------
  |  Branch (1607:9): [True: 0, False: 1]
  ------------------
 1608|      0|        return -1;
 1609|      1|    _bufferedreader_reset_buf(self);
 1610|       |
 1611|      1|    self->fast_closed_checks = (
 1612|      1|        Py_IS_TYPE(self, state->PyBufferedReader_Type) &&
  ------------------
  |  |  215|      2|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 1613|      1|        Py_IS_TYPE(raw, state->PyFileIO_Type)
  ------------------
  |  |  215|      1|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 1614|      1|    );
 1615|       |
 1616|      1|    self->ok = 1;
 1617|      1|    return 0;
 1618|      1|}
bufferedio.c:_buffered_init:
  839|      3|{
  840|      3|    Py_ssize_t n;
  841|      3|    if (self->buffer_size <= 0) {
  ------------------
  |  Branch (841:9): [True: 0, False: 3]
  ------------------
  842|      0|        PyErr_SetString(PyExc_ValueError,
  843|      0|            "buffer size must be strictly positive");
  844|      0|        return -1;
  845|      0|    }
  846|      3|    if (self->buffer)
  ------------------
  |  Branch (846:9): [True: 0, False: 3]
  ------------------
  847|      0|        PyMem_Free(self->buffer);
  848|      3|    self->buffer = PyMem_Malloc(self->buffer_size);
  849|      3|    if (self->buffer == NULL) {
  ------------------
  |  Branch (849:9): [True: 0, False: 3]
  ------------------
  850|      0|        PyErr_NoMemory();
  851|      0|        return -1;
  852|      0|    }
  853|      3|    if (self->lock)
  ------------------
  |  Branch (853:9): [True: 0, False: 3]
  ------------------
  854|      0|        PyThread_free_lock(self->lock);
  855|      3|    self->lock = PyThread_allocate_lock();
  856|      3|    if (self->lock == NULL) {
  ------------------
  |  Branch (856:9): [True: 0, False: 3]
  ------------------
  857|      0|        PyErr_SetString(PyExc_RuntimeError, "can't allocate read lock");
  858|      0|        return -1;
  859|      0|    }
  860|      3|    self->owner = 0;
  861|       |    /* Find out whether buffer_size is a power of 2 */
  862|       |    /* XXX is this optimization useful? */
  863|     54|    for (n = self->buffer_size - 1; n & 1; n >>= 1)
  ------------------
  |  Branch (863:37): [True: 51, False: 3]
  ------------------
  864|     51|        ;
  865|      3|    if (n == 0)
  ------------------
  |  Branch (865:9): [True: 3, False: 0]
  ------------------
  866|      3|        self->buffer_mask = self->buffer_size - 1;
  867|      0|    else
  868|      0|        self->buffer_mask = 0;
  869|      3|    if (_buffered_raw_tell(self) == -1)
  ------------------
  |  Branch (869:9): [True: 0, False: 3]
  ------------------
  870|      0|        PyErr_Clear();
  871|      3|    return 0;
  872|      3|}
bufferedio.c:_io__Buffered_writable_impl:
  668|      2|{
  669|      2|    CHECK_INITIALIZED(self)
  ------------------
  |  |  341|      2|    if (self->ok <= 0) { \
  |  |  ------------------
  |  |  |  Branch (341:9): [True: 0, False: 2]
  |  |  ------------------
  |  |  342|      0|        if (self->detached) { \
  |  |  ------------------
  |  |  |  Branch (342:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  343|      0|            PyErr_SetString(PyExc_ValueError, \
  |  |  344|      0|                 "raw stream has been detached"); \
  |  |  345|      0|        } else { \
  |  |  346|      0|            PyErr_SetString(PyExc_ValueError, \
  |  |  347|      0|                "I/O operation on uninitialized object"); \
  |  |  348|      0|        } \
  |  |  349|      0|        return NULL; \
  |  |  350|      0|    }
  ------------------
  670|      2|    return PyObject_CallMethodNoArgs(self->raw, &_Py_ID(writable));
  ------------------
  |  |  917|      2|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      2|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      2|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  671|      2|}
bufferedio.c:_io_BufferedWriter___init___impl:
 1945|      2|{
 1946|      2|    self->ok = 0;
 1947|      2|    self->detached = 0;
 1948|       |
 1949|      2|    _PyIO_State *state = find_io_state_by_def(Py_TYPE(self));
  ------------------
  |  |  213|      2|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1950|      2|    if (_PyIOBase_check_writable(state, raw, Py_True) == NULL) {
  ------------------
  |  |   26|      2|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1950:9): [True: 0, False: 2]
  ------------------
 1951|      0|        return -1;
 1952|      0|    }
 1953|       |
 1954|      2|    Py_INCREF(raw);
  ------------------
  |  |  310|      2|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1955|      2|    Py_XSETREF(self->raw, raw);
  ------------------
  |  |  374|      2|    do { \
  |  |  375|      2|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      2|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  376|      2|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      2|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  377|      2|        *_tmp_dst_ptr = (src); \
  |  |  378|      2|        Py_XDECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  524|      2|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  379|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (379:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1956|      2|    self->readable = 0;
 1957|      2|    self->writable = 1;
 1958|       |
 1959|      2|    self->buffer_size = buffer_size;
 1960|      2|    if (_buffered_init(self) < 0)
  ------------------
  |  Branch (1960:9): [True: 0, False: 2]
  ------------------
 1961|      0|        return -1;
 1962|      2|    _bufferedwriter_reset_buf(self);
 1963|      2|    self->pos = 0;
 1964|       |
 1965|      2|    self->fast_closed_checks = (
 1966|      2|        Py_IS_TYPE(self, state->PyBufferedWriter_Type) &&
  ------------------
  |  |  215|      4|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 1967|      2|        Py_IS_TYPE(raw, state->PyFileIO_Type)
  ------------------
  |  |  215|      2|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 1968|      2|    );
 1969|       |
 1970|      2|    self->ok = 1;
 1971|      2|    return 0;
 1972|      2|}

_iomodule.c:_io_open:
  140|      3|{
  141|      3|    PyObject *return_value = NULL;
  142|      3|    #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
  143|       |
  144|      3|    #define NUM_KEYWORDS 8
  145|      3|    static struct {
  146|      3|        PyGC_Head _this_is_not_used;
  147|      3|        PyObject_VAR_HEAD
  148|      3|        Py_hash_t ob_hash;
  149|      3|        PyObject *ob_item[NUM_KEYWORDS];
  150|      3|    } _kwtuple = {
  151|      3|        .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
  ------------------
  |  |   97|      3|    {                                     \
  |  |   98|      3|        PyObject_HEAD_INIT(type)          \
  |  |  ------------------
  |  |  |  |   90|      3|    {                               \
  |  |  |  |   91|      3|        { _Py_STATIC_IMMORTAL_INITIAL_REFCNT },    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   50|      3|#define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   47|      3|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      3|#define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  583|      3|#define _Py_STATICALLY_ALLOCATED_FLAG (1 << 2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  581|      3|#define _Py_IMMORTAL_FLAGS (1 << 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   92|      3|        (type)                      \
  |  |  |  |   93|      3|    },
  |  |  ------------------
  |  |   99|      3|        (size)                            \
  |  |  100|      3|    },
  ------------------
  152|      3|        .ob_hash = -1,
  153|      3|        .ob_item = { &_Py_ID(file), &_Py_ID(mode), &_Py_ID(buffering), &_Py_ID(encoding), &_Py_ID(errors), &_Py_ID(newline), &_Py_ID(closefd), &_Py_ID(opener), },
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      .ob_item = { &_Py_ID(file), &_Py_ID(mode), &_Py_ID(buffering), &_Py_ID(encoding), &_Py_ID(errors), &_Py_ID(newline), &_Py_ID(closefd), &_Py_ID(opener), },
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      .ob_item = { &_Py_ID(file), &_Py_ID(mode), &_Py_ID(buffering), &_Py_ID(encoding), &_Py_ID(errors), &_Py_ID(newline), &_Py_ID(closefd), &_Py_ID(opener), },
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      .ob_item = { &_Py_ID(file), &_Py_ID(mode), &_Py_ID(buffering), &_Py_ID(encoding), &_Py_ID(errors), &_Py_ID(newline), &_Py_ID(closefd), &_Py_ID(opener), },
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      .ob_item = { &_Py_ID(file), &_Py_ID(mode), &_Py_ID(buffering), &_Py_ID(encoding), &_Py_ID(errors), &_Py_ID(newline), &_Py_ID(closefd), &_Py_ID(opener), },
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      .ob_item = { &_Py_ID(file), &_Py_ID(mode), &_Py_ID(buffering), &_Py_ID(encoding), &_Py_ID(errors), &_Py_ID(newline), &_Py_ID(closefd), &_Py_ID(opener), },
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      .ob_item = { &_Py_ID(file), &_Py_ID(mode), &_Py_ID(buffering), &_Py_ID(encoding), &_Py_ID(errors), &_Py_ID(newline), &_Py_ID(closefd), &_Py_ID(opener), },
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      .ob_item = { &_Py_ID(file), &_Py_ID(mode), &_Py_ID(buffering), &_Py_ID(encoding), &_Py_ID(errors), &_Py_ID(newline), &_Py_ID(closefd), &_Py_ID(opener), },
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  154|      3|    };
  155|      3|    #undef NUM_KEYWORDS
  156|      3|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
  157|       |
  158|       |    #else  // !Py_BUILD_CORE
  159|       |    #  define KWTUPLE NULL
  160|       |    #endif  // !Py_BUILD_CORE
  161|       |
  162|      3|    static const char * const _keywords[] = {"file", "mode", "buffering", "encoding", "errors", "newline", "closefd", "opener", NULL};
  163|      3|    static _PyArg_Parser _parser = {
  164|      3|        .keywords = _keywords,
  165|      3|        .fname = "open",
  166|      3|        .kwtuple = KWTUPLE,
  ------------------
  |  |  156|      3|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
  ------------------
  167|      3|    };
  168|      3|    #undef KWTUPLE
  169|      3|    PyObject *argsbuf[8];
  170|      3|    Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
  ------------------
  |  |   27|      0|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (170:36): [True: 0, False: 3]
  ------------------
  171|      3|    PyObject *file;
  172|      3|    const char *mode = "r";
  173|      3|    int buffering = -1;
  174|      3|    const char *encoding = NULL;
  175|      3|    const char *errors = NULL;
  176|      3|    const char *newline = NULL;
  177|      3|    int closefd = 1;
  178|      3|    PyObject *opener = Py_None;
  ------------------
  |  |  616|      3|#  define Py_None (&_Py_NoneStruct)
  ------------------
  179|       |
  180|      3|    args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser,
  ------------------
  |  |   88|      3|    (((minkw) == 0 && (kwargs) == NULL && (kwnames) == NULL && \
  |  |  ------------------
  |  |  |  Branch (88:7): [True: 0, Folded]
  |  |  |  Branch (88:23): [True: 0, Folded]
  |  |  |  Branch (88:43): [True: 3, False: 0]
  |  |  ------------------
  |  |   89|      3|      (minpos) <= (nargs) && ((varpos) || (nargs) <= (maxpos)) && (args) != NULL) ? \
  |  |  ------------------
  |  |  |  Branch (89:7): [True: 3, False: 0]
  |  |  |  Branch (89:31): [Folded, False: 3]
  |  |  |  Branch (89:43): [True: 3, False: 0]
  |  |  |  Branch (89:67): [True: 3, False: 0]
  |  |  ------------------
  |  |   90|      3|      (args) : \
  |  |   91|      3|     _PyArg_UnpackKeywords((args), (nargs), (kwargs), (kwnames), (parser), \
  |  |   92|      0|                           (minpos), (maxpos), (minkw), (varpos), (buf)))
  ------------------
  181|      3|            /*minpos*/ 1, /*maxpos*/ 8, /*minkw*/ 0, /*varpos*/ 0, argsbuf);
  182|      3|    if (!args) {
  ------------------
  |  Branch (182:9): [True: 0, False: 3]
  ------------------
  183|      0|        goto exit;
  184|      0|    }
  185|      3|    file = args[0];
  186|      3|    if (!noptargs) {
  ------------------
  |  Branch (186:9): [True: 0, False: 3]
  ------------------
  187|      0|        goto skip_optional_pos;
  188|      0|    }
  189|      3|    if (args[1]) {
  ------------------
  |  Branch (189:9): [True: 3, False: 0]
  ------------------
  190|      3|        if (!PyUnicode_Check(args[1])) {
  ------------------
  |  |  103|      3|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      3|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (190:13): [True: 0, False: 3]
  ------------------
  191|      0|            _PyArg_BadArgument("open", "argument 'mode'", "str", args[1]);
  192|      0|            goto exit;
  193|      0|        }
  194|      3|        Py_ssize_t mode_length;
  195|      3|        mode = PyUnicode_AsUTF8AndSize(args[1], &mode_length);
  196|      3|        if (mode == NULL) {
  ------------------
  |  Branch (196:13): [True: 0, False: 3]
  ------------------
  197|      0|            goto exit;
  198|      0|        }
  199|      3|        if (strlen(mode) != (size_t)mode_length) {
  ------------------
  |  Branch (199:13): [True: 0, False: 3]
  ------------------
  200|      0|            PyErr_SetString(PyExc_ValueError, "embedded null character");
  201|      0|            goto exit;
  202|      0|        }
  203|      3|        if (!--noptargs) {
  ------------------
  |  Branch (203:13): [True: 0, False: 3]
  ------------------
  204|      0|            goto skip_optional_pos;
  205|      0|        }
  206|      3|    }
  207|      3|    if (args[2]) {
  ------------------
  |  Branch (207:9): [True: 3, False: 0]
  ------------------
  208|      3|        buffering = PyLong_AsInt(args[2]);
  209|      3|        if (buffering == -1 && PyErr_Occurred()) {
  ------------------
  |  Branch (209:13): [True: 3, False: 0]
  |  Branch (209:32): [True: 0, False: 3]
  ------------------
  210|      0|            goto exit;
  211|      0|        }
  212|      3|        if (!--noptargs) {
  ------------------
  |  Branch (212:13): [True: 0, False: 3]
  ------------------
  213|      0|            goto skip_optional_pos;
  214|      0|        }
  215|      3|    }
  216|      3|    if (args[3]) {
  ------------------
  |  Branch (216:9): [True: 3, False: 0]
  ------------------
  217|      3|        if (args[3] == Py_None) {
  ------------------
  |  |  616|      3|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (217:13): [True: 3, False: 0]
  ------------------
  218|      3|            encoding = NULL;
  219|      3|        }
  220|      0|        else if (PyUnicode_Check(args[3])) {
  ------------------
  |  |  103|      0|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  221|      0|            Py_ssize_t encoding_length;
  222|      0|            encoding = PyUnicode_AsUTF8AndSize(args[3], &encoding_length);
  223|      0|            if (encoding == NULL) {
  ------------------
  |  Branch (223:17): [True: 0, False: 0]
  ------------------
  224|      0|                goto exit;
  225|      0|            }
  226|      0|            if (strlen(encoding) != (size_t)encoding_length) {
  ------------------
  |  Branch (226:17): [True: 0, False: 0]
  ------------------
  227|      0|                PyErr_SetString(PyExc_ValueError, "embedded null character");
  228|      0|                goto exit;
  229|      0|            }
  230|      0|        }
  231|      0|        else {
  232|      0|            _PyArg_BadArgument("open", "argument 'encoding'", "str or None", args[3]);
  233|      0|            goto exit;
  234|      0|        }
  235|      3|        if (!--noptargs) {
  ------------------
  |  Branch (235:13): [True: 0, False: 3]
  ------------------
  236|      0|            goto skip_optional_pos;
  237|      0|        }
  238|      3|    }
  239|      3|    if (args[4]) {
  ------------------
  |  Branch (239:9): [True: 3, False: 0]
  ------------------
  240|      3|        if (args[4] == Py_None) {
  ------------------
  |  |  616|      3|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (240:13): [True: 3, False: 0]
  ------------------
  241|      3|            errors = NULL;
  242|      3|        }
  243|      0|        else if (PyUnicode_Check(args[4])) {
  ------------------
  |  |  103|      0|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  244|      0|            Py_ssize_t errors_length;
  245|      0|            errors = PyUnicode_AsUTF8AndSize(args[4], &errors_length);
  246|      0|            if (errors == NULL) {
  ------------------
  |  Branch (246:17): [True: 0, False: 0]
  ------------------
  247|      0|                goto exit;
  248|      0|            }
  249|      0|            if (strlen(errors) != (size_t)errors_length) {
  ------------------
  |  Branch (249:17): [True: 0, False: 0]
  ------------------
  250|      0|                PyErr_SetString(PyExc_ValueError, "embedded null character");
  251|      0|                goto exit;
  252|      0|            }
  253|      0|        }
  254|      0|        else {
  255|      0|            _PyArg_BadArgument("open", "argument 'errors'", "str or None", args[4]);
  256|      0|            goto exit;
  257|      0|        }
  258|      3|        if (!--noptargs) {
  ------------------
  |  Branch (258:13): [True: 0, False: 3]
  ------------------
  259|      0|            goto skip_optional_pos;
  260|      0|        }
  261|      3|    }
  262|      3|    if (args[5]) {
  ------------------
  |  Branch (262:9): [True: 3, False: 0]
  ------------------
  263|      3|        if (args[5] == Py_None) {
  ------------------
  |  |  616|      3|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (263:13): [True: 3, False: 0]
  ------------------
  264|      3|            newline = NULL;
  265|      3|        }
  266|      0|        else if (PyUnicode_Check(args[5])) {
  ------------------
  |  |  103|      0|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  267|      0|            Py_ssize_t newline_length;
  268|      0|            newline = PyUnicode_AsUTF8AndSize(args[5], &newline_length);
  269|      0|            if (newline == NULL) {
  ------------------
  |  Branch (269:17): [True: 0, False: 0]
  ------------------
  270|      0|                goto exit;
  271|      0|            }
  272|      0|            if (strlen(newline) != (size_t)newline_length) {
  ------------------
  |  Branch (272:17): [True: 0, False: 0]
  ------------------
  273|      0|                PyErr_SetString(PyExc_ValueError, "embedded null character");
  274|      0|                goto exit;
  275|      0|            }
  276|      0|        }
  277|      0|        else {
  278|      0|            _PyArg_BadArgument("open", "argument 'newline'", "str or None", args[5]);
  279|      0|            goto exit;
  280|      0|        }
  281|      3|        if (!--noptargs) {
  ------------------
  |  Branch (281:13): [True: 0, False: 3]
  ------------------
  282|      0|            goto skip_optional_pos;
  283|      0|        }
  284|      3|    }
  285|      3|    if (args[6]) {
  ------------------
  |  Branch (285:9): [True: 3, False: 0]
  ------------------
  286|      3|        closefd = PyObject_IsTrue(args[6]);
  287|      3|        if (closefd < 0) {
  ------------------
  |  Branch (287:13): [True: 0, False: 3]
  ------------------
  288|      0|            goto exit;
  289|      0|        }
  290|      3|        if (!--noptargs) {
  ------------------
  |  Branch (290:13): [True: 3, False: 0]
  ------------------
  291|      3|            goto skip_optional_pos;
  292|      3|        }
  293|      3|    }
  294|      0|    opener = args[7];
  295|      3|skip_optional_pos:
  296|      3|    return_value = _io_open_impl(module, file, mode, buffering, encoding, errors, newline, closefd, opener);
  297|       |
  298|      3|exit:
  299|      3|    return return_value;
  300|      3|}

bufferedio.c:_io__Buffered_seekable:
  430|      3|{
  431|      3|    PyObject *return_value = NULL;
  432|       |
  433|      3|    Py_BEGIN_CRITICAL_SECTION(self);
  ------------------
  |  |   51|      3|    {
  ------------------
  434|      3|    return_value = _io__Buffered_seekable_impl((buffered *)self);
  435|      3|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|      3|    }
  ------------------
  436|       |
  437|      3|    return return_value;
  438|      3|}
bufferedio.c:_io__Buffered_readable:
  453|      1|{
  454|      1|    PyObject *return_value = NULL;
  455|       |
  456|      1|    Py_BEGIN_CRITICAL_SECTION(self);
  ------------------
  |  |   51|      1|    {
  ------------------
  457|      1|    return_value = _io__Buffered_readable_impl((buffered *)self);
  458|      1|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|      1|    }
  ------------------
  459|       |
  460|      1|    return return_value;
  461|      1|}
bufferedio.c:_io__Buffered_tell:
  844|      2|{
  845|      2|    PyObject *return_value = NULL;
  846|       |
  847|      2|    Py_BEGIN_CRITICAL_SECTION(self);
  ------------------
  |  |   51|      2|    {
  ------------------
  848|      2|    return_value = _io__Buffered_tell_impl((buffered *)self);
  849|      2|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|      2|    }
  ------------------
  850|       |
  851|      2|    return return_value;
  852|      2|}
bufferedio.c:_io_BufferedReader___init__:
  953|      1|{
  954|      1|    int return_value = -1;
  955|      1|    #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
  956|       |
  957|      1|    #define NUM_KEYWORDS 2
  958|      1|    static struct {
  959|      1|        PyGC_Head _this_is_not_used;
  960|      1|        PyObject_VAR_HEAD
  961|      1|        Py_hash_t ob_hash;
  962|      1|        PyObject *ob_item[NUM_KEYWORDS];
  963|      1|    } _kwtuple = {
  964|      1|        .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
  ------------------
  |  |   97|      1|    {                                     \
  |  |   98|      1|        PyObject_HEAD_INIT(type)          \
  |  |  ------------------
  |  |  |  |   90|      1|    {                               \
  |  |  |  |   91|      1|        { _Py_STATIC_IMMORTAL_INITIAL_REFCNT },    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   50|      1|#define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   47|      1|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      1|#define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  583|      1|#define _Py_STATICALLY_ALLOCATED_FLAG (1 << 2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  581|      1|#define _Py_IMMORTAL_FLAGS (1 << 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   92|      1|        (type)                      \
  |  |  |  |   93|      1|    },
  |  |  ------------------
  |  |   99|      1|        (size)                            \
  |  |  100|      1|    },
  ------------------
  965|      1|        .ob_hash = -1,
  966|      1|        .ob_item = { &_Py_ID(raw), &_Py_ID(buffer_size), },
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      .ob_item = { &_Py_ID(raw), &_Py_ID(buffer_size), },
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  967|      1|    };
  968|      1|    #undef NUM_KEYWORDS
  969|      1|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
  970|       |
  971|       |    #else  // !Py_BUILD_CORE
  972|       |    #  define KWTUPLE NULL
  973|       |    #endif  // !Py_BUILD_CORE
  974|       |
  975|      1|    static const char * const _keywords[] = {"raw", "buffer_size", NULL};
  976|      1|    static _PyArg_Parser _parser = {
  977|      1|        .keywords = _keywords,
  978|      1|        .fname = "BufferedReader",
  979|      1|        .kwtuple = KWTUPLE,
  ------------------
  |  |  969|      1|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
  ------------------
  980|      1|    };
  981|      1|    #undef KWTUPLE
  982|      1|    PyObject *argsbuf[2];
  983|      1|    PyObject * const *fastargs;
  984|      1|    Py_ssize_t nargs = PyTuple_GET_SIZE(args);
  ------------------
  |  |   27|      1|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  985|      1|    Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 1;
  ------------------
  |  |   63|      0|#define PyDict_GET_SIZE(op) PyDict_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (985:36): [True: 0, False: 1]
  ------------------
  986|      1|    PyObject *raw;
  987|      1|    Py_ssize_t buffer_size = DEFAULT_BUFFER_SIZE;
  ------------------
  |  |   81|      1|#define DEFAULT_BUFFER_SIZE (128 * 1024)  /* bytes */
  ------------------
  988|       |
  989|      1|    fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser,
  ------------------
  |  |   88|      1|    (((minkw) == 0 && (kwargs) == NULL && (kwnames) == NULL && \
  |  |  ------------------
  |  |  |  Branch (88:7): [True: 1, Folded]
  |  |  |  Branch (88:23): [True: 1, False: 0]
  |  |  |  Branch (88:43): [True: 0, Folded]
  |  |  ------------------
  |  |   89|      2|      (minpos) <= (nargs) && ((varpos) || (nargs) <= (maxpos)) && (args) != NULL) ? \
  |  |  ------------------
  |  |  |  Branch (89:7): [True: 1, False: 0]
  |  |  |  Branch (89:31): [Folded, False: 1]
  |  |  |  Branch (89:43): [True: 1, False: 0]
  |  |  |  Branch (89:67): [True: 1, False: 0]
  |  |  |  Branch (89:68): [True: 1, False: 0]
  |  |  ------------------
  |  |   90|      2|      (args) : \
  |  |  ------------------
  |  |  |  Branch (90:8): [True: 1, False: 0]
  |  |  ------------------
  |  |   91|      1|     _PyArg_UnpackKeywords((args), (nargs), (kwargs), (kwnames), (parser), \
  |  |  ------------------
  |  |  |  Branch (91:29): [True: 0, False: 0]
  |  |  ------------------
  |  |   92|      0|                           (minpos), (maxpos), (minkw), (varpos), (buf)))
  ------------------
  990|      1|            /*minpos*/ 1, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf);
  991|      1|    if (!fastargs) {
  ------------------
  |  Branch (991:9): [True: 0, False: 1]
  ------------------
  992|      0|        goto exit;
  993|      0|    }
  994|      1|    raw = fastargs[0];
  995|      1|    if (!noptargs) {
  ------------------
  |  Branch (995:9): [True: 0, False: 1]
  ------------------
  996|      0|        goto skip_optional_pos;
  997|      0|    }
  998|      1|    {
  999|      1|        Py_ssize_t ival = -1;
 1000|      1|        PyObject *iobj = _PyNumber_Index(fastargs[1]);
 1001|      1|        if (iobj != NULL) {
  ------------------
  |  Branch (1001:13): [True: 1, False: 0]
  ------------------
 1002|      1|            ival = PyLong_AsSsize_t(iobj);
 1003|      1|            Py_DECREF(iobj);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1004|      1|        }
 1005|      1|        if (ival == -1 && PyErr_Occurred()) {
  ------------------
  |  Branch (1005:13): [True: 0, False: 1]
  |  Branch (1005:27): [True: 0, False: 0]
  ------------------
 1006|      0|            goto exit;
 1007|      0|        }
 1008|      1|        buffer_size = ival;
 1009|      1|    }
 1010|      1|skip_optional_pos:
 1011|      1|    return_value = _io_BufferedReader___init___impl((buffered *)self, raw, buffer_size);
 1012|       |
 1013|      1|exit:
 1014|      1|    return return_value;
 1015|      1|}
bufferedio.c:_io__Buffered_writable:
  476|      2|{
  477|      2|    PyObject *return_value = NULL;
  478|       |
  479|      2|    Py_BEGIN_CRITICAL_SECTION(self);
  ------------------
  |  |   51|      2|    {
  ------------------
  480|      2|    return_value = _io__Buffered_writable_impl((buffered *)self);
  481|      2|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|      2|    }
  ------------------
  482|       |
  483|      2|    return return_value;
  484|      2|}
bufferedio.c:_io_BufferedWriter___init__:
 1033|      2|{
 1034|      2|    int return_value = -1;
 1035|      2|    #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
 1036|       |
 1037|      2|    #define NUM_KEYWORDS 2
 1038|      2|    static struct {
 1039|      2|        PyGC_Head _this_is_not_used;
 1040|      2|        PyObject_VAR_HEAD
 1041|      2|        Py_hash_t ob_hash;
 1042|      2|        PyObject *ob_item[NUM_KEYWORDS];
 1043|      2|    } _kwtuple = {
 1044|      2|        .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
  ------------------
  |  |   97|      2|    {                                     \
  |  |   98|      2|        PyObject_HEAD_INIT(type)          \
  |  |  ------------------
  |  |  |  |   90|      2|    {                               \
  |  |  |  |   91|      2|        { _Py_STATIC_IMMORTAL_INITIAL_REFCNT },    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   50|      2|#define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   47|      2|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      2|#define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  583|      2|#define _Py_STATICALLY_ALLOCATED_FLAG (1 << 2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  581|      2|#define _Py_IMMORTAL_FLAGS (1 << 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   92|      2|        (type)                      \
  |  |  |  |   93|      2|    },
  |  |  ------------------
  |  |   99|      2|        (size)                            \
  |  |  100|      2|    },
  ------------------
 1045|      2|        .ob_hash = -1,
 1046|      2|        .ob_item = { &_Py_ID(raw), &_Py_ID(buffer_size), },
  ------------------
  |  |  917|      2|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      2|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      2|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      .ob_item = { &_Py_ID(raw), &_Py_ID(buffer_size), },
  ------------------
  |  |  917|      2|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      2|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      2|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1047|      2|    };
 1048|      2|    #undef NUM_KEYWORDS
 1049|      2|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
 1050|       |
 1051|       |    #else  // !Py_BUILD_CORE
 1052|       |    #  define KWTUPLE NULL
 1053|       |    #endif  // !Py_BUILD_CORE
 1054|       |
 1055|      2|    static const char * const _keywords[] = {"raw", "buffer_size", NULL};
 1056|      2|    static _PyArg_Parser _parser = {
 1057|      2|        .keywords = _keywords,
 1058|      2|        .fname = "BufferedWriter",
 1059|      2|        .kwtuple = KWTUPLE,
  ------------------
  |  | 1049|      2|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
  ------------------
 1060|      2|    };
 1061|      2|    #undef KWTUPLE
 1062|      2|    PyObject *argsbuf[2];
 1063|      2|    PyObject * const *fastargs;
 1064|      2|    Py_ssize_t nargs = PyTuple_GET_SIZE(args);
  ------------------
  |  |   27|      2|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1065|      2|    Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 1;
  ------------------
  |  |   63|      0|#define PyDict_GET_SIZE(op) PyDict_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1065:36): [True: 0, False: 2]
  ------------------
 1066|      2|    PyObject *raw;
 1067|      2|    Py_ssize_t buffer_size = DEFAULT_BUFFER_SIZE;
  ------------------
  |  |   81|      2|#define DEFAULT_BUFFER_SIZE (128 * 1024)  /* bytes */
  ------------------
 1068|       |
 1069|      2|    fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser,
  ------------------
  |  |   88|      2|    (((minkw) == 0 && (kwargs) == NULL && (kwnames) == NULL && \
  |  |  ------------------
  |  |  |  Branch (88:7): [True: 2, Folded]
  |  |  |  Branch (88:23): [True: 2, False: 0]
  |  |  |  Branch (88:43): [True: 0, Folded]
  |  |  ------------------
  |  |   89|      4|      (minpos) <= (nargs) && ((varpos) || (nargs) <= (maxpos)) && (args) != NULL) ? \
  |  |  ------------------
  |  |  |  Branch (89:7): [True: 2, False: 0]
  |  |  |  Branch (89:31): [Folded, False: 2]
  |  |  |  Branch (89:43): [True: 2, False: 0]
  |  |  |  Branch (89:67): [True: 2, False: 0]
  |  |  |  Branch (89:68): [True: 2, False: 0]
  |  |  ------------------
  |  |   90|      4|      (args) : \
  |  |  ------------------
  |  |  |  Branch (90:8): [True: 2, False: 0]
  |  |  ------------------
  |  |   91|      2|     _PyArg_UnpackKeywords((args), (nargs), (kwargs), (kwnames), (parser), \
  |  |  ------------------
  |  |  |  Branch (91:29): [True: 0, False: 0]
  |  |  ------------------
  |  |   92|      0|                           (minpos), (maxpos), (minkw), (varpos), (buf)))
  ------------------
 1070|      2|            /*minpos*/ 1, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf);
 1071|      2|    if (!fastargs) {
  ------------------
  |  Branch (1071:9): [True: 0, False: 2]
  ------------------
 1072|      0|        goto exit;
 1073|      0|    }
 1074|      2|    raw = fastargs[0];
 1075|      2|    if (!noptargs) {
  ------------------
  |  Branch (1075:9): [True: 0, False: 2]
  ------------------
 1076|      0|        goto skip_optional_pos;
 1077|      0|    }
 1078|      2|    {
 1079|      2|        Py_ssize_t ival = -1;
 1080|      2|        PyObject *iobj = _PyNumber_Index(fastargs[1]);
 1081|      2|        if (iobj != NULL) {
  ------------------
  |  Branch (1081:13): [True: 2, False: 0]
  ------------------
 1082|      2|            ival = PyLong_AsSsize_t(iobj);
 1083|      2|            Py_DECREF(iobj);
  ------------------
  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1084|      2|        }
 1085|      2|        if (ival == -1 && PyErr_Occurred()) {
  ------------------
  |  Branch (1085:13): [True: 0, False: 2]
  |  Branch (1085:27): [True: 0, False: 0]
  ------------------
 1086|      0|            goto exit;
 1087|      0|        }
 1088|      2|        buffer_size = ival;
 1089|      2|    }
 1090|      2|skip_optional_pos:
 1091|      2|    return_value = _io_BufferedWriter___init___impl((buffered *)self, raw, buffer_size);
 1092|       |
 1093|      2|exit:
 1094|      2|    return return_value;
 1095|      2|}

fileio.c:_io_FileIO_tell:
  470|      5|{
  471|      5|    return _io_FileIO_tell_impl((fileio *)self);
  472|      5|}
fileio.c:_io_FileIO_seekable:
  211|      3|{
  212|      3|    return _io_FileIO_seekable_impl((fileio *)self);
  213|      3|}
fileio.c:_io_FileIO_readable:
  175|      2|{
  176|      2|    return _io_FileIO_readable_impl((fileio *)self);
  177|      2|}
fileio.c:_io_FileIO_writable:
  193|      4|{
  194|      4|    return _io_FileIO_writable_impl((fileio *)self);
  195|      4|}
fileio.c:_io_FileIO_isatty:
  543|      3|{
  544|      3|    return _io_FileIO_isatty_impl((fileio *)self);
  545|      3|}
fileio.c:_io_FileIO___init__:
   61|      3|{
   62|      3|    int return_value = -1;
   63|      3|    #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
   64|       |
   65|      3|    #define NUM_KEYWORDS 4
   66|      3|    static struct {
   67|      3|        PyGC_Head _this_is_not_used;
   68|      3|        PyObject_VAR_HEAD
   69|      3|        Py_hash_t ob_hash;
   70|      3|        PyObject *ob_item[NUM_KEYWORDS];
   71|      3|    } _kwtuple = {
   72|      3|        .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
  ------------------
  |  |   97|      3|    {                                     \
  |  |   98|      3|        PyObject_HEAD_INIT(type)          \
  |  |  ------------------
  |  |  |  |   90|      3|    {                               \
  |  |  |  |   91|      3|        { _Py_STATIC_IMMORTAL_INITIAL_REFCNT },    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   50|      3|#define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   47|      3|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      3|#define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  583|      3|#define _Py_STATICALLY_ALLOCATED_FLAG (1 << 2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  581|      3|#define _Py_IMMORTAL_FLAGS (1 << 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   92|      3|        (type)                      \
  |  |  |  |   93|      3|    },
  |  |  ------------------
  |  |   99|      3|        (size)                            \
  |  |  100|      3|    },
  ------------------
   73|      3|        .ob_hash = -1,
   74|      3|        .ob_item = { &_Py_ID(file), &_Py_ID(mode), &_Py_ID(closefd), &_Py_ID(opener), },
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      .ob_item = { &_Py_ID(file), &_Py_ID(mode), &_Py_ID(closefd), &_Py_ID(opener), },
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      .ob_item = { &_Py_ID(file), &_Py_ID(mode), &_Py_ID(closefd), &_Py_ID(opener), },
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      .ob_item = { &_Py_ID(file), &_Py_ID(mode), &_Py_ID(closefd), &_Py_ID(opener), },
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   75|      3|    };
   76|      3|    #undef NUM_KEYWORDS
   77|      3|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
   78|       |
   79|       |    #else  // !Py_BUILD_CORE
   80|       |    #  define KWTUPLE NULL
   81|       |    #endif  // !Py_BUILD_CORE
   82|       |
   83|      3|    static const char * const _keywords[] = {"file", "mode", "closefd", "opener", NULL};
   84|      3|    static _PyArg_Parser _parser = {
   85|      3|        .keywords = _keywords,
   86|      3|        .fname = "FileIO",
   87|      3|        .kwtuple = KWTUPLE,
  ------------------
  |  |   77|      3|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
  ------------------
   88|      3|    };
   89|      3|    #undef KWTUPLE
   90|      3|    PyObject *argsbuf[4];
   91|      3|    PyObject * const *fastargs;
   92|      3|    Py_ssize_t nargs = PyTuple_GET_SIZE(args);
  ------------------
  |  |   27|      3|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   93|      3|    Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 1;
  ------------------
  |  |   63|      0|#define PyDict_GET_SIZE(op) PyDict_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (93:36): [True: 0, False: 3]
  ------------------
   94|      3|    PyObject *nameobj;
   95|      3|    const char *mode = "r";
   96|      3|    int closefd = 1;
   97|      3|    PyObject *opener = Py_None;
  ------------------
  |  |  616|      3|#  define Py_None (&_Py_NoneStruct)
  ------------------
   98|       |
   99|      3|    fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser,
  ------------------
  |  |   88|      3|    (((minkw) == 0 && (kwargs) == NULL && (kwnames) == NULL && \
  |  |  ------------------
  |  |  |  Branch (88:7): [True: 3, Folded]
  |  |  |  Branch (88:23): [True: 3, False: 0]
  |  |  |  Branch (88:43): [True: 0, Folded]
  |  |  ------------------
  |  |   89|      6|      (minpos) <= (nargs) && ((varpos) || (nargs) <= (maxpos)) && (args) != NULL) ? \
  |  |  ------------------
  |  |  |  Branch (89:7): [True: 3, False: 0]
  |  |  |  Branch (89:31): [Folded, False: 3]
  |  |  |  Branch (89:43): [True: 3, False: 0]
  |  |  |  Branch (89:67): [True: 3, False: 0]
  |  |  |  Branch (89:68): [True: 3, False: 0]
  |  |  ------------------
  |  |   90|      6|      (args) : \
  |  |  ------------------
  |  |  |  Branch (90:8): [True: 3, False: 0]
  |  |  ------------------
  |  |   91|      3|     _PyArg_UnpackKeywords((args), (nargs), (kwargs), (kwnames), (parser), \
  |  |  ------------------
  |  |  |  Branch (91:29): [True: 0, False: 0]
  |  |  ------------------
  |  |   92|      0|                           (minpos), (maxpos), (minkw), (varpos), (buf)))
  ------------------
  100|      3|            /*minpos*/ 1, /*maxpos*/ 4, /*minkw*/ 0, /*varpos*/ 0, argsbuf);
  101|      3|    if (!fastargs) {
  ------------------
  |  Branch (101:9): [True: 0, False: 3]
  ------------------
  102|      0|        goto exit;
  103|      0|    }
  104|      3|    nameobj = fastargs[0];
  105|      3|    if (!noptargs) {
  ------------------
  |  Branch (105:9): [True: 0, False: 3]
  ------------------
  106|      0|        goto skip_optional_pos;
  107|      0|    }
  108|      3|    if (fastargs[1]) {
  ------------------
  |  Branch (108:9): [True: 3, False: 0]
  ------------------
  109|      3|        if (!PyUnicode_Check(fastargs[1])) {
  ------------------
  |  |  103|      3|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      3|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (109:13): [True: 0, False: 3]
  ------------------
  110|      0|            _PyArg_BadArgument("FileIO", "argument 'mode'", "str", fastargs[1]);
  111|      0|            goto exit;
  112|      0|        }
  113|      3|        Py_ssize_t mode_length;
  114|      3|        mode = PyUnicode_AsUTF8AndSize(fastargs[1], &mode_length);
  115|      3|        if (mode == NULL) {
  ------------------
  |  Branch (115:13): [True: 0, False: 3]
  ------------------
  116|      0|            goto exit;
  117|      0|        }
  118|      3|        if (strlen(mode) != (size_t)mode_length) {
  ------------------
  |  Branch (118:13): [True: 0, False: 3]
  ------------------
  119|      0|            PyErr_SetString(PyExc_ValueError, "embedded null character");
  120|      0|            goto exit;
  121|      0|        }
  122|      3|        if (!--noptargs) {
  ------------------
  |  Branch (122:13): [True: 0, False: 3]
  ------------------
  123|      0|            goto skip_optional_pos;
  124|      0|        }
  125|      3|    }
  126|      3|    if (fastargs[2]) {
  ------------------
  |  Branch (126:9): [True: 3, False: 0]
  ------------------
  127|      3|        closefd = PyObject_IsTrue(fastargs[2]);
  128|      3|        if (closefd < 0) {
  ------------------
  |  Branch (128:13): [True: 0, False: 3]
  ------------------
  129|      0|            goto exit;
  130|      0|        }
  131|      3|        if (!--noptargs) {
  ------------------
  |  Branch (131:13): [True: 0, False: 3]
  ------------------
  132|      0|            goto skip_optional_pos;
  133|      0|        }
  134|      3|    }
  135|      3|    opener = fastargs[3];
  136|      3|skip_optional_pos:
  137|      3|    return_value = _io_FileIO___init___impl((fileio *)self, nameobj, mode, closefd, opener);
  138|       |
  139|      3|exit:
  140|      3|    return return_value;
  141|      3|}

iobase.c:_io__IOBase_readable:
  229|      2|{
  230|      2|    return _io__IOBase_readable_impl(self);
  231|      2|}
iobase.c:_io__IOBase_writable:
  249|      1|{
  250|      1|    return _io__IOBase_writable_impl(self);
  251|      1|}

textio.c:_io_TextIOWrapper___init__:
  553|      3|{
  554|      3|    int return_value = -1;
  555|      3|    #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
  556|       |
  557|      3|    #define NUM_KEYWORDS 6
  558|      3|    static struct {
  559|      3|        PyGC_Head _this_is_not_used;
  560|      3|        PyObject_VAR_HEAD
  561|      3|        Py_hash_t ob_hash;
  562|      3|        PyObject *ob_item[NUM_KEYWORDS];
  563|      3|    } _kwtuple = {
  564|      3|        .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
  ------------------
  |  |   97|      3|    {                                     \
  |  |   98|      3|        PyObject_HEAD_INIT(type)          \
  |  |  ------------------
  |  |  |  |   90|      3|    {                               \
  |  |  |  |   91|      3|        { _Py_STATIC_IMMORTAL_INITIAL_REFCNT },    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   50|      3|#define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   47|      3|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      3|#define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  583|      3|#define _Py_STATICALLY_ALLOCATED_FLAG (1 << 2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  581|      3|#define _Py_IMMORTAL_FLAGS (1 << 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   92|      3|        (type)                      \
  |  |  |  |   93|      3|    },
  |  |  ------------------
  |  |   99|      3|        (size)                            \
  |  |  100|      3|    },
  ------------------
  565|      3|        .ob_hash = -1,
  566|      3|        .ob_item = { &_Py_ID(buffer), &_Py_ID(encoding), &_Py_ID(errors), &_Py_ID(newline), &_Py_ID(line_buffering), &_Py_ID(write_through), },
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      .ob_item = { &_Py_ID(buffer), &_Py_ID(encoding), &_Py_ID(errors), &_Py_ID(newline), &_Py_ID(line_buffering), &_Py_ID(write_through), },
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      .ob_item = { &_Py_ID(buffer), &_Py_ID(encoding), &_Py_ID(errors), &_Py_ID(newline), &_Py_ID(line_buffering), &_Py_ID(write_through), },
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      .ob_item = { &_Py_ID(buffer), &_Py_ID(encoding), &_Py_ID(errors), &_Py_ID(newline), &_Py_ID(line_buffering), &_Py_ID(write_through), },
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      .ob_item = { &_Py_ID(buffer), &_Py_ID(encoding), &_Py_ID(errors), &_Py_ID(newline), &_Py_ID(line_buffering), &_Py_ID(write_through), },
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      .ob_item = { &_Py_ID(buffer), &_Py_ID(encoding), &_Py_ID(errors), &_Py_ID(newline), &_Py_ID(line_buffering), &_Py_ID(write_through), },
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  567|      3|    };
  568|      3|    #undef NUM_KEYWORDS
  569|      3|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
  570|       |
  571|       |    #else  // !Py_BUILD_CORE
  572|       |    #  define KWTUPLE NULL
  573|       |    #endif  // !Py_BUILD_CORE
  574|       |
  575|      3|    static const char * const _keywords[] = {"buffer", "encoding", "errors", "newline", "line_buffering", "write_through", NULL};
  576|      3|    static _PyArg_Parser _parser = {
  577|      3|        .keywords = _keywords,
  578|      3|        .fname = "TextIOWrapper",
  579|      3|        .kwtuple = KWTUPLE,
  ------------------
  |  |  569|      3|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
  ------------------
  580|      3|    };
  581|      3|    #undef KWTUPLE
  582|      3|    PyObject *argsbuf[6];
  583|      3|    PyObject * const *fastargs;
  584|      3|    Py_ssize_t nargs = PyTuple_GET_SIZE(args);
  ------------------
  |  |   27|      3|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  585|      3|    Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 1;
  ------------------
  |  |   63|      0|#define PyDict_GET_SIZE(op) PyDict_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (585:36): [True: 0, False: 3]
  ------------------
  586|      3|    PyObject *buffer;
  587|      3|    const char *encoding = NULL;
  588|      3|    PyObject *errors = Py_None;
  ------------------
  |  |  616|      3|#  define Py_None (&_Py_NoneStruct)
  ------------------
  589|      3|    const char *newline = NULL;
  590|      3|    int line_buffering = 0;
  591|      3|    int write_through = 0;
  592|       |
  593|      3|    fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser,
  ------------------
  |  |   88|      3|    (((minkw) == 0 && (kwargs) == NULL && (kwnames) == NULL && \
  |  |  ------------------
  |  |  |  Branch (88:7): [True: 3, Folded]
  |  |  |  Branch (88:23): [True: 3, False: 0]
  |  |  |  Branch (88:43): [True: 0, Folded]
  |  |  ------------------
  |  |   89|      6|      (minpos) <= (nargs) && ((varpos) || (nargs) <= (maxpos)) && (args) != NULL) ? \
  |  |  ------------------
  |  |  |  Branch (89:7): [True: 3, False: 0]
  |  |  |  Branch (89:31): [Folded, False: 3]
  |  |  |  Branch (89:43): [True: 3, False: 0]
  |  |  |  Branch (89:67): [True: 3, False: 0]
  |  |  |  Branch (89:68): [True: 3, False: 0]
  |  |  ------------------
  |  |   90|      6|      (args) : \
  |  |  ------------------
  |  |  |  Branch (90:8): [True: 3, False: 0]
  |  |  ------------------
  |  |   91|      3|     _PyArg_UnpackKeywords((args), (nargs), (kwargs), (kwnames), (parser), \
  |  |  ------------------
  |  |  |  Branch (91:29): [True: 0, False: 0]
  |  |  ------------------
  |  |   92|      0|                           (minpos), (maxpos), (minkw), (varpos), (buf)))
  ------------------
  594|      3|            /*minpos*/ 1, /*maxpos*/ 6, /*minkw*/ 0, /*varpos*/ 0, argsbuf);
  595|      3|    if (!fastargs) {
  ------------------
  |  Branch (595:9): [True: 0, False: 3]
  ------------------
  596|      0|        goto exit;
  597|      0|    }
  598|      3|    buffer = fastargs[0];
  599|      3|    if (!noptargs) {
  ------------------
  |  Branch (599:9): [True: 0, False: 3]
  ------------------
  600|      0|        goto skip_optional_pos;
  601|      0|    }
  602|      3|    if (fastargs[1]) {
  ------------------
  |  Branch (602:9): [True: 3, False: 0]
  ------------------
  603|      3|        if (fastargs[1] == Py_None) {
  ------------------
  |  |  616|      3|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (603:13): [True: 0, False: 3]
  ------------------
  604|      0|            encoding = NULL;
  605|      0|        }
  606|      3|        else if (PyUnicode_Check(fastargs[1])) {
  ------------------
  |  |  103|      3|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      3|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 3, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  607|      3|            Py_ssize_t encoding_length;
  608|      3|            encoding = PyUnicode_AsUTF8AndSize(fastargs[1], &encoding_length);
  609|      3|            if (encoding == NULL) {
  ------------------
  |  Branch (609:17): [True: 0, False: 3]
  ------------------
  610|      0|                goto exit;
  611|      0|            }
  612|      3|            if (strlen(encoding) != (size_t)encoding_length) {
  ------------------
  |  Branch (612:17): [True: 0, False: 3]
  ------------------
  613|      0|                PyErr_SetString(PyExc_ValueError, "embedded null character");
  614|      0|                goto exit;
  615|      0|            }
  616|      3|        }
  617|      0|        else {
  618|      0|            _PyArg_BadArgument("TextIOWrapper", "argument 'encoding'", "str or None", fastargs[1]);
  619|      0|            goto exit;
  620|      0|        }
  621|      3|        if (!--noptargs) {
  ------------------
  |  Branch (621:13): [True: 0, False: 3]
  ------------------
  622|      0|            goto skip_optional_pos;
  623|      0|        }
  624|      3|    }
  625|      3|    if (fastargs[2]) {
  ------------------
  |  Branch (625:9): [True: 3, False: 0]
  ------------------
  626|      3|        errors = fastargs[2];
  627|      3|        if (!--noptargs) {
  ------------------
  |  Branch (627:13): [True: 0, False: 3]
  ------------------
  628|      0|            goto skip_optional_pos;
  629|      0|        }
  630|      3|    }
  631|      3|    if (fastargs[3]) {
  ------------------
  |  Branch (631:9): [True: 3, False: 0]
  ------------------
  632|      3|        if (fastargs[3] == Py_None) {
  ------------------
  |  |  616|      3|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (632:13): [True: 0, False: 3]
  ------------------
  633|      0|            newline = NULL;
  634|      0|        }
  635|      3|        else if (PyUnicode_Check(fastargs[3])) {
  ------------------
  |  |  103|      3|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      3|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 3, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  636|      3|            Py_ssize_t newline_length;
  637|      3|            newline = PyUnicode_AsUTF8AndSize(fastargs[3], &newline_length);
  638|      3|            if (newline == NULL) {
  ------------------
  |  Branch (638:17): [True: 0, False: 3]
  ------------------
  639|      0|                goto exit;
  640|      0|            }
  641|      3|            if (strlen(newline) != (size_t)newline_length) {
  ------------------
  |  Branch (641:17): [True: 0, False: 3]
  ------------------
  642|      0|                PyErr_SetString(PyExc_ValueError, "embedded null character");
  643|      0|                goto exit;
  644|      0|            }
  645|      3|        }
  646|      0|        else {
  647|      0|            _PyArg_BadArgument("TextIOWrapper", "argument 'newline'", "str or None", fastargs[3]);
  648|      0|            goto exit;
  649|      0|        }
  650|      3|        if (!--noptargs) {
  ------------------
  |  Branch (650:13): [True: 0, False: 3]
  ------------------
  651|      0|            goto skip_optional_pos;
  652|      0|        }
  653|      3|    }
  654|      3|    if (fastargs[4]) {
  ------------------
  |  Branch (654:9): [True: 3, False: 0]
  ------------------
  655|      3|        line_buffering = PyObject_IsTrue(fastargs[4]);
  656|      3|        if (line_buffering < 0) {
  ------------------
  |  Branch (656:13): [True: 0, False: 3]
  ------------------
  657|      0|            goto exit;
  658|      0|        }
  659|      3|        if (!--noptargs) {
  ------------------
  |  Branch (659:13): [True: 0, False: 3]
  ------------------
  660|      0|            goto skip_optional_pos;
  661|      0|        }
  662|      3|    }
  663|      3|    write_through = PyObject_IsTrue(fastargs[5]);
  664|      3|    if (write_through < 0) {
  ------------------
  |  Branch (664:9): [True: 0, False: 3]
  ------------------
  665|      0|        goto exit;
  666|      0|    }
  667|      3|skip_optional_pos:
  668|      3|    return_value = _io_TextIOWrapper___init___impl((textio *)self, buffer, encoding, errors, newline, line_buffering, write_through);
  669|       |
  670|      3|exit:
  671|      3|    return return_value;
  672|      3|}

fileio.c:portable_lseek:
  957|      5|{
  958|      5|    Py_off_t pos, res;
  959|      5|    int fd = self->fd;
  960|       |
  961|      5|#ifdef SEEK_SET
  962|       |    /* Turn 0, 1, 2 into SEEK_{SET,CUR,END} */
  963|      5|    switch (whence) {
  ------------------
  |  Branch (963:13): [Folded, False: 5]
  ------------------
  964|       |#if SEEK_SET != 0
  965|       |    case 0: whence = SEEK_SET; break;
  966|       |#endif
  967|       |#if SEEK_CUR != 1
  968|       |    case 1: whence = SEEK_CUR; break;
  969|       |#endif
  970|       |#if SEEK_END != 2
  971|       |    case 2: whence = SEEK_END; break;
  972|       |#endif
  973|      5|    }
  974|      5|#endif /* SEEK_SET */
  975|       |
  976|      5|    if (posobj == NULL) {
  ------------------
  |  Branch (976:9): [True: 5, False: 0]
  ------------------
  977|      5|        pos = 0;
  978|      5|    }
  979|      0|    else {
  980|       |#if defined(HAVE_LARGEFILE_SUPPORT)
  981|       |        pos = PyLong_AsLongLong(posobj);
  982|       |#else
  983|      0|        pos = PyLong_AsLong(posobj);
  984|      0|#endif
  985|      0|        if (PyErr_Occurred())
  ------------------
  |  Branch (985:13): [True: 0, False: 0]
  ------------------
  986|      0|            return NULL;
  987|      0|    }
  988|       |
  989|      5|    Py_BEGIN_ALLOW_THREADS
  ------------------
  |  |  119|      5|#define Py_BEGIN_ALLOW_THREADS { \
  |  |  120|      5|                        PyThreadState *_save; \
  |  |  121|      5|                        _save = PyEval_SaveThread();
  ------------------
  990|      5|    _Py_BEGIN_SUPPRESS_IPH
  991|       |#ifdef MS_WINDOWS
  992|       |    res = _lseeki64(fd, pos, whence);
  993|       |#else
  994|      5|    res = lseek(fd, pos, whence);
  995|      5|#endif
  996|      5|    _Py_END_SUPPRESS_IPH
  997|      5|    Py_END_ALLOW_THREADS
  ------------------
  |  |  124|      5|#define Py_END_ALLOW_THREADS    PyEval_RestoreThread(_save); \
  |  |  125|      5|                 }
  ------------------
  998|       |
  999|      5|    if (self->seekable < 0) {
  ------------------
  |  Branch (999:9): [True: 3, False: 2]
  ------------------
 1000|      3|        self->seekable = (res >= 0);
 1001|      3|    }
 1002|       |
 1003|      5|    if (res < 0) {
  ------------------
  |  Branch (1003:9): [True: 0, False: 5]
  ------------------
 1004|      0|        if (suppress_pipe_error && errno == ESPIPE) {
  ------------------
  |  Branch (1004:13): [True: 0, False: 0]
  |  Branch (1004:36): [True: 0, False: 0]
  ------------------
 1005|      0|            res = 0;
 1006|      0|        } else {
 1007|      0|            return PyErr_SetFromErrno(PyExc_OSError);
 1008|      0|        }
 1009|      0|    }
 1010|       |
 1011|       |#if defined(HAVE_LARGEFILE_SUPPORT)
 1012|       |    return PyLong_FromLongLong(res);
 1013|       |#else
 1014|      5|    return PyLong_FromLong(res);
 1015|      5|#endif
 1016|      5|}
fileio.c:_io_FileIO_tell_impl:
 1057|      5|{
 1058|      5|    if (self->fd < 0)
  ------------------
  |  Branch (1058:9): [True: 0, False: 5]
  ------------------
 1059|      0|        return err_closed();
 1060|       |
 1061|      5|    return portable_lseek(self, NULL, 1, false);
 1062|      5|}
fileio.c:_io_FileIO_seekable_impl:
  653|      3|{
  654|      3|    if (self->fd < 0)
  ------------------
  |  Branch (654:9): [True: 0, False: 3]
  ------------------
  655|      0|        return err_closed();
  656|      3|    if (self->seekable < 0) {
  ------------------
  |  Branch (656:9): [True: 0, False: 3]
  ------------------
  657|       |        /* portable_lseek() sets the seekable attribute */
  658|      0|        PyObject *pos = portable_lseek(self, NULL, SEEK_CUR, false);
  659|      0|        assert(self->seekable >= 0);
  ------------------
  |  Branch (659:9): [True: 0, False: 0]
  ------------------
  660|      0|        if (pos == NULL) {
  ------------------
  |  Branch (660:13): [True: 0, False: 0]
  ------------------
  661|      0|            PyErr_Clear();
  662|      0|        }
  663|      0|        else {
  664|      0|            Py_DECREF(pos);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  665|      0|        }
  666|      0|    }
  667|      3|    return PyBool_FromLong((long) self->seekable);
  668|      3|}
fileio.c:_io_FileIO_readable_impl:
  623|      2|{
  624|      2|    if (self->fd < 0)
  ------------------
  |  Branch (624:9): [True: 0, False: 2]
  ------------------
  625|      0|        return err_closed();
  626|      2|    return PyBool_FromLong((long) self->readable);
  627|      2|}
fileio.c:_io_FileIO_writable_impl:
  638|      4|{
  639|      4|    if (self->fd < 0)
  ------------------
  |  Branch (639:9): [True: 0, False: 4]
  ------------------
  640|      0|        return err_closed();
  641|      4|    return PyBool_FromLong((long) self->writable);
  642|      4|}
fileio.c:_io_FileIO_isatty_impl:
 1221|      4|{
 1222|      4|    long res;
 1223|       |
 1224|      4|    if (self->fd < 0)
  ------------------
  |  Branch (1224:9): [True: 0, False: 4]
  ------------------
 1225|      0|        return err_closed();
 1226|      4|    Py_BEGIN_ALLOW_THREADS
  ------------------
  |  |  119|      4|#define Py_BEGIN_ALLOW_THREADS { \
  |  |  120|      4|                        PyThreadState *_save; \
  |  |  121|      4|                        _save = PyEval_SaveThread();
  ------------------
 1227|      4|    _Py_BEGIN_SUPPRESS_IPH
 1228|      4|    res = isatty(self->fd);
 1229|      4|    _Py_END_SUPPRESS_IPH
 1230|      4|    Py_END_ALLOW_THREADS
  ------------------
  |  |  124|      4|#define Py_END_ALLOW_THREADS    PyEval_RestoreThread(_save); \
  |  |  125|      4|                 }
  ------------------
 1231|      4|    return PyBool_FromLong(res);
 1232|      4|}
fileio.c:_io_FileIO_isatty_open_only:
 1244|      3|{
 1245|      3|    fileio *self = PyFileIO_CAST(op);
  ------------------
  |  |   88|      3|#define PyFileIO_CAST(op) ((fileio *)(op))
  ------------------
 1246|      3|    if (self->stat_atopen != NULL && !S_ISCHR(self->stat_atopen->st_mode)) {
  ------------------
  |  Branch (1246:9): [True: 3, False: 0]
  |  Branch (1246:38): [True: 2, False: 1]
  ------------------
 1247|      2|        Py_RETURN_FALSE;
  ------------------
  |  |   45|      2|#  define Py_RETURN_FALSE return Py_False
  |  |  ------------------
  |  |  |  |   25|      2|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1248|      2|    }
 1249|      1|    return _io_FileIO_isatty_impl(self);
 1250|      3|}
fileio.c:fileio_get_blksize:
 1299|      3|{
 1300|      3|#ifdef HAVE_STRUCT_STAT_ST_BLKSIZE
 1301|      3|    fileio *self = PyFileIO_CAST(op);
  ------------------
  |  |   88|      3|#define PyFileIO_CAST(op) ((fileio *)(op))
  ------------------
 1302|      3|    if (self->stat_atopen != NULL && self->stat_atopen->st_blksize > 1) {
  ------------------
  |  Branch (1302:9): [True: 3, False: 0]
  |  Branch (1302:38): [True: 3, False: 0]
  ------------------
 1303|      3|        return PyLong_FromLong(self->stat_atopen->st_blksize);
 1304|      3|    }
 1305|      0|#endif /* HAVE_STRUCT_STAT_ST_BLKSIZE */
 1306|      0|    return PyLong_FromLong(DEFAULT_BUFFER_SIZE);
  ------------------
  |  |   81|      0|#define DEFAULT_BUFFER_SIZE (128 * 1024)  /* bytes */
  ------------------
 1307|      3|}
fileio.c:_io_FileIO___init___impl:
  250|      3|{
  251|       |#ifdef MS_WINDOWS
  252|       |    wchar_t *widename = NULL;
  253|       |#else
  254|      3|    const char *name = NULL;
  255|      3|#endif
  256|      3|    PyObject *stringobj = NULL;
  257|      3|    const char *s;
  258|      3|    int ret = 0;
  259|      3|    int rwa = 0, plus = 0;
  260|      3|    int flags = 0;
  261|      3|    int fd = -1;
  262|      3|    int fd_is_own = 0;
  263|      3|#ifdef O_CLOEXEC
  264|      3|    int *atomic_flag_works = &_Py_open_cloexec_works;
  265|       |#elif !defined(MS_WINDOWS)
  266|       |    int *atomic_flag_works = NULL;
  267|       |#endif
  268|      3|    int fstat_result;
  269|      3|    int async_err = 0;
  270|       |
  271|       |#ifdef Py_DEBUG
  272|       |    _PyIO_State *state = find_io_state_by_def(Py_TYPE(self));
  273|       |    assert(PyFileIO_Check(state, self));
  274|       |#endif
  275|      3|    if (self->fd >= 0) {
  ------------------
  |  Branch (275:9): [True: 0, False: 3]
  ------------------
  276|      0|        if (self->closefd) {
  ------------------
  |  Branch (276:13): [True: 0, False: 0]
  ------------------
  277|       |            /* Have to close the existing file first. */
  278|      0|            if (internal_close(self) < 0) {
  ------------------
  |  Branch (278:17): [True: 0, False: 0]
  ------------------
  279|      0|                return -1;
  280|      0|            }
  281|      0|        }
  282|      0|        else
  283|      0|            self->fd = -1;
  284|      0|    }
  285|       |
  286|      3|    if (PyBool_Check(nameobj)) {
  ------------------
  |  |   12|      3|#define PyBool_Check(x) Py_IS_TYPE((x), &PyBool_Type)
  |  |  ------------------
  |  |  |  |  215|      3|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  287|      0|        if (PyErr_WarnEx(PyExc_RuntimeWarning,
  ------------------
  |  Branch (287:13): [True: 0, False: 0]
  ------------------
  288|      0|                "bool is used as a file descriptor", 1))
  289|      0|        {
  290|      0|            return -1;
  291|      0|        }
  292|      0|    }
  293|      3|    fd = PyLong_AsInt(nameobj);
  294|      3|    if (fd < 0) {
  ------------------
  |  Branch (294:9): [True: 0, False: 3]
  ------------------
  295|      0|        if (!PyErr_Occurred()) {
  ------------------
  |  Branch (295:13): [True: 0, False: 0]
  ------------------
  296|      0|            PyErr_SetString(PyExc_ValueError,
  297|      0|                            "negative file descriptor");
  298|      0|            return -1;
  299|      0|        }
  300|      0|        PyErr_Clear();
  301|      0|    }
  302|       |
  303|      3|    if (fd < 0) {
  ------------------
  |  Branch (303:9): [True: 0, False: 3]
  ------------------
  304|       |#ifdef MS_WINDOWS
  305|       |        if (!PyUnicode_FSDecoder(nameobj, &stringobj)) {
  306|       |            return -1;
  307|       |        }
  308|       |        widename = PyUnicode_AsWideCharString(stringobj, NULL);
  309|       |        if (widename == NULL)
  310|       |            return -1;
  311|       |#else
  312|      0|        if (!PyUnicode_FSConverter(nameobj, &stringobj)) {
  ------------------
  |  Branch (312:13): [True: 0, False: 0]
  ------------------
  313|      0|            return -1;
  314|      0|        }
  315|      0|        name = PyBytes_AS_STRING(stringobj);
  ------------------
  |  |   27|      0|#define PyBytes_AS_STRING(op) PyBytes_AS_STRING(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  316|      0|#endif
  317|      0|    }
  318|       |
  319|      3|    s = mode;
  320|      6|    while (*s) {
  ------------------
  |  Branch (320:12): [True: 3, False: 3]
  ------------------
  321|      3|        switch (*s++) {
  322|      0|        case 'x':
  ------------------
  |  Branch (322:9): [True: 0, False: 3]
  ------------------
  323|      0|            if (rwa) {
  ------------------
  |  Branch (323:17): [True: 0, False: 0]
  ------------------
  324|      0|            bad_mode:
  325|      0|                PyErr_SetString(PyExc_ValueError,
  326|      0|                                "Must have exactly one of create/read/write/append "
  327|      0|                                "mode and at most one plus");
  328|      0|                goto error;
  329|      0|            }
  330|      0|            rwa = 1;
  331|      0|            self->created = 1;
  332|      0|            self->writable = 1;
  333|      0|            flags |= O_EXCL | O_CREAT;
  334|      0|            break;
  335|      1|        case 'r':
  ------------------
  |  Branch (335:9): [True: 1, False: 2]
  ------------------
  336|      1|            if (rwa)
  ------------------
  |  Branch (336:17): [True: 0, False: 1]
  ------------------
  337|      0|                goto bad_mode;
  338|      1|            rwa = 1;
  339|      1|            self->readable = 1;
  340|      1|            break;
  341|      2|        case 'w':
  ------------------
  |  Branch (341:9): [True: 2, False: 1]
  ------------------
  342|      2|            if (rwa)
  ------------------
  |  Branch (342:17): [True: 0, False: 2]
  ------------------
  343|      0|                goto bad_mode;
  344|      2|            rwa = 1;
  345|      2|            self->writable = 1;
  346|      2|            self->truncate = 1;
  347|      2|            flags |= O_CREAT | O_TRUNC;
  348|      2|            break;
  349|      0|        case 'a':
  ------------------
  |  Branch (349:9): [True: 0, False: 3]
  ------------------
  350|      0|            if (rwa)
  ------------------
  |  Branch (350:17): [True: 0, False: 0]
  ------------------
  351|      0|                goto bad_mode;
  352|      0|            rwa = 1;
  353|      0|            self->writable = 1;
  354|      0|            self->appending = 1;
  355|      0|            flags |= O_APPEND | O_CREAT;
  356|      0|            break;
  357|      0|        case 'b':
  ------------------
  |  Branch (357:9): [True: 0, False: 3]
  ------------------
  358|      0|            break;
  359|      0|        case '+':
  ------------------
  |  Branch (359:9): [True: 0, False: 3]
  ------------------
  360|      0|            if (plus)
  ------------------
  |  Branch (360:17): [True: 0, False: 0]
  ------------------
  361|      0|                goto bad_mode;
  362|      0|            self->readable = self->writable = 1;
  363|      0|            plus = 1;
  364|      0|            break;
  365|      0|        default:
  ------------------
  |  Branch (365:9): [True: 0, False: 3]
  ------------------
  366|      0|            PyErr_Format(PyExc_ValueError,
  367|      0|                         "invalid mode: %.200s", mode);
  368|      0|            goto error;
  369|      3|        }
  370|      3|    }
  371|       |
  372|      3|    if (!rwa)
  ------------------
  |  Branch (372:9): [True: 0, False: 3]
  ------------------
  373|      0|        goto bad_mode;
  374|       |
  375|      3|    if (self->readable && self->writable)
  ------------------
  |  Branch (375:9): [True: 1, False: 2]
  |  Branch (375:27): [True: 0, False: 1]
  ------------------
  376|      0|        flags |= O_RDWR;
  377|      3|    else if (self->readable)
  ------------------
  |  Branch (377:14): [True: 1, False: 2]
  ------------------
  378|      1|        flags |= O_RDONLY;
  379|      2|    else
  380|      2|        flags |= O_WRONLY;
  381|       |
  382|       |#ifdef O_BINARY
  383|       |    flags |= O_BINARY;
  384|       |#endif
  385|       |
  386|       |#ifdef MS_WINDOWS
  387|       |    flags |= O_NOINHERIT;
  388|       |#elif defined(O_CLOEXEC)
  389|      3|    flags |= O_CLOEXEC;
  390|      3|#endif
  391|       |
  392|      3|    if (PySys_Audit("open", "Osi", nameobj, mode, flags) < 0) {
  ------------------
  |  Branch (392:9): [True: 0, False: 3]
  ------------------
  393|      0|        goto error;
  394|      0|    }
  395|       |
  396|      3|    if (fd >= 0) {
  ------------------
  |  Branch (396:9): [True: 3, False: 0]
  ------------------
  397|      3|        self->fd = fd;
  398|      3|        self->closefd = closefd;
  399|      3|    }
  400|      0|    else {
  401|      0|        self->closefd = 1;
  402|      0|        if (!closefd) {
  ------------------
  |  Branch (402:13): [True: 0, False: 0]
  ------------------
  403|      0|            PyErr_SetString(PyExc_ValueError,
  404|      0|                "Cannot use closefd=False with file name");
  405|      0|            goto error;
  406|      0|        }
  407|       |
  408|      0|        errno = 0;
  409|      0|        if (opener == Py_None) {
  ------------------
  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (409:13): [True: 0, False: 0]
  ------------------
  410|      0|            do {
  411|      0|                Py_BEGIN_ALLOW_THREADS
  ------------------
  |  |  119|      0|#define Py_BEGIN_ALLOW_THREADS { \
  |  |  120|      0|                        PyThreadState *_save; \
  |  |  121|      0|                        _save = PyEval_SaveThread();
  ------------------
  412|       |#ifdef MS_WINDOWS
  413|       |                self->fd = _wopen(widename, flags, 0666);
  414|       |#else
  415|      0|                self->fd = open(name, flags, 0666);
  416|      0|#endif
  417|      0|                Py_END_ALLOW_THREADS
  ------------------
  |  |  124|      0|#define Py_END_ALLOW_THREADS    PyEval_RestoreThread(_save); \
  |  |  125|      0|                 }
  ------------------
  418|      0|            } while (self->fd < 0 && errno == EINTR &&
  ------------------
  |  Branch (418:22): [True: 0, False: 0]
  |  Branch (418:38): [True: 0, False: 0]
  ------------------
  419|      0|                     !(async_err = PyErr_CheckSignals()));
  ------------------
  |  Branch (419:22): [True: 0, False: 0]
  ------------------
  420|       |
  421|      0|            if (async_err)
  ------------------
  |  Branch (421:17): [True: 0, False: 0]
  ------------------
  422|      0|                goto error;
  423|       |
  424|      0|            if (self->fd < 0) {
  ------------------
  |  Branch (424:17): [True: 0, False: 0]
  ------------------
  425|      0|                PyErr_SetFromErrnoWithFilenameObject(PyExc_OSError, nameobj);
  426|      0|                goto error;
  427|      0|            }
  428|      0|        }
  429|      0|        else {
  430|      0|            PyObject *fdobj;
  431|       |
  432|      0|#ifndef MS_WINDOWS
  433|       |            /* the opener may clear the atomic flag */
  434|      0|            atomic_flag_works = NULL;
  435|      0|#endif
  436|       |
  437|      0|            fdobj = PyObject_CallFunction(opener, "Oi", nameobj, flags);
  438|      0|            if (fdobj == NULL)
  ------------------
  |  Branch (438:17): [True: 0, False: 0]
  ------------------
  439|      0|                goto error;
  440|      0|            if (!PyLong_Check(fdobj)) {
  ------------------
  |  |   13|      0|        PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (440:17): [True: 0, False: 0]
  ------------------
  441|      0|                Py_DECREF(fdobj);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  442|      0|                PyErr_SetString(PyExc_TypeError,
  443|      0|                        "expected integer from opener");
  444|      0|                goto error;
  445|      0|            }
  446|       |
  447|      0|            self->fd = PyLong_AsInt(fdobj);
  448|      0|            Py_DECREF(fdobj);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  449|      0|            if (self->fd < 0) {
  ------------------
  |  Branch (449:17): [True: 0, False: 0]
  ------------------
  450|      0|                if (!PyErr_Occurred()) {
  ------------------
  |  Branch (450:21): [True: 0, False: 0]
  ------------------
  451|       |                    /* The opener returned a negative but didn't set an
  452|       |                       exception.  See issue #27066 */
  453|      0|                    PyErr_Format(PyExc_ValueError,
  454|      0|                                 "opener returned %d", self->fd);
  455|      0|                }
  456|      0|                goto error;
  457|      0|            }
  458|      0|        }
  459|      0|        fd_is_own = 1;
  460|       |
  461|      0|#ifndef MS_WINDOWS
  462|      0|        if (_Py_set_inheritable(self->fd, 0, atomic_flag_works) < 0)
  ------------------
  |  Branch (462:13): [True: 0, False: 0]
  ------------------
  463|      0|            goto error;
  464|      0|#endif
  465|      0|    }
  466|       |
  467|      3|    PyMem_Free(self->stat_atopen);
  468|      3|    self->stat_atopen = PyMem_New(struct _Py_stat_struct, 1);
  ------------------
  |  |   64|      3|  ( ((size_t)(n) > PY_SSIZE_T_MAX / sizeof(type)) ? NULL :      \
  |  |  ------------------
  |  |  |  |  137|      3|#   define PY_SSIZE_T_MAX SSIZE_MAX
  |  |  ------------------
  |  |  |  Branch (64:5): [Folded, False: 3]
  |  |  ------------------
  |  |   65|      3|        ( (type *) PyMem_Malloc((n) * sizeof(type)) ) )
  ------------------
  469|      3|    if (self->stat_atopen == NULL) {
  ------------------
  |  Branch (469:9): [True: 0, False: 3]
  ------------------
  470|      0|        PyErr_NoMemory();
  471|      0|        goto error;
  472|      0|    }
  473|      3|    Py_BEGIN_ALLOW_THREADS
  ------------------
  |  |  119|      3|#define Py_BEGIN_ALLOW_THREADS { \
  |  |  120|      3|                        PyThreadState *_save; \
  |  |  121|      3|                        _save = PyEval_SaveThread();
  ------------------
  474|      3|    fstat_result = _Py_fstat_noraise(self->fd, self->stat_atopen);
  475|      3|    Py_END_ALLOW_THREADS
  ------------------
  |  |  124|      3|#define Py_END_ALLOW_THREADS    PyEval_RestoreThread(_save); \
  |  |  125|      3|                 }
  ------------------
  476|      3|    if (fstat_result < 0) {
  ------------------
  |  Branch (476:9): [True: 0, False: 3]
  ------------------
  477|       |        /* Tolerate fstat() errors other than EBADF.  See Issue #25717, where
  478|       |        an anonymous file on a Virtual Box shared folder filesystem would
  479|       |        raise ENOENT. */
  480|       |#ifdef MS_WINDOWS
  481|       |        if (GetLastError() == ERROR_INVALID_HANDLE) {
  482|       |            PyErr_SetFromWindowsErr(0);
  483|       |#else
  484|      0|        if (errno == EBADF) {
  ------------------
  |  Branch (484:13): [True: 0, False: 0]
  ------------------
  485|      0|            PyErr_SetFromErrno(PyExc_OSError);
  486|      0|#endif
  487|      0|            goto error;
  488|      0|        }
  489|       |
  490|      0|        PyMem_Free(self->stat_atopen);
  491|      0|        self->stat_atopen = NULL;
  492|      0|    }
  493|      3|    else {
  494|      3|#if defined(S_ISDIR) && defined(EISDIR)
  495|       |        /* On Unix, open will succeed for directories.
  496|       |           In Python, there should be no file objects referring to
  497|       |           directories, so we need a check.  */
  498|      3|        if (S_ISDIR(self->stat_atopen->st_mode)) {
  ------------------
  |  Branch (498:13): [True: 0, False: 3]
  ------------------
  499|      0|            errno = EISDIR;
  500|      0|            PyErr_SetFromErrnoWithFilenameObject(PyExc_OSError, nameobj);
  501|      0|            goto error;
  502|      0|        }
  503|      3|#endif /* defined(S_ISDIR) */
  504|      3|    }
  505|       |
  506|       |#if defined(MS_WINDOWS) || defined(__CYGWIN__)
  507|       |    /* don't translate newlines (\r\n <=> \n) */
  508|       |    _setmode(self->fd, O_BINARY);
  509|       |#endif
  510|       |
  511|      3|    if (PyObject_SetAttr((PyObject *)self, &_Py_ID(name), nameobj) < 0)
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (511:9): [True: 0, False: 3]
  ------------------
  512|      0|        goto error;
  513|       |
  514|      3|    if (self->appending) {
  ------------------
  |  Branch (514:9): [True: 0, False: 3]
  ------------------
  515|       |        /* For consistent behaviour, we explicitly seek to the
  516|       |           end of file (otherwise, it might be done only on the
  517|       |           first write()). */
  518|      0|        PyObject *pos = portable_lseek(self, NULL, 2, true);
  519|      0|        if (pos == NULL)
  ------------------
  |  Branch (519:13): [True: 0, False: 0]
  ------------------
  520|      0|            goto error;
  521|      0|        Py_DECREF(pos);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  522|      0|    }
  523|       |
  524|      3|    goto done;
  525|       |
  526|      3| error:
  527|      0|    ret = -1;
  528|      0|    if (!fd_is_own)
  ------------------
  |  Branch (528:9): [True: 0, False: 0]
  ------------------
  529|      0|        self->fd = -1;
  530|      0|    if (self->fd >= 0) {
  ------------------
  |  Branch (530:9): [True: 0, False: 0]
  ------------------
  531|      0|        PyObject *exc = PyErr_GetRaisedException();
  532|      0|        internal_close(self);
  533|      0|        _PyErr_ChainExceptions1(exc);
  534|      0|    }
  535|      0|    PyMem_Free(self->stat_atopen);
  536|      0|    self->stat_atopen = NULL;
  537|       |
  538|      3| done:
  539|       |#ifdef MS_WINDOWS
  540|       |    PyMem_Free(widename);
  541|       |#endif
  542|       |    Py_CLEAR(stringobj);
  ------------------
  |  |  484|      3|    do { \
  |  |  485|      3|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      3|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      3|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 3]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      3|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 3]
  |  |  ------------------
  ------------------
  543|      3|    return ret;
  544|      0|}
fileio.c:fileio_new:
  199|      3|{
  200|      3|    assert(type != NULL && type->tp_alloc != NULL);
  ------------------
  |  Branch (200:5): [True: 3, False: 0]
  |  Branch (200:5): [True: 3, False: 0]
  ------------------
  201|       |
  202|      3|    fileio *self = (fileio *) type->tp_alloc(type, 0);
  203|      3|    if (self == NULL) {
  ------------------
  |  Branch (203:9): [True: 0, False: 3]
  ------------------
  204|      0|        return NULL;
  205|      0|    }
  206|       |
  207|      3|    self->fd = -1;
  208|      3|    self->created = 0;
  209|      3|    self->readable = 0;
  210|      3|    self->writable = 0;
  211|      3|    self->appending = 0;
  212|      3|    self->seekable = -1;
  213|      3|    self->truncate = 0;
  214|      3|    self->stat_atopen = NULL;
  215|      3|    self->closefd = 1;
  216|       |    self->weakreflist = NULL;
  217|      3|    return (PyObject *) self;
  218|      3|}

_PyIOBase_check_readable:
  447|      1|{
  448|      1|    PyObject *res = PyObject_CallMethodNoArgs(self, &_Py_ID(readable));
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  449|      1|    if (res == NULL)
  ------------------
  |  Branch (449:9): [True: 0, False: 1]
  ------------------
  450|      0|        return NULL;
  451|      1|    if (res != Py_True) {
  ------------------
  |  |   26|      1|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (451:9): [True: 0, False: 1]
  ------------------
  452|      0|        Py_CLEAR(res);
  ------------------
  |  |  484|      0|    do { \
  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  453|      0|        iobase_unsupported(state, "File or stream is not readable.");
  454|      0|        return NULL;
  455|      0|    }
  456|      1|    if (args == Py_True) {
  ------------------
  |  |   26|      1|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (456:9): [True: 1, False: 0]
  ------------------
  457|      1|        Py_DECREF(res);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  458|      1|    }
  459|      1|    return res;
  460|      1|}
_PyIOBase_check_writable:
  480|      2|{
  481|      2|    PyObject *res = PyObject_CallMethodNoArgs(self, &_Py_ID(writable));
  ------------------
  |  |  917|      2|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      2|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      2|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  482|      2|    if (res == NULL)
  ------------------
  |  Branch (482:9): [True: 0, False: 2]
  ------------------
  483|      0|        return NULL;
  484|      2|    if (res != Py_True) {
  ------------------
  |  |   26|      2|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (484:9): [True: 0, False: 2]
  ------------------
  485|      0|        Py_CLEAR(res);
  ------------------
  |  |  484|      0|    do { \
  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  486|      0|        iobase_unsupported(state, "File or stream is not writable.");
  487|      0|        return NULL;
  488|      0|    }
  489|      2|    if (args == Py_True) {
  ------------------
  |  |   26|      2|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (489:9): [True: 2, False: 0]
  ------------------
  490|      2|        Py_DECREF(res);
  ------------------
  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  491|      2|    }
  492|      2|    return res;
  493|      2|}
iobase.c:_io__IOBase_readable_impl:
  440|      2|{
  441|      2|    Py_RETURN_FALSE;
  ------------------
  |  |   45|      2|#  define Py_RETURN_FALSE return Py_False
  |  |  ------------------
  |  |  |  |   25|      2|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  442|      2|}
iobase.c:_io__IOBase_writable_impl:
  473|      1|{
  474|      1|    Py_RETURN_FALSE;
  ------------------
  |  |   45|      1|#  define Py_RETURN_FALSE return Py_False
  |  |  ------------------
  |  |  |  |   25|      1|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  475|      1|}

textio.c:validate_newline:
  846|      3|{
  847|      3|    if (newline && newline[0] != '\0'
  ------------------
  |  Branch (847:9): [True: 3, False: 0]
  |  Branch (847:20): [True: 3, False: 0]
  ------------------
  848|      3|        && !(newline[0] == '\n' && newline[1] == '\0')
  ------------------
  |  Branch (848:14): [True: 3, False: 0]
  |  Branch (848:36): [True: 3, False: 0]
  ------------------
  849|      0|        && !(newline[0] == '\r' && newline[1] == '\0')
  ------------------
  |  Branch (849:14): [True: 0, False: 0]
  |  Branch (849:36): [True: 0, False: 0]
  ------------------
  850|      0|        && !(newline[0] == '\r' && newline[1] == '\n' && newline[2] == '\0')) {
  ------------------
  |  Branch (850:14): [True: 0, False: 0]
  |  Branch (850:36): [True: 0, False: 0]
  |  Branch (850:58): [True: 0, False: 0]
  ------------------
  851|      0|        PyErr_Format(PyExc_ValueError,
  852|      0|                     "illegal newline value: %s", newline);
  853|      0|        return -1;
  854|      0|    }
  855|      3|    return 0;
  856|      3|}
textio.c:set_newline:
  860|      3|{
  861|      3|    PyObject *old = self->readnl;
  862|      3|    if (newline == NULL) {
  ------------------
  |  Branch (862:9): [True: 0, False: 3]
  ------------------
  863|      0|        self->readnl = NULL;
  864|      0|    }
  865|      3|    else {
  866|      3|        self->readnl = PyUnicode_FromString(newline);
  867|      3|        if (self->readnl == NULL) {
  ------------------
  |  Branch (867:13): [True: 0, False: 3]
  ------------------
  868|      0|            self->readnl = old;
  869|      0|            return -1;
  870|      0|        }
  871|      3|    }
  872|      3|    self->readuniversal = (newline == NULL || newline[0] == '\0');
  ------------------
  |  Branch (872:28): [True: 0, False: 3]
  |  Branch (872:47): [True: 0, False: 3]
  ------------------
  873|      3|    self->readtranslate = (newline == NULL);
  874|      3|    self->writetranslate = (newline == NULL || newline[0] != '\0');
  ------------------
  |  Branch (874:29): [True: 0, False: 3]
  |  Branch (874:48): [True: 3, False: 0]
  ------------------
  875|      3|    if (!self->readuniversal && self->readnl != NULL) {
  ------------------
  |  Branch (875:9): [True: 3, False: 0]
  |  Branch (875:33): [True: 3, False: 0]
  ------------------
  876|       |        // validate_newline() accepts only ASCII newlines.
  877|      3|        assert(PyUnicode_KIND(self->readnl) == PyUnicode_1BYTE_KIND);
  ------------------
  |  Branch (877:9): [True: 3, False: 0]
  |  Branch (877:9): [True: 3, False: 0]
  ------------------
  878|      3|        self->writenl = (const char *)PyUnicode_1BYTE_DATA(self->readnl);
  ------------------
  |  |  291|      3|#define PyUnicode_1BYTE_DATA(op) _Py_STATIC_CAST(Py_UCS1*, PyUnicode_DATA(op))
  |  |  ------------------
  |  |  |  |   34|      3|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  879|      3|        if (strcmp(self->writenl, "\n") == 0) {
  ------------------
  |  Branch (879:13): [True: 3, False: 0]
  ------------------
  880|      3|            self->writenl = NULL;
  881|      3|        }
  882|      3|    }
  883|      0|    else {
  884|       |#ifdef MS_WINDOWS
  885|       |        self->writenl = "\r\n";
  886|       |#else
  887|      0|        self->writenl = NULL;
  888|      0|#endif
  889|      0|    }
  890|      3|    Py_XDECREF(old);
  ------------------
  |  |  524|      3|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  891|      3|    return 0;
  892|      3|}
textio.c:_textiowrapper_set_decoder:
  897|      3|{
  898|      3|    PyObject *res;
  899|      3|    int r;
  900|       |
  901|      3|    res = PyObject_CallMethodNoArgs(self->buffer, &_Py_ID(readable));
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  902|      3|    if (res == NULL)
  ------------------
  |  Branch (902:9): [True: 0, False: 3]
  ------------------
  903|      0|        return -1;
  904|       |
  905|      3|    r = PyObject_IsTrue(res);
  906|      3|    Py_DECREF(res);
  ------------------
  |  |  430|      3|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  907|      3|    if (r == -1)
  ------------------
  |  Branch (907:9): [True: 0, False: 3]
  ------------------
  908|      0|        return -1;
  909|       |
  910|      3|    if (r != 1)
  ------------------
  |  Branch (910:9): [True: 2, False: 1]
  ------------------
  911|      2|        return 0;
  912|       |
  913|      1|    Py_CLEAR(self->decoder);
  ------------------
  |  |  484|      1|    do { \
  |  |  485|      1|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      1|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      1|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      1|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      1|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  914|      1|    self->decoder = _PyCodecInfo_GetIncrementalDecoder(codec_info, errors);
  915|      1|    if (self->decoder == NULL)
  ------------------
  |  Branch (915:9): [True: 0, False: 1]
  ------------------
  916|      0|        return -1;
  917|       |
  918|      1|    if (self->readuniversal) {
  ------------------
  |  Branch (918:9): [True: 0, False: 1]
  ------------------
  919|      0|        _PyIO_State *state = self->state;
  920|      0|        PyObject *incrementalDecoder = PyObject_CallFunctionObjArgs(
  921|      0|            (PyObject *)state->PyIncrementalNewlineDecoder_Type,
  922|      0|            self->decoder, self->readtranslate ? Py_True : Py_False, NULL);
  ------------------
  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                          self->decoder, self->readtranslate ? Py_True : Py_False, NULL);
  ------------------
  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (922:28): [True: 0, False: 0]
  ------------------
  923|      0|        if (incrementalDecoder == NULL)
  ------------------
  |  Branch (923:13): [True: 0, False: 0]
  ------------------
  924|      0|            return -1;
  925|      0|        Py_XSETREF(self->decoder, incrementalDecoder);
  ------------------
  |  |  374|      0|    do { \
  |  |  375|      0|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  376|      0|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  377|      0|        *_tmp_dst_ptr = (src); \
  |  |  378|      0|        Py_XDECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  379|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (379:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  926|      0|    }
  927|       |
  928|      1|    return 0;
  929|      1|}
textio.c:_textiowrapper_set_encoder:
  953|      3|{
  954|      3|    PyObject *res;
  955|      3|    int r;
  956|       |
  957|      3|    res = PyObject_CallMethodNoArgs(self->buffer, &_Py_ID(writable));
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  958|      3|    if (res == NULL)
  ------------------
  |  Branch (958:9): [True: 0, False: 3]
  ------------------
  959|      0|        return -1;
  960|       |
  961|      3|    r = PyObject_IsTrue(res);
  962|      3|    Py_DECREF(res);
  ------------------
  |  |  430|      3|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  963|      3|    if (r == -1)
  ------------------
  |  Branch (963:9): [True: 0, False: 3]
  ------------------
  964|      0|        return -1;
  965|       |
  966|      3|    if (r != 1)
  ------------------
  |  Branch (966:9): [True: 1, False: 2]
  ------------------
  967|      1|        return 0;
  968|       |
  969|      2|    Py_CLEAR(self->encoder);
  ------------------
  |  |  484|      2|    do { \
  |  |  485|      2|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      2|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      2|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      2|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      2|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 2]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
  970|      2|    self->encodefunc = NULL;
  971|      2|    self->encoder = _PyCodecInfo_GetIncrementalEncoder(codec_info, errors);
  972|      2|    if (self->encoder == NULL)
  ------------------
  |  Branch (972:9): [True: 0, False: 2]
  ------------------
  973|      0|        return -1;
  974|       |
  975|       |    /* Get the normalized named of the codec */
  976|      2|    if (PyObject_GetOptionalAttr(codec_info, &_Py_ID(name), &res) < 0) {
  ------------------
  |  |  917|      2|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      2|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      2|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (976:9): [True: 0, False: 2]
  ------------------
  977|      0|        return -1;
  978|      0|    }
  979|      2|    if (res != NULL && PyUnicode_Check(res)) {
  ------------------
  |  |  103|      2|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      2|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (979:9): [True: 2, False: 0]
  ------------------
  980|      2|        const encodefuncentry *e = encodefuncs;
  981|      6|        while (e->name != NULL) {
  ------------------
  |  Branch (981:16): [True: 6, False: 0]
  ------------------
  982|      6|            if (_PyUnicode_EqualToASCIIString(res, e->name)) {
  ------------------
  |  Branch (982:17): [True: 2, False: 4]
  ------------------
  983|      2|                self->encodefunc = e->encodefunc;
  984|      2|                break;
  985|      2|            }
  986|      4|            e++;
  987|      4|        }
  988|      2|    }
  989|      2|    Py_XDECREF(res);
  ------------------
  |  |  524|      2|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  990|       |
  991|      2|    return 0;
  992|      2|}
textio.c:_textiowrapper_fix_encoder_state:
  996|      3|{
  997|      3|    if (!self->seekable || !self->encoder) {
  ------------------
  |  Branch (997:9): [True: 0, False: 3]
  |  Branch (997:28): [True: 1, False: 2]
  ------------------
  998|      1|        return 0;
  999|      1|    }
 1000|       |
 1001|      2|    self->encoding_start_of_stream = 1;
 1002|       |
 1003|      2|    PyObject *cookieObj = PyObject_CallMethodNoArgs(
 1004|      2|        self->buffer, &_Py_ID(tell));
  ------------------
  |  |  917|      2|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      2|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      2|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1005|      2|    if (cookieObj == NULL) {
  ------------------
  |  Branch (1005:9): [True: 0, False: 2]
  ------------------
 1006|      0|        return -1;
 1007|      0|    }
 1008|       |
 1009|      2|    int cmp = PyObject_RichCompareBool(cookieObj, _PyLong_GetZero(), Py_EQ);
  ------------------
  |  |  654|      2|#define Py_EQ 2
  ------------------
 1010|      2|    Py_DECREF(cookieObj);
  ------------------
  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1011|      2|    if (cmp < 0) {
  ------------------
  |  Branch (1011:9): [True: 0, False: 2]
  ------------------
 1012|      0|        return -1;
 1013|      0|    }
 1014|       |
 1015|      2|    if (cmp == 0) {
  ------------------
  |  Branch (1015:9): [True: 0, False: 2]
  ------------------
 1016|      0|        self->encoding_start_of_stream = 0;
 1017|      0|        PyObject *res = PyObject_CallMethodOneArg(
 1018|      0|            self->encoder, &_Py_ID(setstate), _PyLong_GetZero());
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1019|      0|        if (res == NULL) {
  ------------------
  |  Branch (1019:13): [True: 0, False: 0]
  ------------------
 1020|      0|            return -1;
 1021|      0|        }
 1022|      0|        Py_DECREF(res);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1023|      0|    }
 1024|       |
 1025|      2|    return 0;
 1026|      2|}
textio.c:_io_TextIOWrapper___init___impl:
 1108|      3|{
 1109|      3|    PyObject *raw, *codec_info = NULL;
 1110|      3|    PyObject *res;
 1111|      3|    int r;
 1112|       |
 1113|      3|    self->ok = 0;
 1114|      3|    self->detached = 0;
 1115|       |
 1116|      3|    if (encoding == NULL) {
  ------------------
  |  Branch (1116:9): [True: 0, False: 3]
  ------------------
 1117|      0|        PyInterpreterState *interp = _PyInterpreterState_GET();
 1118|      0|        if (_PyInterpreterState_GetConfig(interp)->warn_default_encoding) {
  ------------------
  |  Branch (1118:13): [True: 0, False: 0]
  ------------------
 1119|      0|            if (PyErr_WarnEx(PyExc_EncodingWarning,
  ------------------
  |  Branch (1119:17): [True: 0, False: 0]
  ------------------
 1120|      0|                             "'encoding' argument not specified", 1)) {
 1121|      0|                return -1;
 1122|      0|            }
 1123|      0|        }
 1124|      0|    }
 1125|       |
 1126|      3|    if (errors == Py_None) {
  ------------------
  |  |  616|      3|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (1126:9): [True: 0, False: 3]
  ------------------
 1127|      0|        errors = &_Py_ID(strict);
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1128|      0|    }
 1129|      3|    else if (!PyUnicode_Check(errors)) {
  ------------------
  |  |  103|      3|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      3|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (1129:14): [True: 0, False: 3]
  ------------------
 1130|       |        // Check 'errors' argument here because Argument Clinic doesn't support
 1131|       |        // 'str(accept={str, NoneType})' converter.
 1132|      0|        PyErr_Format(
 1133|      0|            PyExc_TypeError,
 1134|      0|            "TextIOWrapper() argument 'errors' must be str or None, not %.50s",
 1135|      0|            Py_TYPE(errors)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1136|      0|        return -1;
 1137|      0|    }
 1138|      3|    else if (io_check_errors(errors)) {
  ------------------
  |  Branch (1138:14): [True: 0, False: 3]
  ------------------
 1139|      0|        return -1;
 1140|      0|    }
 1141|      3|    const char *errors_str = _PyUnicode_AsUTF8NoNUL(errors);
 1142|      3|    if (errors_str == NULL) {
  ------------------
  |  Branch (1142:9): [True: 0, False: 3]
  ------------------
 1143|      0|        return -1;
 1144|      0|    }
 1145|       |
 1146|      3|    if (validate_newline(newline) < 0) {
  ------------------
  |  Branch (1146:9): [True: 0, False: 3]
  ------------------
 1147|      0|        return -1;
 1148|      0|    }
 1149|       |
 1150|      3|    Py_CLEAR(self->buffer);
  ------------------
  |  |  484|      3|    do { \
  |  |  485|      3|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      3|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      3|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 3]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      3|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 3]
  |  |  ------------------
  ------------------
 1151|      3|    Py_CLEAR(self->encoding);
  ------------------
  |  |  484|      3|    do { \
  |  |  485|      3|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      3|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      3|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 3]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      3|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 3]
  |  |  ------------------
  ------------------
 1152|      3|    Py_CLEAR(self->encoder);
  ------------------
  |  |  484|      3|    do { \
  |  |  485|      3|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      3|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      3|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 3]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      3|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 3]
  |  |  ------------------
  ------------------
 1153|      3|    Py_CLEAR(self->decoder);
  ------------------
  |  |  484|      3|    do { \
  |  |  485|      3|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      3|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      3|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 3]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      3|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 3]
  |  |  ------------------
  ------------------
 1154|      3|    Py_CLEAR(self->readnl);
  ------------------
  |  |  484|      3|    do { \
  |  |  485|      3|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      3|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      3|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 3]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      3|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 3]
  |  |  ------------------
  ------------------
 1155|      3|    Py_CLEAR(self->decoded_chars);
  ------------------
  |  |  484|      3|    do { \
  |  |  485|      3|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      3|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      3|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 3]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      3|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 3]
  |  |  ------------------
  ------------------
 1156|      3|    Py_CLEAR(self->pending_bytes);
  ------------------
  |  |  484|      3|    do { \
  |  |  485|      3|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      3|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      3|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 3]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      3|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 3]
  |  |  ------------------
  ------------------
 1157|      3|    Py_CLEAR(self->snapshot);
  ------------------
  |  |  484|      3|    do { \
  |  |  485|      3|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      3|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      3|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 3]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      3|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 3]
  |  |  ------------------
  ------------------
 1158|      3|    Py_CLEAR(self->errors);
  ------------------
  |  |  484|      3|    do { \
  |  |  485|      3|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      3|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      3|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 3]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      3|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 3]
  |  |  ------------------
  ------------------
 1159|      3|    Py_CLEAR(self->raw);
  ------------------
  |  |  484|      3|    do { \
  |  |  485|      3|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      3|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      3|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 3]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      3|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 3]
  |  |  ------------------
  ------------------
 1160|      3|    self->decoded_chars_used = 0;
 1161|      3|    self->pending_bytes_count = 0;
 1162|      3|    self->encodefunc = NULL;
 1163|      3|    self->b2cratio = 0.0;
 1164|       |
 1165|      3|    if (encoding == NULL && _PyRuntime.preconfig.utf8_mode) {
  ------------------
  |  Branch (1165:9): [True: 0, False: 3]
  |  Branch (1165:29): [True: 0, False: 0]
  ------------------
 1166|      0|        _Py_DECLARE_STR(utf_8, "utf-8");
 1167|      0|        self->encoding = &_Py_STR(utf_8);
  ------------------
  |  |  919|      0|     (_Py_SINGLETON(strings.literals._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1168|      0|    }
 1169|      3|    else if (encoding == NULL || (strcmp(encoding, "locale") == 0)) {
  ------------------
  |  Branch (1169:14): [True: 0, False: 3]
  |  Branch (1169:34): [True: 0, False: 3]
  ------------------
 1170|      0|        self->encoding = _Py_GetLocaleEncodingObject();
 1171|      0|        if (self->encoding == NULL) {
  ------------------
  |  Branch (1171:13): [True: 0, False: 0]
  ------------------
 1172|      0|            goto error;
 1173|      0|        }
 1174|      0|        assert(PyUnicode_Check(self->encoding));
  ------------------
  |  Branch (1174:9): [True: 0, False: 0]
  ------------------
 1175|      0|    }
 1176|       |
 1177|      3|    if (self->encoding != NULL) {
  ------------------
  |  Branch (1177:9): [True: 0, False: 3]
  ------------------
 1178|      0|        encoding = PyUnicode_AsUTF8(self->encoding);
 1179|      0|        if (encoding == NULL)
  ------------------
  |  Branch (1179:13): [True: 0, False: 0]
  ------------------
 1180|      0|            goto error;
 1181|      0|    }
 1182|      3|    else if (encoding != NULL) {
  ------------------
  |  Branch (1182:14): [True: 3, False: 0]
  ------------------
 1183|      3|        self->encoding = PyUnicode_FromString(encoding);
 1184|      3|        if (self->encoding == NULL)
  ------------------
  |  Branch (1184:13): [True: 0, False: 3]
  ------------------
 1185|      0|            goto error;
 1186|      3|    }
 1187|      0|    else {
 1188|      0|        PyErr_SetString(PyExc_OSError,
 1189|      0|                        "could not determine default encoding");
 1190|      0|        goto error;
 1191|      0|    }
 1192|       |
 1193|       |    /* Check we have been asked for a real text encoding */
 1194|      3|    codec_info = _PyCodec_LookupTextEncoding(encoding, NULL);
 1195|      3|    if (codec_info == NULL) {
  ------------------
  |  Branch (1195:9): [True: 0, False: 3]
  ------------------
 1196|      0|        Py_CLEAR(self->encoding);
  ------------------
  |  |  484|      0|    do { \
  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1197|      0|        goto error;
 1198|      0|    }
 1199|       |
 1200|       |    /* XXX: Failures beyond this point have the potential to leak elements
 1201|       |     * of the partially constructed object (like self->encoding)
 1202|       |     */
 1203|       |
 1204|      3|    self->errors = Py_NewRef(errors);
  ------------------
  |  |  550|      3|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1205|      3|    self->chunk_size = 8192;
 1206|      3|    self->line_buffering = line_buffering;
 1207|      3|    self->write_through = write_through;
 1208|      3|    if (set_newline(self, newline) < 0) {
  ------------------
  |  Branch (1208:9): [True: 0, False: 3]
  ------------------
 1209|      0|        goto error;
 1210|      0|    }
 1211|       |
 1212|      3|    self->buffer = Py_NewRef(buffer);
  ------------------
  |  |  550|      3|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1213|       |
 1214|       |    /* Build the decoder object */
 1215|      3|    _PyIO_State *state = find_io_state_by_def(Py_TYPE(self));
  ------------------
  |  |  213|      3|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1216|      3|    self->state = state;
 1217|      3|    if (_textiowrapper_set_decoder(self, codec_info, errors_str) != 0)
  ------------------
  |  Branch (1217:9): [True: 0, False: 3]
  ------------------
 1218|      0|        goto error;
 1219|       |
 1220|       |    /* Build the encoder object */
 1221|      3|    if (_textiowrapper_set_encoder(self, codec_info, errors_str) != 0)
  ------------------
  |  Branch (1221:9): [True: 0, False: 3]
  ------------------
 1222|      0|        goto error;
 1223|       |
 1224|       |    /* Finished sorting out the codec details */
 1225|      3|    Py_CLEAR(codec_info);
  ------------------
  |  |  484|      3|    do { \
  |  |  485|      3|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      3|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      3|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 3, False: 0]
  |  |  ------------------
  |  |  488|      3|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      3|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      3|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      3|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      3|        } \
  |  |  491|      3|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 3]
  |  |  ------------------
  ------------------
 1226|       |
 1227|      3|    if (Py_IS_TYPE(buffer, state->PyBufferedReader_Type) ||
  ------------------
  |  |  215|      6|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 1, False: 2]
  |  |  ------------------
  ------------------
 1228|      2|        Py_IS_TYPE(buffer, state->PyBufferedWriter_Type) ||
  ------------------
  |  |  215|      5|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 1229|      0|        Py_IS_TYPE(buffer, state->PyBufferedRandom_Type))
  ------------------
  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1230|      3|    {
 1231|      3|        if (PyObject_GetOptionalAttr(buffer, &_Py_ID(raw), &raw) < 0)
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1231:13): [True: 0, False: 3]
  ------------------
 1232|      0|            goto error;
 1233|       |        /* Cache the raw FileIO object to speed up 'closed' checks */
 1234|      3|        if (raw != NULL) {
  ------------------
  |  Branch (1234:13): [True: 3, False: 0]
  ------------------
 1235|      3|            if (Py_IS_TYPE(raw, state->PyFileIO_Type))
  ------------------
  |  |  215|      3|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 3, False: 0]
  |  |  ------------------
  ------------------
 1236|      3|                self->raw = raw;
 1237|      0|            else
 1238|      0|                Py_DECREF(raw);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1239|      3|        }
 1240|      3|    }
 1241|       |
 1242|      3|    res = PyObject_CallMethodNoArgs(buffer, &_Py_ID(seekable));
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1243|      3|    if (res == NULL)
  ------------------
  |  Branch (1243:9): [True: 0, False: 3]
  ------------------
 1244|      0|        goto error;
 1245|      3|    r = PyObject_IsTrue(res);
 1246|      3|    Py_DECREF(res);
  ------------------
  |  |  430|      3|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1247|      3|    if (r < 0)
  ------------------
  |  Branch (1247:9): [True: 0, False: 3]
  ------------------
 1248|      0|        goto error;
 1249|      3|    self->seekable = self->telling = r;
 1250|       |
 1251|      3|    r = PyObject_HasAttrWithError(buffer, &_Py_ID(read1));
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1252|      3|    if (r < 0) {
  ------------------
  |  Branch (1252:9): [True: 0, False: 3]
  ------------------
 1253|      0|        goto error;
 1254|      0|    }
 1255|      3|    self->has_read1 = r;
 1256|       |
 1257|      3|    self->encoding_start_of_stream = 0;
 1258|      3|    if (_textiowrapper_fix_encoder_state(self) < 0) {
  ------------------
  |  Branch (1258:9): [True: 0, False: 3]
  ------------------
 1259|      0|        goto error;
 1260|      0|    }
 1261|       |
 1262|      3|    self->ok = 1;
 1263|      3|    return 0;
 1264|       |
 1265|      0|  error:
 1266|      0|    Py_XDECREF(codec_info);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1267|      0|    return -1;
 1268|      3|}
textio.c:io_check_errors:
 1030|      3|{
 1031|      3|    assert(errors != NULL && errors != Py_None);
  ------------------
  |  Branch (1031:5): [True: 3, False: 0]
  |  Branch (1031:5): [True: 3, False: 0]
  ------------------
 1032|       |
 1033|      3|    PyInterpreterState *interp = _PyInterpreterState_GET();
 1034|      3|#ifndef Py_DEBUG
 1035|       |    /* In release mode, only check in development mode (-X dev) */
 1036|      3|    if (!_PyInterpreterState_GetConfig(interp)->dev_mode) {
  ------------------
  |  Branch (1036:9): [True: 3, False: 0]
  ------------------
 1037|      3|        return 0;
 1038|      3|    }
 1039|       |#else
 1040|       |    /* Always check in debug mode */
 1041|       |#endif
 1042|       |
 1043|       |    /* Avoid calling PyCodec_LookupError() before the codec registry is ready:
 1044|       |       before_PyUnicode_InitEncodings() is called. */
 1045|      0|    if (!interp->unicode.fs_codec.encoding) {
  ------------------
  |  Branch (1045:9): [True: 0, False: 0]
  ------------------
 1046|      0|        return 0;
 1047|      0|    }
 1048|       |
 1049|      0|    const char *name = _PyUnicode_AsUTF8NoNUL(errors);
 1050|      0|    if (name == NULL) {
  ------------------
  |  Branch (1050:9): [True: 0, False: 0]
  ------------------
 1051|      0|        return -1;
 1052|      0|    }
 1053|      0|    PyObject *handler = PyCodec_LookupError(name);
 1054|      0|    if (handler != NULL) {
  ------------------
  |  Branch (1054:9): [True: 0, False: 0]
  ------------------
 1055|      0|        Py_DECREF(handler);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1056|      0|        return 0;
 1057|      0|    }
 1058|      0|    return -1;
 1059|      0|}

PyInit__stat:
  711|      1|{
  712|      1|    return PyModuleDef_Init(&statmodule);
  713|      1|}
_stat.c:stat_S_ISDIR:
  334|      1|stat_S_ISFUNC(S_ISDIR,
  ------------------
  |  |  326|      1|    {                                                          \
  |  |  327|      1|       mode_t mode = _PyLong_AsMode_t(omode);                   \
  |  |  328|      1|       if ((mode == (mode_t)-1) && PyErr_Occurred())           \
  |  |  ------------------
  |  |  |  Branch (328:12): [True: 0, False: 1]
  |  |  |  Branch (328:36): [True: 0, False: 0]
  |  |  ------------------
  |  |  329|      1|           return NULL;                                        \
  |  |  330|      1|       return PyBool_FromLong(isfunc(mode));                   \
  |  |  ------------------
  |  |  |  |  334|      1|stat_S_ISFUNC(S_ISDIR,
  |  |  ------------------
  |  |  331|      1|    }                                                          \
  ------------------
_stat.c:_PyLong_AsMode_t:
  294|      1|{
  295|      1|    unsigned long value;
  296|      1|    mode_t mode;
  297|       |
  298|      1|    if (PyLong_Check(op)) {
  ------------------
  |  |   13|      1|        PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      1|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  299|      1|        value = PyLong_AsUnsignedLong(op);
  300|      1|    }
  301|      0|    else {
  302|      0|        op = PyNumber_Index(op);
  303|      0|        if (op == NULL) {
  ------------------
  |  Branch (303:13): [True: 0, False: 0]
  ------------------
  304|      0|            return (mode_t)-1;
  305|      0|        }
  306|      0|        value = PyLong_AsUnsignedLong(op);
  307|      0|        Py_DECREF(op);
  ------------------
  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  308|      0|    }
  309|       |
  310|      1|    if ((value == (unsigned long)-1) && PyErr_Occurred()) {
  ------------------
  |  Branch (310:9): [True: 0, False: 1]
  |  Branch (310:41): [True: 0, False: 0]
  ------------------
  311|      0|        return (mode_t)-1;
  312|      0|    }
  313|       |
  314|      1|    mode = (mode_t)value;
  315|      1|    if ((unsigned long)mode != value) {
  ------------------
  |  Branch (315:9): [True: 0, False: 1]
  ------------------
  316|      0|        PyErr_SetString(PyExc_OverflowError, "mode out of range");
  317|      0|        return (mode_t)-1;
  318|      0|    }
  319|      1|    return mode;
  320|      1|}
_stat.c:stat_exec:
  565|      1|{
  566|      1|#define ADD_INT_MACRO(module, macro)                                  \
  567|      1|    do {                                                              \
  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  569|      1|            return -1;                                                \
  570|      1|        }                                                             \
  571|      1|    } while (0)
  572|       |
  573|      1|    ADD_INT_MACRO(module, S_IFDIR);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  574|      1|    ADD_INT_MACRO(module, S_IFCHR);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  575|      1|    ADD_INT_MACRO(module, S_IFBLK);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  576|      1|    ADD_INT_MACRO(module, S_IFREG);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  577|      1|    ADD_INT_MACRO(module, S_IFIFO);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  578|      1|    ADD_INT_MACRO(module, S_IFLNK);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  579|      1|    ADD_INT_MACRO(module, S_IFSOCK);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  580|      1|    ADD_INT_MACRO(module, S_IFDOOR);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  581|      1|    ADD_INT_MACRO(module, S_IFPORT);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  582|      1|    ADD_INT_MACRO(module, S_IFWHT);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  583|       |
  584|      1|    ADD_INT_MACRO(module, S_ISUID);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  585|      1|    ADD_INT_MACRO(module, S_ISGID);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  586|      1|    ADD_INT_MACRO(module, S_ISVTX);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  587|      1|    ADD_INT_MACRO(module, S_ENFMT);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  588|       |
  589|      1|    ADD_INT_MACRO(module, S_IREAD);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  590|      1|    ADD_INT_MACRO(module, S_IWRITE);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  591|      1|    ADD_INT_MACRO(module, S_IEXEC);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  592|       |
  593|      1|    ADD_INT_MACRO(module, S_IRWXU);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  594|      1|    ADD_INT_MACRO(module, S_IRUSR);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  595|      1|    ADD_INT_MACRO(module, S_IWUSR);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  596|      1|    ADD_INT_MACRO(module, S_IXUSR);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  597|       |
  598|      1|    ADD_INT_MACRO(module, S_IRWXG);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  599|      1|    ADD_INT_MACRO(module, S_IRGRP);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  600|      1|    ADD_INT_MACRO(module, S_IWGRP);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  601|      1|    ADD_INT_MACRO(module, S_IXGRP);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  602|       |
  603|      1|    ADD_INT_MACRO(module, S_IRWXO);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  604|      1|    ADD_INT_MACRO(module, S_IROTH);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  605|      1|    ADD_INT_MACRO(module, S_IWOTH);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  606|      1|    ADD_INT_MACRO(module, S_IXOTH);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  607|       |
  608|      1|    ADD_INT_MACRO(module, UF_SETTABLE);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  609|      1|    ADD_INT_MACRO(module, UF_NODUMP);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  610|      1|    ADD_INT_MACRO(module, UF_IMMUTABLE);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  611|      1|    ADD_INT_MACRO(module, UF_APPEND);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  612|      1|    ADD_INT_MACRO(module, UF_OPAQUE);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  613|      1|    ADD_INT_MACRO(module, UF_NOUNLINK);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  614|      1|    ADD_INT_MACRO(module, UF_COMPRESSED);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  615|      1|    ADD_INT_MACRO(module, UF_TRACKED);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  616|      1|    ADD_INT_MACRO(module, UF_DATAVAULT);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  617|      1|    ADD_INT_MACRO(module, UF_HIDDEN);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  618|      1|    ADD_INT_MACRO(module, SF_SETTABLE);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  619|      1|    ADD_INT_MACRO(module, SF_ARCHIVED);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  620|      1|    ADD_INT_MACRO(module, SF_IMMUTABLE);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  621|      1|    ADD_INT_MACRO(module, SF_APPEND);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  622|      1|    ADD_INT_MACRO(module, SF_NOUNLINK);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  623|      1|    ADD_INT_MACRO(module, SF_SNAPSHOT);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  624|      1|    ADD_INT_MACRO(module, SF_FIRMLINK);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  625|      1|    ADD_INT_MACRO(module, SF_DATALESS);
  ------------------
  |  |  567|      1|    do {                                                              \
  |  |  568|      1|        if (PyModule_AddIntConstant(module, #macro, macro) < 0) {     \
  |  |  ------------------
  |  |  |  Branch (568:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  569|      0|            return -1;                                                \
  |  |  570|      0|        }                                                             \
  |  |  571|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (571:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  626|       |
  627|       |#ifdef SF_SUPPORTED
  628|       |    ADD_INT_MACRO(module, SF_SUPPORTED);
  629|       |#endif
  630|       |#ifdef SF_SYNTHETIC
  631|       |    ADD_INT_MACRO(module, SF_SYNTHETIC);
  632|       |#endif
  633|       |
  634|       |
  635|      1|    const char* st_constants[] = {
  636|      1|        "ST_MODE",
  637|      1|        "ST_INO",
  638|      1|        "ST_DEV",
  639|      1|        "ST_NLINK",
  640|      1|        "ST_UID",
  641|      1|        "ST_GID",
  642|      1|        "ST_SIZE",
  643|      1|        "ST_ATIME",
  644|      1|        "ST_MTIME",
  645|      1|        "ST_CTIME"
  646|      1|    };
  647|       |
  648|     11|    for (int i = 0; i < (int)Py_ARRAY_LENGTH(st_constants); i++) {
  ------------------
  |  |  196|     11|    (sizeof(array) / sizeof((array)[0]))
  ------------------
  |  Branch (648:21): [True: 10, False: 1]
  ------------------
  649|     10|        if (PyModule_AddIntConstant(module, st_constants[i], i) < 0) {
  ------------------
  |  Branch (649:13): [True: 0, False: 10]
  ------------------
  650|      0|            return -1;
  651|      0|        }
  652|     10|    }
  653|       |
  654|       |#ifdef MS_WINDOWS
  655|       |    ADD_INT_MACRO(module, FILE_ATTRIBUTE_ARCHIVE);
  656|       |    ADD_INT_MACRO(module, FILE_ATTRIBUTE_COMPRESSED);
  657|       |    ADD_INT_MACRO(module, FILE_ATTRIBUTE_DEVICE);
  658|       |    ADD_INT_MACRO(module, FILE_ATTRIBUTE_DIRECTORY);
  659|       |    ADD_INT_MACRO(module, FILE_ATTRIBUTE_ENCRYPTED);
  660|       |    ADD_INT_MACRO(module, FILE_ATTRIBUTE_HIDDEN);
  661|       |    ADD_INT_MACRO(module, FILE_ATTRIBUTE_INTEGRITY_STREAM);
  662|       |    ADD_INT_MACRO(module, FILE_ATTRIBUTE_NORMAL);
  663|       |    ADD_INT_MACRO(module, FILE_ATTRIBUTE_NOT_CONTENT_INDEXED);
  664|       |    ADD_INT_MACRO(module, FILE_ATTRIBUTE_NO_SCRUB_DATA);
  665|       |    ADD_INT_MACRO(module, FILE_ATTRIBUTE_OFFLINE);
  666|       |    ADD_INT_MACRO(module, FILE_ATTRIBUTE_READONLY);
  667|       |    ADD_INT_MACRO(module, FILE_ATTRIBUTE_REPARSE_POINT);
  668|       |    ADD_INT_MACRO(module, FILE_ATTRIBUTE_SPARSE_FILE);
  669|       |    ADD_INT_MACRO(module, FILE_ATTRIBUTE_SYSTEM);
  670|       |    ADD_INT_MACRO(module, FILE_ATTRIBUTE_TEMPORARY);
  671|       |    ADD_INT_MACRO(module, FILE_ATTRIBUTE_VIRTUAL);
  672|       |
  673|       |    if (PyModule_Add(module, "IO_REPARSE_TAG_SYMLINK",
  674|       |            PyLong_FromUnsignedLong(IO_REPARSE_TAG_SYMLINK)) < 0) {
  675|       |        return -1;
  676|       |    }
  677|       |    if (PyModule_Add(module, "IO_REPARSE_TAG_MOUNT_POINT",
  678|       |            PyLong_FromUnsignedLong(IO_REPARSE_TAG_MOUNT_POINT)) < 0) {
  679|       |        return -1;
  680|       |    }
  681|       |    if (PyModule_Add(module, "IO_REPARSE_TAG_APPEXECLINK",
  682|       |            PyLong_FromUnsignedLong(IO_REPARSE_TAG_APPEXECLINK)) < 0) {
  683|       |        return -1;
  684|       |    }
  685|       |#endif
  686|       |
  687|      1|    return 0;
  688|      1|}

PyInit__thread:
 2880|      1|{
 2881|      1|    return PyModuleDef_Init(&thread_module);
 2882|      1|}
_threadmodule.c:get_thread_state:
   58|     51|{
   59|     51|    void *state = _PyModule_GetState(module);
   60|     51|    assert(state != NULL);
  ------------------
  |  Branch (60:5): [True: 51, False: 0]
  ------------------
   61|     51|    return (thread_module_state *)state;
   62|     51|}
_threadmodule.c:thread_PyThread_allocate_lock:
 2115|     24|{
 2116|     24|    thread_module_state *state = get_thread_state(module);
 2117|     24|    return lock_new_impl(state->lock_type);
 2118|     24|}
_threadmodule.c:lock_new_impl:
  994|     24|{
  995|     24|    lockobject *self = (lockobject *)type->tp_alloc(type, 0);
  996|     24|    if (self == NULL) {
  ------------------
  |  Branch (996:9): [True: 0, False: 24]
  ------------------
  997|      0|        return NULL;
  998|      0|    }
  999|     24|    self->lock = (PyMutex){0};
 1000|     24|    return (PyObject *)self;
 1001|     24|}
_threadmodule.c:thread_get_ident:
 2135|     60|{
 2136|     60|    PyThread_ident_t ident = PyThread_get_thread_ident_ex();
 2137|     60|    if (ident == PYTHREAD_INVALID_THREAD_ID) {
  ------------------
  |  |   13|     60|#define PYTHREAD_INVALID_THREAD_ID ((unsigned long)-1)
  ------------------
  |  Branch (2137:9): [True: 0, False: 60]
  ------------------
 2138|      0|        PyErr_SetString(ThreadError, "no current thread ident");
  ------------------
  |  |   23|      0|#define ThreadError PyExc_RuntimeError
  ------------------
 2139|      0|        return NULL;
 2140|      0|    }
 2141|     60|    return PyLong_FromUnsignedLongLong(ident);
 2142|     60|}
_threadmodule.c:thread_module_exec:
 2699|      1|{
 2700|      1|    thread_module_state *state = get_thread_state(module);
 2701|      1|    PyObject *d = PyModule_GetDict(module);
 2702|       |
 2703|       |    // Initialize the C thread library
 2704|      1|    PyThread_init_thread();
 2705|       |
 2706|       |    // _ThreadHandle
 2707|      1|    state->thread_handle_type = (PyTypeObject *)PyType_FromSpec(&ThreadHandle_Type_spec);
 2708|      1|    if (state->thread_handle_type == NULL) {
  ------------------
  |  Branch (2708:9): [True: 0, False: 1]
  ------------------
 2709|      0|        return -1;
 2710|      0|    }
 2711|      1|    if (PyDict_SetItemString(d, "_ThreadHandle", (PyObject *)state->thread_handle_type) < 0) {
  ------------------
  |  Branch (2711:9): [True: 0, False: 1]
  ------------------
 2712|      0|        return -1;
 2713|      0|    }
 2714|       |
 2715|       |    // Lock
 2716|      1|    state->lock_type = (PyTypeObject *)PyType_FromModuleAndSpec(module, &lock_type_spec, NULL);
 2717|      1|    if (state->lock_type == NULL) {
  ------------------
  |  Branch (2717:9): [True: 0, False: 1]
  ------------------
 2718|      0|        return -1;
 2719|      0|    }
 2720|      1|    if (PyModule_AddType(module, state->lock_type) < 0) {
  ------------------
  |  Branch (2720:9): [True: 0, False: 1]
  ------------------
 2721|      0|        return -1;
 2722|      0|    }
 2723|       |    // Old alias: lock -> LockType
 2724|      1|    if (PyDict_SetItemString(d, "LockType", (PyObject *)state->lock_type) < 0) {
  ------------------
  |  Branch (2724:9): [True: 0, False: 1]
  ------------------
 2725|      0|        return -1;
 2726|      0|    }
 2727|       |
 2728|       |    // RLock
 2729|      1|    state->rlock_type = (PyTypeObject *)PyType_FromModuleAndSpec(module, &rlock_type_spec, NULL);
 2730|      1|    if (state->rlock_type == NULL) {
  ------------------
  |  Branch (2730:9): [True: 0, False: 1]
  ------------------
 2731|      0|        return -1;
 2732|      0|    }
 2733|      1|    if (PyModule_AddType(module, state->rlock_type) < 0) {
  ------------------
  |  Branch (2733:9): [True: 0, False: 1]
  ------------------
 2734|      0|        return -1;
 2735|      0|    }
 2736|       |
 2737|       |    // Local dummy
 2738|      1|    state->local_dummy_type = (PyTypeObject *)PyType_FromSpec(&local_dummy_type_spec);
 2739|      1|    if (state->local_dummy_type == NULL) {
  ------------------
  |  Branch (2739:9): [True: 0, False: 1]
  ------------------
 2740|      0|        return -1;
 2741|      0|    }
 2742|       |
 2743|       |    // Local
 2744|      1|    state->local_type = (PyTypeObject *)PyType_FromModuleAndSpec(module, &local_type_spec, NULL);
 2745|      1|    if (state->local_type == NULL) {
  ------------------
  |  Branch (2745:9): [True: 0, False: 1]
  ------------------
 2746|      0|        return -1;
 2747|      0|    }
 2748|      1|    if (PyModule_AddType(module, state->local_type) < 0) {
  ------------------
  |  Branch (2748:9): [True: 0, False: 1]
  ------------------
 2749|      0|        return -1;
 2750|      0|    }
 2751|       |
 2752|       |    // Add module attributes
 2753|      1|    if (PyDict_SetItemString(d, "error", ThreadError) < 0) {
  ------------------
  |  |   23|      1|#define ThreadError PyExc_RuntimeError
  ------------------
  |  Branch (2753:9): [True: 0, False: 1]
  ------------------
 2754|      0|        return -1;
 2755|      0|    }
 2756|       |
 2757|       |    // _ExceptHookArgs type
 2758|      1|    state->excepthook_type = PyStructSequence_NewType(&ExceptHookArgs_desc);
 2759|      1|    if (state->excepthook_type == NULL) {
  ------------------
  |  Branch (2759:9): [True: 0, False: 1]
  ------------------
 2760|      0|        return -1;
 2761|      0|    }
 2762|      1|    if (PyModule_AddType(module, state->excepthook_type) < 0) {
  ------------------
  |  Branch (2762:9): [True: 0, False: 1]
  ------------------
 2763|      0|        return -1;
 2764|      0|    }
 2765|       |
 2766|       |    // TIMEOUT_MAX
 2767|      1|    double timeout_max = (double)PY_TIMEOUT_MAX * 1e-6;
 2768|      1|    double time_max = PyTime_AsSecondsDouble(PyTime_MAX);
  ------------------
  |  |   12|      1|#define PyTime_MAX INT64_MAX
  ------------------
 2769|      1|    timeout_max = Py_MIN(timeout_max, time_max);
  ------------------
  |  |  112|      1|#define Py_MIN(x, y) (((x) > (y)) ? (y) : (x))
  |  |  ------------------
  |  |  |  Branch (112:23): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2770|       |    // Round towards minus infinity
 2771|      1|    timeout_max = floor(timeout_max);
 2772|       |
 2773|      1|    if (PyModule_Add(module, "TIMEOUT_MAX",
  ------------------
  |  Branch (2773:9): [True: 0, False: 1]
  ------------------
 2774|      1|                        PyFloat_FromDouble(timeout_max)) < 0) {
 2775|      0|        return -1;
 2776|      0|    }
 2777|       |
 2778|      1|    llist_init(&state->shutdown_handles);
 2779|       |
 2780|      1|#ifdef _PYTHREAD_NAME_MAXLEN
 2781|      1|    if (PyModule_AddIntConstant(module, "_NAME_MAXLEN",
  ------------------
  |  Branch (2781:9): [True: 0, False: 1]
  ------------------
 2782|      1|                                _PYTHREAD_NAME_MAXLEN) < 0) {
  ------------------
  |  | 2049|      1|#define _PYTHREAD_NAME_MAXLEN 15
  ------------------
 2783|      0|        return -1;
 2784|      0|    }
 2785|      1|#endif
 2786|       |
 2787|       |#ifdef MS_WINDOWS
 2788|       |    HMODULE kernelbase = GetModuleHandleW(L"kernelbase.dll");
 2789|       |    if (kernelbase != NULL) {
 2790|       |        if (pGetThreadDescription == NULL) {
 2791|       |            pGetThreadDescription = (PF_GET_THREAD_DESCRIPTION)GetProcAddress(
 2792|       |                                        kernelbase, "GetThreadDescription");
 2793|       |        }
 2794|       |        if (pSetThreadDescription == NULL) {
 2795|       |            pSetThreadDescription = (PF_SET_THREAD_DESCRIPTION)GetProcAddress(
 2796|       |                                        kernelbase, "SetThreadDescription");
 2797|       |        }
 2798|       |    }
 2799|       |
 2800|       |    if (pGetThreadDescription == NULL) {
 2801|       |        if (PyObject_DelAttrString(module, "_get_name") < 0) {
 2802|       |            return -1;
 2803|       |        }
 2804|       |    }
 2805|       |    if (pSetThreadDescription == NULL) {
 2806|       |        if (PyObject_DelAttrString(module, "set_name") < 0) {
 2807|       |            return -1;
 2808|       |        }
 2809|       |    }
 2810|       |#endif
 2811|       |
 2812|      1|    return 0;
 2813|      1|}
_threadmodule.c:lock_dealloc:
  770|     24|{
  771|     24|    PyObject_GC_UnTrack(self);
  772|     24|    PyObject_ClearWeakRefs(self);
  773|     24|    PyTypeObject *tp = Py_TYPE(self);
  ------------------
  |  |  213|     24|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     24|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     24|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  774|     24|    tp->tp_free(self);
  775|     24|    Py_DECREF(tp);
  ------------------
  |  |  430|     24|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     24|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     24|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  776|     24|}
_threadmodule.c:lock_acquire_parse_timeout:
  781|     60|{
  782|       |    // XXX Use PyThread_ParseTimeoutArg().
  783|       |
  784|     60|    const PyTime_t unset_timeout = _PyTime_FromSeconds(-1);
  785|     60|    *timeout = unset_timeout;
  786|       |
  787|     60|    if (timeout_obj
  ------------------
  |  Branch (787:9): [True: 0, False: 60]
  ------------------
  788|      0|        && _PyTime_FromSecondsObject(timeout,
  ------------------
  |  Branch (788:12): [True: 0, False: 0]
  ------------------
  789|      0|                                     timeout_obj, _PyTime_ROUND_TIMEOUT) < 0)
  790|      0|        return -1;
  791|       |
  792|     60|    if (!blocking && *timeout != unset_timeout ) {
  ------------------
  |  Branch (792:9): [True: 0, False: 60]
  |  Branch (792:22): [True: 0, False: 0]
  ------------------
  793|      0|        PyErr_SetString(PyExc_ValueError,
  794|      0|                        "can't specify a timeout for a non-blocking call");
  795|      0|        return -1;
  796|      0|    }
  797|     60|    if (*timeout < 0 && *timeout != unset_timeout) {
  ------------------
  |  Branch (797:9): [True: 60, False: 0]
  |  Branch (797:25): [True: 0, False: 60]
  ------------------
  798|      0|        PyErr_SetString(PyExc_ValueError,
  799|      0|                        "timeout value must be a non-negative number");
  800|      0|        return -1;
  801|      0|    }
  802|     60|    if (!blocking)
  ------------------
  |  Branch (802:9): [True: 0, False: 60]
  ------------------
  803|      0|        *timeout = 0;
  804|     60|    else if (*timeout != unset_timeout) {
  ------------------
  |  Branch (804:14): [True: 0, False: 60]
  ------------------
  805|      0|        PyTime_t microseconds;
  806|       |
  807|      0|        microseconds = _PyTime_AsMicroseconds(*timeout, _PyTime_ROUND_TIMEOUT);
  808|      0|        if (microseconds > PY_TIMEOUT_MAX) {
  ------------------
  |  Branch (808:13): [True: 0, False: 0]
  ------------------
  809|      0|            PyErr_SetString(PyExc_OverflowError,
  810|      0|                            "timeout value is too large");
  811|      0|            return -1;
  812|      0|        }
  813|      0|    }
  814|     60|    return 0;
  815|     60|}
_threadmodule.c:get_thread_state_by_cls:
   66|     24|{
   67|       |    // Use PyType_GetModuleByDef() to handle (R)Lock subclasses.
   68|     24|    PyObject *module = PyType_GetModuleByDef(cls, &thread_module);
   69|     24|    if (module == NULL) {
  ------------------
  |  Branch (69:9): [True: 0, False: 24]
  ------------------
   70|      0|        return NULL;
   71|      0|    }
   72|     24|    return get_thread_state(module);
   73|     24|}
_threadmodule.c:rlock_dealloc:
 1062|     24|{
 1063|     24|    PyObject_GC_UnTrack(self);
 1064|     24|    PyObject_ClearWeakRefs(self);
 1065|     24|    PyTypeObject *tp = Py_TYPE(self);
  ------------------
  |  |  213|     24|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     24|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     24|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1066|     24|    tp->tp_free(self);
 1067|     24|    Py_DECREF(tp);
  ------------------
  |  |  430|     24|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     24|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     24|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1068|     24|}
_threadmodule.c:_thread_RLock_acquire_impl:
 1095|     60|{
 1096|     60|    PyTime_t timeout;
 1097|       |
 1098|     60|    if (lock_acquire_parse_timeout(timeoutobj, blocking, &timeout) < 0) {
  ------------------
  |  Branch (1098:9): [True: 0, False: 60]
  ------------------
 1099|      0|        return NULL;
 1100|      0|    }
 1101|       |
 1102|     60|    PyLockStatus r = _PyRecursiveMutex_LockTimed(
 1103|     60|        &self->lock, timeout,
 1104|     60|        _PY_LOCK_PYTHONLOCK | _PY_LOCK_HANDLE_SIGNALS | _PY_LOCK_DETACH);
 1105|     60|    if (r == PY_LOCK_INTR) {
  ------------------
  |  Branch (1105:9): [True: 0, False: 60]
  ------------------
 1106|      0|        assert(PyErr_Occurred());
  ------------------
  |  Branch (1106:9): [True: 0, False: 0]
  ------------------
 1107|      0|        return NULL;
 1108|      0|    }
 1109|     60|    if (r == PY_LOCK_FAILURE && PyErr_Occurred()) {
  ------------------
  |  Branch (1109:9): [True: 0, False: 60]
  |  Branch (1109:33): [True: 0, False: 0]
  ------------------
 1110|      0|        return NULL;
 1111|      0|    }
 1112|       |
 1113|     60|    return PyBool_FromLong(r == PY_LOCK_ACQUIRED);
 1114|     60|}
_threadmodule.c:_thread_RLock_release_impl:
 1147|     60|{
 1148|     60|    if (_PyRecursiveMutex_TryUnlock(&self->lock) < 0) {
  ------------------
  |  Branch (1148:9): [True: 0, False: 60]
  ------------------
 1149|      0|        PyErr_SetString(PyExc_RuntimeError,
 1150|      0|                        "cannot release un-acquired lock");
 1151|      0|        return NULL;
 1152|      0|    }
 1153|     60|    Py_RETURN_NONE;
  ------------------
  |  |  628|     60|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|     60|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
 1154|     60|}
_threadmodule.c:_thread_RLock___enter___impl:
 1125|     60|{
 1126|       |    return _thread_RLock_acquire_impl(self, 1, NULL);
 1127|     60|}
_threadmodule.c:_thread_RLock___exit___impl:
 1171|     60|{
 1172|     60|    return _thread_RLock_release_impl(self);
 1173|     60|}
_threadmodule.c:rlock_new_impl:
 1278|     24|{
 1279|     24|    rlockobject *self = (rlockobject *) type->tp_alloc(type, 0);
 1280|     24|    if (self == NULL) {
  ------------------
  |  Branch (1280:9): [True: 0, False: 24]
  ------------------
 1281|      0|        return NULL;
 1282|      0|    }
 1283|     24|    self->lock = (_PyRecursiveMutex){0};
 1284|     24|    return (PyObject *) self;
 1285|     24|}
_threadmodule.c:thread_module_traverse:
 2818|      2|{
 2819|      2|    thread_module_state *state = get_thread_state(module);
 2820|      2|    Py_VISIT(state->excepthook_type);
  ------------------
  |  |  194|      2|    do {                                                                \
  |  |  195|      2|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 2, False: 0]
  |  |  ------------------
  |  |  196|      2|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      2|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 2]
  |  |  ------------------
  |  |  198|      2|                return vret;                                            \
  |  |  199|      2|        }                                                               \
  |  |  200|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2821|      2|    Py_VISIT(state->lock_type);
  ------------------
  |  |  194|      2|    do {                                                                \
  |  |  195|      2|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 2, False: 0]
  |  |  ------------------
  |  |  196|      2|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      2|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 2]
  |  |  ------------------
  |  |  198|      2|                return vret;                                            \
  |  |  199|      2|        }                                                               \
  |  |  200|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2822|      2|    Py_VISIT(state->rlock_type);
  ------------------
  |  |  194|      2|    do {                                                                \
  |  |  195|      2|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 2, False: 0]
  |  |  ------------------
  |  |  196|      2|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      2|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 2]
  |  |  ------------------
  |  |  198|      2|                return vret;                                            \
  |  |  199|      2|        }                                                               \
  |  |  200|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2823|      2|    Py_VISIT(state->local_type);
  ------------------
  |  |  194|      2|    do {                                                                \
  |  |  195|      2|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 2, False: 0]
  |  |  ------------------
  |  |  196|      2|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      2|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 2]
  |  |  ------------------
  |  |  198|      2|                return vret;                                            \
  |  |  199|      2|        }                                                               \
  |  |  200|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2824|      2|    Py_VISIT(state->local_dummy_type);
  ------------------
  |  |  194|      2|    do {                                                                \
  |  |  195|      2|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 2, False: 0]
  |  |  ------------------
  |  |  196|      2|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      2|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 2]
  |  |  ------------------
  |  |  198|      2|                return vret;                                            \
  |  |  199|      2|        }                                                               \
  |  |  200|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2825|      2|    Py_VISIT(state->thread_handle_type);
  ------------------
  |  |  194|      2|    do {                                                                \
  |  |  195|      2|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 2, False: 0]
  |  |  ------------------
  |  |  196|      2|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      2|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 2]
  |  |  ------------------
  |  |  198|      2|                return vret;                                            \
  |  |  199|      2|        }                                                               \
  |  |  200|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2826|      2|    return 0;
 2827|      2|}

PyInit__weakref:
  186|      1|{
  187|      1|    return PyModuleDef_Init(&weakrefmodule);
  188|      1|}
_weakref.c:_weakref__remove_dead_weakref_impl:
   58|     30|{
   59|     30|    if (_PyDict_DelItemIf(dct, key, is_dead_weakref, NULL) < 0) {
  ------------------
  |  Branch (59:9): [True: 0, False: 30]
  ------------------
   60|      0|        return NULL;
   61|      0|    }
   62|     30|    Py_RETURN_NONE;
  ------------------
  |  |  628|     30|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|     30|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
   63|     30|}
_weakref.c:is_dead_weakref:
   35|     30|{
   36|     30|    if (!PyWeakref_Check(value)) {
  ------------------
  |  |   23|     30|        (PyWeakref_CheckRef(op) || PyWeakref_CheckProxy(op))
  |  |  ------------------
  |  |  |  |   15|     30|#define PyWeakref_CheckRef(op) PyObject_TypeCheck((op), &_PyWeakref_RefType)
  |  |  |  |  ------------------
  |  |  |  |  |  |  378|     60|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|     30|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     30|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (378:40): [True: 30, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       (PyWeakref_CheckRef(op) || PyWeakref_CheckProxy(op))
  |  |  ------------------
  |  |  |  |   19|      0|        (Py_IS_TYPE((op), &_PyWeakref_ProxyType) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   20|      0|         || Py_IS_TYPE((op), &_PyWeakref_CallableProxyType))
  |  |  |  |  ------------------
  |  |  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   37|      0|        PyErr_SetString(PyExc_TypeError, "not a weakref");
   38|      0|        return -1;
   39|      0|    }
   40|     30|    return _PyWeakref_IS_DEAD(value);
   41|     30|}
_weakref.c:weakref_exec:
  144|      1|{
  145|      1|    if (PyModule_AddObjectRef(module, "ref", (PyObject *) &_PyWeakref_RefType) < 0) {
  ------------------
  |  Branch (145:9): [True: 0, False: 1]
  ------------------
  146|      0|        return -1;
  147|      0|    }
  148|      1|    if (PyModule_AddObjectRef(module, "ReferenceType",
  ------------------
  |  Branch (148:9): [True: 0, False: 1]
  ------------------
  149|      1|                           (PyObject *) &_PyWeakref_RefType) < 0) {
  150|      0|        return -1;
  151|      0|    }
  152|      1|    if (PyModule_AddObjectRef(module, "ProxyType",
  ------------------
  |  Branch (152:9): [True: 0, False: 1]
  ------------------
  153|      1|                           (PyObject *) &_PyWeakref_ProxyType) < 0) {
  154|      0|        return -1;
  155|      0|    }
  156|      1|    if (PyModule_AddObjectRef(module, "CallableProxyType",
  ------------------
  |  Branch (156:9): [True: 0, False: 1]
  ------------------
  157|      1|                           (PyObject *) &_PyWeakref_CallableProxyType) < 0) {
  158|      0|        return -1;
  159|      0|    }
  160|       |
  161|      1|    return 0;
  162|      1|}

LLVMFuzzerInitialize:
  598|      1|int LLVMFuzzerInitialize(int *argc, char ***argv) {
  599|      1|    PyConfig config;
  600|      1|    PyConfig_InitPythonConfig(&config);
  601|      1|    config.install_signal_handlers = 0;
  602|       |    /* Raise the limit above the default allows exercising larger things
  603|       |     * now that we fall back to the _pylong module for large values. */
  604|      1|    config.int_max_str_digits = 8086;
  605|      1|    PyStatus status;
  606|      1|    status = PyConfig_SetBytesString(&config, &config.program_name, *argv[0]);
  607|      1|    if (PyStatus_Exception(status)) {
  ------------------
  |  Branch (607:9): [True: 0, False: 1]
  ------------------
  608|      0|        goto fail;
  609|      0|    }
  610|       |
  611|      1|    status = Py_InitializeFromConfig(&config);
  612|      1|    if (PyStatus_Exception(status)) {
  ------------------
  |  Branch (612:9): [True: 0, False: 1]
  ------------------
  613|      0|        goto fail;
  614|      0|    }
  615|      1|    PyConfig_Clear(&config);
  616|       |
  617|      1|    return 0;
  618|       |
  619|      0|fail:
  620|      0|    PyConfig_Clear(&config);
  621|      0|    Py_ExitStatusException(status);
  622|      1|}

_PyAtExit_Init:
   68|      1|{
   69|      1|    struct atexit_state *state = &interp->atexit;
   70|       |    // _PyAtExit_Init() must only be called once
   71|      1|    assert(state->callbacks == NULL);
  ------------------
  |  Branch (71:5): [True: 1, False: 0]
  ------------------
   72|       |
   73|      1|    state->callbacks = PyList_New(0);
   74|      1|    if (state->callbacks == NULL) {
  ------------------
  |  Branch (74:9): [True: 0, False: 1]
  ------------------
   75|      0|        return _PyStatus_NO_MEMORY();
  ------------------
  |  |   33|      0|#define _PyStatus_NO_MEMORY() _PyStatus_ERR(_PyStatus_NO_MEMORY_ERRMSG)
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  ------------------
   76|      0|    }
   77|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
   78|      1|}

_abc.c:_abc__abc_register:
   65|     34|{
   66|     34|    PyObject *return_value = NULL;
   67|     34|    PyObject *self;
   68|     34|    PyObject *subclass;
   69|       |
   70|     34|    if (!_PyArg_CheckPositional("_abc_register", nargs, 2, 2)) {
  ------------------
  |  |   31|     34|    (((min) <= (nargs) && (nargs) <= (max)) \
  |  |  ------------------
  |  |  |  Branch (31:7): [True: 34, False: 0]
  |  |  |  Branch (31:27): [True: 34, False: 0]
  |  |  ------------------
  |  |   32|     34|     || _PyArg_CheckPositional((funcname), (nargs), (min), (max)))
  |  |  ------------------
  |  |  |  Branch (32:9): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   71|      0|        goto exit;
   72|      0|    }
   73|     34|    self = args[0];
   74|     34|    subclass = args[1];
   75|     34|    return_value = _abc__abc_register_impl(module, self, subclass);
   76|       |
   77|     34|exit:
   78|     34|    return return_value;
   79|     34|}
_abc.c:_abc__abc_subclasscheck:
  127|     34|{
  128|     34|    PyObject *return_value = NULL;
  129|     34|    PyObject *self;
  130|     34|    PyObject *subclass;
  131|       |
  132|     34|    if (!_PyArg_CheckPositional("_abc_subclasscheck", nargs, 2, 2)) {
  ------------------
  |  |   31|     34|    (((min) <= (nargs) && (nargs) <= (max)) \
  |  |  ------------------
  |  |  |  Branch (31:7): [True: 34, False: 0]
  |  |  |  Branch (31:27): [True: 34, False: 0]
  |  |  ------------------
  |  |   32|     34|     || _PyArg_CheckPositional((funcname), (nargs), (min), (max)))
  |  |  ------------------
  |  |  |  Branch (32:9): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  133|      0|        goto exit;
  134|      0|    }
  135|     34|    self = args[0];
  136|     34|    subclass = args[1];
  137|     34|    return_value = _abc__abc_subclasscheck_impl(module, self, subclass);
  138|       |
  139|     34|exit:
  140|     34|    return return_value;
  141|     34|}

_codecsmodule.c:_codecs_lookup_error:
 2759|      6|{
 2760|      6|    PyObject *return_value = NULL;
 2761|      6|    const char *name;
 2762|       |
 2763|      6|    if (!PyUnicode_Check(arg)) {
  ------------------
  |  |  103|      6|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      6|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (2763:9): [True: 0, False: 6]
  ------------------
 2764|      0|        _PyArg_BadArgument("lookup_error", "argument", "str", arg);
 2765|      0|        goto exit;
 2766|      0|    }
 2767|      6|    Py_ssize_t name_length;
 2768|      6|    name = PyUnicode_AsUTF8AndSize(arg, &name_length);
 2769|      6|    if (name == NULL) {
  ------------------
  |  Branch (2769:9): [True: 0, False: 6]
  ------------------
 2770|      0|        goto exit;
 2771|      0|    }
 2772|      6|    if (strlen(name) != (size_t)name_length) {
  ------------------
  |  Branch (2772:9): [True: 0, False: 6]
  ------------------
 2773|      0|        PyErr_SetString(PyExc_ValueError, "embedded null character");
 2774|      0|        goto exit;
 2775|      0|    }
 2776|      6|    return_value = _codecs_lookup_error_impl(module, name);
 2777|       |
 2778|      6|exit:
 2779|      6|    return return_value;
 2780|      6|}
_codecsmodule.c:_codecs__normalize_encoding:
 2798|      1|{
 2799|      1|    PyObject *return_value = NULL;
 2800|      1|    #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
 2801|       |
 2802|      1|    #define NUM_KEYWORDS 1
 2803|      1|    static struct {
 2804|      1|        PyGC_Head _this_is_not_used;
 2805|      1|        PyObject_VAR_HEAD
 2806|      1|        Py_hash_t ob_hash;
 2807|      1|        PyObject *ob_item[NUM_KEYWORDS];
 2808|      1|    } _kwtuple = {
 2809|      1|        .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
  ------------------
  |  |   97|      1|    {                                     \
  |  |   98|      1|        PyObject_HEAD_INIT(type)          \
  |  |  ------------------
  |  |  |  |   90|      1|    {                               \
  |  |  |  |   91|      1|        { _Py_STATIC_IMMORTAL_INITIAL_REFCNT },    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   50|      1|#define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   47|      1|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      1|#define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  583|      1|#define _Py_STATICALLY_ALLOCATED_FLAG (1 << 2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  581|      1|#define _Py_IMMORTAL_FLAGS (1 << 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   92|      1|        (type)                      \
  |  |  |  |   93|      1|    },
  |  |  ------------------
  |  |   99|      1|        (size)                            \
  |  |  100|      1|    },
  ------------------
 2810|      1|        .ob_hash = -1,
 2811|      1|        .ob_item = { &_Py_ID(encoding), },
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2812|      1|    };
 2813|      1|    #undef NUM_KEYWORDS
 2814|      1|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
 2815|       |
 2816|       |    #else  // !Py_BUILD_CORE
 2817|       |    #  define KWTUPLE NULL
 2818|       |    #endif  // !Py_BUILD_CORE
 2819|       |
 2820|      1|    static const char * const _keywords[] = {"encoding", NULL};
 2821|      1|    static _PyArg_Parser _parser = {
 2822|      1|        .keywords = _keywords,
 2823|      1|        .fname = "_normalize_encoding",
 2824|      1|        .kwtuple = KWTUPLE,
  ------------------
  |  | 2814|      1|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
  ------------------
 2825|      1|    };
 2826|      1|    #undef KWTUPLE
 2827|      1|    PyObject *argsbuf[1];
 2828|      1|    PyObject *encoding;
 2829|       |
 2830|      1|    args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser,
  ------------------
  |  |   88|      1|    (((minkw) == 0 && (kwargs) == NULL && (kwnames) == NULL && \
  |  |  ------------------
  |  |  |  Branch (88:7): [True: 0, Folded]
  |  |  |  Branch (88:23): [True: 0, Folded]
  |  |  |  Branch (88:43): [True: 1, False: 0]
  |  |  ------------------
  |  |   89|      1|      (minpos) <= (nargs) && ((varpos) || (nargs) <= (maxpos)) && (args) != NULL) ? \
  |  |  ------------------
  |  |  |  Branch (89:7): [True: 1, False: 0]
  |  |  |  Branch (89:31): [Folded, False: 1]
  |  |  |  Branch (89:43): [True: 1, False: 0]
  |  |  |  Branch (89:67): [True: 1, False: 0]
  |  |  ------------------
  |  |   90|      1|      (args) : \
  |  |   91|      1|     _PyArg_UnpackKeywords((args), (nargs), (kwargs), (kwnames), (parser), \
  |  |   92|      0|                           (minpos), (maxpos), (minkw), (varpos), (buf)))
  ------------------
 2831|      1|            /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf);
 2832|      1|    if (!args) {
  ------------------
  |  Branch (2832:9): [True: 0, False: 1]
  ------------------
 2833|      0|        goto exit;
 2834|      0|    }
 2835|      1|    if (!PyUnicode_Check(args[0])) {
  ------------------
  |  |  103|      1|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      1|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (2835:9): [True: 0, False: 1]
  ------------------
 2836|      0|        _PyArg_BadArgument("_normalize_encoding", "argument 'encoding'", "str", args[0]);
 2837|      0|        goto exit;
 2838|      0|    }
 2839|      1|    encoding = args[0];
 2840|      1|    return_value = _codecs__normalize_encoding_impl(module, encoding);
 2841|       |
 2842|      1|exit:
 2843|      1|    return return_value;
 2844|      1|}

_threadmodule.c:_thread_RLock___enter__:
  438|     60|{
  439|     60|    return _thread_RLock___enter___impl((rlockobject *)self);
  440|     60|}
_threadmodule.c:_thread_RLock___exit__:
  484|     60|{
  485|     60|    PyObject *return_value = NULL;
  486|     60|    PyObject *exc_type;
  487|     60|    PyObject *exc_value;
  488|     60|    PyObject *exc_tb;
  489|       |
  490|     60|    if (!_PyArg_CheckPositional("__exit__", nargs, 3, 3)) {
  ------------------
  |  |   31|     60|    (((min) <= (nargs) && (nargs) <= (max)) \
  |  |  ------------------
  |  |  |  Branch (31:7): [True: 60, False: 0]
  |  |  |  Branch (31:27): [True: 60, False: 0]
  |  |  ------------------
  |  |   32|     60|     || _PyArg_CheckPositional((funcname), (nargs), (min), (max)))
  |  |  ------------------
  |  |  |  Branch (32:9): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  491|      0|        goto exit;
  492|      0|    }
  493|     60|    exc_type = args[0];
  494|     60|    exc_value = args[1];
  495|     60|    exc_tb = args[2];
  496|     60|    return_value = _thread_RLock___exit___impl((rlockobject *)self, exc_type, exc_value, exc_tb);
  497|       |
  498|     60|exit:
  499|     60|    return return_value;
  500|     60|}
_threadmodule.c:rlock_new:
  601|     24|{
  602|     24|    PyObject *return_value = NULL;
  603|     24|    PyTypeObject *base_tp = clinic_state()->rlock_type;
  ------------------
  |  |   91|     24|#define clinic_state() get_thread_state_by_cls(type)
  ------------------
  604|       |
  605|     24|    if ((type == base_tp || type->tp_init == base_tp->tp_init) &&
  ------------------
  |  Branch (605:10): [True: 24, False: 0]
  |  Branch (605:29): [True: 0, False: 0]
  ------------------
  606|     24|        !_PyArg_NoPositional("RLock", args)) {
  ------------------
  |  |   20|     24|    ((args) == NULL || _PyArg_NoPositional((funcname), (args)))
  |  |  ------------------
  |  |  |  Branch (20:6): [True: 0, False: 24]
  |  |  |  Branch (20:24): [True: 24, False: 0]
  |  |  ------------------
  ------------------
  607|      0|        goto exit;
  608|      0|    }
  609|     24|    if ((type == base_tp || type->tp_init == base_tp->tp_init) &&
  ------------------
  |  Branch (609:10): [True: 24, False: 0]
  |  Branch (609:29): [True: 0, False: 0]
  ------------------
  610|     24|        !_PyArg_NoKeywords("RLock", kwargs)) {
  ------------------
  |  |   25|     24|    ((kwargs) == NULL || _PyArg_NoKeywords((funcname), (kwargs)))
  |  |  ------------------
  |  |  |  Branch (25:6): [True: 24, False: 0]
  |  |  |  Branch (25:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  611|      0|        goto exit;
  612|      0|    }
  613|     24|    return_value = rlock_new_impl(type);
  614|       |
  615|     24|exit:
  616|     24|    return return_value;
  617|     24|}

_weakref.c:_weakref__remove_dead_weakref:
   50|     30|{
   51|     30|    PyObject *return_value = NULL;
   52|     30|    PyObject *dct;
   53|     30|    PyObject *key;
   54|       |
   55|     30|    if (!_PyArg_CheckPositional("_remove_dead_weakref", nargs, 2, 2)) {
  ------------------
  |  |   31|     30|    (((min) <= (nargs) && (nargs) <= (max)) \
  |  |  ------------------
  |  |  |  Branch (31:7): [True: 30, False: 0]
  |  |  |  Branch (31:27): [True: 30, False: 0]
  |  |  ------------------
  |  |   32|     30|     || _PyArg_CheckPositional((funcname), (nargs), (min), (max)))
  |  |  ------------------
  |  |  |  Branch (32:9): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   56|      0|        goto exit;
   57|      0|    }
   58|     30|    if (!PyDict_Check(args[0])) {
  ------------------
  |  |   18|     30|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     30|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (58:9): [True: 0, False: 30]
  ------------------
   59|      0|        _PyArg_BadArgument("_remove_dead_weakref", "argument 1", "dict", args[0]);
   60|      0|        goto exit;
   61|      0|    }
   62|     30|    dct = args[0];
   63|     30|    key = args[1];
   64|     30|    return_value = _weakref__remove_dead_weakref_impl(module, dct, key);
   65|       |
   66|     30|exit:
   67|     30|    return return_value;
   68|     30|}

posixmodule.c:os_stat:
   46|     19|{
   47|     19|    PyObject *return_value = NULL;
   48|     19|    #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
   49|       |
   50|     19|    #define NUM_KEYWORDS 3
   51|     19|    static struct {
   52|     19|        PyGC_Head _this_is_not_used;
   53|     19|        PyObject_VAR_HEAD
   54|     19|        Py_hash_t ob_hash;
   55|     19|        PyObject *ob_item[NUM_KEYWORDS];
   56|     19|    } _kwtuple = {
   57|     19|        .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
  ------------------
  |  |   97|     19|    {                                     \
  |  |   98|     19|        PyObject_HEAD_INIT(type)          \
  |  |  ------------------
  |  |  |  |   90|     19|    {                               \
  |  |  |  |   91|     19|        { _Py_STATIC_IMMORTAL_INITIAL_REFCNT },    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   50|     19|#define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   47|     19|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|     19|#define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  583|     19|#define _Py_STATICALLY_ALLOCATED_FLAG (1 << 2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  581|     19|#define _Py_IMMORTAL_FLAGS (1 << 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   92|     19|        (type)                      \
  |  |  |  |   93|     19|    },
  |  |  ------------------
  |  |   99|     19|        (size)                            \
  |  |  100|     19|    },
  ------------------
   58|     19|        .ob_hash = -1,
   59|     19|        .ob_item = { &_Py_ID(path), &_Py_ID(dir_fd), &_Py_ID(follow_symlinks), },
  ------------------
  |  |  917|     19|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     19|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     19|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      .ob_item = { &_Py_ID(path), &_Py_ID(dir_fd), &_Py_ID(follow_symlinks), },
  ------------------
  |  |  917|     19|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     19|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     19|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      .ob_item = { &_Py_ID(path), &_Py_ID(dir_fd), &_Py_ID(follow_symlinks), },
  ------------------
  |  |  917|     19|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     19|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     19|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   60|     19|    };
   61|     19|    #undef NUM_KEYWORDS
   62|     19|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
   63|       |
   64|       |    #else  // !Py_BUILD_CORE
   65|       |    #  define KWTUPLE NULL
   66|       |    #endif  // !Py_BUILD_CORE
   67|       |
   68|     19|    static const char * const _keywords[] = {"path", "dir_fd", "follow_symlinks", NULL};
   69|     19|    static _PyArg_Parser _parser = {
   70|     19|        .keywords = _keywords,
   71|     19|        .fname = "stat",
   72|     19|        .kwtuple = KWTUPLE,
  ------------------
  |  |   62|     19|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
  ------------------
   73|     19|    };
   74|     19|    #undef KWTUPLE
   75|     19|    PyObject *argsbuf[3];
   76|     19|    Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
  ------------------
  |  |   27|      0|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (76:36): [True: 0, False: 19]
  ------------------
   77|     19|    path_t path = PATH_T_INITIALIZE_P("stat", "path", 0, 0, 0, 1);
  ------------------
  |  | 1365|     19|    PATH_T_INITIALIZE(function_name, argument_name, nullable, nonstrict, 0, \
  |  |  ------------------
  |  |  |  | 1355|     19|    {function_name, argument_name, nullable, nonstrict, make_wide, \
  |  |  |  | 1356|     19|     suppress_value_error, allow_fd, NULL, NULL, -1, false, 0, 0, NULL, NULL}
  |  |  ------------------
  |  | 1366|     19|                      suppress_value_error, allow_fd)
  ------------------
   78|     19|    int dir_fd = DEFAULT_DIR_FD;
  ------------------
  |  | 1138|     19|#define DEFAULT_DIR_FD (int)AT_FDCWD
  ------------------
   79|     19|    int follow_symlinks = 1;
   80|       |
   81|     19|    args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser,
  ------------------
  |  |   88|     19|    (((minkw) == 0 && (kwargs) == NULL && (kwnames) == NULL && \
  |  |  ------------------
  |  |  |  Branch (88:7): [True: 0, Folded]
  |  |  |  Branch (88:23): [True: 0, Folded]
  |  |  |  Branch (88:43): [True: 19, False: 0]
  |  |  ------------------
  |  |   89|     19|      (minpos) <= (nargs) && ((varpos) || (nargs) <= (maxpos)) && (args) != NULL) ? \
  |  |  ------------------
  |  |  |  Branch (89:7): [True: 19, False: 0]
  |  |  |  Branch (89:31): [Folded, False: 19]
  |  |  |  Branch (89:43): [True: 19, False: 0]
  |  |  |  Branch (89:67): [True: 19, False: 0]
  |  |  ------------------
  |  |   90|     19|      (args) : \
  |  |   91|     19|     _PyArg_UnpackKeywords((args), (nargs), (kwargs), (kwnames), (parser), \
  |  |   92|      0|                           (minpos), (maxpos), (minkw), (varpos), (buf)))
  ------------------
   82|     19|            /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf);
   83|     19|    if (!args) {
  ------------------
  |  Branch (83:9): [True: 0, False: 19]
  ------------------
   84|      0|        goto exit;
   85|      0|    }
   86|     19|    if (!path_converter(args[0], &path)) {
  ------------------
  |  Branch (86:9): [True: 0, False: 19]
  ------------------
   87|      0|        goto exit;
   88|      0|    }
   89|     19|    if (!noptargs) {
  ------------------
  |  Branch (89:9): [True: 19, False: 0]
  ------------------
   90|     19|        goto skip_optional_kwonly;
   91|     19|    }
   92|      0|    if (args[1]) {
  ------------------
  |  Branch (92:9): [True: 0, False: 0]
  ------------------
   93|      0|        if (!FSTATAT_DIR_FD_CONVERTER(args[1], &dir_fd)) {
  ------------------
  |  | 3009|      0|    #define FSTATAT_DIR_FD_CONVERTER dir_fd_converter
  ------------------
  |  Branch (93:13): [True: 0, False: 0]
  ------------------
   94|      0|            goto exit;
   95|      0|        }
   96|      0|        if (!--noptargs) {
  ------------------
  |  Branch (96:13): [True: 0, False: 0]
  ------------------
   97|      0|            goto skip_optional_kwonly;
   98|      0|        }
   99|      0|    }
  100|      0|    follow_symlinks = PyObject_IsTrue(args[2]);
  101|      0|    if (follow_symlinks < 0) {
  ------------------
  |  Branch (101:9): [True: 0, False: 0]
  ------------------
  102|      0|        goto exit;
  103|      0|    }
  104|     19|skip_optional_kwonly:
  105|     19|    return_value = os_stat_impl(module, &path, dir_fd, follow_symlinks);
  106|       |
  107|     19|exit:
  108|       |    /* Cleanup for path */
  109|     19|    path_cleanup(&path);
  110|       |
  111|     19|    return return_value;
  112|     19|}
posixmodule.c:os_listdir:
 1772|      4|{
 1773|      4|    PyObject *return_value = NULL;
 1774|      4|    #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
 1775|       |
 1776|      4|    #define NUM_KEYWORDS 1
 1777|      4|    static struct {
 1778|      4|        PyGC_Head _this_is_not_used;
 1779|      4|        PyObject_VAR_HEAD
 1780|      4|        Py_hash_t ob_hash;
 1781|      4|        PyObject *ob_item[NUM_KEYWORDS];
 1782|      4|    } _kwtuple = {
 1783|      4|        .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
  ------------------
  |  |   97|      4|    {                                     \
  |  |   98|      4|        PyObject_HEAD_INIT(type)          \
  |  |  ------------------
  |  |  |  |   90|      4|    {                               \
  |  |  |  |   91|      4|        { _Py_STATIC_IMMORTAL_INITIAL_REFCNT },    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   50|      4|#define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   47|      4|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      4|#define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  583|      4|#define _Py_STATICALLY_ALLOCATED_FLAG (1 << 2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  581|      4|#define _Py_IMMORTAL_FLAGS (1 << 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   92|      4|        (type)                      \
  |  |  |  |   93|      4|    },
  |  |  ------------------
  |  |   99|      4|        (size)                            \
  |  |  100|      4|    },
  ------------------
 1784|      4|        .ob_hash = -1,
 1785|      4|        .ob_item = { &_Py_ID(path), },
  ------------------
  |  |  917|      4|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      4|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      4|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1786|      4|    };
 1787|      4|    #undef NUM_KEYWORDS
 1788|      4|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
 1789|       |
 1790|       |    #else  // !Py_BUILD_CORE
 1791|       |    #  define KWTUPLE NULL
 1792|       |    #endif  // !Py_BUILD_CORE
 1793|       |
 1794|      4|    static const char * const _keywords[] = {"path", NULL};
 1795|      4|    static _PyArg_Parser _parser = {
 1796|      4|        .keywords = _keywords,
 1797|      4|        .fname = "listdir",
 1798|      4|        .kwtuple = KWTUPLE,
  ------------------
  |  | 1788|      4|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
  ------------------
 1799|      4|    };
 1800|      4|    #undef KWTUPLE
 1801|      4|    PyObject *argsbuf[1];
 1802|      4|    Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
  ------------------
  |  |   27|      0|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1802:36): [True: 0, False: 4]
  ------------------
 1803|      4|    path_t path = PATH_T_INITIALIZE_P("listdir", "path", 1, 0, 0, PATH_HAVE_FDOPENDIR);
  ------------------
  |  | 1365|      4|    PATH_T_INITIALIZE(function_name, argument_name, nullable, nonstrict, 0, \
  |  |  ------------------
  |  |  |  | 1355|      4|    {function_name, argument_name, nullable, nonstrict, make_wide, \
  |  |  |  | 1356|      4|     suppress_value_error, allow_fd, NULL, NULL, -1, false, 0, 0, NULL, NULL}
  |  |  ------------------
  |  | 1366|      4|                      suppress_value_error, allow_fd)
  ------------------
 1804|       |
 1805|      4|    args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser,
  ------------------
  |  |   88|      4|    (((minkw) == 0 && (kwargs) == NULL && (kwnames) == NULL && \
  |  |  ------------------
  |  |  |  Branch (88:7): [True: 0, Folded]
  |  |  |  Branch (88:23): [True: 0, Folded]
  |  |  |  Branch (88:43): [True: 4, False: 0]
  |  |  ------------------
  |  |   89|      4|      (minpos) <= (nargs) && ((varpos) || (nargs) <= (maxpos)) && (args) != NULL) ? \
  |  |  ------------------
  |  |  |  Branch (89:7): [True: 4, False: 0]
  |  |  |  Branch (89:31): [Folded, False: 4]
  |  |  |  Branch (89:43): [True: 4, False: 0]
  |  |  |  Branch (89:67): [True: 4, False: 0]
  |  |  ------------------
  |  |   90|      4|      (args) : \
  |  |   91|      4|     _PyArg_UnpackKeywords((args), (nargs), (kwargs), (kwnames), (parser), \
  |  |   92|      0|                           (minpos), (maxpos), (minkw), (varpos), (buf)))
  ------------------
 1806|      4|            /*minpos*/ 0, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf);
 1807|      4|    if (!args) {
  ------------------
  |  Branch (1807:9): [True: 0, False: 4]
  ------------------
 1808|      0|        goto exit;
 1809|      0|    }
 1810|      4|    if (!noptargs) {
  ------------------
  |  Branch (1810:9): [True: 0, False: 4]
  ------------------
 1811|      0|        goto skip_optional_pos;
 1812|      0|    }
 1813|      4|    if (!path_converter(args[0], &path)) {
  ------------------
  |  Branch (1813:9): [True: 0, False: 4]
  ------------------
 1814|      0|        goto exit;
 1815|      0|    }
 1816|      4|skip_optional_pos:
 1817|      4|    return_value = os_listdir_impl(module, &path);
 1818|       |
 1819|      4|exit:
 1820|       |    /* Cleanup for path */
 1821|      4|    path_cleanup(&path);
 1822|       |
 1823|      4|    return return_value;
 1824|      4|}
posixmodule.c:os_getegid:
 5205|      1|{
 5206|      1|    return os_getegid_impl(module);
 5207|      1|}
posixmodule.c:os_geteuid:
 5227|      1|{
 5228|      1|    return os_geteuid_impl(module);
 5229|      1|}
posixmodule.c:os_getgid:
 5249|      1|{
 5250|      1|    return os_getgid_impl(module);
 5251|      1|}
posixmodule.c:os_getuid:
 5669|      1|{
 5670|      1|    return os_getuid_impl(module);
 5671|      1|}
posixmodule.c:os__path_normpath:
 2657|      5|{
 2658|      5|    PyObject *return_value = NULL;
 2659|      5|    #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
 2660|       |
 2661|      5|    #define NUM_KEYWORDS 1
 2662|      5|    static struct {
 2663|      5|        PyGC_Head _this_is_not_used;
 2664|      5|        PyObject_VAR_HEAD
 2665|      5|        Py_hash_t ob_hash;
 2666|      5|        PyObject *ob_item[NUM_KEYWORDS];
 2667|      5|    } _kwtuple = {
 2668|      5|        .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
  ------------------
  |  |   97|      5|    {                                     \
  |  |   98|      5|        PyObject_HEAD_INIT(type)          \
  |  |  ------------------
  |  |  |  |   90|      5|    {                               \
  |  |  |  |   91|      5|        { _Py_STATIC_IMMORTAL_INITIAL_REFCNT },    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   50|      5|#define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   47|      5|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      5|#define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  583|      5|#define _Py_STATICALLY_ALLOCATED_FLAG (1 << 2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  581|      5|#define _Py_IMMORTAL_FLAGS (1 << 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   92|      5|        (type)                      \
  |  |  |  |   93|      5|    },
  |  |  ------------------
  |  |   99|      5|        (size)                            \
  |  |  100|      5|    },
  ------------------
 2669|      5|        .ob_hash = -1,
 2670|      5|        .ob_item = { &_Py_ID(path), },
  ------------------
  |  |  917|      5|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      5|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      5|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2671|      5|    };
 2672|      5|    #undef NUM_KEYWORDS
 2673|      5|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
 2674|       |
 2675|       |    #else  // !Py_BUILD_CORE
 2676|       |    #  define KWTUPLE NULL
 2677|       |    #endif  // !Py_BUILD_CORE
 2678|       |
 2679|      5|    static const char * const _keywords[] = {"path", NULL};
 2680|      5|    static _PyArg_Parser _parser = {
 2681|      5|        .keywords = _keywords,
 2682|      5|        .fname = "_path_normpath",
 2683|      5|        .kwtuple = KWTUPLE,
  ------------------
  |  | 2673|      5|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
  ------------------
 2684|      5|    };
 2685|      5|    #undef KWTUPLE
 2686|      5|    PyObject *argsbuf[1];
 2687|      5|    path_t path = PATH_T_INITIALIZE("_path_normpath", "path", 0, 1, 1, 0, 0);
  ------------------
  |  | 1355|      5|    {function_name, argument_name, nullable, nonstrict, make_wide, \
  |  | 1356|      5|     suppress_value_error, allow_fd, NULL, NULL, -1, false, 0, 0, NULL, NULL}
  ------------------
 2688|       |
 2689|      5|    args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser,
  ------------------
  |  |   88|      5|    (((minkw) == 0 && (kwargs) == NULL && (kwnames) == NULL && \
  |  |  ------------------
  |  |  |  Branch (88:7): [True: 0, Folded]
  |  |  |  Branch (88:23): [True: 0, Folded]
  |  |  |  Branch (88:43): [True: 5, False: 0]
  |  |  ------------------
  |  |   89|      5|      (minpos) <= (nargs) && ((varpos) || (nargs) <= (maxpos)) && (args) != NULL) ? \
  |  |  ------------------
  |  |  |  Branch (89:7): [True: 5, False: 0]
  |  |  |  Branch (89:31): [Folded, False: 5]
  |  |  |  Branch (89:43): [True: 5, False: 0]
  |  |  |  Branch (89:67): [True: 5, False: 0]
  |  |  ------------------
  |  |   90|      5|      (args) : \
  |  |   91|      5|     _PyArg_UnpackKeywords((args), (nargs), (kwargs), (kwnames), (parser), \
  |  |   92|      0|                           (minpos), (maxpos), (minkw), (varpos), (buf)))
  ------------------
 2690|      5|            /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf);
 2691|      5|    if (!args) {
  ------------------
  |  Branch (2691:9): [True: 0, False: 5]
  ------------------
 2692|      0|        goto exit;
 2693|      0|    }
 2694|      5|    if (!path_converter(args[0], &path)) {
  ------------------
  |  Branch (2694:9): [True: 0, False: 5]
  ------------------
 2695|      0|        goto exit;
 2696|      0|    }
 2697|      5|    return_value = os__path_normpath_impl(module, &path);
 2698|       |
 2699|      5|exit:
 2700|       |    /* Cleanup for path */
 2701|      5|    path_cleanup(&path);
 2702|       |
 2703|      5|    return return_value;
 2704|      5|}
posixmodule.c:os_fspath:
12505|     40|{
12506|     40|    PyObject *return_value = NULL;
12507|     40|    #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
12508|       |
12509|     40|    #define NUM_KEYWORDS 1
12510|     40|    static struct {
12511|     40|        PyGC_Head _this_is_not_used;
12512|     40|        PyObject_VAR_HEAD
12513|     40|        Py_hash_t ob_hash;
12514|     40|        PyObject *ob_item[NUM_KEYWORDS];
12515|     40|    } _kwtuple = {
12516|     40|        .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
  ------------------
  |  |   97|     40|    {                                     \
  |  |   98|     40|        PyObject_HEAD_INIT(type)          \
  |  |  ------------------
  |  |  |  |   90|     40|    {                               \
  |  |  |  |   91|     40|        { _Py_STATIC_IMMORTAL_INITIAL_REFCNT },    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   50|     40|#define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   47|     40|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|     40|#define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  583|     40|#define _Py_STATICALLY_ALLOCATED_FLAG (1 << 2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  581|     40|#define _Py_IMMORTAL_FLAGS (1 << 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   92|     40|        (type)                      \
  |  |  |  |   93|     40|    },
  |  |  ------------------
  |  |   99|     40|        (size)                            \
  |  |  100|     40|    },
  ------------------
12517|     40|        .ob_hash = -1,
12518|     40|        .ob_item = { &_Py_ID(path), },
  ------------------
  |  |  917|     40|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     40|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     40|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12519|     40|    };
12520|     40|    #undef NUM_KEYWORDS
12521|     40|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
12522|       |
12523|       |    #else  // !Py_BUILD_CORE
12524|       |    #  define KWTUPLE NULL
12525|       |    #endif  // !Py_BUILD_CORE
12526|       |
12527|     40|    static const char * const _keywords[] = {"path", NULL};
12528|     40|    static _PyArg_Parser _parser = {
12529|     40|        .keywords = _keywords,
12530|     40|        .fname = "fspath",
12531|     40|        .kwtuple = KWTUPLE,
  ------------------
  |  |12521|     40|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
  ------------------
12532|     40|    };
12533|     40|    #undef KWTUPLE
12534|     40|    PyObject *argsbuf[1];
12535|     40|    PyObject *path;
12536|       |
12537|     40|    args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser,
  ------------------
  |  |   88|     40|    (((minkw) == 0 && (kwargs) == NULL && (kwnames) == NULL && \
  |  |  ------------------
  |  |  |  Branch (88:7): [True: 0, Folded]
  |  |  |  Branch (88:23): [True: 0, Folded]
  |  |  |  Branch (88:43): [True: 40, False: 0]
  |  |  ------------------
  |  |   89|     40|      (minpos) <= (nargs) && ((varpos) || (nargs) <= (maxpos)) && (args) != NULL) ? \
  |  |  ------------------
  |  |  |  Branch (89:7): [True: 40, False: 0]
  |  |  |  Branch (89:31): [Folded, False: 40]
  |  |  |  Branch (89:43): [True: 40, False: 0]
  |  |  |  Branch (89:67): [True: 40, False: 0]
  |  |  ------------------
  |  |   90|     40|      (args) : \
  |  |   91|     40|     _PyArg_UnpackKeywords((args), (nargs), (kwargs), (kwnames), (parser), \
  |  |   92|      0|                           (minpos), (maxpos), (minkw), (varpos), (buf)))
  ------------------
12538|     40|            /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf);
12539|     40|    if (!args) {
  ------------------
  |  Branch (12539:9): [True: 0, False: 40]
  ------------------
12540|      0|        goto exit;
12541|      0|    }
12542|     40|    path = args[0];
12543|     40|    return_value = os_fspath_impl(module, path);
12544|       |
12545|     40|exit:
12546|     40|    return return_value;
12547|     40|}

PyInit_errno:
  986|      1|{
  987|      1|    return PyModuleDef_Init(&errnomodule);
  988|      1|}
errnomodule.c:errno_exec:
   90|      1|{
   91|      1|    PyObject *module_dict = PyModule_GetDict(module);  // Borrowed ref.
   92|      1|    if (module_dict == NULL) {
  ------------------
  |  Branch (92:9): [True: 0, False: 1]
  ------------------
   93|      0|        return -1;
   94|      0|    }
   95|      1|    PyObject *error_dict = PyDict_New();
   96|      1|    if (error_dict == NULL) {
  ------------------
  |  Branch (96:9): [True: 0, False: 1]
  ------------------
   97|      0|        return -1;
   98|      0|    }
   99|      1|    if (PyDict_SetItemString(module_dict, "errorcode", error_dict) < 0) {
  ------------------
  |  Branch (99:9): [True: 0, False: 1]
  ------------------
  100|      0|        Py_DECREF(error_dict);
  ------------------
  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  101|      0|        return -1;
  102|      0|    }
  103|       |
  104|       |/* Macro so I don't have to edit each and every line below... */
  105|      1|#define add_errcode(name, code, comment)                               \
  106|      1|    do {                                                               \
  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  108|      1|            Py_DECREF(error_dict);                                     \
  109|      1|            return -1;                                                 \
  110|      1|        }                                                              \
  111|      1|    } while (0);
  112|       |
  113|       |    /*
  114|       |     * The names and comments are borrowed from linux/include/errno.h,
  115|       |     * which should be pretty all-inclusive.  However, the Solaris specific
  116|       |     * names and comments are borrowed from sys/errno.h in Solaris.
  117|       |     * MacOSX specific names and comments are borrowed from sys/errno.h in
  118|       |     * MacOSX.
  119|       |     */
  120|       |
  121|      1|#ifdef ENODEV
  122|      1|    add_errcode("ENODEV", ENODEV, "No such device");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  123|      1|#endif
  124|      1|#ifdef ENOCSI
  125|      1|    add_errcode("ENOCSI", ENOCSI, "No CSI structure available");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  126|      1|#endif
  127|      1|#ifdef EHOSTUNREACH
  128|      1|    add_errcode("EHOSTUNREACH", EHOSTUNREACH, "No route to host");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  129|       |#else
  130|       |#ifdef WSAEHOSTUNREACH
  131|       |    add_errcode("EHOSTUNREACH", WSAEHOSTUNREACH, "No route to host");
  132|       |#endif
  133|       |#endif
  134|      1|#ifdef ENOMSG
  135|      1|    add_errcode("ENOMSG", ENOMSG, "No message of desired type");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  136|      1|#endif
  137|      1|#ifdef EUCLEAN
  138|      1|    add_errcode("EUCLEAN", EUCLEAN, "Structure needs cleaning");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  139|      1|#endif
  140|      1|#ifdef EL2NSYNC
  141|      1|    add_errcode("EL2NSYNC", EL2NSYNC, "Level 2 not synchronized");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  142|      1|#endif
  143|      1|#ifdef EL2HLT
  144|      1|    add_errcode("EL2HLT", EL2HLT, "Level 2 halted");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  145|      1|#endif
  146|      1|#ifdef ENODATA
  147|      1|    add_errcode("ENODATA", ENODATA, "No data available");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  148|      1|#endif
  149|      1|#ifdef ENOTBLK
  150|      1|    add_errcode("ENOTBLK", ENOTBLK, "Block device required");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  151|      1|#endif
  152|      1|#ifdef ENOSYS
  153|      1|    add_errcode("ENOSYS", ENOSYS, "Function not implemented");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  154|      1|#endif
  155|      1|#ifdef EPIPE
  156|      1|    add_errcode("EPIPE", EPIPE, "Broken pipe");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  157|      1|#endif
  158|      1|#ifdef EINVAL
  159|      1|    add_errcode("EINVAL", EINVAL, "Invalid argument");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  160|       |#else
  161|       |#ifdef WSAEINVAL
  162|       |    add_errcode("EINVAL", WSAEINVAL, "Invalid argument");
  163|       |#endif
  164|       |#endif
  165|      1|#ifdef EOVERFLOW
  166|      1|    add_errcode("EOVERFLOW", EOVERFLOW, "Value too large for defined data type");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  167|      1|#endif
  168|      1|#ifdef EADV
  169|      1|    add_errcode("EADV", EADV, "Advertise error");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  170|      1|#endif
  171|      1|#ifdef EINTR
  172|      1|    add_errcode("EINTR", EINTR, "Interrupted system call");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  173|       |#else
  174|       |#ifdef WSAEINTR
  175|       |    add_errcode("EINTR", WSAEINTR, "Interrupted system call");
  176|       |#endif
  177|       |#endif
  178|      1|#ifdef EUSERS
  179|      1|    add_errcode("EUSERS", EUSERS, "Too many users");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  180|       |#else
  181|       |#ifdef WSAEUSERS
  182|       |    add_errcode("EUSERS", WSAEUSERS, "Too many users");
  183|       |#endif
  184|       |#endif
  185|      1|#ifdef ENOTEMPTY
  186|      1|    add_errcode("ENOTEMPTY", ENOTEMPTY, "Directory not empty");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  187|       |#else
  188|       |#ifdef WSAENOTEMPTY
  189|       |    add_errcode("ENOTEMPTY", WSAENOTEMPTY, "Directory not empty");
  190|       |#endif
  191|       |#endif
  192|      1|#ifdef ENOBUFS
  193|      1|    add_errcode("ENOBUFS", ENOBUFS, "No buffer space available");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  194|       |#else
  195|       |#ifdef WSAENOBUFS
  196|       |    add_errcode("ENOBUFS", WSAENOBUFS, "No buffer space available");
  197|       |#endif
  198|       |#endif
  199|      1|#ifdef EPROTO
  200|      1|    add_errcode("EPROTO", EPROTO, "Protocol error");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  201|      1|#endif
  202|      1|#ifdef EREMOTE
  203|      1|    add_errcode("EREMOTE", EREMOTE, "Object is remote");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  204|       |#else
  205|       |#ifdef WSAEREMOTE
  206|       |    add_errcode("EREMOTE", WSAEREMOTE, "Object is remote");
  207|       |#endif
  208|       |#endif
  209|      1|#ifdef ENAVAIL
  210|      1|    add_errcode("ENAVAIL", ENAVAIL, "No XENIX semaphores available");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  211|      1|#endif
  212|      1|#ifdef ECHILD
  213|      1|    add_errcode("ECHILD", ECHILD, "No child processes");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  214|      1|#endif
  215|      1|#ifdef ELOOP
  216|      1|    add_errcode("ELOOP", ELOOP, "Too many symbolic links encountered");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  217|       |#else
  218|       |#ifdef WSAELOOP
  219|       |    add_errcode("ELOOP", WSAELOOP, "Too many symbolic links encountered");
  220|       |#endif
  221|       |#endif
  222|      1|#ifdef EXDEV
  223|      1|    add_errcode("EXDEV", EXDEV, "Cross-device link");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  224|      1|#endif
  225|      1|#ifdef E2BIG
  226|      1|    add_errcode("E2BIG", E2BIG, "Arg list too long");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  227|      1|#endif
  228|      1|#ifdef ESRCH
  229|      1|    add_errcode("ESRCH", ESRCH, "No such process");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  230|      1|#endif
  231|      1|#ifdef EMSGSIZE
  232|      1|    add_errcode("EMSGSIZE", EMSGSIZE, "Message too long");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  233|       |#else
  234|       |#ifdef WSAEMSGSIZE
  235|       |    add_errcode("EMSGSIZE", WSAEMSGSIZE, "Message too long");
  236|       |#endif
  237|       |#endif
  238|      1|#ifdef EAFNOSUPPORT
  239|      1|    add_errcode("EAFNOSUPPORT", EAFNOSUPPORT, "Address family not supported by protocol");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  240|       |#else
  241|       |#ifdef WSAEAFNOSUPPORT
  242|       |    add_errcode("EAFNOSUPPORT", WSAEAFNOSUPPORT, "Address family not supported by protocol");
  243|       |#endif
  244|       |#endif
  245|      1|#ifdef EBADR
  246|      1|    add_errcode("EBADR", EBADR, "Invalid request descriptor");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  247|      1|#endif
  248|      1|#ifdef EHOSTDOWN
  249|      1|    add_errcode("EHOSTDOWN", EHOSTDOWN, "Host is down");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  250|       |#else
  251|       |#ifdef WSAEHOSTDOWN
  252|       |    add_errcode("EHOSTDOWN", WSAEHOSTDOWN, "Host is down");
  253|       |#endif
  254|       |#endif
  255|      1|#ifdef EPFNOSUPPORT
  256|      1|    add_errcode("EPFNOSUPPORT", EPFNOSUPPORT, "Protocol family not supported");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  257|       |#else
  258|       |#ifdef WSAEPFNOSUPPORT
  259|       |    add_errcode("EPFNOSUPPORT", WSAEPFNOSUPPORT, "Protocol family not supported");
  260|       |#endif
  261|       |#endif
  262|      1|#ifdef ENOPROTOOPT
  263|      1|    add_errcode("ENOPROTOOPT", ENOPROTOOPT, "Protocol not available");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  264|       |#else
  265|       |#ifdef WSAENOPROTOOPT
  266|       |    add_errcode("ENOPROTOOPT", WSAENOPROTOOPT, "Protocol not available");
  267|       |#endif
  268|       |#endif
  269|      1|#ifdef EBUSY
  270|      1|    add_errcode("EBUSY", EBUSY, "Device or resource busy");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  271|      1|#endif
  272|      1|#ifdef EWOULDBLOCK
  273|      1|    add_errcode("EWOULDBLOCK", EWOULDBLOCK, "Operation would block");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  274|       |#else
  275|       |#ifdef WSAEWOULDBLOCK
  276|       |    add_errcode("EWOULDBLOCK", WSAEWOULDBLOCK, "Operation would block");
  277|       |#endif
  278|       |#endif
  279|      1|#ifdef EBADFD
  280|      1|    add_errcode("EBADFD", EBADFD, "File descriptor in bad state");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  281|      1|#endif
  282|      1|#ifdef EDOTDOT
  283|      1|    add_errcode("EDOTDOT", EDOTDOT, "RFS specific error");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  284|      1|#endif
  285|      1|#ifdef EISCONN
  286|      1|    add_errcode("EISCONN", EISCONN, "Transport endpoint is already connected");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  287|       |#else
  288|       |#ifdef WSAEISCONN
  289|       |    add_errcode("EISCONN", WSAEISCONN, "Transport endpoint is already connected");
  290|       |#endif
  291|       |#endif
  292|      1|#ifdef ENOANO
  293|      1|    add_errcode("ENOANO", ENOANO, "No anode");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  294|      1|#endif
  295|       |#if defined(__wasi__) && !defined(ESHUTDOWN)
  296|       |    // WASI SDK 16 does not have ESHUTDOWN, shutdown results in EPIPE.
  297|       |    #define ESHUTDOWN EPIPE
  298|       |#endif
  299|      1|#ifdef ESHUTDOWN
  300|      1|    add_errcode("ESHUTDOWN", ESHUTDOWN, "Cannot send after transport endpoint shutdown");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  301|       |#else
  302|       |#ifdef WSAESHUTDOWN
  303|       |    add_errcode("ESHUTDOWN", WSAESHUTDOWN, "Cannot send after transport endpoint shutdown");
  304|       |#endif
  305|       |#endif
  306|      1|#ifdef ECHRNG
  307|      1|    add_errcode("ECHRNG", ECHRNG, "Channel number out of range");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  308|      1|#endif
  309|      1|#ifdef ELIBBAD
  310|      1|    add_errcode("ELIBBAD", ELIBBAD, "Accessing a corrupted shared library");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  311|      1|#endif
  312|      1|#ifdef ENONET
  313|      1|    add_errcode("ENONET", ENONET, "Machine is not on the network");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  314|      1|#endif
  315|      1|#ifdef EBADE
  316|      1|    add_errcode("EBADE", EBADE, "Invalid exchange");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  317|      1|#endif
  318|      1|#ifdef EBADF
  319|      1|    add_errcode("EBADF", EBADF, "Bad file number");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  320|       |#else
  321|       |#ifdef WSAEBADF
  322|       |    add_errcode("EBADF", WSAEBADF, "Bad file number");
  323|       |#endif
  324|       |#endif
  325|      1|#ifdef EMULTIHOP
  326|      1|    add_errcode("EMULTIHOP", EMULTIHOP, "Multihop attempted");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  327|      1|#endif
  328|      1|#ifdef EIO
  329|      1|    add_errcode("EIO", EIO, "I/O error");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  330|      1|#endif
  331|      1|#ifdef EUNATCH
  332|      1|    add_errcode("EUNATCH", EUNATCH, "Protocol driver not attached");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  333|      1|#endif
  334|      1|#ifdef EPROTOTYPE
  335|      1|    add_errcode("EPROTOTYPE", EPROTOTYPE, "Protocol wrong type for socket");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  336|       |#else
  337|       |#ifdef WSAEPROTOTYPE
  338|       |    add_errcode("EPROTOTYPE", WSAEPROTOTYPE, "Protocol wrong type for socket");
  339|       |#endif
  340|       |#endif
  341|      1|#ifdef ENOSPC
  342|      1|    add_errcode("ENOSPC", ENOSPC, "No space left on device");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  343|      1|#endif
  344|      1|#ifdef ENOEXEC
  345|      1|    add_errcode("ENOEXEC", ENOEXEC, "Exec format error");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  346|      1|#endif
  347|      1|#ifdef EALREADY
  348|      1|    add_errcode("EALREADY", EALREADY, "Operation already in progress");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  349|       |#else
  350|       |#ifdef WSAEALREADY
  351|       |    add_errcode("EALREADY", WSAEALREADY, "Operation already in progress");
  352|       |#endif
  353|       |#endif
  354|      1|#ifdef ENETDOWN
  355|      1|    add_errcode("ENETDOWN", ENETDOWN, "Network is down");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  356|       |#else
  357|       |#ifdef WSAENETDOWN
  358|       |    add_errcode("ENETDOWN", WSAENETDOWN, "Network is down");
  359|       |#endif
  360|       |#endif
  361|      1|#ifdef ENOTNAM
  362|      1|    add_errcode("ENOTNAM", ENOTNAM, "Not a XENIX named type file");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  363|      1|#endif
  364|      1|#ifdef EACCES
  365|      1|    add_errcode("EACCES", EACCES, "Permission denied");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  366|       |#else
  367|       |#ifdef WSAEACCES
  368|       |    add_errcode("EACCES", WSAEACCES, "Permission denied");
  369|       |#endif
  370|       |#endif
  371|      1|#ifdef ELNRNG
  372|      1|    add_errcode("ELNRNG", ELNRNG, "Link number out of range");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  373|      1|#endif
  374|      1|#ifdef EILSEQ
  375|      1|    add_errcode("EILSEQ", EILSEQ, "Illegal byte sequence");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  376|      1|#endif
  377|      1|#ifdef ENOTDIR
  378|      1|    add_errcode("ENOTDIR", ENOTDIR, "Not a directory");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  379|      1|#endif
  380|      1|#ifdef ENOTUNIQ
  381|      1|    add_errcode("ENOTUNIQ", ENOTUNIQ, "Name not unique on network");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  382|      1|#endif
  383|      1|#ifdef EPERM
  384|      1|    add_errcode("EPERM", EPERM, "Operation not permitted");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  385|      1|#endif
  386|      1|#ifdef EDOM
  387|      1|    add_errcode("EDOM", EDOM, "Math argument out of domain of func");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  388|      1|#endif
  389|      1|#ifdef EXFULL
  390|      1|    add_errcode("EXFULL", EXFULL, "Exchange full");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  391|      1|#endif
  392|      1|#ifdef ECONNREFUSED
  393|      1|    add_errcode("ECONNREFUSED", ECONNREFUSED, "Connection refused");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  394|       |#else
  395|       |#ifdef WSAECONNREFUSED
  396|       |    add_errcode("ECONNREFUSED", WSAECONNREFUSED, "Connection refused");
  397|       |#endif
  398|       |#endif
  399|      1|#ifdef EISDIR
  400|      1|    add_errcode("EISDIR", EISDIR, "Is a directory");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  401|      1|#endif
  402|      1|#ifdef EPROTONOSUPPORT
  403|      1|    add_errcode("EPROTONOSUPPORT", EPROTONOSUPPORT, "Protocol not supported");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  404|       |#else
  405|       |#ifdef WSAEPROTONOSUPPORT
  406|       |    add_errcode("EPROTONOSUPPORT", WSAEPROTONOSUPPORT, "Protocol not supported");
  407|       |#endif
  408|       |#endif
  409|      1|#ifdef EROFS
  410|      1|    add_errcode("EROFS", EROFS, "Read-only file system");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  411|      1|#endif
  412|      1|#ifdef EADDRNOTAVAIL
  413|      1|    add_errcode("EADDRNOTAVAIL", EADDRNOTAVAIL, "Cannot assign requested address");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  414|       |#else
  415|       |#ifdef WSAEADDRNOTAVAIL
  416|       |    add_errcode("EADDRNOTAVAIL", WSAEADDRNOTAVAIL, "Cannot assign requested address");
  417|       |#endif
  418|       |#endif
  419|      1|#ifdef EIDRM
  420|      1|    add_errcode("EIDRM", EIDRM, "Identifier removed");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  421|      1|#endif
  422|      1|#ifdef ECOMM
  423|      1|    add_errcode("ECOMM", ECOMM, "Communication error on send");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  424|      1|#endif
  425|      1|#ifdef ESRMNT
  426|      1|    add_errcode("ESRMNT", ESRMNT, "Srmount error");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  427|      1|#endif
  428|      1|#ifdef EREMOTEIO
  429|      1|    add_errcode("EREMOTEIO", EREMOTEIO, "Remote I/O error");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  430|      1|#endif
  431|      1|#ifdef EL3RST
  432|      1|    add_errcode("EL3RST", EL3RST, "Level 3 reset");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  433|      1|#endif
  434|      1|#ifdef EBADMSG
  435|      1|    add_errcode("EBADMSG", EBADMSG, "Not a data message");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  436|      1|#endif
  437|      1|#ifdef ENFILE
  438|      1|    add_errcode("ENFILE", ENFILE, "File table overflow");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  439|      1|#endif
  440|      1|#ifdef ELIBMAX
  441|      1|    add_errcode("ELIBMAX", ELIBMAX, "Attempting to link in too many shared libraries");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  442|      1|#endif
  443|      1|#ifdef ESPIPE
  444|      1|    add_errcode("ESPIPE", ESPIPE, "Illegal seek");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  445|      1|#endif
  446|      1|#ifdef ENOLINK
  447|      1|    add_errcode("ENOLINK", ENOLINK, "Link has been severed");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  448|      1|#endif
  449|      1|#ifdef ENETRESET
  450|      1|    add_errcode("ENETRESET", ENETRESET, "Network dropped connection because of reset");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  451|       |#else
  452|       |#ifdef WSAENETRESET
  453|       |    add_errcode("ENETRESET", WSAENETRESET, "Network dropped connection because of reset");
  454|       |#endif
  455|       |#endif
  456|      1|#ifdef ETIMEDOUT
  457|      1|    add_errcode("ETIMEDOUT", ETIMEDOUT, "Connection timed out");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  458|       |#else
  459|       |#ifdef WSAETIMEDOUT
  460|       |    add_errcode("ETIMEDOUT", WSAETIMEDOUT, "Connection timed out");
  461|       |#endif
  462|       |#endif
  463|      1|#ifdef ENOENT
  464|      1|    add_errcode("ENOENT", ENOENT, "No such file or directory");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  465|      1|#endif
  466|      1|#ifdef EEXIST
  467|      1|    add_errcode("EEXIST", EEXIST, "File exists");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  468|      1|#endif
  469|      1|#ifdef EDQUOT
  470|      1|    add_errcode("EDQUOT", EDQUOT, "Quota exceeded");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  471|       |#else
  472|       |#ifdef WSAEDQUOT
  473|       |    add_errcode("EDQUOT", WSAEDQUOT, "Quota exceeded");
  474|       |#endif
  475|       |#endif
  476|      1|#ifdef ENOSTR
  477|      1|    add_errcode("ENOSTR", ENOSTR, "Device not a stream");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  478|      1|#endif
  479|      1|#ifdef EBADSLT
  480|      1|    add_errcode("EBADSLT", EBADSLT, "Invalid slot");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  481|      1|#endif
  482|      1|#ifdef EBADRQC
  483|      1|    add_errcode("EBADRQC", EBADRQC, "Invalid request code");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  484|      1|#endif
  485|      1|#ifdef ELIBACC
  486|      1|    add_errcode("ELIBACC", ELIBACC, "Can not access a needed shared library");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  487|      1|#endif
  488|      1|#ifdef EFAULT
  489|      1|    add_errcode("EFAULT", EFAULT, "Bad address");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  490|       |#else
  491|       |#ifdef WSAEFAULT
  492|       |    add_errcode("EFAULT", WSAEFAULT, "Bad address");
  493|       |#endif
  494|       |#endif
  495|      1|#ifdef EFBIG
  496|      1|    add_errcode("EFBIG", EFBIG, "File too large");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  497|      1|#endif
  498|      1|#ifdef EDEADLK
  499|      1|    add_errcode("EDEADLK", EDEADLK, "Resource deadlock would occur");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  500|      1|#endif
  501|      1|#ifdef ENOTCONN
  502|      1|    add_errcode("ENOTCONN", ENOTCONN, "Transport endpoint is not connected");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  503|       |#else
  504|       |#ifdef WSAENOTCONN
  505|       |    add_errcode("ENOTCONN", WSAENOTCONN, "Transport endpoint is not connected");
  506|       |#endif
  507|       |#endif
  508|      1|#ifdef EDESTADDRREQ
  509|      1|    add_errcode("EDESTADDRREQ", EDESTADDRREQ, "Destination address required");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  510|       |#else
  511|       |#ifdef WSAEDESTADDRREQ
  512|       |    add_errcode("EDESTADDRREQ", WSAEDESTADDRREQ, "Destination address required");
  513|       |#endif
  514|       |#endif
  515|      1|#ifdef ELIBSCN
  516|      1|    add_errcode("ELIBSCN", ELIBSCN, ".lib section in a.out corrupted");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  517|      1|#endif
  518|      1|#ifdef ENOLCK
  519|      1|    add_errcode("ENOLCK", ENOLCK, "No record locks available");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  520|      1|#endif
  521|      1|#ifdef EISNAM
  522|      1|    add_errcode("EISNAM", EISNAM, "Is a named type file");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  523|      1|#endif
  524|      1|#ifdef ECONNABORTED
  525|      1|    add_errcode("ECONNABORTED", ECONNABORTED, "Software caused connection abort");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  526|       |#else
  527|       |#ifdef WSAECONNABORTED
  528|       |    add_errcode("ECONNABORTED", WSAECONNABORTED, "Software caused connection abort");
  529|       |#endif
  530|       |#endif
  531|      1|#ifdef ENETUNREACH
  532|      1|    add_errcode("ENETUNREACH", ENETUNREACH, "Network is unreachable");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  533|       |#else
  534|       |#ifdef WSAENETUNREACH
  535|       |    add_errcode("ENETUNREACH", WSAENETUNREACH, "Network is unreachable");
  536|       |#endif
  537|       |#endif
  538|      1|#ifdef ESTALE
  539|      1|    add_errcode("ESTALE", ESTALE, "Stale NFS file handle");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  540|       |#else
  541|       |#ifdef WSAESTALE
  542|       |    add_errcode("ESTALE", WSAESTALE, "Stale NFS file handle");
  543|       |#endif
  544|       |#endif
  545|      1|#ifdef ENOSR
  546|      1|    add_errcode("ENOSR", ENOSR, "Out of streams resources");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  547|      1|#endif
  548|      1|#ifdef ENOMEM
  549|      1|    add_errcode("ENOMEM", ENOMEM, "Out of memory");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  550|      1|#endif
  551|      1|#ifdef ENOTSOCK
  552|      1|    add_errcode("ENOTSOCK", ENOTSOCK, "Socket operation on non-socket");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  553|       |#else
  554|       |#ifdef WSAENOTSOCK
  555|       |    add_errcode("ENOTSOCK", WSAENOTSOCK, "Socket operation on non-socket");
  556|       |#endif
  557|       |#endif
  558|      1|#ifdef ESTRPIPE
  559|      1|    add_errcode("ESTRPIPE", ESTRPIPE, "Streams pipe error");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  560|      1|#endif
  561|      1|#ifdef EMLINK
  562|      1|    add_errcode("EMLINK", EMLINK, "Too many links");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  563|      1|#endif
  564|      1|#ifdef ERANGE
  565|      1|    add_errcode("ERANGE", ERANGE, "Math result not representable");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  566|      1|#endif
  567|      1|#ifdef ELIBEXEC
  568|      1|    add_errcode("ELIBEXEC", ELIBEXEC, "Cannot exec a shared library directly");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  569|      1|#endif
  570|      1|#ifdef EL3HLT
  571|      1|    add_errcode("EL3HLT", EL3HLT, "Level 3 halted");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  572|      1|#endif
  573|      1|#ifdef ECONNRESET
  574|      1|    add_errcode("ECONNRESET", ECONNRESET, "Connection reset by peer");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  575|       |#else
  576|       |#ifdef WSAECONNRESET
  577|       |    add_errcode("ECONNRESET", WSAECONNRESET, "Connection reset by peer");
  578|       |#endif
  579|       |#endif
  580|      1|#ifdef EADDRINUSE
  581|      1|    add_errcode("EADDRINUSE", EADDRINUSE, "Address already in use");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  582|       |#else
  583|       |#ifdef WSAEADDRINUSE
  584|       |    add_errcode("EADDRINUSE", WSAEADDRINUSE, "Address already in use");
  585|       |#endif
  586|       |#endif
  587|      1|#ifdef EOPNOTSUPP
  588|      1|    add_errcode("EOPNOTSUPP", EOPNOTSUPP, "Operation not supported on transport endpoint");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  589|       |#else
  590|       |#ifdef WSAEOPNOTSUPP
  591|       |    add_errcode("EOPNOTSUPP", WSAEOPNOTSUPP, "Operation not supported on transport endpoint");
  592|       |#endif
  593|       |#endif
  594|      1|#ifdef EREMCHG
  595|      1|    add_errcode("EREMCHG", EREMCHG, "Remote address changed");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  596|      1|#endif
  597|      1|#ifdef EAGAIN
  598|      1|    add_errcode("EAGAIN", EAGAIN, "Try again");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  599|      1|#endif
  600|      1|#ifdef ENAMETOOLONG
  601|      1|    add_errcode("ENAMETOOLONG", ENAMETOOLONG, "File name too long");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  602|       |#else
  603|       |#ifdef WSAENAMETOOLONG
  604|       |    add_errcode("ENAMETOOLONG", WSAENAMETOOLONG, "File name too long");
  605|       |#endif
  606|       |#endif
  607|      1|#ifdef ENOTTY
  608|      1|    add_errcode("ENOTTY", ENOTTY, "Not a typewriter");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  609|      1|#endif
  610|      1|#ifdef ERESTART
  611|      1|    add_errcode("ERESTART", ERESTART, "Interrupted system call should be restarted");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  612|      1|#endif
  613|      1|#ifdef ESOCKTNOSUPPORT
  614|      1|    add_errcode("ESOCKTNOSUPPORT", ESOCKTNOSUPPORT, "Socket type not supported");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  615|       |#else
  616|       |#ifdef WSAESOCKTNOSUPPORT
  617|       |    add_errcode("ESOCKTNOSUPPORT", WSAESOCKTNOSUPPORT, "Socket type not supported");
  618|       |#endif
  619|       |#endif
  620|      1|#ifdef ETIME
  621|      1|    add_errcode("ETIME", ETIME, "Timer expired");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  622|      1|#endif
  623|      1|#ifdef EBFONT
  624|      1|    add_errcode("EBFONT", EBFONT, "Bad font file format");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  625|      1|#endif
  626|      1|#ifdef EDEADLOCK
  627|      1|    add_errcode("EDEADLOCK", EDEADLOCK, "Error EDEADLOCK");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  628|      1|#endif
  629|      1|#ifdef ETOOMANYREFS
  630|      1|    add_errcode("ETOOMANYREFS", ETOOMANYREFS, "Too many references: cannot splice");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  631|       |#else
  632|       |#ifdef WSAETOOMANYREFS
  633|       |    add_errcode("ETOOMANYREFS", WSAETOOMANYREFS, "Too many references: cannot splice");
  634|       |#endif
  635|       |#endif
  636|      1|#ifdef EMFILE
  637|      1|    add_errcode("EMFILE", EMFILE, "Too many open files");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  638|       |#else
  639|       |#ifdef WSAEMFILE
  640|       |    add_errcode("EMFILE", WSAEMFILE, "Too many open files");
  641|       |#endif
  642|       |#endif
  643|      1|#ifdef ETXTBSY
  644|      1|    add_errcode("ETXTBSY", ETXTBSY, "Text file busy");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  645|      1|#endif
  646|      1|#ifdef EINPROGRESS
  647|      1|    add_errcode("EINPROGRESS", EINPROGRESS, "Operation now in progress");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  648|       |#else
  649|       |#ifdef WSAEINPROGRESS
  650|       |    add_errcode("EINPROGRESS", WSAEINPROGRESS, "Operation now in progress");
  651|       |#endif
  652|       |#endif
  653|      1|#ifdef ENXIO
  654|      1|    add_errcode("ENXIO", ENXIO, "No such device or address");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  655|      1|#endif
  656|      1|#ifdef ENOPKG
  657|      1|    add_errcode("ENOPKG", ENOPKG, "Package not installed");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  658|      1|#endif
  659|       |#ifdef WSASY
  660|       |    add_errcode("WSASY", WSASY, "Error WSASY");
  661|       |#endif
  662|       |#ifdef WSAEHOSTDOWN
  663|       |    add_errcode("WSAEHOSTDOWN", WSAEHOSTDOWN, "Host is down");
  664|       |#endif
  665|       |#ifdef WSAENETDOWN
  666|       |    add_errcode("WSAENETDOWN", WSAENETDOWN, "Network is down");
  667|       |#endif
  668|       |#ifdef WSAENOTSOCK
  669|       |    add_errcode("WSAENOTSOCK", WSAENOTSOCK, "Socket operation on non-socket");
  670|       |#endif
  671|       |#ifdef WSAEHOSTUNREACH
  672|       |    add_errcode("WSAEHOSTUNREACH", WSAEHOSTUNREACH, "No route to host");
  673|       |#endif
  674|       |#ifdef WSAELOOP
  675|       |    add_errcode("WSAELOOP", WSAELOOP, "Too many symbolic links encountered");
  676|       |#endif
  677|       |#ifdef WSAEMFILE
  678|       |    add_errcode("WSAEMFILE", WSAEMFILE, "Too many open files");
  679|       |#endif
  680|       |#ifdef WSAESTALE
  681|       |    add_errcode("WSAESTALE", WSAESTALE, "Stale NFS file handle");
  682|       |#endif
  683|       |#ifdef WSAVERNOTSUPPORTED
  684|       |    add_errcode("WSAVERNOTSUPPORTED", WSAVERNOTSUPPORTED, "Error WSAVERNOTSUPPORTED");
  685|       |#endif
  686|       |#ifdef WSAENETUNREACH
  687|       |    add_errcode("WSAENETUNREACH", WSAENETUNREACH, "Network is unreachable");
  688|       |#endif
  689|       |#ifdef WSAEPROCLIM
  690|       |    add_errcode("WSAEPROCLIM", WSAEPROCLIM, "Error WSAEPROCLIM");
  691|       |#endif
  692|       |#ifdef WSAEFAULT
  693|       |    add_errcode("WSAEFAULT", WSAEFAULT, "Bad address");
  694|       |#endif
  695|       |#ifdef WSANOTINITIALISED
  696|       |    add_errcode("WSANOTINITIALISED", WSANOTINITIALISED, "Error WSANOTINITIALISED");
  697|       |#endif
  698|       |#ifdef WSAEUSERS
  699|       |    add_errcode("WSAEUSERS", WSAEUSERS, "Too many users");
  700|       |#endif
  701|       |#ifdef WSAMAKEASYNCREPL
  702|       |    add_errcode("WSAMAKEASYNCREPL", WSAMAKEASYNCREPL, "Error WSAMAKEASYNCREPL");
  703|       |#endif
  704|       |#ifdef WSAENOPROTOOPT
  705|       |    add_errcode("WSAENOPROTOOPT", WSAENOPROTOOPT, "Protocol not available");
  706|       |#endif
  707|       |#ifdef WSAECONNABORTED
  708|       |    add_errcode("WSAECONNABORTED", WSAECONNABORTED, "Software caused connection abort");
  709|       |#endif
  710|       |#ifdef WSAENAMETOOLONG
  711|       |    add_errcode("WSAENAMETOOLONG", WSAENAMETOOLONG, "File name too long");
  712|       |#endif
  713|       |#ifdef WSAENOTEMPTY
  714|       |    add_errcode("WSAENOTEMPTY", WSAENOTEMPTY, "Directory not empty");
  715|       |#endif
  716|       |#ifdef WSAESHUTDOWN
  717|       |    add_errcode("WSAESHUTDOWN", WSAESHUTDOWN, "Cannot send after transport endpoint shutdown");
  718|       |#endif
  719|       |#ifdef WSAEAFNOSUPPORT
  720|       |    add_errcode("WSAEAFNOSUPPORT", WSAEAFNOSUPPORT, "Address family not supported by protocol");
  721|       |#endif
  722|       |#ifdef WSAETOOMANYREFS
  723|       |    add_errcode("WSAETOOMANYREFS", WSAETOOMANYREFS, "Too many references: cannot splice");
  724|       |#endif
  725|       |#ifdef WSAEACCES
  726|       |    add_errcode("WSAEACCES", WSAEACCES, "Permission denied");
  727|       |#endif
  728|       |#ifdef WSATR
  729|       |    add_errcode("WSATR", WSATR, "Error WSATR");
  730|       |#endif
  731|       |#ifdef WSABASEERR
  732|       |    add_errcode("WSABASEERR", WSABASEERR, "Error WSABASEERR");
  733|       |#endif
  734|       |#ifdef WSADESCRIPTIO
  735|       |    add_errcode("WSADESCRIPTIO", WSADESCRIPTIO, "Error WSADESCRIPTIO");
  736|       |#endif
  737|       |#ifdef WSAEMSGSIZE
  738|       |    add_errcode("WSAEMSGSIZE", WSAEMSGSIZE, "Message too long");
  739|       |#endif
  740|       |#ifdef WSAEBADF
  741|       |    add_errcode("WSAEBADF", WSAEBADF, "Bad file number");
  742|       |#endif
  743|       |#ifdef WSAECONNRESET
  744|       |    add_errcode("WSAECONNRESET", WSAECONNRESET, "Connection reset by peer");
  745|       |#endif
  746|       |#ifdef WSAGETSELECTERRO
  747|       |    add_errcode("WSAGETSELECTERRO", WSAGETSELECTERRO, "Error WSAGETSELECTERRO");
  748|       |#endif
  749|       |#ifdef WSAETIMEDOUT
  750|       |    add_errcode("WSAETIMEDOUT", WSAETIMEDOUT, "Connection timed out");
  751|       |#endif
  752|       |#ifdef WSAENOBUFS
  753|       |    add_errcode("WSAENOBUFS", WSAENOBUFS, "No buffer space available");
  754|       |#endif
  755|       |#ifdef WSAEDISCON
  756|       |    add_errcode("WSAEDISCON", WSAEDISCON, "Error WSAEDISCON");
  757|       |#endif
  758|       |#ifdef WSAEINTR
  759|       |    add_errcode("WSAEINTR", WSAEINTR, "Interrupted system call");
  760|       |#endif
  761|       |#ifdef WSAEPROTOTYPE
  762|       |    add_errcode("WSAEPROTOTYPE", WSAEPROTOTYPE, "Protocol wrong type for socket");
  763|       |#endif
  764|       |#ifdef WSAHOS
  765|       |    add_errcode("WSAHOS", WSAHOS, "Error WSAHOS");
  766|       |#endif
  767|       |#ifdef WSAEADDRINUSE
  768|       |    add_errcode("WSAEADDRINUSE", WSAEADDRINUSE, "Address already in use");
  769|       |#endif
  770|       |#ifdef WSAEADDRNOTAVAIL
  771|       |    add_errcode("WSAEADDRNOTAVAIL", WSAEADDRNOTAVAIL, "Cannot assign requested address");
  772|       |#endif
  773|       |#ifdef WSAEALREADY
  774|       |    add_errcode("WSAEALREADY", WSAEALREADY, "Operation already in progress");
  775|       |#endif
  776|       |#ifdef WSAEPROTONOSUPPORT
  777|       |    add_errcode("WSAEPROTONOSUPPORT", WSAEPROTONOSUPPORT, "Protocol not supported");
  778|       |#endif
  779|       |#ifdef WSASYSNOTREADY
  780|       |    add_errcode("WSASYSNOTREADY", WSASYSNOTREADY, "Error WSASYSNOTREADY");
  781|       |#endif
  782|       |#ifdef WSAEWOULDBLOCK
  783|       |    add_errcode("WSAEWOULDBLOCK", WSAEWOULDBLOCK, "Operation would block");
  784|       |#endif
  785|       |#ifdef WSAEPFNOSUPPORT
  786|       |    add_errcode("WSAEPFNOSUPPORT", WSAEPFNOSUPPORT, "Protocol family not supported");
  787|       |#endif
  788|       |#ifdef WSAEOPNOTSUPP
  789|       |    add_errcode("WSAEOPNOTSUPP", WSAEOPNOTSUPP, "Operation not supported on transport endpoint");
  790|       |#endif
  791|       |#ifdef WSAEISCONN
  792|       |    add_errcode("WSAEISCONN", WSAEISCONN, "Transport endpoint is already connected");
  793|       |#endif
  794|       |#ifdef WSAEDQUOT
  795|       |    add_errcode("WSAEDQUOT", WSAEDQUOT, "Quota exceeded");
  796|       |#endif
  797|       |#ifdef WSAENOTCONN
  798|       |    add_errcode("WSAENOTCONN", WSAENOTCONN, "Transport endpoint is not connected");
  799|       |#endif
  800|       |#ifdef WSAEREMOTE
  801|       |    add_errcode("WSAEREMOTE", WSAEREMOTE, "Object is remote");
  802|       |#endif
  803|       |#ifdef WSAEINVAL
  804|       |    add_errcode("WSAEINVAL", WSAEINVAL, "Invalid argument");
  805|       |#endif
  806|       |#ifdef WSAEINPROGRESS
  807|       |    add_errcode("WSAEINPROGRESS", WSAEINPROGRESS, "Operation now in progress");
  808|       |#endif
  809|       |#ifdef WSAGETSELECTEVEN
  810|       |    add_errcode("WSAGETSELECTEVEN", WSAGETSELECTEVEN, "Error WSAGETSELECTEVEN");
  811|       |#endif
  812|       |#ifdef WSAESOCKTNOSUPPORT
  813|       |    add_errcode("WSAESOCKTNOSUPPORT", WSAESOCKTNOSUPPORT, "Socket type not supported");
  814|       |#endif
  815|       |#ifdef WSAGETASYNCERRO
  816|       |    add_errcode("WSAGETASYNCERRO", WSAGETASYNCERRO, "Error WSAGETASYNCERRO");
  817|       |#endif
  818|       |#ifdef WSAMAKESELECTREPL
  819|       |    add_errcode("WSAMAKESELECTREPL", WSAMAKESELECTREPL, "Error WSAMAKESELECTREPL");
  820|       |#endif
  821|       |#ifdef WSAGETASYNCBUFLE
  822|       |    add_errcode("WSAGETASYNCBUFLE", WSAGETASYNCBUFLE, "Error WSAGETASYNCBUFLE");
  823|       |#endif
  824|       |#ifdef WSAEDESTADDRREQ
  825|       |    add_errcode("WSAEDESTADDRREQ", WSAEDESTADDRREQ, "Destination address required");
  826|       |#endif
  827|       |#ifdef WSAECONNREFUSED
  828|       |    add_errcode("WSAECONNREFUSED", WSAECONNREFUSED, "Connection refused");
  829|       |#endif
  830|       |#ifdef WSAENETRESET
  831|       |    add_errcode("WSAENETRESET", WSAENETRESET, "Network dropped connection because of reset");
  832|       |#endif
  833|       |#ifdef WSAN
  834|       |    add_errcode("WSAN", WSAN, "Error WSAN");
  835|       |#endif
  836|      1|#ifdef ENOMEDIUM
  837|      1|    add_errcode("ENOMEDIUM", ENOMEDIUM, "No medium found");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  838|      1|#endif
  839|      1|#ifdef EMEDIUMTYPE
  840|      1|    add_errcode("EMEDIUMTYPE", EMEDIUMTYPE, "Wrong medium type");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  841|      1|#endif
  842|      1|#ifdef ECANCELED
  843|      1|    add_errcode("ECANCELED", ECANCELED, "Operation Canceled");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  844|      1|#endif
  845|      1|#ifdef ENOKEY
  846|      1|    add_errcode("ENOKEY", ENOKEY, "Required key not available");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  847|      1|#endif
  848|      1|#ifdef EHWPOISON
  849|      1|    add_errcode("EHWPOISON", EHWPOISON, "Memory page has hardware error");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  850|      1|#endif
  851|      1|#ifdef EKEYEXPIRED
  852|      1|    add_errcode("EKEYEXPIRED", EKEYEXPIRED, "Key has expired");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  853|      1|#endif
  854|      1|#ifdef EKEYREVOKED
  855|      1|    add_errcode("EKEYREVOKED", EKEYREVOKED, "Key has been revoked");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  856|      1|#endif
  857|      1|#ifdef EKEYREJECTED
  858|      1|    add_errcode("EKEYREJECTED", EKEYREJECTED, "Key was rejected by service");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  859|      1|#endif
  860|      1|#ifdef EOWNERDEAD
  861|      1|    add_errcode("EOWNERDEAD", EOWNERDEAD, "Owner died");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  862|      1|#endif
  863|      1|#ifdef ENOTRECOVERABLE
  864|      1|    add_errcode("ENOTRECOVERABLE", ENOTRECOVERABLE, "State not recoverable");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  865|      1|#endif
  866|      1|#ifdef ERFKILL
  867|      1|    add_errcode("ERFKILL", ERFKILL, "Operation not possible due to RF-kill");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  868|      1|#endif
  869|       |
  870|       |    /* Solaris-specific errnos */
  871|      1|#ifdef ECANCELED
  872|      1|    add_errcode("ECANCELED", ECANCELED, "Operation canceled");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  873|      1|#endif
  874|      1|#ifdef ENOTSUP
  875|      1|    add_errcode("ENOTSUP", ENOTSUP, "Operation not supported");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  876|      1|#endif
  877|      1|#ifdef EOWNERDEAD
  878|      1|    add_errcode("EOWNERDEAD", EOWNERDEAD, "Process died with the lock");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  879|      1|#endif
  880|      1|#ifdef ENOTRECOVERABLE
  881|      1|    add_errcode("ENOTRECOVERABLE", ENOTRECOVERABLE, "Lock is not recoverable");
  ------------------
  |  |  106|      1|    do {                                                               \
  |  |  107|      1|        if (_add_errcode(module_dict, error_dict, name, code) < 0) {   \
  |  |  ------------------
  |  |  |  Branch (107:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  108|      0|            Py_DECREF(error_dict);                                     \
  |  |  ------------------
  |  |  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  109|      0|            return -1;                                                 \
  |  |  110|      0|        }                                                              \
  |  |  111|      1|    } while (0);
  |  |  ------------------
  |  |  |  Branch (111:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  882|      1|#endif
  883|       |#ifdef ELOCKUNMAPPED
  884|       |    add_errcode("ELOCKUNMAPPED", ELOCKUNMAPPED, "Locked lock was unmapped");
  885|       |#endif
  886|       |#ifdef ENOTACTIVE
  887|       |    add_errcode("ENOTACTIVE", ENOTACTIVE, "Facility is not active");
  888|       |#endif
  889|       |
  890|       |    /* MacOSX specific errnos */
  891|       |#ifdef EAUTH
  892|       |    add_errcode("EAUTH", EAUTH, "Authentication error");
  893|       |#endif
  894|       |#ifdef EBADARCH
  895|       |    add_errcode("EBADARCH", EBADARCH, "Bad CPU type in executable");
  896|       |#endif
  897|       |#ifdef EBADEXEC
  898|       |    add_errcode("EBADEXEC", EBADEXEC, "Bad executable (or shared library)");
  899|       |#endif
  900|       |#ifdef EBADMACHO
  901|       |    add_errcode("EBADMACHO", EBADMACHO, "Malformed Mach-o file");
  902|       |#endif
  903|       |#ifdef EBADRPC
  904|       |    add_errcode("EBADRPC", EBADRPC, "RPC struct is bad");
  905|       |#endif
  906|       |#ifdef EDEVERR
  907|       |    add_errcode("EDEVERR", EDEVERR, "Device error");
  908|       |#endif
  909|       |#ifdef EFTYPE
  910|       |    add_errcode("EFTYPE", EFTYPE, "Inappropriate file type or format");
  911|       |#endif
  912|       |#ifdef ENEEDAUTH
  913|       |    add_errcode("ENEEDAUTH", ENEEDAUTH, "Need authenticator");
  914|       |#endif
  915|       |#ifdef ENOATTR
  916|       |    add_errcode("ENOATTR", ENOATTR, "Attribute not found");
  917|       |#endif
  918|       |#ifdef ENOPOLICY
  919|       |    add_errcode("ENOPOLICY", ENOPOLICY, "Policy not found");
  920|       |#endif
  921|       |#ifdef EPROCLIM
  922|       |    add_errcode("EPROCLIM", EPROCLIM, "Too many processes");
  923|       |#endif
  924|       |#ifdef EPROCUNAVAIL
  925|       |    add_errcode("EPROCUNAVAIL", EPROCUNAVAIL, "Bad procedure for program");
  926|       |#endif
  927|       |#ifdef EPROGMISMATCH
  928|       |    add_errcode("EPROGMISMATCH", EPROGMISMATCH, "Program version wrong");
  929|       |#endif
  930|       |#ifdef EPROGUNAVAIL
  931|       |    add_errcode("EPROGUNAVAIL", EPROGUNAVAIL, "RPC prog. not avail");
  932|       |#endif
  933|       |#ifdef EPWROFF
  934|       |    add_errcode("EPWROFF", EPWROFF, "Device power is off");
  935|       |#endif
  936|       |#ifdef ERPCMISMATCH
  937|       |    add_errcode("ERPCMISMATCH", ERPCMISMATCH, "RPC version wrong");
  938|       |#endif
  939|       |#ifdef ESHLIBVERS
  940|       |    add_errcode("ESHLIBVERS", ESHLIBVERS, "Shared library version mismatch");
  941|       |#endif
  942|       |#ifdef EQFULL
  943|       |    add_errcode("EQFULL", EQFULL, "Interface output queue is full");
  944|       |#endif
  945|       |#ifdef ENOTCAPABLE
  946|       |    // WASI extension
  947|       |    add_errcode("ENOTCAPABLE", ENOTCAPABLE, "Capabilities insufficient");
  948|       |#endif
  949|       |
  950|      1|    Py_DECREF(error_dict);
  ------------------
  |  |  340|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  951|      1|    return 0;
  952|      1|}
errnomodule.c:_add_errcode:
   60|    137|{
   61|    137|    PyObject *name = PyUnicode_FromString(name_str);
   62|    137|    if (!name) {
  ------------------
  |  Branch (62:9): [True: 0, False: 137]
  ------------------
   63|      0|        return -1;
   64|      0|    }
   65|       |
   66|    137|    PyObject *code = PyLong_FromLong(code_int);
   67|    137|    if (!code) {
  ------------------
  |  Branch (67:9): [True: 0, False: 137]
  ------------------
   68|      0|        Py_DECREF(name);
  ------------------
  |  |  340|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   69|      0|        return -1;
   70|      0|    }
   71|       |
   72|    137|    int ret = -1;
   73|       |    /* insert in modules dict */
   74|    137|    if (PyDict_SetItem(module_dict, name, code) < 0) {
  ------------------
  |  Branch (74:9): [True: 0, False: 137]
  ------------------
   75|      0|        goto end;
   76|      0|    }
   77|       |    /* insert in errorcode dict */
   78|    137|    if (PyDict_SetItem(error_dict, code, name) < 0) {
  ------------------
  |  Branch (78:9): [True: 0, False: 137]
  ------------------
   79|      0|        goto end;
   80|      0|    }
   81|    137|    ret = 0;
   82|    137|end:
   83|    137|    Py_DECREF(name);
  ------------------
  |  |  340|    137|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    137|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    137|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   84|    137|    Py_DECREF(code);
  ------------------
  |  |  340|    137|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    137|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    137|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   85|    137|    return ret;
   86|    137|}

_PyFaulthandler_Init:
 1476|      1|{
 1477|      1|#ifdef FAULTHANDLER_USE_ALT_STACK
 1478|      1|    memset(&stack, 0, sizeof(stack));
  ------------------
  |  |   86|      1|#  define stack _PyRuntime.faulthandler.stack
  ------------------
                  memset(&stack, 0, sizeof(stack));
  ------------------
  |  |   86|      1|#  define stack _PyRuntime.faulthandler.stack
  ------------------
 1479|      1|    stack.ss_flags = 0;
  ------------------
  |  |   86|      1|#  define stack _PyRuntime.faulthandler.stack
  ------------------
 1480|       |    /* bpo-21131: allocate dedicated stack of SIGSTKSZ*2 bytes, instead of just
 1481|       |       SIGSTKSZ bytes. Calling the previous signal handler in faulthandler
 1482|       |       signal handler uses more than SIGSTKSZ bytes of stack memory on some
 1483|       |       platforms. */
 1484|      1|    stack.ss_size = SIGSTKSZ * 2;
  ------------------
  |  |   86|      1|#  define stack _PyRuntime.faulthandler.stack
  ------------------
 1485|      1|#ifdef AT_MINSIGSTKSZ
 1486|       |    /* bpo-46968: Query Linux for minimal stack size to ensure signal delivery
 1487|       |       for the hardware running CPython. This OS feature is available in
 1488|       |       Linux kernel version >= 5.14 */
 1489|      1|    unsigned long at_minstack_size = getauxval(AT_MINSIGSTKSZ);
 1490|      1|    if (at_minstack_size != 0) {
  ------------------
  |  Branch (1490:9): [True: 0, False: 1]
  ------------------
 1491|      0|        stack.ss_size = SIGSTKSZ + at_minstack_size;
  ------------------
  |  |   86|      0|#  define stack _PyRuntime.faulthandler.stack
  ------------------
 1492|      0|    }
 1493|      1|#endif
 1494|      1|#endif
 1495|       |
 1496|      1|    memset(&thread, 0, sizeof(thread));
  ------------------
  |  |   60|      1|#define thread _PyRuntime.faulthandler.thread
  ------------------
                  memset(&thread, 0, sizeof(thread));
  ------------------
  |  |   60|      1|#define thread _PyRuntime.faulthandler.thread
  ------------------
 1497|       |
 1498|      1|    if (enable) {
  ------------------
  |  Branch (1498:9): [True: 0, False: 1]
  ------------------
 1499|      0|        if (faulthandler_init_enable() < 0) {
  ------------------
  |  Branch (1499:13): [True: 0, False: 0]
  ------------------
 1500|      0|            return _PyStatus_ERR("failed to enable faulthandler");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 1501|      0|        }
 1502|      0|    }
 1503|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 1504|      1|}

Py_GetBuildInfo:
   46|      1|{
   47|      1|    if (initialized) {
  ------------------
  |  Branch (47:9): [True: 0, False: 1]
  ------------------
   48|      0|        return buildinfo;
   49|      0|    }
   50|      1|    initialized = 1;
   51|      1|    const char *revision = _Py_gitversion();
   52|      1|    const char *sep = *revision ? ":" : "";
  ------------------
  |  Branch (52:23): [True: 1, False: 0]
  ------------------
   53|      1|    const char *gitid = _Py_gitidentifier();
   54|      1|    if (!(*gitid)) {
  ------------------
  |  Branch (54:9): [True: 0, False: 1]
  ------------------
   55|      0|        gitid = "main";
   56|      0|    }
   57|      1|    PyOS_snprintf(buildinfo, sizeof(buildinfo),
   58|      1|                  "%s%s%s, %.20s, %.9s", gitid, sep, revision,
   59|      1|                  DATE, TIME);
  ------------------
  |  |   14|       |#define DATE __DATE__
  ------------------
                                DATE, TIME);
  ------------------
  |  |   22|       |#define TIME __TIME__
  ------------------
   60|      1|    return buildinfo;
   61|      1|}
_Py_gitversion:
   65|      2|{
   66|      2|    return GITVERSION;
   67|      2|}
_Py_gitidentifier:
   71|      2|{
   72|      2|    const char *gittag, *gitid;
   73|      2|    gittag = GITTAG;
   74|      2|    if ((*gittag) && strcmp(gittag, "undefined") != 0)
  ------------------
  |  Branch (74:9): [True: 2, False: 0]
  |  Branch (74:22): [True: 2, False: 0]
  ------------------
   75|      2|        gitid = gittag;
   76|      0|    else
   77|      0|        gitid = GITBRANCH;
   78|      2|    return gitid;
   79|      2|}

_Py_Get_Getpath_CodeObject:
  834|      1|{
  835|      1|    return PyMarshal_ReadObjectFromString(
  836|      1|        (const char*)_Py_M__getpath, sizeof(_Py_M__getpath));
  837|      1|}
_PyConfig_InitPathConfig:
  857|      2|{
  858|      2|    PyStatus status = _PyPathConfig_ReadGlobal(config);
  859|       |
  860|      2|    if (_PyStatus_EXCEPTION(status) || !compute_path_config) {
  ------------------
  |  |   43|      4|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (860:40): [True: 1, False: 1]
  ------------------
  861|      1|        return status;
  862|      1|    }
  863|       |
  864|      1|    if (!_PyThreadState_GET()) {
  ------------------
  |  Branch (864:9): [True: 0, False: 1]
  ------------------
  865|      0|        return PyStatus_Error("cannot calculate path configuration without GIL");
  866|      0|    }
  867|       |
  868|      1|    PyObject *configDict = _PyConfig_AsDict(config);
  869|      1|    if (!configDict) {
  ------------------
  |  Branch (869:9): [True: 0, False: 1]
  ------------------
  870|      0|        PyErr_Clear();
  871|      0|        return PyStatus_NoMemory();
  872|      0|    }
  873|       |
  874|      1|    PyObject *dict = PyDict_New();
  875|      1|    if (!dict) {
  ------------------
  |  Branch (875:9): [True: 0, False: 1]
  ------------------
  876|      0|        PyErr_Clear();
  877|      0|        Py_DECREF(configDict);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  878|      0|        return PyStatus_NoMemory();
  879|      0|    }
  880|       |
  881|      1|    if (PyDict_SetItemString(dict, "config", configDict) < 0) {
  ------------------
  |  Branch (881:9): [True: 0, False: 1]
  ------------------
  882|      0|        PyErr_Clear();
  883|      0|        Py_DECREF(configDict);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  884|      0|        Py_DECREF(dict);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  885|      0|        return PyStatus_NoMemory();
  886|      0|    }
  887|       |    /* reference now held by dict */
  888|      1|    Py_DECREF(configDict);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  889|       |
  890|      1|    PyObject *co = _Py_Get_Getpath_CodeObject();
  891|      1|    if (!co || !PyCode_Check(co)) {
  ------------------
  |  |  164|      1|#define PyCode_Check(op) Py_IS_TYPE((op), &PyCode_Type)
  |  |  ------------------
  |  |  |  |  215|      1|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (891:9): [True: 0, False: 1]
  |  Branch (891:16): [True: 0, False: 1]
  ------------------
  892|      0|        PyErr_Clear();
  893|      0|        Py_XDECREF(co);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  894|      0|        Py_DECREF(dict);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  895|      0|        return PyStatus_Error("error reading frozen getpath.py");
  896|      0|    }
  897|       |
  898|       |#ifdef MS_WINDOWS
  899|       |    PyObject *winreg = PyImport_ImportModule("winreg");
  900|       |    if (!winreg || PyDict_SetItemString(dict, "winreg", winreg) < 0) {
  901|       |        PyErr_Clear();
  902|       |        Py_XDECREF(winreg);
  903|       |        if (PyDict_SetItemString(dict, "winreg", Py_None) < 0) {
  904|       |            PyErr_Clear();
  905|       |            Py_DECREF(co);
  906|       |            Py_DECREF(dict);
  907|       |            return PyStatus_Error("error importing winreg module");
  908|       |        }
  909|       |    } else {
  910|       |        Py_DECREF(winreg);
  911|       |    }
  912|       |#endif
  913|       |
  914|      1|    if (
  915|       |#ifdef MS_WINDOWS
  916|       |        !decode_to_dict(dict, "os_name", "nt") ||
  917|       |#elif defined(__APPLE__)
  918|       |        !decode_to_dict(dict, "os_name", "darwin") ||
  919|       |#else
  920|      1|        !decode_to_dict(dict, "os_name", "posix") ||
  ------------------
  |  Branch (920:9): [True: 0, False: 1]
  ------------------
  921|      1|#endif
  922|       |#ifdef WITH_NEXT_FRAMEWORK
  923|       |        !int_to_dict(dict, "WITH_NEXT_FRAMEWORK", 1) ||
  924|       |#else
  925|      1|        !int_to_dict(dict, "WITH_NEXT_FRAMEWORK", 0) ||
  ------------------
  |  Branch (925:9): [True: 0, False: 1]
  ------------------
  926|      1|#endif
  927|      1|        !decode_to_dict(dict, "PREFIX", PREFIX) ||
  ------------------
  |  Branch (927:9): [True: 0, False: 1]
  ------------------
  928|      1|        !decode_to_dict(dict, "EXEC_PREFIX", EXEC_PREFIX) ||
  ------------------
  |  Branch (928:9): [True: 0, False: 1]
  ------------------
  929|      1|        !decode_to_dict(dict, "PYTHONPATH", PYTHONPATH) ||
  ------------------
  |  Branch (929:9): [True: 0, False: 1]
  ------------------
  930|      1|        !decode_to_dict(dict, "VPATH", VPATH) ||
  ------------------
  |  Branch (930:9): [True: 0, False: 1]
  ------------------
  931|      1|        !decode_to_dict(dict, "PLATLIBDIR", PLATLIBDIR) ||
  ------------------
  |  Branch (931:9): [True: 0, False: 1]
  ------------------
  932|      1|        !decode_to_dict(dict, "PYDEBUGEXT", PYDEBUGEXT) ||
  ------------------
  |  |   41|      1|#define PYDEBUGEXT NULL
  ------------------
  |  Branch (932:9): [True: 0, False: 1]
  ------------------
  933|      1|        !int_to_dict(dict, "VERSION_MAJOR", PY_MAJOR_VERSION) ||
  ------------------
  |  |   23|      1|#define PY_MAJOR_VERSION        3
  ------------------
  |  Branch (933:9): [True: 0, False: 1]
  ------------------
  934|      1|        !int_to_dict(dict, "VERSION_MINOR", PY_MINOR_VERSION) ||
  ------------------
  |  |   24|      1|#define PY_MINOR_VERSION        16
  ------------------
  |  Branch (934:9): [True: 0, False: 1]
  ------------------
  935|      1|        !decode_to_dict(dict, "PYWINVER", PYWINVER) ||
  ------------------
  |  |   48|      1|#define PYWINVER NULL
  ------------------
  |  Branch (935:9): [True: 0, False: 1]
  ------------------
  936|      1|        !wchar_to_dict(dict, "EXE_SUFFIX", EXE_SUFFIX) ||
  ------------------
  |  |   56|      1|#define EXE_SUFFIX NULL
  ------------------
  |  Branch (936:9): [True: 0, False: 1]
  ------------------
  937|      1|        !env_to_dict(dict, "ENV_PATH", 0) ||
  ------------------
  |  Branch (937:9): [True: 0, False: 1]
  ------------------
  938|      1|        !env_to_dict(dict, "ENV_PYTHONHOME", 0) ||
  ------------------
  |  Branch (938:9): [True: 0, False: 1]
  ------------------
  939|      1|        !env_to_dict(dict, "ENV_PYTHONEXECUTABLE", 0) ||
  ------------------
  |  Branch (939:9): [True: 0, False: 1]
  ------------------
  940|      1|        !env_to_dict(dict, "ENV___PYVENV_LAUNCHER__", 1) ||
  ------------------
  |  Branch (940:9): [True: 0, False: 1]
  ------------------
  941|      1|        !progname_to_dict(dict, "real_executable") ||
  ------------------
  |  Branch (941:9): [True: 0, False: 1]
  ------------------
  942|      1|        !library_to_dict(dict, "library") ||
  ------------------
  |  Branch (942:9): [True: 0, False: 1]
  ------------------
  943|      1|        !wchar_to_dict(dict, "executable_dir", NULL) ||
  ------------------
  |  Branch (943:9): [True: 0, False: 1]
  ------------------
  944|      1|        !wchar_to_dict(dict, "py_setpath", _PyPathConfig_GetGlobalModuleSearchPath()) ||
  ------------------
  |  Branch (944:9): [True: 0, False: 1]
  ------------------
  945|      1|        !funcs_to_dict(dict, config->pathconfig_warnings) ||
  ------------------
  |  Branch (945:9): [True: 0, False: 1]
  ------------------
  946|       |#ifdef Py_GIL_DISABLED
  947|       |        !decode_to_dict(dict, "ABI_THREAD", "t") ||
  948|       |#else
  949|      1|        !decode_to_dict(dict, "ABI_THREAD", "") ||
  ------------------
  |  Branch (949:9): [True: 0, False: 1]
  ------------------
  950|      1|#endif
  951|      1|#ifndef MS_WINDOWS
  952|      1|        PyDict_SetItemString(dict, "winreg", Py_None) < 0 ||
  ------------------
  |  |  616|      1|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (952:9): [True: 0, False: 1]
  ------------------
  953|      1|#endif
  954|      1|        PyDict_SetItemString(dict, "__builtins__", PyEval_GetBuiltins()) < 0
  ------------------
  |  Branch (954:9): [True: 0, False: 1]
  ------------------
  955|      1|    ) {
  956|      0|        Py_DECREF(co);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  957|      0|        Py_DECREF(dict);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  958|      0|        PyErr_FormatUnraisable("Exception ignored while preparing getpath");
  959|      0|        return PyStatus_Error("error evaluating initial values");
  960|      0|    }
  961|       |
  962|      1|    PyObject *r = PyEval_EvalCode(co, dict, dict);
  963|      1|    Py_DECREF(co);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  964|       |
  965|      1|    if (!r) {
  ------------------
  |  Branch (965:9): [True: 0, False: 1]
  ------------------
  966|      0|        Py_DECREF(dict);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  967|      0|        PyErr_FormatUnraisable("Exception ignored while running getpath");
  968|      0|        return PyStatus_Error("error evaluating path");
  969|      0|    }
  970|      1|    Py_DECREF(r);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  971|       |
  972|      1|    if (_PyConfig_FromDict(config, configDict) < 0) {
  ------------------
  |  Branch (972:9): [True: 0, False: 1]
  ------------------
  973|      0|        PyErr_FormatUnraisable("Exception ignored while reading getpath results");
  974|      0|        Py_DECREF(dict);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  975|      0|        return PyStatus_Error("error getting getpath results");
  976|      0|    }
  977|       |
  978|      1|    Py_DECREF(dict);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  979|       |
  980|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
  981|      1|}
getpath.c:decode_to_dict:
  659|      9|{
  660|      9|    PyObject *u = NULL;
  661|      9|    int r;
  662|      9|    if (s && s[0]) {
  ------------------
  |  Branch (662:9): [True: 7, False: 2]
  |  Branch (662:14): [True: 4, False: 3]
  ------------------
  663|      4|        size_t len;
  664|      4|        const wchar_t *w = Py_DecodeLocale(s, &len);
  665|      4|        if (w) {
  ------------------
  |  Branch (665:13): [True: 4, False: 0]
  ------------------
  666|      4|            u = PyUnicode_FromWideChar(w, len);
  667|      4|            PyMem_RawFree((void *)w);
  668|      4|        }
  669|      4|        if (!u) {
  ------------------
  |  Branch (669:13): [True: 0, False: 4]
  ------------------
  670|      0|            return 0;
  671|      0|        }
  672|      5|    } else {
  673|      5|        u = Py_NewRef(Py_None);
  ------------------
  |  |  550|      5|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  674|      5|    }
  675|      9|    r = PyDict_SetItemString(dict, key, u) == 0;
  676|      9|    Py_DECREF(u);
  ------------------
  |  |  430|      9|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      9|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      9|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  677|      9|    return r;
  678|      9|}
getpath.c:int_to_dict:
  738|      3|{
  739|      3|    PyObject *o;
  740|      3|    int r;
  741|      3|    o = PyLong_FromLong(v);
  742|      3|    if (!o) {
  ------------------
  |  Branch (742:9): [True: 0, False: 3]
  ------------------
  743|      0|        return 0;
  744|      0|    }
  745|      3|    r = PyDict_SetItemString(dict, key, o) == 0;
  746|      3|    Py_DECREF(o);
  ------------------
  |  |  430|      3|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  747|      3|    return r;
  748|      3|}
getpath.c:wchar_to_dict:
  639|      3|{
  640|      3|    PyObject *u;
  641|      3|    int r;
  642|      3|    if (s && s[0]) {
  ------------------
  |  Branch (642:9): [True: 0, False: 3]
  |  Branch (642:14): [True: 0, False: 0]
  ------------------
  643|      0|        u = PyUnicode_FromWideChar(s, -1);
  644|      0|        if (!u) {
  ------------------
  |  Branch (644:13): [True: 0, False: 0]
  ------------------
  645|      0|            return 0;
  646|      0|        }
  647|      3|    } else {
  648|      3|        u = Py_NewRef(Py_None);
  ------------------
  |  |  550|      3|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  649|      3|    }
  650|      3|    r = PyDict_SetItemString(dict, key, u) == 0;
  651|      3|    Py_DECREF(u);
  ------------------
  |  |  430|      3|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  652|      3|    return r;
  653|      3|}
getpath.c:env_to_dict:
  683|      4|{
  684|      4|    PyObject *u = NULL;
  685|      4|    int r = 0;
  686|      4|    assert(strncmp(key, "ENV_", 4) == 0);
  ------------------
  |  Branch (686:5): [True: 4, False: 0]
  ------------------
  687|      4|    assert(strlen(key) < 64);
  ------------------
  |  Branch (687:5): [True: 4, False: 0]
  ------------------
  688|       |#ifdef MS_WINDOWS
  689|       |    wchar_t wkey[64];
  690|       |    // Quick convert to wchar_t, since we know key is ASCII
  691|       |    wchar_t *wp = wkey;
  692|       |    for (const char *p = &key[4]; *p; ++p) {
  693|       |        assert(!(*p & 0x80));
  694|       |        *wp++ = *p;
  695|       |    }
  696|       |    *wp = L'\0';
  697|       |    const wchar_t *v = _wgetenv(wkey);
  698|       |    if (v) {
  699|       |        u = PyUnicode_FromWideChar(v, -1);
  700|       |        if (!u) {
  701|       |            PyErr_Clear();
  702|       |        }
  703|       |    }
  704|       |#else
  705|      4|    const char *v = getenv(&key[4]);
  706|      4|    if (v) {
  ------------------
  |  Branch (706:9): [True: 1, False: 3]
  ------------------
  707|      1|        size_t len;
  708|      1|        const wchar_t *w = Py_DecodeLocale(v, &len);
  709|      1|        if (w) {
  ------------------
  |  Branch (709:13): [True: 1, False: 0]
  ------------------
  710|      1|            u = PyUnicode_FromWideChar(w, len);
  711|      1|            if (!u) {
  ------------------
  |  Branch (711:17): [True: 0, False: 1]
  ------------------
  712|      0|                PyErr_Clear();
  713|      0|            }
  714|      1|            PyMem_RawFree((void *)w);
  715|      1|        }
  716|      1|    }
  717|      4|#endif
  718|      4|    if (u) {
  ------------------
  |  Branch (718:9): [True: 1, False: 3]
  ------------------
  719|      1|        r = PyDict_SetItemString(dict, key, u) == 0;
  720|      1|        Py_DECREF(u);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  721|      3|    } else {
  722|      3|        r = PyDict_SetItemString(dict, key, Py_None) == 0;
  ------------------
  |  |  616|      3|#  define Py_None (&_Py_NoneStruct)
  ------------------
  723|      3|    }
  724|      4|    if (r && and_clear) {
  ------------------
  |  Branch (724:9): [True: 4, False: 0]
  |  Branch (724:14): [True: 1, False: 3]
  ------------------
  725|       |#ifdef MS_WINDOWS
  726|       |        _wputenv_s(wkey, L"");
  727|       |#else
  728|      1|        unsetenv(&key[4]);
  729|      1|#endif
  730|      1|    }
  731|      4|    return r;
  732|      4|}
getpath.c:progname_to_dict:
  775|      1|{
  776|       |#ifdef MS_WINDOWS
  777|       |    return winmodule_to_dict(dict, key, NULL);
  778|       |#elif defined(__APPLE__)
  779|       |    char *path;
  780|       |    uint32_t pathLen = 256;
  781|       |    while (pathLen) {
  782|       |        path = PyMem_RawMalloc((pathLen + 1) * sizeof(char));
  783|       |        if (!path) {
  784|       |            return 0;
  785|       |        }
  786|       |        if (_NSGetExecutablePath(path, &pathLen) != 0) {
  787|       |            PyMem_RawFree(path);
  788|       |            continue;
  789|       |        }
  790|       |        // Only keep if the path is absolute
  791|       |        if (path[0] == SEP) {
  792|       |            int r = decode_to_dict(dict, key, path);
  793|       |            PyMem_RawFree(path);
  794|       |            return r;
  795|       |        }
  796|       |        // Fall back and store None
  797|       |        PyMem_RawFree(path);
  798|       |        break;
  799|       |    }
  800|       |#endif
  801|      1|    return PyDict_SetItemString(dict, key, Py_None) == 0;
  ------------------
  |  |  616|      1|#  define Py_None (&_Py_NoneStruct)
  ------------------
  802|      1|}
getpath.c:library_to_dict:
  808|      1|{
  809|       |/* macOS framework builds do not link against a libpython dynamic library, but
  810|       |   instead link against a macOS Framework. */
  811|       |#if defined(Py_ENABLE_SHARED) || defined(WITH_NEXT_FRAMEWORK)
  812|       |
  813|       |#ifdef MS_WINDOWS
  814|       |    extern HMODULE PyWin_DLLhModule;
  815|       |    if (PyWin_DLLhModule) {
  816|       |        return winmodule_to_dict(dict, key, PyWin_DLLhModule);
  817|       |    }
  818|       |#endif
  819|       |
  820|       |#if HAVE_DLADDR
  821|       |    Dl_info libpython_info;
  822|       |    if (dladdr(&Py_Initialize, &libpython_info) && libpython_info.dli_fname) {
  823|       |        return decode_to_dict(dict, key, libpython_info.dli_fname);
  824|       |    }
  825|       |#endif
  826|       |#endif
  827|       |
  828|      1|    return PyDict_SetItemString(dict, key, Py_None) == 0;
  ------------------
  |  |  616|      1|#  define Py_None (&_Py_NoneStruct)
  ------------------
  829|      1|}
getpath.c:funcs_to_dict:
  610|      1|{
  611|     12|    for (PyMethodDef *m = getpath_methods; m->ml_name; ++m) {
  ------------------
  |  Branch (611:44): [True: 11, False: 1]
  ------------------
  612|     11|        PyObject *f = PyCFunction_NewEx(m, NULL, NULL);
  ------------------
  |  |   87|     11|#define PyCFunction_NewEx(ML, SELF, MOD) PyCMethod_New((ML), (SELF), (MOD), NULL)
  ------------------
  613|     11|        if (!f) {
  ------------------
  |  Branch (613:13): [True: 0, False: 11]
  ------------------
  614|      0|            return 0;
  615|      0|        }
  616|     11|        if (PyDict_SetItemString(dict, m->ml_name, f) < 0) {
  ------------------
  |  Branch (616:13): [True: 0, False: 11]
  ------------------
  617|      0|            Py_DECREF(f);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  618|      0|            return 0;
  619|      0|        }
  620|     11|        Py_DECREF(f);
  ------------------
  |  |  430|     11|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     11|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     11|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  621|     11|    }
  622|      1|    PyMethodDef *m2 = warnings ? &getpath_warn_method : &getpath_nowarn_method;
  ------------------
  |  Branch (622:23): [True: 1, False: 0]
  ------------------
  623|      1|    PyObject *f = PyCFunction_NewEx(m2, NULL, NULL);
  ------------------
  |  |   87|      1|#define PyCFunction_NewEx(ML, SELF, MOD) PyCMethod_New((ML), (SELF), (MOD), NULL)
  ------------------
  624|      1|    if (!f) {
  ------------------
  |  Branch (624:9): [True: 0, False: 1]
  ------------------
  625|      0|        return 0;
  626|      0|    }
  627|      1|    if (PyDict_SetItemString(dict, m2->ml_name, f) < 0) {
  ------------------
  |  Branch (627:9): [True: 0, False: 1]
  ------------------
  628|      0|        Py_DECREF(f);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  629|      0|        return 0;
  630|      0|    }
  631|      1|    Py_DECREF(f);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  632|      1|    return 1;
  633|      1|}
getpath.c:getpath_abspath:
   65|      1|{
   66|      1|    PyObject *r = NULL;
   67|      1|    PyObject *pathobj;
   68|      1|    wchar_t *path;
   69|      1|    if (!PyArg_ParseTuple(args, "U", &pathobj)) {
  ------------------
  |  Branch (69:9): [True: 0, False: 1]
  ------------------
   70|      0|        return NULL;
   71|      0|    }
   72|      1|    Py_ssize_t len;
   73|      1|    path = PyUnicode_AsWideCharString(pathobj, &len);
   74|      1|    if (path) {
  ------------------
  |  Branch (74:9): [True: 1, False: 0]
  ------------------
   75|      1|        wchar_t *abs;
   76|      1|        if (_Py_abspath((const wchar_t *)_Py_normpath(path, -1), &abs) == 0 && abs) {
  ------------------
  |  Branch (76:13): [True: 1, False: 0]
  |  Branch (76:80): [True: 1, False: 0]
  ------------------
   77|      1|            r = PyUnicode_FromWideChar(abs, -1);
   78|      1|            PyMem_RawFree((void *)abs);
   79|      1|        } else {
   80|      0|            PyErr_SetString(PyExc_OSError, "failed to make path absolute");
   81|      0|        }
   82|      1|        PyMem_Free((void *)path);
   83|      1|    }
   84|      1|    return r;
   85|      1|}
getpath.c:getpath_dirname:
  106|      6|{
  107|      6|    PyObject *path;
  108|      6|    if (!PyArg_ParseTuple(args, "U", &path)) {
  ------------------
  |  Branch (108:9): [True: 0, False: 6]
  ------------------
  109|      0|        return NULL;
  110|      0|    }
  111|      6|    Py_ssize_t end = PyUnicode_GET_LENGTH(path);
  ------------------
  |  |  299|      6|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      6|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  112|      6|    Py_ssize_t pos = PyUnicode_FindChar(path, SEP, 0, end, -1);
  ------------------
  |  |   29|      6|#  define SEP L'/'
  ------------------
  113|      6|    if (pos < 0) {
  ------------------
  |  Branch (113:9): [True: 0, False: 6]
  ------------------
  114|      0|        return Py_GetConstant(Py_CONSTANT_EMPTY_STR);
  ------------------
  |  |  597|      0|#define Py_CONSTANT_EMPTY_STR 7
  ------------------
  115|      0|    }
  116|      6|    return PyUnicode_Substring(path, 0, pos);
  117|      6|}
getpath.c:getpath_isdir:
  175|      4|{
  176|      4|    PyObject *r = NULL;
  177|      4|    PyObject *pathobj;
  178|      4|    const wchar_t *path;
  179|      4|    if (!PyArg_ParseTuple(args, "U", &pathobj)) {
  ------------------
  |  Branch (179:9): [True: 0, False: 4]
  ------------------
  180|      0|        return NULL;
  181|      0|    }
  182|      4|    path = PyUnicode_AsWideCharString(pathobj, NULL);
  183|      4|    if (path) {
  ------------------
  |  Branch (183:9): [True: 4, False: 0]
  ------------------
  184|       |#ifdef MS_WINDOWS
  185|       |        DWORD attr = GetFileAttributesW(path);
  186|       |        r = (attr != INVALID_FILE_ATTRIBUTES) &&
  187|       |            (attr & FILE_ATTRIBUTE_DIRECTORY) ? Py_True : Py_False;
  188|       |#else
  189|      4|        struct stat st;
  190|      4|        r = (_Py_wstat(path, &st) == 0) && S_ISDIR(st.st_mode) ? Py_True : Py_False;
  ------------------
  |  |   26|      4|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      r = (_Py_wstat(path, &st) == 0) && S_ISDIR(st.st_mode) ? Py_True : Py_False;
  ------------------
  |  |   25|      4|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (190:13): [True: 4, False: 0]
  |  Branch (190:44): [True: 4, False: 0]
  ------------------
  191|      4|#endif
  192|      4|        PyMem_Free((void *)path);
  193|      4|    }
  194|      4|    return Py_XNewRef(r);
  ------------------
  |  |  551|      4|#  define Py_XNewRef(obj) _Py_XNewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  195|      4|}
getpath.c:getpath_isfile:
  200|      6|{
  201|      6|    PyObject *r = NULL;
  202|      6|    PyObject *pathobj;
  203|      6|    const wchar_t *path;
  204|      6|    if (!PyArg_ParseTuple(args, "U", &pathobj)) {
  ------------------
  |  Branch (204:9): [True: 0, False: 6]
  ------------------
  205|      0|        return NULL;
  206|      0|    }
  207|      6|    path = PyUnicode_AsWideCharString(pathobj, NULL);
  208|      6|    if (path) {
  ------------------
  |  Branch (208:9): [True: 6, False: 0]
  ------------------
  209|       |#ifdef MS_WINDOWS
  210|       |        DWORD attr = GetFileAttributesW(path);
  211|       |        r = (attr != INVALID_FILE_ATTRIBUTES) &&
  212|       |            !(attr & FILE_ATTRIBUTE_DIRECTORY) ? Py_True : Py_False;
  213|       |#else
  214|      6|        struct stat st;
  215|      6|        r = (_Py_wstat(path, &st) == 0) && S_ISREG(st.st_mode) ? Py_True : Py_False;
  ------------------
  |  |   26|      6|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      r = (_Py_wstat(path, &st) == 0) && S_ISREG(st.st_mode) ? Py_True : Py_False;
  ------------------
  |  |   25|      6|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  ------------------
  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     11|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (215:13): [True: 1, False: 5]
  |  Branch (215:44): [True: 1, False: 0]
  ------------------
  216|      6|#endif
  217|      6|        PyMem_Free((void *)path);
  218|      6|    }
  219|      6|    return Py_XNewRef(r);
  ------------------
  |  |  551|      6|#  define Py_XNewRef(obj) _Py_XNewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      6|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  220|      6|}
getpath.c:getpath_joinpath:
  257|     13|{
  258|     13|    if (!PyTuple_Check(args)) {
  ------------------
  |  |   27|     13|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TUPLE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     13|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (258:9): [True: 0, False: 13]
  ------------------
  259|      0|        PyErr_SetString(PyExc_TypeError, "requires tuple of arguments");
  260|      0|        return NULL;
  261|      0|    }
  262|     13|    Py_ssize_t n = PyTuple_GET_SIZE(args);
  ------------------
  |  |   27|     13|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     13|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     13|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  263|     13|    if (n == 0) {
  ------------------
  |  Branch (263:9): [True: 0, False: 13]
  ------------------
  264|      0|        return Py_GetConstant(Py_CONSTANT_EMPTY_STR);
  ------------------
  |  |  597|      0|#define Py_CONSTANT_EMPTY_STR 7
  ------------------
  265|      0|    }
  266|       |    /* Convert all parts to wchar and accumulate max final length */
  267|     13|    wchar_t **parts = (wchar_t **)PyMem_Malloc(n * sizeof(wchar_t *));
  268|     13|    if (parts == NULL) {
  ------------------
  |  Branch (268:9): [True: 0, False: 13]
  ------------------
  269|      0|        PyErr_NoMemory();
  270|      0|        return NULL;
  271|      0|    }
  272|     13|    memset(parts, 0, n * sizeof(wchar_t *));
  273|     13|    Py_ssize_t cchFinal = 0;
  274|     13|    Py_ssize_t first = 0;
  275|       |
  276|     39|    for (Py_ssize_t i = 0; i < n; ++i) {
  ------------------
  |  Branch (276:28): [True: 26, False: 13]
  ------------------
  277|     26|        PyObject *s = PyTuple_GET_ITEM(args, i);
  ------------------
  |  |   29|     26|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|     26|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     26|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (277:23): [True: 26, False: 0]
  ------------------
  278|      0|        Py_ssize_t cch;
  279|     26|        if (s == Py_None) {
  ------------------
  |  |  616|     26|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (279:13): [True: 0, False: 26]
  ------------------
  280|      0|            cch = 0;
  281|     26|        } else if (PyUnicode_Check(s)) {
  ------------------
  |  |  103|     26|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     26|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 26, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  282|     26|            parts[i] = PyUnicode_AsWideCharString(s, &cch);
  283|     26|            if (!parts[i]) {
  ------------------
  |  Branch (283:17): [True: 0, False: 26]
  ------------------
  284|      0|                cchFinal = -1;
  285|      0|                break;
  286|      0|            }
  287|     26|            if (_Py_isabs(parts[i])) {
  ------------------
  |  Branch (287:17): [True: 13, False: 13]
  ------------------
  288|     13|                first = i;
  289|     13|            }
  290|     26|        } else {
  291|      0|            PyErr_SetString(PyExc_TypeError, "all arguments to joinpath() must be str or None");
  292|      0|            cchFinal = -1;
  293|      0|            break;
  294|      0|        }
  295|     26|        cchFinal += cch + 1;
  296|     26|    }
  297|       |
  298|     13|    wchar_t *final = cchFinal > 0 ? (wchar_t *)PyMem_Malloc(cchFinal * sizeof(wchar_t)) : NULL;
  ------------------
  |  Branch (298:22): [True: 13, False: 0]
  ------------------
  299|     13|    if (!final) {
  ------------------
  |  Branch (299:9): [True: 0, False: 13]
  ------------------
  300|      0|        for (Py_ssize_t i = 0; i < n; ++i) {
  ------------------
  |  Branch (300:32): [True: 0, False: 0]
  ------------------
  301|      0|            PyMem_Free(parts[i]);
  302|      0|        }
  303|      0|        PyMem_Free(parts);
  304|      0|        if (cchFinal) {
  ------------------
  |  Branch (304:13): [True: 0, False: 0]
  ------------------
  305|      0|            PyErr_NoMemory();
  306|      0|            return NULL;
  307|      0|        }
  308|      0|        return Py_GetConstant(Py_CONSTANT_EMPTY_STR);
  ------------------
  |  |  597|      0|#define Py_CONSTANT_EMPTY_STR 7
  ------------------
  309|      0|    }
  310|       |
  311|     13|    final[0] = '\0';
  312|       |    /* Now join all the paths. The final result should be shorter than the buffer */
  313|     39|    for (Py_ssize_t i = 0; i < n; ++i) {
  ------------------
  |  Branch (313:28): [True: 26, False: 13]
  ------------------
  314|     26|        if (!parts[i]) {
  ------------------
  |  Branch (314:13): [True: 0, False: 26]
  ------------------
  315|      0|            continue;
  316|      0|        }
  317|     26|        if (i >= first && final) {
  ------------------
  |  Branch (317:13): [True: 26, False: 0]
  |  Branch (317:27): [True: 26, False: 0]
  ------------------
  318|     26|            if (!final[0]) {
  ------------------
  |  Branch (318:17): [True: 13, False: 13]
  ------------------
  319|       |                /* final is definitely long enough to fit any individual part */
  320|     13|                wcscpy(final, parts[i]);
  321|     13|            } else if (_Py_add_relfile(final, parts[i], cchFinal) < 0) {
  ------------------
  |  Branch (321:24): [True: 0, False: 13]
  ------------------
  322|       |                /* if we fail, keep iterating to free memory, but stop adding parts */
  323|      0|                PyMem_Free(final);
  324|      0|                final = NULL;
  325|      0|            }
  326|     26|        }
  327|     26|        PyMem_Free(parts[i]);
  328|     26|    }
  329|     13|    PyMem_Free(parts);
  330|     13|    if (!final) {
  ------------------
  |  Branch (330:9): [True: 0, False: 13]
  ------------------
  331|      0|        PyErr_SetString(PyExc_SystemError, "failed to join paths");
  332|      0|        return NULL;
  333|      0|    }
  334|     13|    PyObject *r = PyUnicode_FromWideChar(_Py_normpath(final, -1), -1);
  335|     13|    PyMem_Free(final);
  336|     13|    return r;
  337|     13|}
getpath.c:getpath_readlines:
  342|      5|{
  343|      5|    PyObject *r = NULL;
  344|      5|    PyObject *pathobj;
  345|      5|    const wchar_t *path;
  346|      5|    if (!PyArg_ParseTuple(args, "U", &pathobj)) {
  ------------------
  |  Branch (346:9): [True: 0, False: 5]
  ------------------
  347|      0|        return NULL;
  348|      0|    }
  349|      5|    path = PyUnicode_AsWideCharString(pathobj, NULL);
  350|      5|    if (!path) {
  ------------------
  |  Branch (350:9): [True: 0, False: 5]
  ------------------
  351|      0|        return NULL;
  352|      0|    }
  353|      5|    FILE *fp = _Py_wfopen(path, L"rb");
  354|      5|    if (!fp) {
  ------------------
  |  Branch (354:9): [True: 5, False: 0]
  ------------------
  355|      5|        PyErr_SetFromErrno(PyExc_OSError);
  356|      5|        PyMem_Free((void *)path);
  357|      5|        return NULL;
  358|      5|    }
  359|      0|    PyMem_Free((void *)path);
  360|       |
  361|      0|    r = PyList_New(0);
  362|      0|    if (!r) {
  ------------------
  |  Branch (362:9): [True: 0, False: 0]
  ------------------
  363|      0|        fclose(fp);
  364|      0|        return NULL;
  365|      0|    }
  366|      0|    const size_t MAX_FILE = 32 * 1024;
  367|      0|    char *buffer = (char *)PyMem_Malloc(MAX_FILE);
  368|      0|    if (!buffer) {
  ------------------
  |  Branch (368:9): [True: 0, False: 0]
  ------------------
  369|      0|        Py_DECREF(r);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  370|      0|        fclose(fp);
  371|      0|        return NULL;
  372|      0|    }
  373|       |
  374|      0|    size_t cb = fread(buffer, 1, MAX_FILE, fp);
  375|      0|    fclose(fp);
  376|      0|    if (!cb) {
  ------------------
  |  Branch (376:9): [True: 0, False: 0]
  ------------------
  377|      0|        return r;
  378|      0|    }
  379|      0|    if (cb >= MAX_FILE) {
  ------------------
  |  Branch (379:9): [True: 0, False: 0]
  ------------------
  380|      0|        Py_DECREF(r);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  381|      0|        PyErr_SetString(PyExc_MemoryError,
  382|      0|            "cannot read file larger than 32KB during initialization");
  383|      0|        return NULL;
  384|      0|    }
  385|      0|    buffer[cb] = '\0';
  386|       |
  387|      0|    size_t len;
  388|      0|    wchar_t *wbuffer = _Py_DecodeUTF8_surrogateescape(buffer, cb, &len);
  389|      0|    PyMem_Free((void *)buffer);
  390|      0|    if (!wbuffer) {
  ------------------
  |  Branch (390:9): [True: 0, False: 0]
  ------------------
  391|      0|        Py_DECREF(r);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  392|      0|        PyErr_NoMemory();
  393|      0|        return NULL;
  394|      0|    }
  395|       |
  396|      0|    wchar_t *p1 = wbuffer;
  397|      0|    wchar_t *p2 = p1;
  398|      0|    while ((p2 = wcschr(p1, L'\n')) != NULL) {
  ------------------
  |  Branch (398:12): [True: 0, False: 0]
  ------------------
  399|      0|        Py_ssize_t cb = p2 - p1;
  400|      0|        while (cb >= 0 && (p1[cb] == L'\n' || p1[cb] == L'\r')) {
  ------------------
  |  Branch (400:16): [True: 0, False: 0]
  |  Branch (400:28): [True: 0, False: 0]
  |  Branch (400:47): [True: 0, False: 0]
  ------------------
  401|      0|            --cb;
  402|      0|        }
  403|      0|        PyObject *u = PyUnicode_FromWideChar(p1, cb >= 0 ? cb + 1 : 0);
  ------------------
  |  Branch (403:50): [True: 0, False: 0]
  ------------------
  404|      0|        if (!u || PyList_Append(r, u) < 0) {
  ------------------
  |  Branch (404:13): [True: 0, False: 0]
  |  Branch (404:19): [True: 0, False: 0]
  ------------------
  405|      0|            Py_XDECREF(u);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  406|      0|            Py_CLEAR(r);
  ------------------
  |  |  484|      0|    do { \
  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  407|      0|            break;
  408|      0|        }
  409|      0|        Py_DECREF(u);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  410|      0|        p1 = p2 + 1;
  411|      0|    }
  412|      0|    if (r && p1 && *p1) {
  ------------------
  |  Branch (412:9): [True: 0, False: 0]
  |  Branch (412:14): [True: 0, False: 0]
  |  Branch (412:20): [True: 0, False: 0]
  ------------------
  413|      0|        PyObject *u = PyUnicode_FromWideChar(p1, -1);
  414|      0|        if (!u || PyList_Append(r, u) < 0) {
  ------------------
  |  Branch (414:13): [True: 0, False: 0]
  |  Branch (414:19): [True: 0, False: 0]
  ------------------
  415|      0|            Py_CLEAR(r);
  ------------------
  |  |  484|      0|    do { \
  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  416|      0|        }
  417|      0|        Py_XDECREF(u);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  418|      0|    }
  419|      0|    PyMem_RawFree(wbuffer);
  420|      0|    return r;
  421|      0|}
getpath.c:getpath_realpath:
  426|      1|{
  427|      1|    PyObject *pathobj;
  428|      1|    if (!PyArg_ParseTuple(args, "U", &pathobj)) {
  ------------------
  |  Branch (428:9): [True: 0, False: 1]
  ------------------
  429|      0|        return NULL;
  430|      0|    }
  431|      1|#if defined(HAVE_READLINK)
  432|       |    /* This readlink calculation only resolves a symlinked file, and
  433|       |       does not resolve any path segments. This is consistent with
  434|       |       prior releases, however, the realpath implementation below is
  435|       |       potentially correct in more cases. */
  436|      1|    PyObject *r = NULL;
  437|      1|    int nlink = 0;
  438|      1|    wchar_t *path = PyUnicode_AsWideCharString(pathobj, NULL);
  439|      1|    if (!path) {
  ------------------
  |  Branch (439:9): [True: 0, False: 1]
  ------------------
  440|      0|        goto done;
  441|      0|    }
  442|      1|    wchar_t *path2 = _PyMem_RawWcsdup(path);
  443|      1|    PyMem_Free((void *)path);
  444|      1|    path = path2;
  445|      1|    while (path) {
  ------------------
  |  Branch (445:12): [True: 1, False: 0]
  ------------------
  446|      1|        wchar_t resolved[MAXPATHLEN + 1];
  447|      1|        int linklen = _Py_wreadlink(path, resolved, Py_ARRAY_LENGTH(resolved));
  ------------------
  |  |  196|      1|    (sizeof(array) / sizeof((array)[0]))
  ------------------
  448|      1|        if (linklen == -1) {
  ------------------
  |  Branch (448:13): [True: 1, False: 0]
  ------------------
  449|      1|            r = PyUnicode_FromWideChar(path, -1);
  450|      1|            break;
  451|      1|        }
  452|      0|        if (_Py_isabs(resolved)) {
  ------------------
  |  Branch (452:13): [True: 0, False: 0]
  ------------------
  453|      0|            PyMem_RawFree((void *)path);
  454|      0|            path = _PyMem_RawWcsdup(resolved);
  455|      0|        } else {
  456|      0|            wchar_t *s = wcsrchr(path, SEP);
  ------------------
  |  |   29|      0|#  define SEP L'/'
  ------------------
  457|      0|            if (s) {
  ------------------
  |  Branch (457:17): [True: 0, False: 0]
  ------------------
  458|      0|                *s = L'\0';
  459|      0|            }
  460|      0|            path2 = _Py_join_relfile(path, resolved);
  461|      0|            if (path2) {
  ------------------
  |  Branch (461:17): [True: 0, False: 0]
  ------------------
  462|      0|                path2 = _Py_normpath(path2, -1);
  463|      0|            }
  464|      0|            PyMem_RawFree((void *)path);
  465|      0|            path = path2;
  466|      0|        }
  467|      0|        nlink++;
  468|       |        /* 40 is the Linux kernel 4.2 limit */
  469|      0|        if (nlink >= 40) {
  ------------------
  |  Branch (469:13): [True: 0, False: 0]
  ------------------
  470|      0|            PyErr_SetString(PyExc_OSError, "maximum number of symbolic links reached");
  471|      0|            break;
  472|      0|        }
  473|      0|    }
  474|      1|    if (!path) {
  ------------------
  |  Branch (474:9): [True: 0, False: 1]
  ------------------
  475|      0|        PyErr_NoMemory();
  476|      0|    }
  477|      1|done:
  478|      1|    PyMem_RawFree((void *)path);
  479|      1|    return r;
  480|       |
  481|       |#elif defined(HAVE_REALPATH)
  482|       |    PyObject *r = NULL;
  483|       |    struct stat st;
  484|       |    const char *narrow = NULL;
  485|       |    wchar_t *path = PyUnicode_AsWideCharString(pathobj, NULL);
  486|       |    if (!path) {
  487|       |        goto done;
  488|       |    }
  489|       |    narrow = Py_EncodeLocale(path, NULL);
  490|       |    if (!narrow) {
  491|       |        PyErr_NoMemory();
  492|       |        goto done;
  493|       |    }
  494|       |    if (lstat(narrow, &st)) {
  495|       |        PyErr_SetFromErrno(PyExc_OSError);
  496|       |        goto done;
  497|       |    }
  498|       |    if (!S_ISLNK(st.st_mode)) {
  499|       |        r = Py_NewRef(pathobj);
  500|       |        goto done;
  501|       |    }
  502|       |    wchar_t resolved[MAXPATHLEN+1];
  503|       |    if (_Py_wrealpath(path, resolved, MAXPATHLEN) == NULL) {
  504|       |        PyErr_SetFromErrno(PyExc_OSError);
  505|       |    } else {
  506|       |        r = PyUnicode_FromWideChar(resolved, -1);
  507|       |    }
  508|       |done:
  509|       |    PyMem_Free((void *)path);
  510|       |    PyMem_Free((void *)narrow);
  511|       |    return r;
  512|       |#elif defined(MS_WINDOWS)
  513|       |    HANDLE hFile;
  514|       |    wchar_t resolved[MAXPATHLEN+1];
  515|       |    int len = 0, err;
  516|       |    Py_ssize_t pathlen;
  517|       |    PyObject *result;
  518|       |
  519|       |    wchar_t *path = PyUnicode_AsWideCharString(pathobj, &pathlen);
  520|       |    if (!path) {
  521|       |        return NULL;
  522|       |    }
  523|       |    if (wcslen(path) != pathlen) {
  524|       |        PyErr_SetString(PyExc_ValueError, "path contains embedded nulls");
  525|       |        return NULL;
  526|       |    }
  527|       |
  528|       |    Py_BEGIN_ALLOW_THREADS
  529|       |    hFile = CreateFileW(path, 0, 0, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
  530|       |    if (hFile != INVALID_HANDLE_VALUE) {
  531|       |        len = GetFinalPathNameByHandleW(hFile, resolved, MAXPATHLEN, VOLUME_NAME_DOS);
  532|       |        err = len ? 0 : GetLastError();
  533|       |        CloseHandle(hFile);
  534|       |    } else {
  535|       |        err = GetLastError();
  536|       |    }
  537|       |    Py_END_ALLOW_THREADS
  538|       |
  539|       |    if (err) {
  540|       |        PyErr_SetFromWindowsErr(err);
  541|       |        result = NULL;
  542|       |    } else if (len <= MAXPATHLEN) {
  543|       |        const wchar_t *p = resolved;
  544|       |        if (0 == wcsncmp(p, L"\\\\?\\", 4)) {
  545|       |            if (GetFileAttributesW(&p[4]) != INVALID_FILE_ATTRIBUTES) {
  546|       |                p += 4;
  547|       |                len -= 4;
  548|       |            }
  549|       |        }
  550|       |        if (CompareStringOrdinal(path, (int)pathlen, p, len, TRUE) == CSTR_EQUAL) {
  551|       |            result = Py_NewRef(pathobj);
  552|       |        } else {
  553|       |            result = PyUnicode_FromWideChar(p, len);
  554|       |        }
  555|       |    } else {
  556|       |        result = Py_NewRef(pathobj);
  557|       |    }
  558|       |    PyMem_Free(path);
  559|       |    return result;
  560|       |#endif
  561|       |
  562|      0|    return Py_NewRef(pathobj);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  563|      1|}

_PyLong_FromUid:
  843|     16|{
  844|     16|    if (uid == (uid_t)-1)
  ------------------
  |  Branch (844:9): [True: 0, False: 16]
  ------------------
  845|      0|        return PyLong_FromLong(-1);
  846|     16|    return PyLong_FromUnsignedLong(uid);
  847|     16|}
_PyLong_FromGid:
  851|     16|{
  852|     16|    if (gid == (gid_t)-1)
  ------------------
  |  Branch (852:9): [True: 0, False: 16]
  ------------------
  853|      0|        return PyLong_FromLong(-1);
  854|     16|    return PyLong_FromUnsignedLong(gid);
  855|     16|}
PyOS_FSPath:
17135|     40|{
17136|       |    /* For error message reasons, this function is manually inlined in
17137|       |       path_converter(). */
17138|     40|    PyObject *func = NULL;
17139|     40|    PyObject *path_repr = NULL;
17140|       |
17141|     40|    if (PyUnicode_Check(path) || PyBytes_Check(path)) {
  ------------------
  |  |  103|     40|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     80|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 40, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  if (PyUnicode_Check(path) || PyBytes_Check(path)) {
  ------------------
  |  |   28|      0|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_BYTES_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17142|     40|        return Py_NewRef(path);
  ------------------
  |  |  550|     40|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     40|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     40|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17143|     40|    }
17144|       |
17145|      0|    func = _PyObject_LookupSpecial(path, &_Py_ID(__fspath__));
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17146|      0|    if ((NULL == func) || (func == Py_None)) {
  ------------------
  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (17146:9): [True: 0, False: 0]
  |  Branch (17146:27): [True: 0, False: 0]
  ------------------
17147|      0|        return PyErr_Format(PyExc_TypeError,
17148|      0|                            "expected str, bytes or os.PathLike object, "
17149|      0|                            "not %.200s",
17150|      0|                            _PyType_Name(Py_TYPE(path)));
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17151|      0|    }
17152|       |
17153|      0|    path_repr = _PyObject_CallNoArgs(func);
17154|      0|    Py_DECREF(func);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17155|      0|    if (NULL == path_repr) {
  ------------------
  |  Branch (17155:9): [True: 0, False: 0]
  ------------------
17156|      0|        return NULL;
17157|      0|    }
17158|       |
17159|      0|    if (!(PyUnicode_Check(path_repr) || PyBytes_Check(path_repr))) {
  ------------------
  |  |  103|      0|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  if (!(PyUnicode_Check(path_repr) || PyBytes_Check(path_repr))) {
  ------------------
  |  |   28|      0|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_BYTES_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17160|      0|        PyErr_Format(PyExc_TypeError,
17161|      0|                     "expected %.200s.__fspath__() to return str or bytes, "
17162|      0|                     "not %.200s", _PyType_Name(Py_TYPE(path)),
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17163|      0|                     _PyType_Name(Py_TYPE(path_repr)));
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17164|      0|        Py_DECREF(path_repr);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
17165|      0|        return NULL;
17166|      0|    }
17167|       |
17168|      0|    return path_repr;
17169|      0|}
PyInit_posix:
18877|      1|{
18878|      1|    return PyModuleDef_Init(&posixmodule);
18879|      1|}
posixmodule.c:path_converter:
 1381|     28|{
 1382|     28|    path_t *path = (path_t *)p;
 1383|     28|    PyObject *bytes = NULL;
 1384|     28|    Py_ssize_t length = 0;
 1385|     28|    int is_index, is_bytes, is_unicode;
 1386|     28|    const char *narrow;
 1387|     28|    PyObject *wo = NULL;
 1388|     28|    wchar_t *wide = NULL;
 1389|       |
 1390|     28|#define FORMAT_EXCEPTION(exc, fmt) \
 1391|     28|    PyErr_Format(exc, "%s%s" fmt, \
 1392|     28|        path->function_name ? path->function_name : "", \
 1393|     28|        path->function_name ? ": "                : "", \
 1394|     28|        path->argument_name ? path->argument_name : "path")
 1395|       |
 1396|       |    /* Py_CLEANUP_SUPPORTED support */
 1397|     28|    if (o == NULL) {
  ------------------
  |  Branch (1397:9): [True: 0, False: 28]
  ------------------
 1398|      0|        path_cleanup(path);
 1399|      0|        return 1;
 1400|      0|    }
 1401|       |
 1402|       |    /* Ensure it's always safe to call path_cleanup(). */
 1403|     28|    path->object = path->cleanup = NULL;
 1404|       |    /* path->object owns a reference to the original object */
 1405|     28|    Py_INCREF(o);
  ------------------
  |  |  310|     28|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     28|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     28|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1406|       |
 1407|     28|    if ((o == Py_None) && path->nullable) {
  ------------------
  |  |  616|     28|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (1407:9): [True: 0, False: 28]
  |  Branch (1407:27): [True: 0, False: 0]
  ------------------
 1408|      0|        path->wide = NULL;
 1409|      0|        path->narrow = NULL;
 1410|      0|        path->fd = -1;
 1411|      0|        goto success_exit;
 1412|      0|    }
 1413|       |
 1414|       |    /* Only call this here so that we don't treat the return value of
 1415|       |       os.fspath() as an fd or buffer. */
 1416|     28|    is_index = path->allow_fd && PyIndex_Check(o);
  ------------------
  |  Branch (1416:16): [True: 23, False: 5]
  |  Branch (1416:34): [True: 0, False: 23]
  ------------------
 1417|     28|    is_bytes = PyBytes_Check(o);
  ------------------
  |  |   28|     28|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_BYTES_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     28|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
 1418|     28|    is_unicode = PyUnicode_Check(o);
  ------------------
  |  |  103|     28|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     28|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
 1419|       |
 1420|     28|    if (!is_index && !is_unicode && !is_bytes) {
  ------------------
  |  Branch (1420:9): [True: 28, False: 0]
  |  Branch (1420:22): [True: 0, False: 28]
  |  Branch (1420:37): [True: 0, False: 0]
  ------------------
 1421|       |        /* Inline PyOS_FSPath() for better error messages. */
 1422|      0|        PyObject *func, *res;
 1423|       |
 1424|      0|        func = _PyObject_LookupSpecial(o, &_Py_ID(__fspath__));
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1425|      0|        if ((NULL == func) || (func == Py_None)) {
  ------------------
  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (1425:13): [True: 0, False: 0]
  |  Branch (1425:31): [True: 0, False: 0]
  ------------------
 1426|      0|            goto error_format;
 1427|      0|        }
 1428|      0|        res = _PyObject_CallNoArgs(func);
 1429|      0|        Py_DECREF(func);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1430|      0|        if (NULL == res) {
  ------------------
  |  Branch (1430:13): [True: 0, False: 0]
  ------------------
 1431|      0|            goto error_exit;
 1432|      0|        }
 1433|      0|        else if (PyUnicode_Check(res)) {
  ------------------
  |  |  103|      0|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1434|      0|            is_unicode = 1;
 1435|      0|        }
 1436|      0|        else if (PyBytes_Check(res)) {
  ------------------
  |  |   28|      0|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_BYTES_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1437|      0|            is_bytes = 1;
 1438|      0|        }
 1439|      0|        else {
 1440|      0|            PyErr_Format(PyExc_TypeError,
 1441|      0|                 "expected %.200s.__fspath__() to return str or bytes, "
 1442|      0|                 "not %.200s", _PyType_Name(Py_TYPE(o)),
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1443|      0|                 _PyType_Name(Py_TYPE(res)));
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1444|      0|            Py_DECREF(res);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1445|      0|            goto error_exit;
 1446|      0|        }
 1447|       |
 1448|       |        /* still owns a reference to the original object */
 1449|      0|        Py_SETREF(o, res);
  ------------------
  |  |  352|      0|    do { \
  |  |  353|      0|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  354|      0|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  355|      0|        *_tmp_dst_ptr = (src); \
  |  |  356|      0|        Py_DECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  357|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (357:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1450|      0|    }
 1451|       |
 1452|     28|    if (is_unicode) {
  ------------------
  |  Branch (1452:9): [True: 28, False: 0]
  ------------------
 1453|     28|        if (path->make_wide) {
  ------------------
  |  Branch (1453:13): [True: 5, False: 23]
  ------------------
 1454|      5|            wide = PyUnicode_AsWideCharString(o, &length);
 1455|      5|            if (!wide) {
  ------------------
  |  Branch (1455:17): [True: 0, False: 5]
  ------------------
 1456|      0|                goto error_exit;
 1457|      0|            }
 1458|       |#ifdef MS_WINDOWS
 1459|       |            if (!path->nonstrict && length > 32767) {
 1460|       |                FORMAT_EXCEPTION(PyExc_ValueError, "%s too long for Windows");
 1461|       |                goto error_exit;
 1462|       |            }
 1463|       |#endif
 1464|      5|            if (!path->nonstrict && wcslen(wide) != (size_t)length) {
  ------------------
  |  Branch (1464:17): [True: 0, False: 5]
  |  Branch (1464:37): [True: 0, False: 0]
  ------------------
 1465|      0|                FORMAT_EXCEPTION(PyExc_ValueError,
  ------------------
  |  | 1391|      0|    PyErr_Format(exc, "%s%s" fmt, \
  |  | 1392|      0|        path->function_name ? path->function_name : "", \
  |  |  ------------------
  |  |  |  Branch (1392:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 1393|      0|        path->function_name ? ": "                : "", \
  |  |  ------------------
  |  |  |  Branch (1393:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 1394|      0|        path->argument_name ? path->argument_name : "path")
  |  |  ------------------
  |  |  |  Branch (1394:9): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1466|      0|                                 "embedded null character in %s");
 1467|      0|                goto error_exit;
 1468|      0|            }
 1469|       |
 1470|      5|            path->wide = wide;
 1471|      5|            path->narrow = NULL;
 1472|      5|            path->fd = -1;
 1473|      5|            wide = NULL;
 1474|      5|            goto success_exit;
 1475|      5|        }
 1476|     23|        bytes = PyUnicode_EncodeFSDefault(o);
 1477|     23|        if (!bytes) {
  ------------------
  |  Branch (1477:13): [True: 0, False: 23]
  ------------------
 1478|      0|            goto error_exit;
 1479|      0|        }
 1480|     23|    }
 1481|      0|    else if (is_bytes) {
  ------------------
  |  Branch (1481:14): [True: 0, False: 0]
  ------------------
 1482|      0|        bytes = Py_NewRef(o);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1483|      0|    }
 1484|      0|    else if (is_index) {
  ------------------
  |  Branch (1484:14): [True: 0, False: 0]
  ------------------
 1485|      0|        if (!_fd_converter(o, &path->fd)) {
  ------------------
  |  Branch (1485:13): [True: 0, False: 0]
  ------------------
 1486|      0|            goto error_exit;
 1487|      0|        }
 1488|      0|        path->wide = NULL;
 1489|      0|        path->narrow = NULL;
 1490|      0|        path->is_fd = true;
 1491|      0|        goto success_exit;
 1492|      0|    }
 1493|      0|    else {
 1494|      0| error_format:
 1495|      0|        PyErr_Format(PyExc_TypeError, "%s%s%s should be %s, not %.200s",
 1496|      0|            path->function_name ? path->function_name : "",
  ------------------
  |  Branch (1496:13): [True: 0, False: 0]
  ------------------
 1497|      0|            path->function_name ? ": "                : "",
  ------------------
  |  Branch (1497:13): [True: 0, False: 0]
  ------------------
 1498|      0|            path->argument_name ? path->argument_name : "path",
  ------------------
  |  Branch (1498:13): [True: 0, False: 0]
  ------------------
 1499|      0|            path->allow_fd && path->nullable ? "string, bytes, os.PathLike, "
  ------------------
  |  Branch (1499:13): [True: 0, False: 0]
  |  Branch (1499:31): [True: 0, False: 0]
  ------------------
 1500|      0|                                               "integer or None" :
 1501|      0|            path->allow_fd ? "string, bytes, os.PathLike or integer" :
  ------------------
  |  Branch (1501:13): [True: 0, False: 0]
  ------------------
 1502|      0|            path->nullable ? "string, bytes, os.PathLike or None" :
  ------------------
  |  Branch (1502:13): [True: 0, False: 0]
  ------------------
 1503|      0|                             "string, bytes or os.PathLike",
 1504|      0|            _PyType_Name(Py_TYPE(o)));
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1505|      0|        goto error_exit;
 1506|      0|    }
 1507|       |
 1508|     23|    length = PyBytes_GET_SIZE(bytes);
  ------------------
  |  |   33|     23|#define PyBytes_GET_SIZE(self) PyBytes_GET_SIZE(_PyObject_CAST(self))
  |  |  ------------------
  |  |  |  |  171|     23|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     23|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1509|     23|    narrow = PyBytes_AS_STRING(bytes);
  ------------------
  |  |   27|     23|#define PyBytes_AS_STRING(op) PyBytes_AS_STRING(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     23|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     23|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1510|     23|    if (!path->nonstrict && strlen(narrow) != (size_t)length) {
  ------------------
  |  Branch (1510:9): [True: 23, False: 0]
  |  Branch (1510:29): [True: 0, False: 23]
  ------------------
 1511|      0|        FORMAT_EXCEPTION(PyExc_ValueError, "embedded null character in %s");
  ------------------
  |  | 1391|      0|    PyErr_Format(exc, "%s%s" fmt, \
  |  | 1392|      0|        path->function_name ? path->function_name : "", \
  |  |  ------------------
  |  |  |  Branch (1392:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 1393|      0|        path->function_name ? ": "                : "", \
  |  |  ------------------
  |  |  |  Branch (1393:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 1394|      0|        path->argument_name ? path->argument_name : "path")
  |  |  ------------------
  |  |  |  Branch (1394:9): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1512|      0|        goto error_exit;
 1513|      0|    }
 1514|       |
 1515|     23|    if (path->make_wide) {
  ------------------
  |  Branch (1515:9): [True: 0, False: 23]
  ------------------
 1516|      0|        wo = PyUnicode_DecodeFSDefaultAndSize(narrow, length);
 1517|      0|        if (!wo) {
  ------------------
  |  Branch (1517:13): [True: 0, False: 0]
  ------------------
 1518|      0|            goto error_exit;
 1519|      0|        }
 1520|       |
 1521|      0|        wide = PyUnicode_AsWideCharString(wo, &length);
 1522|      0|        Py_DECREF(wo);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1523|      0|        if (!wide) {
  ------------------
  |  Branch (1523:13): [True: 0, False: 0]
  ------------------
 1524|      0|            goto error_exit;
 1525|      0|        }
 1526|       |#ifdef MS_WINDOWS
 1527|       |        if (!path->nonstrict && length > 32767) {
 1528|       |            FORMAT_EXCEPTION(PyExc_ValueError, "%s too long for Windows");
 1529|       |            goto error_exit;
 1530|       |        }
 1531|       |#endif
 1532|      0|        if (!path->nonstrict && wcslen(wide) != (size_t)length) {
  ------------------
  |  Branch (1532:13): [True: 0, False: 0]
  |  Branch (1532:33): [True: 0, False: 0]
  ------------------
 1533|      0|            FORMAT_EXCEPTION(PyExc_ValueError,
  ------------------
  |  | 1391|      0|    PyErr_Format(exc, "%s%s" fmt, \
  |  | 1392|      0|        path->function_name ? path->function_name : "", \
  |  |  ------------------
  |  |  |  Branch (1392:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 1393|      0|        path->function_name ? ": "                : "", \
  |  |  ------------------
  |  |  |  Branch (1393:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 1394|      0|        path->argument_name ? path->argument_name : "path")
  |  |  ------------------
  |  |  |  Branch (1394:9): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1534|      0|                             "embedded null character in %s");
 1535|      0|            goto error_exit;
 1536|      0|        }
 1537|      0|        path->wide = wide;
 1538|      0|        path->narrow = NULL;
 1539|      0|        Py_DECREF(bytes);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1540|      0|        wide = NULL;
 1541|      0|    }
 1542|     23|    else {
 1543|     23|        path->wide = NULL;
 1544|     23|        path->narrow = narrow;
 1545|     23|        if (bytes == o) {
  ------------------
  |  Branch (1545:13): [True: 0, False: 23]
  ------------------
 1546|       |            /* Still a reference owned by path->object, don't have to
 1547|       |            worry about path->narrow is used after free. */
 1548|      0|            Py_DECREF(bytes);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1549|      0|        }
 1550|     23|        else {
 1551|     23|            path->cleanup = bytes;
 1552|     23|        }
 1553|     23|    }
 1554|     23|    path->fd = -1;
 1555|       |
 1556|     28| success_exit:
 1557|     28|    path->value_error = 0;
 1558|     28|    path->length = length;
 1559|     28|    path->object = o;
 1560|     28|    return Py_CLEANUP_SUPPORTED;
  ------------------
  |  |   57|     28|#define Py_CLEANUP_SUPPORTED 0x20000
  ------------------
 1561|       |
 1562|      0| error_exit:
 1563|      0|    Py_XDECREF(o);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1564|      0|    Py_XDECREF(bytes);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1565|      0|    PyMem_Free(wide);
 1566|      0|    if (!path->suppress_value_error ||
  ------------------
  |  Branch (1566:9): [True: 0, False: 0]
  ------------------
 1567|      0|        !PyErr_ExceptionMatches(PyExc_ValueError))
  ------------------
  |  Branch (1567:9): [True: 0, False: 0]
  ------------------
 1568|      0|    {
 1569|      0|        return 0;
 1570|      0|    }
 1571|      0|    PyErr_Clear();
 1572|      0|    path->wide = NULL;
 1573|      0|    path->narrow = NULL;
 1574|      0|    path->fd = -1;
 1575|      0|    path->value_error = 1;
 1576|      0|    path->length = 0;
 1577|      0|    path->object = NULL;
 1578|      0|    return Py_CLEANUP_SUPPORTED;
  ------------------
  |  |   57|      0|#define Py_CLEANUP_SUPPORTED 0x20000
  ------------------
 1579|      0|}
posixmodule.c:dir_fd_converter:
 1182|      2|{
 1183|      2|    if (o == Py_None) {
  ------------------
  |  |  616|      2|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (1183:9): [True: 2, False: 0]
  ------------------
 1184|      2|        *(int *)p = DEFAULT_DIR_FD;
  ------------------
  |  | 1138|      2|#define DEFAULT_DIR_FD (int)AT_FDCWD
  ------------------
 1185|      2|        return 1;
 1186|      2|    }
 1187|      0|    else if (PyIndex_Check(o)) {
  ------------------
  |  Branch (1187:14): [True: 0, False: 0]
  ------------------
 1188|      0|        return _fd_converter(o, (int *)p);
 1189|      0|    }
 1190|      0|    else {
 1191|      0|        PyErr_Format(PyExc_TypeError,
 1192|      0|                     "argument should be integer or None, not %.200s",
 1193|      0|                     _PyType_Name(Py_TYPE(o)));
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1194|      0|        return 0;
 1195|      0|    }
 1196|      2|}
posixmodule.c:os_stat_impl:
 3305|     19|{
 3306|     19|    return posix_do_stat(module, "stat", path, dir_fd, follow_symlinks);
 3307|     19|}
posixmodule.c:posix_do_stat:
 2877|     19|{
 2878|     19|    STRUCT_STAT st;
  ------------------
  |  |  411|     19|#  define STRUCT_STAT struct stat
  ------------------
 2879|     19|    int result;
 2880|       |
 2881|     19|#ifdef HAVE_FSTATAT
 2882|     19|    int fstatat_unavailable = 0;
 2883|     19|#endif
 2884|       |
 2885|       |#if !defined(MS_WINDOWS) && !defined(HAVE_FSTATAT) && !defined(HAVE_LSTAT)
 2886|       |    if (follow_symlinks_specified(function_name, follow_symlinks))
 2887|       |        return NULL;
 2888|       |#endif
 2889|       |
 2890|     19|    if (path_and_dir_fd_invalid("stat", path, dir_fd) ||
  ------------------
  |  Branch (2890:9): [True: 0, False: 19]
  ------------------
 2891|     19|        dir_fd_and_fd_invalid("stat", dir_fd, path->fd) ||
  ------------------
  |  Branch (2891:9): [True: 0, False: 19]
  ------------------
 2892|     19|        fd_and_follow_symlinks_invalid("stat", path->is_fd, follow_symlinks))
  ------------------
  |  Branch (2892:9): [True: 0, False: 19]
  ------------------
 2893|      0|        return NULL;
 2894|       |
 2895|     19|    Py_BEGIN_ALLOW_THREADS
  ------------------
  |  |  119|     19|#define Py_BEGIN_ALLOW_THREADS { \
  |  |  120|     19|                        PyThreadState *_save; \
  |  |  121|     19|                        _save = PyEval_SaveThread();
  ------------------
 2896|     19|    if (path->is_fd) {
  ------------------
  |  Branch (2896:9): [True: 0, False: 19]
  ------------------
 2897|      0|        result = FSTAT(path->fd, &st);
  ------------------
  |  |  410|      0|#  define FSTAT fstat
  ------------------
 2898|      0|    }
 2899|       |#ifdef MS_WINDOWS
 2900|       |    else if (follow_symlinks)
 2901|       |        result = win32_stat(path->wide, &st);
 2902|       |    else
 2903|       |        result = win32_lstat(path->wide, &st);
 2904|       |#else
 2905|     19|    else
 2906|     19|#if defined(HAVE_LSTAT)
 2907|     19|    if ((!follow_symlinks) && (dir_fd == DEFAULT_DIR_FD))
  ------------------
  |  | 1138|      0|#define DEFAULT_DIR_FD (int)AT_FDCWD
  ------------------
  |  Branch (2907:9): [True: 0, False: 19]
  |  Branch (2907:31): [True: 0, False: 0]
  ------------------
 2908|      0|        result = LSTAT(path->narrow, &st);
  ------------------
  |  |  409|      0|#  define LSTAT lstat
  ------------------
 2909|     19|    else
 2910|     19|#endif /* HAVE_LSTAT */
 2911|     19|#ifdef HAVE_FSTATAT
 2912|     19|    if ((dir_fd != DEFAULT_DIR_FD) || !follow_symlinks) {
  ------------------
  |  | 1138|     19|#define DEFAULT_DIR_FD (int)AT_FDCWD
  ------------------
  |  Branch (2912:9): [True: 0, False: 19]
  |  Branch (2912:39): [True: 0, False: 19]
  ------------------
 2913|      0|        if (HAVE_FSTATAT_RUNTIME) {
  ------------------
  |  |  600|      0|#  define HAVE_FSTATAT_RUNTIME 1
  |  |  ------------------
  |  |  |  Branch (600:32): [True: 0, Folded]
  |  |  ------------------
  ------------------
 2914|      0|            result = fstatat(dir_fd, path->narrow, &st,
 2915|      0|                         follow_symlinks ? 0 : AT_SYMLINK_NOFOLLOW);
  ------------------
  |  Branch (2915:26): [True: 0, False: 0]
  ------------------
 2916|       |
 2917|      0|        } else {
 2918|      0|            fstatat_unavailable = 1;
 2919|      0|        }
 2920|      0|    } else
 2921|     19|#endif /* HAVE_FSTATAT */
 2922|     19|        result = STAT(path->narrow, &st);
  ------------------
  |  |  408|     19|#  define STAT stat
  ------------------
 2923|     19|#endif /* MS_WINDOWS */
 2924|     19|    Py_END_ALLOW_THREADS
  ------------------
  |  |  124|     19|#define Py_END_ALLOW_THREADS    PyEval_RestoreThread(_save); \
  |  |  125|     19|                 }
  ------------------
 2925|       |
 2926|     19|#ifdef HAVE_FSTATAT
 2927|     19|    if (fstatat_unavailable) {
  ------------------
  |  Branch (2927:9): [True: 0, False: 19]
  ------------------
 2928|      0|        argument_unavailable_error("stat", "dir_fd");
 2929|      0|        return NULL;
 2930|      0|    }
 2931|     19|#endif
 2932|       |
 2933|     19|    if (result != 0) {
  ------------------
  |  Branch (2933:9): [True: 5, False: 14]
  ------------------
 2934|      5|        return path_error(path);
 2935|      5|    }
 2936|       |
 2937|     14|    return _pystat_fromstructstat(module, &st);
 2938|     19|}
posixmodule.c:path_and_dir_fd_invalid:
 1627|     19|{
 1628|     19|    if (!path->wide && (dir_fd != DEFAULT_DIR_FD) && !path->narrow) {
  ------------------
  |  | 1138|     19|#define DEFAULT_DIR_FD (int)AT_FDCWD
  ------------------
  |  Branch (1628:9): [True: 19, False: 0]
  |  Branch (1628:24): [True: 0, False: 19]
  |  Branch (1628:54): [True: 0, False: 0]
  ------------------
 1629|      0|        PyErr_Format(PyExc_ValueError,
 1630|      0|                     "%s: can't specify dir_fd without matching path",
 1631|      0|                     function_name);
 1632|      0|        return 1;
 1633|      0|    }
 1634|     19|    return 0;
 1635|     19|}
posixmodule.c:dir_fd_and_fd_invalid:
 1639|     19|{
 1640|     19|    if ((dir_fd != DEFAULT_DIR_FD) && (fd != -1)) {
  ------------------
  |  | 1138|     19|#define DEFAULT_DIR_FD (int)AT_FDCWD
  ------------------
  |  Branch (1640:9): [True: 0, False: 19]
  |  Branch (1640:39): [True: 0, False: 0]
  ------------------
 1641|      0|        PyErr_Format(PyExc_ValueError,
 1642|      0|                     "%s: can't specify both dir_fd and fd",
 1643|      0|                     function_name);
 1644|      0|        return 1;
 1645|      0|    }
 1646|     19|    return 0;
 1647|     19|}
posixmodule.c:fd_and_follow_symlinks_invalid:
 1652|     19|{
 1653|     19|    if (is_fd && (!follow_symlinks)) {
  ------------------
  |  Branch (1653:9): [True: 0, False: 19]
  |  Branch (1653:18): [True: 0, False: 0]
  ------------------
 1654|      0|        PyErr_Format(PyExc_ValueError,
 1655|      0|                     "%s: cannot use fd and follow_symlinks together",
 1656|      0|                     function_name);
 1657|      0|        return 1;
 1658|      0|    }
 1659|     19|    return 0;
 1660|     19|}
posixmodule.c:path_error:
 1935|      5|{
 1936|      5|    return path_object_error(path->object);
 1937|      5|}
posixmodule.c:path_object_error:
 1913|      5|{
 1914|       |#ifdef MS_WINDOWS
 1915|       |    return PyErr_SetExcFromWindowsErrWithFilenameObject(
 1916|       |                PyExc_OSError, 0, path);
 1917|       |#else
 1918|      5|    return posix_path_object_error(path);
 1919|      5|#endif
 1920|      5|}
posixmodule.c:posix_path_object_error:
 1907|      5|{
 1908|      5|    return PyErr_SetFromErrnoWithFilenameObject(PyExc_OSError, path);
 1909|      5|}
posixmodule.c:_pystat_fromstructstat:
 2750|     14|{
 2751|     14|    assert(!PyErr_Occurred());
  ------------------
  |  Branch (2751:5): [True: 14, False: 0]
  ------------------
 2752|       |
 2753|     14|    _posixstate *state = get_posix_state(module);
 2754|     14|    PyObject *StatResultType = state->StatResultType;
 2755|     14|    PyObject *v = PyStructSequence_New((PyTypeObject *)StatResultType);
 2756|     14|    if (v == NULL) {
  ------------------
  |  Branch (2756:9): [True: 0, False: 14]
  ------------------
 2757|      0|        return NULL;
 2758|      0|    }
 2759|       |
 2760|     14|#define SET_ITEM(pos, expr) \
 2761|     14|    do { \
 2762|     14|        PyObject *obj = (expr); \
 2763|     14|        if (obj == NULL) { \
 2764|     14|            goto error; \
 2765|     14|        } \
 2766|     14|        PyStructSequence_SET_ITEM(v, (pos), obj); \
 2767|     14|    } while (0)
 2768|       |
 2769|     14|    SET_ITEM(0, PyLong_FromLong((long)st->st_mode));
  ------------------
  |  | 2761|     14|    do { \
  |  | 2762|     14|        PyObject *obj = (expr); \
  |  | 2763|     14|        if (obj == NULL) { \
  |  |  ------------------
  |  |  |  Branch (2763:13): [True: 0, False: 14]
  |  |  ------------------
  |  | 2764|      0|            goto error; \
  |  | 2765|      0|        } \
  |  | 2766|     14|        PyStructSequence_SET_ITEM(v, (pos), obj); \
  |  |  ------------------
  |  |  |  |   11|     14|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  |  |  ------------------
  |  | 2767|     14|    } while (0)
  |  |  ------------------
  |  |  |  Branch (2767:14): [Folded, False: 14]
  |  |  ------------------
  ------------------
 2770|       |#ifdef MS_WINDOWS
 2771|       |    SET_ITEM(1, _pystat_l128_from_l64_l64(st->st_ino, st->st_ino_high));
 2772|       |    SET_ITEM(2, PyLong_FromUnsignedLongLong(st->st_dev));
 2773|       |#else
 2774|     14|    static_assert(sizeof(unsigned long long) >= sizeof(st->st_ino),
 2775|     14|                  "stat.st_ino is larger than unsigned long long");
 2776|     14|    SET_ITEM(1, PyLong_FromUnsignedLongLong(st->st_ino));
  ------------------
  |  | 2761|     14|    do { \
  |  | 2762|     14|        PyObject *obj = (expr); \
  |  | 2763|     14|        if (obj == NULL) { \
  |  |  ------------------
  |  |  |  Branch (2763:13): [True: 0, False: 14]
  |  |  ------------------
  |  | 2764|      0|            goto error; \
  |  | 2765|      0|        } \
  |  | 2766|     14|        PyStructSequence_SET_ITEM(v, (pos), obj); \
  |  |  ------------------
  |  |  |  |   11|     14|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  |  |  ------------------
  |  | 2767|     14|    } while (0)
  |  |  ------------------
  |  |  |  Branch (2767:14): [Folded, False: 14]
  |  |  ------------------
  ------------------
 2777|     14|    SET_ITEM(2, _PyLong_FromDev(st->st_dev));
  ------------------
  |  | 2761|     14|    do { \
  |  | 2762|     14|        PyObject *obj = (expr); \
  |  | 2763|     14|        if (obj == NULL) { \
  |  |  ------------------
  |  |  |  Branch (2763:13): [True: 0, False: 14]
  |  |  ------------------
  |  | 2764|      0|            goto error; \
  |  | 2765|      0|        } \
  |  | 2766|     14|        PyStructSequence_SET_ITEM(v, (pos), obj); \
  |  |  ------------------
  |  |  |  |   11|     14|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  |  |  ------------------
  |  | 2767|     14|    } while (0)
  |  |  ------------------
  |  |  |  Branch (2767:14): [Folded, False: 14]
  |  |  ------------------
  ------------------
 2778|     14|#endif
 2779|     14|    SET_ITEM(3, PyLong_FromLong((long)st->st_nlink));
  ------------------
  |  | 2761|     14|    do { \
  |  | 2762|     14|        PyObject *obj = (expr); \
  |  | 2763|     14|        if (obj == NULL) { \
  |  |  ------------------
  |  |  |  Branch (2763:13): [True: 0, False: 14]
  |  |  ------------------
  |  | 2764|      0|            goto error; \
  |  | 2765|      0|        } \
  |  | 2766|     14|        PyStructSequence_SET_ITEM(v, (pos), obj); \
  |  |  ------------------
  |  |  |  |   11|     14|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  |  |  ------------------
  |  | 2767|     14|    } while (0)
  |  |  ------------------
  |  |  |  Branch (2767:14): [Folded, False: 14]
  |  |  ------------------
  ------------------
 2780|       |#if defined(MS_WINDOWS)
 2781|       |    SET_ITEM(4, PyLong_FromLong(0));
 2782|       |    SET_ITEM(5, PyLong_FromLong(0));
 2783|       |#else
 2784|     14|    SET_ITEM(4, _PyLong_FromUid(st->st_uid));
  ------------------
  |  | 2761|     14|    do { \
  |  | 2762|     14|        PyObject *obj = (expr); \
  |  | 2763|     14|        if (obj == NULL) { \
  |  |  ------------------
  |  |  |  Branch (2763:13): [True: 0, False: 14]
  |  |  ------------------
  |  | 2764|      0|            goto error; \
  |  | 2765|      0|        } \
  |  | 2766|     14|        PyStructSequence_SET_ITEM(v, (pos), obj); \
  |  |  ------------------
  |  |  |  |   11|     14|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  |  |  ------------------
  |  | 2767|     14|    } while (0)
  |  |  ------------------
  |  |  |  Branch (2767:14): [Folded, False: 14]
  |  |  ------------------
  ------------------
 2785|     14|    SET_ITEM(5, _PyLong_FromGid(st->st_gid));
  ------------------
  |  | 2761|     14|    do { \
  |  | 2762|     14|        PyObject *obj = (expr); \
  |  | 2763|     14|        if (obj == NULL) { \
  |  |  ------------------
  |  |  |  Branch (2763:13): [True: 0, False: 14]
  |  |  ------------------
  |  | 2764|      0|            goto error; \
  |  | 2765|      0|        } \
  |  | 2766|     14|        PyStructSequence_SET_ITEM(v, (pos), obj); \
  |  |  ------------------
  |  |  |  |   11|     14|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  |  |  ------------------
  |  | 2767|     14|    } while (0)
  |  |  ------------------
  |  |  |  Branch (2767:14): [Folded, False: 14]
  |  |  ------------------
  ------------------
 2786|     14|#endif
 2787|     14|    static_assert(sizeof(long long) >= sizeof(st->st_size),
 2788|     14|                  "stat.st_size is larger than long long");
 2789|     14|    SET_ITEM(6, PyLong_FromLongLong(st->st_size));
  ------------------
  |  | 2761|     14|    do { \
  |  | 2762|     14|        PyObject *obj = (expr); \
  |  | 2763|     14|        if (obj == NULL) { \
  |  |  ------------------
  |  |  |  Branch (2763:13): [True: 0, False: 14]
  |  |  ------------------
  |  | 2764|      0|            goto error; \
  |  | 2765|      0|        } \
  |  | 2766|     14|        PyStructSequence_SET_ITEM(v, (pos), obj); \
  |  |  ------------------
  |  |  |  |   11|     14|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  |  |  ------------------
  |  | 2767|     14|    } while (0)
  |  |  ------------------
  |  |  |  Branch (2767:14): [Folded, False: 14]
  |  |  ------------------
  ------------------
 2790|       |
 2791|       |    // Set st_atime, st_mtime and st_ctime
 2792|     14|    unsigned long ansec, mnsec, cnsec;
 2793|     14|#if defined(HAVE_STAT_TV_NSEC)
 2794|     14|    ansec = st->st_atim.tv_nsec;
 2795|     14|    mnsec = st->st_mtim.tv_nsec;
 2796|     14|    cnsec = st->st_ctim.tv_nsec;
 2797|       |#elif defined(HAVE_STAT_TV_NSEC2)
 2798|       |    ansec = st->st_atimespec.tv_nsec;
 2799|       |    mnsec = st->st_mtimespec.tv_nsec;
 2800|       |    cnsec = st->st_ctimespec.tv_nsec;
 2801|       |#elif defined(HAVE_STAT_NSEC)
 2802|       |    ansec = st->st_atime_nsec;
 2803|       |    mnsec = st->st_mtime_nsec;
 2804|       |    cnsec = st->st_ctime_nsec;
 2805|       |#else
 2806|       |    ansec = mnsec = cnsec = 0;
 2807|       |#endif
 2808|     14|    if (fill_time(state, v, 7, 10, 13, st->st_atime, ansec) < 0) {
  ------------------
  |  Branch (2808:9): [True: 0, False: 14]
  ------------------
 2809|      0|        goto error;
 2810|      0|    }
 2811|     14|    if (fill_time(state, v, 8, 11, 14, st->st_mtime, mnsec) < 0) {
  ------------------
  |  Branch (2811:9): [True: 0, False: 14]
  ------------------
 2812|      0|        goto error;
 2813|      0|    }
 2814|     14|    if (fill_time(state, v, 9, 12, 15, st->st_ctime, cnsec) < 0) {
  ------------------
  |  Branch (2814:9): [True: 0, False: 14]
  ------------------
 2815|      0|        goto error;
 2816|      0|    }
 2817|       |
 2818|     14|#ifdef HAVE_STRUCT_STAT_ST_BLKSIZE
 2819|     14|    SET_ITEM(ST_BLKSIZE_IDX, PyLong_FromLong((long)st->st_blksize));
  ------------------
  |  | 2761|     14|    do { \
  |  | 2762|     14|        PyObject *obj = (expr); \
  |  | 2763|     14|        if (obj == NULL) { \
  |  |  ------------------
  |  |  |  Branch (2763:13): [True: 0, False: 14]
  |  |  ------------------
  |  | 2764|      0|            goto error; \
  |  | 2765|      0|        } \
  |  | 2766|     14|        PyStructSequence_SET_ITEM(v, (pos), obj); \
  |  |  ------------------
  |  |  |  |   11|     14|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  |  |  ------------------
  |  | 2767|     14|    } while (0)
  |  |  ------------------
  |  |  |  Branch (2767:14): [Folded, False: 14]
  |  |  ------------------
  ------------------
 2820|     14|#endif
 2821|     14|#ifdef HAVE_STRUCT_STAT_ST_BLOCKS
 2822|     14|    SET_ITEM(ST_BLOCKS_IDX, PyLong_FromLong((long)st->st_blocks));
  ------------------
  |  | 2761|     14|    do { \
  |  | 2762|     14|        PyObject *obj = (expr); \
  |  | 2763|     14|        if (obj == NULL) { \
  |  |  ------------------
  |  |  |  Branch (2763:13): [True: 0, False: 14]
  |  |  ------------------
  |  | 2764|      0|            goto error; \
  |  | 2765|      0|        } \
  |  | 2766|     14|        PyStructSequence_SET_ITEM(v, (pos), obj); \
  |  |  ------------------
  |  |  |  |   11|     14|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  |  |  ------------------
  |  | 2767|     14|    } while (0)
  |  |  ------------------
  |  |  |  Branch (2767:14): [Folded, False: 14]
  |  |  ------------------
  ------------------
 2823|     14|#endif
 2824|     14|#ifdef HAVE_STRUCT_STAT_ST_RDEV
 2825|     14|    SET_ITEM(ST_RDEV_IDX, _PyLong_FromDev(st->st_rdev));
  ------------------
  |  | 2761|     14|    do { \
  |  | 2762|     14|        PyObject *obj = (expr); \
  |  | 2763|     14|        if (obj == NULL) { \
  |  |  ------------------
  |  |  |  Branch (2763:13): [True: 0, False: 14]
  |  |  ------------------
  |  | 2764|      0|            goto error; \
  |  | 2765|      0|        } \
  |  | 2766|     14|        PyStructSequence_SET_ITEM(v, (pos), obj); \
  |  |  ------------------
  |  |  |  |   11|     14|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  |  |  ------------------
  |  | 2767|     14|    } while (0)
  |  |  ------------------
  |  |  |  Branch (2767:14): [Folded, False: 14]
  |  |  ------------------
  ------------------
 2826|     14|#endif
 2827|       |#ifdef HAVE_STRUCT_STAT_ST_GEN
 2828|       |    SET_ITEM(ST_GEN_IDX, PyLong_FromLong((long)st->st_gen));
 2829|       |#endif
 2830|       |#if defined(HAVE_STRUCT_STAT_ST_BIRTHTIME)
 2831|       |    {
 2832|       |      unsigned long bsec, bnsec;
 2833|       |      bsec = (long)st->st_birthtime;
 2834|       |#ifdef HAVE_STAT_TV_NSEC2
 2835|       |      bnsec = st->st_birthtimespec.tv_nsec;
 2836|       |#else
 2837|       |      bnsec = 0;
 2838|       |#endif
 2839|       |      SET_ITEM(ST_BIRTHTIME_IDX, PyFloat_FromDouble(bsec + bnsec * 1e-9));
 2840|       |    }
 2841|       |#elif defined(MS_WINDOWS)
 2842|       |    if (fill_time(state, v, -1, ST_BIRTHTIME_IDX, ST_BIRTHTIME_NS_IDX,
 2843|       |                  st->st_birthtime, st->st_birthtime_nsec) < 0) {
 2844|       |        goto error;
 2845|       |    }
 2846|       |#endif
 2847|       |#ifdef HAVE_STRUCT_STAT_ST_FLAGS
 2848|       |    SET_ITEM(ST_FLAGS_IDX, PyLong_FromLong((long)st->st_flags));
 2849|       |#endif
 2850|       |#ifdef HAVE_STRUCT_STAT_ST_FILE_ATTRIBUTES
 2851|       |    SET_ITEM(ST_FILE_ATTRIBUTES_IDX,
 2852|       |             PyLong_FromUnsignedLong(st->st_file_attributes));
 2853|       |#endif
 2854|       |#ifdef HAVE_STRUCT_STAT_ST_FSTYPE
 2855|       |   SET_ITEM(ST_FSTYPE_IDX, PyUnicode_FromString(st->st_fstype));
 2856|       |#endif
 2857|       |#ifdef HAVE_STRUCT_STAT_ST_REPARSE_TAG
 2858|       |    SET_ITEM(ST_REPARSE_TAG_IDX, PyLong_FromUnsignedLong(st->st_reparse_tag));
 2859|       |#endif
 2860|       |
 2861|     14|    assert(!PyErr_Occurred());
  ------------------
  |  Branch (2861:5): [True: 14, False: 0]
  ------------------
 2862|     14|    return v;
 2863|       |
 2864|      0|error:
 2865|      0|    Py_DECREF(v);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2866|      0|    return NULL;
 2867|       |
 2868|     14|#undef SET_ITEM
 2869|     14|}
posixmodule.c:get_posix_state:
 1230|     17|{
 1231|     17|    void *state = _PyModule_GetState(module);
 1232|     17|    assert(state != NULL);
  ------------------
  |  Branch (1232:5): [True: 17, False: 0]
  ------------------
 1233|     17|    return (_posixstate *)state;
 1234|     17|}
posixmodule.c:_PyLong_FromDev:
 1074|     29|{
 1075|     29|#ifdef NODEV
 1076|     29|    if (dev == NODEV) {
  ------------------
  |  Branch (1076:9): [True: 1, False: 28]
  ------------------
 1077|      1|        return PyLong_FromLongLong((long long)dev);
 1078|      1|    }
 1079|     28|#endif
 1080|     28|    return PyLong_FromUnsignedLongLong((unsigned long long)dev);
 1081|     29|}
posixmodule.c:fill_time:
 2686|     42|{
 2687|     42|    assert(!PyErr_Occurred());
  ------------------
  |  Branch (2687:5): [True: 42, False: 0]
  ------------------
 2688|     42|    assert(nsec < SEC_TO_NS);
  ------------------
  |  Branch (2688:5): [True: 42, False: 0]
  ------------------
 2689|       |
 2690|     42|    if (s_index >= 0) {
  ------------------
  |  Branch (2690:9): [True: 42, False: 0]
  ------------------
 2691|     42|        PyObject *s = _PyLong_FromTime_t(sec);
 2692|     42|        if (s == NULL) {
  ------------------
  |  Branch (2692:13): [True: 0, False: 42]
  ------------------
 2693|      0|            return -1;
 2694|      0|        }
 2695|     42|        PyStructSequence_SET_ITEM(v, s_index, s);
  ------------------
  |  |   11|     42|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  ------------------
 2696|     42|    }
 2697|       |
 2698|     42|    if (f_index >= 0) {
  ------------------
  |  Branch (2698:9): [True: 42, False: 0]
  ------------------
 2699|     42|        PyObject *float_s = PyFloat_FromDouble((double)sec + 1e-9 * nsec);
 2700|     42|        if (float_s == NULL) {
  ------------------
  |  Branch (2700:13): [True: 0, False: 42]
  ------------------
 2701|      0|            return -1;
 2702|      0|        }
 2703|     42|        PyStructSequence_SET_ITEM(v, f_index, float_s);
  ------------------
  |  |   11|     42|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  ------------------
 2704|     42|    }
 2705|       |
 2706|     42|    if (ns_index >= 0) {
  ------------------
  |  Branch (2706:9): [True: 42, False: 0]
  ------------------
 2707|     42|        PyObject *ns_total = stat_nanosecond_timestamp(state, sec, nsec);
 2708|     42|        if (ns_total == NULL) {
  ------------------
  |  Branch (2708:13): [True: 0, False: 42]
  ------------------
 2709|      0|            return -1;
 2710|      0|        }
 2711|     42|        PyStructSequence_SET_ITEM(v, ns_index, ns_total);
  ------------------
  |  |   11|     42|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  ------------------
 2712|     42|    }
 2713|       |
 2714|     42|    assert(!PyErr_Occurred());
  ------------------
  |  Branch (2714:5): [True: 42, False: 0]
  ------------------
 2715|     42|    return 0;
 2716|     42|}
posixmodule.c:stat_nanosecond_timestamp:
 2649|     42|{
 2650|       |#if SIZEOF_TIME_T == 4
 2651|       |    return PyLong_FromLongLong(sec * SEC_TO_NS + nsec);
 2652|       |#else
 2653|       |    /* 1677-09-21 00:12:44 to 2262-04-11 23:47:15 UTC inclusive */
 2654|     42|    if ((LLONG_MIN/SEC_TO_NS) <= sec && sec <= (LLONG_MAX/SEC_TO_NS - 1)) {
  ------------------
  |  | 2646|     42|#define SEC_TO_NS (1000000000LL)
  ------------------
                  if ((LLONG_MIN/SEC_TO_NS) <= sec && sec <= (LLONG_MAX/SEC_TO_NS - 1)) {
  ------------------
  |  | 2646|     42|#define SEC_TO_NS (1000000000LL)
  ------------------
  |  Branch (2654:9): [True: 42, False: 0]
  |  Branch (2654:41): [True: 42, False: 0]
  ------------------
 2655|     42|        return PyLong_FromLongLong(sec * SEC_TO_NS + nsec);
  ------------------
  |  | 2646|     42|#define SEC_TO_NS (1000000000LL)
  ------------------
 2656|     42|    }
 2657|      0|    else
 2658|      0|    {
 2659|      0|        PyObject *ns_total = NULL;
 2660|      0|        PyObject *s_in_ns = NULL;
 2661|      0|        PyObject *s = _PyLong_FromTime_t(sec);
 2662|      0|        PyObject *ns_fractional = PyLong_FromUnsignedLong(nsec);
 2663|      0|        if (s == NULL || ns_fractional == NULL) {
  ------------------
  |  Branch (2663:13): [True: 0, False: 0]
  |  Branch (2663:26): [True: 0, False: 0]
  ------------------
 2664|      0|            goto exit;
 2665|      0|        }
 2666|       |
 2667|      0|        s_in_ns = PyNumber_Multiply(s, state->billion);
 2668|      0|        if (s_in_ns == NULL) {
  ------------------
  |  Branch (2668:13): [True: 0, False: 0]
  ------------------
 2669|      0|            goto exit;
 2670|      0|        }
 2671|       |
 2672|      0|        ns_total = PyNumber_Add(s_in_ns, ns_fractional);
 2673|       |
 2674|      0|    exit:
 2675|      0|        Py_XDECREF(s);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2676|      0|        Py_XDECREF(ns_fractional);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2677|      0|        Py_XDECREF(s_in_ns);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2678|      0|        return ns_total;
 2679|      0|    }
 2680|     42|#endif
 2681|     42|}
posixmodule.c:path_cleanup:
 1371|     28|{
 1372|     28|    wchar_t *wide = (wchar_t *)path->wide;
 1373|     28|    path->wide = NULL;
 1374|     28|    PyMem_Free(wide);
 1375|     28|    Py_CLEAR(path->object);
  ------------------
  |  |  484|     28|    do { \
  |  |  485|     28|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|     28|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|     28|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|     28|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|     28|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 28, False: 0]
  |  |  ------------------
  |  |  488|     28|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|     28|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|     28|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|     28|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     28|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     28|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|     28|        } \
  |  |  491|     28|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 28]
  |  |  ------------------
  ------------------
 1376|       |    Py_CLEAR(path->cleanup);
  ------------------
  |  |  484|     28|    do { \
  |  |  485|     28|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|     28|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|     28|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|     28|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|     28|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 23, False: 5]
  |  |  ------------------
  |  |  488|     23|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|     23|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|     23|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|     23|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     23|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     23|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|     23|        } \
  |  |  491|     28|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 28]
  |  |  ------------------
  ------------------
 1377|     28|}
posixmodule.c:follow_symlinks_specified:
 1617|      1|{
 1618|      1|    if (follow_symlinks)
  ------------------
  |  Branch (1618:9): [True: 1, False: 0]
  ------------------
 1619|      1|        return 0;
 1620|       |
 1621|      0|    argument_unavailable_error(function_name, "follow_symlinks");
 1622|      0|    return 1;
 1623|      1|}
posixmodule.c:dir_fd_and_follow_symlinks_invalid:
 1665|      1|{
 1666|      1|    if ((dir_fd != DEFAULT_DIR_FD) && (!follow_symlinks)) {
  ------------------
  |  | 1138|      1|#define DEFAULT_DIR_FD (int)AT_FDCWD
  ------------------
  |  Branch (1666:9): [True: 0, False: 1]
  |  Branch (1666:39): [True: 0, False: 0]
  ------------------
 1667|      0|        PyErr_Format(PyExc_ValueError,
 1668|      0|                     "%s: cannot use dir_fd and follow_symlinks together",
 1669|      0|                     function_name);
 1670|      0|        return 1;
 1671|      0|    }
 1672|      1|    return 0;
 1673|      1|}
posixmodule.c:os_listdir_impl:
 5142|      4|{
 5143|      4|    if (PySys_Audit("os.listdir", "O",
  ------------------
  |  Branch (5143:9): [True: 0, False: 4]
  ------------------
 5144|      4|                    path->object ? path->object : Py_None) < 0) {
  ------------------
  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (5144:21): [True: 4, False: 0]
  ------------------
 5145|      0|        return NULL;
 5146|      0|    }
 5147|       |#if defined(MS_WINDOWS) && !defined(HAVE_OPENDIR)
 5148|       |    return _listdir_windows_no_opendir(path, NULL);
 5149|       |#else
 5150|      4|    return _posix_listdir(path, NULL);
 5151|      4|#endif
 5152|      4|}
posixmodule.c:_posix_listdir:
 5004|      4|{
 5005|      4|    PyObject *v;
 5006|      4|    DIR *dirp = NULL;
 5007|      4|    struct dirent *ep;
 5008|      4|    int return_str; /* if false, return bytes */
 5009|      4|#ifdef HAVE_FDOPENDIR
 5010|      4|    int fd = -1;
 5011|      4|#endif
 5012|       |
 5013|      4|    errno = 0;
 5014|      4|#ifdef HAVE_FDOPENDIR
 5015|      4|    if (path->is_fd) {
  ------------------
  |  Branch (5015:9): [True: 0, False: 4]
  ------------------
 5016|      0|      if (HAVE_FDOPENDIR_RUNTIME) {
  ------------------
  |  |  609|      0|#  define HAVE_FDOPENDIR_RUNTIME 1
  |  |  ------------------
  |  |  |  Branch (609:34): [True: 0, Folded]
  |  |  ------------------
  ------------------
 5017|       |        /* closedir() closes the FD, so we duplicate it */
 5018|      0|        fd = _Py_dup(path->fd);
 5019|      0|        if (fd == -1)
  ------------------
  |  Branch (5019:13): [True: 0, False: 0]
  ------------------
 5020|      0|            return NULL;
 5021|       |
 5022|      0|        return_str = 1;
 5023|       |
 5024|      0|        Py_BEGIN_ALLOW_THREADS
  ------------------
  |  |  119|      0|#define Py_BEGIN_ALLOW_THREADS { \
  |  |  120|      0|                        PyThreadState *_save; \
  |  |  121|      0|                        _save = PyEval_SaveThread();
  ------------------
 5025|      0|        dirp = fdopendir(fd);
 5026|      0|        Py_END_ALLOW_THREADS
  ------------------
  |  |  124|      0|#define Py_END_ALLOW_THREADS    PyEval_RestoreThread(_save); \
  |  |  125|      0|                 }
  ------------------
 5027|      0|      } else {
 5028|      0|        PyErr_SetString(PyExc_TypeError,
 5029|      0|            "listdir: path should be string, bytes, os.PathLike or None, not int");
 5030|      0|        return NULL;
 5031|      0|      }
 5032|      0|    }
 5033|      4|    else
 5034|      4|#endif
 5035|      4|    {
 5036|      4|        const char *name;
 5037|      4|        if (path->narrow) {
  ------------------
  |  Branch (5037:13): [True: 4, False: 0]
  ------------------
 5038|      4|            name = path->narrow;
 5039|       |            /* only return bytes if they specified a bytes object */
 5040|      4|            return_str = !PyBytes_Check(path->object);
  ------------------
  |  |   28|      4|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_BYTES_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      4|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
 5041|      4|        }
 5042|      0|        else {
 5043|      0|            name = ".";
 5044|      0|            return_str = 1;
 5045|      0|        }
 5046|       |
 5047|      4|        Py_BEGIN_ALLOW_THREADS
  ------------------
  |  |  119|      4|#define Py_BEGIN_ALLOW_THREADS { \
  |  |  120|      4|                        PyThreadState *_save; \
  |  |  121|      4|                        _save = PyEval_SaveThread();
  ------------------
 5048|      4|        dirp = opendir(name);
 5049|      4|        Py_END_ALLOW_THREADS
  ------------------
  |  |  124|      4|#define Py_END_ALLOW_THREADS    PyEval_RestoreThread(_save); \
  |  |  125|      4|                 }
  ------------------
 5050|      4|    }
 5051|       |
 5052|      4|    if (dirp == NULL) {
  ------------------
  |  Branch (5052:9): [True: 0, False: 4]
  ------------------
 5053|      0|        path_error(path);
 5054|      0|        list = NULL;
 5055|      0|#ifdef HAVE_FDOPENDIR
 5056|      0|        if (fd != -1) {
  ------------------
  |  Branch (5056:13): [True: 0, False: 0]
  ------------------
 5057|      0|            Py_BEGIN_ALLOW_THREADS
  ------------------
  |  |  119|      0|#define Py_BEGIN_ALLOW_THREADS { \
  |  |  120|      0|                        PyThreadState *_save; \
  |  |  121|      0|                        _save = PyEval_SaveThread();
  ------------------
 5058|      0|            close(fd);
 5059|      0|            Py_END_ALLOW_THREADS
  ------------------
  |  |  124|      0|#define Py_END_ALLOW_THREADS    PyEval_RestoreThread(_save); \
  |  |  125|      0|                 }
  ------------------
 5060|      0|        }
 5061|      0|#endif
 5062|      0|        goto exit;
 5063|      0|    }
 5064|      4|    if ((list = PyList_New(0)) == NULL) {
  ------------------
  |  Branch (5064:9): [True: 0, False: 4]
  ------------------
 5065|      0|        goto exit;
 5066|      0|    }
 5067|    288|    for (;;) {
 5068|    288|        errno = 0;
 5069|    288|        Py_BEGIN_ALLOW_THREADS
  ------------------
  |  |  119|    288|#define Py_BEGIN_ALLOW_THREADS { \
  |  |  120|    288|                        PyThreadState *_save; \
  |  |  121|    288|                        _save = PyEval_SaveThread();
  ------------------
 5070|    288|        ep = readdir(dirp);
 5071|    288|        Py_END_ALLOW_THREADS
  ------------------
  |  |  124|    288|#define Py_END_ALLOW_THREADS    PyEval_RestoreThread(_save); \
  |  |  125|    288|                 }
  ------------------
 5072|    288|        if (ep == NULL) {
  ------------------
  |  Branch (5072:13): [True: 4, False: 284]
  ------------------
 5073|      4|            if (errno == 0) {
  ------------------
  |  Branch (5073:17): [True: 4, False: 0]
  ------------------
 5074|      4|                break;
 5075|      4|            } else {
 5076|      0|                path_error(path);
 5077|      0|                Py_CLEAR(list);
  ------------------
  |  |  484|      0|    do { \
  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5078|      0|                goto exit;
 5079|      0|            }
 5080|      4|        }
 5081|    284|        if (ep->d_name[0] == '.' &&
  ------------------
  |  Branch (5081:13): [True: 8, False: 276]
  ------------------
 5082|      8|            (NAMLEN(ep) == 1 ||
  ------------------
  |  |  327|      8|#  define NAMLEN(dirent) strlen((dirent)->d_name)
  ------------------
  |  Branch (5082:14): [True: 4, False: 4]
  ------------------
 5083|      4|             (ep->d_name[1] == '.' && NAMLEN(ep) == 2)))
  ------------------
  |  |  327|      4|#  define NAMLEN(dirent) strlen((dirent)->d_name)
  ------------------
  |  Branch (5083:15): [True: 4, False: 0]
  |  Branch (5083:39): [True: 4, False: 0]
  ------------------
 5084|      8|            continue;
 5085|    276|        if (return_str)
  ------------------
  |  Branch (5085:13): [True: 276, False: 0]
  ------------------
 5086|    276|            v = PyUnicode_DecodeFSDefaultAndSize(ep->d_name, NAMLEN(ep));
  ------------------
  |  |  327|    276|#  define NAMLEN(dirent) strlen((dirent)->d_name)
  ------------------
 5087|      0|        else
 5088|      0|            v = PyBytes_FromStringAndSize(ep->d_name, NAMLEN(ep));
  ------------------
  |  |  327|      0|#  define NAMLEN(dirent) strlen((dirent)->d_name)
  ------------------
 5089|    276|        if (v == NULL) {
  ------------------
  |  Branch (5089:13): [True: 0, False: 276]
  ------------------
 5090|      0|            Py_CLEAR(list);
  ------------------
  |  |  484|      0|    do { \
  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5091|      0|            break;
 5092|      0|        }
 5093|    276|        if (PyList_Append(list, v) != 0) {
  ------------------
  |  Branch (5093:13): [True: 0, False: 276]
  ------------------
 5094|      0|            Py_DECREF(v);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5095|      0|            Py_CLEAR(list);
  ------------------
  |  |  484|      0|    do { \
  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5096|      0|            break;
 5097|      0|        }
 5098|    276|        Py_DECREF(v);
  ------------------
  |  |  430|    276|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    276|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    276|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5099|    276|    }
 5100|       |
 5101|      4|exit:
 5102|      4|    if (dirp != NULL) {
  ------------------
  |  Branch (5102:9): [True: 4, False: 0]
  ------------------
 5103|      4|        Py_BEGIN_ALLOW_THREADS
  ------------------
  |  |  119|      4|#define Py_BEGIN_ALLOW_THREADS { \
  |  |  120|      4|                        PyThreadState *_save; \
  |  |  121|      4|                        _save = PyEval_SaveThread();
  ------------------
 5104|      4|#ifdef HAVE_FDOPENDIR
 5105|      4|        if (fd > -1)
  ------------------
  |  Branch (5105:13): [True: 0, False: 4]
  ------------------
 5106|      0|            rewinddir(dirp);
 5107|      4|#endif
 5108|      4|        closedir(dirp);
 5109|      4|        Py_END_ALLOW_THREADS
  ------------------
  |  |  124|      4|#define Py_END_ALLOW_THREADS    PyEval_RestoreThread(_save); \
  |  |  125|      4|                 }
  ------------------
 5110|      4|    }
 5111|       |
 5112|      4|    return list;
 5113|      4|}  /* end of _posix_listdir */
posixmodule.c:os_getegid_impl:
 9556|      1|{
 9557|      1|    return _PyLong_FromGid(getegid());
 9558|      1|}
posixmodule.c:os_geteuid_impl:
 9572|      1|{
 9573|      1|    return _PyLong_FromUid(geteuid());
 9574|      1|}
posixmodule.c:os_getgid_impl:
 9588|      1|{
 9589|      1|    return _PyLong_FromGid(getgid());
 9590|      1|}
posixmodule.c:os_getuid_impl:
10118|      1|{
10119|      1|    return _PyLong_FromUid(getuid());
10120|      1|}
posixmodule.c:os__path_normpath_impl:
 6134|      5|{
 6135|      5|    PyObject *result;
 6136|      5|    Py_ssize_t norm_len;
 6137|      5|    wchar_t *norm_path = _Py_normpath_and_size((wchar_t *)path->wide,
 6138|      5|                                               path->length, &norm_len);
 6139|      5|    if (!norm_len) {
  ------------------
  |  Branch (6139:9): [True: 0, False: 5]
  ------------------
 6140|      0|        result = PyUnicode_FromOrdinal('.');
 6141|      0|    }
 6142|      5|    else {
 6143|      5|        result = PyUnicode_FromWideChar(norm_path, norm_len);
 6144|      5|    }
 6145|      5|    if (PyBytes_Check(path->object)) {
  ------------------
  |  |   28|      5|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_BYTES_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      5|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 0, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6146|      0|        Py_SETREF(result, PyUnicode_EncodeFSDefault(result));
  ------------------
  |  |  352|      0|    do { \
  |  |  353|      0|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  354|      0|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  355|      0|        *_tmp_dst_ptr = (src); \
  |  |  356|      0|        Py_DECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  357|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (357:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6147|      0|    }
 6148|      5|    return result;
 6149|      5|}
posixmodule.c:os_fspath_impl:
17187|     40|{
17188|     40|    return PyOS_FSPath(path);
17189|     40|}
posixmodule.c:convertenviron:
 1792|      1|{
 1793|      1|    PyObject *d;
 1794|       |#ifdef MS_WINDOWS
 1795|       |    wchar_t **e;
 1796|       |#else
 1797|      1|    char **e;
 1798|      1|#endif
 1799|       |
 1800|      1|    d = PyDict_New();
 1801|      1|    if (d == NULL)
  ------------------
  |  Branch (1801:9): [True: 0, False: 1]
  ------------------
 1802|      0|        return NULL;
 1803|       |#ifdef MS_WINDOWS
 1804|       |    /* _wenviron must be initialized in this way if the program is started
 1805|       |       through main() instead of wmain(). */
 1806|       |    (void)_wgetenv(L"");
 1807|       |    e = _wenviron;
 1808|       |#elif defined(USE_DARWIN_NS_GET_ENVIRON)
 1809|       |    /* environ is not accessible as an extern in a shared object on OSX; use
 1810|       |       _NSGetEnviron to resolve it. The value changes if you add environment
 1811|       |       variables between calls to Py_Initialize, so don't cache the value. */
 1812|       |    e = *_NSGetEnviron();
 1813|       |#else
 1814|      1|    e = environ;
 1815|      1|#endif
 1816|      1|    if (e == NULL)
  ------------------
  |  Branch (1816:9): [True: 0, False: 1]
  ------------------
 1817|      0|        return d;
 1818|     35|    for (; *e != NULL; e++) {
  ------------------
  |  Branch (1818:12): [True: 34, False: 1]
  ------------------
 1819|     34|        PyObject *k;
 1820|     34|        PyObject *v;
 1821|       |#ifdef MS_WINDOWS
 1822|       |        const wchar_t *p = wcschr(*e, L'=');
 1823|       |#else
 1824|     34|        const char *p = strchr(*e, '=');
 1825|     34|#endif
 1826|     34|        if (p == NULL)
  ------------------
  |  Branch (1826:13): [True: 0, False: 34]
  ------------------
 1827|      0|            continue;
 1828|       |#ifdef MS_WINDOWS
 1829|       |        k = PyUnicode_FromWideChar(*e, (Py_ssize_t)(p-*e));
 1830|       |#else
 1831|     34|        k = PyBytes_FromStringAndSize(*e, (Py_ssize_t)(p-*e));
 1832|     34|#endif
 1833|     34|        if (k == NULL) {
  ------------------
  |  Branch (1833:13): [True: 0, False: 34]
  ------------------
 1834|      0|            Py_DECREF(d);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1835|      0|            return NULL;
 1836|      0|        }
 1837|       |#ifdef MS_WINDOWS
 1838|       |        v = PyUnicode_FromWideChar(p+1, -1);
 1839|       |#else
 1840|     34|        v = PyBytes_FromStringAndSize(p+1, strlen(p+1));
 1841|     34|#endif
 1842|     34|        if (v == NULL) {
  ------------------
  |  Branch (1842:13): [True: 0, False: 34]
  ------------------
 1843|      0|            Py_DECREF(k);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1844|      0|            Py_DECREF(d);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1845|      0|            return NULL;
 1846|      0|        }
 1847|     34|        if (PyDict_SetDefaultRef(d, k, v, NULL) < 0) {
  ------------------
  |  Branch (1847:13): [True: 0, False: 34]
  ------------------
 1848|      0|            Py_DECREF(v);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1849|      0|            Py_DECREF(k);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1850|      0|            Py_DECREF(d);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1851|      0|            return NULL;
 1852|      0|        }
 1853|     34|        Py_DECREF(k);
  ------------------
  |  |  430|     34|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     34|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     34|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1854|     34|        Py_DECREF(v);
  ------------------
  |  |  430|     34|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     34|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     34|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1855|     34|    }
 1856|      1|    return d;
 1857|      1|}
posixmodule.c:posixmodule_exec:
18685|      1|{
18686|      1|    _posixstate *state = get_posix_state(m);
18687|       |
18688|      1|#if defined(HAVE_PWRITEV)
18689|      1|    if (HAVE_PWRITEV_RUNTIME) {} else {
  ------------------
  |  |  618|      1|#  define HAVE_PWRITEV_RUNTIME 1
  |  |  ------------------
  |  |  |  Branch (618:32): [True: 1, Folded]
  |  |  ------------------
  ------------------
18690|      0|        PyObject* dct = PyModule_GetDict(m);
18691|       |
18692|      0|        if (dct == NULL) {
  ------------------
  |  Branch (18692:13): [True: 0, False: 0]
  ------------------
18693|      0|            return -1;
18694|      0|        }
18695|       |
18696|      0|        if (PyDict_PopString(dct, "pwritev", NULL) < 0) {
  ------------------
  |  Branch (18696:13): [True: 0, False: 0]
  ------------------
18697|      0|            return -1;
18698|      0|        }
18699|      0|        if (PyDict_PopString(dct, "preadv", NULL) < 0) {
  ------------------
  |  Branch (18699:13): [True: 0, False: 0]
  ------------------
18700|      0|            return -1;
18701|      0|        }
18702|      0|    }
18703|      1|#endif
18704|       |
18705|      1|#ifdef HAVE_STATX
18706|      1|    if (statx == NULL) {
  ------------------
  |  Branch (18706:9): [True: 0, False: 1]
  ------------------
18707|      0|        PyObject* dct = PyModule_GetDict(m);
18708|      0|        if (dct == NULL) {
  ------------------
  |  Branch (18708:13): [True: 0, False: 0]
  ------------------
18709|      0|            return -1;
18710|      0|        }
18711|      0|        if (PyDict_PopString(dct, "statx", NULL) < 0) {
  ------------------
  |  Branch (18711:13): [True: 0, False: 0]
  ------------------
18712|      0|            return -1;
18713|      0|        }
18714|      0|    }
18715|      1|    else {
18716|      1|        state->StatxResultType = PyType_FromModuleAndSpec(m, &pystatx_result_spec, NULL);
18717|      1|        if (PyModule_AddObjectRef(m, "statx_result", state->StatxResultType) < 0) {
  ------------------
  |  Branch (18717:13): [True: 0, False: 1]
  ------------------
18718|      0|            return -1;
18719|      0|        }
18720|      1|    }
18721|      1|#endif
18722|       |
18723|       |    /* Initialize environ dictionary */
18724|      1|    if (PyModule_Add(m, "environ", convertenviron()) != 0) {
  ------------------
  |  Branch (18724:9): [True: 0, False: 1]
  ------------------
18725|      0|        return -1;
18726|      0|    }
18727|       |
18728|      1|    if (all_ins(m))
  ------------------
  |  Branch (18728:9): [True: 0, False: 1]
  ------------------
18729|      0|        return -1;
18730|       |
18731|      1|    if (setup_confname_tables(m))
  ------------------
  |  Branch (18731:9): [True: 0, False: 1]
  ------------------
18732|      0|        return -1;
18733|       |
18734|      1|    if (PyModule_AddObjectRef(m, "error", PyExc_OSError) < 0) {
  ------------------
  |  Branch (18734:9): [True: 0, False: 1]
  ------------------
18735|      0|        return -1;
18736|      0|    }
18737|       |
18738|      1|#if defined(HAVE_WAITID)
18739|      1|    state->WaitidResultType = (PyObject *)PyStructSequence_NewType(&waitid_result_desc);
18740|      1|    if (PyModule_AddObjectRef(m, "waitid_result", state->WaitidResultType) < 0) {
  ------------------
  |  Branch (18740:9): [True: 0, False: 1]
  ------------------
18741|      0|        return -1;
18742|      0|    }
18743|      1|#endif
18744|       |
18745|      1|    stat_result_desc.fields[7].name = PyStructSequence_UnnamedField;
18746|      1|    stat_result_desc.fields[8].name = PyStructSequence_UnnamedField;
18747|      1|    stat_result_desc.fields[9].name = PyStructSequence_UnnamedField;
18748|      1|    state->StatResultType = (PyObject *)PyStructSequence_NewType(&stat_result_desc);
18749|      1|    if (PyModule_AddObjectRef(m, "stat_result", state->StatResultType) < 0) {
  ------------------
  |  Branch (18749:9): [True: 0, False: 1]
  ------------------
18750|      0|        return -1;
18751|      0|    }
18752|      1|    state->statresult_new_orig = ((PyTypeObject *)state->StatResultType)->tp_new;
18753|      1|    ((PyTypeObject *)state->StatResultType)->tp_new = statresult_new;
18754|       |
18755|      1|    state->StatVFSResultType = (PyObject *)PyStructSequence_NewType(&statvfs_result_desc);
18756|      1|    if (PyModule_AddObjectRef(m, "statvfs_result", state->StatVFSResultType) < 0) {
  ------------------
  |  Branch (18756:9): [True: 0, False: 1]
  ------------------
18757|      0|        return -1;
18758|      0|    }
18759|       |
18760|      1|#if defined(HAVE_SCHED_SETPARAM) || defined(HAVE_SCHED_SETSCHEDULER) || defined(POSIX_SPAWN_SETSCHEDULER) || defined(POSIX_SPAWN_SETSCHEDPARAM)
18761|      1|    state->SchedParamType = (PyObject *)PyStructSequence_NewType(&sched_param_desc);
18762|      1|    if (PyModule_AddObjectRef(m, "sched_param", state->SchedParamType) < 0) {
  ------------------
  |  Branch (18762:9): [True: 0, False: 1]
  ------------------
18763|      0|        return -1;
18764|      0|    }
18765|      1|    ((PyTypeObject *)state->SchedParamType)->tp_new = os_sched_param;
18766|      1|    if (_PyType_AddMethod((PyTypeObject *)state->SchedParamType,
  ------------------
  |  Branch (18766:9): [True: 0, False: 1]
  ------------------
18767|      1|                          &os_sched_param_reduce_method) < 0)
18768|      0|    {
18769|      0|        return -1;
18770|      0|    }
18771|      1|    PyType_Modified((PyTypeObject *)state->SchedParamType);
18772|      1|#endif
18773|       |
18774|       |    /* initialize TerminalSize_info */
18775|      1|    state->TerminalSizeType = (PyObject *)PyStructSequence_NewType(&TerminalSize_desc);
18776|      1|    if (PyModule_AddObjectRef(m, "terminal_size", state->TerminalSizeType) < 0) {
  ------------------
  |  Branch (18776:9): [True: 0, False: 1]
  ------------------
18777|      0|        return -1;
18778|      0|    }
18779|       |
18780|       |    /* initialize scandir types */
18781|      1|    PyObject *ScandirIteratorType = PyType_FromModuleAndSpec(m, &ScandirIteratorType_spec, NULL);
18782|      1|    if (ScandirIteratorType == NULL) {
  ------------------
  |  Branch (18782:9): [True: 0, False: 1]
  ------------------
18783|      0|        return -1;
18784|      0|    }
18785|      1|    state->ScandirIteratorType = ScandirIteratorType;
18786|       |
18787|      1|    state->DirEntryType = PyType_FromModuleAndSpec(m, &DirEntryType_spec, NULL);
18788|      1|    if (PyModule_AddObjectRef(m, "DirEntry", state->DirEntryType) < 0) {
  ------------------
  |  Branch (18788:9): [True: 0, False: 1]
  ------------------
18789|      0|        return -1;
18790|      0|    }
18791|       |
18792|      1|    state->TimesResultType = (PyObject *)PyStructSequence_NewType(&times_result_desc);
18793|      1|    if (PyModule_AddObjectRef(m, "times_result", state->TimesResultType) < 0) {
  ------------------
  |  Branch (18793:9): [True: 0, False: 1]
  ------------------
18794|      0|        return -1;
18795|      0|    }
18796|       |
18797|      1|    state->UnameResultType = (PyObject *)PyStructSequence_NewType(&uname_result_desc);
18798|      1|    if (PyModule_AddObjectRef(m, "uname_result", state->UnameResultType) < 0) {
  ------------------
  |  Branch (18798:9): [True: 0, False: 1]
  ------------------
18799|      0|        return -1;
18800|      0|    }
18801|       |
18802|      1|    if ((state->billion = PyLong_FromLong(1000000000)) == NULL)
  ------------------
  |  Branch (18802:9): [True: 0, False: 1]
  ------------------
18803|      0|        return -1;
18804|      1|#if defined(HAVE_WAIT3) || defined(HAVE_WAIT4)
18805|      1|    state->struct_rusage = PyUnicode_InternFromString("struct_rusage");
18806|      1|    if (state->struct_rusage == NULL)
  ------------------
  |  Branch (18806:9): [True: 0, False: 1]
  ------------------
18807|      0|        return -1;
18808|      1|#endif
18809|      1|    state->st_mode = PyUnicode_InternFromString("st_mode");
18810|      1|    if (state->st_mode == NULL)
  ------------------
  |  Branch (18810:9): [True: 0, False: 1]
  ------------------
18811|      0|        return -1;
18812|       |
18813|       |    /* suppress "function not used" warnings */
18814|      1|    {
18815|      1|    int ignored;
18816|      1|    fd_specified("", -1);
18817|      1|    follow_symlinks_specified("", 1);
18818|      1|    dir_fd_and_follow_symlinks_invalid("chmod", DEFAULT_DIR_FD, 1);
  ------------------
  |  | 1138|      1|#define DEFAULT_DIR_FD (int)AT_FDCWD
  ------------------
18819|      1|    dir_fd_converter(Py_None, &ignored);
  ------------------
  |  |  616|      1|#  define Py_None (&_Py_NoneStruct)
  ------------------
18820|      1|    dir_fd_unavailable(Py_None, &ignored);
  ------------------
  |  |  616|      1|#  define Py_None (&_Py_NoneStruct)
  ------------------
18821|      1|    }
18822|       |
18823|       |    /*
18824|       |     * provide list of locally available functions
18825|       |     * so os.py can populate support_* lists
18826|       |     */
18827|      1|    PyObject *list = PyList_New(0);
18828|      1|    if (!list) {
  ------------------
  |  Branch (18828:9): [True: 0, False: 1]
  ------------------
18829|      0|        return -1;
18830|      0|    }
18831|     33|    for (const struct have_function *trace = have_functions; trace->label; trace++) {
  ------------------
  |  Branch (18831:62): [True: 32, False: 1]
  ------------------
18832|     32|        PyObject *unicode;
18833|     32|        if (trace->probe && !trace->probe()) continue;
  ------------------
  |  Branch (18833:13): [True: 17, False: 15]
  |  Branch (18833:29): [True: 0, False: 17]
  ------------------
18834|     32|        unicode = PyUnicode_DecodeASCII(trace->label, strlen(trace->label), NULL);
18835|     32|        if (!unicode)
  ------------------
  |  Branch (18835:13): [True: 0, False: 32]
  ------------------
18836|      0|            return -1;
18837|     32|        if (PyList_Append(list, unicode))
  ------------------
  |  Branch (18837:13): [True: 0, False: 32]
  ------------------
18838|      0|            return -1;
18839|     32|        Py_DECREF(unicode);
  ------------------
  |  |  430|     32|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     32|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     32|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
18840|     32|    }
18841|       |
18842|      1|#ifndef MS_WINDOWS
18843|      1|    if (_Py_GetTicksPerSecond(&state->ticks_per_second) < 0) {
  ------------------
  |  Branch (18843:9): [True: 0, False: 1]
  ------------------
18844|      0|        PyErr_SetString(PyExc_RuntimeError,
18845|      0|                        "cannot read ticks_per_second");
18846|      0|        return -1;
18847|      0|    }
18848|      1|    assert(state->ticks_per_second >= 1);
  ------------------
  |  Branch (18848:5): [True: 1, False: 0]
  ------------------
18849|      1|#endif
18850|       |
18851|      1|    return PyModule_Add(m, "_have_functions", list);
18852|      1|}
posixmodule.c:all_ins:
17763|      1|{
17764|      1|#ifdef F_OK
17765|      1|    if (PyModule_AddIntMacro(m, F_OK)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17766|      1|#endif
17767|      1|#ifdef R_OK
17768|      1|    if (PyModule_AddIntMacro(m, R_OK)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17769|      1|#endif
17770|      1|#ifdef W_OK
17771|      1|    if (PyModule_AddIntMacro(m, W_OK)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17772|      1|#endif
17773|      1|#ifdef X_OK
17774|      1|    if (PyModule_AddIntMacro(m, X_OK)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17775|      1|#endif
17776|      1|#ifdef NGROUPS_MAX
17777|      1|    if (PyModule_AddIntMacro(m, NGROUPS_MAX)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17778|      1|#endif
17779|      1|#ifdef TMP_MAX
17780|      1|    if (PyModule_AddIntMacro(m, TMP_MAX)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17781|      1|#endif
17782|      1|#ifdef WCONTINUED
17783|      1|    if (PyModule_AddIntMacro(m, WCONTINUED)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17784|      1|#endif
17785|      1|#ifdef WNOHANG
17786|      1|    if (PyModule_AddIntMacro(m, WNOHANG)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17787|      1|#endif
17788|      1|#ifdef WUNTRACED
17789|      1|    if (PyModule_AddIntMacro(m, WUNTRACED)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17790|      1|#endif
17791|      1|#ifdef O_RDONLY
17792|      1|    if (PyModule_AddIntMacro(m, O_RDONLY)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17793|      1|#endif
17794|      1|#ifdef O_WRONLY
17795|      1|    if (PyModule_AddIntMacro(m, O_WRONLY)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17796|      1|#endif
17797|      1|#ifdef O_RDWR
17798|      1|    if (PyModule_AddIntMacro(m, O_RDWR)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17799|      1|#endif
17800|      1|#ifdef O_NDELAY
17801|      1|    if (PyModule_AddIntMacro(m, O_NDELAY)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17802|      1|#endif
17803|      1|#ifdef O_NONBLOCK
17804|      1|    if (PyModule_AddIntMacro(m, O_NONBLOCK)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17805|      1|#endif
17806|      1|#ifdef O_APPEND
17807|      1|    if (PyModule_AddIntMacro(m, O_APPEND)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17808|      1|#endif
17809|      1|#ifdef O_DSYNC
17810|      1|    if (PyModule_AddIntMacro(m, O_DSYNC)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17811|      1|#endif
17812|      1|#ifdef O_RSYNC
17813|      1|    if (PyModule_AddIntMacro(m, O_RSYNC)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17814|      1|#endif
17815|      1|#ifdef O_SYNC
17816|      1|    if (PyModule_AddIntMacro(m, O_SYNC)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17817|      1|#endif
17818|      1|#ifdef O_NOCTTY
17819|      1|    if (PyModule_AddIntMacro(m, O_NOCTTY)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17820|      1|#endif
17821|      1|#ifdef O_CREAT
17822|      1|    if (PyModule_AddIntMacro(m, O_CREAT)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17823|      1|#endif
17824|      1|#ifdef O_EXCL
17825|      1|    if (PyModule_AddIntMacro(m, O_EXCL)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17826|      1|#endif
17827|      1|#ifdef O_TRUNC
17828|      1|    if (PyModule_AddIntMacro(m, O_TRUNC)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17829|      1|#endif
17830|       |#ifdef O_BINARY
17831|       |    if (PyModule_AddIntMacro(m, O_BINARY)) return -1;
17832|       |#endif
17833|       |#ifdef O_TEXT
17834|       |    if (PyModule_AddIntMacro(m, O_TEXT)) return -1;
17835|       |#endif
17836|       |#ifdef O_XATTR
17837|       |    if (PyModule_AddIntMacro(m, O_XATTR)) return -1;
17838|       |#endif
17839|      1|#ifdef O_LARGEFILE
17840|      1|    if (PyModule_AddIntMacro(m, O_LARGEFILE)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17841|      1|#endif
17842|      1|#ifndef __GNU__
17843|       |#ifdef O_SHLOCK
17844|       |    if (PyModule_AddIntMacro(m, O_SHLOCK)) return -1;
17845|       |#endif
17846|       |#ifdef O_EXLOCK
17847|       |    if (PyModule_AddIntMacro(m, O_EXLOCK)) return -1;
17848|       |#endif
17849|      1|#endif
17850|       |#ifdef O_EXEC
17851|       |    if (PyModule_AddIntMacro(m, O_EXEC)) return -1;
17852|       |#endif
17853|       |#ifdef O_SEARCH
17854|       |    if (PyModule_AddIntMacro(m, O_SEARCH)) return -1;
17855|       |#endif
17856|      1|#ifdef O_PATH
17857|      1|    if (PyModule_AddIntMacro(m, O_PATH)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17858|      1|#endif
17859|       |#ifdef O_TTY_INIT
17860|       |    if (PyModule_AddIntMacro(m, O_TTY_INIT)) return -1;
17861|       |#endif
17862|      1|#ifdef O_TMPFILE
17863|      1|    if (PyModule_AddIntMacro(m, O_TMPFILE)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17864|      1|#endif
17865|      1|#ifdef PRIO_PROCESS
17866|      1|    if (PyModule_AddIntMacro(m, PRIO_PROCESS)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17867|      1|#endif
17868|      1|#ifdef PRIO_PGRP
17869|      1|    if (PyModule_AddIntMacro(m, PRIO_PGRP)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17870|      1|#endif
17871|      1|#ifdef PRIO_USER
17872|      1|    if (PyModule_AddIntMacro(m, PRIO_USER)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17873|      1|#endif
17874|       |#ifdef PRIO_DARWIN_THREAD
17875|       |    if (PyModule_AddIntMacro(m, PRIO_DARWIN_THREAD)) return -1;
17876|       |#endif
17877|       |#ifdef PRIO_DARWIN_PROCESS
17878|       |    if (PyModule_AddIntMacro(m, PRIO_DARWIN_PROCESS)) return -1;
17879|       |#endif
17880|       |#ifdef PRIO_DARWIN_BG
17881|       |    if (PyModule_AddIntMacro(m, PRIO_DARWIN_BG)) return -1;
17882|       |#endif
17883|       |#ifdef PRIO_DARWIN_NONUI
17884|       |    if (PyModule_AddIntMacro(m, PRIO_DARWIN_NONUI)) return -1;
17885|       |#endif
17886|      1|#ifdef O_CLOEXEC
17887|      1|    if (PyModule_AddIntMacro(m, O_CLOEXEC)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17888|      1|#endif
17889|      1|#ifdef O_ACCMODE
17890|      1|    if (PyModule_AddIntMacro(m, O_ACCMODE)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17891|      1|#endif
17892|       |#ifdef O_EVTONLY
17893|       |    if (PyModule_AddIntMacro(m, O_EVTONLY)) return -1;
17894|       |#endif
17895|      1|#ifdef O_FSYNC
17896|      1|    if (PyModule_AddIntMacro(m, O_FSYNC)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17897|      1|#endif
17898|       |#ifdef O_SYMLINK
17899|       |    if (PyModule_AddIntMacro(m, O_SYMLINK)) return -1;
17900|       |#endif
17901|       |
17902|      1|#ifdef SEEK_HOLE
17903|      1|    if (PyModule_AddIntMacro(m, SEEK_HOLE)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17904|      1|#endif
17905|      1|#ifdef SEEK_DATA
17906|      1|    if (PyModule_AddIntMacro(m, SEEK_DATA)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17907|      1|#endif
17908|       |
17909|       |/* MS Windows */
17910|       |#ifdef O_NOINHERIT
17911|       |    /* Don't inherit in child processes. */
17912|       |    if (PyModule_AddIntMacro(m, O_NOINHERIT)) return -1;
17913|       |#endif
17914|       |#ifdef _O_SHORT_LIVED
17915|       |    /* Optimize for short life (keep in memory). */
17916|       |    /* MS forgot to define this one with a non-underscore form too. */
17917|       |    if (PyModule_AddIntConstant(m, "O_SHORT_LIVED", _O_SHORT_LIVED)) return -1;
17918|       |#endif
17919|       |#ifdef O_TEMPORARY
17920|       |    /* Automatically delete when last handle is closed. */
17921|       |    if (PyModule_AddIntMacro(m, O_TEMPORARY)) return -1;
17922|       |#endif
17923|       |#ifdef O_RANDOM
17924|       |    /* Optimize for random access. */
17925|       |    if (PyModule_AddIntMacro(m, O_RANDOM)) return -1;
17926|       |#endif
17927|       |#ifdef O_SEQUENTIAL
17928|       |    /* Optimize for sequential access. */
17929|       |    if (PyModule_AddIntMacro(m, O_SEQUENTIAL)) return -1;
17930|       |#endif
17931|       |
17932|       |/* GNU extensions. */
17933|      1|#ifdef O_ASYNC
17934|       |    /* Send a SIGIO signal whenever input or output
17935|       |       becomes available on file descriptor */
17936|      1|    if (PyModule_AddIntMacro(m, O_ASYNC)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17937|      1|#endif
17938|      1|#ifdef O_DIRECT
17939|       |    /* Direct disk access. */
17940|      1|    if (PyModule_AddIntMacro(m, O_DIRECT)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17941|      1|#endif
17942|      1|#ifdef O_DIRECTORY
17943|       |    /* Must be a directory.      */
17944|      1|    if (PyModule_AddIntMacro(m, O_DIRECTORY)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17945|      1|#endif
17946|      1|#ifdef O_NOFOLLOW
17947|       |    /* Do not follow links.      */
17948|      1|    if (PyModule_AddIntMacro(m, O_NOFOLLOW)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17949|      1|#endif
17950|       |#ifdef O_NOFOLLOW_ANY
17951|       |    if (PyModule_AddIntMacro(m, O_NOFOLLOW_ANY)) return -1;
17952|       |#endif
17953|       |#ifdef O_NOLINKS
17954|       |    /* Fails if link count of the named file is greater than 1 */
17955|       |    if (PyModule_AddIntMacro(m, O_NOLINKS)) return -1;
17956|       |#endif
17957|      1|#ifdef O_NOATIME
17958|       |    /* Do not update the access time. */
17959|      1|    if (PyModule_AddIntMacro(m, O_NOATIME)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17960|      1|#endif
17961|       |
17962|       |    /* These come from sysexits.h */
17963|      1|#ifdef EX_OK
17964|      1|    if (PyModule_AddIntMacro(m, EX_OK)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17965|      1|#endif /* EX_OK */
17966|      1|#ifdef EX_USAGE
17967|      1|    if (PyModule_AddIntMacro(m, EX_USAGE)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17968|      1|#endif /* EX_USAGE */
17969|      1|#ifdef EX_DATAERR
17970|      1|    if (PyModule_AddIntMacro(m, EX_DATAERR)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17971|      1|#endif /* EX_DATAERR */
17972|      1|#ifdef EX_NOINPUT
17973|      1|    if (PyModule_AddIntMacro(m, EX_NOINPUT)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17974|      1|#endif /* EX_NOINPUT */
17975|      1|#ifdef EX_NOUSER
17976|      1|    if (PyModule_AddIntMacro(m, EX_NOUSER)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17977|      1|#endif /* EX_NOUSER */
17978|      1|#ifdef EX_NOHOST
17979|      1|    if (PyModule_AddIntMacro(m, EX_NOHOST)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17980|      1|#endif /* EX_NOHOST */
17981|      1|#ifdef EX_UNAVAILABLE
17982|      1|    if (PyModule_AddIntMacro(m, EX_UNAVAILABLE)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17983|      1|#endif /* EX_UNAVAILABLE */
17984|      1|#ifdef EX_SOFTWARE
17985|      1|    if (PyModule_AddIntMacro(m, EX_SOFTWARE)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17986|      1|#endif /* EX_SOFTWARE */
17987|      1|#ifdef EX_OSERR
17988|      1|    if (PyModule_AddIntMacro(m, EX_OSERR)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17989|      1|#endif /* EX_OSERR */
17990|      1|#ifdef EX_OSFILE
17991|      1|    if (PyModule_AddIntMacro(m, EX_OSFILE)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17992|      1|#endif /* EX_OSFILE */
17993|      1|#ifdef EX_CANTCREAT
17994|      1|    if (PyModule_AddIntMacro(m, EX_CANTCREAT)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17995|      1|#endif /* EX_CANTCREAT */
17996|      1|#ifdef EX_IOERR
17997|      1|    if (PyModule_AddIntMacro(m, EX_IOERR)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
17998|      1|#endif /* EX_IOERR */
17999|      1|#ifdef EX_TEMPFAIL
18000|      1|    if (PyModule_AddIntMacro(m, EX_TEMPFAIL)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18001|      1|#endif /* EX_TEMPFAIL */
18002|      1|#ifdef EX_PROTOCOL
18003|      1|    if (PyModule_AddIntMacro(m, EX_PROTOCOL)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18004|      1|#endif /* EX_PROTOCOL */
18005|      1|#ifdef EX_NOPERM
18006|      1|    if (PyModule_AddIntMacro(m, EX_NOPERM)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18007|      1|#endif /* EX_NOPERM */
18008|      1|#ifdef EX_CONFIG
18009|      1|    if (PyModule_AddIntMacro(m, EX_CONFIG)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18010|      1|#endif /* EX_CONFIG */
18011|       |#ifdef EX_NOTFOUND
18012|       |    if (PyModule_AddIntMacro(m, EX_NOTFOUND)) return -1;
18013|       |#endif /* EX_NOTFOUND */
18014|       |
18015|       |    /* statvfs */
18016|      1|#ifdef ST_RDONLY
18017|      1|    if (PyModule_AddIntMacro(m, ST_RDONLY)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18018|      1|#endif /* ST_RDONLY */
18019|      1|#ifdef ST_NOSUID
18020|      1|    if (PyModule_AddIntMacro(m, ST_NOSUID)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18021|      1|#endif /* ST_NOSUID */
18022|       |
18023|       |       /* GNU extensions */
18024|      1|#ifdef ST_NODEV
18025|      1|    if (PyModule_AddIntMacro(m, ST_NODEV)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18026|      1|#endif /* ST_NODEV */
18027|      1|#ifdef ST_NOEXEC
18028|      1|    if (PyModule_AddIntMacro(m, ST_NOEXEC)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18029|      1|#endif /* ST_NOEXEC */
18030|      1|#ifdef ST_SYNCHRONOUS
18031|      1|    if (PyModule_AddIntMacro(m, ST_SYNCHRONOUS)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18032|      1|#endif /* ST_SYNCHRONOUS */
18033|      1|#ifdef ST_MANDLOCK
18034|      1|    if (PyModule_AddIntMacro(m, ST_MANDLOCK)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18035|      1|#endif /* ST_MANDLOCK */
18036|      1|#ifdef ST_WRITE
18037|      1|    if (PyModule_AddIntMacro(m, ST_WRITE)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18038|      1|#endif /* ST_WRITE */
18039|      1|#ifdef ST_APPEND
18040|      1|    if (PyModule_AddIntMacro(m, ST_APPEND)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18041|      1|#endif /* ST_APPEND */
18042|      1|#ifdef ST_NOATIME
18043|      1|    if (PyModule_AddIntMacro(m, ST_NOATIME)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18044|      1|#endif /* ST_NOATIME */
18045|      1|#ifdef ST_NODIRATIME
18046|      1|    if (PyModule_AddIntMacro(m, ST_NODIRATIME)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18047|      1|#endif /* ST_NODIRATIME */
18048|      1|#ifdef ST_RELATIME
18049|      1|    if (PyModule_AddIntMacro(m, ST_RELATIME)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18050|      1|#endif /* ST_RELATIME */
18051|       |
18052|       |    /* FreeBSD sendfile() constants */
18053|       |#ifdef SF_NODISKIO
18054|       |    if (PyModule_AddIntMacro(m, SF_NODISKIO)) return -1;
18055|       |#endif
18056|       |    /* is obsolete since the 11.x release */
18057|       |#ifdef SF_MNOWAIT
18058|       |    if (PyModule_AddIntMacro(m, SF_MNOWAIT)) return -1;
18059|       |#endif
18060|       |#ifdef SF_SYNC
18061|       |    if (PyModule_AddIntMacro(m, SF_SYNC)) return -1;
18062|       |#endif
18063|       |#ifdef SF_NOCACHE
18064|       |    if (PyModule_AddIntMacro(m, SF_NOCACHE)) return -1;
18065|       |#endif
18066|       |
18067|      1|#ifdef TFD_NONBLOCK
18068|      1|    if (PyModule_AddIntMacro(m, TFD_NONBLOCK)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18069|      1|#endif
18070|      1|#ifdef TFD_CLOEXEC
18071|      1|    if (PyModule_AddIntMacro(m, TFD_CLOEXEC)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18072|      1|#endif
18073|      1|#ifdef TFD_TIMER_ABSTIME
18074|      1|    if (PyModule_AddIntMacro(m, TFD_TIMER_ABSTIME)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18075|      1|#endif
18076|      1|#ifdef TFD_TIMER_CANCEL_ON_SET
18077|      1|    if (PyModule_AddIntMacro(m, TFD_TIMER_CANCEL_ON_SET)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18078|      1|#endif
18079|       |
18080|       |    /* constants for posix_fadvise */
18081|      1|#ifdef POSIX_FADV_NORMAL
18082|      1|    if (PyModule_AddIntMacro(m, POSIX_FADV_NORMAL)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18083|      1|#endif
18084|      1|#ifdef POSIX_FADV_SEQUENTIAL
18085|      1|    if (PyModule_AddIntMacro(m, POSIX_FADV_SEQUENTIAL)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18086|      1|#endif
18087|      1|#ifdef POSIX_FADV_RANDOM
18088|      1|    if (PyModule_AddIntMacro(m, POSIX_FADV_RANDOM)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18089|      1|#endif
18090|      1|#ifdef POSIX_FADV_NOREUSE
18091|      1|    if (PyModule_AddIntMacro(m, POSIX_FADV_NOREUSE)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18092|      1|#endif
18093|      1|#ifdef POSIX_FADV_WILLNEED
18094|      1|    if (PyModule_AddIntMacro(m, POSIX_FADV_WILLNEED)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18095|      1|#endif
18096|      1|#ifdef POSIX_FADV_DONTNEED
18097|      1|    if (PyModule_AddIntMacro(m, POSIX_FADV_DONTNEED)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18098|      1|#endif
18099|       |
18100|       |    /* constants for waitid */
18101|      1|#if defined(HAVE_SYS_WAIT_H) && defined(HAVE_WAITID)
18102|      1|    if (PyModule_AddIntMacro(m, P_PID)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18103|      1|    if (PyModule_AddIntMacro(m, P_PGID)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18104|      1|    if (PyModule_AddIntMacro(m, P_ALL)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18105|      1|#ifdef P_PIDFD
18106|      1|    if (PyModule_AddIntMacro(m, P_PIDFD)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18107|      1|#endif
18108|       |#ifdef PIDFD_NONBLOCK
18109|       |    if (PyModule_AddIntMacro(m, PIDFD_NONBLOCK)) return -1;
18110|       |#endif
18111|      1|#endif
18112|      1|#ifdef WEXITED
18113|      1|    if (PyModule_AddIntMacro(m, WEXITED)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18114|      1|#endif
18115|      1|#ifdef WNOWAIT
18116|      1|    if (PyModule_AddIntMacro(m, WNOWAIT)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18117|      1|#endif
18118|      1|#ifdef WSTOPPED
18119|      1|    if (PyModule_AddIntMacro(m, WSTOPPED)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18120|      1|#endif
18121|      1|#ifdef CLD_EXITED
18122|      1|    if (PyModule_AddIntMacro(m, CLD_EXITED)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18123|      1|#endif
18124|      1|#ifdef CLD_KILLED
18125|      1|    if (PyModule_AddIntMacro(m, CLD_KILLED)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18126|      1|#endif
18127|      1|#ifdef CLD_DUMPED
18128|      1|    if (PyModule_AddIntMacro(m, CLD_DUMPED)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18129|      1|#endif
18130|      1|#ifdef CLD_TRAPPED
18131|      1|    if (PyModule_AddIntMacro(m, CLD_TRAPPED)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18132|      1|#endif
18133|      1|#ifdef CLD_STOPPED
18134|      1|    if (PyModule_AddIntMacro(m, CLD_STOPPED)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18135|      1|#endif
18136|      1|#ifdef CLD_CONTINUED
18137|      1|    if (PyModule_AddIntMacro(m, CLD_CONTINUED)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18138|      1|#endif
18139|       |
18140|       |    /* constants for lockf */
18141|      1|#ifdef F_LOCK
18142|      1|    if (PyModule_AddIntMacro(m, F_LOCK)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18143|      1|#endif
18144|      1|#ifdef F_TLOCK
18145|      1|    if (PyModule_AddIntMacro(m, F_TLOCK)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18146|      1|#endif
18147|      1|#ifdef F_ULOCK
18148|      1|    if (PyModule_AddIntMacro(m, F_ULOCK)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18149|      1|#endif
18150|      1|#ifdef F_TEST
18151|      1|    if (PyModule_AddIntMacro(m, F_TEST)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18152|      1|#endif
18153|       |
18154|      1|#ifdef RWF_DSYNC
18155|      1|    if (PyModule_AddIntConstant(m, "RWF_DSYNC", RWF_DSYNC)) return -1;
  ------------------
  |  Branch (18155:9): [True: 0, False: 1]
  ------------------
18156|      1|#endif
18157|      1|#ifdef RWF_HIPRI
18158|      1|    if (PyModule_AddIntConstant(m, "RWF_HIPRI", RWF_HIPRI)) return -1;
  ------------------
  |  Branch (18158:9): [True: 0, False: 1]
  ------------------
18159|      1|#endif
18160|      1|#ifdef RWF_SYNC
18161|      1|    if (PyModule_AddIntConstant(m, "RWF_SYNC", RWF_SYNC)) return -1;
  ------------------
  |  Branch (18161:9): [True: 0, False: 1]
  ------------------
18162|      1|#endif
18163|      1|#ifdef RWF_NOWAIT
18164|      1|    if (PyModule_AddIntConstant(m, "RWF_NOWAIT", RWF_NOWAIT)) return -1;
  ------------------
  |  Branch (18164:9): [True: 0, False: 1]
  ------------------
18165|      1|#endif
18166|       |#ifdef RWF_DONTCACHE
18167|       |    if (PyModule_AddIntConstant(m, "RWF_DONTCACHE", RWF_DONTCACHE)) return -1;
18168|       |#endif
18169|       |#ifdef RWF_ATOMIC
18170|       |    if (PyModule_AddIntConstant(m, "RWF_ATOMIC", RWF_ATOMIC)) return -1;
18171|       |#endif
18172|      1|#ifdef RWF_APPEND
18173|      1|    if (PyModule_AddIntConstant(m, "RWF_APPEND", RWF_APPEND)) return -1;
  ------------------
  |  Branch (18173:9): [True: 0, False: 1]
  ------------------
18174|      1|#endif
18175|       |
18176|       |/* constants for splice */
18177|      1|#if defined(HAVE_SPLICE) && defined(__linux__)
18178|      1|    if (PyModule_AddIntConstant(m, "SPLICE_F_MOVE", SPLICE_F_MOVE)) return -1;
  ------------------
  |  Branch (18178:9): [True: 0, False: 1]
  ------------------
18179|      1|    if (PyModule_AddIntConstant(m, "SPLICE_F_NONBLOCK", SPLICE_F_NONBLOCK)) return -1;
  ------------------
  |  Branch (18179:9): [True: 0, False: 1]
  ------------------
18180|      1|    if (PyModule_AddIntConstant(m, "SPLICE_F_MORE", SPLICE_F_MORE)) return -1;
  ------------------
  |  Branch (18180:9): [True: 0, False: 1]
  ------------------
18181|      1|#endif
18182|       |
18183|       |/* constants for posix_spawn */
18184|      1|#ifdef HAVE_POSIX_SPAWN
18185|      1|    if (PyModule_AddIntConstant(m, "POSIX_SPAWN_OPEN", POSIX_SPAWN_OPEN)) return -1;
  ------------------
  |  Branch (18185:9): [True: 0, False: 1]
  ------------------
18186|      1|    if (PyModule_AddIntConstant(m, "POSIX_SPAWN_CLOSE", POSIX_SPAWN_CLOSE)) return -1;
  ------------------
  |  Branch (18186:9): [True: 0, False: 1]
  ------------------
18187|      1|    if (PyModule_AddIntConstant(m, "POSIX_SPAWN_DUP2", POSIX_SPAWN_DUP2)) return -1;
  ------------------
  |  Branch (18187:9): [True: 0, False: 1]
  ------------------
18188|       |#ifdef HAVE_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSEFROM_NP
18189|       |    if (PyModule_AddIntMacro(m, POSIX_SPAWN_CLOSEFROM)) return -1;
18190|       |#endif
18191|      1|#endif
18192|       |
18193|       |#if defined(HAVE_SPAWNV) || defined (HAVE_RTPSPAWN)
18194|       |    if (PyModule_AddIntConstant(m, "P_WAIT", _P_WAIT)) return -1;
18195|       |    if (PyModule_AddIntConstant(m, "P_NOWAIT", _P_NOWAIT)) return -1;
18196|       |    if (PyModule_AddIntConstant(m, "P_NOWAITO", _P_NOWAITO)) return -1;
18197|       |#endif
18198|       |#ifdef HAVE_SPAWNV
18199|       |    if (PyModule_AddIntConstant(m, "P_OVERLAY", _OLD_P_OVERLAY)) return -1;
18200|       |    if (PyModule_AddIntConstant(m, "P_DETACH", _P_DETACH)) return -1;
18201|       |#endif
18202|       |
18203|      1|#ifdef HAVE_SCHED_H
18204|      1|#ifdef SCHED_OTHER
18205|      1|    if (PyModule_AddIntMacro(m, SCHED_OTHER)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18206|      1|#endif
18207|      1|#ifdef SCHED_DEADLINE
18208|      1|    if (PyModule_AddIntMacro(m, SCHED_DEADLINE)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18209|      1|#endif
18210|      1|#ifdef SCHED_FIFO
18211|      1|    if (PyModule_AddIntMacro(m, SCHED_FIFO)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18212|      1|#endif
18213|      1|#ifdef SCHED_NORMAL
18214|      1|    if (PyModule_AddIntMacro(m, SCHED_NORMAL)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18215|      1|#endif
18216|      1|#ifdef SCHED_RR
18217|      1|    if (PyModule_AddIntMacro(m, SCHED_RR)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18218|      1|#endif
18219|       |#ifdef SCHED_SPORADIC
18220|       |    if (PyModule_AddIntMacro(m, SCHED_SPORADIC)) return -1;
18221|       |#endif
18222|      1|#ifdef SCHED_BATCH
18223|      1|    if (PyModule_AddIntMacro(m, SCHED_BATCH)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18224|      1|#endif
18225|      1|#ifdef SCHED_IDLE
18226|      1|    if (PyModule_AddIntMacro(m, SCHED_IDLE)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18227|      1|#endif
18228|      1|#ifdef SCHED_RESET_ON_FORK
18229|      1|    if (PyModule_AddIntMacro(m, SCHED_RESET_ON_FORK)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18230|      1|#endif
18231|       |#ifdef SCHED_SYS
18232|       |    if (PyModule_AddIntMacro(m, SCHED_SYS)) return -1;
18233|       |#endif
18234|       |#ifdef SCHED_IA
18235|       |    if (PyModule_AddIntMacro(m, SCHED_IA)) return -1;
18236|       |#endif
18237|       |#ifdef SCHED_FSS
18238|       |    if (PyModule_AddIntMacro(m, SCHED_FSS)) return -1;
18239|       |#endif
18240|       |#ifdef SCHED_FX
18241|       |    if (PyModule_AddIntConstant(m, "SCHED_FX", SCHED_FSS)) return -1;
18242|       |#endif
18243|       |
18244|       |/* constants for namespaces */
18245|      1|#if defined(HAVE_SETNS) || defined(HAVE_UNSHARE)
18246|      1|#ifdef CLONE_FS
18247|      1|    if (PyModule_AddIntMacro(m, CLONE_FS)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18248|      1|#endif
18249|      1|#ifdef CLONE_FILES
18250|      1|    if (PyModule_AddIntMacro(m, CLONE_FILES)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18251|      1|#endif
18252|      1|#ifdef CLONE_NEWNS
18253|      1|    if (PyModule_AddIntMacro(m, CLONE_NEWNS)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18254|      1|#endif
18255|      1|#ifdef CLONE_NEWCGROUP
18256|      1|    if (PyModule_AddIntMacro(m, CLONE_NEWCGROUP)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18257|      1|#endif
18258|      1|#ifdef CLONE_NEWUTS
18259|      1|    if (PyModule_AddIntMacro(m, CLONE_NEWUTS)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18260|      1|#endif
18261|      1|#ifdef CLONE_NEWIPC
18262|      1|    if (PyModule_AddIntMacro(m, CLONE_NEWIPC)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18263|      1|#endif
18264|      1|#ifdef CLONE_NEWUSER
18265|      1|    if (PyModule_AddIntMacro(m, CLONE_NEWUSER)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18266|      1|#endif
18267|      1|#ifdef CLONE_NEWPID
18268|      1|    if (PyModule_AddIntMacro(m, CLONE_NEWPID)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18269|      1|#endif
18270|      1|#ifdef CLONE_NEWNET
18271|      1|    if (PyModule_AddIntMacro(m, CLONE_NEWNET)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18272|      1|#endif
18273|       |#ifdef CLONE_NEWTIME
18274|       |    if (PyModule_AddIntMacro(m, CLONE_NEWTIME)) return -1;
18275|       |#endif
18276|      1|#ifdef CLONE_SYSVSEM
18277|      1|    if (PyModule_AddIntMacro(m, CLONE_SYSVSEM)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18278|      1|#endif
18279|      1|#ifdef CLONE_THREAD
18280|      1|    if (PyModule_AddIntMacro(m, CLONE_THREAD)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18281|      1|#endif
18282|      1|#ifdef CLONE_SIGHAND
18283|      1|    if (PyModule_AddIntMacro(m, CLONE_SIGHAND)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18284|      1|#endif
18285|      1|#ifdef CLONE_VM
18286|      1|    if (PyModule_AddIntMacro(m, CLONE_VM)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18287|      1|#endif
18288|      1|#endif
18289|       |
18290|      1|#endif
18291|       |
18292|      1|#ifdef USE_XATTRS
18293|      1|    if (PyModule_AddIntMacro(m, XATTR_CREATE)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18294|      1|    if (PyModule_AddIntMacro(m, XATTR_REPLACE)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18295|      1|    if (PyModule_AddIntMacro(m, XATTR_SIZE_MAX)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18296|      1|#endif
18297|       |
18298|      1|#if HAVE_DECL_RTLD_LAZY
18299|      1|    if (PyModule_AddIntMacro(m, RTLD_LAZY)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18300|      1|#endif
18301|      1|#if HAVE_DECL_RTLD_NOW
18302|      1|    if (PyModule_AddIntMacro(m, RTLD_NOW)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18303|      1|#endif
18304|      1|#if HAVE_DECL_RTLD_GLOBAL
18305|      1|    if (PyModule_AddIntMacro(m, RTLD_GLOBAL)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18306|      1|#endif
18307|      1|#if HAVE_DECL_RTLD_LOCAL
18308|      1|    if (PyModule_AddIntMacro(m, RTLD_LOCAL)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18309|      1|#endif
18310|      1|#if HAVE_DECL_RTLD_NODELETE
18311|      1|    if (PyModule_AddIntMacro(m, RTLD_NODELETE)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18312|      1|#endif
18313|      1|#if HAVE_DECL_RTLD_NOLOAD
18314|      1|    if (PyModule_AddIntMacro(m, RTLD_NOLOAD)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18315|      1|#endif
18316|      1|#if HAVE_DECL_RTLD_DEEPBIND
18317|      1|    if (PyModule_AddIntMacro(m, RTLD_DEEPBIND)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18318|      1|#endif
18319|       |#if HAVE_DECL_RTLD_MEMBER
18320|       |    if (PyModule_AddIntMacro(m, RTLD_MEMBER)) return -1;
18321|       |#endif
18322|       |
18323|      1|#ifdef HAVE_GETRANDOM_SYSCALL
18324|      1|    if (PyModule_AddIntMacro(m, GRND_RANDOM)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18325|      1|    if (PyModule_AddIntMacro(m, GRND_NONBLOCK)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18326|      1|#endif
18327|      1|#ifdef HAVE_MEMFD_CREATE
18328|      1|    if (PyModule_AddIntMacro(m, MFD_CLOEXEC)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18329|      1|    if (PyModule_AddIntMacro(m, MFD_ALLOW_SEALING)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18330|      1|#ifdef MFD_HUGETLB
18331|      1|    if (PyModule_AddIntMacro(m, MFD_HUGETLB)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18332|      1|#endif
18333|      1|#ifdef MFD_HUGE_SHIFT
18334|      1|    if (PyModule_AddIntMacro(m, MFD_HUGE_SHIFT)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18335|      1|#endif
18336|      1|#ifdef MFD_HUGE_MASK
18337|      1|    if (PyModule_AddIntMacro(m, MFD_HUGE_MASK)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18338|      1|#endif
18339|      1|#ifdef MFD_HUGE_64KB
18340|      1|    if (PyModule_AddIntMacro(m, MFD_HUGE_64KB)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18341|      1|#endif
18342|      1|#ifdef MFD_HUGE_512KB
18343|      1|    if (PyModule_AddIntMacro(m, MFD_HUGE_512KB)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18344|      1|#endif
18345|      1|#ifdef MFD_HUGE_1MB
18346|      1|    if (PyModule_AddIntMacro(m, MFD_HUGE_1MB)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18347|      1|#endif
18348|      1|#ifdef MFD_HUGE_2MB
18349|      1|    if (PyModule_AddIntMacro(m, MFD_HUGE_2MB)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18350|      1|#endif
18351|      1|#ifdef MFD_HUGE_8MB
18352|      1|    if (PyModule_AddIntMacro(m, MFD_HUGE_8MB)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18353|      1|#endif
18354|      1|#ifdef MFD_HUGE_16MB
18355|      1|    if (PyModule_AddIntMacro(m, MFD_HUGE_16MB)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18356|      1|#endif
18357|      1|#ifdef MFD_HUGE_32MB
18358|      1|    if (PyModule_AddIntMacro(m, MFD_HUGE_32MB)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18359|      1|#endif
18360|      1|#ifdef MFD_HUGE_256MB
18361|      1|    if (PyModule_AddIntMacro(m, MFD_HUGE_256MB)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18362|      1|#endif
18363|      1|#ifdef MFD_HUGE_512MB
18364|      1|    if (PyModule_AddIntMacro(m, MFD_HUGE_512MB)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18365|      1|#endif
18366|      1|#ifdef MFD_HUGE_1GB
18367|      1|    if (PyModule_AddIntMacro(m, MFD_HUGE_1GB)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18368|      1|#endif
18369|      1|#ifdef MFD_HUGE_2GB
18370|      1|    if (PyModule_AddIntMacro(m, MFD_HUGE_2GB)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18371|      1|#endif
18372|      1|#ifdef MFD_HUGE_16GB
18373|      1|    if (PyModule_AddIntMacro(m, MFD_HUGE_16GB)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18374|      1|#endif
18375|      1|#endif /* HAVE_MEMFD_CREATE */
18376|       |
18377|      1|#if defined(HAVE_EVENTFD) && defined(EFD_CLOEXEC)
18378|      1|    if (PyModule_AddIntMacro(m, EFD_CLOEXEC)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18379|      1|#ifdef EFD_NONBLOCK
18380|      1|    if (PyModule_AddIntMacro(m, EFD_NONBLOCK)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18381|      1|#endif
18382|      1|#ifdef EFD_SEMAPHORE
18383|      1|    if (PyModule_AddIntMacro(m, EFD_SEMAPHORE)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18384|      1|#endif
18385|      1|#endif  /* HAVE_EVENTFD && EFD_CLOEXEC */
18386|       |
18387|      1|#ifdef NODEV
18388|      1|    if (PyModule_Add(m, "NODEV", _PyLong_FromDev(NODEV))) return -1;
  ------------------
  |  Branch (18388:9): [True: 0, False: 1]
  ------------------
18389|      1|#endif
18390|       |
18391|      1|#ifdef AT_NO_AUTOMOUNT
18392|      1|    if (PyModule_AddIntMacro(m, AT_NO_AUTOMOUNT)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18393|      1|#endif
18394|       |
18395|      1|#ifdef HAVE_STATX
18396|      1|    if (PyModule_AddIntMacro(m, STATX_TYPE)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18397|      1|    if (PyModule_AddIntMacro(m, STATX_MODE)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18398|      1|    if (PyModule_AddIntMacro(m, STATX_NLINK)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18399|      1|    if (PyModule_AddIntMacro(m, STATX_UID)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18400|      1|    if (PyModule_AddIntMacro(m, STATX_GID)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18401|      1|    if (PyModule_AddIntMacro(m, STATX_ATIME)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18402|      1|    if (PyModule_AddIntMacro(m, STATX_MTIME)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18403|      1|    if (PyModule_AddIntMacro(m, STATX_CTIME)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18404|      1|    if (PyModule_AddIntMacro(m, STATX_INO)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18405|      1|    if (PyModule_AddIntMacro(m, STATX_SIZE)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18406|      1|    if (PyModule_AddIntMacro(m, STATX_BLOCKS)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18407|      1|    if (PyModule_AddIntMacro(m, STATX_BASIC_STATS)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18408|      1|    if (PyModule_AddIntMacro(m, STATX_BTIME)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18409|       |#ifdef STATX_MNT_ID
18410|       |    if (PyModule_AddIntMacro(m, STATX_MNT_ID)) return -1;
18411|       |#endif
18412|       |#ifdef STATX_DIOALIGN
18413|       |    if (PyModule_AddIntMacro(m, STATX_DIOALIGN)) return -1;
18414|       |#endif
18415|       |#ifdef STATX_MNT_ID_UNIQUE
18416|       |    if (PyModule_AddIntMacro(m, STATX_MNT_ID_UNIQUE)) return -1;
18417|       |#endif
18418|       |#ifdef STATX_SUBVOL
18419|       |    if (PyModule_AddIntMacro(m, STATX_SUBVOL)) return -1;
18420|       |#endif
18421|       |#ifdef STATX_WRITE_ATOMIC
18422|       |    if (PyModule_AddIntMacro(m, STATX_WRITE_ATOMIC)) return -1;
18423|       |#endif
18424|       |#ifdef STATX_DIO_READ_ALIGN
18425|       |    if (PyModule_AddIntMacro(m, STATX_DIO_READ_ALIGN)) return -1;
18426|       |#endif
18427|       |    /* STATX_ALL intentionally omitted because it is deprecated */
18428|      1|    if (PyModule_AddIntMacro(m, AT_STATX_SYNC_AS_STAT)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18429|      1|    if (PyModule_AddIntMacro(m, AT_STATX_FORCE_SYNC)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18430|      1|    if (PyModule_AddIntMacro(m, AT_STATX_DONT_SYNC)) return -1;
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  |  |  ------------------
  |  |  |  Branch (47:36): [True: 0, False: 1]
  |  |  ------------------
  ------------------
18431|       |    /* STATX_ATTR_* constants are in the stat module */
18432|      1|#endif /* HAVE_STATX */
18433|       |
18434|       |#if defined(__APPLE__)
18435|       |    if (PyModule_AddIntConstant(m, "_COPYFILE_DATA", COPYFILE_DATA)) return -1;
18436|       |    if (PyModule_AddIntConstant(m, "_COPYFILE_STAT", COPYFILE_STAT)) return -1;
18437|       |    if (PyModule_AddIntConstant(m, "_COPYFILE_ACL", COPYFILE_ACL)) return -1;
18438|       |    if (PyModule_AddIntConstant(m, "_COPYFILE_XATTR", COPYFILE_XATTR)) return -1;
18439|       |#endif
18440|       |
18441|       |#ifdef MS_WINDOWS
18442|       |    if (PyModule_AddIntConstant(m, "_LOAD_LIBRARY_SEARCH_DEFAULT_DIRS", LOAD_LIBRARY_SEARCH_DEFAULT_DIRS)) return -1;
18443|       |    if (PyModule_AddIntConstant(m, "_LOAD_LIBRARY_SEARCH_APPLICATION_DIR", LOAD_LIBRARY_SEARCH_APPLICATION_DIR)) return -1;
18444|       |    if (PyModule_AddIntConstant(m, "_LOAD_LIBRARY_SEARCH_SYSTEM32", LOAD_LIBRARY_SEARCH_SYSTEM32)) return -1;
18445|       |    if (PyModule_AddIntConstant(m, "_LOAD_LIBRARY_SEARCH_USER_DIRS", LOAD_LIBRARY_SEARCH_USER_DIRS)) return -1;
18446|       |    if (PyModule_AddIntConstant(m, "_LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR", LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR)) return -1;
18447|       |#endif
18448|       |
18449|      1|    return 0;
18450|      1|}
posixmodule.c:setup_confname_tables:
15142|      1|{
15143|      1|#if defined(HAVE_FPATHCONF) || defined(HAVE_PATHCONF)
15144|      1|    if (setup_confname_table(posix_constants_pathconf,
  ------------------
  |  Branch (15144:9): [True: 0, False: 1]
  ------------------
15145|      1|                             sizeof(posix_constants_pathconf)
15146|      1|                               / sizeof(struct constdef),
15147|      1|                             "pathconf_names", module))
15148|      0|        return -1;
15149|      1|#endif
15150|      1|#ifdef HAVE_CONFSTR
15151|      1|    if (setup_confname_table(posix_constants_confstr,
  ------------------
  |  Branch (15151:9): [True: 0, False: 1]
  ------------------
15152|      1|                             sizeof(posix_constants_confstr)
15153|      1|                               / sizeof(struct constdef),
15154|      1|                             "confstr_names", module))
15155|      0|        return -1;
15156|      1|#endif
15157|      1|#ifdef HAVE_SYSCONF
15158|      1|    if (setup_confname_table(posix_constants_sysconf,
  ------------------
  |  Branch (15158:9): [True: 0, False: 1]
  ------------------
15159|      1|                             sizeof(posix_constants_sysconf)
15160|      1|                               / sizeof(struct constdef),
15161|      1|                             "sysconf_names", module))
15162|      0|        return -1;
15163|      1|#endif
15164|      1|    return 0;
15165|      1|}
posixmodule.c:setup_confname_table:
15122|      3|{
15123|      3|    PyObject *d = PyDict_New();
15124|      3|    if (d == NULL)
  ------------------
  |  Branch (15124:9): [True: 0, False: 3]
  ------------------
15125|      0|        return -1;
15126|       |
15127|    184|    for (size_t i=0; i < tablesize; ++i) {
  ------------------
  |  Branch (15127:22): [True: 181, False: 3]
  ------------------
15128|    181|        PyObject *o = PyLong_FromLong(table[i].value);
15129|    181|        if (o == NULL || PyDict_SetItemString(d, table[i].name, o) == -1) {
  ------------------
  |  Branch (15129:13): [True: 0, False: 181]
  |  Branch (15129:26): [True: 0, False: 181]
  ------------------
15130|      0|            Py_XDECREF(o);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
15131|      0|            Py_DECREF(d);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
15132|      0|            return -1;
15133|      0|        }
15134|    181|        Py_DECREF(o);
  ------------------
  |  |  430|    181|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    181|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    181|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
15135|    181|    }
15136|      3|    return PyModule_Add(module, tablename, d);
15137|      3|}
posixmodule.c:fd_specified:
 1607|      1|{
 1608|      1|    if (fd == -1)
  ------------------
  |  Branch (1608:9): [True: 1, False: 0]
  ------------------
 1609|      1|        return 0;
 1610|       |
 1611|      0|    argument_unavailable_error(function_name, "fd");
 1612|      0|    return 1;
 1613|      1|}
posixmodule.c:dir_fd_unavailable:
 1593|      1|{
 1594|      1|    int dir_fd;
 1595|      1|    if (!dir_fd_converter(o, &dir_fd))
  ------------------
  |  Branch (1595:9): [True: 0, False: 1]
  ------------------
 1596|      0|        return 0;
 1597|      1|    if (dir_fd != DEFAULT_DIR_FD) {
  ------------------
  |  | 1138|      1|#define DEFAULT_DIR_FD (int)AT_FDCWD
  ------------------
  |  Branch (1597:9): [True: 0, False: 1]
  ------------------
 1598|      0|        argument_unavailable_error(NULL, "dir_fd");
 1599|      0|        return 0;
 1600|      0|    }
 1601|      1|    *(int *)p = dir_fd;
 1602|      1|    return 1;
 1603|      1|}
posixmodule.c:probe_faccessat:
18456|      1|   {                      \
18457|      1|      if (test) {        \
  ------------------
  |  Branch (18457:11): [True: 1, Folded]
  ------------------
18458|      1|          return 1;       \
18459|      1|      } else {            \
18460|      0|          return 0;       \
18461|      0|      }                   \
18462|      1|   }
posixmodule.c:probe_fchmodat:
18456|      1|   {                      \
18457|      1|      if (test) {        \
  ------------------
  |  Branch (18457:11): [True: 1, Folded]
  ------------------
18458|      1|          return 1;       \
18459|      1|      } else {            \
18460|      0|          return 0;       \
18461|      0|      }                   \
18462|      1|   }
posixmodule.c:probe_fchownat:
18456|      1|   {                      \
18457|      1|      if (test) {        \
  ------------------
  |  Branch (18457:11): [True: 1, Folded]
  ------------------
18458|      1|          return 1;       \
18459|      1|      } else {            \
18460|      0|          return 0;       \
18461|      0|      }                   \
18462|      1|   }
posixmodule.c:probe_fdopendir:
18456|      1|   {                      \
18457|      1|      if (test) {        \
  ------------------
  |  Branch (18457:11): [True: 1, Folded]
  ------------------
18458|      1|          return 1;       \
18459|      1|      } else {            \
18460|      0|          return 0;       \
18461|      0|      }                   \
18462|      1|   }
posixmodule.c:probe_fstatat:
18456|      1|   {                      \
18457|      1|      if (test) {        \
  ------------------
  |  Branch (18457:11): [True: 1, Folded]
  ------------------
18458|      1|          return 1;       \
18459|      1|      } else {            \
18460|      0|          return 0;       \
18461|      0|      }                   \
18462|      1|   }
posixmodule.c:probe_futimens:
18456|      1|   {                      \
18457|      1|      if (test) {        \
  ------------------
  |  Branch (18457:11): [True: 1, Folded]
  ------------------
18458|      1|          return 1;       \
18459|      1|      } else {            \
18460|      0|          return 0;       \
18461|      0|      }                   \
18462|      1|   }
posixmodule.c:probe_linkat:
18456|      1|   {                      \
18457|      1|      if (test) {        \
  ------------------
  |  Branch (18457:11): [True: 1, Folded]
  ------------------
18458|      1|          return 1;       \
18459|      1|      } else {            \
18460|      0|          return 0;       \
18461|      0|      }                   \
18462|      1|   }
posixmodule.c:probe_mkdirat:
18456|      1|   {                      \
18457|      1|      if (test) {        \
  ------------------
  |  Branch (18457:11): [True: 1, Folded]
  ------------------
18458|      1|          return 1;       \
18459|      1|      } else {            \
18460|      0|          return 0;       \
18461|      0|      }                   \
18462|      1|   }
posixmodule.c:probe_mkfifoat:
18456|      1|   {                      \
18457|      1|      if (test) {        \
  ------------------
  |  Branch (18457:11): [True: 1, Folded]
  ------------------
18458|      1|          return 1;       \
18459|      1|      } else {            \
18460|      0|          return 0;       \
18461|      0|      }                   \
18462|      1|   }
posixmodule.c:probe_mknodat:
18456|      1|   {                      \
18457|      1|      if (test) {        \
  ------------------
  |  Branch (18457:11): [True: 1, Folded]
  ------------------
18458|      1|          return 1;       \
18459|      1|      } else {            \
18460|      0|          return 0;       \
18461|      0|      }                   \
18462|      1|   }
posixmodule.c:probe_openat:
18456|      1|   {                      \
18457|      1|      if (test) {        \
  ------------------
  |  Branch (18457:11): [True: 1, Folded]
  ------------------
18458|      1|          return 1;       \
18459|      1|      } else {            \
18460|      0|          return 0;       \
18461|      0|      }                   \
18462|      1|   }
posixmodule.c:probe_readlinkat:
18456|      1|   {                      \
18457|      1|      if (test) {        \
  ------------------
  |  Branch (18457:11): [True: 1, Folded]
  ------------------
18458|      1|          return 1;       \
18459|      1|      } else {            \
18460|      0|          return 0;       \
18461|      0|      }                   \
18462|      1|   }
posixmodule.c:probe_renameat:
18456|      1|   {                      \
18457|      1|      if (test) {        \
  ------------------
  |  Branch (18457:11): [True: 1, Folded]
  ------------------
18458|      1|          return 1;       \
18459|      1|      } else {            \
18460|      0|          return 0;       \
18461|      0|      }                   \
18462|      1|   }
posixmodule.c:probe_symlinkat:
18456|      1|   {                      \
18457|      1|      if (test) {        \
  ------------------
  |  Branch (18457:11): [True: 1, Folded]
  ------------------
18458|      1|          return 1;       \
18459|      1|      } else {            \
18460|      0|          return 0;       \
18461|      0|      }                   \
18462|      1|   }
posixmodule.c:probe_unlinkat:
18456|      1|   {                      \
18457|      1|      if (test) {        \
  ------------------
  |  Branch (18457:11): [True: 1, Folded]
  ------------------
18458|      1|          return 1;       \
18459|      1|      } else {            \
18460|      0|          return 0;       \
18461|      0|      }                   \
18462|      1|   }
posixmodule.c:probe_utimensat:
18456|      1|   {                      \
18457|      1|      if (test) {        \
  ------------------
  |  Branch (18457:11): [True: 1, Folded]
  ------------------
18458|      1|          return 1;       \
18459|      1|      } else {            \
18460|      0|          return 0;       \
18461|      0|      }                   \
18462|      1|   }
posixmodule.c:probe_ptsname_r:
18456|      1|   {                      \
18457|      1|      if (test) {        \
  ------------------
  |  Branch (18457:11): [True: 1, Folded]
  ------------------
18458|      1|          return 1;       \
18459|      1|      } else {            \
18460|      0|          return 0;       \
18461|      0|      }                   \
18462|      1|   }
posixmodule.c:_posix_traverse:
 2613|      2|{
 2614|      2|    _posixstate *state = get_posix_state(module);
 2615|      2|    Py_VISIT(state->billion);
  ------------------
  |  |  194|      2|    do {                                                                \
  |  |  195|      2|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 2, False: 0]
  |  |  ------------------
  |  |  196|      2|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      2|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 2]
  |  |  ------------------
  |  |  198|      2|                return vret;                                            \
  |  |  199|      2|        }                                                               \
  |  |  200|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2616|      2|    Py_VISIT(state->DirEntryType);
  ------------------
  |  |  194|      2|    do {                                                                \
  |  |  195|      2|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 2, False: 0]
  |  |  ------------------
  |  |  196|      2|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      2|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 2]
  |  |  ------------------
  |  |  198|      2|                return vret;                                            \
  |  |  199|      2|        }                                                               \
  |  |  200|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2617|      2|    Py_VISIT(state->ScandirIteratorType);
  ------------------
  |  |  194|      2|    do {                                                                \
  |  |  195|      2|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 2, False: 0]
  |  |  ------------------
  |  |  196|      2|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      2|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 2]
  |  |  ------------------
  |  |  198|      2|                return vret;                                            \
  |  |  199|      2|        }                                                               \
  |  |  200|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2618|      2|#if defined(HAVE_SCHED_SETPARAM) || defined(HAVE_SCHED_SETSCHEDULER) || defined(POSIX_SPAWN_SETSCHEDULER) || defined(POSIX_SPAWN_SETSCHEDPARAM)
 2619|      2|    Py_VISIT(state->SchedParamType);
  ------------------
  |  |  194|      2|    do {                                                                \
  |  |  195|      2|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 2, False: 0]
  |  |  ------------------
  |  |  196|      2|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      2|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 2]
  |  |  ------------------
  |  |  198|      2|                return vret;                                            \
  |  |  199|      2|        }                                                               \
  |  |  200|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2620|      2|#endif
 2621|      2|    Py_VISIT(state->StatResultType);
  ------------------
  |  |  194|      2|    do {                                                                \
  |  |  195|      2|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 2, False: 0]
  |  |  ------------------
  |  |  196|      2|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      2|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 2]
  |  |  ------------------
  |  |  198|      2|                return vret;                                            \
  |  |  199|      2|        }                                                               \
  |  |  200|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2622|      2|#ifdef HAVE_STATX
 2623|      2|    Py_VISIT(state->StatxResultType);
  ------------------
  |  |  194|      2|    do {                                                                \
  |  |  195|      2|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 2, False: 0]
  |  |  ------------------
  |  |  196|      2|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      2|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 2]
  |  |  ------------------
  |  |  198|      2|                return vret;                                            \
  |  |  199|      2|        }                                                               \
  |  |  200|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2624|      2|#endif
 2625|      2|    Py_VISIT(state->StatVFSResultType);
  ------------------
  |  |  194|      2|    do {                                                                \
  |  |  195|      2|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 2, False: 0]
  |  |  ------------------
  |  |  196|      2|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      2|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 2]
  |  |  ------------------
  |  |  198|      2|                return vret;                                            \
  |  |  199|      2|        }                                                               \
  |  |  200|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2626|      2|    Py_VISIT(state->TerminalSizeType);
  ------------------
  |  |  194|      2|    do {                                                                \
  |  |  195|      2|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 2, False: 0]
  |  |  ------------------
  |  |  196|      2|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      2|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 2]
  |  |  ------------------
  |  |  198|      2|                return vret;                                            \
  |  |  199|      2|        }                                                               \
  |  |  200|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2627|      2|    Py_VISIT(state->TimesResultType);
  ------------------
  |  |  194|      2|    do {                                                                \
  |  |  195|      2|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 2, False: 0]
  |  |  ------------------
  |  |  196|      2|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      2|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 2]
  |  |  ------------------
  |  |  198|      2|                return vret;                                            \
  |  |  199|      2|        }                                                               \
  |  |  200|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2628|      2|    Py_VISIT(state->UnameResultType);
  ------------------
  |  |  194|      2|    do {                                                                \
  |  |  195|      2|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 2, False: 0]
  |  |  ------------------
  |  |  196|      2|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      2|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 2]
  |  |  ------------------
  |  |  198|      2|                return vret;                                            \
  |  |  199|      2|        }                                                               \
  |  |  200|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2629|      2|#if defined(HAVE_WAITID)
 2630|      2|    Py_VISIT(state->WaitidResultType);
  ------------------
  |  |  194|      2|    do {                                                                \
  |  |  195|      2|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 2, False: 0]
  |  |  ------------------
  |  |  196|      2|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      2|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 2]
  |  |  ------------------
  |  |  198|      2|                return vret;                                            \
  |  |  199|      2|        }                                                               \
  |  |  200|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2631|      2|#endif
 2632|      2|#if defined(HAVE_WAIT3) || defined(HAVE_WAIT4)
 2633|      2|    Py_VISIT(state->struct_rusage);
  ------------------
  |  |  194|      2|    do {                                                                \
  |  |  195|      2|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 2, False: 0]
  |  |  ------------------
  |  |  196|      2|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      2|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 2]
  |  |  ------------------
  |  |  198|      2|                return vret;                                            \
  |  |  199|      2|        }                                                               \
  |  |  200|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2634|      2|#endif
 2635|      2|    Py_VISIT(state->st_mode);
  ------------------
  |  |  194|      2|    do {                                                                \
  |  |  195|      2|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 2, False: 0]
  |  |  ------------------
  |  |  196|      2|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      2|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 2]
  |  |  ------------------
  |  |  198|      2|                return vret;                                            \
  |  |  199|      2|        }                                                               \
  |  |  200|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2636|      2|    return 0;
 2637|      2|}

PyErr_CheckSignals:
 1766|     31|{
 1767|     31|    PyThreadState *tstate = _PyThreadState_GET();
 1768|       |
 1769|       |    /* Opportunistically check if the GC is scheduled to run and run it
 1770|       |       if we have a request. This is done here because native code needs
 1771|       |       to call this API if is going to run for some time without executing
 1772|       |       Python code to ensure signals are handled. Checking for the GC here
 1773|       |       allows long running native code to clean cycles created using the C-API
 1774|       |       even if it doesn't run the evaluation loop */
 1775|     31|    uintptr_t breaker = _Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker);
 1776|     31|    if (breaker & _PY_GC_SCHEDULED_BIT) {
  ------------------
  |  |  350|     31|#define _PY_GC_SCHEDULED_BIT (1U << 4)
  ------------------
  |  Branch (1776:9): [True: 0, False: 31]
  ------------------
 1777|      0|        _Py_unset_eval_breaker_bit(tstate, _PY_GC_SCHEDULED_BIT);
  ------------------
  |  |  350|      0|#define _PY_GC_SCHEDULED_BIT (1U << 4)
  ------------------
 1778|      0|        _Py_RunGC(tstate);
 1779|      0|    }
 1780|     31|    if (breaker & _PY_ASYNC_EXCEPTION_BIT) {
  ------------------
  |  |  349|     31|#define _PY_ASYNC_EXCEPTION_BIT (1U << 3)
  ------------------
  |  Branch (1780:9): [True: 0, False: 31]
  ------------------
 1781|      0|        if (_PyEval_RaiseAsyncExc(tstate) < 0) {
  ------------------
  |  Branch (1781:13): [True: 0, False: 0]
  ------------------
 1782|      0|            return -1;
 1783|      0|        }
 1784|      0|    }
 1785|       |
 1786|     31|#if defined(Py_REMOTE_DEBUG) && defined(Py_SUPPORTS_REMOTE_DEBUG)
 1787|     31|    _PyRunRemoteDebugger(tstate);
 1788|     31|#endif
 1789|       |
 1790|     31|    if (_Py_ThreadCanHandleSignals(tstate->interp)) {
  ------------------
  |  Branch (1790:9): [True: 31, False: 0]
  ------------------
 1791|     31|        if (_PyErr_CheckSignalsTstate(tstate) < 0) {
  ------------------
  |  Branch (1791:13): [True: 0, False: 31]
  ------------------
 1792|      0|            return -1;
 1793|      0|        }
 1794|     31|    }
 1795|       |
 1796|     31|    return 0;
 1797|     31|}
_PyErr_CheckSignalsTstate:
 1803|     31|{
 1804|     31|    _Py_CHECK_EMSCRIPTEN_SIGNALS();
 1805|     31|    if (!_Py_atomic_load_int(&is_tripped)) {
  ------------------
  |  |  108|     31|#define is_tripped _PyRuntime.signals.is_tripped
  ------------------
  |  Branch (1805:9): [True: 31, False: 0]
  ------------------
 1806|     31|        return 0;
 1807|     31|    }
 1808|       |
 1809|       |    /*
 1810|       |     * The is_tripped variable is meant to speed up the calls to
 1811|       |     * PyErr_CheckSignals (both directly or via pending calls) when no
 1812|       |     * signal has arrived. This variable is set to 1 when a signal arrives
 1813|       |     * and it is set to 0 here, when we know some signals arrived. This way
 1814|       |     * we can run the registered handlers with no signals blocked.
 1815|       |     *
 1816|       |     * NOTE: with this approach we can have a situation where is_tripped is
 1817|       |     *       1 but we have no more signals to handle (Handlers[i].tripped
 1818|       |     *       is 0 for every signal i). This won't do us any harm (except
 1819|       |     *       we're gonna spent some cycles for nothing). This happens when
 1820|       |     *       we receive a signal i after we zero is_tripped and before we
 1821|       |     *       check Handlers[i].tripped.
 1822|       |     */
 1823|      0|    _Py_atomic_store_int(&is_tripped, 0);
  ------------------
  |  |  108|      0|#define is_tripped _PyRuntime.signals.is_tripped
  ------------------
 1824|       |
 1825|      0|    _PyInterpreterFrame *frame = _PyThreadState_GetFrame(tstate);
 1826|      0|    signal_state_t *state = &signal_global_state;
  ------------------
  |  |  112|      0|#define signal_global_state _PyRuntime.signals
  ------------------
 1827|      0|    for (int i = 1; i < Py_NSIG; i++) {
  ------------------
  |  |   26|      0|#  define Py_NSIG NSIG
  ------------------
  |  Branch (1827:21): [True: 0, False: 0]
  ------------------
 1828|      0|        if (!_Py_atomic_load_int_relaxed(&Handlers[i].tripped)) {
  ------------------
  |  |  106|      0|#define Handlers _PyRuntime.signals.handlers
  ------------------
  |  Branch (1828:13): [True: 0, False: 0]
  ------------------
 1829|      0|            continue;
 1830|      0|        }
 1831|      0|        _Py_atomic_store_int_relaxed(&Handlers[i].tripped, 0);
  ------------------
  |  |  106|      0|#define Handlers _PyRuntime.signals.handlers
  ------------------
 1832|       |
 1833|       |        /* Signal handlers can be modified while a signal is received,
 1834|       |         * and therefore the fact that trip_signal() or PyErr_SetInterrupt()
 1835|       |         * was called doesn't guarantee that there is still a Python
 1836|       |         * signal handler for it by the time PyErr_CheckSignals() is called
 1837|       |         * (see bpo-43406).
 1838|       |         */
 1839|      0|        PyObject *func = get_handler(i);
 1840|      0|        if (func == NULL || func == Py_None ||
  ------------------
  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (1840:13): [True: 0, False: 0]
  |  Branch (1840:29): [True: 0, False: 0]
  ------------------
 1841|      0|            compare_handler(func, state->ignore_handler) ||
  ------------------
  |  Branch (1841:13): [True: 0, False: 0]
  ------------------
 1842|      0|            compare_handler(func, state->default_handler)) {
  ------------------
  |  Branch (1842:13): [True: 0, False: 0]
  ------------------
 1843|       |            /* No Python signal handler due to aforementioned race condition.
 1844|       |             * We can't call raise() as it would break the assumption
 1845|       |             * that PyErr_SetInterrupt() only *simulates* an incoming
 1846|       |             * signal (i.e. it will never kill the process).
 1847|       |             * We also don't want to interrupt user code with a cryptic
 1848|       |             * asynchronous exception, so instead just write out an
 1849|       |             * unraisable error.
 1850|       |             */
 1851|      0|            PyErr_Format(PyExc_OSError,
 1852|      0|                         "Signal %i ignored due to race condition",
 1853|      0|                         i);
 1854|      0|            PyErr_FormatUnraisable("Exception ignored while "
 1855|      0|                                   "calling signal handler");
 1856|      0|            continue;
 1857|      0|        }
 1858|      0|        PyObject *arglist = NULL;
 1859|      0|        if (frame == NULL) {
  ------------------
  |  Branch (1859:13): [True: 0, False: 0]
  ------------------
 1860|      0|            arglist = Py_BuildValue("(iO)", i, Py_None);
  ------------------
  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  ------------------
 1861|      0|        }
 1862|      0|        else {
 1863|      0|            PyFrameObject *f = _PyFrame_GetFrameObject(frame);
 1864|      0|            if (f != NULL) {
  ------------------
  |  Branch (1864:17): [True: 0, False: 0]
  ------------------
 1865|      0|                arglist = Py_BuildValue("(iO)", i, f);
 1866|      0|            }
 1867|      0|        }
 1868|      0|        PyObject *result;
 1869|      0|        if (arglist) {
  ------------------
  |  Branch (1869:13): [True: 0, False: 0]
  ------------------
 1870|      0|            result = _PyObject_Call(tstate, func, arglist, NULL);
 1871|      0|            Py_DECREF(arglist);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1872|      0|        }
 1873|      0|        else {
 1874|      0|            result = NULL;
 1875|      0|        }
 1876|      0|        if (!result) {
  ------------------
  |  Branch (1876:13): [True: 0, False: 0]
  ------------------
 1877|       |            /* On error, re-schedule a call to _PyErr_CheckSignalsTstate() */
 1878|      0|            _Py_atomic_store_int(&is_tripped, 1);
  ------------------
  |  |  108|      0|#define is_tripped _PyRuntime.signals.is_tripped
  ------------------
 1879|      0|            return -1;
 1880|      0|        }
 1881|       |
 1882|      0|        Py_DECREF(result);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1883|      0|    }
 1884|       |
 1885|      0|    return 0;
 1886|      0|}
_PySignal_Init:
 1973|      1|{
 1974|      1|    signal_state_t *state = &signal_global_state;
  ------------------
  |  |  112|      1|#define signal_global_state _PyRuntime.signals
  ------------------
 1975|       |
 1976|      1|    state->default_handler = PyLong_FromVoidPtr((void *)SIG_DFL);
 1977|      1|    if (state->default_handler == NULL) {
  ------------------
  |  Branch (1977:9): [True: 0, False: 1]
  ------------------
 1978|      0|        return -1;
 1979|      0|    }
 1980|       |
 1981|      1|    state->ignore_handler = PyLong_FromVoidPtr((void *)SIG_IGN);
 1982|      1|    if (state->ignore_handler == NULL) {
  ------------------
  |  Branch (1982:9): [True: 0, False: 1]
  ------------------
 1983|      0|        return -1;
 1984|      0|    }
 1985|       |
 1986|       |#ifdef MS_WINDOWS
 1987|       |    /* Create manual-reset event, initially unset */
 1988|       |    state->sigint_event = (void *)CreateEvent(NULL, TRUE, FALSE, FALSE);
 1989|       |    if (state->sigint_event == NULL) {
 1990|       |        PyErr_SetFromWindowsErr(0);
 1991|       |        return -1;
 1992|       |    }
 1993|       |#endif
 1994|       |
 1995|     65|    for (int signum = 1; signum < Py_NSIG; signum++) {
  ------------------
  |  |   26|     65|#  define Py_NSIG NSIG
  ------------------
  |  Branch (1995:26): [True: 64, False: 1]
  ------------------
 1996|     64|        _Py_atomic_store_int_relaxed(&Handlers[signum].tripped, 0);
  ------------------
  |  |  106|     64|#define Handlers _PyRuntime.signals.handlers
  ------------------
 1997|     64|    }
 1998|       |
 1999|      1|    if (install_signal_handlers) {
  ------------------
  |  Branch (1999:9): [True: 0, False: 1]
  ------------------
 2000|      0|        if (signal_install_handlers() < 0) {
  ------------------
  |  Branch (2000:13): [True: 0, False: 0]
  ------------------
 2001|      0|            return -1;
 2002|      0|        }
 2003|      0|    }
 2004|       |
 2005|      1|    return 0;
 2006|      1|}

PyInit_time:
 2209|      1|{
 2210|      1|    return PyModuleDef_Init(&timemodule);
 2211|      1|}
timemodule.c:get_time_state:
   92|      3|{
   93|      3|    void *state = _PyModule_GetState(module);
   94|      3|    assert(state != NULL);
  ------------------
  |  Branch (94:5): [True: 3, False: 0]
  ------------------
   95|      3|    return (time_module_state *)state;
   96|      3|}
timemodule.c:init_timezone:
 1783|      1|{
 1784|      1|#define ADD_INT(NAME, VALUE) do {                       \
 1785|      1|    if (PyModule_AddIntConstant(m, NAME, VALUE) < 0) {  \
 1786|      1|        return -1;                                      \
 1787|      1|    }                                                   \
 1788|      1|} while (0)
 1789|       |
 1790|      1|    assert(!PyErr_Occurred());
  ------------------
  |  Branch (1790:5): [True: 1, False: 0]
  ------------------
 1791|       |
 1792|       |    /* This code moved from PyInit_time wholesale to allow calling it from
 1793|       |    time_tzset. In the future, some parts of it can be moved back
 1794|       |    (for platforms that don't HAVE_WORKING_TZSET, when we know what they
 1795|       |    are), and the extraneous calls to tzset(3) should be removed.
 1796|       |    I haven't done this yet, as I don't want to change this code as
 1797|       |    little as possible when introducing the time.tzset and time.tzsetwall
 1798|       |    methods. This should simply be a method of doing the following once,
 1799|       |    at the top of this function and removing the call to tzset() from
 1800|       |    time_tzset():
 1801|       |
 1802|       |        #ifdef HAVE_TZSET
 1803|       |        tzset()
 1804|       |        #endif
 1805|       |
 1806|       |    And I'm lazy and hate C so nyer.
 1807|       |     */
 1808|       |#ifdef HAVE_DECL_TZNAME
 1809|       |    PyObject *otz0, *otz1;
 1810|       |#if !defined(MS_WINDOWS) || defined(MS_WINDOWS_DESKTOP) || defined(MS_WINDOWS_SYSTEM)
 1811|       |    tzset();
 1812|       |#endif
 1813|       |    ADD_INT("timezone", _Py_timezone);
 1814|       |#ifdef HAVE_ALTZONE
 1815|       |    ADD_INT("altzone", altzone);
 1816|       |#else
 1817|       |    ADD_INT("altzone", _Py_timezone-3600);
 1818|       |#endif
 1819|       |    ADD_INT("daylight", _Py_daylight);
 1820|       |#ifdef MS_WINDOWS
 1821|       |    TIME_ZONE_INFORMATION tzinfo = {0};
 1822|       |    GetTimeZoneInformation(&tzinfo);
 1823|       |    otz0 = PyUnicode_FromWideChar(tzinfo.StandardName, -1);
 1824|       |    if (otz0 == NULL) {
 1825|       |        return -1;
 1826|       |    }
 1827|       |    otz1 = PyUnicode_FromWideChar(tzinfo.DaylightName, -1);
 1828|       |    if (otz1 == NULL) {
 1829|       |        Py_DECREF(otz0);
 1830|       |        return -1;
 1831|       |    }
 1832|       |#else
 1833|       |    otz0 = PyUnicode_DecodeLocale(_Py_tzname[0], "surrogateescape");
 1834|       |    if (otz0 == NULL) {
 1835|       |        return -1;
 1836|       |    }
 1837|       |    otz1 = PyUnicode_DecodeLocale(_Py_tzname[1], "surrogateescape");
 1838|       |    if (otz1 == NULL) {
 1839|       |        Py_DECREF(otz0);
 1840|       |        return -1;
 1841|       |    }
 1842|       |#endif // MS_WINDOWS
 1843|       |    if (PyModule_Add(m, "tzname", Py_BuildValue("(NN)", otz0, otz1)) < 0) {
 1844|       |        return -1;
 1845|       |    }
 1846|       |#else // !HAVE_DECL_TZNAME
 1847|      1|    static const time_t YEAR = (365 * 24 + 6) * 3600;
 1848|      1|    time_t t;
 1849|      1|    struct tm p;
 1850|      1|    time_t janzone_t, julyzone_t;
 1851|      1|    char janname[10], julyname[10];
 1852|      1|    t = (time((time_t *)0) / YEAR) * YEAR;
 1853|      1|    _PyTime_localtime(t, &p);
 1854|      1|    get_zone(janname, 9, &p);
 1855|      1|    janzone_t = -get_gmtoff(t, &p);
 1856|      1|    janname[9] = '\0';
 1857|      1|    t += YEAR/2;
 1858|      1|    _PyTime_localtime(t, &p);
 1859|      1|    get_zone(julyname, 9, &p);
 1860|      1|    julyzone_t = -get_gmtoff(t, &p);
 1861|      1|    julyname[9] = '\0';
 1862|       |
 1863|       |    /* Sanity check, don't check for the validity of timezones.
 1864|       |       In practice, it should be more in range -12 hours .. +14 hours. */
 1865|      1|#define MAX_TIMEZONE (48 * 3600)
 1866|      1|    if (janzone_t < -MAX_TIMEZONE || janzone_t > MAX_TIMEZONE
  ------------------
  |  | 1865|      2|#define MAX_TIMEZONE (48 * 3600)
  ------------------
                  if (janzone_t < -MAX_TIMEZONE || janzone_t > MAX_TIMEZONE
  ------------------
  |  | 1865|      2|#define MAX_TIMEZONE (48 * 3600)
  ------------------
  |  Branch (1866:9): [True: 0, False: 1]
  |  Branch (1866:38): [True: 0, False: 1]
  ------------------
 1867|      1|        || julyzone_t < -MAX_TIMEZONE || julyzone_t > MAX_TIMEZONE)
  ------------------
  |  | 1865|      2|#define MAX_TIMEZONE (48 * 3600)
  ------------------
                      || julyzone_t < -MAX_TIMEZONE || julyzone_t > MAX_TIMEZONE)
  ------------------
  |  | 1865|      1|#define MAX_TIMEZONE (48 * 3600)
  ------------------
  |  Branch (1867:12): [True: 0, False: 1]
  |  Branch (1867:42): [True: 0, False: 1]
  ------------------
 1868|      0|    {
 1869|      0|        PyErr_SetString(PyExc_RuntimeError, "invalid GMT offset");
 1870|      0|        return -1;
 1871|      0|    }
 1872|      1|    int janzone = (int)janzone_t;
 1873|      1|    int julyzone = (int)julyzone_t;
 1874|       |
 1875|      1|    PyObject *tzname_obj;
 1876|      1|    if (janzone < julyzone) {
  ------------------
  |  Branch (1876:9): [True: 0, False: 1]
  ------------------
 1877|       |        /* DST is reversed in the southern hemisphere */
 1878|      0|        ADD_INT("timezone", julyzone);
  ------------------
  |  | 1784|      0|#define ADD_INT(NAME, VALUE) do {                       \
  |  | 1785|      0|    if (PyModule_AddIntConstant(m, NAME, VALUE) < 0) {  \
  |  |  ------------------
  |  |  |  Branch (1785:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 1786|      0|        return -1;                                      \
  |  | 1787|      0|    }                                                   \
  |  | 1788|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1788:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1879|      0|        ADD_INT("altzone", janzone);
  ------------------
  |  | 1784|      0|#define ADD_INT(NAME, VALUE) do {                       \
  |  | 1785|      0|    if (PyModule_AddIntConstant(m, NAME, VALUE) < 0) {  \
  |  |  ------------------
  |  |  |  Branch (1785:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 1786|      0|        return -1;                                      \
  |  | 1787|      0|    }                                                   \
  |  | 1788|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1788:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1880|      0|        ADD_INT("daylight", janzone != julyzone);
  ------------------
  |  | 1784|      0|#define ADD_INT(NAME, VALUE) do {                       \
  |  | 1785|      0|    if (PyModule_AddIntConstant(m, NAME, VALUE) < 0) {  \
  |  |  ------------------
  |  |  |  Branch (1785:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 1786|      0|        return -1;                                      \
  |  | 1787|      0|    }                                                   \
  |  | 1788|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1788:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1881|      0|        tzname_obj = Py_BuildValue("(zz)", julyname, janname);
 1882|      1|    } else {
 1883|      1|        ADD_INT("timezone", janzone);
  ------------------
  |  | 1784|      1|#define ADD_INT(NAME, VALUE) do {                       \
  |  | 1785|      1|    if (PyModule_AddIntConstant(m, NAME, VALUE) < 0) {  \
  |  |  ------------------
  |  |  |  Branch (1785:9): [True: 0, False: 1]
  |  |  ------------------
  |  | 1786|      0|        return -1;                                      \
  |  | 1787|      0|    }                                                   \
  |  | 1788|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (1788:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1884|      1|        ADD_INT("altzone", julyzone);
  ------------------
  |  | 1784|      1|#define ADD_INT(NAME, VALUE) do {                       \
  |  | 1785|      1|    if (PyModule_AddIntConstant(m, NAME, VALUE) < 0) {  \
  |  |  ------------------
  |  |  |  Branch (1785:9): [True: 0, False: 1]
  |  |  ------------------
  |  | 1786|      0|        return -1;                                      \
  |  | 1787|      0|    }                                                   \
  |  | 1788|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (1788:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1885|      1|        ADD_INT("daylight", janzone != julyzone);
  ------------------
  |  | 1784|      1|#define ADD_INT(NAME, VALUE) do {                       \
  |  | 1785|      1|    if (PyModule_AddIntConstant(m, NAME, VALUE) < 0) {  \
  |  |  ------------------
  |  |  |  Branch (1785:9): [True: 0, False: 1]
  |  |  ------------------
  |  | 1786|      0|        return -1;                                      \
  |  | 1787|      0|    }                                                   \
  |  | 1788|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (1788:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1886|      1|        tzname_obj = Py_BuildValue("(zz)", janname, julyname);
 1887|      1|    }
 1888|      1|    if (PyModule_Add(m, "tzname", tzname_obj) < 0) {
  ------------------
  |  Branch (1888:9): [True: 0, False: 1]
  ------------------
 1889|      0|        return -1;
 1890|      0|    }
 1891|      1|#endif // !HAVE_DECL_TZNAME
 1892|      1|#undef ADD_INT
 1893|       |
 1894|      1|    if (PyErr_Occurred()) {
  ------------------
  |  Branch (1894:9): [True: 0, False: 1]
  ------------------
 1895|      0|        return -1;
 1896|      0|    }
 1897|      1|    return 0;
 1898|      1|}
timemodule.c:get_zone:
 1761|      2|{
 1762|      2|#ifdef HAVE_STRUCT_TM_TM_ZONE
 1763|      2|    strncpy(zone, p->tm_zone ? p->tm_zone : "   ", n);
  ------------------
  |  Branch (1763:19): [True: 2, False: 0]
  ------------------
 1764|       |#else
 1765|       |    tzset();
 1766|       |    strftime(zone, n, "%Z", p);
 1767|       |#endif
 1768|      2|}
timemodule.c:get_gmtoff:
 1772|      2|{
 1773|      2|#ifdef HAVE_STRUCT_TM_TM_ZONE
 1774|      2|    return p->tm_gmtoff;
 1775|       |#else
 1776|       |    return timegm(p) - t;
 1777|       |#endif
 1778|      2|}
timemodule.c:time_exec:
 1979|      1|{
 1980|      1|    time_module_state *state = get_time_state(module);
 1981|       |#if defined(__APPLE__) && defined(HAVE_CLOCK_GETTIME)
 1982|       |    if (HAVE_CLOCK_GETTIME_RUNTIME) {
 1983|       |        /* pass: ^^^ cannot use '!' here */
 1984|       |    } else {
 1985|       |        PyObject* dct = PyModule_GetDict(module);
 1986|       |        if (dct == NULL) {
 1987|       |            return -1;
 1988|       |        }
 1989|       |
 1990|       |        if (PyDict_PopString(dct, "clock_gettime", NULL) < 0) {
 1991|       |            return -1;
 1992|       |        }
 1993|       |        if (PyDict_PopString(dct, "clock_gettime_ns", NULL) < 0) {
 1994|       |            return -1;
 1995|       |        }
 1996|       |        if (PyDict_PopString(dct, "clock_settime", NULL) < 0) {
 1997|       |            return -1;
 1998|       |        }
 1999|       |        if (PyDict_PopString(dct, "clock_settime_ns", NULL) < 0) {
 2000|       |            return -1;
 2001|       |        }
 2002|       |        if (PyDict_PopString(dct, "clock_getres", NULL) < 0) {
 2003|       |            return -1;
 2004|       |        }
 2005|       |    }
 2006|       |#endif
 2007|       |#if defined(__APPLE__) && defined(HAVE_THREAD_TIME)
 2008|       |    if (HAVE_CLOCK_GETTIME_RUNTIME) {
 2009|       |        /* pass: ^^^ cannot use '!' here */
 2010|       |    } else {
 2011|       |        PyObject* dct = PyModule_GetDict(module);
 2012|       |
 2013|       |        if (PyDict_PopString(dct, "thread_time", NULL) < 0) {
 2014|       |            return -1;
 2015|       |        }
 2016|       |        if (PyDict_PopString(dct, "thread_time_ns", NULL) < 0) {
 2017|       |            return -1;
 2018|       |        }
 2019|       |    }
 2020|       |#endif
 2021|       |    /* Set, or reset, module variables like time.timezone */
 2022|      1|    if (init_timezone(module) < 0) {
  ------------------
  |  Branch (2022:9): [True: 0, False: 1]
  ------------------
 2023|      0|        return -1;
 2024|      0|    }
 2025|       |
 2026|      1|#if defined(HAVE_CLOCK_GETTIME) || defined(HAVE_CLOCK_SETTIME) || defined(HAVE_CLOCK_GETRES)
 2027|      1|    if (HAVE_CLOCK_GETTIME_RUNTIME) {
  ------------------
  |  |   60|      1|#  define HAVE_CLOCK_GETTIME_RUNTIME 1
  |  |  ------------------
  |  |  |  Branch (60:38): [True: 1, Folded]
  |  |  ------------------
  ------------------
 2028|       |
 2029|      1|#ifdef CLOCK_REALTIME
 2030|      1|        if (PyModule_AddIntMacro(module, CLOCK_REALTIME) < 0) {
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  ------------------
  |  Branch (2030:13): [True: 0, False: 1]
  ------------------
 2031|      0|            return -1;
 2032|      0|        }
 2033|      1|#endif
 2034|      1|#ifdef CLOCK_MONOTONIC
 2035|      1|        if (PyModule_AddIntMacro(module, CLOCK_MONOTONIC) < 0) {
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  ------------------
  |  Branch (2035:13): [True: 0, False: 1]
  ------------------
 2036|      0|            return -1;
 2037|      0|        }
 2038|      1|#endif
 2039|      1|#ifdef CLOCK_MONOTONIC_RAW
 2040|      1|        if (PyModule_AddIntMacro(module, CLOCK_MONOTONIC_RAW) < 0) {
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  ------------------
  |  Branch (2040:13): [True: 0, False: 1]
  ------------------
 2041|      0|            return -1;
 2042|      0|        }
 2043|      1|#endif
 2044|       |#ifdef CLOCK_HIGHRES
 2045|       |        if (PyModule_AddIntMacro(module, CLOCK_HIGHRES) < 0) {
 2046|       |            return -1;
 2047|       |        }
 2048|       |#endif
 2049|      1|#ifdef CLOCK_PROCESS_CPUTIME_ID
 2050|      1|        if (PyModule_AddIntMacro(module, CLOCK_PROCESS_CPUTIME_ID) < 0) {
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  ------------------
  |  Branch (2050:13): [True: 0, False: 1]
  ------------------
 2051|      0|            return -1;
 2052|      0|        }
 2053|      1|#endif
 2054|      1|#ifdef CLOCK_THREAD_CPUTIME_ID
 2055|      1|        if (PyModule_AddIntMacro(module, CLOCK_THREAD_CPUTIME_ID) < 0) {
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  ------------------
  |  Branch (2055:13): [True: 0, False: 1]
  ------------------
 2056|      0|            return -1;
 2057|      0|        }
 2058|      1|#endif
 2059|       |#ifdef CLOCK_PROF
 2060|       |        if (PyModule_AddIntMacro(module, CLOCK_PROF) < 0) {
 2061|       |            return -1;
 2062|       |        }
 2063|       |#endif
 2064|      1|#ifdef CLOCK_BOOTTIME
 2065|      1|        if (PyModule_AddIntMacro(module, CLOCK_BOOTTIME) < 0) {
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  ------------------
  |  Branch (2065:13): [True: 0, False: 1]
  ------------------
 2066|      0|            return -1;
 2067|      0|        }
 2068|      1|#endif
 2069|      1|#ifdef CLOCK_TAI
 2070|      1|        if (PyModule_AddIntMacro(module, CLOCK_TAI) < 0) {
  ------------------
  |  |   47|      1|#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
  ------------------
  |  Branch (2070:13): [True: 0, False: 1]
  ------------------
 2071|      0|            return -1;
 2072|      0|        }
 2073|      1|#endif
 2074|       |#ifdef CLOCK_UPTIME
 2075|       |        if (PyModule_AddIntMacro(module, CLOCK_UPTIME) < 0) {
 2076|       |            return -1;
 2077|       |        }
 2078|       |#endif
 2079|       |#ifdef CLOCK_UPTIME_RAW
 2080|       |        if (PyModule_AddIntMacro(module, CLOCK_UPTIME_RAW) < 0) {
 2081|       |            return -1;
 2082|       |        }
 2083|       |#endif
 2084|       |#ifdef CLOCK_MONOTONIC_RAW_APPROX
 2085|       |        if (PyModule_AddIntMacro(module, CLOCK_MONOTONIC_RAW_APPROX) < 0) {
 2086|       |            return -1;
 2087|       |        }
 2088|       |#endif
 2089|       |#ifdef CLOCK_UPTIME_RAW_APPROX
 2090|       |        if (PyModule_AddIntMacro(module, CLOCK_UPTIME_RAW_APPROX) < 0) {
 2091|       |            return -1;
 2092|       |        }
 2093|       |#endif
 2094|      1|    }
 2095|       |
 2096|      1|#endif  /* defined(HAVE_CLOCK_GETTIME) || defined(HAVE_CLOCK_SETTIME) || defined(HAVE_CLOCK_GETRES) */
 2097|       |
 2098|      1|    if (PyModule_AddIntConstant(module, "_STRUCT_TM_ITEMS", 11)) {
  ------------------
  |  Branch (2098:9): [True: 0, False: 1]
  ------------------
 2099|      0|        return -1;
 2100|      0|    }
 2101|       |
 2102|       |    // struct_time type
 2103|      1|    state->struct_time_type = PyStructSequence_NewType(&struct_time_type_desc);
 2104|      1|    if (state->struct_time_type == NULL) {
  ------------------
  |  Branch (2104:9): [True: 0, False: 1]
  ------------------
 2105|      0|        return -1;
 2106|      0|    }
 2107|      1|    if (PyModule_AddType(module, state->struct_time_type)) {
  ------------------
  |  Branch (2107:9): [True: 0, False: 1]
  ------------------
 2108|      0|        return -1;
 2109|      0|    }
 2110|       |
 2111|       |#if defined(__linux__) && !defined(__GLIBC__)
 2112|       |    struct tm tm;
 2113|       |    const time_t zero = 0;
 2114|       |    if (gmtime_r(&zero, &tm) != NULL)
 2115|       |        utc_string = tm.tm_zone;
 2116|       |#endif
 2117|       |
 2118|       |#if defined(MS_WINDOWS)
 2119|       |    if (timer_flags == (DWORD)-1) {
 2120|       |        DWORD test_flags = CREATE_WAITABLE_TIMER_HIGH_RESOLUTION;
 2121|       |        HANDLE timer = CreateWaitableTimerExW(NULL, NULL, test_flags,
 2122|       |                                              TIMER_ALL_ACCESS);
 2123|       |        if (timer == NULL) {
 2124|       |            // CREATE_WAITABLE_TIMER_HIGH_RESOLUTION is not supported.
 2125|       |            timer_flags = 0;
 2126|       |        }
 2127|       |        else {
 2128|       |            // CREATE_WAITABLE_TIMER_HIGH_RESOLUTION is supported.
 2129|       |            timer_flags = CREATE_WAITABLE_TIMER_HIGH_RESOLUTION;
 2130|       |            CloseHandle(timer);
 2131|       |        }
 2132|       |    }
 2133|       |#endif
 2134|       |
 2135|       |// gh-115714: Don't use times() on WASI.
 2136|      1|#if defined(HAVE_TIMES) && !defined(__wasi__)
 2137|      1|    long ticks_per_second;
 2138|      1|    if (_Py_GetTicksPerSecond(&ticks_per_second) < 0) {
  ------------------
  |  Branch (2138:9): [True: 0, False: 1]
  ------------------
 2139|      0|        PyErr_SetString(PyExc_RuntimeError,
 2140|      0|                        "cannot read ticks_per_second");
 2141|      0|        return -1;
 2142|      0|    }
 2143|      1|    if (_PyTimeFraction_Set(&state->times_base, SEC_TO_NS,
  ------------------
  |  |   64|      1|#define SEC_TO_NS (1000 * 1000 * 1000)
  ------------------
  |  Branch (2143:9): [True: 0, False: 1]
  ------------------
 2144|      1|                            ticks_per_second) < 0) {
 2145|      0|        PyErr_Format(PyExc_OverflowError, "ticks_per_second is too large");
 2146|      0|        return -1;
 2147|      0|    }
 2148|      1|#endif
 2149|       |
 2150|      1|#ifdef HAVE_CLOCK
 2151|      1|    if (_PyTimeFraction_Set(&state->clock_base, SEC_TO_NS,
  ------------------
  |  |   64|      1|#define SEC_TO_NS (1000 * 1000 * 1000)
  ------------------
  |  Branch (2151:9): [True: 0, False: 1]
  ------------------
 2152|      1|                            CLOCKS_PER_SEC) < 0) {
 2153|      0|        PyErr_Format(PyExc_OverflowError, "CLOCKS_PER_SEC is too large");
 2154|      0|        return -1;
 2155|      0|    }
 2156|      1|#endif
 2157|       |
 2158|      1|    return 0;
 2159|      1|}
timemodule.c:time_module_traverse:
 2164|      2|{
 2165|      2|    time_module_state *state = get_time_state(module);
 2166|      2|    Py_VISIT(state->struct_time_type);
  ------------------
  |  |  194|      2|    do {                                                                \
  |  |  195|      2|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 2, False: 0]
  |  |  ------------------
  |  |  196|      2|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      2|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 2]
  |  |  ------------------
  |  |  198|      2|                return vret;                                            \
  |  |  199|      2|        }                                                               \
  |  |  200|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
 2167|      2|    return 0;
 2168|      2|}

PyObject_Type:
   45|      2|{
   46|      2|    PyObject *v;
   47|       |
   48|      2|    if (o == NULL) {
  ------------------
  |  Branch (48:9): [True: 0, False: 2]
  ------------------
   49|      0|        return null_error();
   50|      0|    }
   51|       |
   52|      2|    v = (PyObject *)Py_TYPE(o);
  ------------------
  |  |  213|      2|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   53|      2|    return Py_NewRef(v);
  ------------------
  |  |  550|      2|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   54|      2|}
PyObject_Size:
   58|     90|{
   59|     90|    if (o == NULL) {
  ------------------
  |  Branch (59:9): [True: 0, False: 90]
  ------------------
   60|      0|        null_error();
   61|      0|        return -1;
   62|      0|    }
   63|       |
   64|     90|    PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;
  ------------------
  |  |  213|     90|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     90|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     90|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   65|     90|    if (m && m->sq_length) {
  ------------------
  |  Branch (65:9): [True: 90, False: 0]
  |  Branch (65:14): [True: 89, False: 1]
  ------------------
   66|     89|        Py_ssize_t len = m->sq_length(o);
   67|     89|        assert(_Py_CheckSlotResult(o, "__len__", len >= 0));
  ------------------
  |  Branch (67:9): [True: 89, False: 0]
  ------------------
   68|     89|        return len;
   69|     89|    }
   70|       |
   71|      1|    return PyMapping_Size(o);
   72|     90|}
_PyObject_HasLen:
   83|     40|_PyObject_HasLen(PyObject *o) {
   84|     40|    return (Py_TYPE(o)->tp_as_sequence && Py_TYPE(o)->tp_as_sequence->sq_length) ||
  ------------------
  |  |  213|     40|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     40|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     40|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  return (Py_TYPE(o)->tp_as_sequence && Py_TYPE(o)->tp_as_sequence->sq_length) ||
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (84:13): [True: 0, False: 40]
  |  Branch (84:43): [True: 0, False: 0]
  ------------------
   85|     40|        (Py_TYPE(o)->tp_as_mapping && Py_TYPE(o)->tp_as_mapping->mp_length);
  ------------------
  |  |  213|     40|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     40|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     40|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      (Py_TYPE(o)->tp_as_mapping && Py_TYPE(o)->tp_as_mapping->mp_length);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (85:10): [True: 0, False: 40]
  |  Branch (85:39): [True: 0, False: 0]
  ------------------
   86|     40|}
PyObject_LengthHint:
   96|     40|{
   97|     40|    PyObject *hint, *result;
   98|     40|    Py_ssize_t res;
   99|     40|    if (_PyObject_HasLen(o)) {
  ------------------
  |  Branch (99:9): [True: 0, False: 40]
  ------------------
  100|      0|        res = PyObject_Length(o);
  ------------------
  |  |   80|      0|#define PyObject_Length PyObject_Size
  ------------------
  101|      0|        if (res < 0) {
  ------------------
  |  Branch (101:13): [True: 0, False: 0]
  ------------------
  102|      0|            PyThreadState *tstate = _PyThreadState_GET();
  103|      0|            assert(_PyErr_Occurred(tstate));
  ------------------
  |  Branch (103:13): [True: 0, False: 0]
  ------------------
  104|      0|            if (!_PyErr_ExceptionMatches(tstate, PyExc_TypeError)) {
  ------------------
  |  Branch (104:17): [True: 0, False: 0]
  ------------------
  105|      0|                return -1;
  106|      0|            }
  107|      0|            _PyErr_Clear(tstate);
  108|      0|        }
  109|      0|        else {
  110|      0|            return res;
  111|      0|        }
  112|      0|    }
  113|     40|    hint = _PyObject_LookupSpecial(o, &_Py_ID(__length_hint__));
  ------------------
  |  |  917|     40|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     40|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     40|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  114|     40|    if (hint == NULL) {
  ------------------
  |  Branch (114:9): [True: 11, False: 29]
  ------------------
  115|     11|        if (PyErr_Occurred()) {
  ------------------
  |  Branch (115:13): [True: 0, False: 11]
  ------------------
  116|      0|            return -1;
  117|      0|        }
  118|     11|        return defaultvalue;
  119|     11|    }
  120|     29|    result = _PyObject_CallNoArgs(hint);
  121|     29|    Py_DECREF(hint);
  ------------------
  |  |  430|     29|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     29|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     29|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  122|     29|    if (result == NULL) {
  ------------------
  |  Branch (122:9): [True: 0, False: 29]
  ------------------
  123|      0|        PyThreadState *tstate = _PyThreadState_GET();
  124|      0|        if (_PyErr_ExceptionMatches(tstate, PyExc_TypeError)) {
  ------------------
  |  Branch (124:13): [True: 0, False: 0]
  ------------------
  125|      0|            _PyErr_Clear(tstate);
  126|      0|            return defaultvalue;
  127|      0|        }
  128|      0|        return -1;
  129|      0|    }
  130|     29|    else if (result == Py_NotImplemented) {
  ------------------
  |  |  640|     29|#  define Py_NotImplemented (&_Py_NotImplementedStruct)
  ------------------
  |  Branch (130:14): [True: 0, False: 29]
  ------------------
  131|      0|        Py_DECREF(result);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  132|      0|        return defaultvalue;
  133|      0|    }
  134|     29|    if (!PyLong_Check(result)) {
  ------------------
  |  |   13|     29|        PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     29|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (134:9): [True: 0, False: 29]
  ------------------
  135|      0|        PyErr_Format(PyExc_TypeError,
  136|      0|                     "%T.__length_hint__() must return an int, not %T",
  137|      0|                     o, result);
  138|      0|        Py_DECREF(result);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  139|      0|        return -1;
  140|      0|    }
  141|     29|    res = PyLong_AsSsize_t(result);
  142|     29|    Py_DECREF(result);
  ------------------
  |  |  430|     29|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     29|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     29|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  143|     29|    if (res < 0 && PyErr_Occurred()) {
  ------------------
  |  Branch (143:9): [True: 0, False: 29]
  |  Branch (143:20): [True: 0, False: 0]
  ------------------
  144|      0|        return -1;
  145|      0|    }
  146|     29|    if (res < 0) {
  ------------------
  |  Branch (146:9): [True: 0, False: 29]
  ------------------
  147|      0|        PyErr_Format(PyExc_ValueError,
  148|      0|                     "%T.__length_hint__() must return a non-negative int", o);
  149|      0|        return -1;
  150|      0|    }
  151|     29|    return res;
  152|     29|}
PyObject_GetItem:
  156|    111|{
  157|    111|    if (o == NULL || key == NULL) {
  ------------------
  |  Branch (157:9): [True: 0, False: 111]
  |  Branch (157:22): [True: 0, False: 111]
  ------------------
  158|      0|        return null_error();
  159|      0|    }
  160|       |
  161|    111|    PyMappingMethods *m = Py_TYPE(o)->tp_as_mapping;
  ------------------
  |  |  213|    111|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    111|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    111|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  162|    111|    if (m && m->mp_subscript) {
  ------------------
  |  Branch (162:9): [True: 109, False: 2]
  |  Branch (162:14): [True: 109, False: 0]
  ------------------
  163|    109|        PyObject *item = m->mp_subscript(o, key);
  164|    109|        assert(_Py_CheckSlotResult(o, "__getitem__", item != NULL));
  ------------------
  |  Branch (164:9): [True: 109, False: 0]
  ------------------
  165|    109|        return item;
  166|    109|    }
  167|       |
  168|      2|    PySequenceMethods *ms = Py_TYPE(o)->tp_as_sequence;
  ------------------
  |  |  213|      2|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  169|      2|    if (ms && ms->sq_item) {
  ------------------
  |  Branch (169:9): [True: 0, False: 2]
  |  Branch (169:15): [True: 0, False: 0]
  ------------------
  170|      0|        if (_PyIndex_Check(key)) {
  ------------------
  |  Branch (170:13): [True: 0, False: 0]
  ------------------
  171|      0|            Py_ssize_t key_value;
  172|      0|            key_value = PyNumber_AsSsize_t(key, PyExc_IndexError);
  173|      0|            if (key_value == -1 && PyErr_Occurred())
  ------------------
  |  Branch (173:17): [True: 0, False: 0]
  |  Branch (173:36): [True: 0, False: 0]
  ------------------
  174|      0|                return NULL;
  175|      0|            return PySequence_GetItem(o, key_value);
  176|      0|        }
  177|      0|        else {
  178|      0|            return type_error("sequence index must "
  179|      0|                              "be integer, not '%.200s'", key);
  180|      0|        }
  181|      0|    }
  182|       |
  183|      2|    if (PyType_Check(o)) {
  ------------------
  |  |  766|      2|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (766:28): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  184|      2|        PyObject *meth, *result;
  185|       |
  186|       |        // Special case type[int], but disallow other types so str[int] fails
  187|      2|        if ((PyTypeObject*)o == &PyType_Type) {
  ------------------
  |  Branch (187:13): [True: 0, False: 2]
  ------------------
  188|      0|            return Py_GenericAlias(o, key);
  189|      0|        }
  190|       |
  191|      2|        if (PyObject_GetOptionalAttr(o, &_Py_ID(__class_getitem__), &meth) < 0) {
  ------------------
  |  |  917|      2|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      2|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      2|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (191:13): [True: 0, False: 2]
  ------------------
  192|      0|            return NULL;
  193|      0|        }
  194|      2|        if (meth && meth != Py_None) {
  ------------------
  |  |  616|      2|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (194:13): [True: 2, False: 0]
  |  Branch (194:21): [True: 2, False: 0]
  ------------------
  195|      2|            result = PyObject_CallOneArg(meth, key);
  196|      2|            Py_DECREF(meth);
  ------------------
  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  197|      2|            return result;
  198|      2|        }
  199|      0|        Py_XDECREF(meth);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  200|      0|        PyErr_Format(PyExc_TypeError, "type '%.200s' is not subscriptable",
  201|      0|                     ((PyTypeObject *)o)->tp_name);
  202|      0|        return NULL;
  203|      2|    }
  204|       |
  205|      0|    return type_error("'%.200s' object is not subscriptable", o);
  206|      2|}
PyMapping_GetOptionalItem:
  210|  1.34k|{
  211|  1.34k|    if (PyDict_CheckExact(obj)) {
  ------------------
  |  |   19|  1.34k|#define PyDict_CheckExact(op) Py_IS_TYPE((op), &PyDict_Type)
  |  |  ------------------
  |  |  |  |  215|  1.34k|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|  1.34k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|  1.34k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 1.34k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  212|  1.34k|        return PyDict_GetItemRef(obj, key, result);
  213|  1.34k|    }
  214|       |
  215|      0|    *result = PyObject_GetItem(obj, key);
  216|      0|    if (*result) {
  ------------------
  |  Branch (216:9): [True: 0, False: 0]
  ------------------
  217|      0|        return 1;
  218|      0|    }
  219|      0|    assert(PyErr_Occurred());
  ------------------
  |  Branch (219:5): [True: 0, False: 0]
  ------------------
  220|      0|    if (!PyErr_ExceptionMatches(PyExc_KeyError)) {
  ------------------
  |  Branch (220:9): [True: 0, False: 0]
  ------------------
  221|      0|        return -1;
  222|      0|    }
  223|      0|    PyErr_Clear();
  224|      0|    return 0;
  225|      0|}
_PyMapping_GetOptionalItem2:
  229|     84|{
  230|     84|    PyObject* result;
  231|     84|    *err = PyMapping_GetOptionalItem(obj, key, &result);
  232|     84|    return result;
  233|     84|}
PyObject_SetItem:
  237|     26|{
  238|     26|    if (o == NULL || key == NULL || value == NULL) {
  ------------------
  |  Branch (238:9): [True: 0, False: 26]
  |  Branch (238:22): [True: 0, False: 26]
  |  Branch (238:37): [True: 0, False: 26]
  ------------------
  239|      0|        null_error();
  240|      0|        return -1;
  241|      0|    }
  242|       |
  243|     26|    PyMappingMethods *m = Py_TYPE(o)->tp_as_mapping;
  ------------------
  |  |  213|     26|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     26|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     26|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  244|     26|    if (m && m->mp_ass_subscript) {
  ------------------
  |  Branch (244:9): [True: 26, False: 0]
  |  Branch (244:14): [True: 26, False: 0]
  ------------------
  245|     26|        int res = m->mp_ass_subscript(o, key, value);
  246|     26|        assert(_Py_CheckSlotResult(o, "__setitem__", res >= 0));
  ------------------
  |  Branch (246:9): [True: 26, False: 0]
  ------------------
  247|     26|        return res;
  248|     26|    }
  249|       |
  250|      0|    if (Py_TYPE(o)->tp_as_sequence) {
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (250:9): [True: 0, False: 0]
  ------------------
  251|      0|        if (_PyIndex_Check(key)) {
  ------------------
  |  Branch (251:13): [True: 0, False: 0]
  ------------------
  252|      0|            Py_ssize_t key_value;
  253|      0|            key_value = PyNumber_AsSsize_t(key, PyExc_IndexError);
  254|      0|            if (key_value == -1 && PyErr_Occurred())
  ------------------
  |  Branch (254:17): [True: 0, False: 0]
  |  Branch (254:36): [True: 0, False: 0]
  ------------------
  255|      0|                return -1;
  256|      0|            return PySequence_SetItem(o, key_value, value);
  257|      0|        }
  258|      0|        else if (Py_TYPE(o)->tp_as_sequence->sq_ass_item) {
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (258:18): [True: 0, False: 0]
  ------------------
  259|      0|            type_error("sequence index must be "
  260|      0|                       "integer, not '%.200s'", key);
  261|      0|            return -1;
  262|      0|        }
  263|      0|    }
  264|       |
  265|      0|    type_error("'%.200s' object does not support item assignment", o);
  266|      0|    return -1;
  267|      0|}
PyObject_DelItem:
  271|     37|{
  272|     37|    if (o == NULL || key == NULL) {
  ------------------
  |  Branch (272:9): [True: 0, False: 37]
  |  Branch (272:22): [True: 0, False: 37]
  ------------------
  273|      0|        null_error();
  274|      0|        return -1;
  275|      0|    }
  276|       |
  277|     37|    PyMappingMethods *m = Py_TYPE(o)->tp_as_mapping;
  ------------------
  |  |  213|     37|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     37|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     37|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  278|     37|    if (m && m->mp_ass_subscript) {
  ------------------
  |  Branch (278:9): [True: 37, False: 0]
  |  Branch (278:14): [True: 37, False: 0]
  ------------------
  279|     37|        int res = m->mp_ass_subscript(o, key, (PyObject*)NULL);
  280|     37|        assert(_Py_CheckSlotResult(o, "__delitem__", res >= 0));
  ------------------
  |  Branch (280:9): [True: 37, False: 0]
  ------------------
  281|     37|        return res;
  282|     37|    }
  283|       |
  284|      0|    if (Py_TYPE(o)->tp_as_sequence) {
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (284:9): [True: 0, False: 0]
  ------------------
  285|      0|        if (_PyIndex_Check(key)) {
  ------------------
  |  Branch (285:13): [True: 0, False: 0]
  ------------------
  286|      0|            Py_ssize_t key_value;
  287|      0|            key_value = PyNumber_AsSsize_t(key, PyExc_IndexError);
  288|      0|            if (key_value == -1 && PyErr_Occurred())
  ------------------
  |  Branch (288:17): [True: 0, False: 0]
  |  Branch (288:36): [True: 0, False: 0]
  ------------------
  289|      0|                return -1;
  290|      0|            return PySequence_DelItem(o, key_value);
  291|      0|        }
  292|      0|        else if (Py_TYPE(o)->tp_as_sequence->sq_ass_item) {
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (292:18): [True: 0, False: 0]
  ------------------
  293|      0|            type_error("sequence index must be "
  294|      0|                       "integer, not '%.200s'", key);
  295|      0|            return -1;
  296|      0|        }
  297|      0|    }
  298|       |
  299|      0|    type_error("'%.200s' object does not support item deletion", o);
  300|      0|    return -1;
  301|      0|}
PyObject_CheckBuffer:
  325|     14|{
  326|     14|    PyBufferProcs *tp_as_buffer = Py_TYPE(obj)->tp_as_buffer;
  ------------------
  |  |  213|     14|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     14|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     14|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  327|     14|    return (tp_as_buffer != NULL && tp_as_buffer->bf_getbuffer != NULL);
  ------------------
  |  Branch (327:13): [True: 0, False: 14]
  |  Branch (327:37): [True: 0, False: 0]
  ------------------
  328|     14|}
PyObject_Format:
  854|     11|{
  855|     11|    PyObject *meth;
  856|     11|    PyObject *empty = NULL;
  857|     11|    PyObject *result = NULL;
  858|       |
  859|     11|    if (format_spec != NULL && !PyUnicode_Check(format_spec)) {
  ------------------
  |  |  103|      0|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (859:9): [True: 0, False: 11]
  |  Branch (859:32): [True: 0, False: 0]
  ------------------
  860|      0|        PyErr_Format(PyExc_SystemError,
  861|      0|                     "Format specifier must be a string, not %.200s",
  862|      0|                     Py_TYPE(format_spec)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  863|      0|        return NULL;
  864|      0|    }
  865|       |
  866|       |    /* Fast path for common types. */
  867|     11|    if (format_spec == NULL || PyUnicode_GET_LENGTH(format_spec) == 0) {
  ------------------
  |  |  299|      0|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (867:9): [True: 11, False: 0]
  |  Branch (867:32): [True: 0, False: 0]
  ------------------
  868|     11|        if (PyUnicode_CheckExact(obj)) {
  ------------------
  |  |  104|     11|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  ------------------
  |  |  |  |  215|     11|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     11|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     11|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  869|      0|            return Py_NewRef(obj);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  870|      0|        }
  871|     11|        if (PyLong_CheckExact(obj)) {
  ------------------
  |  |   14|     11|#define PyLong_CheckExact(op) Py_IS_TYPE((op), &PyLong_Type)
  |  |  ------------------
  |  |  |  |  215|     11|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     11|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     11|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 11, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  872|     11|            return PyObject_Str(obj);
  873|     11|        }
  874|     11|    }
  875|       |
  876|       |    /* If no format_spec is provided, use an empty string */
  877|      0|    if (format_spec == NULL) {
  ------------------
  |  Branch (877:9): [True: 0, False: 0]
  ------------------
  878|      0|        empty = Py_GetConstant(Py_CONSTANT_EMPTY_STR);
  ------------------
  |  |  597|      0|#define Py_CONSTANT_EMPTY_STR 7
  ------------------
  879|      0|        format_spec = empty;
  880|      0|    }
  881|       |
  882|       |    /* Find the (unbound!) __format__ method */
  883|      0|    meth = _PyObject_LookupSpecial(obj, &_Py_ID(__format__));
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  884|      0|    if (meth == NULL) {
  ------------------
  |  Branch (884:9): [True: 0, False: 0]
  ------------------
  885|      0|        PyThreadState *tstate = _PyThreadState_GET();
  886|      0|        if (!_PyErr_Occurred(tstate)) {
  ------------------
  |  Branch (886:13): [True: 0, False: 0]
  ------------------
  887|      0|            _PyErr_Format(tstate, PyExc_TypeError,
  888|      0|                          "Type %.100s doesn't define __format__",
  889|      0|                          Py_TYPE(obj)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  890|      0|        }
  891|      0|        goto done;
  892|      0|    }
  893|       |
  894|       |    /* And call it. */
  895|      0|    result = PyObject_CallOneArg(meth, format_spec);
  896|      0|    Py_DECREF(meth);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  897|       |
  898|      0|    if (result && !PyUnicode_Check(result)) {
  ------------------
  |  |  103|      0|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (898:9): [True: 0, False: 0]
  |  Branch (898:19): [True: 0, False: 0]
  ------------------
  899|      0|        PyErr_Format(PyExc_TypeError,
  900|      0|                     "%T.__format__() must return a str, not %T",
  901|      0|                     obj, result);
  902|      0|        Py_SETREF(result, NULL);
  ------------------
  |  |  352|      0|    do { \
  |  |  353|      0|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  354|      0|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  355|      0|        *_tmp_dst_ptr = (src); \
  |  |  356|      0|        Py_DECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  357|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (357:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  903|      0|        goto done;
  904|      0|    }
  905|       |
  906|      0|done:
  907|      0|    Py_XDECREF(empty);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  908|      0|    return result;
  909|      0|}
PyNumber_Check:
  914|      3|{
  915|      3|    if (o == NULL)
  ------------------
  |  Branch (915:9): [True: 0, False: 3]
  ------------------
  916|      0|        return 0;
  917|      3|    PyNumberMethods *nb = Py_TYPE(o)->tp_as_number;
  ------------------
  |  |  213|      3|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  918|      3|    return nb && (nb->nb_index || nb->nb_int || nb->nb_float || PyComplex_Check(o));
  ------------------
  |  |   13|      0|#define PyComplex_Check(op) PyObject_TypeCheck((op), &PyComplex_Type)
  |  |  ------------------
  |  |  |  |  378|      0|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (378:40): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (918:12): [True: 3, False: 0]
  |  Branch (918:19): [True: 3, False: 0]
  |  Branch (918:35): [True: 0, False: 0]
  |  Branch (918:49): [True: 0, False: 0]
  ------------------
  919|      3|}
PyNumber_Add:
 1139|     13|{
 1140|     13|    PyObject *result = BINARY_OP1(v, w, NB_SLOT(nb_add), "+");
  ------------------
  |  |  995|     13|#  define BINARY_OP1(v, w, op_slot, op_name) binary_op1(v, w, op_slot, op_name)
  ------------------
 1141|     13|    if (result != Py_NotImplemented) {
  ------------------
  |  |  640|     13|#  define Py_NotImplemented (&_Py_NotImplementedStruct)
  ------------------
  |  Branch (1141:9): [True: 4, False: 9]
  ------------------
 1142|      4|        return result;
 1143|      4|    }
 1144|      9|    Py_DECREF(result);
  ------------------
  |  |  430|      9|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      9|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      9|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1145|       |
 1146|      9|    PySequenceMethods *m = Py_TYPE(v)->tp_as_sequence;
  ------------------
  |  |  213|      9|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      9|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      9|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1147|      9|    if (m && m->sq_concat) {
  ------------------
  |  Branch (1147:9): [True: 9, False: 0]
  |  Branch (1147:14): [True: 9, False: 0]
  ------------------
 1148|      9|        result = (*m->sq_concat)(v, w);
 1149|      9|        assert(_Py_CheckSlotResult(v, "+", result != NULL));
  ------------------
  |  Branch (1149:9): [True: 9, False: 0]
  ------------------
 1150|      9|        return result;
 1151|      9|    }
 1152|       |
 1153|      0|    return binop_type_error(v, w, "+");
 1154|      9|}
PyNumber_Multiply:
 1177|      1|{
 1178|      1|    PyObject *result = BINARY_OP1(v, w, NB_SLOT(nb_multiply), "*");
  ------------------
  |  |  995|      1|#  define BINARY_OP1(v, w, op_slot, op_name) binary_op1(v, w, op_slot, op_name)
  ------------------
 1179|      1|    if (result == Py_NotImplemented) {
  ------------------
  |  |  640|      1|#  define Py_NotImplemented (&_Py_NotImplementedStruct)
  ------------------
  |  Branch (1179:9): [True: 1, False: 0]
  ------------------
 1180|      1|        PySequenceMethods *mv = Py_TYPE(v)->tp_as_sequence;
  ------------------
  |  |  213|      1|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1181|      1|        PySequenceMethods *mw = Py_TYPE(w)->tp_as_sequence;
  ------------------
  |  |  213|      1|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1182|      1|        Py_DECREF(result);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1183|      1|        if  (mv && mv->sq_repeat) {
  ------------------
  |  Branch (1183:14): [True: 1, False: 0]
  |  Branch (1183:20): [True: 1, False: 0]
  ------------------
 1184|      1|            return sequence_repeat(mv->sq_repeat, v, w);
 1185|      1|        }
 1186|      0|        else if (mw && mw->sq_repeat) {
  ------------------
  |  Branch (1186:18): [True: 0, False: 0]
  |  Branch (1186:24): [True: 0, False: 0]
  ------------------
 1187|      0|            return sequence_repeat(mw->sq_repeat, w, v);
 1188|      0|        }
 1189|      0|        result = binop_type_error(v, w, "*");
 1190|      0|    }
 1191|      0|    return result;
 1192|      1|}
PyNumber_InPlaceAdd:
 1308|      2|{
 1309|      2|    PyObject *result = BINARY_IOP1(v, w, NB_SLOT(nb_inplace_add),
  ------------------
  |  | 1256|      2|#  define BINARY_IOP1(v, w, iop_slot, op_slot, op_name) binary_iop1(v, w, iop_slot, op_slot, op_name)
  ------------------
 1310|      2|                                   NB_SLOT(nb_add), "+=");
 1311|      2|    if (result == Py_NotImplemented) {
  ------------------
  |  |  640|      2|#  define Py_NotImplemented (&_Py_NotImplementedStruct)
  ------------------
  |  Branch (1311:9): [True: 2, False: 0]
  ------------------
 1312|      2|        PySequenceMethods *m = Py_TYPE(v)->tp_as_sequence;
  ------------------
  |  |  213|      2|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1313|      2|        Py_DECREF(result);
  ------------------
  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1314|      2|        if (m != NULL) {
  ------------------
  |  Branch (1314:13): [True: 2, False: 0]
  ------------------
 1315|      2|            binaryfunc func = m->sq_inplace_concat;
 1316|      2|            if (func == NULL)
  ------------------
  |  Branch (1316:17): [True: 2, False: 0]
  ------------------
 1317|      2|                func = m->sq_concat;
 1318|      2|            if (func != NULL) {
  ------------------
  |  Branch (1318:17): [True: 2, False: 0]
  ------------------
 1319|      2|                result = func(v, w);
 1320|      2|                assert(_Py_CheckSlotResult(v, "+=", result != NULL));
  ------------------
  |  Branch (1320:17): [True: 2, False: 0]
  ------------------
 1321|      2|                return result;
 1322|      2|            }
 1323|      2|        }
 1324|      0|        result = binop_type_error(v, w, "+=");
 1325|      0|    }
 1326|      0|    return result;
 1327|      2|}
PyIndex_Check:
 1399|     23|{
 1400|     23|    return _PyIndex_Check(obj);
 1401|     23|}
_PyNumber_Index:
 1411|     25|{
 1412|     25|    if (item == NULL) {
  ------------------
  |  Branch (1412:9): [True: 0, False: 25]
  ------------------
 1413|      0|        return null_error();
 1414|      0|    }
 1415|       |
 1416|     25|    if (PyLong_Check(item)) {
  ------------------
  |  |   13|     25|        PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     25|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 25, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1417|     25|        return Py_NewRef(item);
  ------------------
  |  |  550|     25|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     25|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     25|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1418|     25|    }
 1419|      0|    if (!_PyIndex_Check(item)) {
  ------------------
  |  Branch (1419:9): [True: 0, False: 0]
  ------------------
 1420|      0|        PyErr_Format(PyExc_TypeError,
 1421|      0|                     "'%.200s' object cannot be interpreted "
 1422|      0|                     "as an integer", Py_TYPE(item)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1423|      0|        return NULL;
 1424|      0|    }
 1425|       |
 1426|      0|    PyObject *result = Py_TYPE(item)->tp_as_number->nb_index(item);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1427|      0|    assert(_Py_CheckSlotResult(item, "__index__", result != NULL));
  ------------------
  |  Branch (1427:5): [True: 0, False: 0]
  ------------------
 1428|      0|    if (!result || PyLong_CheckExact(result)) {
  ------------------
  |  |   14|      0|#define PyLong_CheckExact(op) Py_IS_TYPE((op), &PyLong_Type)
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1428:9): [True: 0, False: 0]
  ------------------
 1429|      0|        return result;
 1430|      0|    }
 1431|       |
 1432|      0|    if (!PyLong_Check(result)) {
  ------------------
  |  |   13|      0|        PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (1432:9): [True: 0, False: 0]
  ------------------
 1433|      0|        PyErr_Format(PyExc_TypeError,
 1434|      0|                     "%T.__index__() must return an int, not %T",
 1435|      0|                     item, result);
 1436|      0|        Py_DECREF(result);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1437|      0|        return NULL;
 1438|      0|    }
 1439|       |    /* Issue #17576: warn if 'result' not of exact type int. */
 1440|      0|    if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1,
  ------------------
  |  Branch (1440:9): [True: 0, False: 0]
  ------------------
 1441|      0|            "%T.__index__() must return an int, not %T.  "
 1442|      0|            "The ability to return an instance of a strict subclass of int "
 1443|      0|            "is deprecated, and may be removed in a future version of Python.",
 1444|      0|            item, result)) {
 1445|      0|        Py_DECREF(result);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1446|      0|        return NULL;
 1447|      0|    }
 1448|      0|    return result;
 1449|      0|}
PyNumber_Index:
 1457|      4|{
 1458|      4|    PyObject *result = _PyNumber_Index(item);
 1459|      4|    if (result != NULL && !PyLong_CheckExact(result)) {
  ------------------
  |  |   14|      4|#define PyLong_CheckExact(op) Py_IS_TYPE((op), &PyLong_Type)
  |  |  ------------------
  |  |  |  |  215|      4|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1459:9): [True: 4, False: 0]
  |  Branch (1459:27): [True: 0, False: 4]
  ------------------
 1460|      0|        Py_SETREF(result, _PyLong_Copy((PyLongObject *)result));
  ------------------
  |  |  352|      0|    do { \
  |  |  353|      0|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  354|      0|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  355|      0|        *_tmp_dst_ptr = (src); \
  |  |  356|      0|        Py_DECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  357|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (357:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1461|      0|    }
 1462|      4|    return result;
 1463|      4|}
PyNumber_AsSsize_t:
 1469|     11|{
 1470|     11|    Py_ssize_t result;
 1471|     11|    PyObject *runerr;
 1472|     11|    PyObject *value = _PyNumber_Index(item);
 1473|     11|    if (value == NULL)
  ------------------
  |  Branch (1473:9): [True: 0, False: 11]
  ------------------
 1474|      0|        return -1;
 1475|       |
 1476|       |    /* We're done if PyLong_AsSsize_t() returns without error. */
 1477|     11|    result = PyLong_AsSsize_t(value);
 1478|     11|    if (result != -1)
  ------------------
  |  Branch (1478:9): [True: 11, False: 0]
  ------------------
 1479|     11|        goto finish;
 1480|       |
 1481|      0|    PyThreadState *tstate = _PyThreadState_GET();
 1482|      0|    runerr = _PyErr_Occurred(tstate);
 1483|      0|    if (!runerr) {
  ------------------
  |  Branch (1483:9): [True: 0, False: 0]
  ------------------
 1484|      0|        goto finish;
 1485|      0|    }
 1486|       |
 1487|       |    /* Error handling code -- only manage OverflowError differently */
 1488|      0|    if (!PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError)) {
  ------------------
  |  Branch (1488:9): [True: 0, False: 0]
  ------------------
 1489|      0|        goto finish;
 1490|      0|    }
 1491|      0|    _PyErr_Clear(tstate);
 1492|       |
 1493|       |    /* If no error-handling desired then the default clipping
 1494|       |       is sufficient. */
 1495|      0|    if (!err) {
  ------------------
  |  Branch (1495:9): [True: 0, False: 0]
  ------------------
 1496|      0|        assert(PyLong_Check(value));
  ------------------
  |  Branch (1496:9): [True: 0, False: 0]
  ------------------
 1497|       |        /* Whether or not it is less than or equal to
 1498|       |           zero is determined by the sign of ob_size
 1499|       |        */
 1500|      0|        if (_PyLong_IsNegative((PyLongObject *)value))
  ------------------
  |  Branch (1500:13): [True: 0, False: 0]
  ------------------
 1501|      0|            result = PY_SSIZE_T_MIN;
  ------------------
  |  |  146|      0|#define PY_SSIZE_T_MIN (-PY_SSIZE_T_MAX-1)
  |  |  ------------------
  |  |  |  |  137|      0|#   define PY_SSIZE_T_MAX SSIZE_MAX
  |  |  ------------------
  ------------------
 1502|      0|        else
 1503|      0|            result = PY_SSIZE_T_MAX;
  ------------------
  |  |  137|      0|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
 1504|      0|    }
 1505|      0|    else {
 1506|       |        /* Otherwise replace the error with caller's error object. */
 1507|      0|        _PyErr_Format(tstate, err,
 1508|      0|                      "cannot fit '%.200s' into an index-sized integer",
 1509|      0|                      Py_TYPE(item)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1510|      0|    }
 1511|       |
 1512|     11| finish:
 1513|     11|    Py_DECREF(value);
  ------------------
  |  |  430|     11|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     11|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     11|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1514|     11|    return result;
 1515|      0|}
PySequence_GetItem:
 1842|    518|{
 1843|    518|    if (s == NULL) {
  ------------------
  |  Branch (1843:9): [True: 0, False: 518]
  ------------------
 1844|      0|        return null_error();
 1845|      0|    }
 1846|       |
 1847|    518|    PySequenceMethods *m = Py_TYPE(s)->tp_as_sequence;
  ------------------
  |  |  213|    518|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    518|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    518|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1848|    518|    if (m && m->sq_item) {
  ------------------
  |  Branch (1848:9): [True: 518, False: 0]
  |  Branch (1848:14): [True: 518, False: 0]
  ------------------
 1849|    518|        if (i < 0) {
  ------------------
  |  Branch (1849:13): [True: 0, False: 518]
  ------------------
 1850|      0|            if (m->sq_length) {
  ------------------
  |  Branch (1850:17): [True: 0, False: 0]
  ------------------
 1851|      0|                Py_ssize_t l = (*m->sq_length)(s);
 1852|      0|                assert(_Py_CheckSlotResult(s, "__len__", l >= 0));
  ------------------
  |  Branch (1852:17): [True: 0, False: 0]
  ------------------
 1853|      0|                if (l < 0) {
  ------------------
  |  Branch (1853:21): [True: 0, False: 0]
  ------------------
 1854|      0|                    return NULL;
 1855|      0|                }
 1856|      0|                i += l;
 1857|      0|            }
 1858|      0|        }
 1859|    518|        PyObject *res = m->sq_item(s, i);
 1860|    518|        assert(_Py_CheckSlotResult(s, "__getitem__", res != NULL));
  ------------------
  |  Branch (1860:9): [True: 518, False: 0]
  ------------------
 1861|    518|        return res;
 1862|    518|    }
 1863|       |
 1864|      0|    if (Py_TYPE(s)->tp_as_mapping && Py_TYPE(s)->tp_as_mapping->mp_subscript) {
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  if (Py_TYPE(s)->tp_as_mapping && Py_TYPE(s)->tp_as_mapping->mp_subscript) {
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1864:9): [True: 0, False: 0]
  |  Branch (1864:38): [True: 0, False: 0]
  ------------------
 1865|      0|        return type_error("%.200s is not a sequence", s);
 1866|      0|    }
 1867|      0|    return type_error("'%.200s' object does not support indexing", s);
 1868|      0|}
PySequence_Tuple:
 2006|    372|{
 2007|    372|    PyObject *it;  /* iter(v) */
 2008|       |
 2009|    372|    if (v == NULL) {
  ------------------
  |  Branch (2009:9): [True: 0, False: 372]
  ------------------
 2010|      0|        return null_error();
 2011|      0|    }
 2012|       |
 2013|       |    /* Special-case the common tuple and list cases, for efficiency. */
 2014|    372|    if (PyTuple_CheckExact(v)) {
  ------------------
  |  |   28|    372|#define PyTuple_CheckExact(op) Py_IS_TYPE((op), &PyTuple_Type)
  |  |  ------------------
  |  |  |  |  215|    372|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    372|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    372|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 330, False: 42]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2015|       |        /* Note that we can't know whether it's safe to return
 2016|       |           a tuple *subclass* instance as-is, hence the restriction
 2017|       |           to exact tuples here.  In contrast, lists always make
 2018|       |           a copy, so there's no need for exactness below. */
 2019|    330|        return Py_NewRef(v);
  ------------------
  |  |  550|    330|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    330|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    330|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2020|    330|    }
 2021|     42|    if (PyList_CheckExact(v))
  ------------------
  |  |   26|     42|#define PyList_CheckExact(op) Py_IS_TYPE((op), &PyList_Type)
  |  |  ------------------
  |  |  |  |  215|     42|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     42|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     42|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 38, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2022|     38|        return PyList_AsTuple(v);
 2023|       |
 2024|       |    /* Get iterator. */
 2025|      4|    it = PyObject_GetIter(v);
 2026|      4|    if (it == NULL)
  ------------------
  |  Branch (2026:9): [True: 0, False: 4]
  ------------------
 2027|      0|        return NULL;
 2028|       |
 2029|      4|    Py_ssize_t n;
 2030|      4|    PyObject *buffer[8];
 2031|     17|    for (n = 0; n < 8; n++) {
  ------------------
  |  Branch (2031:17): [True: 17, False: 0]
  ------------------
 2032|     17|        PyObject *item = PyIter_Next(it);
 2033|     17|        if (item == NULL) {
  ------------------
  |  Branch (2033:13): [True: 4, False: 13]
  ------------------
 2034|      4|            if (PyErr_Occurred()) {
  ------------------
  |  Branch (2034:17): [True: 0, False: 4]
  ------------------
 2035|      0|                goto fail;
 2036|      0|            }
 2037|      4|            Py_DECREF(it);
  ------------------
  |  |  430|      4|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2038|      4|            return _PyTuple_FromArraySteal(buffer, n);
 2039|      4|        }
 2040|     13|        buffer[n] = item;
 2041|     13|    }
 2042|      0|    PyListObject *list = (PyListObject *)PyList_New(16);
 2043|      0|    if (list == NULL) {
  ------------------
  |  Branch (2043:9): [True: 0, False: 0]
  ------------------
 2044|      0|        goto fail;
 2045|      0|    }
 2046|      0|    assert(n == 8);
  ------------------
  |  Branch (2046:5): [True: 0, False: 0]
  ------------------
 2047|      0|    Py_SET_SIZE(list, n);
  ------------------
  |  |  216|      0|#  define Py_SET_SIZE(ob, size) _Py_SET_SIZE_impl(_PyVarObject_CAST(ob), (size))
  |  |  ------------------
  |  |  |  |  182|      0|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2048|      0|    for (Py_ssize_t j = 0; j < n; j++) {
  ------------------
  |  Branch (2048:28): [True: 0, False: 0]
  ------------------
 2049|      0|        PyList_SET_ITEM(list, j, buffer[j]);
  ------------------
  |  |   50|      0|    PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2050|      0|    }
 2051|      0|    for (;;) {
 2052|      0|        PyObject *item = PyIter_Next(it);
 2053|      0|        if (item == NULL) {
  ------------------
  |  Branch (2053:13): [True: 0, False: 0]
  ------------------
 2054|      0|            if (PyErr_Occurred()) {
  ------------------
  |  Branch (2054:17): [True: 0, False: 0]
  ------------------
 2055|      0|                Py_DECREF(list);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2056|      0|                Py_DECREF(it);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2057|      0|                return NULL;
 2058|      0|            }
 2059|      0|            break;
 2060|      0|        }
 2061|      0|        if (_PyList_AppendTakeRef(list, item) < 0) {
  ------------------
  |  Branch (2061:13): [True: 0, False: 0]
  ------------------
 2062|      0|            Py_DECREF(list);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2063|      0|            Py_DECREF(it);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2064|      0|            return NULL;
 2065|      0|        }
 2066|      0|    }
 2067|      0|    Py_DECREF(it);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2068|      0|    PyObject *res = _PyList_AsTupleAndClear(list);
 2069|      0|    Py_DECREF(list);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2070|      0|    return res;
 2071|      0|fail:
 2072|      0|    Py_DECREF(it);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2073|      0|    while (n > 0) {
  ------------------
  |  Branch (2073:12): [True: 0, False: 0]
  ------------------
 2074|      0|        n--;
 2075|      0|        Py_DECREF(buffer[n]);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2076|      0|    }
 2077|       |    return NULL;
 2078|      0|}
PySequence_List:
 2082|     56|{
 2083|     56|    PyObject *result;  /* result list */
 2084|     56|    PyObject *rv;          /* return value from PyList_Extend */
 2085|       |
 2086|     56|    if (v == NULL) {
  ------------------
  |  Branch (2086:9): [True: 0, False: 56]
  ------------------
 2087|      0|        return null_error();
 2088|      0|    }
 2089|       |
 2090|     56|    result = PyList_New(0);
 2091|     56|    if (result == NULL)
  ------------------
  |  Branch (2091:9): [True: 0, False: 56]
  ------------------
 2092|      0|        return NULL;
 2093|       |
 2094|     56|    rv = _PyList_Extend((PyListObject *)result, v);
 2095|     56|    if (rv == NULL) {
  ------------------
  |  Branch (2095:9): [True: 0, False: 56]
  ------------------
 2096|      0|        Py_DECREF(result);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2097|      0|        return NULL;
 2098|      0|    }
 2099|     56|    Py_DECREF(rv);
  ------------------
  |  |  430|     56|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     56|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     56|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2100|     56|    return result;
 2101|     56|}
PySequence_Fast:
 2105|    395|{
 2106|    395|    PyObject *it;
 2107|       |
 2108|    395|    if (v == NULL) {
  ------------------
  |  Branch (2108:9): [True: 0, False: 395]
  ------------------
 2109|      0|        return null_error();
 2110|      0|    }
 2111|       |
 2112|    395|    if (PyList_CheckExact(v) || PyTuple_CheckExact(v)) {
  ------------------
  |  |   26|    395|#define PyList_CheckExact(op) Py_IS_TYPE((op), &PyList_Type)
  |  |  ------------------
  |  |  |  |  215|    790|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    395|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    395|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 79, False: 316]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  if (PyList_CheckExact(v) || PyTuple_CheckExact(v)) {
  ------------------
  |  |   28|    316|#define PyTuple_CheckExact(op) Py_IS_TYPE((op), &PyTuple_Type)
  |  |  ------------------
  |  |  |  |  215|    316|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    316|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    316|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 316, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2113|    395|        return Py_NewRef(v);
  ------------------
  |  |  550|    395|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    395|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    395|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2114|    395|    }
 2115|       |
 2116|      0|    it = PyObject_GetIter(v);
 2117|      0|    if (it == NULL) {
  ------------------
  |  Branch (2117:9): [True: 0, False: 0]
  ------------------
 2118|      0|        PyThreadState *tstate = _PyThreadState_GET();
 2119|      0|        if (_PyErr_ExceptionMatches(tstate, PyExc_TypeError)) {
  ------------------
  |  Branch (2119:13): [True: 0, False: 0]
  ------------------
 2120|      0|            _PyErr_SetString(tstate, PyExc_TypeError, m);
 2121|      0|        }
 2122|      0|        return NULL;
 2123|      0|    }
 2124|       |
 2125|      0|    v = PySequence_List(it);
 2126|      0|    Py_DECREF(it);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2127|       |
 2128|      0|    return v;
 2129|      0|}
PySequence_Contains:
 2241|    153|{
 2242|    153|    PySequenceMethods *sqm = Py_TYPE(seq)->tp_as_sequence;
  ------------------
  |  |  213|    153|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    153|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    153|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2243|    153|    if (sqm != NULL && sqm->sq_contains != NULL) {
  ------------------
  |  Branch (2243:9): [True: 153, False: 0]
  |  Branch (2243:24): [True: 153, False: 0]
  ------------------
 2244|    153|        int res = (*sqm->sq_contains)(seq, ob);
 2245|    153|        assert(_Py_CheckSlotResult(seq, "__contains__", res >= 0));
  ------------------
  |  Branch (2245:9): [True: 153, False: 0]
  ------------------
 2246|    153|        return res;
 2247|    153|    }
 2248|      0|    Py_ssize_t result = _PySequence_IterSearch(seq, ob, PY_ITERSEARCH_CONTAINS);
  ------------------
  |  |   29|      0|#define PY_ITERSEARCH_CONTAINS 3
  ------------------
 2249|      0|    return Py_SAFE_DOWNCAST(result, Py_ssize_t, int);
  ------------------
  |  |  247|      0|#  define Py_SAFE_DOWNCAST(VALUE, WIDE, NARROW) _Py_STATIC_CAST(NARROW, (VALUE))
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
 2250|    153|}
PyMapping_Check:
 2270|    208|{
 2271|    208|    return o && Py_TYPE(o)->tp_as_mapping &&
  ------------------
  |  |  213|    208|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    208|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    208|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2271:12): [True: 208, False: 0]
  |  Branch (2271:17): [True: 208, False: 0]
  ------------------
 2272|    208|        Py_TYPE(o)->tp_as_mapping->mp_subscript;
  ------------------
  |  |  213|    208|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    208|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    208|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2272:9): [True: 208, False: 0]
  ------------------
 2273|    208|}
PyMapping_Size:
 2277|      1|{
 2278|      1|    if (o == NULL) {
  ------------------
  |  Branch (2278:9): [True: 0, False: 1]
  ------------------
 2279|      0|        null_error();
 2280|      0|        return -1;
 2281|      0|    }
 2282|       |
 2283|      1|    PyMappingMethods *m = Py_TYPE(o)->tp_as_mapping;
  ------------------
  |  |  213|      1|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2284|      1|    if (m && m->mp_length) {
  ------------------
  |  Branch (2284:9): [True: 1, False: 0]
  |  Branch (2284:14): [True: 1, False: 0]
  ------------------
 2285|      1|        Py_ssize_t len = m->mp_length(o);
 2286|      1|        assert(_Py_CheckSlotResult(o, "__len__", len >= 0));
  ------------------
  |  Branch (2286:9): [True: 1, False: 0]
  ------------------
 2287|      1|        return len;
 2288|      1|    }
 2289|       |
 2290|      0|    if (Py_TYPE(o)->tp_as_sequence && Py_TYPE(o)->tp_as_sequence->sq_length) {
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  if (Py_TYPE(o)->tp_as_sequence && Py_TYPE(o)->tp_as_sequence->sq_length) {
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2290:9): [True: 0, False: 0]
  |  Branch (2290:39): [True: 0, False: 0]
  ------------------
 2291|      0|        type_error("%.200s is not a mapping", o);
 2292|      0|        return -1;
 2293|      0|    }
 2294|       |    /* PyMapping_Size() can be called from PyObject_Size(). */
 2295|      0|    type_error("object of type '%.200s' has no len()", o);
 2296|      0|    return -1;
 2297|      0|}
PyMapping_GetItemString:
 2309|      4|{
 2310|      4|    PyObject *okey, *r;
 2311|       |
 2312|      4|    if (key == NULL) {
  ------------------
  |  Branch (2312:9): [True: 0, False: 4]
  ------------------
 2313|      0|        return null_error();
 2314|      0|    }
 2315|       |
 2316|      4|    okey = PyUnicode_FromString(key);
 2317|      4|    if (okey == NULL)
  ------------------
  |  Branch (2317:9): [True: 0, False: 4]
  ------------------
 2318|      0|        return NULL;
 2319|      4|    r = PyObject_GetItem(o, okey);
 2320|      4|    Py_DECREF(okey);
  ------------------
  |  |  430|      4|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2321|      4|    return r;
 2322|      4|}
PyMapping_SetItemString:
 2344|      1|{
 2345|      1|    PyObject *okey;
 2346|      1|    int r;
 2347|       |
 2348|      1|    if (key == NULL) {
  ------------------
  |  Branch (2348:9): [True: 0, False: 1]
  ------------------
 2349|      0|        null_error();
 2350|      0|        return -1;
 2351|      0|    }
 2352|       |
 2353|      1|    okey = PyUnicode_FromString(key);
 2354|      1|    if (okey == NULL)
  ------------------
  |  Branch (2354:9): [True: 0, False: 1]
  ------------------
 2355|      0|        return -1;
 2356|      1|    r = PyObject_SetItem(o, okey, value);
 2357|      1|    Py_DECREF(okey);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2358|      1|    return r;
 2359|      1|}
PyMapping_Keys:
 2461|      3|{
 2462|      3|    if (o == NULL) {
  ------------------
  |  Branch (2462:9): [True: 0, False: 3]
  ------------------
 2463|      0|        return null_error();
 2464|      0|    }
 2465|      3|    if (PyDict_CheckExact(o)) {
  ------------------
  |  |   19|      3|#define PyDict_CheckExact(op) Py_IS_TYPE((op), &PyDict_Type)
  |  |  ------------------
  |  |  |  |  215|      3|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 3, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2466|      3|        return PyDict_Keys(o);
 2467|      3|    }
 2468|      0|    return method_output_as_list(o, &_Py_ID(keys));
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2469|      3|}
PyMapping_Items:
 2473|     29|{
 2474|     29|    if (o == NULL) {
  ------------------
  |  Branch (2474:9): [True: 0, False: 29]
  ------------------
 2475|      0|        return null_error();
 2476|      0|    }
 2477|     29|    if (PyDict_CheckExact(o)) {
  ------------------
  |  |   19|     29|#define PyDict_CheckExact(op) Py_IS_TYPE((op), &PyDict_Type)
  |  |  ------------------
  |  |  |  |  215|     29|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     29|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     29|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 29]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2478|      0|        return PyDict_Items(o);
 2479|      0|    }
 2480|     29|    return method_output_as_list(o, &_Py_ID(items));
  ------------------
  |  |  917|     29|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     29|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     29|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2481|     29|}
PyObject_IsInstance:
 2705|     47|{
 2706|     47|    PyThreadState *tstate = _PyThreadState_GET();
 2707|     47|    return object_recursive_isinstance(tstate, inst, cls);
 2708|     47|}
PyObject_IsSubclass:
 2793|    146|{
 2794|    146|    PyThreadState *tstate = _PyThreadState_GET();
 2795|    146|    return object_issubclass(tstate, derived, cls);
 2796|    146|}
_PyObject_RealIsSubclass:
 2807|     49|{
 2808|     49|    return recursive_issubclass(derived, cls);
 2809|     49|}
PyObject_GetIter:
 2814|    134|{
 2815|    134|    PyTypeObject *t = Py_TYPE(o);
  ------------------
  |  |  213|    134|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    134|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    134|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2816|    134|    getiterfunc f;
 2817|       |
 2818|    134|    f = t->tp_iter;
 2819|    134|    if (f == NULL) {
  ------------------
  |  Branch (2819:9): [True: 0, False: 134]
  ------------------
 2820|      0|        if (PySequence_Check(o))
  ------------------
  |  Branch (2820:13): [True: 0, False: 0]
  ------------------
 2821|      0|            return PySeqIter_New(o);
 2822|      0|        return type_error("'%.200s' object is not iterable", o);
 2823|      0|    }
 2824|    134|    else {
 2825|    134|        PyObject *res = (*f)(o);
 2826|    134|        if (res != NULL && !PyIter_Check(res)) {
  ------------------
  |  Branch (2826:13): [True: 134, False: 0]
  |  Branch (2826:28): [True: 0, False: 134]
  ------------------
 2827|      0|            PyErr_Format(PyExc_TypeError,
 2828|      0|                         "%T.__iter__() must return an iterator, not %T",
 2829|      0|                         o, res);
 2830|      0|            Py_SETREF(res, NULL);
  ------------------
  |  |  352|      0|    do { \
  |  |  353|      0|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  354|      0|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  355|      0|        *_tmp_dst_ptr = (src); \
  |  |  356|      0|        Py_DECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  357|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (357:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2831|      0|        }
 2832|    134|        return res;
 2833|    134|    }
 2834|    134|}
PyIter_Check:
 2857|    135|{
 2858|    135|    PyTypeObject *tp = Py_TYPE(obj);
  ------------------
  |  |  213|    135|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    135|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    135|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2859|    135|    return (tp->tp_iternext != NULL &&
  ------------------
  |  Branch (2859:13): [True: 135, False: 0]
  ------------------
 2860|    135|            tp->tp_iternext != &_PyObject_NextNotImplemented);
  ------------------
  |  Branch (2860:13): [True: 135, False: 0]
  ------------------
 2861|    135|}
PyIter_Next:
 2924|    697|{
 2925|    697|    PyObject *item;
 2926|    697|    (void)iternext(iter, &item);
 2927|    697|    return item;
 2928|    697|}
abstract.c:binary_op:
 1012|      9|{
 1013|      9|    PyObject *result = BINARY_OP1(v, w, op_slot, op_name);
  ------------------
  |  |  995|      9|#  define BINARY_OP1(v, w, op_slot, op_name) binary_op1(v, w, op_slot, op_name)
  ------------------
 1014|      9|    if (result == Py_NotImplemented) {
  ------------------
  |  |  640|      9|#  define Py_NotImplemented (&_Py_NotImplementedStruct)
  ------------------
  |  Branch (1014:9): [True: 0, False: 9]
  ------------------
 1015|      0|        Py_DECREF(result);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1016|      0|        return binop_type_error(v, w, op_name);
 1017|      0|    }
 1018|      9|    return result;
 1019|      9|}
abstract.c:binary_op1:
  945|     25|{
  946|     25|    binaryfunc slotv;
  947|     25|    if (Py_TYPE(v)->tp_as_number != NULL) {
  ------------------
  |  |  213|     25|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     25|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     25|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (947:9): [True: 23, False: 2]
  ------------------
  948|     23|        slotv = NB_BINOP(Py_TYPE(v)->tp_as_number, op_slot);
  ------------------
  |  |  925|     23|        (*(binaryfunc*)(& ((char*)nb_methods)[slot]))
  ------------------
  949|     23|    }
  950|      2|    else {
  951|      2|        slotv = NULL;
  952|      2|    }
  953|       |
  954|     25|    binaryfunc slotw;
  955|     25|    if (!Py_IS_TYPE(w, Py_TYPE(v)) && Py_TYPE(w)->tp_as_number != NULL) {
  ------------------
  |  |  215|     50|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|     25|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     25|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  if (!Py_IS_TYPE(w, Py_TYPE(v)) && Py_TYPE(w)->tp_as_number != NULL) {
  ------------------
  |  |  213|      1|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (955:9): [True: 1, False: 24]
  |  Branch (955:39): [True: 1, False: 0]
  ------------------
  956|      1|        slotw = NB_BINOP(Py_TYPE(w)->tp_as_number, op_slot);
  ------------------
  |  |  925|      1|        (*(binaryfunc*)(& ((char*)nb_methods)[slot]))
  ------------------
  957|      1|        if (slotw == slotv) {
  ------------------
  |  Branch (957:13): [True: 0, False: 1]
  ------------------
  958|      0|            slotw = NULL;
  959|      0|        }
  960|      1|    }
  961|     24|    else {
  962|     24|        slotw = NULL;
  963|     24|    }
  964|       |
  965|     25|    if (slotv) {
  ------------------
  |  Branch (965:9): [True: 13, False: 12]
  ------------------
  966|     13|        PyObject *x;
  967|     13|        if (slotw && PyType_IsSubtype(Py_TYPE(w), Py_TYPE(v))) {
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      if (slotw && PyType_IsSubtype(Py_TYPE(w), Py_TYPE(v))) {
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (967:13): [True: 0, False: 13]
  |  Branch (967:22): [True: 0, False: 0]
  ------------------
  968|      0|            x = slotw(v, w);
  969|      0|            if (x != Py_NotImplemented)
  ------------------
  |  |  640|      0|#  define Py_NotImplemented (&_Py_NotImplementedStruct)
  ------------------
  |  Branch (969:17): [True: 0, False: 0]
  ------------------
  970|      0|                return x;
  971|      0|            Py_DECREF(x); /* can't do it */
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  972|      0|            slotw = NULL;
  973|      0|        }
  974|     13|        x = slotv(v, w);
  975|     13|        assert(_Py_CheckSlotResult(v, op_name, x != NULL));
  ------------------
  |  Branch (975:9): [True: 13, False: 0]
  ------------------
  976|     13|        if (x != Py_NotImplemented) {
  ------------------
  |  |  640|     13|#  define Py_NotImplemented (&_Py_NotImplementedStruct)
  ------------------
  |  Branch (976:13): [True: 13, False: 0]
  ------------------
  977|     13|            return x;
  978|     13|        }
  979|      0|        Py_DECREF(x); /* can't do it */
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  980|      0|    }
  981|     12|    if (slotw) {
  ------------------
  |  Branch (981:9): [True: 1, False: 11]
  ------------------
  982|      1|        PyObject *x = slotw(v, w);
  983|      1|        assert(_Py_CheckSlotResult(w, op_name, x != NULL));
  ------------------
  |  Branch (983:9): [True: 1, False: 0]
  ------------------
  984|      1|        if (x != Py_NotImplemented) {
  ------------------
  |  |  640|      1|#  define Py_NotImplemented (&_Py_NotImplementedStruct)
  ------------------
  |  Branch (984:13): [True: 0, False: 1]
  ------------------
  985|      0|            return x;
  986|      0|        }
  987|      1|        Py_DECREF(x); /* can't do it */
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  988|      1|    }
  989|     12|    Py_RETURN_NOTIMPLEMENTED;
  ------------------
  |  |  648|     12|#  define Py_RETURN_NOTIMPLEMENTED return Py_NotImplemented
  |  |  ------------------
  |  |  |  |  640|     12|#  define Py_NotImplemented (&_Py_NotImplementedStruct)
  |  |  ------------------
  ------------------
  990|     12|}
abstract.c:sequence_repeat:
 1158|      1|{
 1159|      1|    Py_ssize_t count;
 1160|      1|    if (_PyIndex_Check(n)) {
  ------------------
  |  Branch (1160:9): [True: 1, False: 0]
  ------------------
 1161|      1|        count = PyNumber_AsSsize_t(n, PyExc_OverflowError);
 1162|      1|        if (count == -1 && PyErr_Occurred()) {
  ------------------
  |  Branch (1162:13): [True: 0, False: 1]
  |  Branch (1162:28): [True: 0, False: 0]
  ------------------
 1163|      0|            return NULL;
 1164|      0|        }
 1165|      1|    }
 1166|      0|    else {
 1167|      0|        return type_error("can't multiply sequence by "
 1168|      0|                          "non-int of type '%.200s'", n);
 1169|      0|    }
 1170|      1|    PyObject *res = (*repeatfunc)(seq, count);
 1171|      1|    assert(_Py_CheckSlotResult(seq, "*", res != NULL));
  ------------------
  |  Branch (1171:5): [True: 1, False: 0]
  ------------------
 1172|      1|    return res;
 1173|      1|}
abstract.c:binary_iop1:
 1233|      2|{
 1234|      2|    PyNumberMethods *mv = Py_TYPE(v)->tp_as_number;
  ------------------
  |  |  213|      2|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1235|      2|    if (mv != NULL) {
  ------------------
  |  Branch (1235:9): [True: 2, False: 0]
  ------------------
 1236|      2|        binaryfunc slot = NB_BINOP(mv, iop_slot);
  ------------------
  |  |  925|      2|        (*(binaryfunc*)(& ((char*)nb_methods)[slot]))
  ------------------
 1237|      2|        if (slot) {
  ------------------
  |  Branch (1237:13): [True: 0, False: 2]
  ------------------
 1238|      0|            PyObject *x = (slot)(v, w);
 1239|      0|            assert(_Py_CheckSlotResult(v, op_name, x != NULL));
  ------------------
  |  Branch (1239:13): [True: 0, False: 0]
  ------------------
 1240|      0|            if (x != Py_NotImplemented) {
  ------------------
  |  |  640|      0|#  define Py_NotImplemented (&_Py_NotImplementedStruct)
  ------------------
  |  Branch (1240:17): [True: 0, False: 0]
  ------------------
 1241|      0|                return x;
 1242|      0|            }
 1243|      0|            Py_DECREF(x);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1244|      0|        }
 1245|      2|    }
 1246|       |#ifdef NDEBUG
 1247|       |    return binary_op1(v, w, op_slot);
 1248|       |#else
 1249|      2|    return binary_op1(v, w, op_slot, op_name);
 1250|      2|#endif
 1251|      2|}
abstract.c:method_output_as_list:
 2434|     29|{
 2435|     29|    PyObject *it, *result, *meth_output;
 2436|       |
 2437|     29|    assert(o != NULL);
  ------------------
  |  Branch (2437:5): [True: 29, False: 0]
  ------------------
 2438|     29|    meth_output = PyObject_CallMethodNoArgs(o, meth);
 2439|     29|    if (meth_output == NULL || PyList_CheckExact(meth_output)) {
  ------------------
  |  |   26|     29|#define PyList_CheckExact(op) Py_IS_TYPE((op), &PyList_Type)
  |  |  ------------------
  |  |  |  |  215|     29|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     29|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     29|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 29]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2439:9): [True: 0, False: 29]
  ------------------
 2440|      0|        return meth_output;
 2441|      0|    }
 2442|     29|    it = PyObject_GetIter(meth_output);
 2443|     29|    if (it == NULL) {
  ------------------
  |  Branch (2443:9): [True: 0, False: 29]
  ------------------
 2444|      0|        PyThreadState *tstate = _PyThreadState_GET();
 2445|      0|        if (_PyErr_ExceptionMatches(tstate, PyExc_TypeError)) {
  ------------------
  |  Branch (2445:13): [True: 0, False: 0]
  ------------------
 2446|      0|            _PyErr_Format(tstate, PyExc_TypeError,
 2447|      0|                          "%T.%U() must return an iterable, not %T",
 2448|      0|                          o, meth, meth_output);
 2449|      0|        }
 2450|      0|        Py_DECREF(meth_output);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2451|      0|        return NULL;
 2452|      0|    }
 2453|     29|    Py_DECREF(meth_output);
  ------------------
  |  |  430|     29|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     29|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     29|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2454|     29|    result = PySequence_List(it);
 2455|     29|    Py_DECREF(it);
  ------------------
  |  |  430|     29|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     29|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     29|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2456|     29|    return result;
 2457|     29|}
abstract.c:object_recursive_isinstance:
 2640|     47|{
 2641|       |    /* Quick test for an exact match */
 2642|     47|    if (Py_IS_TYPE(inst, (PyTypeObject *)cls)) {
  ------------------
  |  |  215|     47|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|     47|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     47|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 21, False: 26]
  |  |  ------------------
  ------------------
 2643|     21|        return 1;
 2644|     21|    }
 2645|       |
 2646|       |    /* We know what type's __instancecheck__ does. */
 2647|     26|    if (PyType_CheckExact(cls)) {
  ------------------
  |  |  776|     26|#  define PyType_CheckExact(op) PyType_CheckExact(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     26|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     26|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (776:33): [True: 26, False: 0]
  |  |  ------------------
  ------------------
 2648|     26|        return object_isinstance(inst, cls);
 2649|     26|    }
 2650|       |
 2651|      0|    if (_PyUnion_Check(cls)) {
  ------------------
  |  |   15|      0|#define _PyUnion_Check(op) Py_IS_TYPE((op), &_PyUnion_Type)
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2652|      0|        cls = _Py_union_args(cls);
 2653|      0|    }
 2654|       |
 2655|      0|    if (PyTuple_Check(cls)) {
  ------------------
  |  |   27|      0|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TUPLE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2656|       |        /* Not a general sequence -- that opens up the road to
 2657|       |           recursion and stack overflow. */
 2658|      0|        if (_Py_EnterRecursiveCallTstate(tstate, " in __instancecheck__")) {
  ------------------
  |  Branch (2658:13): [True: 0, False: 0]
  ------------------
 2659|      0|            return -1;
 2660|      0|        }
 2661|      0|        Py_ssize_t n = PyTuple_GET_SIZE(cls);
  ------------------
  |  |   27|      0|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2662|      0|        int r = 0;
 2663|      0|        for (Py_ssize_t i = 0; i < n; ++i) {
  ------------------
  |  Branch (2663:32): [True: 0, False: 0]
  ------------------
 2664|      0|            PyObject *item = PyTuple_GET_ITEM(cls, i);
  ------------------
  |  |   29|      0|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|      0|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2664:30): [True: 0, False: 0]
  ------------------
 2665|      0|            r = object_recursive_isinstance(tstate, inst, item);
 2666|      0|            if (r != 0) {
  ------------------
  |  Branch (2666:17): [True: 0, False: 0]
  ------------------
 2667|       |                /* either found it, or got an error */
 2668|      0|                break;
 2669|      0|            }
 2670|      0|        }
 2671|      0|        _Py_LeaveRecursiveCallTstate(tstate);
 2672|      0|        return r;
 2673|      0|    }
 2674|       |
 2675|      0|    PyObject *checker = _PyObject_LookupSpecial(cls, &_Py_ID(__instancecheck__));
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2676|      0|    if (checker != NULL) {
  ------------------
  |  Branch (2676:9): [True: 0, False: 0]
  ------------------
 2677|      0|        if (_Py_EnterRecursiveCallTstate(tstate, " in __instancecheck__")) {
  ------------------
  |  Branch (2677:13): [True: 0, False: 0]
  ------------------
 2678|      0|            Py_DECREF(checker);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2679|      0|            return -1;
 2680|      0|        }
 2681|       |
 2682|      0|        PyObject *res = PyObject_CallOneArg(checker, inst);
 2683|      0|        _Py_LeaveRecursiveCallTstate(tstate);
 2684|      0|        Py_DECREF(checker);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2685|       |
 2686|      0|        if (res == NULL) {
  ------------------
  |  Branch (2686:13): [True: 0, False: 0]
  ------------------
 2687|      0|            return -1;
 2688|      0|        }
 2689|      0|        int ok = PyObject_IsTrue(res);
 2690|      0|        Py_DECREF(res);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2691|       |
 2692|      0|        return ok;
 2693|      0|    }
 2694|      0|    else if (_PyErr_Occurred(tstate)) {
  ------------------
  |  Branch (2694:14): [True: 0, False: 0]
  ------------------
 2695|      0|        return -1;
 2696|      0|    }
 2697|       |
 2698|       |    /* cls has no __instancecheck__() method */
 2699|      0|    return object_isinstance(inst, cls);
 2700|      0|}
abstract.c:object_issubclass:
 2733|    146|{
 2734|    146|    PyObject *checker;
 2735|       |
 2736|       |    /* We know what type's __subclasscheck__ does. */
 2737|    146|    if (PyType_CheckExact(cls)) {
  ------------------
  |  |  776|    146|#  define PyType_CheckExact(op) PyType_CheckExact(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    146|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    146|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (776:33): [True: 112, False: 34]
  |  |  ------------------
  ------------------
 2738|       |        /* Quick test for an exact match */
 2739|    112|        if (derived == cls)
  ------------------
  |  Branch (2739:13): [True: 79, False: 33]
  ------------------
 2740|     79|            return 1;
 2741|     33|        return recursive_issubclass(derived, cls);
 2742|    112|    }
 2743|       |
 2744|     34|    if (_PyUnion_Check(cls)) {
  ------------------
  |  |   15|     34|#define _PyUnion_Check(op) Py_IS_TYPE((op), &_PyUnion_Type)
  |  |  ------------------
  |  |  |  |  215|     34|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     34|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     34|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 34]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2745|      0|        cls = _Py_union_args(cls);
 2746|      0|    }
 2747|       |
 2748|     34|    if (PyTuple_Check(cls)) {
  ------------------
  |  |   27|     34|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TUPLE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     34|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 0, False: 34]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2749|       |
 2750|      0|        if (_Py_EnterRecursiveCallTstate(tstate, " in __subclasscheck__")) {
  ------------------
  |  Branch (2750:13): [True: 0, False: 0]
  ------------------
 2751|      0|            return -1;
 2752|      0|        }
 2753|      0|        Py_ssize_t n = PyTuple_GET_SIZE(cls);
  ------------------
  |  |   27|      0|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2754|      0|        int r = 0;
 2755|      0|        for (Py_ssize_t i = 0; i < n; ++i) {
  ------------------
  |  Branch (2755:32): [True: 0, False: 0]
  ------------------
 2756|      0|            PyObject *item = PyTuple_GET_ITEM(cls, i);
  ------------------
  |  |   29|      0|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|      0|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2756:30): [True: 0, False: 0]
  ------------------
 2757|      0|            r = object_issubclass(tstate, derived, item);
 2758|      0|            if (r != 0)
  ------------------
  |  Branch (2758:17): [True: 0, False: 0]
  ------------------
 2759|       |                /* either found it, or got an error */
 2760|      0|                break;
 2761|      0|        }
 2762|      0|        _Py_LeaveRecursiveCallTstate(tstate);
 2763|      0|        return r;
 2764|      0|    }
 2765|       |
 2766|     34|    checker = _PyObject_LookupSpecial(cls, &_Py_ID(__subclasscheck__));
  ------------------
  |  |  917|     34|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     34|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     34|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2767|     34|    if (checker != NULL) {
  ------------------
  |  Branch (2767:9): [True: 34, False: 0]
  ------------------
 2768|     34|        int ok = -1;
 2769|     34|        if (_Py_EnterRecursiveCallTstate(tstate, " in __subclasscheck__")) {
  ------------------
  |  Branch (2769:13): [True: 0, False: 34]
  ------------------
 2770|      0|            Py_DECREF(checker);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2771|      0|            return ok;
 2772|      0|        }
 2773|     34|        PyObject *res = PyObject_CallOneArg(checker, derived);
 2774|     34|        _Py_LeaveRecursiveCallTstate(tstate);
 2775|     34|        Py_DECREF(checker);
  ------------------
  |  |  430|     34|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     34|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     34|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2776|     34|        if (res != NULL) {
  ------------------
  |  Branch (2776:13): [True: 34, False: 0]
  ------------------
 2777|     34|            ok = PyObject_IsTrue(res);
 2778|     34|            Py_DECREF(res);
  ------------------
  |  |  430|     34|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     34|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     34|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2779|     34|        }
 2780|     34|        return ok;
 2781|     34|    }
 2782|      0|    else if (_PyErr_Occurred(tstate)) {
  ------------------
  |  Branch (2782:14): [True: 0, False: 0]
  ------------------
 2783|      0|        return -1;
 2784|      0|    }
 2785|       |
 2786|       |    /* Can be reached when infinite recursion happens. */
 2787|      0|    return recursive_issubclass(derived, cls);
 2788|     34|}
abstract.c:object_isinstance:
 2604|     26|{
 2605|     26|    PyObject *icls;
 2606|     26|    int retval;
 2607|     26|    if (PyType_Check(cls)) {
  ------------------
  |  |  766|     26|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     26|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     26|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (766:28): [True: 26, False: 0]
  |  |  ------------------
  ------------------
 2608|     26|        retval = PyObject_TypeCheck(inst, (PyTypeObject *)cls);
  ------------------
  |  |  378|     26|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|     26|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     26|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2609|     26|        if (retval == 0) {
  ------------------
  |  Branch (2609:13): [True: 26, False: 0]
  ------------------
 2610|     26|            retval = PyObject_GetOptionalAttr(inst, &_Py_ID(__class__), &icls);
  ------------------
  |  |  917|     26|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     26|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     26|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2611|     26|            if (icls != NULL) {
  ------------------
  |  Branch (2611:17): [True: 26, False: 0]
  ------------------
 2612|     26|                if (icls != (PyObject *)(Py_TYPE(inst)) && PyType_Check(icls)) {
  ------------------
  |  |  213|     26|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     26|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     26|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                              if (icls != (PyObject *)(Py_TYPE(inst)) && PyType_Check(icls)) {
  ------------------
  |  |  766|      0|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (766:28): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2612:21): [True: 0, False: 26]
  ------------------
 2613|      0|                    retval = PyType_IsSubtype(
 2614|      0|                        (PyTypeObject *)icls,
 2615|      0|                        (PyTypeObject *)cls);
 2616|      0|                }
 2617|     26|                else {
 2618|     26|                    retval = 0;
 2619|     26|                }
 2620|     26|                Py_DECREF(icls);
  ------------------
  |  |  430|     26|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     26|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     26|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2621|     26|            }
 2622|     26|        }
 2623|     26|    }
 2624|      0|    else {
 2625|      0|        if (!check_class(cls,
  ------------------
  |  Branch (2625:13): [True: 0, False: 0]
  ------------------
 2626|      0|            "isinstance() arg 2 must be a type, a tuple of types, or a union"))
 2627|      0|            return -1;
 2628|      0|        retval = PyObject_GetOptionalAttr(inst, &_Py_ID(__class__), &icls);
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2629|      0|        if (icls != NULL) {
  ------------------
  |  Branch (2629:13): [True: 0, False: 0]
  ------------------
 2630|      0|            retval = abstract_issubclass(icls, cls);
 2631|      0|            Py_DECREF(icls);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2632|      0|        }
 2633|      0|    }
 2634|       |
 2635|     26|    return retval;
 2636|     26|}
abstract.c:recursive_issubclass:
 2713|     82|{
 2714|     82|    if (PyType_Check(cls) && PyType_Check(derived)) {
  ------------------
  |  |  766|    164|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     82|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     82|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (766:28): [True: 82, False: 0]
  |  |  ------------------
  ------------------
                  if (PyType_Check(cls) && PyType_Check(derived)) {
  ------------------
  |  |  766|     82|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     82|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     82|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (766:28): [True: 82, False: 0]
  |  |  ------------------
  ------------------
 2715|       |        /* Fast path (non-recursive) */
 2716|     82|        return PyType_IsSubtype((PyTypeObject *)derived, (PyTypeObject *)cls);
 2717|     82|    }
 2718|      0|    if (!check_class(derived,
  ------------------
  |  Branch (2718:9): [True: 0, False: 0]
  ------------------
 2719|      0|                     "issubclass() arg 1 must be a class"))
 2720|      0|        return -1;
 2721|       |
 2722|      0|    if (!_PyUnion_Check(cls) && !check_class(cls,
  ------------------
  |  |   15|      0|#define _PyUnion_Check(op) Py_IS_TYPE((op), &_PyUnion_Type)
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2722:9): [True: 0, False: 0]
  |  Branch (2722:33): [True: 0, False: 0]
  ------------------
 2723|      0|                            "issubclass() arg 2 must be a class,"
 2724|      0|                            " a tuple of classes, or a union")) {
 2725|      0|        return -1;
 2726|      0|    }
 2727|       |
 2728|      0|    return abstract_issubclass(derived, cls);
 2729|      0|}
abstract.c:iternext:
 2874|    697|{
 2875|    697|    iternextfunc tp_iternext = Py_TYPE(iter)->tp_iternext;
  ------------------
  |  |  213|    697|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    697|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    697|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2876|    697|    if ((*item = tp_iternext(iter))) {
  ------------------
  |  Branch (2876:9): [True: 651, False: 46]
  ------------------
 2877|    651|        return 1;
 2878|    651|    }
 2879|       |
 2880|     46|    PyThreadState *tstate = _PyThreadState_GET();
 2881|       |    /* When the iterator is exhausted it must return NULL;
 2882|       |     * a StopIteration exception may or may not be set. */
 2883|     46|    if (!_PyErr_Occurred(tstate)) {
  ------------------
  |  Branch (2883:9): [True: 46, False: 0]
  ------------------
 2884|     46|        return 0;
 2885|     46|    }
 2886|      0|    if (_PyErr_ExceptionMatches(tstate, PyExc_StopIteration)) {
  ------------------
  |  Branch (2886:9): [True: 0, False: 0]
  ------------------
 2887|      0|        _PyErr_Clear(tstate);
 2888|      0|        return 0;
 2889|      0|    }
 2890|       |
 2891|       |    /* Error case: an exception (different than StopIteration) is set. */
 2892|      0|    return -1;
 2893|      0|}

PyBool_FromLong:
   22|  1.59k|{
   23|  1.59k|    return ok ? Py_True : Py_False;
  ------------------
  |  |   26|  1.59k|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  ------------------
  |  |  |  |  171|    179|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    179|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  return ok ? Py_True : Py_False;
  ------------------
  |  |   25|  1.59k|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  ------------------
  |  |  |  |  171|  1.41k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.41k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (23:12): [True: 179, False: 1.41k]
  ------------------
   24|  1.59k|}
boolobject.c:bool_vectorcall:
   47|      1|{
   48|      1|    long ok = 0;
   49|      1|    if (!_PyArg_NoKwnames("bool", kwnames)) {
  ------------------
  |  |   15|      1|    ((kwnames) == NULL || _PyArg_NoKwnames((funcname), (kwnames)))
  |  |  ------------------
  |  |  |  Branch (15:6): [True: 1, False: 0]
  |  |  |  Branch (15:27): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   50|      0|        return NULL;
   51|      0|    }
   52|       |
   53|      1|    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
  ------------------
  |  |   37|      1|#define PyVectorcall_NARGS(n) _PyVectorcall_NARGS(n)
  ------------------
   54|      1|    if (!_PyArg_CheckPositional("bool", nargs, 0, 1)) {
  ------------------
  |  |   31|      1|    (((min) <= (nargs) && (nargs) <= (max)) \
  |  |  ------------------
  |  |  |  Branch (31:7): [True: 1, False: 0]
  |  |  |  Branch (31:27): [True: 1, False: 0]
  |  |  ------------------
  |  |   32|      1|     || _PyArg_CheckPositional((funcname), (nargs), (min), (max)))
  |  |  ------------------
  |  |  |  Branch (32:9): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   55|      0|        return NULL;
   56|      0|    }
   57|       |
   58|      1|    assert(PyType_Check(type));
  ------------------
  |  Branch (58:5): [True: 1, False: 0]
  ------------------
   59|      1|    if (nargs) {
  ------------------
  |  Branch (59:9): [True: 1, False: 0]
  ------------------
   60|      1|        ok = PyObject_IsTrue(args[0]);
   61|      1|        if (ok < 0) {
  ------------------
  |  Branch (61:13): [True: 0, False: 1]
  ------------------
   62|      0|            return NULL;
   63|      0|        }
   64|      1|    }
   65|      1|    return PyBool_FromLong(ok);
   66|      1|}

PyByteArray_FromStringAndSize:
  155|     81|{
  156|     81|    PyByteArrayObject *new;
  157|       |
  158|     81|    if (size < 0) {
  ------------------
  |  Branch (158:9): [True: 0, False: 81]
  ------------------
  159|      0|        PyErr_SetString(PyExc_SystemError,
  160|      0|            "Negative size passed to PyByteArray_FromStringAndSize");
  161|      0|        return NULL;
  162|      0|    }
  163|       |
  164|     81|    new = PyObject_New(PyByteArrayObject, &PyByteArray_Type);
  ------------------
  |  |  130|     81|#define PyObject_New(type, typeobj) ((type *)_PyObject_New(typeobj))
  ------------------
  165|     81|    if (new == NULL) {
  ------------------
  |  Branch (165:9): [True: 0, False: 81]
  ------------------
  166|      0|        return NULL;
  167|      0|    }
  168|       |
  169|       |    /* Fill values used in bytearray_dealloc.
  170|       |
  171|       |       In an optimized build the memory isn't zeroed and ob_exports would be
  172|       |       uninitialized when when PyBytes_FromStringAndSize errored leading to
  173|       |       intermittent test failures. */
  174|     81|    new->ob_exports = 0;
  175|       |
  176|       |    /* Optimization: size=0 bytearray should not allocate space
  177|       |
  178|       |       PyBytes_FromStringAndSize returns the empty bytes global when size=0 so
  179|       |       no allocation occurs. */
  180|     81|    new->ob_bytes_object = PyBytes_FromStringAndSize(NULL, size);
  181|     81|    if (new->ob_bytes_object == NULL) {
  ------------------
  |  Branch (181:9): [True: 0, False: 81]
  ------------------
  182|      0|        Py_DECREF(new);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  183|      0|        return NULL;
  184|      0|    }
  185|     81|    bytearray_reinit_from_bytes(new, size, size);
  186|     81|    if (bytes != NULL && size > 0) {
  ------------------
  |  Branch (186:9): [True: 0, False: 81]
  |  Branch (186:26): [True: 0, False: 0]
  ------------------
  187|      0|        memcpy(new->ob_bytes, bytes, size);
  188|      0|    }
  189|       |
  190|     81|    return (PyObject *)new;
  191|     81|}
bytearrayobject.c:bytearray_reinit_from_bytes:
   48|     82|                            Py_ssize_t alloc) {
   49|     82|    self->ob_bytes = self->ob_start = PyBytes_AS_STRING(self->ob_bytes_object);
  ------------------
  |  |   27|     82|#define PyBytes_AS_STRING(op) PyBytes_AS_STRING(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     82|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     82|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   50|     82|    Py_SET_SIZE(self, size);
  ------------------
  |  |  216|     82|#  define Py_SET_SIZE(ob, size) _Py_SET_SIZE_impl(_PyVarObject_CAST(ob), (size))
  |  |  ------------------
  |  |  |  |  182|     82|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     82|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   51|     82|    FT_ATOMIC_STORE_SSIZE_RELAXED(self->ob_alloc, alloc);
  ------------------
  |  |  194|     82|#define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) value = new_value
  ------------------
   52|     82|}
bytearrayobject.c:bytearray_dealloc:
 1208|     82|{
 1209|     82|    PyByteArrayObject *self = _PyByteArray_CAST(op);
  ------------------
  |  |   22|     82|    (assert(PyByteArray_Check(op)), _Py_CAST(PyByteArrayObject*, op))
  |  |  ------------------
  |  |  |  |   37|     82|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (1209:31): [True: 82, False: 0]
  ------------------
 1210|     82|    if (self->ob_exports > 0) {
  ------------------
  |  Branch (1210:9): [True: 0, False: 82]
  ------------------
 1211|      0|        PyErr_SetString(PyExc_SystemError,
 1212|      0|                        "deallocated bytearray object has exported buffers");
 1213|      0|        PyErr_Print();
 1214|      0|    }
 1215|     82|    Py_XDECREF(self->ob_bytes_object);
  ------------------
  |  |  524|     82|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     82|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     82|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1216|     82|    Py_TYPE(self)->tp_free((PyObject *)self);
  ------------------
  |  |  213|     82|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     82|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     82|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1217|     82|}
bytearrayobject.c:bytearray___init___impl:
  918|      1|{
  919|      1|    Py_ssize_t count;
  920|      1|    PyObject *it;
  921|      1|    PyObject *(*iternext)(PyObject *);
  922|       |
  923|       |    /* First __init__; set ob_bytes_object so ob_bytes is always non-null. */
  924|      1|    if (self->ob_bytes_object == NULL) {
  ------------------
  |  Branch (924:9): [True: 1, False: 0]
  ------------------
  925|      1|        self->ob_bytes_object = Py_GetConstant(Py_CONSTANT_EMPTY_BYTES);
  ------------------
  |  |  598|      1|#define Py_CONSTANT_EMPTY_BYTES 8
  ------------------
  926|      1|        bytearray_reinit_from_bytes(self, 0, 0);
  927|      1|        self->ob_exports = 0;
  928|      1|    }
  929|       |
  930|      1|    if (Py_SIZE(self) != 0) {
  ------------------
  |  |  214|      1|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (930:9): [True: 0, False: 1]
  ------------------
  931|       |        /* Empty previous contents (yes, do this first of all!) */
  932|      0|        if (PyByteArray_Resize((PyObject *)self, 0) < 0)
  ------------------
  |  Branch (932:13): [True: 0, False: 0]
  ------------------
  933|      0|            return -1;
  934|      0|    }
  935|       |
  936|       |    /* Should be caused by first init or the resize to 0. */
  937|      1|    assert(self->ob_bytes_object == Py_GetConstantBorrowed(Py_CONSTANT_EMPTY_BYTES));
  ------------------
  |  Branch (937:5): [True: 1, False: 0]
  ------------------
  938|      1|    assert(self->ob_exports == 0);
  ------------------
  |  Branch (938:5): [True: 1, False: 0]
  ------------------
  939|       |
  940|       |    /* Make a quick exit if no first argument */
  941|      1|    if (arg == NULL) {
  ------------------
  |  Branch (941:9): [True: 1, False: 0]
  ------------------
  942|      1|        if (encoding != NULL || errors != NULL) {
  ------------------
  |  Branch (942:13): [True: 0, False: 1]
  |  Branch (942:33): [True: 0, False: 1]
  ------------------
  943|      0|            PyErr_SetString(PyExc_TypeError,
  944|      0|                            encoding != NULL ?
  ------------------
  |  Branch (944:29): [True: 0, False: 0]
  ------------------
  945|      0|                            "encoding without a string argument" :
  946|      0|                            "errors without a string argument");
  947|      0|            return -1;
  948|      0|        }
  949|      1|        return 0;
  950|      1|    }
  951|       |
  952|      0|    if (PyUnicode_Check(arg)) {
  ------------------
  |  |  103|      0|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  953|       |        /* Encode via the codec registry */
  954|      0|        PyObject *encoded, *new;
  955|      0|        if (encoding == NULL) {
  ------------------
  |  Branch (955:13): [True: 0, False: 0]
  ------------------
  956|      0|            PyErr_SetString(PyExc_TypeError,
  957|      0|                            "string argument without an encoding");
  958|      0|            return -1;
  959|      0|        }
  960|      0|        encoded = PyUnicode_AsEncodedString(arg, encoding, errors);
  961|      0|        if (encoded == NULL) {
  ------------------
  |  Branch (961:13): [True: 0, False: 0]
  ------------------
  962|      0|            return -1;
  963|      0|        }
  964|      0|        assert(PyBytes_Check(encoded));
  ------------------
  |  Branch (964:9): [True: 0, False: 0]
  ------------------
  965|       |
  966|       |        /* Most encodes return a new unique bytes, just use it as buffer. */
  967|      0|        if (_PyObject_IsUniquelyReferenced(encoded)
  ------------------
  |  Branch (967:13): [True: 0, False: 0]
  ------------------
  968|      0|            && PyBytes_CheckExact(encoded))
  ------------------
  |  |   29|      0|#define PyBytes_CheckExact(op) Py_IS_TYPE((op), &PyBytes_Type)
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  969|      0|        {
  970|      0|            Py_ssize_t size = Py_SIZE(encoded);
  ------------------
  |  |  214|      0|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  971|      0|            self->ob_bytes_object = encoded;
  972|      0|            bytearray_reinit_from_bytes(self, size, size);
  973|      0|            return 0;
  974|      0|        }
  975|      0|        new = bytearray_iconcat((PyObject*)self, encoded);
  976|      0|        Py_DECREF(encoded);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  977|      0|        if (new == NULL)
  ------------------
  |  Branch (977:13): [True: 0, False: 0]
  ------------------
  978|      0|            return -1;
  979|      0|        Py_DECREF(new);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  980|      0|        return 0;
  981|      0|    }
  982|       |
  983|       |    /* If it's not unicode, there can't be encoding or errors */
  984|      0|    if (encoding != NULL || errors != NULL) {
  ------------------
  |  Branch (984:9): [True: 0, False: 0]
  |  Branch (984:29): [True: 0, False: 0]
  ------------------
  985|      0|        PyErr_SetString(PyExc_TypeError,
  986|      0|                        encoding != NULL ?
  ------------------
  |  Branch (986:25): [True: 0, False: 0]
  ------------------
  987|      0|                        "encoding without a string argument" :
  988|      0|                        "errors without a string argument");
  989|      0|        return -1;
  990|      0|    }
  991|       |
  992|       |    /* Is it an int? */
  993|      0|    if (_PyIndex_Check(arg)) {
  ------------------
  |  Branch (993:9): [True: 0, False: 0]
  ------------------
  994|      0|        count = PyNumber_AsSsize_t(arg, PyExc_OverflowError);
  995|      0|        if (count == -1 && PyErr_Occurred()) {
  ------------------
  |  Branch (995:13): [True: 0, False: 0]
  |  Branch (995:28): [True: 0, False: 0]
  ------------------
  996|      0|            if (!PyErr_ExceptionMatches(PyExc_TypeError))
  ------------------
  |  Branch (996:17): [True: 0, False: 0]
  ------------------
  997|      0|                return -1;
  998|      0|            PyErr_Clear();  /* fall through */
  999|      0|        }
 1000|      0|        else {
 1001|      0|            if (count < 0) {
  ------------------
  |  Branch (1001:17): [True: 0, False: 0]
  ------------------
 1002|      0|                PyErr_SetString(PyExc_ValueError, "negative count");
 1003|      0|                return -1;
 1004|      0|            }
 1005|      0|            if (count > 0) {
  ------------------
  |  Branch (1005:17): [True: 0, False: 0]
  ------------------
 1006|      0|                if (PyByteArray_Resize((PyObject *)self, count))
  ------------------
  |  Branch (1006:21): [True: 0, False: 0]
  ------------------
 1007|      0|                    return -1;
 1008|      0|                memset(PyByteArray_AS_STRING(self), 0, count);
  ------------------
  |  |   28|      0|#define PyByteArray_AS_STRING(self) PyByteArray_AS_STRING(_PyObject_CAST(self))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1009|      0|            }
 1010|      0|            return 0;
 1011|      0|        }
 1012|      0|    }
 1013|       |
 1014|       |    /* Use the buffer API */
 1015|      0|    if (PyObject_CheckBuffer(arg)) {
  ------------------
  |  Branch (1015:9): [True: 0, False: 0]
  ------------------
 1016|      0|        Py_ssize_t size;
 1017|      0|        Py_buffer view;
 1018|      0|        if (PyObject_GetBuffer(arg, &view, PyBUF_FULL_RO) < 0)
  ------------------
  |  |  134|      0|#define PyBUF_FULL_RO (PyBUF_INDIRECT | PyBUF_FORMAT)
  |  |  ------------------
  |  |  |  |  122|      0|#define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)
  |  |  |  |  ------------------
  |  |  |  |  |  |  118|      0|#define PyBUF_STRIDES (0x0010 | PyBUF_ND)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  117|      0|#define PyBUF_ND 0x0008
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define PyBUF_FULL_RO (PyBUF_INDIRECT | PyBUF_FORMAT)
  |  |  ------------------
  |  |  |  |  116|      0|#define PyBUF_FORMAT 0x0004
  |  |  ------------------
  ------------------
  |  Branch (1018:13): [True: 0, False: 0]
  ------------------
 1019|      0|            return -1;
 1020|      0|        size = view.len;
 1021|      0|        if (PyByteArray_Resize((PyObject *)self, size) < 0) goto fail;
  ------------------
  |  Branch (1021:13): [True: 0, False: 0]
  ------------------
 1022|      0|        if (PyBuffer_ToContiguous(PyByteArray_AS_STRING(self),
  ------------------
  |  |   28|      0|#define PyByteArray_AS_STRING(self) PyByteArray_AS_STRING(_PyObject_CAST(self))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1022:13): [True: 0, False: 0]
  ------------------
 1023|      0|            &view, size, 'C') < 0)
 1024|      0|            goto fail;
 1025|      0|        PyBuffer_Release(&view);
 1026|      0|        return 0;
 1027|      0|    fail:
 1028|      0|        PyBuffer_Release(&view);
 1029|      0|        return -1;
 1030|      0|    }
 1031|       |
 1032|      0|    if (PyList_CheckExact(arg) || PyTuple_CheckExact(arg)) {
  ------------------
  |  |   26|      0|#define PyList_CheckExact(op) Py_IS_TYPE((op), &PyList_Type)
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  if (PyList_CheckExact(arg) || PyTuple_CheckExact(arg)) {
  ------------------
  |  |   28|      0|#define PyTuple_CheckExact(op) Py_IS_TYPE((op), &PyTuple_Type)
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1033|      0|        Py_ssize_t size = PySequence_Fast_GET_SIZE(arg);
  ------------------
  |  |   92|      0|    (PyList_Check(o) ? PyList_GET_SIZE(o) : PyTuple_GET_SIZE(o))
  |  |  ------------------
  |  |  |  |   25|      0|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LIST_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (760:41): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (PyList_Check(o) ? PyList_GET_SIZE(o) : PyTuple_GET_SIZE(o))
  |  |  ------------------
  |  |  |  |   38|      0|#define PyList_GET_SIZE(op) PyList_GET_SIZE(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (PyList_Check(o) ? PyList_GET_SIZE(o) : PyTuple_GET_SIZE(o))
  |  |  ------------------
  |  |  |  |   27|      0|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1034|      0|        if (PyByteArray_Resize((PyObject *)self, size) < 0) {
  ------------------
  |  Branch (1034:13): [True: 0, False: 0]
  ------------------
 1035|      0|            return -1;
 1036|      0|        }
 1037|      0|        PyObject **items = PySequence_Fast_ITEMS(arg);
  ------------------
  |  |  102|      0|    (PyList_Check(sf) ? ((PyListObject *)(sf))->ob_item \
  |  |  ------------------
  |  |  |  |   25|      0|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LIST_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (760:41): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|      0|                      : ((PyTupleObject *)(sf))->ob_item)
  ------------------
 1038|      0|        char *s = PyByteArray_AS_STRING(self);
  ------------------
  |  |   28|      0|#define PyByteArray_AS_STRING(self) PyByteArray_AS_STRING(_PyObject_CAST(self))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1039|      0|        for (Py_ssize_t i = 0; i < size; i++) {
  ------------------
  |  Branch (1039:32): [True: 0, False: 0]
  ------------------
 1040|      0|            int value;
 1041|      0|            if (!PyLong_CheckExact(items[i])) {
  ------------------
  |  |   14|      0|#define PyLong_CheckExact(op) Py_IS_TYPE((op), &PyLong_Type)
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1041:17): [True: 0, False: 0]
  ------------------
 1042|       |                /* Resize to 0 and go through slowpath */
 1043|      0|                if (Py_SIZE(self) != 0) {
  ------------------
  |  |  214|      0|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1043:21): [True: 0, False: 0]
  ------------------
 1044|      0|                   if (PyByteArray_Resize((PyObject *)self, 0) < 0) {
  ------------------
  |  Branch (1044:24): [True: 0, False: 0]
  ------------------
 1045|      0|                       return -1;
 1046|      0|                   }
 1047|      0|                }
 1048|      0|                goto slowpath;
 1049|      0|            }
 1050|      0|            int rc = _getbytevalue(items[i], &value);
 1051|      0|            if (!rc) {
  ------------------
  |  Branch (1051:17): [True: 0, False: 0]
  ------------------
 1052|      0|                return -1;
 1053|      0|            }
 1054|      0|            s[i] = value;
 1055|      0|        }
 1056|      0|        return 0;
 1057|      0|    }
 1058|      0|slowpath:
 1059|       |    /* Get the iterator */
 1060|      0|    it = PyObject_GetIter(arg);
 1061|      0|    if (it == NULL) {
  ------------------
  |  Branch (1061:9): [True: 0, False: 0]
  ------------------
 1062|      0|        if (PyErr_ExceptionMatches(PyExc_TypeError)) {
  ------------------
  |  Branch (1062:13): [True: 0, False: 0]
  ------------------
 1063|      0|            PyErr_Format(PyExc_TypeError,
 1064|      0|                         "cannot convert '%.200s' object to bytearray",
 1065|      0|                         Py_TYPE(arg)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1066|      0|        }
 1067|      0|        return -1;
 1068|      0|    }
 1069|      0|    iternext = *Py_TYPE(it)->tp_iternext;
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1070|       |
 1071|       |    /* Run the iterator to exhaustion */
 1072|      0|    for (;;) {
 1073|      0|        PyObject *item;
 1074|      0|        int rc, value;
 1075|       |
 1076|       |        /* Get the next item */
 1077|      0|        item = iternext(it);
 1078|      0|        if (item == NULL) {
  ------------------
  |  Branch (1078:13): [True: 0, False: 0]
  ------------------
 1079|      0|            if (PyErr_Occurred()) {
  ------------------
  |  Branch (1079:17): [True: 0, False: 0]
  ------------------
 1080|      0|                if (!PyErr_ExceptionMatches(PyExc_StopIteration))
  ------------------
  |  Branch (1080:21): [True: 0, False: 0]
  ------------------
 1081|      0|                    goto error;
 1082|      0|                PyErr_Clear();
 1083|      0|            }
 1084|      0|            break;
 1085|      0|        }
 1086|       |
 1087|       |        /* Interpret it as an int (__index__) */
 1088|      0|        rc = _getbytevalue(item, &value);
 1089|      0|        Py_DECREF(item);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1090|      0|        if (!rc)
  ------------------
  |  Branch (1090:13): [True: 0, False: 0]
  ------------------
 1091|      0|            goto error;
 1092|       |
 1093|       |        /* Append the byte */
 1094|      0|        if (Py_SIZE(self) + 1 < self->ob_alloc) {
  ------------------
  |  |  214|      0|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1094:13): [True: 0, False: 0]
  ------------------
 1095|      0|            Py_SET_SIZE(self, Py_SIZE(self) + 1);
  ------------------
  |  |  216|      0|#  define Py_SET_SIZE(ob, size) _Py_SET_SIZE_impl(_PyVarObject_CAST(ob), (size))
  |  |  ------------------
  |  |  |  |  182|      0|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1096|      0|            PyByteArray_AS_STRING(self)[Py_SIZE(self)] = '\0';
  ------------------
  |  |   28|      0|#define PyByteArray_AS_STRING(self) PyByteArray_AS_STRING(_PyObject_CAST(self))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                          PyByteArray_AS_STRING(self)[Py_SIZE(self)] = '\0';
  ------------------
  |  |  214|      0|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1097|      0|        }
 1098|      0|        else if (PyByteArray_Resize((PyObject *)self, Py_SIZE(self)+1) < 0)
  ------------------
  |  |  214|      0|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1098:18): [True: 0, False: 0]
  ------------------
 1099|      0|            goto error;
 1100|      0|        PyByteArray_AS_STRING(self)[Py_SIZE(self)-1] = value;
  ------------------
  |  |   28|      0|#define PyByteArray_AS_STRING(self) PyByteArray_AS_STRING(_PyObject_CAST(self))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      PyByteArray_AS_STRING(self)[Py_SIZE(self)-1] = value;
  ------------------
  |  |  214|      0|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1101|      0|    }
 1102|       |
 1103|       |    /* Clean up and return success */
 1104|      0|    Py_DECREF(it);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1105|      0|    return 0;
 1106|       |
 1107|      0| error:
 1108|       |    /* Error handling when it != NULL */
 1109|      0|    Py_DECREF(it);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1110|      0|    return -1;
 1111|      0|}
bytearrayobject.c:bytearrayiter_dealloc:
 2955|      1|{
 2956|      1|    bytesiterobject *it = _bytesiterobject_CAST(self);
  ------------------
  |  | 2951|      1|#define _bytesiterobject_CAST(op)   ((bytesiterobject *)(op))
  ------------------
 2957|      1|    _PyObject_GC_UNTRACK(it);
  ------------------
  |  |  515|      1|        _PyObject_GC_UNTRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2958|      1|    Py_XDECREF(it->it_seq);
  ------------------
  |  |  524|      1|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2959|      1|    PyObject_GC_Del(it);
 2960|      1|}
bytearrayobject.c:bytearray_iter:
 3109|      1|{
 3110|      1|    bytesiterobject *it;
 3111|       |
 3112|      1|    if (!PyByteArray_Check(seq)) {
  ------------------
  |  |   24|      1|#define PyByteArray_Check(self) PyObject_TypeCheck((self), &PyByteArray_Type)
  |  |  ------------------
  |  |  |  |  378|      1|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3112:9): [True: 0, False: 1]
  ------------------
 3113|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
 3114|      0|        return NULL;
 3115|      0|    }
 3116|      1|    it = PyObject_GC_New(bytesiterobject, &PyByteArrayIter_Type);
  ------------------
  |  |  181|      1|    _Py_CAST(type*, _PyObject_GC_New(typeobj))
  |  |  ------------------
  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
 3117|      1|    if (it == NULL)
  ------------------
  |  Branch (3117:9): [True: 0, False: 1]
  ------------------
 3118|      0|        return NULL;
 3119|      1|    it->it_index = 0;  // -1 indicates exhausted
 3120|      1|    it->it_seq = (PyByteArrayObject *)Py_NewRef(seq);
  ------------------
  |  |  550|      1|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3121|      1|    _PyObject_GC_TRACK(it);
  ------------------
  |  |  513|      1|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3122|      1|    return (PyObject *)it;
 3123|      1|}

_Py_bytes_lower:
  252|      2|{
  253|      2|    Py_ssize_t i;
  254|       |
  255|     14|    for (i = 0; i < len; i++) {
  ------------------
  |  Branch (255:17): [True: 12, False: 2]
  ------------------
  256|     12|        result[i] = Py_TOLOWER((unsigned char) cptr[i]);
  ------------------
  |  |   32|     12|#define Py_TOLOWER(c) (_Py_ctype_tolower[Py_CHARMASK(c)])
  |  |  ------------------
  |  |  |  |  138|     12|#define Py_CHARMASK(c) ((unsigned char)((c) & 0xff))
  |  |  ------------------
  ------------------
  257|     12|    }
  258|      2|}

PyBytes_FromStringAndSize:
  135|  2.50k|{
  136|  2.50k|    PyBytesObject *op;
  137|  2.50k|    if (size < 0) {
  ------------------
  |  Branch (137:9): [True: 0, False: 2.50k]
  ------------------
  138|      0|        PyErr_SetString(PyExc_SystemError,
  139|      0|            "Negative size passed to PyBytes_FromStringAndSize");
  140|      0|        return NULL;
  141|      0|    }
  142|  2.50k|    if (size == 1 && str != NULL) {
  ------------------
  |  Branch (142:9): [True: 227, False: 2.27k]
  |  Branch (142:22): [True: 2, False: 225]
  ------------------
  143|      2|        op = CHARACTER(*str & 255);
  ------------------
  |  |   39|      2|     ((PyBytesObject *)&(CHARACTERS[ch]));
  |  |  ------------------
  |  |  |  |   37|      2|#define CHARACTERS _Py_SINGLETON(bytes_characters)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      2|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      2|    _PyRuntime.static_objects.NAME
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  144|      2|        assert(_Py_IsImmortal(op));
  ------------------
  |  Branch (144:9): [True: 2, False: 0]
  ------------------
  145|      2|        return (PyObject *)op;
  146|      2|    }
  147|  2.49k|    if (size == 0) {
  ------------------
  |  Branch (147:9): [True: 19, False: 2.47k]
  ------------------
  148|     19|        return bytes_get_empty();
  149|     19|    }
  150|       |
  151|  2.47k|    op = (PyBytesObject *)_PyBytes_FromSize(size, 0);
  152|  2.47k|    if (op == NULL)
  ------------------
  |  Branch (152:9): [True: 0, False: 2.47k]
  ------------------
  153|      0|        return NULL;
  154|  2.47k|    if (str == NULL)
  ------------------
  |  Branch (154:9): [True: 2.37k, False: 103]
  ------------------
  155|  2.37k|        return (PyObject *) op;
  156|       |
  157|    103|    memcpy(op->ob_sval, str, size);
  158|    103|    return (PyObject *) op;
  159|  2.47k|}
PyBytesWriter_Create:
 3718|      1|{
 3719|      1|    return byteswriter_create(size, 0);
 3720|      1|}
PyBytesWriter_Discard:
 3731|      1|{
 3732|      1|    if (writer == NULL) {
  ------------------
  |  Branch (3732:9): [True: 0, False: 1]
  ------------------
 3733|      0|        return;
 3734|      0|    }
 3735|       |
 3736|      1|    Py_XDECREF(writer->obj);
  ------------------
  |  |  524|      1|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3737|      1|    _Py_FREELIST_FREE(bytes_writers, writer, PyMem_Free);
  ------------------
  |  |   35|      1|    _PyFreeList_Free(&_Py_freelists_GET()->NAME, _PyObject_CAST(op), \
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   36|      1|                     Py_ ## NAME ## _MAXFREELIST, freefunc)
  |  |  ------------------
  |  |  |  |   30|      1|#  define Py_bytes_writers_MAXFREELIST 1
  |  |  ------------------
  ------------------
 3738|      1|}
PyBytesWriter_FinishWithSize:
 3743|      1|{
 3744|      1|    PyObject *result;
 3745|      1|    if (size == 0) {
  ------------------
  |  Branch (3745:9): [True: 0, False: 1]
  ------------------
 3746|      0|        result = bytes_get_empty();
 3747|      0|    }
 3748|      1|    else if (writer->obj != NULL) {
  ------------------
  |  Branch (3748:14): [True: 0, False: 1]
  ------------------
 3749|      0|        if (writer->use_bytearray) {
  ------------------
  |  Branch (3749:13): [True: 0, False: 0]
  ------------------
 3750|      0|            if (size != PyByteArray_GET_SIZE(writer->obj)) {
  ------------------
  |  |   38|      0|#define PyByteArray_GET_SIZE(self) PyByteArray_GET_SIZE(_PyObject_CAST(self))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3750:17): [True: 0, False: 0]
  ------------------
 3751|      0|                if (PyByteArray_Resize(writer->obj, size)) {
  ------------------
  |  Branch (3751:21): [True: 0, False: 0]
  ------------------
 3752|      0|                    goto error;
 3753|      0|                }
 3754|      0|            }
 3755|      0|        }
 3756|      0|        else {
 3757|      0|            if (size != PyBytes_GET_SIZE(writer->obj)) {
  ------------------
  |  |   33|      0|#define PyBytes_GET_SIZE(self) PyBytes_GET_SIZE(_PyObject_CAST(self))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3757:17): [True: 0, False: 0]
  ------------------
 3758|      0|                if (_PyBytes_Resize(&writer->obj, size)) {
  ------------------
  |  Branch (3758:21): [True: 0, False: 0]
  ------------------
 3759|      0|                    goto error;
 3760|      0|                }
 3761|      0|            }
 3762|      0|        }
 3763|      0|        result = writer->obj;
 3764|      0|        writer->obj = NULL;
 3765|      0|    }
 3766|      1|    else if (writer->use_bytearray) {
  ------------------
  |  Branch (3766:14): [True: 0, False: 1]
  ------------------
 3767|      0|        result = PyByteArray_FromStringAndSize(writer->small_buffer, size);
 3768|      0|    }
 3769|      1|    else {
 3770|      1|        result = PyBytes_FromStringAndSize(writer->small_buffer, size);
 3771|      1|    }
 3772|      1|    PyBytesWriter_Discard(writer);
 3773|      1|    return result;
 3774|       |
 3775|      0|error:
 3776|      0|    PyBytesWriter_Discard(writer);
 3777|       |    return NULL;
 3778|      1|}
PyBytesWriter_Finish:
 3782|      1|{
 3783|      1|    return PyBytesWriter_FinishWithSize(writer, writer->size);
 3784|      1|}
PyBytesWriter_GetData:
 3803|      1|{
 3804|      1|    return byteswriter_data(writer);
 3805|      1|}
bytesobject.c:bytes_get_empty:
   45|     19|{
   46|     19|    PyObject *empty = &EMPTY->ob_base.ob_base;
  ------------------
  |  |   40|     19|#define EMPTY (&_Py_SINGLETON(bytes_empty))
  |  |  ------------------
  |  |  |  |   18|     19|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     19|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   47|     19|    assert(_Py_IsImmortal(empty));
  ------------------
  |  Branch (47:5): [True: 19, False: 0]
  ------------------
   48|     19|    return empty;
   49|     19|}
bytesobject.c:_PyBytes_FromSize:
  103|  2.47k|{
  104|  2.47k|    PyBytesObject *op;
  105|  2.47k|    assert(size >= 0);
  ------------------
  |  Branch (105:5): [True: 2.47k, False: 0]
  ------------------
  106|       |
  107|  2.47k|    if (size == 0) {
  ------------------
  |  Branch (107:9): [True: 0, False: 2.47k]
  ------------------
  108|      0|        return bytes_get_empty();
  109|      0|    }
  110|       |
  111|  2.47k|    if ((size_t)size > (size_t)PY_SSIZE_T_MAX - PyBytesObject_SIZE) {
  ------------------
  |  |  137|  2.47k|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
                  if ((size_t)size > (size_t)PY_SSIZE_T_MAX - PyBytesObject_SIZE) {
  ------------------
  |  |   29|  2.47k|#define PyBytesObject_SIZE _PyBytesObject_SIZE
  |  |  ------------------
  |  |  |  |   76|  2.47k|#define _PyBytesObject_SIZE (offsetof(PyBytesObject, ob_sval) + 1)
  |  |  ------------------
  ------------------
  |  Branch (111:9): [True: 0, False: 2.47k]
  ------------------
  112|      0|        PyErr_SetString(PyExc_OverflowError,
  113|      0|                        "byte string is too large");
  114|      0|        return NULL;
  115|      0|    }
  116|       |
  117|       |    /* Inline PyObject_NewVar */
  118|  2.47k|    if (use_calloc)
  ------------------
  |  Branch (118:9): [True: 0, False: 2.47k]
  ------------------
  119|      0|        op = (PyBytesObject *)PyObject_Calloc(1, PyBytesObject_SIZE + size);
  ------------------
  |  |   29|      0|#define PyBytesObject_SIZE _PyBytesObject_SIZE
  |  |  ------------------
  |  |  |  |   76|      0|#define _PyBytesObject_SIZE (offsetof(PyBytesObject, ob_sval) + 1)
  |  |  ------------------
  ------------------
  120|  2.47k|    else
  121|  2.47k|        op = (PyBytesObject *)PyObject_Malloc(PyBytesObject_SIZE + size);
  ------------------
  |  |   29|  2.47k|#define PyBytesObject_SIZE _PyBytesObject_SIZE
  |  |  ------------------
  |  |  |  |   76|  2.47k|#define _PyBytesObject_SIZE (offsetof(PyBytesObject, ob_sval) + 1)
  |  |  ------------------
  ------------------
  122|  2.47k|    if (op == NULL) {
  ------------------
  |  Branch (122:9): [True: 0, False: 2.47k]
  ------------------
  123|      0|        return PyErr_NoMemory();
  124|      0|    }
  125|  2.47k|    _PyObject_InitVar((PyVarObject*)op, &PyBytes_Type, size);
  126|  2.47k|    set_ob_shash(op, -1);
  127|  2.47k|    if (!use_calloc) {
  ------------------
  |  Branch (127:9): [True: 2.47k, False: 0]
  ------------------
  128|  2.47k|        op->ob_sval[size] = '\0';
  129|  2.47k|    }
  130|  2.47k|    return (PyObject *) op;
  131|  2.47k|}
bytesobject.c:set_ob_shash:
   54|  2.51k|{
   55|  2.51k|_Py_COMP_DIAG_PUSH
   56|  2.51k|_Py_COMP_DIAG_IGNORE_DEPR_DECLS
   57|       |#ifdef Py_GIL_DISABLED
   58|       |    _Py_atomic_store_ssize_relaxed(&a->ob_shash, hash);
   59|       |#else
   60|  2.51k|    a->ob_shash = hash;
   61|  2.51k|#endif
   62|  2.51k|_Py_COMP_DIAG_POP
   63|  2.51k|}
bytesobject.c:bytes_hash:
 1721|     37|{
 1722|     37|    PyBytesObject *a = _PyBytes_CAST(self);
  ------------------
  |  |   21|     37|    (assert(PyBytes_Check(op)), _Py_CAST(PyBytesObject*, op))
  |  |  ------------------
  |  |  |  |   37|     37|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (1722:24): [True: 37, False: 0]
  ------------------
 1723|      0|    Py_hash_t hash = get_ob_shash(a);
 1724|     37|    if (hash == -1) {
  ------------------
  |  Branch (1724:9): [True: 37, False: 0]
  ------------------
 1725|       |        /* Can't fail */
 1726|     37|        hash = Py_HashBuffer(a->ob_sval, Py_SIZE(a));
  ------------------
  |  |  214|     37|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     37|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     37|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1727|     37|        set_ob_shash(a, hash);
 1728|     37|    }
 1729|     37|    return hash;
 1730|     37|}
bytesobject.c:get_ob_shash:
   67|     37|{
   68|     37|_Py_COMP_DIAG_PUSH
   69|     37|_Py_COMP_DIAG_IGNORE_DEPR_DECLS
   70|       |#ifdef Py_GIL_DISABLED
   71|       |    return _Py_atomic_load_ssize_relaxed(&a->ob_shash);
   72|       |#else
   73|     37|    return a->ob_shash;
   74|     37|#endif
   75|     37|_Py_COMP_DIAG_POP
   76|     37|}
bytesobject.c:bytes_richcompare:
 1658|      2|{
 1659|       |    /* Make sure both arguments are strings. */
 1660|      2|    if (!(PyBytes_Check(aa) && PyBytes_Check(bb))) {
  ------------------
  |  |   28|      2|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_BYTES_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      4|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  if (!(PyBytes_Check(aa) && PyBytes_Check(bb))) {
  ------------------
  |  |   28|      2|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_BYTES_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      2|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1661|      0|        if (_Py_GetConfig()->bytes_warning && (op == Py_EQ || op == Py_NE)) {
  ------------------
  |  |  654|      0|#define Py_EQ 2
  ------------------
                      if (_Py_GetConfig()->bytes_warning && (op == Py_EQ || op == Py_NE)) {
  ------------------
  |  |  655|      0|#define Py_NE 3
  ------------------
  |  Branch (1661:13): [True: 0, False: 0]
  |  Branch (1661:48): [True: 0, False: 0]
  |  Branch (1661:63): [True: 0, False: 0]
  ------------------
 1662|      0|            if (PyUnicode_Check(aa) || PyUnicode_Check(bb)) {
  ------------------
  |  |  103|      0|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                          if (PyUnicode_Check(aa) || PyUnicode_Check(bb)) {
  ------------------
  |  |  103|      0|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1663|      0|                if (PyErr_WarnEx(PyExc_BytesWarning,
  ------------------
  |  Branch (1663:21): [True: 0, False: 0]
  ------------------
 1664|      0|                                 "Comparison between bytes and string", 1))
 1665|      0|                    return NULL;
 1666|      0|            }
 1667|      0|            if (PyLong_Check(aa) || PyLong_Check(bb)) {
  ------------------
  |  |   13|      0|        PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                          if (PyLong_Check(aa) || PyLong_Check(bb)) {
  ------------------
  |  |   13|      0|        PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1668|      0|                if (PyErr_WarnEx(PyExc_BytesWarning,
  ------------------
  |  Branch (1668:21): [True: 0, False: 0]
  ------------------
 1669|      0|                                 "Comparison between bytes and int", 1))
 1670|      0|                    return NULL;
 1671|      0|            }
 1672|      0|        }
 1673|      0|        Py_RETURN_NOTIMPLEMENTED;
  ------------------
  |  |  648|      0|#  define Py_RETURN_NOTIMPLEMENTED return Py_NotImplemented
  |  |  ------------------
  |  |  |  |  640|      0|#  define Py_NotImplemented (&_Py_NotImplementedStruct)
  |  |  ------------------
  ------------------
 1674|      0|    }
 1675|       |
 1676|      2|    PyBytesObject *a = _PyBytes_CAST(aa);
  ------------------
  |  |   21|      2|    (assert(PyBytes_Check(op)), _Py_CAST(PyBytesObject*, op))
  |  |  ------------------
  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (1676:24): [True: 2, False: 0]
  ------------------
 1677|      2|    PyBytesObject *b = _PyBytes_CAST(bb);
  ------------------
  |  |   21|      2|    (assert(PyBytes_Check(op)), _Py_CAST(PyBytesObject*, op))
  |  |  ------------------
  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (1677:24): [True: 2, False: 0]
  ------------------
 1678|      2|    if (a == b) {
  ------------------
  |  Branch (1678:9): [True: 0, False: 2]
  ------------------
 1679|      0|        switch (op) {
 1680|      0|        case Py_EQ:
  ------------------
  |  |  654|      0|#define Py_EQ 2
  ------------------
  |  Branch (1680:9): [True: 0, False: 0]
  ------------------
 1681|      0|        case Py_LE:
  ------------------
  |  |  653|      0|#define Py_LE 1
  ------------------
  |  Branch (1681:9): [True: 0, False: 0]
  ------------------
 1682|      0|        case Py_GE:
  ------------------
  |  |  657|      0|#define Py_GE 5
  ------------------
  |  Branch (1682:9): [True: 0, False: 0]
  ------------------
 1683|       |            /* a byte string is equal to itself */
 1684|      0|            Py_RETURN_TRUE;
  ------------------
  |  |   44|      0|#  define Py_RETURN_TRUE return Py_True
  |  |  ------------------
  |  |  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1685|      0|        case Py_NE:
  ------------------
  |  |  655|      0|#define Py_NE 3
  ------------------
  |  Branch (1685:9): [True: 0, False: 0]
  ------------------
 1686|      0|        case Py_LT:
  ------------------
  |  |  652|      0|#define Py_LT 0
  ------------------
  |  Branch (1686:9): [True: 0, False: 0]
  ------------------
 1687|      0|        case Py_GT:
  ------------------
  |  |  656|      0|#define Py_GT 4
  ------------------
  |  Branch (1687:9): [True: 0, False: 0]
  ------------------
 1688|      0|            Py_RETURN_FALSE;
  ------------------
  |  |   45|      0|#  define Py_RETURN_FALSE return Py_False
  |  |  ------------------
  |  |  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1689|      0|        default:
  ------------------
  |  Branch (1689:9): [True: 0, False: 0]
  ------------------
 1690|      0|            PyErr_BadArgument();
 1691|      0|            return NULL;
 1692|      0|        }
 1693|      0|    }
 1694|      2|    else if (op == Py_EQ || op == Py_NE) {
  ------------------
  |  |  654|      4|#define Py_EQ 2
  ------------------
                  else if (op == Py_EQ || op == Py_NE) {
  ------------------
  |  |  655|      0|#define Py_NE 3
  ------------------
  |  Branch (1694:14): [True: 2, False: 0]
  |  Branch (1694:29): [True: 0, False: 0]
  ------------------
 1695|      2|        int eq = bytes_compare_eq(a, b);
 1696|      2|        eq ^= (op == Py_NE);
  ------------------
  |  |  655|      2|#define Py_NE 3
  ------------------
 1697|      2|        return PyBool_FromLong(eq);
 1698|      2|    }
 1699|      0|    else {
 1700|      0|        Py_ssize_t len_a = Py_SIZE(a);
  ------------------
  |  |  214|      0|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1701|      0|        Py_ssize_t len_b = Py_SIZE(b);
  ------------------
  |  |  214|      0|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1702|      0|        Py_ssize_t min_len = Py_MIN(len_a, len_b);
  ------------------
  |  |  112|      0|#define Py_MIN(x, y) (((x) > (y)) ? (y) : (x))
  |  |  ------------------
  |  |  |  Branch (112:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1703|      0|        int c;
 1704|      0|        if (min_len > 0) {
  ------------------
  |  Branch (1704:13): [True: 0, False: 0]
  ------------------
 1705|      0|            c = Py_CHARMASK(*a->ob_sval) - Py_CHARMASK(*b->ob_sval);
  ------------------
  |  |  138|      0|#define Py_CHARMASK(c) ((unsigned char)((c) & 0xff))
  ------------------
                          c = Py_CHARMASK(*a->ob_sval) - Py_CHARMASK(*b->ob_sval);
  ------------------
  |  |  138|      0|#define Py_CHARMASK(c) ((unsigned char)((c) & 0xff))
  ------------------
 1706|      0|            if (c == 0)
  ------------------
  |  Branch (1706:17): [True: 0, False: 0]
  ------------------
 1707|      0|                c = memcmp(a->ob_sval, b->ob_sval, min_len);
 1708|      0|        }
 1709|      0|        else {
 1710|      0|            c = 0;
 1711|      0|        }
 1712|      0|        if (c != 0) {
  ------------------
  |  Branch (1712:13): [True: 0, False: 0]
  ------------------
 1713|      0|            Py_RETURN_RICHCOMPARE(c, 0, op);
  ------------------
  |  |  674|      0|    do {                                                                    \
  |  |  675|      0|        switch (op) {                                                       \
  |  |  676|      0|        case Py_EQ: if ((val1) == (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |  654|      0|#define Py_EQ 2
  |  |  ------------------
  |  |                       case Py_EQ: if ((val1) == (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |   44|      0|#  define Py_RETURN_TRUE return Py_True
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       case Py_EQ: if ((val1) == (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |   45|      0|#  define Py_RETURN_FALSE return Py_False
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (676:9): [True: 0, False: 0]
  |  |  |  Branch (676:25): [True: 0, False: 0]
  |  |  ------------------
  |  |  677|      0|        case Py_NE: if ((val1) != (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |  655|      0|#define Py_NE 3
  |  |  ------------------
  |  |                       case Py_NE: if ((val1) != (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |   44|      0|#  define Py_RETURN_TRUE return Py_True
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       case Py_NE: if ((val1) != (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |   45|      0|#  define Py_RETURN_FALSE return Py_False
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (677:9): [True: 0, False: 0]
  |  |  |  Branch (677:25): [True: 0, False: 0]
  |  |  ------------------
  |  |  678|      0|        case Py_LT: if ((val1) < (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;   \
  |  |  ------------------
  |  |  |  |  652|      0|#define Py_LT 0
  |  |  ------------------
  |  |                       case Py_LT: if ((val1) < (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;   \
  |  |  ------------------
  |  |  |  |   44|      0|#  define Py_RETURN_TRUE return Py_True
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       case Py_LT: if ((val1) < (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;   \
  |  |  ------------------
  |  |  |  |   45|      0|#  define Py_RETURN_FALSE return Py_False
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (678:9): [True: 0, False: 0]
  |  |  |  Branch (678:25): [True: 0, False: 0]
  |  |  ------------------
  |  |  679|      0|        case Py_GT: if ((val1) > (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;   \
  |  |  ------------------
  |  |  |  |  656|      0|#define Py_GT 4
  |  |  ------------------
  |  |                       case Py_GT: if ((val1) > (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;   \
  |  |  ------------------
  |  |  |  |   44|      0|#  define Py_RETURN_TRUE return Py_True
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       case Py_GT: if ((val1) > (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;   \
  |  |  ------------------
  |  |  |  |   45|      0|#  define Py_RETURN_FALSE return Py_False
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (679:9): [True: 0, False: 0]
  |  |  |  Branch (679:25): [True: 0, False: 0]
  |  |  ------------------
  |  |  680|      0|        case Py_LE: if ((val1) <= (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |  653|      0|#define Py_LE 1
  |  |  ------------------
  |  |                       case Py_LE: if ((val1) <= (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |   44|      0|#  define Py_RETURN_TRUE return Py_True
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       case Py_LE: if ((val1) <= (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |   45|      0|#  define Py_RETURN_FALSE return Py_False
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (680:9): [True: 0, False: 0]
  |  |  |  Branch (680:25): [True: 0, False: 0]
  |  |  ------------------
  |  |  681|      0|        case Py_GE: if ((val1) >= (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |  657|      0|#define Py_GE 5
  |  |  ------------------
  |  |                       case Py_GE: if ((val1) >= (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |   44|      0|#  define Py_RETURN_TRUE return Py_True
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       case Py_GE: if ((val1) >= (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |   45|      0|#  define Py_RETURN_FALSE return Py_False
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (681:9): [True: 0, False: 0]
  |  |  |  Branch (681:25): [True: 0, False: 0]
  |  |  ------------------
  |  |  682|      0|        default:                                                            \
  |  |  ------------------
  |  |  |  Branch (682:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  683|      0|            Py_UNREACHABLE();                                               \
  |  |  ------------------
  |  |  |  |  264|      0|#  define Py_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  684|      0|        }                                                                   \
  |  |  685|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (685:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1714|      0|        }
 1715|      0|        Py_RETURN_RICHCOMPARE(len_a, len_b, op);
  ------------------
  |  |  674|      0|    do {                                                                    \
  |  |  675|      0|        switch (op) {                                                       \
  |  |  676|      0|        case Py_EQ: if ((val1) == (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |  654|      0|#define Py_EQ 2
  |  |  ------------------
  |  |                       case Py_EQ: if ((val1) == (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |   44|      0|#  define Py_RETURN_TRUE return Py_True
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       case Py_EQ: if ((val1) == (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |   45|      0|#  define Py_RETURN_FALSE return Py_False
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (676:9): [True: 0, False: 0]
  |  |  |  Branch (676:25): [True: 0, False: 0]
  |  |  ------------------
  |  |  677|      0|        case Py_NE: if ((val1) != (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |  655|      0|#define Py_NE 3
  |  |  ------------------
  |  |                       case Py_NE: if ((val1) != (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |   44|      0|#  define Py_RETURN_TRUE return Py_True
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       case Py_NE: if ((val1) != (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |   45|      0|#  define Py_RETURN_FALSE return Py_False
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (677:9): [True: 0, False: 0]
  |  |  |  Branch (677:25): [True: 0, False: 0]
  |  |  ------------------
  |  |  678|      0|        case Py_LT: if ((val1) < (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;   \
  |  |  ------------------
  |  |  |  |  652|      0|#define Py_LT 0
  |  |  ------------------
  |  |                       case Py_LT: if ((val1) < (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;   \
  |  |  ------------------
  |  |  |  |   44|      0|#  define Py_RETURN_TRUE return Py_True
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       case Py_LT: if ((val1) < (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;   \
  |  |  ------------------
  |  |  |  |   45|      0|#  define Py_RETURN_FALSE return Py_False
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (678:9): [True: 0, False: 0]
  |  |  |  Branch (678:25): [True: 0, False: 0]
  |  |  ------------------
  |  |  679|      0|        case Py_GT: if ((val1) > (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;   \
  |  |  ------------------
  |  |  |  |  656|      0|#define Py_GT 4
  |  |  ------------------
  |  |                       case Py_GT: if ((val1) > (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;   \
  |  |  ------------------
  |  |  |  |   44|      0|#  define Py_RETURN_TRUE return Py_True
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       case Py_GT: if ((val1) > (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;   \
  |  |  ------------------
  |  |  |  |   45|      0|#  define Py_RETURN_FALSE return Py_False
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (679:9): [True: 0, False: 0]
  |  |  |  Branch (679:25): [True: 0, False: 0]
  |  |  ------------------
  |  |  680|      0|        case Py_LE: if ((val1) <= (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |  653|      0|#define Py_LE 1
  |  |  ------------------
  |  |                       case Py_LE: if ((val1) <= (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |   44|      0|#  define Py_RETURN_TRUE return Py_True
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       case Py_LE: if ((val1) <= (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |   45|      0|#  define Py_RETURN_FALSE return Py_False
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (680:9): [True: 0, False: 0]
  |  |  |  Branch (680:25): [True: 0, False: 0]
  |  |  ------------------
  |  |  681|      0|        case Py_GE: if ((val1) >= (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |  657|      0|#define Py_GE 5
  |  |  ------------------
  |  |                       case Py_GE: if ((val1) >= (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |   44|      0|#  define Py_RETURN_TRUE return Py_True
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       case Py_GE: if ((val1) >= (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |   45|      0|#  define Py_RETURN_FALSE return Py_False
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (681:9): [True: 0, False: 0]
  |  |  |  Branch (681:25): [True: 0, False: 0]
  |  |  ------------------
  |  |  682|      0|        default:                                                            \
  |  |  ------------------
  |  |  |  Branch (682:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  683|      0|            Py_UNREACHABLE();                                               \
  |  |  ------------------
  |  |  |  |  264|      0|#  define Py_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  684|      0|        }                                                                   \
  |  |  685|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (685:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1716|      0|    }
 1717|      2|}
bytesobject.c:bytes_compare_eq:
 1641|      2|{
 1642|      2|    int cmp;
 1643|      2|    Py_ssize_t len;
 1644|       |
 1645|      2|    len = Py_SIZE(a);
  ------------------
  |  |  214|      2|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1646|      2|    if (Py_SIZE(b) != len)
  ------------------
  |  |  214|      2|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1646:9): [True: 0, False: 2]
  ------------------
 1647|      0|        return 0;
 1648|       |
 1649|      2|    if (a->ob_sval[0] != b->ob_sval[0])
  ------------------
  |  Branch (1649:9): [True: 0, False: 2]
  ------------------
 1650|      0|        return 0;
 1651|       |
 1652|      2|    cmp = memcmp(a->ob_sval, b->ob_sval, len);
 1653|      2|    return (cmp == 0);
 1654|      2|}
bytesobject.c:bytes_decode_impl:
 2578|      2|{
 2579|      2|    return PyUnicode_FromEncodedObject((PyObject*)self, encoding, errors);
 2580|      2|}
bytesobject.c:striter_dealloc:
 3414|      1|{
 3415|      1|    striterobject *it = _striterobject_CAST(op);
  ------------------
  |  | 3410|      1|#define _striterobject_CAST(op)  ((striterobject *)(op))
  ------------------
 3416|      1|    _PyObject_GC_UNTRACK(it);
  ------------------
  |  |  515|      1|        _PyObject_GC_UNTRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3417|      1|    Py_XDECREF(it->it_seq);
  ------------------
  |  |  524|      1|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3418|      1|    PyObject_GC_Del(it);
 3419|      1|}
bytesobject.c:bytes_iter:
 3543|      1|{
 3544|      1|    striterobject *it;
 3545|       |
 3546|      1|    if (!PyBytes_Check(seq)) {
  ------------------
  |  |   28|      1|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_BYTES_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      1|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (3546:9): [True: 0, False: 1]
  ------------------
 3547|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
 3548|      0|        return NULL;
 3549|      0|    }
 3550|      1|    it = PyObject_GC_New(striterobject, &PyBytesIter_Type);
  ------------------
  |  |  181|      1|    _Py_CAST(type*, _PyObject_GC_New(typeobj))
  |  |  ------------------
  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
 3551|      1|    if (it == NULL)
  ------------------
  |  Branch (3551:9): [True: 0, False: 1]
  ------------------
 3552|      0|        return NULL;
 3553|      1|    it->it_index = 0;
 3554|      1|    it->it_seq = (PyBytesObject *)Py_NewRef(seq);
  ------------------
  |  |  550|      1|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3555|      1|    _PyObject_GC_TRACK(it);
  ------------------
  |  |  513|      1|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3556|      1|    return (PyObject *)it;
 3557|      1|}
bytesobject.c:byteswriter_create:
 3684|      1|{
 3685|      1|    if (size < 0) {
  ------------------
  |  Branch (3685:9): [True: 0, False: 1]
  ------------------
 3686|      0|        PyErr_SetString(PyExc_ValueError, "size must be >= 0");
 3687|      0|        return NULL;
 3688|      0|    }
 3689|       |
 3690|      1|    PyBytesWriter *writer = _Py_FREELIST_POP_MEM(bytes_writers);
  ------------------
  |  |   48|      1|    _PyFreeList_PopMem(&_Py_freelists_GET()->NAME)
  ------------------
 3691|      1|    if (writer == NULL) {
  ------------------
  |  Branch (3691:9): [True: 1, False: 0]
  ------------------
 3692|      1|        writer = (PyBytesWriter *)PyMem_Malloc(sizeof(PyBytesWriter));
 3693|      1|        if (writer == NULL) {
  ------------------
  |  Branch (3693:13): [True: 0, False: 1]
  ------------------
 3694|      0|            PyErr_NoMemory();
 3695|      0|            return NULL;
 3696|      0|        }
 3697|      1|    }
 3698|      1|    writer->obj = NULL;
 3699|      1|    writer->size = 0;
 3700|      1|    writer->use_bytearray = use_bytearray;
 3701|      1|    writer->overallocate = !use_bytearray;
 3702|       |
 3703|      1|    if (size >= 1) {
  ------------------
  |  Branch (3703:9): [True: 1, False: 0]
  ------------------
 3704|      1|        if (byteswriter_resize(writer, size, 0) < 0) {
  ------------------
  |  Branch (3704:13): [True: 0, False: 1]
  ------------------
 3705|      0|            PyBytesWriter_Discard(writer);
 3706|      0|            return NULL;
 3707|      0|        }
 3708|      1|        writer->size = size;
 3709|      1|    }
 3710|       |#ifdef Py_DEBUG
 3711|       |    memset(byteswriter_data(writer), 0xff, byteswriter_allocated(writer));
 3712|       |#endif
 3713|      1|    return writer;
 3714|      1|}
bytesobject.c:byteswriter_data:
 3588|      1|{
 3589|      1|    return _PyBytesWriter_GetData(writer);
 3590|      1|}
bytesobject.c:byteswriter_allocated:
 3595|      1|{
 3596|      1|    if (writer->obj == NULL) {
  ------------------
  |  Branch (3596:9): [True: 1, False: 0]
  ------------------
 3597|      1|        return sizeof(writer->small_buffer);
 3598|      1|    }
 3599|      0|    else if (writer->use_bytearray) {
  ------------------
  |  Branch (3599:14): [True: 0, False: 0]
  ------------------
 3600|      0|        return PyByteArray_GET_SIZE(writer->obj);
  ------------------
  |  |   38|      0|#define PyByteArray_GET_SIZE(self) PyByteArray_GET_SIZE(_PyObject_CAST(self))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3601|      0|    }
 3602|      0|    else {
 3603|      0|        return PyBytes_GET_SIZE(writer->obj);
  ------------------
  |  |   33|      0|#define PyBytes_GET_SIZE(self) PyBytes_GET_SIZE(_PyObject_CAST(self))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3604|      0|    }
 3605|      1|}
bytesobject.c:byteswriter_resize:
 3618|      1|{
 3619|      1|    assert(size >= 0);
  ------------------
  |  Branch (3619:5): [True: 1, False: 0]
  ------------------
 3620|       |
 3621|      1|    Py_ssize_t old_allocated = byteswriter_allocated(writer);
 3622|      1|    if (size <= old_allocated) {
  ------------------
  |  Branch (3622:9): [True: 1, False: 0]
  ------------------
 3623|      1|        return 0;
 3624|      1|    }
 3625|       |
 3626|      0|    if (resize & writer->overallocate) {
  ------------------
  |  Branch (3626:9): [True: 0, False: 0]
  ------------------
 3627|      0|        if (size <= (PY_SSIZE_T_MAX - size / OVERALLOCATE_FACTOR)) {
  ------------------
  |  |  137|      0|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
                      if (size <= (PY_SSIZE_T_MAX - size / OVERALLOCATE_FACTOR)) {
  ------------------
  |  | 3613|      0|#  define OVERALLOCATE_FACTOR 4
  ------------------
  |  Branch (3627:13): [True: 0, False: 0]
  ------------------
 3628|      0|            size += size / OVERALLOCATE_FACTOR;
  ------------------
  |  | 3613|      0|#  define OVERALLOCATE_FACTOR 4
  ------------------
 3629|      0|        }
 3630|      0|    }
 3631|       |
 3632|      0|    if (writer->obj != NULL) {
  ------------------
  |  Branch (3632:9): [True: 0, False: 0]
  ------------------
 3633|      0|        if (writer->use_bytearray) {
  ------------------
  |  Branch (3633:13): [True: 0, False: 0]
  ------------------
 3634|      0|            if (PyByteArray_Resize(writer->obj, size)) {
  ------------------
  |  Branch (3634:17): [True: 0, False: 0]
  ------------------
 3635|      0|                return -1;
 3636|      0|            }
 3637|      0|        }
 3638|      0|        else {
 3639|      0|            if (_PyBytes_Resize(&writer->obj, size)) {
  ------------------
  |  Branch (3639:17): [True: 0, False: 0]
  ------------------
 3640|      0|                return -1;
 3641|      0|            }
 3642|      0|        }
 3643|      0|        assert(writer->obj != NULL);
  ------------------
  |  Branch (3643:9): [True: 0, False: 0]
  ------------------
 3644|      0|    }
 3645|      0|    else if (writer->use_bytearray) {
  ------------------
  |  Branch (3645:14): [True: 0, False: 0]
  ------------------
 3646|      0|        writer->obj = PyByteArray_FromStringAndSize(NULL, size);
 3647|      0|        if (writer->obj == NULL) {
  ------------------
  |  Branch (3647:13): [True: 0, False: 0]
  ------------------
 3648|      0|            return -1;
 3649|      0|        }
 3650|      0|        if (resize) {
  ------------------
  |  Branch (3650:13): [True: 0, False: 0]
  ------------------
 3651|      0|            assert((size_t)size > sizeof(writer->small_buffer));
  ------------------
  |  Branch (3651:13): [True: 0, False: 0]
  ------------------
 3652|      0|            memcpy(PyByteArray_AS_STRING(writer->obj),
  ------------------
  |  |   28|      0|#define PyByteArray_AS_STRING(self) PyByteArray_AS_STRING(_PyObject_CAST(self))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3653|      0|                   writer->small_buffer,
 3654|      0|                   sizeof(writer->small_buffer));
 3655|      0|        }
 3656|      0|    }
 3657|      0|    else {
 3658|      0|        writer->obj = PyBytes_FromStringAndSize(NULL, size);
 3659|      0|        if (writer->obj == NULL) {
  ------------------
  |  Branch (3659:13): [True: 0, False: 0]
  ------------------
 3660|      0|            return -1;
 3661|      0|        }
 3662|      0|        if (resize) {
  ------------------
  |  Branch (3662:13): [True: 0, False: 0]
  ------------------
 3663|      0|            assert((size_t)size > sizeof(writer->small_buffer));
  ------------------
  |  Branch (3663:13): [True: 0, False: 0]
  ------------------
 3664|      0|            memcpy(PyBytes_AS_STRING(writer->obj),
  ------------------
  |  |   27|      0|#define PyBytes_AS_STRING(op) PyBytes_AS_STRING(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3665|      0|                   writer->small_buffer,
 3666|      0|                   sizeof(writer->small_buffer));
 3667|      0|        }
 3668|      0|    }
 3669|       |
 3670|       |#ifdef Py_DEBUG
 3671|       |    Py_ssize_t allocated = byteswriter_allocated(writer);
 3672|       |    if (resize && allocated > old_allocated) {
 3673|       |        memset(byteswriter_data(writer) + old_allocated, 0xff,
 3674|       |               allocated - old_allocated);
 3675|       |    }
 3676|       |#endif
 3677|       |
 3678|      0|    return 0;
 3679|      0|}

_Py_CheckFunctionResult:
   27|  2.72k|{
   28|  2.72k|    assert((callable != NULL) ^ (where != NULL));
  ------------------
  |  Branch (28:5): [True: 2.72k, False: 0]
  ------------------
   29|       |
   30|  2.72k|    if (result == NULL) {
  ------------------
  |  Branch (30:9): [True: 26, False: 2.69k]
  ------------------
   31|     26|        if (!_PyErr_Occurred(tstate)) {
  ------------------
  |  Branch (31:13): [True: 0, False: 26]
  ------------------
   32|      0|            if (callable)
  ------------------
  |  Branch (32:17): [True: 0, False: 0]
  ------------------
   33|      0|                _PyErr_Format(tstate, PyExc_SystemError,
   34|      0|                              "%R returned NULL without setting an exception",
   35|      0|                              callable);
   36|      0|            else
   37|      0|                _PyErr_Format(tstate, PyExc_SystemError,
   38|      0|                              "%s returned NULL without setting an exception",
   39|      0|                              where);
   40|       |#ifdef Py_DEBUG
   41|       |            /* Ensure that the bug is caught in debug mode.
   42|       |               Py_FatalError() logs the SystemError exception raised above. */
   43|       |            Py_FatalError("a function returned NULL without setting an exception");
   44|       |#endif
   45|      0|            return NULL;
   46|      0|        }
   47|     26|    }
   48|  2.69k|    else {
   49|  2.69k|        if (_PyErr_Occurred(tstate)) {
  ------------------
  |  Branch (49:13): [True: 0, False: 2.69k]
  ------------------
   50|      0|            Py_DECREF(result);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   51|       |
   52|      0|            if (callable) {
  ------------------
  |  Branch (52:17): [True: 0, False: 0]
  ------------------
   53|      0|                _PyErr_FormatFromCauseTstate(
   54|      0|                    tstate, PyExc_SystemError,
   55|      0|                    "%R returned a result with an exception set", callable);
   56|      0|            }
   57|      0|            else {
   58|      0|                _PyErr_FormatFromCauseTstate(
   59|      0|                    tstate, PyExc_SystemError,
   60|      0|                    "%s returned a result with an exception set", where);
   61|      0|            }
   62|       |#ifdef Py_DEBUG
   63|       |            /* Ensure that the bug is caught in debug mode.
   64|       |               Py_FatalError() logs the SystemError exception raised above. */
   65|       |            Py_FatalError("a function returned a result with an exception set");
   66|       |#endif
   67|      0|            return NULL;
   68|      0|        }
   69|  2.69k|    }
   70|  2.72k|    return result;
   71|  2.72k|}
_Py_CheckSlotResult:
   76|    959|{
   77|    959|    PyThreadState *tstate = _PyThreadState_GET();
   78|    959|    if (!success) {
  ------------------
  |  Branch (78:9): [True: 9, False: 950]
  ------------------
   79|      9|        if (!_PyErr_Occurred(tstate)) {
  ------------------
  |  Branch (79:13): [True: 0, False: 9]
  ------------------
   80|      0|            _Py_FatalErrorFormat(__func__,
   81|      0|                                 "Slot %s of type %s failed "
   82|      0|                                 "without setting an exception",
   83|      0|                                 slot_name, Py_TYPE(obj)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   84|      0|        }
   85|      9|    }
   86|    950|    else {
   87|    950|        if (_PyErr_Occurred(tstate)) {
  ------------------
  |  Branch (87:13): [True: 0, False: 950]
  ------------------
   88|      0|            _Py_FatalErrorFormat(__func__,
   89|      0|                                 "Slot %s of type %s succeeded "
   90|      0|                                 "with an exception set",
   91|      0|                                 slot_name, Py_TYPE(obj)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   92|      0|        }
   93|    950|    }
   94|    959|    return 1;
   95|    959|}
_PyObject_VectorcallDictTstate:
  114|    399|{
  115|    399|    assert(callable != NULL);
  ------------------
  |  Branch (115:5): [True: 399, False: 0]
  ------------------
  116|       |
  117|       |    /* PyObject_VectorcallDict() must not be called with an exception set,
  118|       |       because it can clear it (directly or indirectly) and so the
  119|       |       caller loses its exception */
  120|    399|    assert(!_PyErr_Occurred(tstate));
  ------------------
  |  Branch (120:5): [True: 399, False: 0]
  ------------------
  121|       |
  122|    399|    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
  ------------------
  |  |   37|    399|#define PyVectorcall_NARGS(n) _PyVectorcall_NARGS(n)
  ------------------
  123|    399|    assert(nargs >= 0);
  ------------------
  |  Branch (123:5): [True: 399, False: 0]
  ------------------
  124|    399|    assert(nargs == 0 || args != NULL);
  ------------------
  |  Branch (124:5): [True: 87, False: 312]
  |  Branch (124:5): [True: 312, False: 0]
  ------------------
  125|    399|    assert(kwargs == NULL || PyDict_Check(kwargs));
  ------------------
  |  Branch (125:5): [True: 339, False: 60]
  |  Branch (125:5): [True: 60, False: 0]
  ------------------
  126|       |
  127|    399|    vectorcallfunc func = PyVectorcall_Function(callable);
  128|    399|    if (func == NULL) {
  ------------------
  |  Branch (128:9): [True: 29, False: 370]
  ------------------
  129|       |        /* Use tp_call instead */
  130|     29|        return _PyObject_MakeTpCall(tstate, callable, args, nargs, kwargs);
  131|     29|    }
  132|       |
  133|    370|    PyObject *res;
  134|    370|    if (kwargs == NULL || PyDict_GET_SIZE(kwargs) == 0) {
  ------------------
  |  |   63|     50|#define PyDict_GET_SIZE(op) PyDict_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     50|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     50|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (134:9): [True: 320, False: 50]
  |  Branch (134:27): [True: 20, False: 30]
  ------------------
  135|    340|        res = func(callable, args, nargsf, NULL);
  136|    340|    }
  137|     30|    else {
  138|     30|        PyObject *kwnames;
  139|     30|        PyObject *const *newargs;
  140|     30|        newargs = _PyStack_UnpackDict(tstate,
  141|     30|                                      args, nargs,
  142|     30|                                      kwargs, &kwnames);
  143|     30|        if (newargs == NULL) {
  ------------------
  |  Branch (143:13): [True: 0, False: 30]
  ------------------
  144|      0|            return NULL;
  145|      0|        }
  146|     30|        res = func(callable, newargs,
  147|     30|                   nargs | PY_VECTORCALL_ARGUMENTS_OFFSET, kwnames);
  ------------------
  |  |  287|     30|    (_Py_STATIC_CAST(size_t, 1) << (8 * sizeof(size_t) - 1))
  |  |  ------------------
  |  |  |  |   34|     30|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  148|     30|        _PyStack_UnpackDict_Free(newargs, nargs, kwnames);
  149|     30|    }
  150|    370|    return _Py_CheckFunctionResult(tstate, callable, res, NULL);
  151|    370|}
PyObject_VectorcallDict:
  157|    255|{
  158|    255|    PyThreadState *tstate = _PyThreadState_GET();
  159|    255|    return _PyObject_VectorcallDictTstate(tstate, callable, args, nargsf, kwargs);
  160|    255|}
_PyObject_MakeTpCall:
  203|    502|{
  204|    502|    assert(nargs >= 0);
  ------------------
  |  Branch (204:5): [True: 502, False: 0]
  ------------------
  205|    502|    assert(nargs == 0 || args != NULL);
  ------------------
  |  Branch (205:5): [True: 121, False: 381]
  |  Branch (205:5): [True: 381, False: 0]
  ------------------
  206|    502|    assert(keywords == NULL || PyTuple_Check(keywords) || PyDict_Check(keywords));
  ------------------
  |  Branch (206:5): [True: 440, False: 62]
  |  Branch (206:5): [True: 52, False: 10]
  |  Branch (206:5): [True: 10, False: 0]
  ------------------
  207|       |
  208|       |    /* Slow path: build a temporary tuple for positional arguments and a
  209|       |     * temporary dictionary for keyword arguments (if any) */
  210|    502|    ternaryfunc call = Py_TYPE(callable)->tp_call;
  ------------------
  |  |  213|    502|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    502|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    502|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  211|    502|    if (call == NULL) {
  ------------------
  |  Branch (211:9): [True: 0, False: 502]
  ------------------
  212|      0|        object_is_not_callable(tstate, callable);
  213|      0|        return NULL;
  214|      0|    }
  215|       |
  216|    502|    PyObject *argstuple = PyTuple_FromArray(args, nargs);
  217|    502|    if (argstuple == NULL) {
  ------------------
  |  Branch (217:9): [True: 0, False: 502]
  ------------------
  218|      0|        return NULL;
  219|      0|    }
  220|       |
  221|    502|    PyObject *kwdict;
  222|    502|    if (keywords == NULL || PyDict_Check(keywords)) {
  ------------------
  |  |   18|     62|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     62|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 10, False: 52]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (222:9): [True: 440, False: 62]
  ------------------
  223|    450|        kwdict = keywords;
  224|    450|    }
  225|     52|    else {
  226|     52|        if (PyTuple_GET_SIZE(keywords)) {
  ------------------
  |  |   27|     52|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     52|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     52|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (27:30): [True: 52, False: 0]
  |  |  ------------------
  ------------------
  227|     52|            assert(args != NULL);
  ------------------
  |  Branch (227:13): [True: 52, False: 0]
  ------------------
  228|     52|            kwdict = _PyStack_AsDict(args + nargs, keywords);
  229|     52|            if (kwdict == NULL) {
  ------------------
  |  Branch (229:17): [True: 0, False: 52]
  ------------------
  230|      0|                Py_DECREF(argstuple);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  231|      0|                return NULL;
  232|      0|            }
  233|     52|        }
  234|      0|        else {
  235|      0|            keywords = kwdict = NULL;
  236|      0|        }
  237|     52|    }
  238|       |
  239|    502|    PyObject *result = NULL;
  240|    502|    if (_Py_EnterRecursiveCallTstate(tstate, " while calling a Python object") == 0)
  ------------------
  |  Branch (240:9): [True: 502, False: 0]
  ------------------
  241|    502|    {
  242|    502|        result = _PyCFunctionWithKeywords_TrampolineCall(
  ------------------
  |  |  999|    502|    (meth)((self), (args), (kw))
  ------------------
  243|    502|            (PyCFunctionWithKeywords)call, callable, argstuple, kwdict);
  244|    502|        _Py_LeaveRecursiveCallTstate(tstate);
  245|    502|    }
  246|       |
  247|    502|    Py_DECREF(argstuple);
  ------------------
  |  |  430|    502|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    502|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    502|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  248|    502|    if (kwdict != keywords) {
  ------------------
  |  Branch (248:9): [True: 52, False: 450]
  ------------------
  249|     52|        Py_DECREF(kwdict);
  ------------------
  |  |  430|     52|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     52|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     52|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|     52|    }
  251|       |
  252|       |    return _Py_CheckFunctionResult(tstate, callable, result, NULL);
  253|    502|}
PyVectorcall_Function:
  258|    498|{
  259|    498|    return _PyVectorcall_FunctionInline(callable);
  260|    498|}
PyObject_Vectorcall:
  325|  1.23k|{
  326|  1.23k|    PyThreadState *tstate = _PyThreadState_GET();
  327|  1.23k|    return _PyObject_VectorcallTstate(tstate, callable,
  328|  1.23k|                                      args, nargsf, kwnames);
  329|  1.23k|}
_PyObject_Call:
  335|     97|{
  336|     97|    ternaryfunc call;
  337|     97|    PyObject *result;
  338|       |
  339|       |    /* PyObject_Call() must not be called with an exception set,
  340|       |       because it can clear it (directly or indirectly) and so the
  341|       |       caller loses its exception */
  342|     97|    assert(!_PyErr_Occurred(tstate));
  ------------------
  |  Branch (342:5): [True: 97, False: 0]
  ------------------
  343|     97|    assert(PyTuple_Check(args));
  ------------------
  |  Branch (343:5): [True: 97, False: 0]
  ------------------
  344|     97|    assert(kwargs == NULL || PyDict_Check(kwargs));
  ------------------
  |  Branch (344:5): [True: 14, False: 83]
  |  Branch (344:5): [True: 83, False: 0]
  ------------------
  345|     97|    EVAL_CALL_STAT_INC_IF_FUNCTION(EVAL_CALL_API, callable);
  ------------------
  |  |   80|     97|#define EVAL_CALL_STAT_INC_IF_FUNCTION(name, callable) ((void)0)
  ------------------
  346|     97|    vectorcallfunc vector_func = PyVectorcall_Function(callable);
  347|     97|    if (vector_func != NULL) {
  ------------------
  |  Branch (347:9): [True: 84, False: 13]
  ------------------
  348|     84|        return _PyVectorcall_Call(tstate, vector_func, callable, args, kwargs);
  349|     84|    }
  350|     13|    else {
  351|     13|        call = Py_TYPE(callable)->tp_call;
  ------------------
  |  |  213|     13|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     13|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     13|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  352|     13|        if (call == NULL) {
  ------------------
  |  Branch (352:13): [True: 0, False: 13]
  ------------------
  353|      0|            object_is_not_callable(tstate, callable);
  354|      0|            return NULL;
  355|      0|        }
  356|       |
  357|     13|        if (_Py_EnterRecursiveCallTstate(tstate, " while calling a Python object")) {
  ------------------
  |  Branch (357:13): [True: 0, False: 13]
  ------------------
  358|      0|            return NULL;
  359|      0|        }
  360|       |
  361|     13|        result = (*call)(callable, args, kwargs);
  362|       |
  363|     13|        _Py_LeaveRecursiveCallTstate(tstate);
  364|       |
  365|       |        return _Py_CheckFunctionResult(tstate, callable, result, NULL);
  366|     13|    }
  367|     97|}
PyObject_Call:
  371|     97|{
  372|     97|    PyThreadState *tstate = _PyThreadState_GET();
  373|     97|    return _PyObject_Call(tstate, callable, args, kwargs);
  374|     97|}
PyObject_CallOneArg:
  387|    222|{
  388|    222|    EVAL_CALL_STAT_INC_IF_FUNCTION(EVAL_CALL_API, func);
  ------------------
  |  |   80|    222|#define EVAL_CALL_STAT_INC_IF_FUNCTION(name, callable) ((void)0)
  ------------------
  389|    222|    assert(arg != NULL);
  ------------------
  |  Branch (389:5): [True: 222, False: 0]
  ------------------
  390|    222|    PyObject *_args[2];
  391|    222|    PyObject **args = _args + 1;  // For PY_VECTORCALL_ARGUMENTS_OFFSET
  392|    222|    args[0] = arg;
  393|    222|    PyThreadState *tstate = _PyThreadState_GET();
  394|    222|    size_t nargsf = 1 | PY_VECTORCALL_ARGUMENTS_OFFSET;
  ------------------
  |  |  287|    222|    (_Py_STATIC_CAST(size_t, 1) << (8 * sizeof(size_t) - 1))
  |  |  ------------------
  |  |  |  |   34|    222|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  395|       |    return _PyObject_VectorcallTstate(tstate, func, args, nargsf, NULL);
  396|    222|}
_PyFunction_Vectorcall:
  404|    318|{
  405|    318|    assert(PyFunction_Check(func));
  ------------------
  |  Branch (405:5): [True: 318, False: 0]
  ------------------
  406|    318|    PyFunctionObject *f = (PyFunctionObject *)func;
  407|    318|    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
  ------------------
  |  |   37|    318|#define PyVectorcall_NARGS(n) _PyVectorcall_NARGS(n)
  ------------------
  408|    318|    assert(nargs >= 0);
  ------------------
  |  Branch (408:5): [True: 318, False: 0]
  ------------------
  409|    318|    PyThreadState *tstate = _PyThreadState_GET();
  410|    318|    assert(nargs == 0 || stack != NULL);
  ------------------
  |  Branch (410:5): [True: 1, False: 317]
  |  Branch (410:5): [True: 317, False: 0]
  ------------------
  411|    318|    EVAL_CALL_STAT_INC(EVAL_CALL_FUNCTION_VECTORCALL);
  ------------------
  |  |   79|    318|#define EVAL_CALL_STAT_INC(name) ((void)0)
  ------------------
  412|    318|    if (((PyCodeObject *)f->func_code)->co_flags & CO_OPTIMIZED) {
  ------------------
  |  |  118|    318|#define CO_OPTIMIZED    0x0001
  ------------------
  |  Branch (412:9): [True: 318, False: 0]
  ------------------
  413|    318|        return _PyEval_Vector(tstate, f, NULL, stack, nargs, kwnames);
  414|    318|    }
  415|      0|    else {
  416|      0|        return _PyEval_Vector(tstate, f, f->func_globals, stack, nargs, kwnames);
  417|      0|    }
  418|    318|}
_PyObject_Call_Prepend:
  480|    144|{
  481|    144|    assert(PyTuple_Check(args));
  ------------------
  |  Branch (481:5): [True: 144, False: 0]
  ------------------
  482|       |
  483|    144|    PyObject *small_stack[_PY_FASTCALL_SMALL_STACK];
  484|    144|    PyObject **stack;
  485|       |
  486|    144|    Py_ssize_t argcount = PyTuple_GET_SIZE(args);
  ------------------
  |  |   27|    144|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    144|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    144|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  487|    144|    if (argcount + 1 <= (Py_ssize_t)Py_ARRAY_LENGTH(small_stack)) {
  ------------------
  |  |  196|    144|    (sizeof(array) / sizeof((array)[0]))
  ------------------
  |  Branch (487:9): [True: 142, False: 2]
  ------------------
  488|    142|        stack = small_stack;
  489|    142|    }
  490|      2|    else {
  491|      2|        stack = PyMem_Malloc((argcount + 1) * sizeof(PyObject *));
  492|      2|        if (stack == NULL) {
  ------------------
  |  Branch (492:13): [True: 0, False: 2]
  ------------------
  493|      0|            PyErr_NoMemory();
  494|      0|            return NULL;
  495|      0|        }
  496|      2|    }
  497|       |
  498|       |    /* use borrowed references */
  499|    144|    stack[0] = obj;
  500|    144|    memcpy(&stack[1],
  501|    144|           _PyTuple_ITEMS(args),
  ------------------
  |  |   26|    144|#define _PyTuple_ITEMS(op) _Py_RVALUE(_PyTuple_CAST(op)->ob_item)
  |  |  ------------------
  |  |  |  |  277|    288|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 144, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  502|      0|           argcount * sizeof(PyObject *));
  503|       |
  504|      0|    PyObject *result = _PyObject_VectorcallDictTstate(tstate, callable,
  505|    144|                                                      stack, argcount + 1,
  506|    144|                                                      kwargs);
  507|    144|    if (stack != small_stack) {
  ------------------
  |  Branch (507:9): [True: 2, False: 142]
  ------------------
  508|      2|        PyMem_Free(stack);
  509|      2|    }
  510|    144|    return result;
  511|    144|}
PyObject_CallFunction:
  568|     20|{
  569|     20|    va_list va;
  570|     20|    PyObject *result;
  571|     20|    PyThreadState *tstate = _PyThreadState_GET();
  572|       |
  573|     20|    va_start(va, format);
  574|     20|    result = _PyObject_CallFunctionVa(tstate, callable, format, va);
  575|     20|    va_end(va);
  576|       |
  577|     20|    return result;
  578|     20|}
PyObject_CallMethod:
  631|     20|{
  632|     20|    PyThreadState *tstate = _PyThreadState_GET();
  633|       |
  634|     20|    if (obj == NULL || name == NULL) {
  ------------------
  |  Branch (634:9): [True: 0, False: 20]
  |  Branch (634:24): [True: 0, False: 20]
  ------------------
  635|      0|        return null_error(tstate);
  636|      0|    }
  637|       |
  638|     20|    PyObject *callable = PyObject_GetAttrString(obj, name);
  639|     20|    if (callable == NULL) {
  ------------------
  |  Branch (639:9): [True: 0, False: 20]
  ------------------
  640|      0|        return NULL;
  641|      0|    }
  642|       |
  643|     20|    va_list va;
  644|     20|    va_start(va, format);
  645|     20|    PyObject *retval = callmethod(tstate, callable, format, va);
  646|     20|    va_end(va);
  647|       |
  648|     20|    Py_DECREF(callable);
  ------------------
  |  |  430|     20|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     20|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     20|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  649|     20|    return retval;
  650|     20|}
_PyObject_CallMethod:
  681|      6|{
  682|      6|    PyThreadState *tstate = _PyThreadState_GET();
  683|      6|    if (obj == NULL || name == NULL) {
  ------------------
  |  Branch (683:9): [True: 0, False: 6]
  |  Branch (683:24): [True: 0, False: 6]
  ------------------
  684|      0|        return null_error(tstate);
  685|      0|    }
  686|       |
  687|      6|    PyObject *callable = PyObject_GetAttr(obj, name);
  688|      6|    if (callable == NULL) {
  ------------------
  |  Branch (688:9): [True: 0, False: 6]
  ------------------
  689|      0|        return NULL;
  690|      0|    }
  691|       |
  692|      6|    va_list va;
  693|      6|    va_start(va, format);
  694|      6|    PyObject *retval = callmethod(tstate, callable, format, va);
  695|      6|    va_end(va);
  696|       |
  697|      6|    Py_DECREF(callable);
  ------------------
  |  |  430|      6|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      6|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  698|      6|    return retval;
  699|      6|}
_PyObject_VectorcallPrepend:
  835|     69|{
  836|     69|    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
  ------------------
  |  |   37|     69|#define PyVectorcall_NARGS(n) _PyVectorcall_NARGS(n)
  ------------------
  837|     69|    assert(nargs == 0 || args[nargs-1]);
  ------------------
  |  Branch (837:5): [True: 0, False: 69]
  |  Branch (837:5): [True: 69, False: 0]
  ------------------
  838|       |
  839|     69|    PyObject *result;
  840|     69|    if (nargsf & PY_VECTORCALL_ARGUMENTS_OFFSET) {
  ------------------
  |  |  287|     69|    (_Py_STATIC_CAST(size_t, 1) << (8 * sizeof(size_t) - 1))
  |  |  ------------------
  |  |  |  |   34|     69|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (840:9): [True: 68, False: 1]
  ------------------
  841|       |        /* PY_VECTORCALL_ARGUMENTS_OFFSET is set, so we are allowed to mutate the vector */
  842|     68|        PyObject **newargs = (PyObject**)args - 1;
  843|     68|        nargs += 1;
  844|     68|        PyObject *tmp = newargs[0];
  845|     68|        newargs[0] = arg;
  846|     68|        assert(newargs[nargs-1]);
  ------------------
  |  Branch (846:9): [True: 68, False: 0]
  ------------------
  847|     68|        result = _PyObject_VectorcallTstate(tstate, callable, newargs,
  848|     68|                                            nargs, kwnames);
  849|     68|        newargs[0] = tmp;
  850|     68|    }
  851|      1|    else {
  852|      1|        Py_ssize_t nkwargs = (kwnames == NULL) ? 0 : PyTuple_GET_SIZE(kwnames);
  ------------------
  |  |   27|      0|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (852:30): [True: 1, False: 0]
  ------------------
  853|      1|        Py_ssize_t totalargs = nargs + nkwargs;
  854|      1|        if (totalargs == 0) {
  ------------------
  |  Branch (854:13): [True: 0, False: 1]
  ------------------
  855|      0|            return _PyObject_VectorcallTstate(tstate, callable, &arg, 1, NULL);
  856|      0|        }
  857|       |
  858|      1|        PyObject *newargs_stack[_PY_FASTCALL_SMALL_STACK];
  859|      1|        PyObject **newargs;
  860|      1|        if (totalargs <= (Py_ssize_t)Py_ARRAY_LENGTH(newargs_stack) - 1) {
  ------------------
  |  |  196|      1|    (sizeof(array) / sizeof((array)[0]))
  ------------------
  |  Branch (860:13): [True: 1, False: 0]
  ------------------
  861|      1|            newargs = newargs_stack;
  862|      1|        }
  863|      0|        else {
  864|      0|            newargs = PyMem_Malloc((totalargs+1) * sizeof(PyObject *));
  865|      0|            if (newargs == NULL) {
  ------------------
  |  Branch (865:17): [True: 0, False: 0]
  ------------------
  866|      0|                _PyErr_NoMemory(tstate);
  867|      0|                return NULL;
  868|      0|            }
  869|      0|        }
  870|       |        /* use borrowed references */
  871|      1|        newargs[0] = arg;
  872|       |        /* bpo-37138: since totalargs > 0, it's impossible that args is NULL.
  873|       |         * We need this, since calling memcpy() with a NULL pointer is
  874|       |         * undefined behaviour. */
  875|      1|        assert(args != NULL);
  ------------------
  |  Branch (875:9): [True: 1, False: 0]
  ------------------
  876|      1|        memcpy(newargs + 1, args, totalargs * sizeof(PyObject *));
  877|      1|        result = _PyObject_VectorcallTstate(tstate, callable,
  878|      1|                                            newargs, nargs+1, kwnames);
  879|      1|        if (newargs != newargs_stack) {
  ------------------
  |  Branch (879:13): [True: 0, False: 1]
  ------------------
  880|      0|            PyMem_Free(newargs);
  881|      0|        }
  882|      1|    }
  883|     69|    return result;
  884|     69|}
PyObject_VectorcallMethod:
  889|    128|{
  890|    128|    assert(name != NULL);
  ------------------
  |  Branch (890:5): [True: 128, False: 0]
  ------------------
  891|    128|    assert(args != NULL);
  ------------------
  |  Branch (891:5): [True: 128, False: 0]
  ------------------
  892|    128|    assert(PyVectorcall_NARGS(nargsf) >= 1);
  ------------------
  |  Branch (892:5): [True: 128, False: 0]
  ------------------
  893|       |
  894|    128|    PyThreadState *tstate = _PyThreadState_GET();
  895|    128|    _PyCStackRef self, method;
  896|    128|    _PyThreadState_PushCStackRef(tstate, &self);
  897|    128|    _PyThreadState_PushCStackRef(tstate, &method);
  898|       |    /* Use args[0] as "self" argument */
  899|    128|    self.ref = PyStackRef_FromPyObjectBorrow(args[0]);
  900|    128|    int unbound = _PyObject_GetMethodStackRef(tstate, &self.ref, name, &method.ref);
  901|    128|    if (unbound < 0) {
  ------------------
  |  Branch (901:9): [True: 0, False: 128]
  ------------------
  902|      0|        _PyThreadState_PopCStackRef(tstate, &method);
  903|      0|        _PyThreadState_PopCStackRef(tstate, &self);
  904|      0|        return NULL;
  905|      0|    }
  906|       |
  907|    128|    PyObject *callable = PyStackRef_AsPyObjectBorrow(method.ref);
  908|    128|    PyObject *self_obj = PyStackRef_AsPyObjectBorrow(self.ref);
  909|    128|    PyObject *result;
  910|       |
  911|    128|    EVAL_CALL_STAT_INC_IF_FUNCTION(EVAL_CALL_METHOD, callable);
  ------------------
  |  |   80|    128|#define EVAL_CALL_STAT_INC_IF_FUNCTION(name, callable) ((void)0)
  ------------------
  912|    128|    if (self_obj == NULL) {
  ------------------
  |  Branch (912:9): [True: 39, False: 89]
  ------------------
  913|       |        /* Skip "self". We can keep PY_VECTORCALL_ARGUMENTS_OFFSET since
  914|       |         * args[-1] in the onward call is args[0] here. */
  915|     39|        result = _PyObject_VectorcallTstate(tstate, callable,
  916|     39|                                            args + 1, nargsf - 1, kwnames);
  917|     39|    }
  918|     89|    else if (self_obj == args[0]) {
  ------------------
  |  Branch (918:14): [True: 89, False: 0]
  ------------------
  919|       |        /* We must remove PY_VECTORCALL_ARGUMENTS_OFFSET since
  920|       |         * that would be interpreted as allowing to change args[-1] */
  921|     89|        result = _PyObject_VectorcallTstate(tstate, callable, args,
  922|     89|                                            nargsf & ~PY_VECTORCALL_ARGUMENTS_OFFSET,
  ------------------
  |  |  287|     89|    (_Py_STATIC_CAST(size_t, 1) << (8 * sizeof(size_t) - 1))
  |  |  ------------------
  |  |  |  |   34|     89|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  923|     89|                                            kwnames);
  924|     89|    }
  925|      0|    else {
  926|       |        /* classmethod: self_obj is the type, not args[0]. Replace
  927|       |         * args[0] with self_obj and call the underlying callable. */
  928|      0|        result = _PyObject_VectorcallPrepend(tstate, callable, self_obj,
  929|      0|                                             args + 1, nargsf - 1, kwnames);
  930|      0|    }
  931|    128|    _PyThreadState_PopCStackRef(tstate, &method);
  932|    128|    _PyThreadState_PopCStackRef(tstate, &self);
  933|    128|    return result;
  934|    128|}
PyObject_CallMethodObjArgs:
  939|     25|{
  940|     25|    PyThreadState *tstate = _PyThreadState_GET();
  941|     25|    if (obj == NULL || name == NULL) {
  ------------------
  |  Branch (941:9): [True: 0, False: 25]
  |  Branch (941:24): [True: 0, False: 25]
  ------------------
  942|      0|        return null_error(tstate);
  943|      0|    }
  944|       |
  945|     25|    _PyCStackRef self, method;
  946|     25|    _PyThreadState_PushCStackRef(tstate, &self);
  947|     25|    _PyThreadState_PushCStackRef(tstate, &method);
  948|     25|    self.ref = PyStackRef_FromPyObjectBorrow(obj);
  949|     25|    int res = _PyObject_GetMethodStackRef(tstate, &self.ref, name, &method.ref);
  950|     25|    if (res < 0) {
  ------------------
  |  Branch (950:9): [True: 0, False: 25]
  ------------------
  951|      0|        _PyThreadState_PopCStackRef(tstate, &method);
  952|      0|        _PyThreadState_PopCStackRef(tstate, &self);
  953|      0|        return NULL;
  954|      0|    }
  955|     25|    PyObject *callable = PyStackRef_AsPyObjectBorrow(method.ref);
  956|     25|    PyObject *self_obj = PyStackRef_AsPyObjectBorrow(self.ref);
  957|       |
  958|     25|    va_list vargs;
  959|     25|    va_start(vargs, name);
  960|     25|    PyObject *result = object_vacall(tstate, self_obj, callable, vargs);
  961|     25|    va_end(vargs);
  962|       |
  963|     25|    _PyThreadState_PopCStackRef(tstate, &method);
  964|     25|    _PyThreadState_PopCStackRef(tstate, &self);
  965|     25|    return result;
  966|     25|}
PyObject_CallFunctionObjArgs:
  971|      5|{
  972|      5|    PyThreadState *tstate = _PyThreadState_GET();
  973|      5|    va_list vargs;
  974|      5|    PyObject *result;
  975|       |
  976|      5|    va_start(vargs, callable);
  977|      5|    result = object_vacall(tstate, NULL, callable, vargs);
  978|      5|    va_end(vargs);
  979|       |
  980|      5|    return result;
  981|      5|}
_PyStack_AsDict:
  988|     62|{
  989|     62|    Py_ssize_t nkwargs;
  990|       |
  991|     62|    assert(kwnames != NULL);
  ------------------
  |  Branch (991:5): [True: 62, False: 0]
  ------------------
  992|     62|    nkwargs = PyTuple_GET_SIZE(kwnames);
  ------------------
  |  |   27|     62|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     62|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     62|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  993|     62|    return _PyDict_FromItems(&PyTuple_GET_ITEM(kwnames, 0), 1,
  ------------------
  |  |   29|     62|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|     62|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     62|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (993:31): [True: 62, False: 0]
  ------------------
  994|     62|                             values, 1, nkwargs);
  995|     62|}
_PyStack_UnpackDict:
 1018|     30|{
 1019|     30|    assert(nargs >= 0);
  ------------------
  |  Branch (1019:5): [True: 30, False: 0]
  ------------------
 1020|     30|    assert(kwargs != NULL);
  ------------------
  |  Branch (1020:5): [True: 30, False: 0]
  ------------------
 1021|     30|    assert(PyDict_Check(kwargs));
  ------------------
  |  Branch (1021:5): [True: 30, False: 0]
  ------------------
 1022|       |
 1023|     30|    Py_ssize_t nkwargs = PyDict_GET_SIZE(kwargs);
  ------------------
  |  |   63|     30|#define PyDict_GET_SIZE(op) PyDict_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     30|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     30|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1024|       |    /* Check for overflow in the PyMem_Malloc() call below. The subtraction
 1025|       |     * in this check cannot overflow: both maxnargs and nkwargs are
 1026|       |     * non-negative signed integers, so their difference fits in the type. */
 1027|     30|    Py_ssize_t maxnargs = PY_SSIZE_T_MAX / sizeof(args[0]) - 1;
  ------------------
  |  |  137|     30|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
 1028|     30|    if (nargs > maxnargs - nkwargs) {
  ------------------
  |  Branch (1028:9): [True: 0, False: 30]
  ------------------
 1029|      0|        _PyErr_NoMemory(tstate);
 1030|      0|        return NULL;
 1031|      0|    }
 1032|       |
 1033|       |    /* Add 1 to support PY_VECTORCALL_ARGUMENTS_OFFSET */
 1034|     30|    PyObject **stack = PyMem_Malloc((1 + nargs + nkwargs) * sizeof(args[0]));
 1035|     30|    if (stack == NULL) {
  ------------------
  |  Branch (1035:9): [True: 0, False: 30]
  ------------------
 1036|      0|        _PyErr_NoMemory(tstate);
 1037|      0|        return NULL;
 1038|      0|    }
 1039|       |
 1040|     30|    PyObject *kwnames = PyTuple_New(nkwargs);
 1041|     30|    if (kwnames == NULL) {
  ------------------
  |  Branch (1041:9): [True: 0, False: 30]
  ------------------
 1042|      0|        PyMem_Free(stack);
 1043|      0|        return NULL;
 1044|      0|    }
 1045|       |
 1046|     30|    stack++;  /* For PY_VECTORCALL_ARGUMENTS_OFFSET */
 1047|       |
 1048|       |    /* Copy positional arguments (borrowed references) */
 1049|    118|    for (Py_ssize_t i = 0; i < nargs; i++) {
  ------------------
  |  Branch (1049:28): [True: 88, False: 30]
  ------------------
 1050|     88|        stack[i] = args[i];
 1051|     88|    }
 1052|       |
 1053|     30|    PyObject **kwstack = stack + nargs;
 1054|       |    /* This loop doesn't support lookup function mutating the dictionary
 1055|       |       to change its size. It's a deliberate choice for speed, this function is
 1056|       |       called in the performance critical hot code. */
 1057|     30|    Py_ssize_t pos = 0, i = 0;
 1058|     30|    PyObject *key, *value;
 1059|     30|    unsigned long keys_are_strings = Py_TPFLAGS_UNICODE_SUBCLASS;
  ------------------
  |  |  555|     30|#define Py_TPFLAGS_UNICODE_SUBCLASS     (1UL << 28)
  ------------------
 1060|     91|    while (PyDict_Next(kwargs, &pos, &key, &value)) {
  ------------------
  |  Branch (1060:12): [True: 61, False: 30]
  ------------------
 1061|     61|        keys_are_strings &= Py_TYPE(key)->tp_flags;
  ------------------
  |  |  213|     61|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     61|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     61|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1062|     61|        PyTuple_SET_ITEM(kwnames, i, Py_NewRef(key));
  ------------------
  |  |   40|     61|    PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|     61|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     61|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|     61|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     61|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1063|     61|        kwstack[i] = Py_NewRef(value);
  ------------------
  |  |  550|     61|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     61|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     61|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1064|     61|        i++;
 1065|     61|    }
 1066|       |
 1067|       |    /* keys_are_strings has the value Py_TPFLAGS_UNICODE_SUBCLASS if that
 1068|       |     * flag is set for all keys. Otherwise, keys_are_strings equals 0.
 1069|       |     * We do this check once at the end instead of inside the loop above
 1070|       |     * because it simplifies the deallocation in the failing case.
 1071|       |     * It happens to also make the loop above slightly more efficient. */
 1072|     30|    if (!keys_are_strings) {
  ------------------
  |  Branch (1072:9): [True: 0, False: 30]
  ------------------
 1073|      0|        _PyErr_SetString(tstate, PyExc_TypeError,
 1074|      0|                         "keywords must be strings");
 1075|      0|        _PyStack_UnpackDict_Free(stack, nargs, kwnames);
 1076|      0|        return NULL;
 1077|      0|    }
 1078|       |
 1079|     30|    *p_kwnames = kwnames;
 1080|     30|    return stack;
 1081|     30|}
_PyStack_UnpackDict_Free:
 1086|     30|{
 1087|       |    /* Only decref kwargs values, positional args are borrowed */
 1088|     30|    Py_ssize_t nkwargs = PyTuple_GET_SIZE(kwnames);
  ------------------
  |  |   27|     30|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     30|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     30|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1089|     91|    for (Py_ssize_t i = 0; i < nkwargs; i++) {
  ------------------
  |  Branch (1089:28): [True: 61, False: 30]
  ------------------
 1090|     61|        Py_DECREF(stack[nargs + i]);
  ------------------
  |  |  430|     61|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     61|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     61|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1091|     61|    }
 1092|     30|    _PyStack_UnpackDict_FreeNoDecRef(stack, kwnames);
 1093|     30|}
_PyStack_UnpackDict_FreeNoDecRef:
 1097|     30|{
 1098|     30|    PyMem_Free((PyObject **)stack - 1);
 1099|     30|    Py_DECREF(kwnames);
  ------------------
  |  |  430|     30|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     30|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     30|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1100|     30|}
call.c:_PyVectorcall_Call:
  266|     84|{
  267|     84|    assert(func != NULL);
  ------------------
  |  Branch (267:5): [True: 84, False: 0]
  ------------------
  268|       |
  269|     84|    Py_ssize_t nargs = PyTuple_GET_SIZE(tuple);
  ------------------
  |  |   27|     84|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     84|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     84|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  270|       |
  271|       |    /* Fast path for no keywords */
  272|     84|    if (kwargs == NULL || PyDict_GET_SIZE(kwargs) == 0) {
  ------------------
  |  |   63|     83|#define PyDict_GET_SIZE(op) PyDict_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     83|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     83|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (272:9): [True: 1, False: 83]
  |  Branch (272:27): [True: 83, False: 0]
  ------------------
  273|     84|        return func(callable, _PyTuple_ITEMS(tuple), nargs, NULL);
  ------------------
  |  |   26|     84|#define _PyTuple_ITEMS(op) _Py_RVALUE(_PyTuple_CAST(op)->ob_item)
  |  |  ------------------
  |  |  |  |  277|    168|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 84, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  274|     84|    }
  275|       |
  276|       |    /* Convert arguments & call */
  277|      0|    PyObject *const *args;
  278|      0|    PyObject *kwnames;
  279|      0|    args = _PyStack_UnpackDict(tstate,
  280|      0|                               _PyTuple_ITEMS(tuple), nargs,
  ------------------
  |  |   26|      0|#define _PyTuple_ITEMS(op) _Py_RVALUE(_PyTuple_CAST(op)->ob_item)
  |  |  ------------------
  |  |  |  |  277|      0|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  281|      0|                               kwargs, &kwnames);
  282|      0|    if (args == NULL) {
  ------------------
  |  Branch (282:9): [True: 0, False: 0]
  ------------------
  283|      0|        return NULL;
  284|      0|    }
  285|      0|    PyObject *result = func(callable, args,
  286|      0|                            nargs | PY_VECTORCALL_ARGUMENTS_OFFSET, kwnames);
  ------------------
  |  |  287|      0|    (_Py_STATIC_CAST(size_t, 1) << (8 * sizeof(size_t) - 1))
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  287|      0|    _PyStack_UnpackDict_Free(args, nargs, kwnames);
  288|       |
  289|       |    return _Py_CheckFunctionResult(tstate, callable, result, NULL);
  290|      0|}
call.c:_PyObject_CallFunctionVa:
  519|     46|{
  520|     46|    PyObject* small_stack[_PY_FASTCALL_SMALL_STACK];
  521|     46|    const Py_ssize_t small_stack_len = Py_ARRAY_LENGTH(small_stack);
  ------------------
  |  |  196|     46|    (sizeof(array) / sizeof((array)[0]))
  ------------------
  522|     46|    PyObject **stack;
  523|     46|    Py_ssize_t nargs, i;
  524|     46|    PyObject *result;
  525|       |
  526|     46|    if (callable == NULL) {
  ------------------
  |  Branch (526:9): [True: 0, False: 46]
  ------------------
  527|      0|        return null_error(tstate);
  528|      0|    }
  529|       |
  530|     46|    if (!format || !*format) {
  ------------------
  |  Branch (530:9): [True: 18, False: 28]
  |  Branch (530:20): [True: 1, False: 27]
  ------------------
  531|     19|        return _PyObject_CallNoArgsTstate(tstate, callable);
  532|     19|    }
  533|       |
  534|     27|    stack = _Py_VaBuildStack(small_stack, small_stack_len,
  535|     27|                             format, va, &nargs);
  536|     27|    if (stack == NULL) {
  ------------------
  |  Branch (536:9): [True: 0, False: 27]
  ------------------
  537|      0|        return NULL;
  538|      0|    }
  539|     27|    EVAL_CALL_STAT_INC_IF_FUNCTION(EVAL_CALL_API, callable);
  ------------------
  |  |   80|     27|#define EVAL_CALL_STAT_INC_IF_FUNCTION(name, callable) ((void)0)
  ------------------
  540|     27|    if (nargs == 1 && PyTuple_Check(stack[0])) {
  ------------------
  |  |   27|      4|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TUPLE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      4|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 1, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (540:9): [True: 4, False: 23]
  ------------------
  541|       |        /* Special cases for backward compatibility:
  542|       |           - PyObject_CallFunction(func, "O", tuple) calls func(*tuple)
  543|       |           - PyObject_CallFunction(func, "(OOO)", arg1, arg2, arg3) calls
  544|       |             func(*(arg1, arg2, arg3)): func(arg1, arg2, arg3) */
  545|      1|        PyObject *args = stack[0];
  546|      1|        result = _PyObject_VectorcallTstate(tstate, callable,
  547|      1|                                            _PyTuple_ITEMS(args),
  ------------------
  |  |   26|      1|#define _PyTuple_ITEMS(op) _Py_RVALUE(_PyTuple_CAST(op)->ob_item)
  |  |  ------------------
  |  |  |  |  277|      2|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  548|      1|                                            PyTuple_GET_SIZE(args),
  ------------------
  |  |   27|      1|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  549|      1|                                            NULL);
  550|      1|    }
  551|     26|    else {
  552|     26|        result = _PyObject_VectorcallTstate(tstate, callable,
  553|     26|                                            stack, nargs, NULL);
  554|     26|    }
  555|       |
  556|    134|    for (i = 0; i < nargs; ++i) {
  ------------------
  |  Branch (556:17): [True: 107, False: 27]
  ------------------
  557|    107|        Py_DECREF(stack[i]);
  ------------------
  |  |  430|    107|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    107|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    107|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  558|    107|    }
  559|     27|    if (stack != small_stack) {
  ------------------
  |  Branch (559:9): [True: 6, False: 21]
  ------------------
  560|      6|        PyMem_Free(stack);
  561|      6|    }
  562|     27|    return result;
  563|     27|}
call.c:callmethod:
  617|     26|{
  618|     26|    assert(callable != NULL);
  ------------------
  |  Branch (618:5): [True: 26, False: 0]
  ------------------
  619|     26|    if (!PyCallable_Check(callable)) {
  ------------------
  |  Branch (619:9): [True: 0, False: 26]
  ------------------
  620|      0|        _PyErr_Format(tstate, PyExc_TypeError,
  621|      0|                      "attribute of type '%.200s' is not callable",
  622|      0|                      Py_TYPE(callable)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  623|      0|        return NULL;
  624|      0|    }
  625|       |
  626|     26|    return _PyObject_CallFunctionVa(tstate, callable, format, va);
  627|     26|}
call.c:object_vacall:
  772|     30|{
  773|     30|    PyObject *small_stack[_PY_FASTCALL_SMALL_STACK];
  774|     30|    PyObject **stack;
  775|     30|    Py_ssize_t nargs;
  776|     30|    PyObject *result;
  777|     30|    Py_ssize_t i;
  778|     30|    va_list countva;
  779|       |
  780|     30|    if (callable == NULL) {
  ------------------
  |  Branch (780:9): [True: 0, False: 30]
  ------------------
  781|      0|        return null_error(tstate);
  782|      0|    }
  783|       |
  784|       |    /* Count the number of arguments */
  785|     30|    va_copy(countva, vargs);
  786|     30|    nargs = base ? 1 : 0;
  ------------------
  |  Branch (786:13): [True: 0, False: 30]
  ------------------
  787|     95|    while (1) {
  ------------------
  |  Branch (787:12): [True: 95, Folded]
  ------------------
  788|     95|        PyObject *arg = va_arg(countva, PyObject *);
  789|     95|        if (arg == NULL) {
  ------------------
  |  Branch (789:13): [True: 30, False: 65]
  ------------------
  790|     30|            break;
  791|     30|        }
  792|     65|        nargs++;
  793|     65|    }
  794|     30|    va_end(countva);
  795|       |
  796|       |    /* Copy arguments */
  797|     30|    if (nargs <= (Py_ssize_t)Py_ARRAY_LENGTH(small_stack)) {
  ------------------
  |  |  196|     30|    (sizeof(array) / sizeof((array)[0]))
  ------------------
  |  Branch (797:9): [True: 30, False: 0]
  ------------------
  798|     30|        stack = small_stack;
  799|     30|    }
  800|      0|    else {
  801|      0|        stack = PyMem_Malloc(nargs * sizeof(stack[0]));
  802|      0|        if (stack == NULL) {
  ------------------
  |  Branch (802:13): [True: 0, False: 0]
  ------------------
  803|      0|            PyErr_NoMemory();
  804|      0|            return NULL;
  805|      0|        }
  806|      0|    }
  807|       |
  808|     30|    i = 0;
  809|     30|    if (base) {
  ------------------
  |  Branch (809:9): [True: 0, False: 30]
  ------------------
  810|      0|        stack[i++] = base;
  811|      0|    }
  812|       |
  813|     95|    for (; i < nargs; ++i) {
  ------------------
  |  Branch (813:12): [True: 65, False: 30]
  ------------------
  814|     65|        stack[i] = va_arg(vargs, PyObject *);
  815|     65|    }
  816|       |
  817|       |#ifdef Py_STATS
  818|       |    if (PyFunction_Check(callable)) {
  819|       |        EVAL_CALL_STAT_INC(EVAL_CALL_API);
  820|       |    }
  821|       |#endif
  822|       |    /* Call the function */
  823|     30|    result = _PyObject_VectorcallTstate(tstate, callable, stack, nargs, NULL);
  824|       |
  825|     30|    if (stack != small_stack) {
  ------------------
  |  Branch (825:9): [True: 0, False: 30]
  ------------------
  826|      0|        PyMem_Free(stack);
  827|      0|    }
  828|     30|    return result;
  829|     30|}

PyCell_New:
   12|    105|{
   13|    105|    PyCellObject *op;
   14|       |
   15|    105|    op = (PyCellObject *)PyObject_GC_New(PyCellObject, &PyCell_Type);
  ------------------
  |  |  181|    105|    _Py_CAST(type*, _PyObject_GC_New(typeobj))
  |  |  ------------------
  |  |  |  |   37|    105|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
   16|    105|    if (op == NULL)
  ------------------
  |  Branch (16:9): [True: 0, False: 105]
  ------------------
   17|      0|        return NULL;
   18|    105|    op->ob_ref = Py_XNewRef(obj);
  ------------------
  |  |  551|    105|#  define Py_XNewRef(obj) _Py_XNewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    105|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    105|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   19|       |
   20|    105|    _PyObject_GC_TRACK(op);
  ------------------
  |  |  513|    105|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    105|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    105|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   21|    105|    return (PyObject *)op;
   22|    105|}
PyCell_Set:
   67|     80|{
   68|     80|    if (!PyCell_Check(op)) {
  ------------------
  |  |   18|     80|#define PyCell_Check(op) Py_IS_TYPE((op), &PyCell_Type)
  |  |  ------------------
  |  |  |  |  215|     80|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     80|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     80|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (68:9): [True: 0, False: 80]
  ------------------
   69|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
   70|      0|        return -1;
   71|      0|    }
   72|     80|    PyCell_SetTakeRef((PyCellObject *)op, Py_XNewRef(value));
  ------------------
  |  |  551|     80|#  define Py_XNewRef(obj) _Py_XNewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     80|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     80|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   73|     80|    return 0;
   74|     80|}
cellobject.c:cell_dealloc:
   78|     83|{
   79|     83|    PyCellObject *op = _PyCell_CAST(self);
  ------------------
  |  |    8|     83|#define _PyCell_CAST(op) _Py_CAST(PyCellObject*, (op))
  |  |  ------------------
  |  |  |  |   37|     83|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
   80|     83|    _PyObject_GC_UNTRACK(op);
  ------------------
  |  |  515|     83|        _PyObject_GC_UNTRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     83|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     83|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   81|     83|    Py_XDECREF(op->ob_ref);
  ------------------
  |  |  524|     83|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     83|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     83|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   82|     83|    PyObject_GC_Del(op);
   83|     83|}
cellobject.c:cell_traverse:
  132|     26|{
  133|     26|    PyCellObject *op = _PyCell_CAST(self);
  ------------------
  |  |    8|     26|#define _PyCell_CAST(op) _Py_CAST(PyCellObject*, (op))
  |  |  ------------------
  |  |  |  |   37|     26|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  134|     26|    Py_VISIT(op->ob_ref);
  ------------------
  |  |  194|     26|    do {                                                                \
  |  |  195|     26|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 26, False: 0]
  |  |  ------------------
  |  |  196|     26|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|     26|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     26|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|     26|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 26]
  |  |  ------------------
  |  |  198|     26|                return vret;                                            \
  |  |  199|     26|        }                                                               \
  |  |  200|     26|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 26]
  |  |  ------------------
  ------------------
  135|     26|    return 0;
  136|     26|}

PyMethod_New:
   66|    196|{
   67|    196|    if (self == NULL) {
  ------------------
  |  Branch (67:9): [True: 0, False: 196]
  ------------------
   68|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
   69|      0|        return NULL;
   70|      0|    }
   71|    196|    PyMethodObject *im = _Py_FREELIST_POP(PyMethodObject, pymethodobjects);
  ------------------
  |  |   43|    196|    _Py_CAST(TYPE*, _PyFreeList_Pop(&_Py_freelists_GET()->NAME))
  |  |  ------------------
  |  |  |  |   37|    196|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
   72|    196|    if (im == NULL) {
  ------------------
  |  Branch (72:9): [True: 2, False: 194]
  ------------------
   73|      2|        im = PyObject_GC_New(PyMethodObject, &PyMethod_Type);
  ------------------
  |  |  181|      2|    _Py_CAST(type*, _PyObject_GC_New(typeobj))
  |  |  ------------------
  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
   74|      2|        if (im == NULL) {
  ------------------
  |  Branch (74:13): [True: 0, False: 2]
  ------------------
   75|      0|            return NULL;
   76|      0|        }
   77|      2|    }
   78|    196|    im->im_weakreflist = NULL;
   79|    196|    im->im_func = Py_NewRef(func);
  ------------------
  |  |  550|    196|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    196|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    196|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   80|    196|    im->im_self = Py_NewRef(self);
  ------------------
  |  |  550|    196|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    196|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    196|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   81|    196|    im->vectorcall = method_vectorcall;
   82|    196|    _PyObject_GC_TRACK(im);
  ------------------
  |  |  513|    196|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    196|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    196|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   83|    196|    return (PyObject *)im;
   84|    196|}
classobject.c:method_vectorcall:
   49|     69|{
   50|     69|    assert(Py_IS_TYPE(method, &PyMethod_Type));
  ------------------
  |  Branch (50:5): [True: 69, False: 0]
  ------------------
   51|       |
   52|     69|    PyThreadState *tstate = _PyThreadState_GET();
   53|     69|    PyObject *self = PyMethod_GET_SELF(method);
  ------------------
  |  |   42|     69|#define PyMethod_GET_SELF(meth) PyMethod_GET_SELF(_PyObject_CAST(meth))
  |  |  ------------------
  |  |  |  |  171|     69|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     69|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   54|     69|    PyObject *func = PyMethod_GET_FUNCTION(method);
  ------------------
  |  |   37|     69|#define PyMethod_GET_FUNCTION(meth) PyMethod_GET_FUNCTION(_PyObject_CAST(meth))
  |  |  ------------------
  |  |  |  |  171|     69|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     69|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   55|     69|    return _PyObject_VectorcallPrepend(tstate, func, self, args, nargsf, kwnames);
   56|     69|}
classobject.c:method_dealloc:
  214|    196|{
  215|    196|    PyMethodObject *im = _PyMethodObject_CAST(self);
  ------------------
  |  |   16|    196|#define _PyMethodObject_CAST(op) _Py_CAST(PyMethodObject*, (op))
  |  |  ------------------
  |  |  |  |   37|    196|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  216|    196|    _PyObject_GC_UNTRACK(im);
  ------------------
  |  |  515|    196|        _PyObject_GC_UNTRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    196|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    196|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  217|    196|    FT_CLEAR_WEAKREFS(self, im->im_weakreflist);
  ------------------
  |  |   47|    196|    do {                                            \
  |  |   48|    196|        assert(Py_REFCNT(obj) == 0);                \
  |  |   49|    196|        if (weakref_list != NULL) {                 \
  |  |  ------------------
  |  |  |  Branch (49:13): [True: 0, False: 196]
  |  |  ------------------
  |  |   50|      0|            PyObject_ClearWeakRefs(obj);            \
  |  |   51|      0|        }                                           \
  |  |   52|    196|    } while (0)
  |  |  ------------------
  |  |  |  Branch (52:14): [Folded, False: 196]
  |  |  ------------------
  ------------------
  |  Branch (217:5): [True: 196, False: 0]
  ------------------
  218|    196|    Py_DECREF(im->im_func);
  ------------------
  |  |  430|    196|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    196|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    196|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  219|    196|    Py_XDECREF(im->im_self);
  ------------------
  |  |  524|    196|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    196|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    196|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  220|    196|    assert(Py_IS_TYPE(self, &PyMethod_Type));
  ------------------
  |  Branch (220:5): [True: 196, False: 0]
  ------------------
  221|    196|    _Py_FREELIST_FREE(pymethodobjects, (PyObject *)im, PyObject_GC_Del);
  ------------------
  |  |   35|    196|    _PyFreeList_Free(&_Py_freelists_GET()->NAME, _PyObject_CAST(op), \
  |  |  ------------------
  |  |  |  |  171|    196|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    196|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   36|    196|                     Py_ ## NAME ## _MAXFREELIST, freefunc)
  |  |  ------------------
  |  |  |  |   33|    196|#  define Py_pymethodobjects_MAXFREELIST 20
  |  |  ------------------
  ------------------
  222|    196|}

bytearrayobject.c:bytearray___init__:
   19|      1|{
   20|      1|    int return_value = -1;
   21|      1|    #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
   22|       |
   23|      1|    #define NUM_KEYWORDS 3
   24|      1|    static struct {
   25|      1|        PyGC_Head _this_is_not_used;
   26|      1|        PyObject_VAR_HEAD
   27|      1|        Py_hash_t ob_hash;
   28|      1|        PyObject *ob_item[NUM_KEYWORDS];
   29|      1|    } _kwtuple = {
   30|      1|        .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
  ------------------
  |  |   97|      1|    {                                     \
  |  |   98|      1|        PyObject_HEAD_INIT(type)          \
  |  |  ------------------
  |  |  |  |   90|      1|    {                               \
  |  |  |  |   91|      1|        { _Py_STATIC_IMMORTAL_INITIAL_REFCNT },    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   50|      1|#define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   47|      1|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      1|#define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  583|      1|#define _Py_STATICALLY_ALLOCATED_FLAG (1 << 2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  581|      1|#define _Py_IMMORTAL_FLAGS (1 << 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   92|      1|        (type)                      \
  |  |  |  |   93|      1|    },
  |  |  ------------------
  |  |   99|      1|        (size)                            \
  |  |  100|      1|    },
  ------------------
   31|      1|        .ob_hash = -1,
   32|      1|        .ob_item = { &_Py_ID(source), &_Py_ID(encoding), &_Py_ID(errors), },
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      .ob_item = { &_Py_ID(source), &_Py_ID(encoding), &_Py_ID(errors), },
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      .ob_item = { &_Py_ID(source), &_Py_ID(encoding), &_Py_ID(errors), },
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   33|      1|    };
   34|      1|    #undef NUM_KEYWORDS
   35|      1|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
   36|       |
   37|       |    #else  // !Py_BUILD_CORE
   38|       |    #  define KWTUPLE NULL
   39|       |    #endif  // !Py_BUILD_CORE
   40|       |
   41|      1|    static const char * const _keywords[] = {"source", "encoding", "errors", NULL};
   42|      1|    static _PyArg_Parser _parser = {
   43|      1|        .keywords = _keywords,
   44|      1|        .fname = "bytearray",
   45|      1|        .kwtuple = KWTUPLE,
  ------------------
  |  |   35|      1|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
  ------------------
   46|      1|    };
   47|      1|    #undef KWTUPLE
   48|      1|    PyObject *argsbuf[3];
   49|      1|    PyObject * const *fastargs;
   50|      1|    Py_ssize_t nargs = PyTuple_GET_SIZE(args);
  ------------------
  |  |   27|      1|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   51|      1|    Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 0;
  ------------------
  |  |   63|      0|#define PyDict_GET_SIZE(op) PyDict_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (51:36): [True: 0, False: 1]
  ------------------
   52|      1|    PyObject *arg = NULL;
   53|      1|    const char *encoding = NULL;
   54|      1|    const char *errors = NULL;
   55|       |
   56|      1|    fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser,
  ------------------
  |  |   88|      1|    (((minkw) == 0 && (kwargs) == NULL && (kwnames) == NULL && \
  |  |  ------------------
  |  |  |  Branch (88:7): [True: 1, Folded]
  |  |  |  Branch (88:23): [True: 1, False: 0]
  |  |  |  Branch (88:43): [True: 0, Folded]
  |  |  ------------------
  |  |   89|      2|      (minpos) <= (nargs) && ((varpos) || (nargs) <= (maxpos)) && (args) != NULL) ? \
  |  |  ------------------
  |  |  |  Branch (89:7): [True: 1, False: 0]
  |  |  |  Branch (89:31): [Folded, False: 1]
  |  |  |  Branch (89:43): [True: 1, False: 0]
  |  |  |  Branch (89:67): [True: 1, False: 0]
  |  |  |  Branch (89:68): [True: 1, False: 0]
  |  |  ------------------
  |  |   90|      2|      (args) : \
  |  |  ------------------
  |  |  |  Branch (90:8): [True: 1, False: 0]
  |  |  ------------------
  |  |   91|      1|     _PyArg_UnpackKeywords((args), (nargs), (kwargs), (kwnames), (parser), \
  |  |  ------------------
  |  |  |  Branch (91:29): [True: 0, False: 0]
  |  |  ------------------
  |  |   92|      0|                           (minpos), (maxpos), (minkw), (varpos), (buf)))
  ------------------
   57|      1|            /*minpos*/ 0, /*maxpos*/ 3, /*minkw*/ 0, /*varpos*/ 0, argsbuf);
   58|      1|    if (!fastargs) {
  ------------------
  |  Branch (58:9): [True: 0, False: 1]
  ------------------
   59|      0|        goto exit;
   60|      0|    }
   61|      1|    if (!noptargs) {
  ------------------
  |  Branch (61:9): [True: 1, False: 0]
  ------------------
   62|      1|        goto skip_optional_pos;
   63|      1|    }
   64|      0|    if (fastargs[0]) {
  ------------------
  |  Branch (64:9): [True: 0, False: 0]
  ------------------
   65|      0|        arg = fastargs[0];
   66|      0|        if (!--noptargs) {
  ------------------
  |  Branch (66:13): [True: 0, False: 0]
  ------------------
   67|      0|            goto skip_optional_pos;
   68|      0|        }
   69|      0|    }
   70|      0|    if (fastargs[1]) {
  ------------------
  |  Branch (70:9): [True: 0, False: 0]
  ------------------
   71|      0|        if (!PyUnicode_Check(fastargs[1])) {
  ------------------
  |  |  103|      0|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (71:13): [True: 0, False: 0]
  ------------------
   72|      0|            _PyArg_BadArgument("bytearray", "argument 'encoding'", "str", fastargs[1]);
   73|      0|            goto exit;
   74|      0|        }
   75|      0|        Py_ssize_t encoding_length;
   76|      0|        encoding = PyUnicode_AsUTF8AndSize(fastargs[1], &encoding_length);
   77|      0|        if (encoding == NULL) {
  ------------------
  |  Branch (77:13): [True: 0, False: 0]
  ------------------
   78|      0|            goto exit;
   79|      0|        }
   80|      0|        if (strlen(encoding) != (size_t)encoding_length) {
  ------------------
  |  Branch (80:13): [True: 0, False: 0]
  ------------------
   81|      0|            PyErr_SetString(PyExc_ValueError, "embedded null character");
   82|      0|            goto exit;
   83|      0|        }
   84|      0|        if (!--noptargs) {
  ------------------
  |  Branch (84:13): [True: 0, False: 0]
  ------------------
   85|      0|            goto skip_optional_pos;
   86|      0|        }
   87|      0|    }
   88|      0|    if (!PyUnicode_Check(fastargs[2])) {
  ------------------
  |  |  103|      0|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (88:9): [True: 0, False: 0]
  ------------------
   89|      0|        _PyArg_BadArgument("bytearray", "argument 'errors'", "str", fastargs[2]);
   90|      0|        goto exit;
   91|      0|    }
   92|      0|    Py_ssize_t errors_length;
   93|      0|    errors = PyUnicode_AsUTF8AndSize(fastargs[2], &errors_length);
   94|      0|    if (errors == NULL) {
  ------------------
  |  Branch (94:9): [True: 0, False: 0]
  ------------------
   95|      0|        goto exit;
   96|      0|    }
   97|      0|    if (strlen(errors) != (size_t)errors_length) {
  ------------------
  |  Branch (97:9): [True: 0, False: 0]
  ------------------
   98|      0|        PyErr_SetString(PyExc_ValueError, "embedded null character");
   99|      0|        goto exit;
  100|      0|    }
  101|      1|skip_optional_pos:
  102|      1|    return_value = bytearray___init___impl((PyByteArrayObject *)self, arg, encoding, errors);
  103|       |
  104|      1|exit:
  105|      1|    return return_value;
  106|      1|}

bytesobject.c:bytes_decode:
 1087|      2|{
 1088|      2|    PyObject *return_value = NULL;
 1089|      2|    #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
 1090|       |
 1091|      2|    #define NUM_KEYWORDS 2
 1092|      2|    static struct {
 1093|      2|        PyGC_Head _this_is_not_used;
 1094|      2|        PyObject_VAR_HEAD
 1095|      2|        Py_hash_t ob_hash;
 1096|      2|        PyObject *ob_item[NUM_KEYWORDS];
 1097|      2|    } _kwtuple = {
 1098|      2|        .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
  ------------------
  |  |   97|      2|    {                                     \
  |  |   98|      2|        PyObject_HEAD_INIT(type)          \
  |  |  ------------------
  |  |  |  |   90|      2|    {                               \
  |  |  |  |   91|      2|        { _Py_STATIC_IMMORTAL_INITIAL_REFCNT },    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   50|      2|#define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   47|      2|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      2|#define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  583|      2|#define _Py_STATICALLY_ALLOCATED_FLAG (1 << 2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  581|      2|#define _Py_IMMORTAL_FLAGS (1 << 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   92|      2|        (type)                      \
  |  |  |  |   93|      2|    },
  |  |  ------------------
  |  |   99|      2|        (size)                            \
  |  |  100|      2|    },
  ------------------
 1099|      2|        .ob_hash = -1,
 1100|      2|        .ob_item = { &_Py_ID(encoding), &_Py_ID(errors), },
  ------------------
  |  |  917|      2|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      2|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      2|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      .ob_item = { &_Py_ID(encoding), &_Py_ID(errors), },
  ------------------
  |  |  917|      2|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      2|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      2|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1101|      2|    };
 1102|      2|    #undef NUM_KEYWORDS
 1103|      2|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
 1104|       |
 1105|       |    #else  // !Py_BUILD_CORE
 1106|       |    #  define KWTUPLE NULL
 1107|       |    #endif  // !Py_BUILD_CORE
 1108|       |
 1109|      2|    static const char * const _keywords[] = {"encoding", "errors", NULL};
 1110|      2|    static _PyArg_Parser _parser = {
 1111|      2|        .keywords = _keywords,
 1112|      2|        .fname = "decode",
 1113|      2|        .kwtuple = KWTUPLE,
  ------------------
  |  | 1103|      2|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
  ------------------
 1114|      2|    };
 1115|      2|    #undef KWTUPLE
 1116|      2|    PyObject *argsbuf[2];
 1117|      2|    Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
  ------------------
  |  |   27|      0|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1117:36): [True: 0, False: 2]
  ------------------
 1118|      2|    const char *encoding = NULL;
 1119|      2|    const char *errors = NULL;
 1120|       |
 1121|      2|    args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser,
  ------------------
  |  |   88|      2|    (((minkw) == 0 && (kwargs) == NULL && (kwnames) == NULL && \
  |  |  ------------------
  |  |  |  Branch (88:7): [True: 0, Folded]
  |  |  |  Branch (88:23): [True: 0, Folded]
  |  |  |  Branch (88:43): [True: 2, False: 0]
  |  |  ------------------
  |  |   89|      2|      (minpos) <= (nargs) && ((varpos) || (nargs) <= (maxpos)) && (args) != NULL) ? \
  |  |  ------------------
  |  |  |  Branch (89:7): [True: 2, False: 0]
  |  |  |  Branch (89:31): [Folded, False: 2]
  |  |  |  Branch (89:43): [True: 2, False: 0]
  |  |  |  Branch (89:67): [True: 2, False: 0]
  |  |  ------------------
  |  |   90|      2|      (args) : \
  |  |   91|      2|     _PyArg_UnpackKeywords((args), (nargs), (kwargs), (kwnames), (parser), \
  |  |   92|      0|                           (minpos), (maxpos), (minkw), (varpos), (buf)))
  ------------------
 1122|      2|            /*minpos*/ 0, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf);
 1123|      2|    if (!args) {
  ------------------
  |  Branch (1123:9): [True: 0, False: 2]
  ------------------
 1124|      0|        goto exit;
 1125|      0|    }
 1126|      2|    if (!noptargs) {
  ------------------
  |  Branch (1126:9): [True: 0, False: 2]
  ------------------
 1127|      0|        goto skip_optional_pos;
 1128|      0|    }
 1129|      2|    if (args[0]) {
  ------------------
  |  Branch (1129:9): [True: 2, False: 0]
  ------------------
 1130|      2|        if (!PyUnicode_Check(args[0])) {
  ------------------
  |  |  103|      2|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      2|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (1130:13): [True: 0, False: 2]
  ------------------
 1131|      0|            _PyArg_BadArgument("decode", "argument 'encoding'", "str", args[0]);
 1132|      0|            goto exit;
 1133|      0|        }
 1134|      2|        Py_ssize_t encoding_length;
 1135|      2|        encoding = PyUnicode_AsUTF8AndSize(args[0], &encoding_length);
 1136|      2|        if (encoding == NULL) {
  ------------------
  |  Branch (1136:13): [True: 0, False: 2]
  ------------------
 1137|      0|            goto exit;
 1138|      0|        }
 1139|      2|        if (strlen(encoding) != (size_t)encoding_length) {
  ------------------
  |  Branch (1139:13): [True: 0, False: 2]
  ------------------
 1140|      0|            PyErr_SetString(PyExc_ValueError, "embedded null character");
 1141|      0|            goto exit;
 1142|      0|        }
 1143|      2|        if (!--noptargs) {
  ------------------
  |  Branch (1143:13): [True: 0, False: 2]
  ------------------
 1144|      0|            goto skip_optional_pos;
 1145|      0|        }
 1146|      2|    }
 1147|      2|    if (!PyUnicode_Check(args[1])) {
  ------------------
  |  |  103|      2|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      2|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (1147:9): [True: 0, False: 2]
  ------------------
 1148|      0|        _PyArg_BadArgument("decode", "argument 'errors'", "str", args[1]);
 1149|      0|        goto exit;
 1150|      0|    }
 1151|      2|    Py_ssize_t errors_length;
 1152|      2|    errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
 1153|      2|    if (errors == NULL) {
  ------------------
  |  Branch (1153:9): [True: 0, False: 2]
  ------------------
 1154|      0|        goto exit;
 1155|      0|    }
 1156|      2|    if (strlen(errors) != (size_t)errors_length) {
  ------------------
  |  Branch (1156:9): [True: 0, False: 2]
  ------------------
 1157|      0|        PyErr_SetString(PyExc_ValueError, "embedded null character");
 1158|      0|        goto exit;
 1159|      0|    }
 1160|      2|skip_optional_pos:
 1161|      2|    return_value = bytes_decode_impl((PyBytesObject *)self, encoding, errors);
 1162|       |
 1163|      2|exit:
 1164|      2|    return return_value;
 1165|      2|}

descrobject.c:property_init:
  111|      5|{
  112|      5|    int return_value = -1;
  113|      5|    #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
  114|       |
  115|      5|    #define NUM_KEYWORDS 4
  116|      5|    static struct {
  117|      5|        PyGC_Head _this_is_not_used;
  118|      5|        PyObject_VAR_HEAD
  119|      5|        Py_hash_t ob_hash;
  120|      5|        PyObject *ob_item[NUM_KEYWORDS];
  121|      5|    } _kwtuple = {
  122|      5|        .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
  ------------------
  |  |   97|      5|    {                                     \
  |  |   98|      5|        PyObject_HEAD_INIT(type)          \
  |  |  ------------------
  |  |  |  |   90|      5|    {                               \
  |  |  |  |   91|      5|        { _Py_STATIC_IMMORTAL_INITIAL_REFCNT },    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   50|      5|#define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   47|      5|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      5|#define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  583|      5|#define _Py_STATICALLY_ALLOCATED_FLAG (1 << 2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  581|      5|#define _Py_IMMORTAL_FLAGS (1 << 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   92|      5|        (type)                      \
  |  |  |  |   93|      5|    },
  |  |  ------------------
  |  |   99|      5|        (size)                            \
  |  |  100|      5|    },
  ------------------
  123|      5|        .ob_hash = -1,
  124|      5|        .ob_item = { &_Py_ID(fget), &_Py_ID(fset), &_Py_ID(fdel), &_Py_ID(doc), },
  ------------------
  |  |  917|      5|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      5|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      5|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      .ob_item = { &_Py_ID(fget), &_Py_ID(fset), &_Py_ID(fdel), &_Py_ID(doc), },
  ------------------
  |  |  917|      5|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      5|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      5|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      .ob_item = { &_Py_ID(fget), &_Py_ID(fset), &_Py_ID(fdel), &_Py_ID(doc), },
  ------------------
  |  |  917|      5|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      5|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      5|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      .ob_item = { &_Py_ID(fget), &_Py_ID(fset), &_Py_ID(fdel), &_Py_ID(doc), },
  ------------------
  |  |  917|      5|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      5|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      5|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  125|      5|    };
  126|      5|    #undef NUM_KEYWORDS
  127|      5|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
  128|       |
  129|       |    #else  // !Py_BUILD_CORE
  130|       |    #  define KWTUPLE NULL
  131|       |    #endif  // !Py_BUILD_CORE
  132|       |
  133|      5|    static const char * const _keywords[] = {"fget", "fset", "fdel", "doc", NULL};
  134|      5|    static _PyArg_Parser _parser = {
  135|      5|        .keywords = _keywords,
  136|      5|        .fname = "property",
  137|      5|        .kwtuple = KWTUPLE,
  ------------------
  |  |  127|      5|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
  ------------------
  138|      5|    };
  139|      5|    #undef KWTUPLE
  140|      5|    PyObject *argsbuf[4];
  141|      5|    PyObject * const *fastargs;
  142|      5|    Py_ssize_t nargs = PyTuple_GET_SIZE(args);
  ------------------
  |  |   27|      5|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  143|      5|    Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 0;
  ------------------
  |  |   63|      0|#define PyDict_GET_SIZE(op) PyDict_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (143:36): [True: 0, False: 5]
  ------------------
  144|      5|    PyObject *fget = NULL;
  145|      5|    PyObject *fset = NULL;
  146|      5|    PyObject *fdel = NULL;
  147|      5|    PyObject *doc = NULL;
  148|       |
  149|      5|    fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser,
  ------------------
  |  |   88|      5|    (((minkw) == 0 && (kwargs) == NULL && (kwnames) == NULL && \
  |  |  ------------------
  |  |  |  Branch (88:7): [True: 5, Folded]
  |  |  |  Branch (88:23): [True: 5, False: 0]
  |  |  |  Branch (88:43): [True: 0, Folded]
  |  |  ------------------
  |  |   89|     10|      (minpos) <= (nargs) && ((varpos) || (nargs) <= (maxpos)) && (args) != NULL) ? \
  |  |  ------------------
  |  |  |  Branch (89:7): [True: 5, False: 0]
  |  |  |  Branch (89:31): [Folded, False: 5]
  |  |  |  Branch (89:43): [True: 5, False: 0]
  |  |  |  Branch (89:67): [True: 5, False: 0]
  |  |  |  Branch (89:68): [True: 5, False: 0]
  |  |  ------------------
  |  |   90|     10|      (args) : \
  |  |  ------------------
  |  |  |  Branch (90:8): [True: 5, False: 0]
  |  |  ------------------
  |  |   91|      5|     _PyArg_UnpackKeywords((args), (nargs), (kwargs), (kwnames), (parser), \
  |  |  ------------------
  |  |  |  Branch (91:29): [True: 0, False: 0]
  |  |  ------------------
  |  |   92|      0|                           (minpos), (maxpos), (minkw), (varpos), (buf)))
  ------------------
  150|      5|            /*minpos*/ 0, /*maxpos*/ 4, /*minkw*/ 0, /*varpos*/ 0, argsbuf);
  151|      5|    if (!fastargs) {
  ------------------
  |  Branch (151:9): [True: 0, False: 5]
  ------------------
  152|      0|        goto exit;
  153|      0|    }
  154|      5|    if (!noptargs) {
  ------------------
  |  Branch (154:9): [True: 0, False: 5]
  ------------------
  155|      0|        goto skip_optional_pos;
  156|      0|    }
  157|      5|    if (fastargs[0]) {
  ------------------
  |  Branch (157:9): [True: 5, False: 0]
  ------------------
  158|      5|        fget = fastargs[0];
  159|      5|        if (!--noptargs) {
  ------------------
  |  Branch (159:13): [True: 3, False: 2]
  ------------------
  160|      3|            goto skip_optional_pos;
  161|      3|        }
  162|      5|    }
  163|      2|    if (fastargs[1]) {
  ------------------
  |  Branch (163:9): [True: 2, False: 0]
  ------------------
  164|      2|        fset = fastargs[1];
  165|      2|        if (!--noptargs) {
  ------------------
  |  Branch (165:13): [True: 0, False: 2]
  ------------------
  166|      0|            goto skip_optional_pos;
  167|      0|        }
  168|      2|    }
  169|      2|    if (fastargs[2]) {
  ------------------
  |  Branch (169:9): [True: 2, False: 0]
  ------------------
  170|      2|        fdel = fastargs[2];
  171|      2|        if (!--noptargs) {
  ------------------
  |  Branch (171:13): [True: 0, False: 2]
  ------------------
  172|      0|            goto skip_optional_pos;
  173|      0|        }
  174|      2|    }
  175|      2|    doc = fastargs[3];
  176|      5|skip_optional_pos:
  177|      5|    return_value = property_init_impl((propertyobject *)self, fget, fset, fdel, doc);
  178|       |
  179|      5|exit:
  180|      5|    return return_value;
  181|      5|}

dictobject.c:dict_get:
   96|     96|{
   97|     96|    PyObject *return_value = NULL;
   98|     96|    PyObject *key;
   99|     96|    PyObject *default_value = Py_None;
  ------------------
  |  |  616|     96|#  define Py_None (&_Py_NoneStruct)
  ------------------
  100|       |
  101|     96|    if (!_PyArg_CheckPositional("get", nargs, 1, 2)) {
  ------------------
  |  |   31|     96|    (((min) <= (nargs) && (nargs) <= (max)) \
  |  |  ------------------
  |  |  |  Branch (31:7): [True: 96, False: 0]
  |  |  |  Branch (31:27): [True: 96, False: 0]
  |  |  ------------------
  |  |   32|     96|     || _PyArg_CheckPositional((funcname), (nargs), (min), (max)))
  |  |  ------------------
  |  |  |  Branch (32:9): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  102|      0|        goto exit;
  103|      0|    }
  104|     96|    key = args[0];
  105|     96|    if (nargs < 2) {
  ------------------
  |  Branch (105:9): [True: 46, False: 50]
  ------------------
  106|     46|        goto skip_optional;
  107|     46|    }
  108|     50|    default_value = args[1];
  109|     96|skip_optional:
  110|     96|    return_value = dict_get_impl((PyDictObject *)self, key, default_value);
  111|       |
  112|     96|exit:
  113|     96|    return return_value;
  114|     96|}
dictobject.c:dict_pop:
  190|     27|{
  191|     27|    PyObject *return_value = NULL;
  192|     27|    PyObject *key;
  193|     27|    PyObject *default_value = NULL;
  194|       |
  195|     27|    if (!_PyArg_CheckPositional("pop", nargs, 1, 2)) {
  ------------------
  |  |   31|     27|    (((min) <= (nargs) && (nargs) <= (max)) \
  |  |  ------------------
  |  |  |  Branch (31:7): [True: 27, False: 0]
  |  |  |  Branch (31:27): [True: 27, False: 0]
  |  |  ------------------
  |  |   32|     27|     || _PyArg_CheckPositional((funcname), (nargs), (min), (max)))
  |  |  ------------------
  |  |  |  Branch (32:9): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  196|      0|        goto exit;
  197|      0|    }
  198|     27|    key = args[0];
  199|     27|    if (nargs < 2) {
  ------------------
  |  Branch (199:9): [True: 26, False: 1]
  ------------------
  200|     26|        goto skip_optional;
  201|     26|    }
  202|      1|    default_value = args[1];
  203|     27|skip_optional:
  204|     27|    return_value = dict_pop_impl((PyDictObject *)self, key, default_value);
  205|       |
  206|     27|exit:
  207|     27|    return return_value;
  208|     27|}
dictobject.c:dict_keys:
  287|      2|{
  288|      2|    return dict_keys_impl((PyDictObject *)self);
  289|      2|}
dictobject.c:dict_items:
  305|     35|{
  306|     35|    return dict_items_impl((PyDictObject *)self);
  307|     35|}
dictobject.c:dict_values:
  323|      2|{
  324|      2|    return dict_values_impl((PyDictObject *)self);
  325|      2|}

frameobject.c:frame_locals_get:
   29|      1|{
   30|      1|    PyObject *return_value = NULL;
   31|       |
   32|      1|    Py_BEGIN_CRITICAL_SECTION(self);
  ------------------
  |  |   51|      1|    {
  ------------------
   33|      1|    return_value = frame_locals_get_impl((PyFrameObject *)self);
   34|      1|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|      1|    }
  ------------------
   35|       |
   36|      1|    return return_value;
   37|      1|}

listobject.c:list_extend:
  142|     88|{
  143|     88|    PyObject *return_value = NULL;
  144|       |
  145|     88|    return_value = list_extend_impl((PyListObject *)self, iterable);
  146|       |
  147|     88|    return return_value;
  148|     88|}
listobject.c:list___reversed__:
  468|      3|{
  469|      3|    return list___reversed___impl((PyListObject *)self);
  470|      3|}
listobject.c:py_list_clear:
   70|      2|{
   71|      2|    PyObject *return_value = NULL;
   72|       |
   73|      2|    Py_BEGIN_CRITICAL_SECTION(self);
  ------------------
  |  |   51|      2|    {
  ------------------
   74|      2|    return_value = py_list_clear_impl((PyListObject *)self);
   75|      2|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|      2|    }
  ------------------
   76|       |
   77|      2|    return return_value;
   78|      2|}
listobject.c:list_append:
  118|     50|{
  119|     50|    PyObject *return_value = NULL;
  120|       |
  121|     50|    Py_BEGIN_CRITICAL_SECTION(self);
  ------------------
  |  |   51|     50|    {
  ------------------
  122|     50|    return_value = list_append_impl((PyListObject *)self, object);
  123|     50|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|     50|    }
  ------------------
  124|       |
  125|     50|    return return_value;
  126|     50|}
listobject.c:list_insert:
   27|      1|{
   28|      1|    PyObject *return_value = NULL;
   29|      1|    Py_ssize_t index;
   30|      1|    PyObject *object;
   31|       |
   32|      1|    if (!_PyArg_CheckPositional("insert", nargs, 2, 2)) {
  ------------------
  |  |   31|      1|    (((min) <= (nargs) && (nargs) <= (max)) \
  |  |  ------------------
  |  |  |  Branch (31:7): [True: 1, False: 0]
  |  |  |  Branch (31:27): [True: 1, False: 0]
  |  |  ------------------
  |  |   32|      1|     || _PyArg_CheckPositional((funcname), (nargs), (min), (max)))
  |  |  ------------------
  |  |  |  Branch (32:9): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   33|      0|        goto exit;
   34|      0|    }
   35|      1|    {
   36|      1|        Py_ssize_t ival = -1;
   37|      1|        PyObject *iobj = _PyNumber_Index(args[0]);
   38|      1|        if (iobj != NULL) {
  ------------------
  |  Branch (38:13): [True: 1, False: 0]
  ------------------
   39|      1|            ival = PyLong_AsSsize_t(iobj);
   40|      1|            Py_DECREF(iobj);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   41|      1|        }
   42|      1|        if (ival == -1 && PyErr_Occurred()) {
  ------------------
  |  Branch (42:13): [True: 0, False: 1]
  |  Branch (42:27): [True: 0, False: 0]
  ------------------
   43|      0|            goto exit;
   44|      0|        }
   45|      1|        index = ival;
   46|      1|    }
   47|      0|    object = args[1];
   48|      1|    Py_BEGIN_CRITICAL_SECTION(self);
  ------------------
  |  |   51|      1|    {
  ------------------
   49|      1|    return_value = list_insert_impl((PyListObject *)self, index, object);
   50|      1|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|      1|    }
  ------------------
   51|       |
   52|      1|exit:
   53|      1|    return return_value;
   54|      1|}
listobject.c:list_pop:
  166|     32|{
  167|     32|    PyObject *return_value = NULL;
  168|     32|    Py_ssize_t index = -1;
  169|       |
  170|     32|    if (!_PyArg_CheckPositional("pop", nargs, 0, 1)) {
  ------------------
  |  |   31|     32|    (((min) <= (nargs) && (nargs) <= (max)) \
  |  |  ------------------
  |  |  |  Branch (31:7): [True: 32, False: 0]
  |  |  |  Branch (31:27): [True: 32, False: 0]
  |  |  ------------------
  |  |   32|     32|     || _PyArg_CheckPositional((funcname), (nargs), (min), (max)))
  |  |  ------------------
  |  |  |  Branch (32:9): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  171|      0|        goto exit;
  172|      0|    }
  173|     32|    if (nargs < 1) {
  ------------------
  |  Branch (173:9): [True: 32, False: 0]
  ------------------
  174|     32|        goto skip_optional;
  175|     32|    }
  176|      0|    {
  177|      0|        Py_ssize_t ival = -1;
  178|      0|        PyObject *iobj = _PyNumber_Index(args[0]);
  179|      0|        if (iobj != NULL) {
  ------------------
  |  Branch (179:13): [True: 0, False: 0]
  ------------------
  180|      0|            ival = PyLong_AsSsize_t(iobj);
  181|      0|            Py_DECREF(iobj);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  182|      0|        }
  183|      0|        if (ival == -1 && PyErr_Occurred()) {
  ------------------
  |  Branch (183:13): [True: 0, False: 0]
  |  Branch (183:27): [True: 0, False: 0]
  ------------------
  184|      0|            goto exit;
  185|      0|        }
  186|      0|        index = ival;
  187|      0|    }
  188|     32|skip_optional:
  189|     32|    Py_BEGIN_CRITICAL_SECTION(self);
  ------------------
  |  |   51|     32|    {
  ------------------
  190|     32|    return_value = list_pop_impl((PyListObject *)self, index);
  191|     32|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|     32|    }
  ------------------
  192|       |
  193|     32|exit:
  194|     32|    return return_value;
  195|     32|}
listobject.c:list_remove:
  388|     30|{
  389|     30|    PyObject *return_value = NULL;
  390|       |
  391|     30|    Py_BEGIN_CRITICAL_SECTION(self);
  ------------------
  |  |   51|     30|    {
  ------------------
  392|     30|    return_value = list_remove_impl((PyListObject *)self, value);
  393|     30|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|     30|    }
  ------------------
  394|       |
  395|     30|    return return_value;
  396|     30|}
listobject.c:list_sort:
  219|      2|{
  220|      2|    PyObject *return_value = NULL;
  221|      2|    #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
  222|       |
  223|      2|    #define NUM_KEYWORDS 2
  224|      2|    static struct {
  225|      2|        PyGC_Head _this_is_not_used;
  226|      2|        PyObject_VAR_HEAD
  227|      2|        Py_hash_t ob_hash;
  228|      2|        PyObject *ob_item[NUM_KEYWORDS];
  229|      2|    } _kwtuple = {
  230|      2|        .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
  ------------------
  |  |   97|      2|    {                                     \
  |  |   98|      2|        PyObject_HEAD_INIT(type)          \
  |  |  ------------------
  |  |  |  |   90|      2|    {                               \
  |  |  |  |   91|      2|        { _Py_STATIC_IMMORTAL_INITIAL_REFCNT },    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   50|      2|#define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   47|      2|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      2|#define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  583|      2|#define _Py_STATICALLY_ALLOCATED_FLAG (1 << 2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  581|      2|#define _Py_IMMORTAL_FLAGS (1 << 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   92|      2|        (type)                      \
  |  |  |  |   93|      2|    },
  |  |  ------------------
  |  |   99|      2|        (size)                            \
  |  |  100|      2|    },
  ------------------
  231|      2|        .ob_hash = -1,
  232|      2|        .ob_item = { &_Py_ID(key), &_Py_ID(reverse), },
  ------------------
  |  |  917|      2|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      2|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      2|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      .ob_item = { &_Py_ID(key), &_Py_ID(reverse), },
  ------------------
  |  |  917|      2|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      2|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      2|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  233|      2|    };
  234|      2|    #undef NUM_KEYWORDS
  235|      2|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
  236|       |
  237|       |    #else  // !Py_BUILD_CORE
  238|       |    #  define KWTUPLE NULL
  239|       |    #endif  // !Py_BUILD_CORE
  240|       |
  241|      2|    static const char * const _keywords[] = {"key", "reverse", NULL};
  242|      2|    static _PyArg_Parser _parser = {
  243|      2|        .keywords = _keywords,
  244|      2|        .fname = "sort",
  245|      2|        .kwtuple = KWTUPLE,
  ------------------
  |  |  235|      2|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
  ------------------
  246|      2|    };
  247|      2|    #undef KWTUPLE
  248|      2|    PyObject *argsbuf[2];
  249|      2|    Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
  ------------------
  |  |   27|      0|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (249:36): [True: 0, False: 2]
  ------------------
  250|      2|    PyObject *keyfunc = Py_None;
  ------------------
  |  |  616|      2|#  define Py_None (&_Py_NoneStruct)
  ------------------
  251|      2|    int reverse = 0;
  252|       |
  253|      2|    args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser,
  ------------------
  |  |   88|      2|    (((minkw) == 0 && (kwargs) == NULL && (kwnames) == NULL && \
  |  |  ------------------
  |  |  |  Branch (88:7): [True: 0, Folded]
  |  |  |  Branch (88:23): [True: 0, Folded]
  |  |  |  Branch (88:43): [True: 2, False: 0]
  |  |  ------------------
  |  |   89|      2|      (minpos) <= (nargs) && ((varpos) || (nargs) <= (maxpos)) && (args) != NULL) ? \
  |  |  ------------------
  |  |  |  Branch (89:7): [True: 2, False: 0]
  |  |  |  Branch (89:31): [Folded, False: 2]
  |  |  |  Branch (89:43): [True: 2, False: 0]
  |  |  |  Branch (89:67): [True: 2, False: 0]
  |  |  ------------------
  |  |   90|      2|      (args) : \
  |  |   91|      2|     _PyArg_UnpackKeywords((args), (nargs), (kwargs), (kwnames), (parser), \
  |  |   92|      0|                           (minpos), (maxpos), (minkw), (varpos), (buf)))
  ------------------
  254|      2|            /*minpos*/ 0, /*maxpos*/ 0, /*minkw*/ 0, /*varpos*/ 0, argsbuf);
  255|      2|    if (!args) {
  ------------------
  |  Branch (255:9): [True: 0, False: 2]
  ------------------
  256|      0|        goto exit;
  257|      0|    }
  258|      2|    if (!noptargs) {
  ------------------
  |  Branch (258:9): [True: 2, False: 0]
  ------------------
  259|      2|        goto skip_optional_kwonly;
  260|      2|    }
  261|      0|    if (args[0]) {
  ------------------
  |  Branch (261:9): [True: 0, False: 0]
  ------------------
  262|      0|        keyfunc = args[0];
  263|      0|        if (!--noptargs) {
  ------------------
  |  Branch (263:13): [True: 0, False: 0]
  ------------------
  264|      0|            goto skip_optional_kwonly;
  265|      0|        }
  266|      0|    }
  267|      0|    reverse = PyObject_IsTrue(args[1]);
  268|      0|    if (reverse < 0) {
  ------------------
  |  Branch (268:9): [True: 0, False: 0]
  ------------------
  269|      0|        goto exit;
  270|      0|    }
  271|      2|skip_optional_kwonly:
  272|      2|    Py_BEGIN_CRITICAL_SECTION(self);
  ------------------
  |  |   51|      2|    {
  ------------------
  273|      2|    return_value = list_sort_impl((PyListObject *)self, keyfunc, reverse);
  274|      2|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|      2|    }
  ------------------
  275|       |
  276|      2|exit:
  277|      2|    return return_value;
  278|      2|}
listobject.c:list___init__:
  412|     30|{
  413|     30|    int return_value = -1;
  414|     30|    PyTypeObject *base_tp = &PyList_Type;
  415|     30|    PyObject *iterable = NULL;
  416|       |
  417|     30|    if ((Py_IS_TYPE(self, base_tp) ||
  ------------------
  |  |  215|     60|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|     30|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     30|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 0, False: 30]
  |  |  ------------------
  ------------------
  418|     30|         Py_TYPE(self)->tp_new == base_tp->tp_new) &&
  ------------------
  |  |  213|     30|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     30|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     30|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (418:10): [True: 30, False: 0]
  ------------------
  419|     30|        !_PyArg_NoKeywords("list", kwargs)) {
  ------------------
  |  |   25|     30|    ((kwargs) == NULL || _PyArg_NoKeywords((funcname), (kwargs)))
  |  |  ------------------
  |  |  |  Branch (25:6): [True: 30, False: 0]
  |  |  |  Branch (25:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  420|      0|        goto exit;
  421|      0|    }
  422|     30|    if (!_PyArg_CheckPositional("list", PyTuple_GET_SIZE(args), 0, 1)) {
  ------------------
  |  |   31|     30|    (((min) <= (nargs) && (nargs) <= (max)) \
  |  |  ------------------
  |  |  |  Branch (31:7): [True: 30, False: 0]
  |  |  |  Branch (31:27): [True: 30, False: 0]
  |  |  ------------------
  |  |   32|     30|     || _PyArg_CheckPositional((funcname), (nargs), (min), (max)))
  |  |  ------------------
  |  |  |  Branch (32:9): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  423|      0|        goto exit;
  424|      0|    }
  425|     30|    if (PyTuple_GET_SIZE(args) < 1) {
  ------------------
  |  |   27|     30|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     30|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     30|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (425:9): [True: 30, False: 0]
  ------------------
  426|     30|        goto skip_optional;
  427|     30|    }
  428|      0|    iterable = PyTuple_GET_ITEM(args, 0);
  ------------------
  |  |   29|      0|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|      0|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (428:16): [True: 0, False: 0]
  ------------------
  429|     30|skip_optional:
  430|     30|    return_value = list___init___impl((PyListObject *)self, iterable);
  431|       |
  432|     30|exit:
  433|     30|    return return_value;
  434|     30|}

longobject.c:int_to_bytes:
  288|      1|{
  289|      1|    PyObject *return_value = NULL;
  290|      1|    #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
  291|       |
  292|      1|    #define NUM_KEYWORDS 3
  293|      1|    static struct {
  294|      1|        PyGC_Head _this_is_not_used;
  295|      1|        PyObject_VAR_HEAD
  296|      1|        Py_hash_t ob_hash;
  297|      1|        PyObject *ob_item[NUM_KEYWORDS];
  298|      1|    } _kwtuple = {
  299|      1|        .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
  ------------------
  |  |   97|      1|    {                                     \
  |  |   98|      1|        PyObject_HEAD_INIT(type)          \
  |  |  ------------------
  |  |  |  |   90|      1|    {                               \
  |  |  |  |   91|      1|        { _Py_STATIC_IMMORTAL_INITIAL_REFCNT },    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   50|      1|#define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   47|      1|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      1|#define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  583|      1|#define _Py_STATICALLY_ALLOCATED_FLAG (1 << 2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  581|      1|#define _Py_IMMORTAL_FLAGS (1 << 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   92|      1|        (type)                      \
  |  |  |  |   93|      1|    },
  |  |  ------------------
  |  |   99|      1|        (size)                            \
  |  |  100|      1|    },
  ------------------
  300|      1|        .ob_hash = -1,
  301|      1|        .ob_item = { &_Py_ID(length), &_Py_ID(byteorder), &_Py_ID(signed), },
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      .ob_item = { &_Py_ID(length), &_Py_ID(byteorder), &_Py_ID(signed), },
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      .ob_item = { &_Py_ID(length), &_Py_ID(byteorder), &_Py_ID(signed), },
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  302|      1|    };
  303|      1|    #undef NUM_KEYWORDS
  304|      1|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
  305|       |
  306|       |    #else  // !Py_BUILD_CORE
  307|       |    #  define KWTUPLE NULL
  308|       |    #endif  // !Py_BUILD_CORE
  309|       |
  310|      1|    static const char * const _keywords[] = {"length", "byteorder", "signed", NULL};
  311|      1|    static _PyArg_Parser _parser = {
  312|      1|        .keywords = _keywords,
  313|      1|        .fname = "to_bytes",
  314|      1|        .kwtuple = KWTUPLE,
  ------------------
  |  |  304|      1|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
  ------------------
  315|      1|    };
  316|      1|    #undef KWTUPLE
  317|      1|    PyObject *argsbuf[3];
  318|      1|    Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
  ------------------
  |  |   27|      0|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (318:36): [True: 0, False: 1]
  ------------------
  319|      1|    Py_ssize_t length = 1;
  320|      1|    PyObject *byteorder = NULL;
  321|      1|    int is_signed = 0;
  322|       |
  323|      1|    args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser,
  ------------------
  |  |   88|      1|    (((minkw) == 0 && (kwargs) == NULL && (kwnames) == NULL && \
  |  |  ------------------
  |  |  |  Branch (88:7): [True: 0, Folded]
  |  |  |  Branch (88:23): [True: 0, Folded]
  |  |  |  Branch (88:43): [True: 1, False: 0]
  |  |  ------------------
  |  |   89|      1|      (minpos) <= (nargs) && ((varpos) || (nargs) <= (maxpos)) && (args) != NULL) ? \
  |  |  ------------------
  |  |  |  Branch (89:7): [True: 1, False: 0]
  |  |  |  Branch (89:31): [Folded, False: 1]
  |  |  |  Branch (89:43): [True: 1, False: 0]
  |  |  |  Branch (89:67): [True: 1, False: 0]
  |  |  ------------------
  |  |   90|      1|      (args) : \
  |  |   91|      1|     _PyArg_UnpackKeywords((args), (nargs), (kwargs), (kwnames), (parser), \
  |  |   92|      0|                           (minpos), (maxpos), (minkw), (varpos), (buf)))
  ------------------
  324|      1|            /*minpos*/ 0, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf);
  325|      1|    if (!args) {
  ------------------
  |  Branch (325:9): [True: 0, False: 1]
  ------------------
  326|      0|        goto exit;
  327|      0|    }
  328|      1|    if (!noptargs) {
  ------------------
  |  Branch (328:9): [True: 0, False: 1]
  ------------------
  329|      0|        goto skip_optional_pos;
  330|      0|    }
  331|      1|    if (args[0]) {
  ------------------
  |  Branch (331:9): [True: 1, False: 0]
  ------------------
  332|      1|        {
  333|      1|            Py_ssize_t ival = -1;
  334|      1|            PyObject *iobj = _PyNumber_Index(args[0]);
  335|      1|            if (iobj != NULL) {
  ------------------
  |  Branch (335:17): [True: 1, False: 0]
  ------------------
  336|      1|                ival = PyLong_AsSsize_t(iobj);
  337|      1|                Py_DECREF(iobj);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  338|      1|            }
  339|      1|            if (ival == -1 && PyErr_Occurred()) {
  ------------------
  |  Branch (339:17): [True: 0, False: 1]
  |  Branch (339:31): [True: 0, False: 0]
  ------------------
  340|      0|                goto exit;
  341|      0|            }
  342|      1|            length = ival;
  343|      1|            if (length < 0) {
  ------------------
  |  Branch (343:17): [True: 0, False: 1]
  ------------------
  344|      0|                PyErr_SetString(PyExc_ValueError,
  345|      0|                                "length cannot be negative");
  346|      0|                goto exit;
  347|      0|            }
  348|      1|        }
  349|      1|        if (!--noptargs) {
  ------------------
  |  Branch (349:13): [True: 0, False: 1]
  ------------------
  350|      0|            goto skip_optional_pos;
  351|      0|        }
  352|      1|    }
  353|      1|    if (args[1]) {
  ------------------
  |  Branch (353:9): [True: 1, False: 0]
  ------------------
  354|      1|        if (!PyUnicode_Check(args[1])) {
  ------------------
  |  |  103|      1|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      1|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (354:13): [True: 0, False: 1]
  ------------------
  355|      0|            _PyArg_BadArgument("to_bytes", "argument 'byteorder'", "str", args[1]);
  356|      0|            goto exit;
  357|      0|        }
  358|      1|        byteorder = args[1];
  359|      1|        if (!--noptargs) {
  ------------------
  |  Branch (359:13): [True: 1, False: 0]
  ------------------
  360|      1|            goto skip_optional_pos;
  361|      1|        }
  362|      1|    }
  363|      1|skip_optional_pos:
  364|      1|    if (!noptargs) {
  ------------------
  |  Branch (364:9): [True: 1, False: 0]
  ------------------
  365|      1|        goto skip_optional_kwonly;
  366|      1|    }
  367|      0|    is_signed = PyObject_IsTrue(args[2]);
  368|      0|    if (is_signed < 0) {
  ------------------
  |  Branch (368:9): [True: 0, False: 0]
  ------------------
  369|      0|        goto exit;
  370|      0|    }
  371|      1|skip_optional_kwonly:
  372|      1|    return_value = int_to_bytes_impl(self, length, byteorder, is_signed);
  373|       |
  374|      1|exit:
  375|      1|    return return_value;
  376|      1|}

moduleobject.c:module___init__:
   24|     14|{
   25|     14|    int return_value = -1;
   26|     14|    #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
   27|       |
   28|     14|    #define NUM_KEYWORDS 2
   29|     14|    static struct {
   30|     14|        PyGC_Head _this_is_not_used;
   31|     14|        PyObject_VAR_HEAD
   32|     14|        Py_hash_t ob_hash;
   33|     14|        PyObject *ob_item[NUM_KEYWORDS];
   34|     14|    } _kwtuple = {
   35|     14|        .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
  ------------------
  |  |   97|     14|    {                                     \
  |  |   98|     14|        PyObject_HEAD_INIT(type)          \
  |  |  ------------------
  |  |  |  |   90|     14|    {                               \
  |  |  |  |   91|     14|        { _Py_STATIC_IMMORTAL_INITIAL_REFCNT },    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   50|     14|#define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   47|     14|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|     14|#define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  583|     14|#define _Py_STATICALLY_ALLOCATED_FLAG (1 << 2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  581|     14|#define _Py_IMMORTAL_FLAGS (1 << 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   92|     14|        (type)                      \
  |  |  |  |   93|     14|    },
  |  |  ------------------
  |  |   99|     14|        (size)                            \
  |  |  100|     14|    },
  ------------------
   36|     14|        .ob_hash = -1,
   37|     14|        .ob_item = { &_Py_ID(name), &_Py_ID(doc), },
  ------------------
  |  |  917|     14|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     14|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     14|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      .ob_item = { &_Py_ID(name), &_Py_ID(doc), },
  ------------------
  |  |  917|     14|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     14|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     14|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   38|     14|    };
   39|     14|    #undef NUM_KEYWORDS
   40|     14|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
   41|       |
   42|       |    #else  // !Py_BUILD_CORE
   43|       |    #  define KWTUPLE NULL
   44|       |    #endif  // !Py_BUILD_CORE
   45|       |
   46|     14|    static const char * const _keywords[] = {"name", "doc", NULL};
   47|     14|    static _PyArg_Parser _parser = {
   48|     14|        .keywords = _keywords,
   49|     14|        .fname = "module",
   50|     14|        .kwtuple = KWTUPLE,
  ------------------
  |  |   40|     14|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
  ------------------
   51|     14|    };
   52|     14|    #undef KWTUPLE
   53|     14|    PyObject *argsbuf[2];
   54|     14|    PyObject * const *fastargs;
   55|     14|    Py_ssize_t nargs = PyTuple_GET_SIZE(args);
  ------------------
  |  |   27|     14|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     14|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     14|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   56|     14|    Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 1;
  ------------------
  |  |   63|      0|#define PyDict_GET_SIZE(op) PyDict_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (56:36): [True: 0, False: 14]
  ------------------
   57|     14|    PyObject *name;
   58|     14|    PyObject *doc = Py_None;
  ------------------
  |  |  616|     14|#  define Py_None (&_Py_NoneStruct)
  ------------------
   59|       |
   60|     14|    fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser,
  ------------------
  |  |   88|     14|    (((minkw) == 0 && (kwargs) == NULL && (kwnames) == NULL && \
  |  |  ------------------
  |  |  |  Branch (88:7): [True: 14, Folded]
  |  |  |  Branch (88:23): [True: 14, False: 0]
  |  |  |  Branch (88:43): [True: 0, Folded]
  |  |  ------------------
  |  |   89|     28|      (minpos) <= (nargs) && ((varpos) || (nargs) <= (maxpos)) && (args) != NULL) ? \
  |  |  ------------------
  |  |  |  Branch (89:7): [True: 14, False: 0]
  |  |  |  Branch (89:31): [Folded, False: 14]
  |  |  |  Branch (89:43): [True: 14, False: 0]
  |  |  |  Branch (89:67): [True: 14, False: 0]
  |  |  |  Branch (89:68): [True: 14, False: 0]
  |  |  ------------------
  |  |   90|     28|      (args) : \
  |  |  ------------------
  |  |  |  Branch (90:8): [True: 14, False: 0]
  |  |  ------------------
  |  |   91|     14|     _PyArg_UnpackKeywords((args), (nargs), (kwargs), (kwnames), (parser), \
  |  |  ------------------
  |  |  |  Branch (91:29): [True: 0, False: 0]
  |  |  ------------------
  |  |   92|      0|                           (minpos), (maxpos), (minkw), (varpos), (buf)))
  ------------------
   61|     14|            /*minpos*/ 1, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf);
   62|     14|    if (!fastargs) {
  ------------------
  |  Branch (62:9): [True: 0, False: 14]
  ------------------
   63|      0|        goto exit;
   64|      0|    }
   65|     14|    if (!PyUnicode_Check(fastargs[0])) {
  ------------------
  |  |  103|     14|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     14|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (65:9): [True: 0, False: 14]
  ------------------
   66|      0|        _PyArg_BadArgument("module", "argument 'name'", "str", fastargs[0]);
   67|      0|        goto exit;
   68|      0|    }
   69|     14|    name = fastargs[0];
   70|     14|    if (!noptargs) {
  ------------------
  |  Branch (70:9): [True: 14, False: 0]
  ------------------
   71|     14|        goto skip_optional_pos;
   72|     14|    }
   73|      0|    doc = fastargs[1];
   74|     14|skip_optional_pos:
   75|     14|    return_value = module___init___impl((PyModuleObject *)self, name, doc);
   76|       |
   77|     14|exit:
   78|     14|    return return_value;
   79|     14|}

setobject.c:set_issubset:
  351|      2|{
  352|      2|    PyObject *return_value = NULL;
  353|       |
  354|      2|    Py_BEGIN_CRITICAL_SECTION2(so, other);
  ------------------
  |  |   57|      2|    {
  ------------------
  355|      2|    return_value = set_issubset_impl((PySetObject *)so, other);
  356|      2|    Py_END_CRITICAL_SECTION2();
  ------------------
  |  |   61|      2|    }
  ------------------
  357|       |
  358|      2|    return return_value;
  359|      2|}
setobject.c:set_add:
  401|     47|{
  402|     47|    PyObject *return_value = NULL;
  403|       |
  404|     47|    Py_BEGIN_CRITICAL_SECTION(so);
  ------------------
  |  |   51|     47|    {
  ------------------
  405|     47|    return_value = set_add_impl((PySetObject *)so, key);
  406|     47|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|     47|    }
  ------------------
  407|       |
  408|     47|    return return_value;
  409|     47|}
setobject.c:set_clear:
  122|      8|{
  123|      8|    PyObject *return_value = NULL;
  124|       |
  125|      8|    Py_BEGIN_CRITICAL_SECTION(so);
  ------------------
  |  |   51|      8|    {
  ------------------
  126|      8|    return_value = set_clear_impl((PySetObject *)so);
  127|      8|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|      8|    }
  ------------------
  128|       |
  129|      8|    return return_value;
  130|      8|}

tupleobject.c:tuple_new:
   91|      1|{
   92|      1|    PyObject *return_value = NULL;
   93|      1|    PyTypeObject *base_tp = &PyTuple_Type;
   94|      1|    PyObject *iterable = NULL;
   95|       |
   96|      1|    if ((type == base_tp || type->tp_init == base_tp->tp_init) &&
  ------------------
  |  Branch (96:10): [True: 0, False: 1]
  |  Branch (96:29): [True: 1, False: 0]
  ------------------
   97|      1|        !_PyArg_NoKeywords("tuple", kwargs)) {
  ------------------
  |  |   25|      1|    ((kwargs) == NULL || _PyArg_NoKeywords((funcname), (kwargs)))
  |  |  ------------------
  |  |  |  Branch (25:6): [True: 1, False: 0]
  |  |  |  Branch (25:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   98|      0|        goto exit;
   99|      0|    }
  100|      1|    if (!_PyArg_CheckPositional("tuple", PyTuple_GET_SIZE(args), 0, 1)) {
  ------------------
  |  |   31|      1|    (((min) <= (nargs) && (nargs) <= (max)) \
  |  |  ------------------
  |  |  |  Branch (31:7): [True: 1, False: 0]
  |  |  |  Branch (31:27): [True: 1, False: 0]
  |  |  ------------------
  |  |   32|      1|     || _PyArg_CheckPositional((funcname), (nargs), (min), (max)))
  |  |  ------------------
  |  |  |  Branch (32:9): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  101|      0|        goto exit;
  102|      0|    }
  103|      1|    if (PyTuple_GET_SIZE(args) < 1) {
  ------------------
  |  |   27|      1|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (103:9): [True: 0, False: 1]
  ------------------
  104|      0|        goto skip_optional;
  105|      0|    }
  106|      1|    iterable = PyTuple_GET_ITEM(args, 0);
  ------------------
  |  |   29|      1|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|      1|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (106:16): [True: 1, False: 0]
  ------------------
  107|      1|skip_optional:
  108|      1|    return_value = tuple_new_impl(type, iterable);
  109|       |
  110|      1|exit:
  111|      1|    return return_value;
  112|      1|}

typeobject.c:type_mro:
   77|     29|{
   78|     29|    return type_mro_impl((PyTypeObject *)self);
   79|     29|}
typeobject.c:type___subclasses__:
   95|     18|{
   96|     18|    return type___subclasses___impl((PyTypeObject *)self);
   97|     18|}

unicodeobject.c:unicode_encode:
  217|      3|{
  218|      3|    PyObject *return_value = NULL;
  219|      3|    #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
  220|       |
  221|      3|    #define NUM_KEYWORDS 2
  222|      3|    static struct {
  223|      3|        PyGC_Head _this_is_not_used;
  224|      3|        PyObject_VAR_HEAD
  225|      3|        Py_hash_t ob_hash;
  226|      3|        PyObject *ob_item[NUM_KEYWORDS];
  227|      3|    } _kwtuple = {
  228|      3|        .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
  ------------------
  |  |   97|      3|    {                                     \
  |  |   98|      3|        PyObject_HEAD_INIT(type)          \
  |  |  ------------------
  |  |  |  |   90|      3|    {                               \
  |  |  |  |   91|      3|        { _Py_STATIC_IMMORTAL_INITIAL_REFCNT },    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   50|      3|#define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   47|      3|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      3|#define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  583|      3|#define _Py_STATICALLY_ALLOCATED_FLAG (1 << 2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  581|      3|#define _Py_IMMORTAL_FLAGS (1 << 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   92|      3|        (type)                      \
  |  |  |  |   93|      3|    },
  |  |  ------------------
  |  |   99|      3|        (size)                            \
  |  |  100|      3|    },
  ------------------
  229|      3|        .ob_hash = -1,
  230|      3|        .ob_item = { &_Py_ID(encoding), &_Py_ID(errors), },
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      .ob_item = { &_Py_ID(encoding), &_Py_ID(errors), },
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  231|      3|    };
  232|      3|    #undef NUM_KEYWORDS
  233|      3|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
  234|       |
  235|       |    #else  // !Py_BUILD_CORE
  236|       |    #  define KWTUPLE NULL
  237|       |    #endif  // !Py_BUILD_CORE
  238|       |
  239|      3|    static const char * const _keywords[] = {"encoding", "errors", NULL};
  240|      3|    static _PyArg_Parser _parser = {
  241|      3|        .keywords = _keywords,
  242|      3|        .fname = "encode",
  243|      3|        .kwtuple = KWTUPLE,
  ------------------
  |  |  233|      3|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
  ------------------
  244|      3|    };
  245|      3|    #undef KWTUPLE
  246|      3|    PyObject *argsbuf[2];
  247|      3|    Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
  ------------------
  |  |   27|      0|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (247:36): [True: 0, False: 3]
  ------------------
  248|      3|    const char *encoding = NULL;
  249|      3|    const char *errors = NULL;
  250|       |
  251|      3|    args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser,
  ------------------
  |  |   88|      3|    (((minkw) == 0 && (kwargs) == NULL && (kwnames) == NULL && \
  |  |  ------------------
  |  |  |  Branch (88:7): [True: 0, Folded]
  |  |  |  Branch (88:23): [True: 0, Folded]
  |  |  |  Branch (88:43): [True: 3, False: 0]
  |  |  ------------------
  |  |   89|      3|      (minpos) <= (nargs) && ((varpos) || (nargs) <= (maxpos)) && (args) != NULL) ? \
  |  |  ------------------
  |  |  |  Branch (89:7): [True: 3, False: 0]
  |  |  |  Branch (89:31): [Folded, False: 3]
  |  |  |  Branch (89:43): [True: 3, False: 0]
  |  |  |  Branch (89:67): [True: 3, False: 0]
  |  |  ------------------
  |  |   90|      3|      (args) : \
  |  |   91|      3|     _PyArg_UnpackKeywords((args), (nargs), (kwargs), (kwnames), (parser), \
  |  |   92|      0|                           (minpos), (maxpos), (minkw), (varpos), (buf)))
  ------------------
  252|      3|            /*minpos*/ 0, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf);
  253|      3|    if (!args) {
  ------------------
  |  Branch (253:9): [True: 0, False: 3]
  ------------------
  254|      0|        goto exit;
  255|      0|    }
  256|      3|    if (!noptargs) {
  ------------------
  |  Branch (256:9): [True: 0, False: 3]
  ------------------
  257|      0|        goto skip_optional_pos;
  258|      0|    }
  259|      3|    if (args[0]) {
  ------------------
  |  Branch (259:9): [True: 3, False: 0]
  ------------------
  260|      3|        if (!PyUnicode_Check(args[0])) {
  ------------------
  |  |  103|      3|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      3|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (260:13): [True: 0, False: 3]
  ------------------
  261|      0|            _PyArg_BadArgument("encode", "argument 'encoding'", "str", args[0]);
  262|      0|            goto exit;
  263|      0|        }
  264|      3|        Py_ssize_t encoding_length;
  265|      3|        encoding = PyUnicode_AsUTF8AndSize(args[0], &encoding_length);
  266|      3|        if (encoding == NULL) {
  ------------------
  |  Branch (266:13): [True: 0, False: 3]
  ------------------
  267|      0|            goto exit;
  268|      0|        }
  269|      3|        if (strlen(encoding) != (size_t)encoding_length) {
  ------------------
  |  Branch (269:13): [True: 0, False: 3]
  ------------------
  270|      0|            PyErr_SetString(PyExc_ValueError, "embedded null character");
  271|      0|            goto exit;
  272|      0|        }
  273|      3|        if (!--noptargs) {
  ------------------
  |  Branch (273:13): [True: 0, False: 3]
  ------------------
  274|      0|            goto skip_optional_pos;
  275|      0|        }
  276|      3|    }
  277|      3|    if (!PyUnicode_Check(args[1])) {
  ------------------
  |  |  103|      3|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      3|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (277:9): [True: 0, False: 3]
  ------------------
  278|      0|        _PyArg_BadArgument("encode", "argument 'errors'", "str", args[1]);
  279|      0|        goto exit;
  280|      0|    }
  281|      3|    Py_ssize_t errors_length;
  282|      3|    errors = PyUnicode_AsUTF8AndSize(args[1], &errors_length);
  283|      3|    if (errors == NULL) {
  ------------------
  |  Branch (283:9): [True: 0, False: 3]
  ------------------
  284|      0|        goto exit;
  285|      0|    }
  286|      3|    if (strlen(errors) != (size_t)errors_length) {
  ------------------
  |  Branch (286:9): [True: 0, False: 3]
  ------------------
  287|      0|        PyErr_SetString(PyExc_ValueError, "embedded null character");
  288|      0|        goto exit;
  289|      0|    }
  290|      3|skip_optional_pos:
  291|      3|    return_value = unicode_encode_impl(self, encoding, errors);
  292|       |
  293|      3|exit:
  294|      3|    return return_value;
  295|      3|}
unicodeobject.c:unicode_replace:
  933|     15|{
  934|     15|    PyObject *return_value = NULL;
  935|     15|    #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
  936|       |
  937|     15|    #define NUM_KEYWORDS 1
  938|     15|    static struct {
  939|     15|        PyGC_Head _this_is_not_used;
  940|     15|        PyObject_VAR_HEAD
  941|     15|        Py_hash_t ob_hash;
  942|     15|        PyObject *ob_item[NUM_KEYWORDS];
  943|     15|    } _kwtuple = {
  944|     15|        .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
  ------------------
  |  |   97|     15|    {                                     \
  |  |   98|     15|        PyObject_HEAD_INIT(type)          \
  |  |  ------------------
  |  |  |  |   90|     15|    {                               \
  |  |  |  |   91|     15|        { _Py_STATIC_IMMORTAL_INITIAL_REFCNT },    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   50|     15|#define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   47|     15|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|     15|#define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  583|     15|#define _Py_STATICALLY_ALLOCATED_FLAG (1 << 2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  581|     15|#define _Py_IMMORTAL_FLAGS (1 << 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   92|     15|        (type)                      \
  |  |  |  |   93|     15|    },
  |  |  ------------------
  |  |   99|     15|        (size)                            \
  |  |  100|     15|    },
  ------------------
  945|     15|        .ob_hash = -1,
  946|     15|        .ob_item = { &_Py_ID(count), },
  ------------------
  |  |  917|     15|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     15|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     15|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  947|     15|    };
  948|     15|    #undef NUM_KEYWORDS
  949|     15|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
  950|       |
  951|       |    #else  // !Py_BUILD_CORE
  952|       |    #  define KWTUPLE NULL
  953|       |    #endif  // !Py_BUILD_CORE
  954|       |
  955|     15|    static const char * const _keywords[] = {"", "", "count", NULL};
  956|     15|    static _PyArg_Parser _parser = {
  957|     15|        .keywords = _keywords,
  958|     15|        .fname = "replace",
  959|     15|        .kwtuple = KWTUPLE,
  ------------------
  |  |  949|     15|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
  ------------------
  960|     15|    };
  961|     15|    #undef KWTUPLE
  962|     15|    PyObject *argsbuf[3];
  963|     15|    Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 2;
  ------------------
  |  |   27|      0|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (963:36): [True: 0, False: 15]
  ------------------
  964|     15|    PyObject *old;
  965|     15|    PyObject *new;
  966|     15|    Py_ssize_t count = -1;
  967|       |
  968|     15|    args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser,
  ------------------
  |  |   88|     15|    (((minkw) == 0 && (kwargs) == NULL && (kwnames) == NULL && \
  |  |  ------------------
  |  |  |  Branch (88:7): [True: 0, Folded]
  |  |  |  Branch (88:23): [True: 0, Folded]
  |  |  |  Branch (88:43): [True: 15, False: 0]
  |  |  ------------------
  |  |   89|     15|      (minpos) <= (nargs) && ((varpos) || (nargs) <= (maxpos)) && (args) != NULL) ? \
  |  |  ------------------
  |  |  |  Branch (89:7): [True: 15, False: 0]
  |  |  |  Branch (89:31): [Folded, False: 15]
  |  |  |  Branch (89:43): [True: 15, False: 0]
  |  |  |  Branch (89:67): [True: 15, False: 0]
  |  |  ------------------
  |  |   90|     15|      (args) : \
  |  |   91|     15|     _PyArg_UnpackKeywords((args), (nargs), (kwargs), (kwnames), (parser), \
  |  |   92|      0|                           (minpos), (maxpos), (minkw), (varpos), (buf)))
  ------------------
  969|     15|            /*minpos*/ 2, /*maxpos*/ 3, /*minkw*/ 0, /*varpos*/ 0, argsbuf);
  970|     15|    if (!args) {
  ------------------
  |  Branch (970:9): [True: 0, False: 15]
  ------------------
  971|      0|        goto exit;
  972|      0|    }
  973|     15|    if (!PyUnicode_Check(args[0])) {
  ------------------
  |  |  103|     15|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     15|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (973:9): [True: 0, False: 15]
  ------------------
  974|      0|        _PyArg_BadArgument("replace", "argument 1", "str", args[0]);
  975|      0|        goto exit;
  976|      0|    }
  977|     15|    old = args[0];
  978|     15|    if (!PyUnicode_Check(args[1])) {
  ------------------
  |  |  103|     15|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     15|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (978:9): [True: 0, False: 15]
  ------------------
  979|      0|        _PyArg_BadArgument("replace", "argument 2", "str", args[1]);
  980|      0|        goto exit;
  981|      0|    }
  982|     15|    new = args[1];
  983|     15|    if (!noptargs) {
  ------------------
  |  Branch (983:9): [True: 15, False: 0]
  ------------------
  984|     15|        goto skip_optional_pos;
  985|     15|    }
  986|      0|    {
  987|      0|        Py_ssize_t ival = -1;
  988|      0|        PyObject *iobj = _PyNumber_Index(args[2]);
  989|      0|        if (iobj != NULL) {
  ------------------
  |  Branch (989:13): [True: 0, False: 0]
  ------------------
  990|      0|            ival = PyLong_AsSsize_t(iobj);
  991|      0|            Py_DECREF(iobj);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  992|      0|        }
  993|      0|        if (ival == -1 && PyErr_Occurred()) {
  ------------------
  |  Branch (993:13): [True: 0, False: 0]
  |  Branch (993:27): [True: 0, False: 0]
  ------------------
  994|      0|            goto exit;
  995|      0|        }
  996|      0|        count = ival;
  997|      0|    }
  998|     15|skip_optional_pos:
  999|     15|    return_value = unicode_replace_impl(self, old, new, count);
 1000|       |
 1001|     15|exit:
 1002|     15|    return return_value;
 1003|     15|}
unicodeobject.c:unicode_split:
 1261|      2|{
 1262|      2|    PyObject *return_value = NULL;
 1263|      2|    #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
 1264|       |
 1265|      2|    #define NUM_KEYWORDS 2
 1266|      2|    static struct {
 1267|      2|        PyGC_Head _this_is_not_used;
 1268|      2|        PyObject_VAR_HEAD
 1269|      2|        Py_hash_t ob_hash;
 1270|      2|        PyObject *ob_item[NUM_KEYWORDS];
 1271|      2|    } _kwtuple = {
 1272|      2|        .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
  ------------------
  |  |   97|      2|    {                                     \
  |  |   98|      2|        PyObject_HEAD_INIT(type)          \
  |  |  ------------------
  |  |  |  |   90|      2|    {                               \
  |  |  |  |   91|      2|        { _Py_STATIC_IMMORTAL_INITIAL_REFCNT },    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   50|      2|#define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   47|      2|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      2|#define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  583|      2|#define _Py_STATICALLY_ALLOCATED_FLAG (1 << 2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  581|      2|#define _Py_IMMORTAL_FLAGS (1 << 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   92|      2|        (type)                      \
  |  |  |  |   93|      2|    },
  |  |  ------------------
  |  |   99|      2|        (size)                            \
  |  |  100|      2|    },
  ------------------
 1273|      2|        .ob_hash = -1,
 1274|      2|        .ob_item = { &_Py_ID(sep), &_Py_ID(maxsplit), },
  ------------------
  |  |  917|      2|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      2|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      2|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      .ob_item = { &_Py_ID(sep), &_Py_ID(maxsplit), },
  ------------------
  |  |  917|      2|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      2|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      2|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1275|      2|    };
 1276|      2|    #undef NUM_KEYWORDS
 1277|      2|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
 1278|       |
 1279|       |    #else  // !Py_BUILD_CORE
 1280|       |    #  define KWTUPLE NULL
 1281|       |    #endif  // !Py_BUILD_CORE
 1282|       |
 1283|      2|    static const char * const _keywords[] = {"sep", "maxsplit", NULL};
 1284|      2|    static _PyArg_Parser _parser = {
 1285|      2|        .keywords = _keywords,
 1286|      2|        .fname = "split",
 1287|      2|        .kwtuple = KWTUPLE,
  ------------------
  |  | 1277|      2|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
  ------------------
 1288|      2|    };
 1289|      2|    #undef KWTUPLE
 1290|      2|    PyObject *argsbuf[2];
 1291|      2|    Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
  ------------------
  |  |   27|      0|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1291:36): [True: 0, False: 2]
  ------------------
 1292|      2|    PyObject *sep = Py_None;
  ------------------
  |  |  616|      2|#  define Py_None (&_Py_NoneStruct)
  ------------------
 1293|      2|    Py_ssize_t maxsplit = -1;
 1294|       |
 1295|      2|    args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser,
  ------------------
  |  |   88|      2|    (((minkw) == 0 && (kwargs) == NULL && (kwnames) == NULL && \
  |  |  ------------------
  |  |  |  Branch (88:7): [True: 0, Folded]
  |  |  |  Branch (88:23): [True: 0, Folded]
  |  |  |  Branch (88:43): [True: 2, False: 0]
  |  |  ------------------
  |  |   89|      2|      (minpos) <= (nargs) && ((varpos) || (nargs) <= (maxpos)) && (args) != NULL) ? \
  |  |  ------------------
  |  |  |  Branch (89:7): [True: 2, False: 0]
  |  |  |  Branch (89:31): [Folded, False: 2]
  |  |  |  Branch (89:43): [True: 2, False: 0]
  |  |  |  Branch (89:67): [True: 2, False: 0]
  |  |  ------------------
  |  |   90|      2|      (args) : \
  |  |   91|      2|     _PyArg_UnpackKeywords((args), (nargs), (kwargs), (kwnames), (parser), \
  |  |   92|      0|                           (minpos), (maxpos), (minkw), (varpos), (buf)))
  ------------------
 1296|      2|            /*minpos*/ 0, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf);
 1297|      2|    if (!args) {
  ------------------
  |  Branch (1297:9): [True: 0, False: 2]
  ------------------
 1298|      0|        goto exit;
 1299|      0|    }
 1300|      2|    if (!noptargs) {
  ------------------
  |  Branch (1300:9): [True: 0, False: 2]
  ------------------
 1301|      0|        goto skip_optional_pos;
 1302|      0|    }
 1303|      2|    if (args[0]) {
  ------------------
  |  Branch (1303:9): [True: 2, False: 0]
  ------------------
 1304|      2|        sep = args[0];
 1305|      2|        if (!--noptargs) {
  ------------------
  |  Branch (1305:13): [True: 2, False: 0]
  ------------------
 1306|      2|            goto skip_optional_pos;
 1307|      2|        }
 1308|      2|    }
 1309|      0|    {
 1310|      0|        Py_ssize_t ival = -1;
 1311|      0|        PyObject *iobj = _PyNumber_Index(args[1]);
 1312|      0|        if (iobj != NULL) {
  ------------------
  |  Branch (1312:13): [True: 0, False: 0]
  ------------------
 1313|      0|            ival = PyLong_AsSsize_t(iobj);
 1314|      0|            Py_DECREF(iobj);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1315|      0|        }
 1316|      0|        if (ival == -1 && PyErr_Occurred()) {
  ------------------
  |  Branch (1316:13): [True: 0, False: 0]
  |  Branch (1316:27): [True: 0, False: 0]
  ------------------
 1317|      0|            goto exit;
 1318|      0|        }
 1319|      0|        maxsplit = ival;
 1320|      0|    }
 1321|      2|skip_optional_pos:
 1322|      2|    return_value = unicode_split_impl(self, sep, maxsplit);
 1323|       |
 1324|      2|exit:
 1325|      2|    return return_value;
 1326|      2|}
unicodeobject.c:unicode_find:
  383|      1|{
  384|      1|    PyObject *return_value = NULL;
  385|      1|    PyObject *substr;
  386|      1|    Py_ssize_t start = 0;
  387|      1|    Py_ssize_t end = PY_SSIZE_T_MAX;
  ------------------
  |  |  137|      1|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  388|      1|    Py_ssize_t _return_value;
  389|       |
  390|      1|    if (!_PyArg_CheckPositional("find", nargs, 1, 3)) {
  ------------------
  |  |   31|      1|    (((min) <= (nargs) && (nargs) <= (max)) \
  |  |  ------------------
  |  |  |  Branch (31:7): [True: 1, False: 0]
  |  |  |  Branch (31:27): [True: 1, False: 0]
  |  |  ------------------
  |  |   32|      1|     || _PyArg_CheckPositional((funcname), (nargs), (min), (max)))
  |  |  ------------------
  |  |  |  Branch (32:9): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  391|      0|        goto exit;
  392|      0|    }
  393|      1|    if (!PyUnicode_Check(args[0])) {
  ------------------
  |  |  103|      1|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      1|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (393:9): [True: 0, False: 1]
  ------------------
  394|      0|        _PyArg_BadArgument("find", "argument 1", "str", args[0]);
  395|      0|        goto exit;
  396|      0|    }
  397|      1|    substr = args[0];
  398|      1|    if (nargs < 2) {
  ------------------
  |  Branch (398:9): [True: 0, False: 1]
  ------------------
  399|      0|        goto skip_optional;
  400|      0|    }
  401|      1|    if (!_PyEval_SliceIndex(args[1], &start)) {
  ------------------
  |  Branch (401:9): [True: 0, False: 1]
  ------------------
  402|      0|        goto exit;
  403|      0|    }
  404|      1|    if (nargs < 3) {
  ------------------
  |  Branch (404:9): [True: 1, False: 0]
  ------------------
  405|      1|        goto skip_optional;
  406|      1|    }
  407|      0|    if (!_PyEval_SliceIndex(args[2], &end)) {
  ------------------
  |  Branch (407:9): [True: 0, False: 0]
  ------------------
  408|      0|        goto exit;
  409|      0|    }
  410|      1|skip_optional:
  411|      1|    _return_value = unicode_find_impl(str, substr, start, end);
  412|      1|    if ((_return_value == -1) && PyErr_Occurred()) {
  ------------------
  |  Branch (412:9): [True: 0, False: 1]
  |  Branch (412:34): [True: 0, False: 0]
  ------------------
  413|      0|        goto exit;
  414|      0|    }
  415|      1|    return_value = PyLong_FromSsize_t(_return_value);
  416|       |
  417|      1|exit:
  418|      1|    return return_value;
  419|      1|}
unicodeobject.c:unicode_lower:
  805|      2|{
  806|      2|    return unicode_lower_impl(self);
  807|      2|}
unicodeobject.c:unicode_rfind:
 1088|      3|{
 1089|      3|    PyObject *return_value = NULL;
 1090|      3|    PyObject *substr;
 1091|      3|    Py_ssize_t start = 0;
 1092|      3|    Py_ssize_t end = PY_SSIZE_T_MAX;
  ------------------
  |  |  137|      3|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
 1093|      3|    Py_ssize_t _return_value;
 1094|       |
 1095|      3|    if (!_PyArg_CheckPositional("rfind", nargs, 1, 3)) {
  ------------------
  |  |   31|      3|    (((min) <= (nargs) && (nargs) <= (max)) \
  |  |  ------------------
  |  |  |  Branch (31:7): [True: 3, False: 0]
  |  |  |  Branch (31:27): [True: 3, False: 0]
  |  |  ------------------
  |  |   32|      3|     || _PyArg_CheckPositional((funcname), (nargs), (min), (max)))
  |  |  ------------------
  |  |  |  Branch (32:9): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1096|      0|        goto exit;
 1097|      0|    }
 1098|      3|    if (!PyUnicode_Check(args[0])) {
  ------------------
  |  |  103|      3|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      3|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (1098:9): [True: 0, False: 3]
  ------------------
 1099|      0|        _PyArg_BadArgument("rfind", "argument 1", "str", args[0]);
 1100|      0|        goto exit;
 1101|      0|    }
 1102|      3|    substr = args[0];
 1103|      3|    if (nargs < 2) {
  ------------------
  |  Branch (1103:9): [True: 3, False: 0]
  ------------------
 1104|      3|        goto skip_optional;
 1105|      3|    }
 1106|      0|    if (!_PyEval_SliceIndex(args[1], &start)) {
  ------------------
  |  Branch (1106:9): [True: 0, False: 0]
  ------------------
 1107|      0|        goto exit;
 1108|      0|    }
 1109|      0|    if (nargs < 3) {
  ------------------
  |  Branch (1109:9): [True: 0, False: 0]
  ------------------
 1110|      0|        goto skip_optional;
 1111|      0|    }
 1112|      0|    if (!_PyEval_SliceIndex(args[2], &end)) {
  ------------------
  |  Branch (1112:9): [True: 0, False: 0]
  ------------------
 1113|      0|        goto exit;
 1114|      0|    }
 1115|      3|skip_optional:
 1116|      3|    _return_value = unicode_rfind_impl(str, substr, start, end);
 1117|      3|    if ((_return_value == -1) && PyErr_Occurred()) {
  ------------------
  |  Branch (1117:9): [True: 0, False: 3]
  |  Branch (1117:34): [True: 0, False: 0]
  ------------------
 1118|      0|        goto exit;
 1119|      0|    }
 1120|      3|    return_value = PyLong_FromSsize_t(_return_value);
 1121|       |
 1122|      3|exit:
 1123|      3|    return return_value;
 1124|      3|}
unicodeobject.c:unicode_rstrip:
  893|     75|{
  894|     75|    PyObject *return_value = NULL;
  895|     75|    PyObject *chars = Py_None;
  ------------------
  |  |  616|     75|#  define Py_None (&_Py_NoneStruct)
  ------------------
  896|       |
  897|     75|    if (!_PyArg_CheckPositional("rstrip", nargs, 0, 1)) {
  ------------------
  |  |   31|     75|    (((min) <= (nargs) && (nargs) <= (max)) \
  |  |  ------------------
  |  |  |  Branch (31:7): [True: 75, False: 0]
  |  |  |  Branch (31:27): [True: 75, False: 0]
  |  |  ------------------
  |  |   32|     75|     || _PyArg_CheckPositional((funcname), (nargs), (min), (max)))
  |  |  ------------------
  |  |  |  Branch (32:9): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  898|      0|        goto exit;
  899|      0|    }
  900|     75|    if (nargs < 1) {
  ------------------
  |  Branch (900:9): [True: 0, False: 75]
  ------------------
  901|      0|        goto skip_optional;
  902|      0|    }
  903|     75|    chars = args[0];
  904|     75|skip_optional:
  905|     75|    return_value = unicode_rstrip_impl(self, chars);
  906|       |
  907|     75|exit:
  908|     75|    return return_value;
  909|     75|}
unicodeobject.c:unicode_startswith:
 1690|     30|{
 1691|     30|    PyObject *return_value = NULL;
 1692|     30|    PyObject *subobj;
 1693|     30|    Py_ssize_t start = 0;
 1694|     30|    Py_ssize_t end = PY_SSIZE_T_MAX;
  ------------------
  |  |  137|     30|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
 1695|       |
 1696|     30|    if (!_PyArg_CheckPositional("startswith", nargs, 1, 3)) {
  ------------------
  |  |   31|     30|    (((min) <= (nargs) && (nargs) <= (max)) \
  |  |  ------------------
  |  |  |  Branch (31:7): [True: 30, False: 0]
  |  |  |  Branch (31:27): [True: 30, False: 0]
  |  |  ------------------
  |  |   32|     30|     || _PyArg_CheckPositional((funcname), (nargs), (min), (max)))
  |  |  ------------------
  |  |  |  Branch (32:9): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1697|      0|        goto exit;
 1698|      0|    }
 1699|     30|    subobj = args[0];
 1700|     30|    if (nargs < 2) {
  ------------------
  |  Branch (1700:9): [True: 30, False: 0]
  ------------------
 1701|     30|        goto skip_optional;
 1702|     30|    }
 1703|      0|    if (!_PyEval_SliceIndex(args[1], &start)) {
  ------------------
  |  Branch (1703:9): [True: 0, False: 0]
  ------------------
 1704|      0|        goto exit;
 1705|      0|    }
 1706|      0|    if (nargs < 3) {
  ------------------
  |  Branch (1706:9): [True: 0, False: 0]
  ------------------
 1707|      0|        goto skip_optional;
 1708|      0|    }
 1709|      0|    if (!_PyEval_SliceIndex(args[2], &end)) {
  ------------------
  |  Branch (1709:9): [True: 0, False: 0]
  ------------------
 1710|      0|        goto exit;
 1711|      0|    }
 1712|     30|skip_optional:
 1713|     30|    return_value = unicode_startswith_impl(self, subobj, start, end);
 1714|       |
 1715|     30|exit:
 1716|     30|    return return_value;
 1717|     30|}
unicodeobject.c:unicode_endswith:
 1741|     19|{
 1742|     19|    PyObject *return_value = NULL;
 1743|     19|    PyObject *subobj;
 1744|     19|    Py_ssize_t start = 0;
 1745|     19|    Py_ssize_t end = PY_SSIZE_T_MAX;
  ------------------
  |  |  137|     19|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
 1746|       |
 1747|     19|    if (!_PyArg_CheckPositional("endswith", nargs, 1, 3)) {
  ------------------
  |  |   31|     19|    (((min) <= (nargs) && (nargs) <= (max)) \
  |  |  ------------------
  |  |  |  Branch (31:7): [True: 19, False: 0]
  |  |  |  Branch (31:27): [True: 19, False: 0]
  |  |  ------------------
  |  |   32|     19|     || _PyArg_CheckPositional((funcname), (nargs), (min), (max)))
  |  |  ------------------
  |  |  |  Branch (32:9): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1748|      0|        goto exit;
 1749|      0|    }
 1750|     19|    subobj = args[0];
 1751|     19|    if (nargs < 2) {
  ------------------
  |  Branch (1751:9): [True: 19, False: 0]
  ------------------
 1752|     19|        goto skip_optional;
 1753|     19|    }
 1754|      0|    if (!_PyEval_SliceIndex(args[1], &start)) {
  ------------------
  |  Branch (1754:9): [True: 0, False: 0]
  ------------------
 1755|      0|        goto exit;
 1756|      0|    }
 1757|      0|    if (nargs < 3) {
  ------------------
  |  Branch (1757:9): [True: 0, False: 0]
  ------------------
 1758|      0|        goto skip_optional;
 1759|      0|    }
 1760|      0|    if (!_PyEval_SliceIndex(args[2], &end)) {
  ------------------
  |  Branch (1760:9): [True: 0, False: 0]
  ------------------
 1761|      0|        goto exit;
 1762|      0|    }
 1763|     19|skip_optional:
 1764|     19|    return_value = unicode_endswith_impl(self, subobj, start, end);
 1765|       |
 1766|     19|exit:
 1767|     19|    return return_value;
 1768|     19|}
unicodeobject.c:unicode_isascii:
  494|      1|{
  495|      1|    return unicode_isascii_impl(self);
  496|      1|}

_PyCode_Validate:
  447|    743|{
  448|       |    /* Check argument types */
  449|    743|    if (con->argcount < con->posonlyargcount || con->posonlyargcount < 0 ||
  ------------------
  |  Branch (449:9): [True: 0, False: 743]
  |  Branch (449:49): [True: 0, False: 743]
  ------------------
  450|    743|        con->kwonlyargcount < 0 ||
  ------------------
  |  Branch (450:9): [True: 0, False: 743]
  ------------------
  451|    743|        con->stacksize < 0 || con->flags < 0 ||
  ------------------
  |  Branch (451:9): [True: 0, False: 743]
  |  Branch (451:31): [True: 0, False: 743]
  ------------------
  452|    743|        con->code == NULL || !PyBytes_Check(con->code) ||
  ------------------
  |  |   28|    743|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_BYTES_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|  1.48k|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (452:9): [True: 0, False: 743]
  |  Branch (452:30): [True: 0, False: 743]
  ------------------
  453|    743|        con->consts == NULL || !PyTuple_Check(con->consts) ||
  ------------------
  |  |   27|    743|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TUPLE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|  1.48k|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (453:9): [True: 0, False: 743]
  |  Branch (453:32): [True: 0, False: 743]
  ------------------
  454|    743|        con->names == NULL || !PyTuple_Check(con->names) ||
  ------------------
  |  |   27|    743|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TUPLE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|  1.48k|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (454:9): [True: 0, False: 743]
  |  Branch (454:31): [True: 0, False: 743]
  ------------------
  455|    743|        con->localsplusnames == NULL || !PyTuple_Check(con->localsplusnames) ||
  ------------------
  |  |   27|    743|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TUPLE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|  1.48k|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (455:9): [True: 0, False: 743]
  |  Branch (455:41): [True: 0, False: 743]
  ------------------
  456|    743|        con->localspluskinds == NULL || !PyBytes_Check(con->localspluskinds) ||
  ------------------
  |  |   28|    743|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_BYTES_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|  1.48k|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (456:9): [True: 0, False: 743]
  |  Branch (456:41): [True: 0, False: 743]
  ------------------
  457|    743|        PyTuple_GET_SIZE(con->localsplusnames)
  ------------------
  |  |   27|    743|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    743|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    743|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (457:9): [True: 0, False: 743]
  ------------------
  458|    743|            != PyBytes_GET_SIZE(con->localspluskinds) ||
  ------------------
  |  |   33|  1.48k|#define PyBytes_GET_SIZE(self) PyBytes_GET_SIZE(_PyObject_CAST(self))
  |  |  ------------------
  |  |  |  |  171|    743|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    743|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  459|    743|        con->name == NULL || !PyUnicode_Check(con->name) ||
  ------------------
  |  |  103|    743|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|  1.48k|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (459:9): [True: 0, False: 743]
  |  Branch (459:30): [True: 0, False: 743]
  ------------------
  460|    743|        con->qualname == NULL || !PyUnicode_Check(con->qualname) ||
  ------------------
  |  |  103|    743|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|  1.48k|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (460:9): [True: 0, False: 743]
  |  Branch (460:34): [True: 0, False: 743]
  ------------------
  461|    743|        con->filename == NULL || !PyUnicode_Check(con->filename) ||
  ------------------
  |  |  103|    743|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|  1.48k|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (461:9): [True: 0, False: 743]
  |  Branch (461:34): [True: 0, False: 743]
  ------------------
  462|    743|        con->linetable == NULL || !PyBytes_Check(con->linetable) ||
  ------------------
  |  |   28|    743|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_BYTES_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|  1.48k|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (462:9): [True: 0, False: 743]
  |  Branch (462:35): [True: 0, False: 743]
  ------------------
  463|    743|        con->exceptiontable == NULL || !PyBytes_Check(con->exceptiontable)
  ------------------
  |  |   28|    743|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_BYTES_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|    743|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (463:9): [True: 0, False: 743]
  |  Branch (463:40): [True: 0, False: 743]
  ------------------
  464|    743|        ) {
  465|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
  466|      0|        return -1;
  467|      0|    }
  468|       |
  469|       |    /* Make sure that code is indexable with an int, this is
  470|       |       a long running assumption in ceval.c and many parts of
  471|       |       the interpreter. */
  472|    743|    if (PyBytes_GET_SIZE(con->code) > INT_MAX) {
  ------------------
  |  |   33|    743|#define PyBytes_GET_SIZE(self) PyBytes_GET_SIZE(_PyObject_CAST(self))
  |  |  ------------------
  |  |  |  |  171|    743|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    743|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (472:9): [True: 0, False: 743]
  ------------------
  473|      0|        PyErr_SetString(PyExc_OverflowError,
  474|      0|                        "code: co_code larger than INT_MAX");
  475|      0|        return -1;
  476|      0|    }
  477|    743|    if (PyBytes_GET_SIZE(con->code) % sizeof(_Py_CODEUNIT) != 0 ||
  ------------------
  |  |   33|    743|#define PyBytes_GET_SIZE(self) PyBytes_GET_SIZE(_PyObject_CAST(self))
  |  |  ------------------
  |  |  |  |  171|    743|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    743|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (477:9): [True: 0, False: 743]
  ------------------
  478|    743|        !_Py_IS_ALIGNED(PyBytes_AS_STRING(con->code), sizeof(_Py_CODEUNIT))
  ------------------
  |  |  221|    743|#define _Py_IS_ALIGNED(p, a) (!((uintptr_t)(p) & (uintptr_t)((a) - 1)))
  ------------------
  |  Branch (478:9): [True: 0, False: 743]
  ------------------
  479|    743|        ) {
  480|      0|        PyErr_SetString(PyExc_ValueError, "code: co_code is malformed");
  481|      0|        return -1;
  482|      0|    }
  483|       |
  484|       |    /* Ensure that the co_varnames has enough names to cover the arg counts.
  485|       |     * Note that totalargs = nlocals - nplainlocals.  We check nplainlocals
  486|       |     * here to avoid the possibility of overflow (however remote). */
  487|    743|    int nlocals;
  488|    743|    get_localsplus_counts(con->localsplusnames, con->localspluskinds,
  489|    743|                          &nlocals, NULL, NULL);
  490|    743|    int nplainlocals = nlocals -
  491|    743|                       con->argcount -
  492|    743|                       con->kwonlyargcount -
  493|    743|                       ((con->flags & CO_VARARGS) != 0) -
  ------------------
  |  |  120|    743|#define CO_VARARGS      0x0004
  ------------------
  494|    743|                       ((con->flags & CO_VARKEYWORDS) != 0);
  ------------------
  |  |  121|    743|#define CO_VARKEYWORDS  0x0008
  ------------------
  495|    743|    if (nplainlocals < 0) {
  ------------------
  |  Branch (495:9): [True: 0, False: 743]
  ------------------
  496|      0|        PyErr_SetString(PyExc_ValueError, "code: co_varnames is too small");
  497|      0|        return -1;
  498|      0|    }
  499|       |
  500|    743|    return 0;
  501|    743|}
_PyCode_New:
  717|    743|{
  718|    743|    if (intern_code_constants(con) < 0) {
  ------------------
  |  Branch (718:9): [True: 0, False: 743]
  ------------------
  719|      0|        return NULL;
  720|      0|    }
  721|       |
  722|    743|    PyObject *replacement_locations = NULL;
  723|       |    // Compact the linetable if we are opted out of debug
  724|       |    // ranges.
  725|    743|    if (!_Py_GetConfig()->code_debug_ranges) {
  ------------------
  |  Branch (725:9): [True: 0, False: 743]
  ------------------
  726|      0|        replacement_locations = remove_column_info(con->linetable);
  727|      0|        if (replacement_locations == NULL) {
  ------------------
  |  Branch (727:13): [True: 0, False: 0]
  ------------------
  728|      0|            return NULL;
  729|      0|        }
  730|      0|        con->linetable = replacement_locations;
  731|      0|    }
  732|       |
  733|    743|    Py_ssize_t size = PyBytes_GET_SIZE(con->code) / sizeof(_Py_CODEUNIT);
  ------------------
  |  |   33|    743|#define PyBytes_GET_SIZE(self) PyBytes_GET_SIZE(_PyObject_CAST(self))
  |  |  ------------------
  |  |  |  |  171|    743|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    743|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  734|    743|    PyCodeObject *co;
  735|       |#ifdef Py_GIL_DISABLED
  736|       |    co = PyObject_GC_NewVar(PyCodeObject, &PyCode_Type, size);
  737|       |#else
  738|    743|    co = PyObject_NewVar(PyCodeObject, &PyCode_Type, size);
  ------------------
  |  |  137|    743|                ( (type *) _PyObject_NewVar((typeobj), (n)) )
  ------------------
  739|    743|#endif
  740|    743|    if (co == NULL) {
  ------------------
  |  Branch (740:9): [True: 0, False: 743]
  ------------------
  741|      0|        Py_XDECREF(replacement_locations);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  742|      0|        PyErr_NoMemory();
  743|      0|        return NULL;
  744|      0|    }
  745|       |
  746|    743|    if (init_code(co, con) < 0) {
  ------------------
  |  Branch (746:9): [True: 0, False: 743]
  ------------------
  747|      0|        Py_DECREF(co);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  748|      0|        return NULL;
  749|      0|    }
  750|       |
  751|       |#ifdef Py_GIL_DISABLED
  752|       |    co->_co_unique_id = _PyObject_AssignUniqueId((PyObject *)co);
  753|       |    _PyObject_GC_TRACK(co);
  754|       |#endif
  755|    743|    Py_XDECREF(replacement_locations);
  ------------------
  |  |  524|    743|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    743|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    743|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  756|    743|    return co;
  757|    743|}
_PyCode_Init:
 3249|      1|{
 3250|       |#ifdef Py_GIL_DISABLED
 3251|       |    struct _py_code_state *state = &interp->code_state;
 3252|       |    state->constants = _Py_hashtable_new_full(&hash_const, &compare_constants,
 3253|       |                                              &destroy_key, NULL, NULL);
 3254|       |    if (state->constants == NULL) {
 3255|       |        return _PyStatus_NO_MEMORY();
 3256|       |    }
 3257|       |#endif
 3258|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 3259|      1|}
codeobject.c:get_localsplus_counts:
  392|  1.48k|{
  393|  1.48k|    int nlocals = 0;
  394|  1.48k|    int ncellvars = 0;
  395|  1.48k|    int nfreevars = 0;
  396|  1.48k|    Py_ssize_t nlocalsplus = PyTuple_GET_SIZE(names);
  ------------------
  |  |   27|  1.48k|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  1.48k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.48k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  397|  5.84k|    for (int i = 0; i < nlocalsplus; i++) {
  ------------------
  |  Branch (397:21): [True: 4.36k, False: 1.48k]
  ------------------
  398|  4.36k|        _PyLocals_Kind kind = _PyLocals_GetKind(kinds, i);
  399|  4.36k|        if (kind & CO_FAST_LOCAL) {
  ------------------
  |  |  197|  4.36k|#define CO_FAST_LOCAL   (0x20)
  ------------------
  |  Branch (399:13): [True: 4.07k, False: 284]
  ------------------
  400|  4.07k|            nlocals += 1;
  401|  4.07k|            if (kind & CO_FAST_CELL) {
  ------------------
  |  |  198|  4.07k|#define CO_FAST_CELL    (0x40)
  ------------------
  |  Branch (401:17): [True: 28, False: 4.04k]
  ------------------
  402|     28|                ncellvars += 1;
  403|     28|            }
  404|  4.07k|        }
  405|    284|        else if (kind & CO_FAST_CELL) {
  ------------------
  |  |  198|    284|#define CO_FAST_CELL    (0x40)
  ------------------
  |  Branch (405:18): [True: 192, False: 92]
  ------------------
  406|    192|            ncellvars += 1;
  407|    192|        }
  408|     92|        else if (kind & CO_FAST_FREE) {
  ------------------
  |  |  199|     92|#define CO_FAST_FREE    (0x80)
  ------------------
  |  Branch (408:18): [True: 92, False: 0]
  ------------------
  409|     92|            nfreevars += 1;
  410|     92|        }
  411|  4.36k|    }
  412|  1.48k|    if (pnlocals != NULL) {
  ------------------
  |  Branch (412:9): [True: 1.48k, False: 0]
  ------------------
  413|  1.48k|        *pnlocals = nlocals;
  414|  1.48k|    }
  415|  1.48k|    if (pncellvars != NULL) {
  ------------------
  |  Branch (415:9): [True: 743, False: 743]
  ------------------
  416|    743|        *pncellvars = ncellvars;
  417|    743|    }
  418|  1.48k|    if (pnfreevars != NULL) {
  ------------------
  |  Branch (418:9): [True: 743, False: 743]
  ------------------
  419|    743|        *pnfreevars = nfreevars;
  420|    743|    }
  421|  1.48k|}
codeobject.c:intern_code_constants:
  690|    743|{
  691|       |#ifdef Py_GIL_DISABLED
  692|       |    PyInterpreterState *interp = _PyInterpreterState_GET();
  693|       |    struct _py_code_state *state = &interp->code_state;
  694|       |    FT_MUTEX_LOCK(&state->mutex);
  695|       |#endif
  696|    743|    if (intern_strings(con->names) < 0) {
  ------------------
  |  Branch (696:9): [True: 0, False: 743]
  ------------------
  697|      0|        goto error;
  698|      0|    }
  699|    743|    if (intern_constants(con->consts, NULL) < 0) {
  ------------------
  |  Branch (699:9): [True: 0, False: 743]
  ------------------
  700|      0|        goto error;
  701|      0|    }
  702|    743|    if (intern_strings(con->localsplusnames) < 0) {
  ------------------
  |  Branch (702:9): [True: 0, False: 743]
  ------------------
  703|      0|        goto error;
  704|      0|    }
  705|    743|    FT_MUTEX_UNLOCK(&state->mutex);
  ------------------
  |  |  206|    743|#define FT_MUTEX_UNLOCK(lock) do {} while (0)
  |  |  ------------------
  |  |  |  Branch (206:44): [Folded, False: 743]
  |  |  ------------------
  ------------------
  706|    743|    return 0;
  707|       |
  708|      0|error:
  709|      0|    FT_MUTEX_UNLOCK(&state->mutex);
  ------------------
  |  |  206|      0|#define FT_MUTEX_UNLOCK(lock) do {} while (0)
  |  |  ------------------
  |  |  |  Branch (206:44): [Folded, False: 0]
  |  |  ------------------
  ------------------
  710|      0|    return -1;
  711|    743|}
codeobject.c:intern_strings:
  183|  1.48k|{
  184|  1.48k|    PyInterpreterState *interp = _PyInterpreterState_GET();
  185|  1.48k|    Py_ssize_t i;
  186|       |
  187|  8.45k|    for (i = PyTuple_GET_SIZE(tuple); --i >= 0; ) {
  ------------------
  |  |   27|  1.48k|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  1.48k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.48k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (187:39): [True: 6.96k, False: 1.48k]
  ------------------
  188|  6.96k|        PyObject *v = PyTuple_GET_ITEM(tuple, i);
  ------------------
  |  |   29|  6.96k|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|  6.96k|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  6.96k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (188:23): [True: 6.96k, False: 0]
  ------------------
  189|  6.96k|        if (v == NULL || !PyUnicode_CheckExact(v)) {
  ------------------
  |  |  104|  6.96k|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  ------------------
  |  |  |  |  215|  6.96k|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|  6.96k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|  6.96k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (189:13): [True: 0, False: 6.96k]
  |  Branch (189:26): [True: 0, False: 6.96k]
  ------------------
  190|      0|            PyErr_SetString(PyExc_SystemError,
  191|      0|                            "non-string found in code slot");
  192|      0|            return -1;
  193|      0|        }
  194|  6.96k|        _PyUnicode_InternImmortal(interp, &_PyTuple_ITEMS(tuple)[i]);
  ------------------
  |  |   26|  6.96k|#define _PyTuple_ITEMS(op) _Py_RVALUE(_PyTuple_CAST(op)->ob_item)
  |  |  ------------------
  |  |  |  |  277|  13.9k|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 6.96k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  195|  6.96k|    }
  196|  1.48k|    return 0;
  197|  1.48k|}
codeobject.c:intern_constants:
  204|  1.05k|{
  205|  1.05k|    PyInterpreterState *interp = _PyInterpreterState_GET();
  206|  4.95k|    for (Py_ssize_t i = PyTuple_GET_SIZE(tuple); --i >= 0; ) {
  ------------------
  |  |   27|  1.05k|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  1.05k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.05k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (206:50): [True: 3.89k, False: 1.05k]
  ------------------
  207|  3.89k|        PyObject *v = PyTuple_GET_ITEM(tuple, i);
  ------------------
  |  |   29|  3.89k|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|  3.89k|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  3.89k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (207:23): [True: 3.89k, False: 0]
  ------------------
  208|  3.89k|        if (PyUnicode_CheckExact(v)) {
  ------------------
  |  |  104|  3.89k|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  ------------------
  |  |  |  |  215|  3.89k|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|  3.89k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|  3.89k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 2.30k, False: 1.58k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  209|  2.30k|            if (should_intern_string(v)) {
  ------------------
  |  Branch (209:17): [True: 1.45k, False: 852]
  ------------------
  210|  1.45k|                PyObject *w = v;
  211|  1.45k|                _PyUnicode_InternMortal(interp, &v);
  212|  1.45k|                if (w != v) {
  ------------------
  |  Branch (212:21): [True: 0, False: 1.45k]
  ------------------
  213|      0|                    PyTuple_SET_ITEM(tuple, i, v);
  ------------------
  |  |   40|      0|    PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  214|      0|                    if (modified) {
  ------------------
  |  Branch (214:25): [True: 0, False: 0]
  ------------------
  215|      0|                        *modified = 1;
  216|      0|                    }
  217|      0|                }
  218|  1.45k|            }
  219|  2.30k|        }
  220|  1.58k|        else if (PyTuple_CheckExact(v)) {
  ------------------
  |  |   28|  1.58k|#define PyTuple_CheckExact(op) Py_IS_TYPE((op), &PyTuple_Type)
  |  |  ------------------
  |  |  |  |  215|  1.58k|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|  1.58k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|  1.58k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 312, False: 1.27k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  221|    312|            if (intern_constants(v, NULL) < 0) {
  ------------------
  |  Branch (221:17): [True: 0, False: 312]
  ------------------
  222|      0|                return -1;
  223|      0|            }
  224|    312|        }
  225|  1.27k|        else if (PyFrozenSet_CheckExact(v)) {
  ------------------
  |  |   23|  1.27k|#define PyFrozenSet_CheckExact(ob) Py_IS_TYPE((ob), &PyFrozenSet_Type)
  |  |  ------------------
  |  |  |  |  215|  1.27k|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|  1.27k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|  1.27k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 4, False: 1.27k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  226|      4|            PyObject *w = v;
  227|      4|            PyObject *tmp = PySequence_Tuple(v);
  228|      4|            if (tmp == NULL) {
  ------------------
  |  Branch (228:17): [True: 0, False: 4]
  ------------------
  229|      0|                return -1;
  230|      0|            }
  231|      4|            int tmp_modified = 0;
  232|      4|            if (intern_constants(tmp, &tmp_modified) < 0) {
  ------------------
  |  Branch (232:17): [True: 0, False: 4]
  ------------------
  233|      0|                Py_DECREF(tmp);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  234|      0|                return -1;
  235|      0|            }
  236|      4|            if (tmp_modified) {
  ------------------
  |  Branch (236:17): [True: 0, False: 4]
  ------------------
  237|      0|                v = PyFrozenSet_New(tmp);
  238|      0|                if (v == NULL) {
  ------------------
  |  Branch (238:21): [True: 0, False: 0]
  ------------------
  239|      0|                    Py_DECREF(tmp);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  240|      0|                    return -1;
  241|      0|                }
  242|       |
  243|      0|                PyTuple_SET_ITEM(tuple, i, v);
  ------------------
  |  |   40|      0|    PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  244|      0|                Py_DECREF(w);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  245|      0|                if (modified) {
  ------------------
  |  Branch (245:21): [True: 0, False: 0]
  ------------------
  246|      0|                    *modified = 1;
  247|      0|                }
  248|      0|            }
  249|      4|            Py_DECREF(tmp);
  ------------------
  |  |  430|      4|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|      4|        }
  251|       |#ifdef Py_GIL_DISABLED
  252|       |        else if (PySlice_Check(v)) {
  253|       |            PySliceObject *slice = (PySliceObject *)v;
  254|       |            PyObject *tmp = PyTuple_New(3);
  255|       |            if (tmp == NULL) {
  256|       |                return -1;
  257|       |            }
  258|       |            PyTuple_SET_ITEM(tmp, 0, Py_NewRef(slice->start));
  259|       |            PyTuple_SET_ITEM(tmp, 1, Py_NewRef(slice->stop));
  260|       |            PyTuple_SET_ITEM(tmp, 2, Py_NewRef(slice->step));
  261|       |            int tmp_modified = 0;
  262|       |            if (intern_constants(tmp, &tmp_modified) < 0) {
  263|       |                Py_DECREF(tmp);
  264|       |                return -1;
  265|       |            }
  266|       |            if (tmp_modified) {
  267|       |                v = PySlice_New(PyTuple_GET_ITEM(tmp, 0),
  268|       |                                PyTuple_GET_ITEM(tmp, 1),
  269|       |                                PyTuple_GET_ITEM(tmp, 2));
  270|       |                if (v == NULL) {
  271|       |                    Py_DECREF(tmp);
  272|       |                    return -1;
  273|       |                }
  274|       |                PyTuple_SET_ITEM(tuple, i, v);
  275|       |                Py_DECREF(slice);
  276|       |                if (modified) {
  277|       |                    *modified = 1;
  278|       |                }
  279|       |            }
  280|       |            Py_DECREF(tmp);
  281|       |        }
  282|       |
  283|       |        // Intern non-string constants in the free-threaded build
  284|       |        _PyThreadStateImpl *tstate = (_PyThreadStateImpl *)_PyThreadState_GET();
  285|       |        if (!_Py_IsImmortal(v) && !PyUnicode_CheckExact(v) &&
  286|       |            should_immortalize_constant(v) &&
  287|       |            !tstate->suppress_co_const_immortalization)
  288|       |        {
  289|       |            PyObject *interned = intern_one_constant(v);
  290|       |            if (interned == NULL) {
  291|       |                return -1;
  292|       |            }
  293|       |            else if (interned != v) {
  294|       |                PyTuple_SET_ITEM(tuple, i, interned);
  295|       |                Py_SETREF(v, interned);
  296|       |                if (modified) {
  297|       |                    *modified = 1;
  298|       |                }
  299|       |            }
  300|       |        }
  301|       |#endif
  302|  3.89k|    }
  303|  1.05k|    return 0;
  304|  1.05k|}
codeobject.c:should_intern_string:
  118|  2.30k|{
  119|       |#ifdef Py_GIL_DISABLED
  120|       |    // The free-threaded build interns (and immortalizes) all string constants
  121|       |    return 1;
  122|       |#else
  123|       |    // compute if s matches [a-zA-Z0-9_]
  124|  2.30k|    const unsigned char *s, *e;
  125|       |
  126|  2.30k|    if (!PyUnicode_IS_ASCII(o))
  ------------------
  |  |  227|  2.30k|#define PyUnicode_IS_ASCII(op) PyUnicode_IS_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  2.30k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.30k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (126:9): [True: 1, False: 2.30k]
  ------------------
  127|      1|        return 0;
  128|       |
  129|  2.30k|    s = PyUnicode_1BYTE_DATA(o);
  ------------------
  |  |  291|  2.30k|#define PyUnicode_1BYTE_DATA(op) _Py_STATIC_CAST(Py_UCS1*, PyUnicode_DATA(op))
  |  |  ------------------
  |  |  |  |   34|  2.30k|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  130|  2.30k|    e = s + PyUnicode_GET_LENGTH(o);
  ------------------
  |  |  299|  2.30k|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  2.30k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.30k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  131|  18.5k|    for (; s != e; s++) {
  ------------------
  |  Branch (131:12): [True: 17.0k, False: 1.45k]
  ------------------
  132|  17.0k|        if (!Py_ISALNUM(*s) && *s != '_')
  ------------------
  |  |   26|  34.1k|#define Py_ISALNUM(c)  (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_ALNUM)
  |  |  ------------------
  |  |  |  |  138|  17.0k|#define Py_CHARMASK(c) ((unsigned char)((c) & 0xff))
  |  |  ------------------
  |  |               #define Py_ISALNUM(c)  (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_ALNUM)
  |  |  ------------------
  |  |  |  |   12|  17.0k|#define PY_CTF_ALNUM  (PY_CTF_ALPHA|PY_CTF_DIGIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   10|  17.0k|#define PY_CTF_ALPHA  (PY_CTF_LOWER|PY_CTF_UPPER)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |    8|  17.0k|#define PY_CTF_LOWER  0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define PY_CTF_ALPHA  (PY_CTF_LOWER|PY_CTF_UPPER)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |    9|  17.0k|#define PY_CTF_UPPER  0x02
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define PY_CTF_ALNUM  (PY_CTF_ALPHA|PY_CTF_DIGIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   11|  17.0k|#define PY_CTF_DIGIT  0x04
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (132:13): [True: 1.84k, False: 15.2k]
  |  Branch (132:32): [True: 851, False: 990]
  ------------------
  133|    851|            return 0;
  134|  17.0k|    }
  135|  1.45k|    return 1;
  136|  2.30k|#endif
  137|  2.30k|}
codeobject.c:init_code:
  512|    743|{
  513|    743|    int nlocalsplus = (int)PyTuple_GET_SIZE(con->localsplusnames);
  ------------------
  |  |   27|    743|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    743|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    743|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  514|    743|    int nlocals, ncellvars, nfreevars;
  515|    743|    get_localsplus_counts(con->localsplusnames, con->localspluskinds,
  516|    743|                          &nlocals, &ncellvars, &nfreevars);
  517|    743|    if (con->stacksize == 0) {
  ------------------
  |  Branch (517:9): [True: 0, False: 743]
  ------------------
  518|      0|        con->stacksize = 1;
  519|      0|    }
  520|       |
  521|    743|    PyInterpreterState *interp = _PyInterpreterState_GET();
  522|    743|    co->co_filename = Py_NewRef(con->filename);
  ------------------
  |  |  550|    743|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    743|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    743|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  523|    743|    co->co_name = Py_NewRef(con->name);
  ------------------
  |  |  550|    743|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    743|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    743|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  524|    743|    co->co_qualname = Py_NewRef(con->qualname);
  ------------------
  |  |  550|    743|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    743|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    743|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  525|    743|    _PyUnicode_InternMortal(interp, &co->co_filename);
  526|    743|    _PyUnicode_InternMortal(interp, &co->co_name);
  527|    743|    _PyUnicode_InternMortal(interp, &co->co_qualname);
  528|    743|    co->co_flags = con->flags;
  529|       |
  530|    743|    co->co_firstlineno = con->firstlineno;
  531|    743|    co->co_linetable = Py_NewRef(con->linetable);
  ------------------
  |  |  550|    743|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    743|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    743|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  532|       |
  533|    743|    co->co_consts = Py_NewRef(con->consts);
  ------------------
  |  |  550|    743|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    743|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    743|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  534|    743|    co->co_names = Py_NewRef(con->names);
  ------------------
  |  |  550|    743|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    743|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    743|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  535|       |
  536|    743|    co->co_localsplusnames = Py_NewRef(con->localsplusnames);
  ------------------
  |  |  550|    743|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    743|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    743|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|    743|    co->co_localspluskinds = Py_NewRef(con->localspluskinds);
  ------------------
  |  |  550|    743|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    743|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    743|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  538|       |
  539|    743|    co->co_argcount = con->argcount;
  540|    743|    co->co_posonlyargcount = con->posonlyargcount;
  541|    743|    co->co_kwonlyargcount = con->kwonlyargcount;
  542|       |
  543|    743|    co->co_stacksize = con->stacksize;
  544|       |
  545|    743|    co->co_exceptiontable = Py_NewRef(con->exceptiontable);
  ------------------
  |  |  550|    743|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    743|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    743|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  546|       |
  547|       |    /* derived values */
  548|    743|    co->co_nlocalsplus = nlocalsplus;
  549|    743|    co->co_nlocals = nlocals;
  550|    743|    co->co_framesize = nlocalsplus + con->stacksize + FRAME_SPECIALS_SIZE;
  ------------------
  |  |  122|    743|#define FRAME_SPECIALS_SIZE ((int)((sizeof(_PyInterpreterFrame)-1)/sizeof(PyObject *)))
  ------------------
  551|    743|    co->co_ncellvars = ncellvars;
  552|    743|    co->co_nfreevars = nfreevars;
  553|    743|    FT_MUTEX_LOCK(&interp->func_state.mutex);
  ------------------
  |  |  204|    743|#define FT_MUTEX_LOCK(lock) do {} while (0)
  |  |  ------------------
  |  |  |  Branch (204:42): [Folded, False: 743]
  |  |  ------------------
  ------------------
  554|    743|    co->co_version = interp->func_state.next_version;
  555|    743|    if (interp->func_state.next_version != 0) {
  ------------------
  |  Branch (555:9): [True: 743, False: 0]
  ------------------
  556|    743|        interp->func_state.next_version++;
  557|    743|    }
  558|    743|    FT_MUTEX_UNLOCK(&interp->func_state.mutex);
  ------------------
  |  |  206|    743|#define FT_MUTEX_UNLOCK(lock) do {} while (0)
  |  |  ------------------
  |  |  |  Branch (206:44): [Folded, False: 743]
  |  |  ------------------
  ------------------
  559|    743|    co->_co_monitoring = NULL;
  560|    743|    co->_co_instrumentation_version = 0;
  561|       |    /* not set */
  562|    743|    co->co_weakreflist = NULL;
  563|    743|    co->co_extra = NULL;
  564|    743|    co->_co_cached = NULL;
  565|    743|    co->co_executors = NULL;
  566|       |
  567|    743|    memcpy(_PyCode_CODE(co), PyBytes_AS_STRING(con->code),
  ------------------
  |  |   16|    743|#define _PyCode_CODE(CO) _Py_RVALUE((_Py_CODEUNIT *)(CO)->co_code_adaptive)
  |  |  ------------------
  |  |  |  |  277|    743|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  ------------------
  ------------------
                  memcpy(_PyCode_CODE(co), PyBytes_AS_STRING(con->code),
  ------------------
  |  |   27|    743|#define PyBytes_AS_STRING(op) PyBytes_AS_STRING(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    743|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    743|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  568|    743|           PyBytes_GET_SIZE(con->code));
  ------------------
  |  |   33|    743|#define PyBytes_GET_SIZE(self) PyBytes_GET_SIZE(_PyObject_CAST(self))
  |  |  ------------------
  |  |  |  |  171|    743|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    743|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  569|       |#ifdef Py_GIL_DISABLED
  570|       |    co->co_tlbc = _PyCodeArray_New(INITIAL_SPECIALIZED_CODE_SIZE);
  571|       |    if (co->co_tlbc == NULL) {
  572|       |        return -1;
  573|       |    }
  574|       |    co->co_tlbc->entries[0] = co->co_code_adaptive;
  575|       |#endif
  576|    743|    int entry_point = 0;
  577|  1.08k|    while (entry_point < Py_SIZE(co)) {
  ------------------
  |  |  214|  1.08k|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  1.08k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.08k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (577:12): [True: 1.08k, False: 0]
  ------------------
  578|  1.08k|        if (_PyCode_CODE(co)[entry_point].op.code == RESUME &&
  ------------------
  |  |   16|  1.08k|#define _PyCode_CODE(CO) _Py_RVALUE((_Py_CODEUNIT *)(CO)->co_code_adaptive)
  |  |  ------------------
  |  |  |  |  277|  1.08k|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  ------------------
  ------------------
                      if (_PyCode_CODE(co)[entry_point].op.code == RESUME &&
  ------------------
  |  |  133|  2.16k|#define RESUME                                 128
  ------------------
  |  Branch (578:13): [True: 763, False: 317]
  ------------------
  579|    763|           (_PyCode_CODE(co)[entry_point].op.arg & RESUME_OPARG_LOCATION_MASK) != RESUME_AT_GEN_EXPR_START
  ------------------
  |  |   16|    763|#define _PyCode_CODE(CO) _Py_RVALUE((_Py_CODEUNIT *)(CO)->co_code_adaptive)
  |  |  ------------------
  |  |  |  |  277|    763|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  ------------------
  ------------------
                         (_PyCode_CODE(co)[entry_point].op.arg & RESUME_OPARG_LOCATION_MASK) != RESUME_AT_GEN_EXPR_START
  ------------------
  |  |   92|    763|#define RESUME_OPARG_LOCATION_MASK 0x7
  ------------------
                         (_PyCode_CODE(co)[entry_point].op.arg & RESUME_OPARG_LOCATION_MASK) != RESUME_AT_GEN_EXPR_START
  ------------------
  |  |   90|    763|#define RESUME_AT_GEN_EXPR_START 4
  ------------------
  |  Branch (579:12): [True: 743, False: 20]
  ------------------
  580|  1.08k|        ) {
  581|    743|            break;
  582|    743|        }
  583|    337|        entry_point++;
  584|    337|    }
  585|    743|    co->_co_firsttraceable = entry_point;
  586|       |
  587|       |#ifdef Py_GIL_DISABLED
  588|       |    int enable_counters = interp->config.tlbc_enabled && interp->opt_config.specialization_enabled;
  589|       |    _PyCode_Quicken(_PyCode_CODE(co), Py_SIZE(co), enable_counters, co->co_flags);
  590|       |#else
  591|    743|    _PyCode_Quicken(_PyCode_CODE(co), Py_SIZE(co), interp->opt_config.specialization_enabled, co->co_flags);
  ------------------
  |  |   16|    743|#define _PyCode_CODE(CO) _Py_RVALUE((_Py_CODEUNIT *)(CO)->co_code_adaptive)
  |  |  ------------------
  |  |  |  |  277|    743|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  ------------------
  ------------------
                  _PyCode_Quicken(_PyCode_CODE(co), Py_SIZE(co), interp->opt_config.specialization_enabled, co->co_flags);
  ------------------
  |  |  214|    743|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    743|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    743|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  592|    743|#endif
  593|    743|    notify_code_watchers(PY_CODE_EVENT_CREATE, co);
  594|    743|    return 0;
  595|    743|}
codeobject.c:notify_code_watchers:
   42|    881|{
   43|    881|    assert(Py_REFCNT(co) > 0);
  ------------------
  |  Branch (43:5): [True: 881, False: 0]
  ------------------
   44|    881|    PyInterpreterState *interp = _PyInterpreterState_GET();
   45|    881|    assert(interp->_initialized);
  ------------------
  |  Branch (45:5): [True: 881, False: 0]
  ------------------
   46|    881|    uint8_t bits = interp->active_code_watchers;
   47|    881|    int i = 0;
   48|    881|    while (bits) {
  ------------------
  |  Branch (48:12): [True: 0, False: 881]
  ------------------
   49|      0|        assert(i < CODE_MAX_WATCHERS);
  ------------------
  |  Branch (49:9): [True: 0, False: 0]
  ------------------
   50|      0|        if (bits & 1) {
  ------------------
  |  Branch (50:13): [True: 0, False: 0]
  ------------------
   51|      0|            PyCode_WatchCallback cb = interp->code_watchers[i];
   52|       |            // callback must be non-null if the watcher bit is set
   53|      0|            assert(cb != NULL);
  ------------------
  |  Branch (53:13): [True: 0, False: 0]
  ------------------
   54|      0|            if (cb(event, co) < 0) {
  ------------------
  |  Branch (54:17): [True: 0, False: 0]
  ------------------
   55|      0|                PyErr_FormatUnraisable(
   56|      0|                    "Exception ignored in %s watcher callback for %R",
   57|      0|                    code_event_name(event), co);
   58|      0|            }
   59|      0|        }
   60|      0|        i++;
   61|      0|        bits >>= 1;
   62|      0|    }
   63|    881|}
codeobject.c:code_dealloc:
 2395|    138|{
 2396|    138|    PyThreadState *tstate = PyThreadState_GET();
  ------------------
  |  |   63|    138|#define PyThreadState_GET() PyThreadState_Get()
  ------------------
 2397|    138|    _Py_atomic_add_uint64(&tstate->interp->_code_object_generation, 1);
 2398|    138|    PyCodeObject *co = _PyCodeObject_CAST(self);
  ------------------
  |  |  114|    138|#define _PyCodeObject_CAST(op)  (assert(PyCode_Check(op)), (PyCodeObject *)(op))
  ------------------
  |  Branch (2398:24): [True: 138, False: 0]
  ------------------
 2399|      0|    _PyObject_ResurrectStart(self);
 2400|    138|    notify_code_watchers(PY_CODE_EVENT_DESTROY, co);
 2401|    138|    if (_PyObject_ResurrectEnd(self)) {
  ------------------
  |  Branch (2401:9): [True: 0, False: 138]
  ------------------
 2402|      0|        return;
 2403|      0|    }
 2404|       |
 2405|       |#ifdef Py_GIL_DISABLED
 2406|       |    PyObject_GC_UnTrack(co);
 2407|       |#endif
 2408|       |
 2409|    138|    _PyFunction_ClearCodeByVersion(co->co_version);
 2410|    138|    if (co->co_extra != NULL) {
  ------------------
  |  Branch (2410:9): [True: 0, False: 138]
  ------------------
 2411|      0|        PyInterpreterState *interp = _PyInterpreterState_GET();
 2412|      0|        _PyCodeObjectExtra *co_extra = co->co_extra;
 2413|       |
 2414|      0|        for (Py_ssize_t i = 0; i < co_extra->ce_size; i++) {
  ------------------
  |  Branch (2414:32): [True: 0, False: 0]
  ------------------
 2415|      0|            freefunc free_extra = interp->co_extra_freefuncs[i];
 2416|       |
 2417|      0|            if (free_extra != NULL) {
  ------------------
  |  Branch (2417:17): [True: 0, False: 0]
  ------------------
 2418|      0|                free_extra(co_extra->ce_extras[i]);
 2419|      0|            }
 2420|      0|        }
 2421|       |
 2422|      0|        PyMem_Free(co_extra);
 2423|      0|    }
 2424|       |#ifdef _Py_TIER2
 2425|       |    if (co->co_executors != NULL) {
 2426|       |        clear_executors(co);
 2427|       |    }
 2428|       |#endif
 2429|       |
 2430|    138|    Py_XDECREF(co->co_consts);
  ------------------
  |  |  524|    138|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    138|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    138|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2431|    138|    Py_XDECREF(co->co_names);
  ------------------
  |  |  524|    138|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    138|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    138|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2432|    138|    Py_XDECREF(co->co_localsplusnames);
  ------------------
  |  |  524|    138|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    138|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    138|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2433|    138|    Py_XDECREF(co->co_localspluskinds);
  ------------------
  |  |  524|    138|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    138|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    138|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2434|    138|    Py_XDECREF(co->co_filename);
  ------------------
  |  |  524|    138|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    138|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    138|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2435|    138|    Py_XDECREF(co->co_name);
  ------------------
  |  |  524|    138|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    138|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    138|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2436|    138|    Py_XDECREF(co->co_qualname);
  ------------------
  |  |  524|    138|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    138|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    138|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2437|    138|    Py_XDECREF(co->co_linetable);
  ------------------
  |  |  524|    138|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    138|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    138|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2438|    138|    Py_XDECREF(co->co_exceptiontable);
  ------------------
  |  |  524|    138|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    138|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    138|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2439|       |#ifdef Py_GIL_DISABLED
 2440|       |    assert(co->_co_unique_id == _Py_INVALID_UNIQUE_ID);
 2441|       |#endif
 2442|    138|    if (co->_co_cached != NULL) {
  ------------------
  |  Branch (2442:9): [True: 0, False: 138]
  ------------------
 2443|      0|        Py_XDECREF(co->_co_cached->_co_code);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2444|      0|        Py_XDECREF(co->_co_cached->_co_cellvars);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2445|      0|        Py_XDECREF(co->_co_cached->_co_freevars);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2446|      0|        Py_XDECREF(co->_co_cached->_co_varnames);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2447|      0|        PyMem_Free(co->_co_cached);
 2448|      0|    }
 2449|    138|    FT_CLEAR_WEAKREFS(self, co->co_weakreflist);
  ------------------
  |  |   47|    138|    do {                                            \
  |  |   48|    138|        assert(Py_REFCNT(obj) == 0);                \
  |  |   49|    138|        if (weakref_list != NULL) {                 \
  |  |  ------------------
  |  |  |  Branch (49:13): [True: 0, False: 138]
  |  |  ------------------
  |  |   50|      0|            PyObject_ClearWeakRefs(obj);            \
  |  |   51|      0|        }                                           \
  |  |   52|    138|    } while (0)
  |  |  ------------------
  |  |  |  Branch (52:14): [Folded, False: 138]
  |  |  ------------------
  ------------------
  |  Branch (2449:5): [True: 138, False: 0]
  ------------------
 2450|    138|    free_monitoring_data(co->_co_monitoring);
 2451|       |#ifdef Py_GIL_DISABLED
 2452|       |    // The first element always points to the mutable bytecode at the end of
 2453|       |    // the code object, which will be freed when the code object is freed.
 2454|       |    for (Py_ssize_t i = 1; i < co->co_tlbc->size; i++) {
 2455|       |        char *entry = co->co_tlbc->entries[i];
 2456|       |        if (entry != NULL) {
 2457|       |            PyMem_Free(entry);
 2458|       |        }
 2459|       |    }
 2460|       |    PyMem_Free(co->co_tlbc);
 2461|       |#endif
 2462|    138|    PyObject_Free(co);
 2463|    138|}
codeobject.c:free_monitoring_data:
 2371|    138|{
 2372|    138|    if (data == NULL) {
  ------------------
  |  Branch (2372:9): [True: 138, False: 0]
  ------------------
 2373|    138|        return;
 2374|    138|    }
 2375|      0|    if (data->tools) {
  ------------------
  |  Branch (2375:9): [True: 0, False: 0]
  ------------------
 2376|      0|        PyMem_Free(data->tools);
 2377|      0|    }
 2378|      0|    if (data->lines) {
  ------------------
  |  Branch (2378:9): [True: 0, False: 0]
  ------------------
 2379|      0|        PyMem_Free(data->lines);
 2380|      0|    }
 2381|      0|    if (data->line_tools) {
  ------------------
  |  Branch (2381:9): [True: 0, False: 0]
  ------------------
 2382|      0|        PyMem_Free(data->line_tools);
 2383|      0|    }
 2384|      0|    if (data->per_instruction_opcodes) {
  ------------------
  |  Branch (2384:9): [True: 0, False: 0]
  ------------------
 2385|      0|        PyMem_Free(data->per_instruction_opcodes);
 2386|      0|    }
 2387|      0|    if (data->per_instruction_tools) {
  ------------------
  |  Branch (2387:9): [True: 0, False: 0]
  ------------------
 2388|      0|        PyMem_Free(data->per_instruction_tools);
 2389|      0|    }
 2390|      0|    PyMem_Free(data);
 2391|      0|}

PyDescr_NewMethod:
  928|    775|{
  929|       |    /* Figure out correct vectorcall function to use */
  930|    775|    vectorcallfunc vectorcall;
  931|    775|    switch (method->ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS |
  ------------------
  |  |   95|    775|#define METH_VARARGS  0x0001
  ------------------
                  switch (method->ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS |
  ------------------
  |  |  115|    775|#  define METH_FASTCALL  0x0080
  ------------------
                  switch (method->ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS |
  ------------------
  |  |   98|    775|#define METH_NOARGS   0x0004
  ------------------
  932|    775|                                METH_O | METH_KEYWORDS | METH_METHOD))
  ------------------
  |  |   99|    775|#define METH_O        0x0008
  ------------------
                                              METH_O | METH_KEYWORDS | METH_METHOD))
  ------------------
  |  |   96|    775|#define METH_KEYWORDS 0x0002
  ------------------
                                              METH_O | METH_KEYWORDS | METH_METHOD))
  ------------------
  |  |  133|    775|#define METH_METHOD 0x0200
  ------------------
  933|    775|    {
  934|     18|        case METH_VARARGS:
  ------------------
  |  |   95|     18|#define METH_VARARGS  0x0001
  ------------------
  |  Branch (934:9): [True: 18, False: 757]
  ------------------
  935|     18|            vectorcall = method_vectorcall_VARARGS;
  936|     18|            break;
  937|     21|        case METH_VARARGS | METH_KEYWORDS:
  ------------------
  |  |   95|     21|#define METH_VARARGS  0x0001
  ------------------
                      case METH_VARARGS | METH_KEYWORDS:
  ------------------
  |  |   96|     21|#define METH_KEYWORDS 0x0002
  ------------------
  |  Branch (937:9): [True: 21, False: 754]
  ------------------
  938|     21|            vectorcall = method_vectorcall_VARARGS_KEYWORDS;
  939|     21|            break;
  940|    109|        case METH_FASTCALL:
  ------------------
  |  |  115|    109|#  define METH_FASTCALL  0x0080
  ------------------
  |  Branch (940:9): [True: 109, False: 666]
  ------------------
  941|    109|            vectorcall = method_vectorcall_FASTCALL;
  942|    109|            break;
  943|     54|        case METH_FASTCALL | METH_KEYWORDS:
  ------------------
  |  |  115|     54|#  define METH_FASTCALL  0x0080
  ------------------
                      case METH_FASTCALL | METH_KEYWORDS:
  ------------------
  |  |   96|     54|#define METH_KEYWORDS 0x0002
  ------------------
  |  Branch (943:9): [True: 54, False: 721]
  ------------------
  944|     54|            vectorcall = method_vectorcall_FASTCALL_KEYWORDS;
  945|     54|            break;
  946|    404|        case METH_NOARGS:
  ------------------
  |  |   98|    404|#define METH_NOARGS   0x0004
  ------------------
  |  Branch (946:9): [True: 404, False: 371]
  ------------------
  947|    404|            vectorcall = method_vectorcall_NOARGS;
  948|    404|            break;
  949|    144|        case METH_O:
  ------------------
  |  |   99|    144|#define METH_O        0x0008
  ------------------
  |  Branch (949:9): [True: 144, False: 631]
  ------------------
  950|    144|            vectorcall = method_vectorcall_O;
  951|    144|            break;
  952|     25|        case METH_METHOD | METH_FASTCALL | METH_KEYWORDS:
  ------------------
  |  |  133|     25|#define METH_METHOD 0x0200
  ------------------
                      case METH_METHOD | METH_FASTCALL | METH_KEYWORDS:
  ------------------
  |  |  115|     25|#  define METH_FASTCALL  0x0080
  ------------------
                      case METH_METHOD | METH_FASTCALL | METH_KEYWORDS:
  ------------------
  |  |   96|     25|#define METH_KEYWORDS 0x0002
  ------------------
  |  Branch (952:9): [True: 25, False: 750]
  ------------------
  953|     25|            vectorcall = method_vectorcall_FASTCALL_KEYWORDS_METHOD;
  954|     25|            break;
  955|      0|        default:
  ------------------
  |  Branch (955:9): [True: 0, False: 775]
  ------------------
  956|      0|            PyErr_Format(PyExc_SystemError,
  957|      0|                         "%s() method: bad call flags", method->ml_name);
  958|      0|            return NULL;
  959|    775|    }
  960|       |
  961|    775|    PyMethodDescrObject *descr;
  962|       |
  963|    775|    descr = (PyMethodDescrObject *)descr_new(&PyMethodDescr_Type,
  964|    775|                                             type, method->ml_name);
  965|    775|    if (descr != NULL) {
  ------------------
  |  Branch (965:9): [True: 775, False: 0]
  ------------------
  966|    775|        descr->d_method = method;
  967|    775|        descr->vectorcall = vectorcall;
  968|    775|    }
  969|    775|    return (PyObject *)descr;
  970|    775|}
PyDescr_NewClassMethod:
  974|     54|{
  975|     54|    PyMethodDescrObject *descr;
  976|       |
  977|     54|    descr = (PyMethodDescrObject *)descr_new(&PyClassMethodDescr_Type,
  978|     54|                                             type, method->ml_name);
  979|     54|    if (descr != NULL)
  ------------------
  |  Branch (979:9): [True: 54, False: 0]
  ------------------
  980|     54|        descr->d_method = method;
  981|     54|    return (PyObject *)descr;
  982|     54|}
PyDescr_NewMember:
  986|    319|{
  987|    319|    PyMemberDescrObject *descr;
  988|       |
  989|    319|    if (member->flags & Py_RELATIVE_OFFSET) {
  ------------------
  |  |   86|    319|#define Py_RELATIVE_OFFSET     (1 << 3)
  ------------------
  |  Branch (989:9): [True: 0, False: 319]
  ------------------
  990|      0|        PyErr_SetString(
  991|      0|            PyExc_SystemError,
  992|      0|            "PyDescr_NewMember used with Py_RELATIVE_OFFSET");
  993|      0|        return NULL;
  994|      0|    }
  995|    319|    descr = (PyMemberDescrObject *)descr_new(&PyMemberDescr_Type,
  996|    319|                                             type, member->name);
  997|    319|    if (descr != NULL)
  ------------------
  |  Branch (997:9): [True: 319, False: 0]
  ------------------
  998|    319|        descr->d_member = member;
  999|    319|    return (PyObject *)descr;
 1000|    319|}
PyDescr_NewGetSet:
 1004|    219|{
 1005|    219|    PyGetSetDescrObject *descr;
 1006|       |
 1007|    219|    descr = (PyGetSetDescrObject *)descr_new(&PyGetSetDescr_Type,
 1008|    219|                                             type, getset->name);
 1009|    219|    if (descr != NULL)
  ------------------
  |  Branch (1009:9): [True: 219, False: 0]
  ------------------
 1010|    219|        descr->d_getset = getset;
 1011|    219|    return (PyObject *)descr;
 1012|    219|}
PyDescr_NewWrapper:
 1016|  1.01k|{
 1017|  1.01k|    PyWrapperDescrObject *descr;
 1018|       |
 1019|  1.01k|    descr = (PyWrapperDescrObject *)descr_new(&PyWrapperDescr_Type,
 1020|  1.01k|                                             type, base->name);
 1021|  1.01k|    if (descr != NULL) {
  ------------------
  |  Branch (1021:9): [True: 1.01k, False: 0]
  ------------------
 1022|  1.01k|        descr->d_base = base;
 1023|  1.01k|        descr->d_wrapped = wrapped;
 1024|  1.01k|    }
 1025|  1.01k|    return (PyObject *)descr;
 1026|  1.01k|}
PyDescr_IsData:
 1030|    841|{
 1031|    841|    return Py_TYPE(ob)->tp_descr_set != NULL;
  ------------------
  |  |  213|    841|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    841|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    841|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1032|    841|}
PyDictProxy_New:
 1284|    110|{
 1285|    110|    mappingproxyobject *pp;
 1286|       |
 1287|    110|    if (mappingproxy_check_mapping(mapping) == -1)
  ------------------
  |  Branch (1287:9): [True: 0, False: 110]
  ------------------
 1288|      0|        return NULL;
 1289|       |
 1290|    110|    pp = PyObject_GC_New(mappingproxyobject, &PyDictProxy_Type);
  ------------------
  |  |  181|    110|    _Py_CAST(type*, _PyObject_GC_New(typeobj))
  |  |  ------------------
  |  |  |  |   37|    110|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
 1291|    110|    if (pp != NULL) {
  ------------------
  |  Branch (1291:9): [True: 110, False: 0]
  ------------------
 1292|    110|        pp->mapping = Py_NewRef(mapping);
  ------------------
  |  |  550|    110|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    110|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    110|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1293|    110|        _PyObject_GC_TRACK(pp);
  ------------------
  |  |  513|    110|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    110|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    110|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1294|    110|    }
 1295|    110|    return (PyObject *)pp;
 1296|    110|}
PyWrapper_New:
 1492|      1|{
 1493|      1|    wrapperobject *wp;
 1494|      1|    PyWrapperDescrObject *descr;
 1495|       |
 1496|      1|    assert(PyObject_TypeCheck(d, &PyWrapperDescr_Type));
  ------------------
  |  Branch (1496:5): [True: 1, False: 0]
  ------------------
 1497|      1|    descr = (PyWrapperDescrObject *)d;
 1498|      1|    assert(_PyObject_RealIsSubclass((PyObject *)Py_TYPE(self),
  ------------------
  |  Branch (1498:5): [True: 1, False: 0]
  ------------------
 1499|      1|                                    (PyObject *)PyDescr_TYPE(descr)));
 1500|       |
 1501|      1|    wp = PyObject_GC_New(wrapperobject, &_PyMethodWrapper_Type);
  ------------------
  |  |  181|      1|    _Py_CAST(type*, _PyObject_GC_New(typeobj))
  |  |  ------------------
  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
 1502|      1|    if (wp != NULL) {
  ------------------
  |  Branch (1502:9): [True: 1, False: 0]
  ------------------
 1503|      1|        wp->descr = (PyWrapperDescrObject*)Py_NewRef(descr);
  ------------------
  |  |  550|      1|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1504|      1|        wp->self = Py_NewRef(self);
  ------------------
  |  |  550|      1|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1505|      1|        _PyObject_GC_TRACK(wp);
  ------------------
  |  |  513|      1|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1506|      1|    }
 1507|      1|    return (PyObject *)wp;
 1508|      1|}
descrobject.c:descr_dealloc:
   24|     30|{
   25|     30|    PyDescrObject *descr = (PyDescrObject *)self;
   26|     30|    _PyObject_GC_UNTRACK(descr);
  ------------------
  |  |  515|     30|        _PyObject_GC_UNTRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     30|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     30|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   27|     30|    Py_XDECREF(descr->d_type);
  ------------------
  |  |  524|     30|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     30|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     30|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   28|     30|    Py_XDECREF(descr->d_name);
  ------------------
  |  |  524|     30|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     30|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     30|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   29|     30|    Py_XDECREF(descr->d_qualname);
  ------------------
  |  |  524|     30|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     30|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     30|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   30|     30|    PyObject_GC_Del(descr);
   31|     30|}
descrobject.c:descr_traverse:
  711|  4.70k|{
  712|  4.70k|    PyDescrObject *descr = (PyDescrObject *)self;
  713|  4.70k|    Py_VISIT(descr->d_type);
  ------------------
  |  |  194|  4.70k|    do {                                                                \
  |  |  195|  4.70k|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 4.70k, False: 0]
  |  |  ------------------
  |  |  196|  4.70k|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|  4.70k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  4.70k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|  4.70k|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 4.70k]
  |  |  ------------------
  |  |  198|  4.70k|                return vret;                                            \
  |  |  199|  4.70k|        }                                                               \
  |  |  200|  4.70k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 4.70k]
  |  |  ------------------
  ------------------
  714|  4.70k|    return 0;
  715|  4.70k|}
descrobject.c:method_get:
  139|     61|{
  140|     61|    PyMethodDescrObject *descr = (PyMethodDescrObject *)self;
  141|     61|    if (obj == NULL) {
  ------------------
  |  Branch (141:9): [True: 0, False: 61]
  ------------------
  142|      0|        return Py_NewRef(descr);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  143|      0|    }
  144|     61|    if (descr_check((PyDescrObject *)descr, obj) < 0) {
  ------------------
  |  Branch (144:9): [True: 0, False: 61]
  ------------------
  145|      0|        return NULL;
  146|      0|    }
  147|     61|    if (descr->d_method->ml_flags & METH_METHOD) {
  ------------------
  |  |  133|     61|#define METH_METHOD 0x0200
  ------------------
  |  Branch (147:9): [True: 2, False: 59]
  ------------------
  148|      2|        if (type == NULL || PyType_Check(type)) {
  ------------------
  |  |  766|      2|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (766:28): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (148:13): [True: 0, False: 2]
  ------------------
  149|      2|            return PyCMethod_New(descr->d_method, obj, NULL, descr->d_common.d_type);
  150|      2|        } else {
  151|      0|            PyErr_Format(PyExc_TypeError,
  152|      0|                        "descriptor '%V' needs a type, not '%s', as arg 2",
  153|      0|                        descr_name((PyDescrObject *)descr), "?",
  154|      0|                        Py_TYPE(type)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  155|      0|            return NULL;
  156|      0|        }
  157|     59|    } else {
  158|       |        return PyCFunction_NewEx(descr->d_method, obj, NULL);
  ------------------
  |  |   87|     59|#define PyCFunction_NewEx(ML, SELF, MOD) PyCMethod_New((ML), (SELF), (MOD), NULL)
  ------------------
  159|     59|    }
  160|     61|}
descrobject.c:descr_check:
   81|    994|{
   82|    994|    if (!PyObject_TypeCheck(obj, descr->d_type)) {
  ------------------
  |  |  378|    994|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|    994|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    994|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (82:9): [True: 0, False: 994]
  ------------------
   83|      0|        PyErr_Format(PyExc_TypeError,
   84|      0|                     "descriptor '%V' for '%.100s' objects "
   85|      0|                     "doesn't apply to a '%.100s' object",
   86|      0|                     descr_name((PyDescrObject *)descr), "?",
   87|      0|                     descr->d_type->tp_name,
   88|      0|                     Py_TYPE(obj)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   89|      0|        return -1;
   90|      0|    }
   91|    994|    return 0;
   92|    994|}
descrobject.c:classmethod_get:
   96|    173|{
   97|    173|    PyMethodDescrObject *descr = (PyMethodDescrObject *)self;
   98|       |    /* Ensure a valid type.  Class methods ignore obj. */
   99|    173|    if (type == NULL) {
  ------------------
  |  Branch (99:9): [True: 0, False: 173]
  ------------------
  100|      0|        if (obj != NULL)
  ------------------
  |  Branch (100:13): [True: 0, False: 0]
  ------------------
  101|      0|            type = (PyObject *)Py_TYPE(obj);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  102|      0|        else {
  103|       |            /* Wot - no type?! */
  104|      0|            PyErr_Format(PyExc_TypeError,
  105|      0|                         "descriptor '%V' for type '%.100s' "
  106|      0|                         "needs either an object or a type",
  107|      0|                         descr_name((PyDescrObject *)descr), "?",
  108|      0|                         PyDescr_TYPE(descr)->tp_name);
  ------------------
  |  |   35|      0|#define PyDescr_TYPE(x) (((PyDescrObject *)(x))->d_type)
  ------------------
  109|      0|            return NULL;
  110|      0|        }
  111|      0|    }
  112|    173|    if (!PyType_Check(type)) {
  ------------------
  |  |  766|    173|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    173|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    173|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (112:9): [True: 0, False: 173]
  ------------------
  113|      0|        PyErr_Format(PyExc_TypeError,
  114|      0|                     "descriptor '%V' for type '%.100s' "
  115|      0|                     "needs a type, not a '%.100s' as arg 2",
  116|      0|                     descr_name((PyDescrObject *)descr), "?",
  117|      0|                     PyDescr_TYPE(descr)->tp_name,
  ------------------
  |  |   35|      0|#define PyDescr_TYPE(x) (((PyDescrObject *)(x))->d_type)
  ------------------
  118|      0|                     Py_TYPE(type)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  119|      0|        return NULL;
  120|      0|    }
  121|    173|    if (!PyType_IsSubtype((PyTypeObject *)type, PyDescr_TYPE(descr))) {
  ------------------
  |  |   35|    173|#define PyDescr_TYPE(x) (((PyDescrObject *)(x))->d_type)
  ------------------
  |  Branch (121:9): [True: 0, False: 173]
  ------------------
  122|      0|        PyErr_Format(PyExc_TypeError,
  123|      0|                     "descriptor '%V' requires a subtype of '%.100s' "
  124|      0|                     "but received '%.100s'",
  125|      0|                     descr_name((PyDescrObject *)descr), "?",
  126|      0|                     PyDescr_TYPE(descr)->tp_name,
  ------------------
  |  |   35|      0|#define PyDescr_TYPE(x) (((PyDescrObject *)(x))->d_type)
  ------------------
  127|      0|                     ((PyTypeObject *)type)->tp_name);
  128|      0|        return NULL;
  129|      0|    }
  130|    173|    PyTypeObject *cls = NULL;
  131|    173|    if (descr->d_method->ml_flags & METH_METHOD) {
  ------------------
  |  |  133|    173|#define METH_METHOD 0x0200
  ------------------
  |  Branch (131:9): [True: 0, False: 173]
  ------------------
  132|      0|        cls = descr->d_common.d_type;
  133|      0|    }
  134|       |    return PyCMethod_New(descr->d_method, type, NULL, cls);
  135|    173|}
descrobject.c:member_get:
  164|    185|{
  165|    185|    PyMemberDescrObject *descr = (PyMemberDescrObject *)self;
  166|    185|    if (obj == NULL) {
  ------------------
  |  Branch (166:9): [True: 0, False: 185]
  ------------------
  167|      0|        return Py_NewRef(descr);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  168|      0|    }
  169|    185|    if (descr_check((PyDescrObject *)descr, obj) < 0) {
  ------------------
  |  Branch (169:9): [True: 0, False: 185]
  ------------------
  170|      0|        return NULL;
  171|      0|    }
  172|       |
  173|    185|    if (descr->d_member->flags & Py_AUDIT_READ) {
  ------------------
  |  |   84|    185|#define Py_AUDIT_READ          (1 << 1) // Added in 3.10, harmless no-op before that
  ------------------
  |  Branch (173:9): [True: 0, False: 185]
  ------------------
  174|      0|        if (PySys_Audit("object.__getattr__", "Os",
  ------------------
  |  Branch (174:13): [True: 0, False: 0]
  ------------------
  175|      0|            obj ? obj : Py_None, descr->d_member->name) < 0) {
  ------------------
  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (175:13): [True: 0, False: 0]
  ------------------
  176|      0|            return NULL;
  177|      0|        }
  178|      0|    }
  179|       |
  180|    185|    return PyMember_GetOne((char *)obj, descr->d_member);
  181|    185|}
descrobject.c:member_set:
  234|     65|{
  235|     65|    PyMemberDescrObject *descr = (PyMemberDescrObject *)self;
  236|     65|    if (descr_setcheck((PyDescrObject *)descr, obj, value) < 0) {
  ------------------
  |  Branch (236:9): [True: 0, False: 65]
  ------------------
  237|      0|        return -1;
  238|      0|    }
  239|     65|    return PyMember_SetOne((char *)obj, descr->d_member, value);
  240|     65|}
descrobject.c:descr_setcheck:
  218|    113|{
  219|    113|    assert(obj != NULL);
  ------------------
  |  Branch (219:5): [True: 113, False: 0]
  ------------------
  220|    113|    if (!PyObject_TypeCheck(obj, descr->d_type)) {
  ------------------
  |  |  378|    113|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|    113|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    113|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (220:9): [True: 0, False: 113]
  ------------------
  221|      0|        PyErr_Format(PyExc_TypeError,
  222|      0|                     "descriptor '%V' for '%.100s' objects "
  223|      0|                     "doesn't apply to a '%.100s' object",
  224|      0|                     descr_name(descr), "?",
  225|      0|                     descr->d_type->tp_name,
  226|      0|                     Py_TYPE(obj)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  227|      0|        return -1;
  228|      0|    }
  229|    113|    return 0;
  230|    113|}
descrobject.c:getset_get:
  185|    442|{
  186|    442|    PyGetSetDescrObject *descr = (PyGetSetDescrObject *)self;
  187|    442|    if (obj == NULL) {
  ------------------
  |  Branch (187:9): [True: 0, False: 442]
  ------------------
  188|      0|        return Py_NewRef(descr);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  189|      0|    }
  190|    442|    if (descr_check((PyDescrObject *)descr, obj) < 0) {
  ------------------
  |  Branch (190:9): [True: 0, False: 442]
  ------------------
  191|      0|        return NULL;
  192|      0|    }
  193|    442|    if (descr->d_getset->get != NULL)
  ------------------
  |  Branch (193:9): [True: 442, False: 0]
  ------------------
  194|    442|        return descr_get_trampoline_call(
  ------------------
  |  |   63|    442|    (get)((obj), (closure))
  ------------------
  195|    442|            descr->d_getset->get, obj, descr->d_getset->closure);
  196|      0|    PyErr_Format(PyExc_AttributeError,
  197|      0|                 "attribute '%V' of '%.100s' objects is not readable",
  198|      0|                 descr_name((PyDescrObject *)descr), "?",
  199|      0|                 PyDescr_TYPE(descr)->tp_name);
  ------------------
  |  |   35|      0|#define PyDescr_TYPE(x) (((PyDescrObject *)(x))->d_type)
  ------------------
  200|       |    return NULL;
  201|    442|}
descrobject.c:getset_set:
  244|     48|{
  245|     48|    PyGetSetDescrObject *descr = (PyGetSetDescrObject *)self;
  246|     48|    if (descr_setcheck((PyDescrObject *)descr, obj, value) < 0) {
  ------------------
  |  Branch (246:9): [True: 0, False: 48]
  ------------------
  247|      0|        return -1;
  248|      0|    }
  249|     48|    if (descr->d_getset->set != NULL) {
  ------------------
  |  Branch (249:9): [True: 48, False: 0]
  ------------------
  250|     48|        return descr_set_trampoline_call(
  ------------------
  |  |   60|     48|    (set)((obj), (value), (closure))
  ------------------
  251|     48|            descr->d_getset->set, obj, value,
  252|     48|            descr->d_getset->closure);
  253|     48|    }
  254|      0|    PyErr_Format(PyExc_AttributeError,
  255|      0|                 "attribute '%V' of '%.100s' objects is not writable",
  256|      0|                 descr_name((PyDescrObject *)descr), "?",
  257|      0|                 PyDescr_TYPE(descr)->tp_name);
  ------------------
  |  |   35|      0|#define PyDescr_TYPE(x) (((PyDescrObject *)(x))->d_type)
  ------------------
  258|      0|    return -1;
  259|     48|}
descrobject.c:wrapperdescr_call:
  537|     29|{
  538|     29|    PyWrapperDescrObject *descr = (PyWrapperDescrObject *)_descr;
  539|     29|    Py_ssize_t argc;
  540|     29|    PyObject *self, *result;
  541|       |
  542|       |    /* Make sure that the first argument is acceptable as 'self' */
  543|     29|    assert(PyTuple_Check(args));
  ------------------
  |  Branch (543:5): [True: 29, False: 0]
  ------------------
  544|     29|    argc = PyTuple_GET_SIZE(args);
  ------------------
  |  |   27|     29|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     29|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     29|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  545|     29|    if (argc < 1) {
  ------------------
  |  Branch (545:9): [True: 0, False: 29]
  ------------------
  546|      0|        PyErr_Format(PyExc_TypeError,
  547|      0|                     "descriptor '%V' of '%.100s' "
  548|      0|                     "object needs an argument",
  549|      0|                     descr_name((PyDescrObject *)descr), "?",
  550|      0|                     PyDescr_TYPE(descr)->tp_name);
  ------------------
  |  |   35|      0|#define PyDescr_TYPE(x) (((PyDescrObject *)(x))->d_type)
  ------------------
  551|      0|        return NULL;
  552|      0|    }
  553|     29|    self = PyTuple_GET_ITEM(args, 0);
  ------------------
  |  |   29|     29|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|     29|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     29|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (553:12): [True: 29, False: 0]
  ------------------
  554|     29|    if (!_PyObject_RealIsSubclass((PyObject *)Py_TYPE(self),
  ------------------
  |  |  213|     29|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     29|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     29|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (554:9): [True: 0, False: 29]
  ------------------
  555|     29|                                  (PyObject *)PyDescr_TYPE(descr))) {
  ------------------
  |  |   35|     29|#define PyDescr_TYPE(x) (((PyDescrObject *)(x))->d_type)
  ------------------
  556|      0|        PyErr_Format(PyExc_TypeError,
  557|      0|                     "descriptor '%V' "
  558|      0|                     "requires a '%.100s' object "
  559|      0|                     "but received a '%.100s'",
  560|      0|                     descr_name((PyDescrObject *)descr), "?",
  561|      0|                     PyDescr_TYPE(descr)->tp_name,
  ------------------
  |  |   35|      0|#define PyDescr_TYPE(x) (((PyDescrObject *)(x))->d_type)
  ------------------
  562|      0|                     Py_TYPE(self)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  563|      0|        return NULL;
  564|      0|    }
  565|       |
  566|     29|    args = PyTuple_GetSlice(args, 1, argc);
  567|     29|    if (args == NULL) {
  ------------------
  |  Branch (567:9): [True: 0, False: 29]
  ------------------
  568|      0|        return NULL;
  569|      0|    }
  570|     29|    result = wrapperdescr_raw_call(descr, self, args, kwds);
  571|     29|    Py_DECREF(args);
  ------------------
  |  |  430|     29|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     29|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     29|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  572|     29|    return result;
  573|     29|}
descrobject.c:wrapperdescr_raw_call:
  518|     30|{
  519|     30|    wrapperfunc wrapper = descr->d_base->wrapper;
  520|       |
  521|     30|    if (descr->d_base->flags & PyWrapperFlag_KEYWORDS) {
  ------------------
  |  |   22|     30|#define PyWrapperFlag_KEYWORDS 1 /* wrapper function takes keyword args */
  ------------------
  |  Branch (521:9): [True: 30, False: 0]
  ------------------
  522|     30|        wrapperfunc_kwds wk = _Py_FUNC_CAST(wrapperfunc_kwds, wrapper);
  ------------------
  |  |   47|     30|#define _Py_FUNC_CAST(T, func) _Py_CAST(T, _Py_CAST(void(*)(void), (func)))
  |  |  ------------------
  |  |  |  |   37|     30|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  523|     30|        return (*wk)(self, args, descr->d_wrapped, kwds);
  524|     30|    }
  525|       |
  526|      0|    if (kwds != NULL && (!PyDict_Check(kwds) || PyDict_GET_SIZE(kwds) != 0)) {
  ------------------
  |  |   18|      0|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
                  if (kwds != NULL && (!PyDict_Check(kwds) || PyDict_GET_SIZE(kwds) != 0)) {
  ------------------
  |  |   63|      0|#define PyDict_GET_SIZE(op) PyDict_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (526:9): [True: 0, False: 0]
  |  Branch (526:26): [True: 0, False: 0]
  |  Branch (526:49): [True: 0, False: 0]
  ------------------
  527|      0|        PyErr_Format(PyExc_TypeError,
  528|      0|                     "wrapper %s() takes no keyword arguments",
  529|      0|                     descr->d_base->name);
  530|      0|        return NULL;
  531|      0|    }
  532|      0|    return (*wrapper)(self, args, descr->d_wrapped);
  533|      0|}
descrobject.c:wrapperdescr_get:
  205|      1|{
  206|      1|    PyWrapperDescrObject *descr = (PyWrapperDescrObject *)self;
  207|      1|    if (obj == NULL) {
  ------------------
  |  Branch (207:9): [True: 0, False: 1]
  ------------------
  208|      0|        return Py_NewRef(descr);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  209|      0|    }
  210|      1|    if (descr_check((PyDescrObject *)descr, obj) < 0) {
  ------------------
  |  Branch (210:9): [True: 0, False: 1]
  ------------------
  211|      0|        return NULL;
  212|      0|    }
  213|      1|    return PyWrapper_New((PyObject *)descr, obj);
  214|      1|}
descrobject.c:method_check_args:
  268|    305|{
  269|    305|    assert(!PyErr_Occurred());
  ------------------
  |  Branch (269:5): [True: 305, False: 0]
  ------------------
  270|    305|    if (nargs < 1) {
  ------------------
  |  Branch (270:9): [True: 0, False: 305]
  ------------------
  271|      0|        PyObject *funcstr = _PyObject_FunctionStr(func);
  272|      0|        if (funcstr != NULL) {
  ------------------
  |  Branch (272:13): [True: 0, False: 0]
  ------------------
  273|      0|            PyErr_Format(PyExc_TypeError,
  274|      0|                         "unbound method %U needs an argument", funcstr);
  275|      0|            Py_DECREF(funcstr);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  276|      0|        }
  277|      0|        return -1;
  278|      0|    }
  279|    305|    PyObject *self = args[0];
  280|    305|    if (descr_check((PyDescrObject *)func, self) < 0) {
  ------------------
  |  Branch (280:9): [True: 0, False: 305]
  ------------------
  281|      0|        return -1;
  282|      0|    }
  283|    305|    if (kwnames && PyTuple_GET_SIZE(kwnames)) {
  ------------------
  |  |   27|      0|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (27:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (283:9): [True: 0, False: 305]
  ------------------
  284|      0|        PyObject *funcstr = _PyObject_FunctionStr(func);
  285|      0|        if (funcstr != NULL) {
  ------------------
  |  Branch (285:13): [True: 0, False: 0]
  ------------------
  286|      0|            PyErr_Format(PyExc_TypeError,
  287|      0|                         "%U takes no keyword arguments", funcstr);
  288|      0|            Py_DECREF(funcstr);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  289|      0|        }
  290|      0|        return -1;
  291|      0|    }
  292|    305|    return 0;
  293|    305|}
descrobject.c:method_enter_call:
  299|    305|{
  300|    305|    if (_Py_EnterRecursiveCallTstate(tstate, " while calling a Python object")) {
  ------------------
  |  Branch (300:9): [True: 0, False: 305]
  ------------------
  301|      0|        return NULL;
  302|      0|    }
  303|    305|    return (funcptr)((PyMethodDescrObject *)func)->d_method->ml_meth;
  304|    305|}
descrobject.c:method_vectorcall_VARARGS_KEYWORDS:
  335|      9|{
  336|      9|    PyThreadState *tstate = _PyThreadState_GET();
  337|      9|    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
  ------------------
  |  |   37|      9|#define PyVectorcall_NARGS(n) _PyVectorcall_NARGS(n)
  ------------------
  338|      9|    if (method_check_args(func, args, nargs, NULL)) {
  ------------------
  |  Branch (338:9): [True: 0, False: 9]
  ------------------
  339|      0|        return NULL;
  340|      0|    }
  341|      9|    PyObject *argstuple = PyTuple_FromArray(args+1, nargs-1);
  342|      9|    if (argstuple == NULL) {
  ------------------
  |  Branch (342:9): [True: 0, False: 9]
  ------------------
  343|      0|        return NULL;
  344|      0|    }
  345|      9|    PyObject *result = NULL;
  346|       |    /* Create a temporary dict for keyword arguments */
  347|      9|    PyObject *kwdict = NULL;
  348|      9|    if (kwnames != NULL && PyTuple_GET_SIZE(kwnames) > 0) {
  ------------------
  |  |   27|      0|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (348:9): [True: 0, False: 9]
  |  Branch (348:28): [True: 0, False: 0]
  ------------------
  349|      0|        kwdict = _PyStack_AsDict(args + nargs, kwnames);
  350|      0|        if (kwdict == NULL) {
  ------------------
  |  Branch (350:13): [True: 0, False: 0]
  ------------------
  351|      0|            goto exit;
  352|      0|        }
  353|      0|    }
  354|      9|    PyCFunctionWithKeywords meth = (PyCFunctionWithKeywords)
  355|      9|                                   method_enter_call(tstate, func);
  356|      9|    if (meth == NULL) {
  ------------------
  |  Branch (356:9): [True: 0, False: 9]
  ------------------
  357|      0|        goto exit;
  358|      0|    }
  359|      9|    result = _PyCFunctionWithKeywords_TrampolineCall(
  ------------------
  |  |  999|      9|    (meth)((self), (args), (kw))
  ------------------
  360|      9|        meth, args[0], argstuple, kwdict);
  361|      9|    _Py_LeaveRecursiveCallTstate(tstate);
  362|      9|exit:
  363|      9|    Py_DECREF(argstuple);
  ------------------
  |  |  430|      9|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      9|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      9|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  364|      9|    Py_XDECREF(kwdict);
  ------------------
  |  |  524|      9|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      9|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      9|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  365|      9|    return result;
  366|      9|}
descrobject.c:method_vectorcall_FASTCALL:
  391|     47|{
  392|     47|    PyThreadState *tstate = _PyThreadState_GET();
  393|     47|    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
  ------------------
  |  |   37|     47|#define PyVectorcall_NARGS(n) _PyVectorcall_NARGS(n)
  ------------------
  394|     47|    if (method_check_args(func, args, nargs, kwnames)) {
  ------------------
  |  Branch (394:9): [True: 0, False: 47]
  ------------------
  395|      0|        return NULL;
  396|      0|    }
  397|     47|    PyCFunctionFast meth = (PyCFunctionFast)
  398|     47|                            method_enter_call(tstate, func);
  399|     47|    if (meth == NULL) {
  ------------------
  |  Branch (399:9): [True: 0, False: 47]
  ------------------
  400|      0|        return NULL;
  401|      0|    }
  402|     47|    PyObject *result = meth(args[0], args+1, nargs-1);
  403|     47|    _Py_LeaveRecursiveCallTstate(tstate);
  404|     47|    return result;
  405|     47|}
descrobject.c:method_vectorcall_FASTCALL_KEYWORDS:
  410|      6|{
  411|      6|    PyThreadState *tstate = _PyThreadState_GET();
  412|      6|    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
  ------------------
  |  |   37|      6|#define PyVectorcall_NARGS(n) _PyVectorcall_NARGS(n)
  ------------------
  413|      6|    if (method_check_args(func, args, nargs, NULL)) {
  ------------------
  |  Branch (413:9): [True: 0, False: 6]
  ------------------
  414|      0|        return NULL;
  415|      0|    }
  416|      6|    PyCFunctionFastWithKeywords meth = (PyCFunctionFastWithKeywords)
  417|      6|                                        method_enter_call(tstate, func);
  418|      6|    if (meth == NULL) {
  ------------------
  |  Branch (418:9): [True: 0, False: 6]
  ------------------
  419|      0|        return NULL;
  420|      0|    }
  421|      6|    PyObject *result = meth(args[0], args+1, nargs-1, kwnames);
  422|      6|    _Py_LeaveRecursiveCallTstate(tstate);
  423|      6|    return result;
  424|      6|}
descrobject.c:method_vectorcall_NOARGS:
  429|    135|{
  430|    135|    PyThreadState *tstate = _PyThreadState_GET();
  431|    135|    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
  ------------------
  |  |   37|    135|#define PyVectorcall_NARGS(n) _PyVectorcall_NARGS(n)
  ------------------
  432|    135|    if (method_check_args(func, args, nargs, kwnames)) {
  ------------------
  |  Branch (432:9): [True: 0, False: 135]
  ------------------
  433|      0|        return NULL;
  434|      0|    }
  435|    135|    if (nargs != 1) {
  ------------------
  |  Branch (435:9): [True: 0, False: 135]
  ------------------
  436|      0|        PyObject *funcstr = _PyObject_FunctionStr(func);
  437|      0|        if (funcstr != NULL) {
  ------------------
  |  Branch (437:13): [True: 0, False: 0]
  ------------------
  438|      0|            PyErr_Format(PyExc_TypeError,
  439|      0|                "%U takes no arguments (%zd given)", funcstr, nargs-1);
  440|      0|            Py_DECREF(funcstr);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  441|      0|        }
  442|      0|        return NULL;
  443|      0|    }
  444|    135|    PyCFunction meth = (PyCFunction)method_enter_call(tstate, func);
  445|    135|    if (meth == NULL) {
  ------------------
  |  Branch (445:9): [True: 0, False: 135]
  ------------------
  446|      0|        return NULL;
  447|      0|    }
  448|    135|    PyObject *result = _PyCFunction_TrampolineCall(meth, args[0], NULL);
  ------------------
  |  |  997|    135|    (meth)((self), (args))
  ------------------
  449|    135|    _Py_LeaveRecursiveCallTstate(tstate);
  450|    135|    return result;
  451|    135|}
descrobject.c:method_vectorcall_O:
  456|    108|{
  457|    108|    PyThreadState *tstate = _PyThreadState_GET();
  458|    108|    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
  ------------------
  |  |   37|    108|#define PyVectorcall_NARGS(n) _PyVectorcall_NARGS(n)
  ------------------
  459|    108|    if (method_check_args(func, args, nargs, kwnames)) {
  ------------------
  |  Branch (459:9): [True: 0, False: 108]
  ------------------
  460|      0|        return NULL;
  461|      0|    }
  462|    108|    if (nargs != 2) {
  ------------------
  |  Branch (462:9): [True: 0, False: 108]
  ------------------
  463|      0|        PyObject *funcstr = _PyObject_FunctionStr(func);
  464|      0|        if (funcstr != NULL) {
  ------------------
  |  Branch (464:13): [True: 0, False: 0]
  ------------------
  465|      0|            PyErr_Format(PyExc_TypeError,
  466|      0|                "%U takes exactly one argument (%zd given)",
  467|      0|                funcstr, nargs-1);
  468|      0|            Py_DECREF(funcstr);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  469|      0|        }
  470|      0|        return NULL;
  471|      0|    }
  472|    108|    PyCFunction meth = (PyCFunction)method_enter_call(tstate, func);
  473|    108|    if (meth == NULL) {
  ------------------
  |  Branch (473:9): [True: 0, False: 108]
  ------------------
  474|      0|        return NULL;
  475|      0|    }
  476|    108|    PyObject *result = _PyCFunction_TrampolineCall(meth, args[0], args[1]);
  ------------------
  |  |  997|    108|    (meth)((self), (args))
  ------------------
  477|    108|    _Py_LeaveRecursiveCallTstate(tstate);
  478|    108|    return result;
  479|    108|}
descrobject.c:descr_new:
  908|  2.38k|{
  909|  2.38k|    PyDescrObject *descr;
  910|       |
  911|  2.38k|    descr = (PyDescrObject *)PyType_GenericAlloc(descrtype, 0);
  912|  2.38k|    if (descr != NULL) {
  ------------------
  |  Branch (912:9): [True: 2.38k, False: 0]
  ------------------
  913|  2.38k|        _PyObject_SetDeferredRefcount((PyObject *)descr);
  914|  2.38k|        descr->d_type = (PyTypeObject*)Py_XNewRef(type);
  ------------------
  |  |  551|  2.38k|#  define Py_XNewRef(obj) _Py_XNewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|  2.38k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.38k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  915|  2.38k|        descr->d_name = PyUnicode_InternFromString(name);
  916|  2.38k|        if (descr->d_name == NULL) {
  ------------------
  |  Branch (916:13): [True: 0, False: 2.38k]
  ------------------
  917|      0|            Py_SETREF(descr, NULL);
  ------------------
  |  |  352|      0|    do { \
  |  |  353|      0|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  354|      0|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  355|      0|        *_tmp_dst_ptr = (src); \
  |  |  356|      0|        Py_DECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  357|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (357:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  918|      0|        }
  919|  2.38k|        else {
  920|       |            descr->d_qualname = NULL;
  921|  2.38k|        }
  922|  2.38k|    }
  923|  2.38k|    return descr;
  924|  2.38k|}
descrobject.c:mappingproxy_check_mapping:
 1244|    110|{
 1245|    110|    if (!PyMapping_Check(mapping)
  ------------------
  |  Branch (1245:9): [True: 0, False: 110]
  ------------------
 1246|    110|        || PyList_Check(mapping)
  ------------------
  |  |   25|    110|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LIST_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|    220|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 0, False: 110]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1247|    110|        || PyTuple_Check(mapping)) {
  ------------------
  |  |   27|    110|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TUPLE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|    110|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 0, False: 110]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1248|      0|        PyErr_Format(PyExc_TypeError,
 1249|      0|                    "mappingproxy() argument must be a mapping, not %s",
 1250|      0|                    Py_TYPE(mapping)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1251|      0|        return -1;
 1252|      0|    }
 1253|    110|    return 0;
 1254|    110|}
descrobject.c:wrapper_dealloc:
 1314|      1|{
 1315|      1|    wrapperobject *wp = (wrapperobject *)self;
 1316|      1|    PyObject_GC_UnTrack(wp);
 1317|      1|    Py_XDECREF(wp->descr);
  ------------------
  |  |  524|      1|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1318|      1|    Py_XDECREF(wp->self);
  ------------------
  |  |  524|      1|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1319|      1|    PyObject_GC_Del(wp);
 1320|      1|}
descrobject.c:wrapper_call:
 1438|      1|{
 1439|      1|    wrapperobject *wp = (wrapperobject *)self;
 1440|      1|    return wrapperdescr_raw_call(wp->descr, wp->self, args, kwds);
 1441|      1|}
descrobject.c:mappingproxy_dealloc:
 1189|    110|{
 1190|    110|    mappingproxyobject *pp = (mappingproxyobject *)self;
 1191|    110|    _PyObject_GC_UNTRACK(pp);
  ------------------
  |  |  515|    110|        _PyObject_GC_UNTRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    110|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    110|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1192|    110|    Py_DECREF(pp->mapping);
  ------------------
  |  |  430|    110|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    110|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    110|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1193|    110|    PyObject_GC_Del(pp);
 1194|    110|}
descrobject.c:mappingproxy_contains:
 1090|     40|{
 1091|     40|    mappingproxyobject *pp = (mappingproxyobject *)self;
 1092|     40|    if (PyDict_CheckExact(pp->mapping))
  ------------------
  |  |   19|     40|#define PyDict_CheckExact(op) Py_IS_TYPE((op), &PyDict_Type)
  |  |  ------------------
  |  |  |  |  215|     40|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     40|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     40|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 40, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1093|     40|        return PyDict_Contains(pp->mapping, key);
 1094|      0|    else
 1095|      0|        return PySequence_Contains(pp->mapping, key);
 1096|     40|}
descrobject.c:mappingproxy_getitem:
 1053|     40|{
 1054|     40|    mappingproxyobject *pp = (mappingproxyobject *)self;
 1055|     40|    return PyObject_GetItem(pp->mapping, key);
 1056|     40|}
descrobject.c:mappingproxy_items:
 1146|     29|{
 1147|     29|    mappingproxyobject *pp = (mappingproxyobject *)self;
 1148|     29|    return PyObject_CallMethodNoArgs(pp->mapping, &_Py_ID(items));
  ------------------
  |  |  917|     29|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     29|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     29|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1149|     29|}
descrobject.c:property_dealloc:
 1637|      2|{
 1638|      2|    propertyobject *gs = (propertyobject *)self;
 1639|       |
 1640|      2|    _PyObject_GC_UNTRACK(self);
  ------------------
  |  |  515|      2|        _PyObject_GC_UNTRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1641|      2|    Py_XDECREF(gs->prop_get);
  ------------------
  |  |  524|      2|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1642|      2|    Py_XDECREF(gs->prop_set);
  ------------------
  |  |  524|      2|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1643|      2|    Py_XDECREF(gs->prop_del);
  ------------------
  |  |  524|      2|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1644|      2|    Py_XDECREF(gs->prop_doc);
  ------------------
  |  |  524|      2|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1645|      2|    Py_XDECREF(gs->prop_name);
  ------------------
  |  |  524|      2|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1646|      2|    Py_TYPE(self)->tp_free(self);
  ------------------
  |  |  213|      2|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1647|      2|}
descrobject.c:property_traverse:
 1980|      6|{
 1981|      6|    propertyobject *pp = (propertyobject *)self;
 1982|      6|    Py_VISIT(pp->prop_get);
  ------------------
  |  |  194|      6|    do {                                                                \
  |  |  195|      6|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 6, False: 0]
  |  |  ------------------
  |  |  196|      6|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      6|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      6|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 6]
  |  |  ------------------
  |  |  198|      6|                return vret;                                            \
  |  |  199|      6|        }                                                               \
  |  |  200|      6|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 6]
  |  |  ------------------
  ------------------
 1983|      6|    Py_VISIT(pp->prop_set);
  ------------------
  |  |  194|      6|    do {                                                                \
  |  |  195|      6|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 4, False: 2]
  |  |  ------------------
  |  |  196|      4|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      4|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 4]
  |  |  ------------------
  |  |  198|      4|                return vret;                                            \
  |  |  199|      4|        }                                                               \
  |  |  200|      6|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 6]
  |  |  ------------------
  ------------------
 1984|      6|    Py_VISIT(pp->prop_del);
  ------------------
  |  |  194|      6|    do {                                                                \
  |  |  195|      6|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 0, False: 6]
  |  |  ------------------
  |  |  196|      0|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      0|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 0]
  |  |  ------------------
  |  |  198|      0|                return vret;                                            \
  |  |  199|      0|        }                                                               \
  |  |  200|      6|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 6]
  |  |  ------------------
  ------------------
 1985|      6|    Py_VISIT(pp->prop_doc);
  ------------------
  |  |  194|      6|    do {                                                                \
  |  |  195|      6|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 2, False: 4]
  |  |  ------------------
  |  |  196|      2|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      2|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 2]
  |  |  ------------------
  |  |  198|      2|                return vret;                                            \
  |  |  199|      2|        }                                                               \
  |  |  200|      6|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 6]
  |  |  ------------------
  ------------------
 1986|      6|    Py_VISIT(pp->prop_name);
  ------------------
  |  |  194|      6|    do {                                                                \
  |  |  195|      6|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 6, False: 0]
  |  |  ------------------
  |  |  196|      6|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      6|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      6|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 6]
  |  |  ------------------
  |  |  198|      6|                return vret;                                            \
  |  |  199|      6|        }                                                               \
  |  |  200|      6|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 6]
  |  |  ------------------
  ------------------
 1987|      6|    return 0;
 1988|      6|}
descrobject.c:property_copy:
 1766|      2|{
 1767|      2|    propertyobject *pold = (propertyobject *)old;
 1768|      2|    PyObject *new, *type, *doc;
 1769|       |
 1770|      2|    type = PyObject_Type(old);
 1771|      2|    if (type == NULL)
  ------------------
  |  Branch (1771:9): [True: 0, False: 2]
  ------------------
 1772|      0|        return NULL;
 1773|       |
 1774|      2|    if (get == NULL || get == Py_None) {
  ------------------
  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (1774:9): [True: 2, False: 0]
  |  Branch (1774:24): [True: 0, False: 0]
  ------------------
 1775|      2|        get = pold->prop_get ? pold->prop_get : Py_None;
  ------------------
  |  |  616|      2|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (1775:15): [True: 2, False: 0]
  ------------------
 1776|      2|    }
 1777|      2|    if (set == NULL || set == Py_None) {
  ------------------
  |  |  616|      2|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (1777:9): [True: 0, False: 2]
  |  Branch (1777:24): [True: 0, False: 2]
  ------------------
 1778|      0|        set = pold->prop_set ? pold->prop_set : Py_None;
  ------------------
  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (1778:15): [True: 0, False: 0]
  ------------------
 1779|      0|    }
 1780|      2|    if (del == NULL || del == Py_None) {
  ------------------
  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (1780:9): [True: 2, False: 0]
  |  Branch (1780:24): [True: 0, False: 0]
  ------------------
 1781|      2|        del = pold->prop_del ? pold->prop_del : Py_None;
  ------------------
  |  |  616|      4|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (1781:15): [True: 0, False: 2]
  ------------------
 1782|      2|    }
 1783|      2|    if (pold->getter_doc && get != Py_None) {
  ------------------
  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (1783:9): [True: 0, False: 2]
  |  Branch (1783:29): [True: 0, False: 0]
  ------------------
 1784|       |        /* make _init use __doc__ from getter */
 1785|      0|        doc = Py_None;
  ------------------
  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  ------------------
 1786|      0|    }
 1787|      2|    else {
 1788|      2|        doc = pold->prop_doc ? pold->prop_doc : Py_None;
  ------------------
  |  |  616|      4|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (1788:15): [True: 0, False: 2]
  ------------------
 1789|      2|    }
 1790|       |
 1791|      2|    new =  PyObject_CallFunctionObjArgs(type, get, set, del, doc, NULL);
 1792|      2|    Py_DECREF(type);
  ------------------
  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1793|      2|    if (new == NULL)
  ------------------
  |  Branch (1793:9): [True: 0, False: 2]
  ------------------
 1794|      0|        return NULL;
 1795|       |
 1796|      2|    if (PyObject_TypeCheck((new), &PyProperty_Type)) {
  ------------------
  |  |  378|      2|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (378:40): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 1797|      2|        Py_XSETREF(((propertyobject *) new)->prop_name, Py_XNewRef(pold->prop_name));
  ------------------
  |  |  374|      2|    do { \
  |  |  375|      2|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      2|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  376|      2|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      2|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  377|      2|        *_tmp_dst_ptr = (src); \
  |  |  378|      2|        Py_XDECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  524|      2|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  379|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (379:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1798|      2|    }
 1799|      2|    return new;
 1800|      2|}
descrobject.c:property_setter:
 1587|      2|{
 1588|      2|    return property_copy(self, NULL, setter, NULL);
 1589|      2|}
descrobject.c:property_set_name:
 1609|      3|property_set_name(PyObject *self, PyObject *args) {
 1610|      3|    if (PyTuple_GET_SIZE(args) != 2) {
  ------------------
  |  |   27|      3|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1610:9): [True: 0, False: 3]
  ------------------
 1611|      0|        PyErr_Format(
 1612|      0|                PyExc_TypeError,
 1613|      0|                "__set_name__() takes 2 positional arguments but %zd were given",
 1614|      0|                PyTuple_GET_SIZE(args));
  ------------------
  |  |   27|      0|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1615|      0|        return NULL;
 1616|      0|    }
 1617|       |
 1618|      3|    propertyobject *prop = (propertyobject *)self;
 1619|      3|    PyObject *name = PyTuple_GET_ITEM(args, 1);
  ------------------
  |  |   29|      3|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|      3|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1619:22): [True: 3, False: 0]
  ------------------
 1620|       |
 1621|      3|    Py_XSETREF(prop->prop_name, Py_XNewRef(name));
  ------------------
  |  |  374|      3|    do { \
  |  |  375|      3|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  376|      3|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  377|      3|        *_tmp_dst_ptr = (src); \
  |  |  378|      3|        Py_XDECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  524|      3|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  379|      3|    } while (0)
  |  |  ------------------
  |  |  |  Branch (379:14): [Folded, False: 3]
  |  |  ------------------
  ------------------
 1622|       |
 1623|      3|    Py_RETURN_NONE;
  ------------------
  |  |  628|      3|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|      3|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
 1624|      3|}
descrobject.c:property_descr_get:
 1665|      6|{
 1666|      6|    if (obj == NULL || obj == Py_None) {
  ------------------
  |  |  616|      6|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (1666:9): [True: 0, False: 6]
  |  Branch (1666:24): [True: 0, False: 6]
  ------------------
 1667|      0|        return Py_NewRef(self);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1668|      0|    }
 1669|       |
 1670|      6|    propertyobject *gs = (propertyobject *)self;
 1671|      6|    if (gs->prop_get == NULL) {
  ------------------
  |  Branch (1671:9): [True: 0, False: 6]
  ------------------
 1672|      0|        PyObject *propname;
 1673|      0|        if (property_name(gs, &propname) < 0) {
  ------------------
  |  Branch (1673:13): [True: 0, False: 0]
  ------------------
 1674|      0|            return NULL;
 1675|      0|        }
 1676|      0|        PyObject *qualname = PyType_GetQualName(Py_TYPE(obj));
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1677|      0|        if (propname != NULL && qualname != NULL) {
  ------------------
  |  Branch (1677:13): [True: 0, False: 0]
  |  Branch (1677:33): [True: 0, False: 0]
  ------------------
 1678|      0|            PyErr_Format(PyExc_AttributeError,
 1679|      0|                         "property %R of %R object has no getter",
 1680|      0|                         propname,
 1681|      0|                         qualname);
 1682|      0|        }
 1683|      0|        else if (qualname != NULL) {
  ------------------
  |  Branch (1683:18): [True: 0, False: 0]
  ------------------
 1684|      0|            PyErr_Format(PyExc_AttributeError,
 1685|      0|                         "property of %R object has no getter",
 1686|      0|                         qualname);
 1687|      0|        } else {
 1688|      0|            PyErr_SetString(PyExc_AttributeError,
 1689|      0|                            "property has no getter");
 1690|      0|        }
 1691|      0|        Py_XDECREF(propname);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1692|      0|        Py_XDECREF(qualname);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1693|      0|        return NULL;
 1694|      0|    }
 1695|       |
 1696|      6|    return PyObject_CallOneArg(gs->prop_get, obj);
 1697|      6|}
descrobject.c:property_descr_set:
 1701|      4|{
 1702|      4|    propertyobject *gs = (propertyobject *)self;
 1703|      4|    PyObject *func, *res;
 1704|       |
 1705|      4|    if (value == NULL) {
  ------------------
  |  Branch (1705:9): [True: 0, False: 4]
  ------------------
 1706|      0|        func = gs->prop_del;
 1707|      0|    }
 1708|      4|    else {
 1709|      4|        func = gs->prop_set;
 1710|      4|    }
 1711|       |
 1712|      4|    if (func == NULL) {
  ------------------
  |  Branch (1712:9): [True: 0, False: 4]
  ------------------
 1713|      0|        PyObject *propname;
 1714|      0|        if (property_name(gs, &propname) < 0) {
  ------------------
  |  Branch (1714:13): [True: 0, False: 0]
  ------------------
 1715|      0|            return -1;
 1716|      0|        }
 1717|      0|        PyObject *qualname = NULL;
 1718|      0|        if (obj != NULL) {
  ------------------
  |  Branch (1718:13): [True: 0, False: 0]
  ------------------
 1719|      0|            qualname = PyType_GetQualName(Py_TYPE(obj));
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1720|      0|        }
 1721|      0|        if (propname != NULL && qualname != NULL) {
  ------------------
  |  Branch (1721:13): [True: 0, False: 0]
  |  Branch (1721:33): [True: 0, False: 0]
  ------------------
 1722|      0|            PyErr_Format(PyExc_AttributeError,
 1723|      0|                        value == NULL ?
  ------------------
  |  Branch (1723:25): [True: 0, False: 0]
  ------------------
 1724|      0|                        "property %R of %R object has no deleter" :
 1725|      0|                        "property %R of %R object has no setter",
 1726|      0|                        propname,
 1727|      0|                        qualname);
 1728|      0|        }
 1729|      0|        else if (qualname != NULL) {
  ------------------
  |  Branch (1729:18): [True: 0, False: 0]
  ------------------
 1730|      0|            PyErr_Format(PyExc_AttributeError,
 1731|      0|                            value == NULL ?
  ------------------
  |  Branch (1731:29): [True: 0, False: 0]
  ------------------
 1732|      0|                            "property of %R object has no deleter" :
 1733|      0|                            "property of %R object has no setter",
 1734|      0|                            qualname);
 1735|      0|        }
 1736|      0|        else {
 1737|      0|            PyErr_SetString(PyExc_AttributeError,
 1738|      0|                         value == NULL ?
  ------------------
  |  Branch (1738:26): [True: 0, False: 0]
  ------------------
 1739|      0|                         "property has no deleter" :
 1740|      0|                         "property has no setter");
 1741|      0|        }
 1742|      0|        Py_XDECREF(propname);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1743|      0|        Py_XDECREF(qualname);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1744|      0|        return -1;
 1745|      0|    }
 1746|       |
 1747|      4|    if (value == NULL) {
  ------------------
  |  Branch (1747:9): [True: 0, False: 4]
  ------------------
 1748|      0|        res = PyObject_CallOneArg(func, obj);
 1749|      0|    }
 1750|      4|    else {
 1751|      4|        EVAL_CALL_STAT_INC_IF_FUNCTION(EVAL_CALL_API, func);
  ------------------
  |  |   80|      4|#define EVAL_CALL_STAT_INC_IF_FUNCTION(name, callable) ((void)0)
  ------------------
 1752|      4|        PyObject *args[] = { obj, value };
 1753|      4|        res = PyObject_Vectorcall(func, args, 2, NULL);
 1754|      4|    }
 1755|       |
 1756|      4|    if (res == NULL) {
  ------------------
  |  Branch (1756:9): [True: 0, False: 4]
  ------------------
 1757|      0|        return -1;
 1758|      0|    }
 1759|       |
 1760|      4|    Py_DECREF(res);
  ------------------
  |  |  430|      4|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1761|      4|    return 0;
 1762|      4|}
descrobject.c:property_init_impl:
 1843|      5|{
 1844|      5|    if (fget == Py_None)
  ------------------
  |  |  616|      5|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (1844:9): [True: 0, False: 5]
  ------------------
 1845|      0|        fget = NULL;
 1846|      5|    if (fset == Py_None)
  ------------------
  |  |  616|      5|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (1846:9): [True: 0, False: 5]
  ------------------
 1847|      0|        fset = NULL;
 1848|      5|    if (fdel == Py_None)
  ------------------
  |  |  616|      5|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (1848:9): [True: 2, False: 3]
  ------------------
 1849|      2|        fdel = NULL;
 1850|       |
 1851|      5|    Py_XSETREF(self->prop_get, Py_XNewRef(fget));
  ------------------
  |  |  374|      5|    do { \
  |  |  375|      5|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      5|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  376|      5|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      5|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  377|      5|        *_tmp_dst_ptr = (src); \
  |  |  378|      5|        Py_XDECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  524|      5|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  379|      5|    } while (0)
  |  |  ------------------
  |  |  |  Branch (379:14): [Folded, False: 5]
  |  |  ------------------
  ------------------
 1852|      5|    Py_XSETREF(self->prop_set, Py_XNewRef(fset));
  ------------------
  |  |  374|      5|    do { \
  |  |  375|      5|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      5|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  376|      5|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      5|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  377|      5|        *_tmp_dst_ptr = (src); \
  |  |  378|      5|        Py_XDECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  524|      5|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  379|      5|    } while (0)
  |  |  ------------------
  |  |  |  Branch (379:14): [Folded, False: 5]
  |  |  ------------------
  ------------------
 1853|      5|    Py_XSETREF(self->prop_del, Py_XNewRef(fdel));
  ------------------
  |  |  374|      5|    do { \
  |  |  375|      5|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      5|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  376|      5|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      5|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  377|      5|        *_tmp_dst_ptr = (src); \
  |  |  378|      5|        Py_XDECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  524|      5|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  379|      5|    } while (0)
  |  |  ------------------
  |  |  |  Branch (379:14): [Folded, False: 5]
  |  |  ------------------
  ------------------
 1854|      5|    Py_XSETREF(self->prop_doc, NULL);
  ------------------
  |  |  374|      5|    do { \
  |  |  375|      5|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      5|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  376|      5|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      5|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  377|      5|        *_tmp_dst_ptr = (src); \
  |  |  378|      5|        Py_XDECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  524|      5|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  379|      5|    } while (0)
  |  |  ------------------
  |  |  |  Branch (379:14): [Folded, False: 5]
  |  |  ------------------
  ------------------
 1855|      5|    Py_XSETREF(self->prop_name, NULL);
  ------------------
  |  |  374|      5|    do { \
  |  |  375|      5|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      5|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  376|      5|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      5|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  377|      5|        *_tmp_dst_ptr = (src); \
  |  |  378|      5|        Py_XDECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  524|      5|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  379|      5|    } while (0)
  |  |  ------------------
  |  |  |  Branch (379:14): [Folded, False: 5]
  |  |  ------------------
  ------------------
 1856|       |
 1857|      5|    self->getter_doc = 0;
 1858|      5|    PyObject *prop_doc = NULL;
 1859|       |
 1860|      5|    if (doc != NULL && doc != Py_None) {
  ------------------
  |  |  616|      2|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (1860:9): [True: 2, False: 3]
  |  Branch (1860:24): [True: 0, False: 2]
  ------------------
 1861|      0|        prop_doc = Py_XNewRef(doc);
  ------------------
  |  |  551|      0|#  define Py_XNewRef(obj) _Py_XNewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1862|      0|    }
 1863|       |    /* if no docstring given and the getter has one, use that one */
 1864|      5|    else if (fget != NULL) {
  ------------------
  |  Branch (1864:14): [True: 5, False: 0]
  ------------------
 1865|      5|        int rc = PyObject_GetOptionalAttr(fget, &_Py_ID(__doc__), &prop_doc);
  ------------------
  |  |  917|      5|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      5|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      5|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1866|      5|        if (rc < 0) {
  ------------------
  |  Branch (1866:13): [True: 0, False: 5]
  ------------------
 1867|      0|            return rc;
 1868|      0|        }
 1869|      5|        if (prop_doc == Py_None) {
  ------------------
  |  |  616|      5|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (1869:13): [True: 4, False: 1]
  ------------------
 1870|      4|            prop_doc = NULL;
 1871|      4|            Py_DECREF(Py_None);
  ------------------
  |  |  430|      4|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1872|      4|        }
 1873|      5|        if (prop_doc != NULL){
  ------------------
  |  Branch (1873:13): [True: 1, False: 4]
  ------------------
 1874|      1|            self->getter_doc = 1;
 1875|      1|        }
 1876|      5|    }
 1877|       |
 1878|       |    /* At this point `prop_doc` is either NULL or
 1879|       |       a non-None object with incremented ref counter */
 1880|       |
 1881|      5|    if (Py_IS_TYPE(self, &PyProperty_Type)) {
  ------------------
  |  |  215|      5|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 5, False: 0]
  |  |  ------------------
  ------------------
 1882|      5|        Py_XSETREF(self->prop_doc, prop_doc);
  ------------------
  |  |  374|      5|    do { \
  |  |  375|      5|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      5|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  376|      5|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      5|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  377|      5|        *_tmp_dst_ptr = (src); \
  |  |  378|      5|        Py_XDECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  524|      5|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  379|      5|    } while (0)
  |  |  ------------------
  |  |  |  Branch (379:14): [Folded, False: 5]
  |  |  ------------------
  ------------------
 1883|      5|    } else {
 1884|       |        /* If this is a property subclass, put __doc__ in the dict
 1885|       |           or designated slot of the subclass instance instead, otherwise
 1886|       |           it gets shadowed by __doc__ in the class's dict. */
 1887|       |
 1888|      0|        if (prop_doc == NULL) {
  ------------------
  |  Branch (1888:13): [True: 0, False: 0]
  ------------------
 1889|      0|            prop_doc = Py_NewRef(Py_None);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1890|      0|        }
 1891|      0|        int err = PyObject_SetAttr(
 1892|      0|                    (PyObject *)self, &_Py_ID(__doc__), prop_doc);
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1893|      0|        Py_DECREF(prop_doc);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1894|      0|        if (err < 0) {
  ------------------
  |  Branch (1894:13): [True: 0, False: 0]
  ------------------
 1895|      0|            assert(PyErr_Occurred());
  ------------------
  |  Branch (1895:13): [True: 0, False: 0]
  ------------------
 1896|      0|            if (!self->getter_doc &&
  ------------------
  |  Branch (1896:17): [True: 0, False: 0]
  ------------------
 1897|      0|                PyErr_ExceptionMatches(PyExc_AttributeError))
  ------------------
  |  Branch (1897:17): [True: 0, False: 0]
  ------------------
 1898|      0|            {
 1899|      0|                PyErr_Clear();
 1900|       |                // https://github.com/python/cpython/issues/98963#issuecomment-1574413319
 1901|       |                // Python silently dropped this doc assignment through 3.11.
 1902|       |                // We preserve that behavior for backwards compatibility.
 1903|       |                //
 1904|       |                // If we ever want to deprecate this behavior, only raise a
 1905|       |                // warning or error when proc_doc is not None so that
 1906|       |                // property without a specific doc= still works.
 1907|      0|                return 0;
 1908|      0|            } else {
 1909|      0|                return -1;
 1910|      0|            }
 1911|      0|        }
 1912|      0|    }
 1913|       |
 1914|      5|    return 0;
 1915|      5|}

_PyDict_CheckConsistency:
  684|  16.0k|{
  685|  16.0k|    ASSERT_WORLD_STOPPED_OR_DICT_LOCKED(op);
  686|       |
  687|  16.0k|#define CHECK(expr) \
  688|  16.0k|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  689|       |
  690|  16.0k|    assert(op != NULL);
  ------------------
  |  Branch (690:5): [True: 16.0k, False: 0]
  ------------------
  691|  16.0k|    CHECK(PyAnyDict_Check(op));
  ------------------
  |  |  688|  16.0k|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (688:16): [True: 16.0k, False: 0]
  |  |  |  Branch (688:16): [True: 0, False: 0]
  |  |  |  Branch (688:89): [Folded, False: 16.0k]
  |  |  ------------------
  ------------------
  692|  16.0k|    PyDictObject *mp = (PyDictObject *)op;
  693|       |
  694|  16.0k|    PyDictKeysObject *keys = mp->ma_keys;
  695|  16.0k|    int splitted = _PyDict_HasSplitTable(mp);
  ------------------
  |  |   56|  16.0k|#define _PyDict_HasSplitTable(d) ((d)->ma_values != NULL)
  ------------------
  696|  16.0k|    Py_ssize_t usable = USABLE_FRACTION(DK_SIZE(keys));
  ------------------
  |  |  575|  16.0k|#define USABLE_FRACTION(n) (((n) << 1)/3)
  ------------------
  697|       |
  698|       |    // In the free-threaded build, shared keys may be concurrently modified,
  699|       |    // so use atomic loads.
  700|  16.0k|    Py_ssize_t dk_usable = FT_ATOMIC_LOAD_SSIZE_ACQUIRE(keys->dk_usable);
  ------------------
  |  |  148|  16.0k|#define FT_ATOMIC_LOAD_SSIZE_ACQUIRE(value) value
  ------------------
  701|  16.0k|    Py_ssize_t dk_nentries = FT_ATOMIC_LOAD_SSIZE_ACQUIRE(keys->dk_nentries);
  ------------------
  |  |  148|  16.0k|#define FT_ATOMIC_LOAD_SSIZE_ACQUIRE(value) value
  ------------------
  702|       |
  703|  16.0k|    CHECK(0 <= mp->ma_used && mp->ma_used <= usable);
  ------------------
  |  |  688|  32.0k|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (688:16): [True: 16.0k, False: 0]
  |  |  |  Branch (688:16): [True: 16.0k, False: 0]
  |  |  |  Branch (688:89): [Folded, False: 16.0k]
  |  |  ------------------
  ------------------
  704|  16.0k|    CHECK(0 <= dk_usable && dk_usable <= usable);
  ------------------
  |  |  688|  32.0k|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (688:16): [True: 16.0k, False: 0]
  |  |  |  Branch (688:16): [True: 16.0k, False: 0]
  |  |  |  Branch (688:89): [Folded, False: 16.0k]
  |  |  ------------------
  ------------------
  705|  16.0k|    CHECK(0 <= dk_nentries && dk_nentries <= usable);
  ------------------
  |  |  688|  32.0k|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (688:16): [True: 16.0k, False: 0]
  |  |  |  Branch (688:16): [True: 16.0k, False: 0]
  |  |  |  Branch (688:89): [Folded, False: 16.0k]
  |  |  ------------------
  ------------------
  706|  16.0k|    CHECK(dk_usable + dk_nentries <= usable);
  ------------------
  |  |  688|  16.0k|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (688:14): [True: 0, False: 16.0k]
  |  |  |  Branch (688:89): [Folded, False: 16.0k]
  |  |  ------------------
  ------------------
  707|       |
  708|  16.0k|    if (!splitted) {
  ------------------
  |  Branch (708:9): [True: 15.9k, False: 15]
  ------------------
  709|       |        /* combined table */
  710|  15.9k|        CHECK(keys->dk_kind != DICT_KEYS_SPLIT);
  ------------------
  |  |  688|  15.9k|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (688:14): [True: 0, False: 15.9k]
  |  |  |  Branch (688:89): [Folded, False: 15.9k]
  |  |  ------------------
  ------------------
  711|  15.9k|        CHECK(keys->dk_refcnt == 1 || keys == Py_EMPTY_KEYS);
  ------------------
  |  |  688|  17.0k|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (688:16): [True: 14.9k, False: 1.01k]
  |  |  |  Branch (688:16): [True: 1.01k, False: 0]
  |  |  |  Branch (688:89): [Folded, False: 15.9k]
  |  |  ------------------
  ------------------
  712|  15.9k|    }
  713|     15|    else {
  714|     15|        CHECK(keys->dk_kind == DICT_KEYS_SPLIT);
  ------------------
  |  |  688|     15|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (688:14): [True: 0, False: 15]
  |  |  |  Branch (688:89): [Folded, False: 15]
  |  |  ------------------
  ------------------
  715|     15|        CHECK(mp->ma_used <= SHARED_KEYS_MAX_SIZE);
  ------------------
  |  |  688|     15|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (688:14): [True: 0, False: 15]
  |  |  |  Branch (688:89): [Folded, False: 15]
  |  |  ------------------
  ------------------
  716|     15|        if (mp->ma_values->embedded) {
  ------------------
  |  Branch (716:13): [True: 0, False: 15]
  ------------------
  717|      0|            CHECK(mp->ma_values->embedded == 1);
  ------------------
  |  |  688|      0|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (688:14): [True: 0, False: 0]
  |  |  |  Branch (688:89): [Folded, False: 0]
  |  |  ------------------
  ------------------
  718|      0|            CHECK(mp->ma_values->valid == 1);
  ------------------
  |  |  688|      0|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (688:14): [True: 0, False: 0]
  |  |  |  Branch (688:89): [Folded, False: 0]
  |  |  ------------------
  ------------------
  719|      0|        }
  720|     15|    }
  721|       |
  722|  16.0k|    if (check_content) {
  ------------------
  |  Branch (722:9): [True: 0, False: 16.0k]
  ------------------
  723|      0|        LOCK_KEYS_IF_SPLIT(keys, keys->dk_kind);
  724|      0|        for (Py_ssize_t i=0; i < DK_SIZE(keys); i++) {
  ------------------
  |  |  262|      0|#define DK_SIZE(dk)      (((int64_t)1)<<DK_LOG_SIZE(dk))
  |  |  ------------------
  |  |  |  |  260|      0|#define DK_LOG_SIZE(dk)  _Py_RVALUE((dk)->dk_log2_size)
  |  |  |  |  ------------------
  |  |  |  |  |  |  277|      0|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (724:30): [True: 0, False: 0]
  ------------------
  725|      0|            Py_ssize_t ix = dictkeys_get_index(keys, i);
  726|      0|            CHECK(DKIX_DUMMY <= ix && ix <= usable);
  ------------------
  |  |  688|      0|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (688:16): [True: 0, False: 0]
  |  |  |  Branch (688:16): [True: 0, False: 0]
  |  |  |  Branch (688:89): [Folded, False: 0]
  |  |  ------------------
  ------------------
  727|      0|        }
  728|       |
  729|      0|        if (keys->dk_kind == DICT_KEYS_GENERAL) {
  ------------------
  |  Branch (729:13): [True: 0, False: 0]
  ------------------
  730|      0|            PyDictKeyEntry *entries = DK_ENTRIES(keys);
  731|      0|            for (Py_ssize_t i=0; i < usable; i++) {
  ------------------
  |  Branch (731:34): [True: 0, False: 0]
  ------------------
  732|      0|                PyDictKeyEntry *entry = &entries[i];
  733|      0|                PyObject *key = entry->me_key;
  734|       |
  735|      0|                if (key != NULL) {
  ------------------
  |  Branch (735:21): [True: 0, False: 0]
  ------------------
  736|       |                    /* test_dict fails if PyObject_Hash() is called again */
  737|      0|                    CHECK(entry->me_hash != -1);
  ------------------
  |  |  688|      0|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (688:14): [True: 0, False: 0]
  |  |  |  Branch (688:89): [Folded, False: 0]
  |  |  ------------------
  ------------------
  738|      0|                    CHECK(entry->me_value != NULL);
  ------------------
  |  |  688|      0|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (688:14): [True: 0, False: 0]
  |  |  |  Branch (688:89): [Folded, False: 0]
  |  |  ------------------
  ------------------
  739|       |
  740|      0|                    if (PyUnicode_CheckExact(key)) {
  ------------------
  |  |  104|      0|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  741|      0|                        Py_hash_t hash = unicode_get_hash(key);
  742|      0|                        CHECK(entry->me_hash == hash);
  ------------------
  |  |  688|      0|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (688:14): [True: 0, False: 0]
  |  |  |  Branch (688:89): [Folded, False: 0]
  |  |  ------------------
  ------------------
  743|      0|                    }
  744|      0|                }
  745|      0|            }
  746|      0|        }
  747|      0|        else {
  748|      0|            PyDictUnicodeEntry *entries = DK_UNICODE_ENTRIES(keys);
  749|      0|            for (Py_ssize_t i=0; i < usable; i++) {
  ------------------
  |  Branch (749:34): [True: 0, False: 0]
  ------------------
  750|      0|                PyDictUnicodeEntry *entry = &entries[i];
  751|      0|                PyObject *key = entry->me_key;
  752|       |
  753|      0|                if (key != NULL) {
  ------------------
  |  Branch (753:21): [True: 0, False: 0]
  ------------------
  754|      0|                    CHECK(PyUnicode_CheckExact(key));
  ------------------
  |  |  688|      0|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (688:14): [True: 0, False: 0]
  |  |  |  Branch (688:89): [Folded, False: 0]
  |  |  ------------------
  ------------------
  755|      0|                    Py_hash_t hash = unicode_get_hash(key);
  756|      0|                    CHECK(hash != -1);
  ------------------
  |  |  688|      0|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (688:14): [True: 0, False: 0]
  |  |  |  Branch (688:89): [Folded, False: 0]
  |  |  ------------------
  ------------------
  757|      0|                    if (!splitted) {
  ------------------
  |  Branch (757:25): [True: 0, False: 0]
  ------------------
  758|      0|                        CHECK(entry->me_value != NULL);
  ------------------
  |  |  688|      0|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (688:14): [True: 0, False: 0]
  |  |  |  Branch (688:89): [Folded, False: 0]
  |  |  ------------------
  ------------------
  759|      0|                    }
  760|      0|                }
  761|       |
  762|      0|                if (splitted) {
  ------------------
  |  Branch (762:21): [True: 0, False: 0]
  ------------------
  763|      0|                    CHECK(entry->me_value == NULL);
  ------------------
  |  |  688|      0|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (688:14): [True: 0, False: 0]
  |  |  |  Branch (688:89): [Folded, False: 0]
  |  |  ------------------
  ------------------
  764|      0|                }
  765|      0|            }
  766|      0|        }
  767|       |
  768|      0|        if (splitted) {
  ------------------
  |  Branch (768:13): [True: 0, False: 0]
  ------------------
  769|      0|            CHECK(mp->ma_used <= SHARED_KEYS_MAX_SIZE);
  ------------------
  |  |  688|      0|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (688:14): [True: 0, False: 0]
  |  |  |  Branch (688:89): [Folded, False: 0]
  |  |  ------------------
  ------------------
  770|       |            /* splitted table */
  771|      0|            int duplicate_check = 0;
  772|      0|            for (Py_ssize_t i=0; i < mp->ma_used; i++) {
  ------------------
  |  Branch (772:34): [True: 0, False: 0]
  ------------------
  773|      0|                int index = get_index_from_order(mp, i);
  774|      0|                CHECK((duplicate_check & (1<<index)) == 0);
  ------------------
  |  |  688|      0|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (688:14): [True: 0, False: 0]
  |  |  |  Branch (688:89): [Folded, False: 0]
  |  |  ------------------
  ------------------
  775|      0|                duplicate_check |= (1<<index);
  776|      0|                CHECK(mp->ma_values->values[index] != NULL);
  ------------------
  |  |  688|      0|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (688:14): [True: 0, False: 0]
  |  |  |  Branch (688:89): [Folded, False: 0]
  |  |  ------------------
  ------------------
  777|      0|            }
  778|      0|        }
  779|      0|        UNLOCK_KEYS_IF_SPLIT(keys, keys->dk_kind);
  780|      0|    }
  781|  16.0k|    return 1;
  782|       |
  783|  16.0k|#undef CHECK
  784|  16.0k|}
PyDict_New:
 1028|    922|{
 1029|       |    /* We don't incref Py_EMPTY_KEYS here because it is immortal. */
 1030|    922|    return new_dict(Py_EMPTY_KEYS, NULL, 0, 0);
  ------------------
  |  |  645|    922|#define Py_EMPTY_KEYS &empty_keys_struct
  ------------------
 1031|    922|}
_PyDictKeys_StringLookup:
 1244|     74|{
 1245|     74|    if (!check_keys_unicode(dk, key)) {
  ------------------
  |  Branch (1245:9): [True: 0, False: 74]
  ------------------
 1246|      0|        return DKIX_ERROR;
  ------------------
  |  |  186|      0|#define DKIX_ERROR (-3)
  ------------------
 1247|      0|    }
 1248|     74|    Py_hash_t hash = hash_unicode_key(key);
 1249|     74|    return unicodekeys_lookup_unicode(dk, key, hash);
 1250|     74|}
_PyDictKeys_StringLookupAndVersion:
 1254|     71|{
 1255|     71|    if (!check_keys_unicode(dk, key)) {
  ------------------
  |  Branch (1255:9): [True: 0, False: 71]
  ------------------
 1256|      0|        return DKIX_ERROR;
  ------------------
  |  |  186|      0|#define DKIX_ERROR (-3)
  ------------------
 1257|      0|    }
 1258|     71|    Py_ssize_t ix;
 1259|     71|    Py_hash_t hash = hash_unicode_key(key);
 1260|     71|    LOCK_KEYS(dk);
 1261|     71|    ix = unicodekeys_lookup_unicode(dk, key, hash);
 1262|     71|    *version = _PyDictKeys_GetVersionForCurrentState(_PyInterpreterState_GET(), dk);
 1263|     71|    UNLOCK_KEYS(dk);
 1264|     71|    return ix;
 1265|     71|}
_PyDictKeys_StringLookupSplit:
 1272|    275|{
 1273|    275|    assert(dk->dk_kind == DICT_KEYS_SPLIT);
  ------------------
  |  Branch (1273:5): [True: 275, False: 0]
  ------------------
 1274|    275|    assert(PyUnicode_CheckExact(key));
  ------------------
  |  Branch (1274:5): [True: 275, False: 0]
  ------------------
 1275|    275|    Py_hash_t hash = unicode_get_hash(key);
 1276|    275|    if (hash == -1) {
  ------------------
  |  Branch (1276:9): [True: 0, False: 275]
  ------------------
 1277|      0|        hash = PyUnicode_Type.tp_hash(key);
 1278|      0|        if (hash == -1) {
  ------------------
  |  Branch (1278:13): [True: 0, False: 0]
  ------------------
 1279|      0|            PyErr_Clear();
 1280|      0|            return DKIX_ERROR;
  ------------------
  |  |  186|      0|#define DKIX_ERROR (-3)
  ------------------
 1281|      0|        }
 1282|      0|    }
 1283|    275|    return unicodekeys_lookup_split(dk, key, hash);
 1284|    275|}
_Py_dict_lookup:
 1303|  53.4k|{
 1304|  53.4k|    PyDictKeysObject *dk;
 1305|  53.4k|    DictKeysKind kind;
 1306|  53.4k|    Py_ssize_t ix;
 1307|       |
 1308|  53.4k|    _Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED(mp);
 1309|  53.4k|start:
 1310|  53.4k|    dk = mp->ma_keys;
 1311|  53.4k|    kind = dk->dk_kind;
 1312|       |
 1313|  53.4k|    if (kind != DICT_KEYS_GENERAL) {
  ------------------
  |  Branch (1313:9): [True: 52.8k, False: 567]
  ------------------
 1314|  52.8k|        if (PyUnicode_CheckExact(key)) {
  ------------------
  |  |  104|  52.8k|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  ------------------
  |  |  |  |  215|  52.8k|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|  52.8k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|  52.8k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 52.8k, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1315|       |#ifdef Py_GIL_DISABLED
 1316|       |            if (kind == DICT_KEYS_SPLIT) {
 1317|       |                ix = unicodekeys_lookup_split(dk, key, hash);
 1318|       |            }
 1319|       |            else {
 1320|       |                ix = unicodekeys_lookup_unicode(dk, key, hash);
 1321|       |            }
 1322|       |#else
 1323|  52.8k|            ix = unicodekeys_lookup_unicode(dk, key, hash);
 1324|  52.8k|#endif
 1325|  52.8k|        }
 1326|      1|        else {
 1327|      1|            INCREF_KEYS_FT(dk);
 1328|      1|            LOCK_KEYS_IF_SPLIT(dk, kind);
 1329|       |
 1330|      1|            ix = unicodekeys_lookup_generic(mp, dk, key, hash);
 1331|       |
 1332|      1|            UNLOCK_KEYS_IF_SPLIT(dk, kind);
 1333|      1|            DECREF_KEYS_FT(dk, IS_DICT_SHARED(mp));
 1334|      1|            if (ix == DKIX_KEY_CHANGED) {
  ------------------
  |  |  187|      1|#define DKIX_KEY_CHANGED (-4) /* Used internally */
  ------------------
  |  Branch (1334:17): [True: 0, False: 1]
  ------------------
 1335|      0|                goto start;
 1336|      0|            }
 1337|      1|        }
 1338|       |
 1339|  52.8k|        if (ix >= 0) {
  ------------------
  |  Branch (1339:13): [True: 10.0k, False: 42.8k]
  ------------------
 1340|  10.0k|            if (kind == DICT_KEYS_SPLIT) {
  ------------------
  |  Branch (1340:17): [True: 10, False: 10.0k]
  ------------------
 1341|     10|                *value_addr = mp->ma_values->values[ix];
 1342|     10|            }
 1343|  10.0k|            else {
 1344|  10.0k|                *value_addr = DK_UNICODE_ENTRIES(dk)[ix].me_value;
 1345|  10.0k|            }
 1346|  10.0k|        }
 1347|  42.8k|        else {
 1348|  42.8k|            *value_addr = NULL;
 1349|  42.8k|        }
 1350|  52.8k|    }
 1351|    567|    else {
 1352|    567|        ix = dictkeys_generic_lookup(mp, dk, key, hash);
 1353|    567|        if (ix == DKIX_KEY_CHANGED) {
  ------------------
  |  |  187|    567|#define DKIX_KEY_CHANGED (-4) /* Used internally */
  ------------------
  |  Branch (1353:13): [True: 0, False: 567]
  ------------------
 1354|      0|            goto start;
 1355|      0|        }
 1356|    567|        if (ix >= 0) {
  ------------------
  |  Branch (1356:13): [True: 49, False: 518]
  ------------------
 1357|     49|            *value_addr = DK_ENTRIES(dk)[ix].me_value;
 1358|     49|        }
 1359|    518|        else {
 1360|    518|            *value_addr = NULL;
 1361|    518|        }
 1362|    567|    }
 1363|       |
 1364|  53.4k|    return ix;
 1365|  53.4k|}
_Py_dict_lookup_threadsafe:
 1701|    276|{
 1702|    276|    Py_ssize_t ix = _Py_dict_lookup(mp, key, hash, value_addr);
 1703|    276|    Py_XNewRef(*value_addr);
  ------------------
  |  |  551|    276|#  define Py_XNewRef(obj) _Py_XNewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    276|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    276|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1704|    276|    return ix;
 1705|    276|}
_Py_dict_lookup_threadsafe_stackref:
 1709|  32.0k|{
 1710|  32.0k|    PyObject *val;
 1711|  32.0k|    Py_ssize_t ix = _Py_dict_lookup(mp, key, hash, &val);
 1712|  32.0k|    if (val == NULL) {
  ------------------
  |  Branch (1712:9): [True: 28.2k, False: 3.72k]
  ------------------
 1713|  28.2k|        *value_addr = PyStackRef_NULL;
 1714|  28.2k|    }
 1715|  3.72k|    else {
 1716|  3.72k|        *value_addr = PyStackRef_FromPyObjectNew(val);
  ------------------
  |  |  599|  3.72k|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|  3.72k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  3.72k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1717|  3.72k|    }
 1718|  32.0k|    return ix;
 1719|  32.0k|}
_PyDict_GetMethodStackRef:
 1727|     20|{
 1728|     20|    assert(PyUnicode_CheckExact(key));
  ------------------
  |  Branch (1728:5): [True: 20, False: 0]
  ------------------
 1729|     20|    Py_hash_t hash = hash_unicode_key(key);
 1730|       |
 1731|       |#ifdef Py_GIL_DISABLED
 1732|       |    // NOTE: We can only do the fast-path lookup if we are on the owning
 1733|       |    // thread or if the dict is already marked as shared so that the load
 1734|       |    // of ma_keys is safe without a lock. We cannot call ensure_shared_on_read()
 1735|       |    // in this code path without incref'ing the dict because the dict is a
 1736|       |    // borrowed reference protected by QSBR, and acquiring the lock could lead
 1737|       |    // to a quiescent state (allowing the dict to be freed).
 1738|       |    if (_Py_IsOwnedByCurrentThread((PyObject *)mp) || IS_DICT_SHARED(mp)) {
 1739|       |        PyDictKeysObject *dk = _Py_atomic_load_ptr_acquire(&mp->ma_keys);
 1740|       |        if (dk->dk_kind == DICT_KEYS_UNICODE) {
 1741|       |            _PyStackRef ref;
 1742|       |            Py_ssize_t ix = lookup_threadsafe_unicode(dk, key, hash, &ref);
 1743|       |            if (ix >= 0) {
 1744|       |                assert(!PyStackRef_IsNull(ref));
 1745|       |                PyStackRef_XSETREF(*method, ref);
 1746|       |                return 1;
 1747|       |            }
 1748|       |            else if (ix == DKIX_EMPTY) {
 1749|       |                return 0;
 1750|       |            }
 1751|       |            assert(ix == DKIX_KEY_CHANGED);
 1752|       |        }
 1753|       |    }
 1754|       |#endif
 1755|       |
 1756|     20|    PyObject *obj;
 1757|     20|    Py_INCREF(mp);
  ------------------
  |  |  310|     20|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     20|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     20|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1758|     20|    Py_ssize_t ix = _Py_dict_lookup_threadsafe(mp, key, hash, &obj);
 1759|     20|    Py_DECREF(mp);
  ------------------
  |  |  430|     20|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     20|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     20|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1760|     20|    if (ix == DKIX_ERROR) {
  ------------------
  |  |  186|     20|#define DKIX_ERROR (-3)
  ------------------
  |  Branch (1760:9): [True: 0, False: 20]
  ------------------
 1761|      0|        PyStackRef_CLEAR(*method);
  ------------------
  |  |  711|      0|    do { \
  |  |  712|      0|        _PyStackRef *_tmp_op_ptr = &(REF); \
  |  |  713|      0|        _PyStackRef _tmp_old_op = (*_tmp_op_ptr); \
  |  |  714|      0|        *_tmp_op_ptr = PyStackRef_NULL; \
  |  |  715|      0|        PyStackRef_XCLOSE(_tmp_old_op); \
  |  |  716|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (716:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1762|      0|        return -1;
 1763|      0|    }
 1764|     20|    else if (ix >= 0 && obj != NULL) {
  ------------------
  |  Branch (1764:14): [True: 0, False: 20]
  |  Branch (1764:25): [True: 0, False: 0]
  ------------------
 1765|      0|        PyStackRef_XSETREF(*method, PyStackRef_FromPyObjectSteal(obj));
  ------------------
  |  |  834|      0|    do { \
  |  |  835|      0|        _PyStackRef _tmp_dst_ref = (dst); \
  |  |  836|      0|        (dst) = (src); \
  |  |  837|      0|        PyStackRef_XCLOSE(_tmp_dst_ref); \
  |  |  838|      0|    } while(0)
  |  |  ------------------
  |  |  |  Branch (838:13): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1766|      0|        return 1;
 1767|      0|    }
 1768|     20|    return 0;  // not found
 1769|     20|}
_PyDict_HasOnlyStringKeys:
 1773|    102|{
 1774|    102|    Py_ssize_t pos = 0;
 1775|    102|    PyObject *key, *value;
 1776|    102|    assert(PyDict_Check(dict));
  ------------------
  |  Branch (1776:5): [True: 102, False: 0]
  ------------------
 1777|       |    /* Shortcut */
 1778|    102|    if (((PyDictObject *)dict)->ma_keys->dk_kind != DICT_KEYS_GENERAL)
  ------------------
  |  Branch (1778:9): [True: 102, False: 0]
  ------------------
 1779|    102|        return 1;
 1780|      0|    while (PyDict_Next(dict, &pos, &key, &value))
  ------------------
  |  Branch (1780:12): [True: 0, False: 0]
  ------------------
 1781|      0|        if (!PyUnicode_Check(key))
  ------------------
  |  |  103|      0|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (1781:13): [True: 0, False: 0]
  ------------------
 1782|      0|            return 0;
 1783|      0|    return 1;
 1784|      0|}
_PyDict_EnablePerThreadRefcounting:
 1788|     32|{
 1789|     32|    assert(PyDict_Check(op));
  ------------------
  |  Branch (1789:5): [True: 32, False: 0]
  ------------------
 1790|       |#ifdef Py_GIL_DISABLED
 1791|       |    Py_ssize_t id = _PyObject_AssignUniqueId(op);
 1792|       |    if (id == _Py_INVALID_UNIQUE_ID) {
 1793|       |        return;
 1794|       |    }
 1795|       |    if ((uint64_t)id >= (uint64_t)DICT_UNIQUE_ID_MAX) {
 1796|       |        _PyObject_ReleaseUniqueId(id);
 1797|       |        return;
 1798|       |    }
 1799|       |
 1800|       |    PyDictObject *mp = (PyDictObject *)op;
 1801|       |    assert((mp->_ma_watcher_tag >> DICT_UNIQUE_ID_SHIFT) == 0);
 1802|       |    mp->_ma_watcher_tag += (uint64_t)id << DICT_UNIQUE_ID_SHIFT;
 1803|       |#endif
 1804|     32|}
_PyDict_InsertSplitValue:
 1918|      7|{
 1919|      7|    assert(can_modify_dict(mp));
  ------------------
  |  Branch (1919:5): [True: 7, False: 0]
  ------------------
 1920|      7|    assert(PyUnicode_CheckExact(key));
  ------------------
  |  Branch (1920:5): [True: 7, False: 0]
  ------------------
 1921|       |
 1922|      7|    PyObject *old_value = mp->ma_values->values[ix];
 1923|      7|    if (old_value == NULL) {
  ------------------
  |  Branch (1923:9): [True: 7, False: 0]
  ------------------
 1924|      7|        _PyDict_NotifyEvent(PyDict_EVENT_ADDED, mp, key, value);
 1925|      7|        STORE_SPLIT_VALUE(mp, ix, Py_NewRef(value));
  ------------------
  |  |  317|      7|#define STORE_SPLIT_VALUE(mp, idx, value) FT_ATOMIC_STORE_PTR_RELEASE(mp->ma_values->values[idx], value)
  |  |  ------------------
  |  |  |  |  164|      7|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  |  |  ------------------
  ------------------
 1926|      7|        _PyDictValues_AddToInsertionOrder(mp->ma_values, ix);
 1927|      7|        STORE_USED(mp, mp->ma_used + 1);
  ------------------
  |  |  321|      7|#define STORE_USED(mp, used) FT_ATOMIC_STORE_SSIZE_RELAXED(mp->ma_used, used)
  |  |  ------------------
  |  |  |  |  194|      7|#define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) value = new_value
  |  |  ------------------
  ------------------
 1928|      7|    }
 1929|      0|    else {
 1930|      0|        _PyDict_NotifyEvent(PyDict_EVENT_MODIFIED, mp, key, value);
 1931|      0|        STORE_SPLIT_VALUE(mp, ix, Py_NewRef(value));
  ------------------
  |  |  317|      0|#define STORE_SPLIT_VALUE(mp, idx, value) FT_ATOMIC_STORE_PTR_RELEASE(mp->ma_values->values[idx], value)
  |  |  ------------------
  |  |  |  |  164|      0|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  |  |  ------------------
  ------------------
 1932|       |        // old_value should be DECREFed after GC track checking is done, if not, it could raise a segmentation fault,
 1933|       |        // when dict only holds the strong reference to value in ep->me_value.
 1934|      0|        Py_DECREF(old_value);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1935|      0|    }
 1936|       |    ASSERT_CONSISTENT(mp);
  ------------------
  |  |  653|      7|#  define ASSERT_CONSISTENT(op) assert(_PyDict_CheckConsistency((PyObject *)(op), 0))
  ------------------
  |  Branch (1936:5): [True: 7, False: 0]
  ------------------
 1937|      7|}
_PyDict_FromItems:
 2308|    197|{
 2309|    197|    bool unicode = true;
 2310|    197|    PyObject *const *ks = keys;
 2311|       |
 2312|    338|    for (Py_ssize_t i = 0; i < length; i++) {
  ------------------
  |  Branch (2312:28): [True: 141, False: 197]
  ------------------
 2313|    141|        if (!PyUnicode_CheckExact(*ks)) {
  ------------------
  |  |  104|    141|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  ------------------
  |  |  |  |  215|    141|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    141|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    141|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2313:13): [True: 0, False: 141]
  ------------------
 2314|      0|            unicode = false;
 2315|      0|            break;
 2316|      0|        }
 2317|    141|        ks += keys_offset;
 2318|    141|    }
 2319|       |
 2320|    197|    PyObject *dict = dict_new_presized(length, unicode);
 2321|    197|    if (dict == NULL) {
  ------------------
  |  Branch (2321:9): [True: 0, False: 197]
  ------------------
 2322|      0|        return NULL;
 2323|      0|    }
 2324|       |
 2325|    197|    ks = keys;
 2326|    197|    PyObject *const *vs = values;
 2327|       |
 2328|    338|    for (Py_ssize_t i = 0; i < length; i++) {
  ------------------
  |  Branch (2328:28): [True: 141, False: 197]
  ------------------
 2329|    141|        PyObject *key = *ks;
 2330|    141|        PyObject *value = *vs;
 2331|    141|        if (setitem_lock_held((PyDictObject *)dict, key, value) < 0) {
  ------------------
  |  Branch (2331:13): [True: 0, False: 141]
  ------------------
 2332|      0|            Py_DECREF(dict);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2333|      0|            return NULL;
 2334|      0|        }
 2335|    141|        ks += keys_offset;
 2336|    141|        vs += values_offset;
 2337|    141|    }
 2338|       |
 2339|    197|    return dict;
 2340|    197|}
PyDict_GetItem:
 2398|     48|{
 2399|     48|    return dict_getitem(op, key,
 2400|     48|            "Exception ignored in PyDict_GetItem(); consider using "
 2401|     48|            "PyDict_GetItemRef() or PyDict_GetItemWithError()");
 2402|     48|}
_PyDict_LookupIndexAndValue:
 2427|    293|{
 2428|       |    // TODO: Thread safety
 2429|    293|    assert(PyDict_CheckExact((PyObject*)mp));
  ------------------
  |  Branch (2429:5): [True: 293, False: 0]
  ------------------
 2430|    293|    assert(PyUnicode_CheckExact(key));
  ------------------
  |  Branch (2430:5): [True: 293, False: 0]
  ------------------
 2431|       |
 2432|    293|    Py_hash_t hash = _PyObject_HashFast(key);
 2433|    293|    if (hash == -1) {
  ------------------
  |  Branch (2433:9): [True: 0, False: 293]
  ------------------
 2434|      0|        dict_unhashable_type((PyObject*)mp, key);
 2435|      0|        return -1;
 2436|      0|    }
 2437|       |
 2438|    293|    return _Py_dict_lookup(mp, key, hash, value);
 2439|    293|}
_PyDict_GetItemRef_KnownHash:
 2503|  4.63k|{
 2504|  4.63k|    PyObject *value;
 2505|       |#ifdef Py_GIL_DISABLED
 2506|       |    Py_ssize_t ix = _Py_dict_lookup_threadsafe(op, key, hash, &value);
 2507|       |#else
 2508|  4.63k|    Py_ssize_t ix = _Py_dict_lookup(op, key, hash, &value);
 2509|  4.63k|#endif
 2510|  4.63k|    assert(ix >= 0 || value == NULL);
  ------------------
  |  Branch (2510:5): [True: 3.70k, False: 929]
  |  Branch (2510:5): [True: 929, False: 0]
  ------------------
 2511|  4.63k|    if (ix == DKIX_ERROR) {
  ------------------
  |  |  186|  4.63k|#define DKIX_ERROR (-3)
  ------------------
  |  Branch (2511:9): [True: 0, False: 4.63k]
  ------------------
 2512|      0|        *result = NULL;
 2513|      0|        return -1;
 2514|      0|    }
 2515|  4.63k|    if (value == NULL) {
  ------------------
  |  Branch (2515:9): [True: 932, False: 3.70k]
  ------------------
 2516|    932|        *result = NULL;
 2517|    932|        return 0;  // missing key
 2518|    932|    }
 2519|       |#ifdef Py_GIL_DISABLED
 2520|       |    *result = value;
 2521|       |#else
 2522|  3.70k|    *result = Py_NewRef(value);
  ------------------
  |  |  550|  3.70k|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|  3.70k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  3.70k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2523|  3.70k|#endif
 2524|  3.70k|    return 1;  // key is present
 2525|  4.63k|}
PyDict_GetItemRef:
 2529|  4.63k|{
 2530|  4.63k|    if (!PyAnyDict_Check(op)) {
  ------------------
  |  |   43|  4.63k|    (PyDict_Check(ob) || PyFrozenDict_Check(ob))
  |  |  ------------------
  |  |  |  |   18|  4.63k|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|  9.27k|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (760:41): [True: 4.63k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (PyDict_Check(ob) || PyFrozenDict_Check(ob))
  |  |  ------------------
  |  |  |  |   37|      0|#define PyFrozenDict_Check(op) PyObject_TypeCheck((op), &PyFrozenDict_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |  378|      0|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (378:40): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2531|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
 2532|      0|        *result = NULL;
 2533|      0|        return -1;
 2534|      0|    }
 2535|       |
 2536|  4.63k|    Py_hash_t hash = _PyObject_HashFast(key);
 2537|  4.63k|    if (hash == -1) {
  ------------------
  |  Branch (2537:9): [True: 0, False: 4.63k]
  ------------------
 2538|      0|        dict_unhashable_type(op, key);
 2539|      0|        *result = NULL;
 2540|      0|        return -1;
 2541|      0|    }
 2542|       |
 2543|  4.63k|    return _PyDict_GetItemRef_KnownHash((PyDictObject *)op, key, hash, result);
 2544|  4.63k|}
_PyDict_GetItemRef_Unicode_LockHeld:
 2548|     34|{
 2549|     34|    ASSERT_DICT_LOCKED(op);
 2550|     34|    assert(PyUnicode_CheckExact(key));
  ------------------
  |  Branch (2550:5): [True: 34, False: 0]
  ------------------
 2551|       |
 2552|     34|    Py_hash_t hash = _PyObject_HashFast(key);
 2553|     34|    if (hash == -1) {
  ------------------
  |  Branch (2553:9): [True: 0, False: 34]
  ------------------
 2554|      0|        dict_unhashable_type((PyObject*)op, key);
 2555|      0|        *result = NULL;
 2556|      0|        return -1;
 2557|      0|    }
 2558|       |
 2559|     34|    PyObject *value;
 2560|     34|    Py_ssize_t ix = _Py_dict_lookup(op, key, hash, &value);
 2561|     34|    assert(ix >= 0 || value == NULL);
  ------------------
  |  Branch (2561:5): [True: 0, False: 34]
  |  Branch (2561:5): [True: 34, False: 0]
  ------------------
 2562|     34|    if (ix == DKIX_ERROR) {
  ------------------
  |  |  186|     34|#define DKIX_ERROR (-3)
  ------------------
  |  Branch (2562:9): [True: 0, False: 34]
  ------------------
 2563|      0|        *result = NULL;
 2564|      0|        return -1;
 2565|      0|    }
 2566|     34|    if (value == NULL) {
  ------------------
  |  Branch (2566:9): [True: 34, False: 0]
  ------------------
 2567|     34|        *result = NULL;
 2568|     34|        return 0;  // missing key
 2569|     34|    }
 2570|      0|    *result = Py_NewRef(value);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2571|      0|    return 1;  // key is present
 2572|     34|}
PyDict_GetItemWithError:
 2580|    665|{
 2581|    665|    Py_ssize_t ix; (void)ix;
 2582|    665|    Py_hash_t hash;
 2583|    665|    PyDictObject*mp = (PyDictObject *)op;
 2584|    665|    PyObject *value;
 2585|       |
 2586|    665|    if (!PyAnyDict_Check(op)) {
  ------------------
  |  |   43|    665|    (PyDict_Check(ob) || PyFrozenDict_Check(ob))
  |  |  ------------------
  |  |  |  |   18|    665|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|  1.33k|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (760:41): [True: 665, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (PyDict_Check(ob) || PyFrozenDict_Check(ob))
  |  |  ------------------
  |  |  |  |   37|      0|#define PyFrozenDict_Check(op) PyObject_TypeCheck((op), &PyFrozenDict_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |  378|      0|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (378:40): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2587|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
 2588|      0|        return NULL;
 2589|      0|    }
 2590|    665|    hash = _PyObject_HashFast(key);
 2591|    665|    if (hash == -1) {
  ------------------
  |  Branch (2591:9): [True: 0, False: 665]
  ------------------
 2592|      0|        dict_unhashable_type(op, key);
 2593|      0|        return NULL;
 2594|      0|    }
 2595|       |
 2596|       |#ifdef Py_GIL_DISABLED
 2597|       |    ix = _Py_dict_lookup_threadsafe(mp, key, hash, &value);
 2598|       |    Py_XDECREF(value);
 2599|       |#else
 2600|    665|    ix = _Py_dict_lookup(mp, key, hash, &value);
 2601|    665|#endif
 2602|    665|    assert(ix >= 0 || value == NULL);
  ------------------
  |  Branch (2602:5): [True: 225, False: 440]
  |  Branch (2602:5): [True: 440, False: 0]
  ------------------
 2603|    665|    return value;  // borrowed reference
 2604|    665|}
_PyDict_LoadGlobalStackRef:
 2669|    949|{
 2670|    949|    Py_ssize_t ix;
 2671|    949|    Py_hash_t hash;
 2672|       |
 2673|    949|    hash = _PyObject_HashFast(key);
 2674|    949|    if (hash == -1) {
  ------------------
  |  Branch (2674:9): [True: 0, False: 949]
  ------------------
 2675|      0|        *res = PyStackRef_NULL;
 2676|      0|        return;
 2677|      0|    }
 2678|       |
 2679|       |    /* namespace 1: globals */
 2680|    949|    ix = _Py_dict_lookup_threadsafe_stackref(globals, key, hash, res);
 2681|    949|    if (ix == DKIX_ERROR) {
  ------------------
  |  |  186|    949|#define DKIX_ERROR (-3)
  ------------------
  |  Branch (2681:9): [True: 0, False: 949]
  ------------------
 2682|      0|        return;
 2683|      0|    }
 2684|    949|    if (ix != DKIX_EMPTY && !PyStackRef_IsNull(*res)) {
  ------------------
  |  |  184|  1.89k|#define DKIX_EMPTY (-1)
  ------------------
                  if (ix != DKIX_EMPTY && !PyStackRef_IsNull(*res)) {
  ------------------
  |  |  470|    437|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  ------------------
  |  |  |  |  467|    437|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    437|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2684:9): [True: 437, False: 512]
  |  Branch (2684:29): [True: 437, False: 0]
  ------------------
 2685|    437|        return;
 2686|    437|    }
 2687|       |
 2688|       |    /* namespace 2: builtins */
 2689|    512|    ix = _Py_dict_lookup_threadsafe_stackref(builtins, key, hash, res);
 2690|       |    assert(ix >= 0 || PyStackRef_IsNull(*res));
  ------------------
  |  Branch (2690:5): [True: 512, False: 0]
  |  Branch (2690:5): [True: 0, False: 0]
  ------------------
 2691|    512|}
_PyDict_LoadBuiltinsFromGlobals:
 2695|    752|{
 2696|    752|    if (!PyAnyDict_Check(globals)) {
  ------------------
  |  |   43|    752|    (PyDict_Check(ob) || PyFrozenDict_Check(ob))
  |  |  ------------------
  |  |  |  |   18|    752|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|  1.50k|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (760:41): [True: 752, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (PyDict_Check(ob) || PyFrozenDict_Check(ob))
  |  |  ------------------
  |  |  |  |   37|      0|#define PyFrozenDict_Check(op) PyObject_TypeCheck((op), &PyFrozenDict_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |  378|      0|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (378:40): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2697|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
 2698|      0|        return NULL;
 2699|      0|    }
 2700|       |
 2701|    752|    PyDictObject *mp = (PyDictObject *)globals;
 2702|    752|    PyObject *key = &_Py_ID(__builtins__);
  ------------------
  |  |  917|    752|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|    752|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|    752|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2703|    752|    Py_hash_t hash = unicode_get_hash(key);
 2704|       |
 2705|       |    // Use the stackref variant to avoid reference count contention on the
 2706|       |    // builtins module in the free threading build. It's important not to
 2707|       |    // make any escaping calls between the lookup and the `PyStackRef_CLOSE()`
 2708|       |    // because the `ref` is not visible to the GC.
 2709|    752|    _PyStackRef ref;
 2710|    752|    Py_ssize_t ix = _Py_dict_lookup_threadsafe_stackref(mp, key, hash, &ref);
 2711|    752|    if (ix == DKIX_ERROR) {
  ------------------
  |  |  186|    752|#define DKIX_ERROR (-3)
  ------------------
  |  Branch (2711:9): [True: 0, False: 752]
  ------------------
 2712|      0|        return NULL;
 2713|      0|    }
 2714|    752|    if (PyStackRef_IsNull(ref)) {
  ------------------
  |  |  470|    752|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  ------------------
  |  |  |  |  467|    752|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    752|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (470:32): [True: 0, False: 752]
  |  |  ------------------
  ------------------
 2715|      0|        return Py_NewRef(PyEval_GetBuiltins());
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2716|      0|    }
 2717|    752|    PyObject *builtins = PyStackRef_AsPyObjectBorrow(ref);
 2718|    752|    if (PyModule_Check(builtins)) {
  ------------------
  |  |   12|    752|#define PyModule_Check(op) PyObject_TypeCheck((op), &PyModule_Type)
  |  |  ------------------
  |  |  |  |  378|    752|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    752|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    752|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (378:40): [True: 0, False: 752]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2719|      0|        builtins = _PyModule_GetDict(builtins);
 2720|      0|        assert(builtins != NULL);
  ------------------
  |  Branch (2720:9): [True: 0, False: 0]
  ------------------
 2721|      0|    }
 2722|    752|    _Py_INCREF_BUILTINS(builtins);
  ------------------
  |  |  386|    752|#  define _Py_INCREF_BUILTINS Py_INCREF
  |  |  ------------------
  |  |  |  |  310|    752|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    752|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    752|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2723|    752|    PyStackRef_CLOSE(ref);
 2724|    752|    return builtins;
 2725|    752|}
_PyDict_SetItem_Take2:
 2763|  5.87k|{
 2764|  5.87k|    int res;
 2765|  5.87k|    Py_BEGIN_CRITICAL_SECTION(mp);
  ------------------
  |  |   51|  5.87k|    {
  ------------------
 2766|  5.87k|    res = setitem_take2_lock_held(mp, key, value);
 2767|  5.87k|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|  5.87k|    }
  ------------------
 2768|  5.87k|    return res;
 2769|  5.87k|}
PyDict_SetItem:
 2789|  5.43k|{
 2790|  5.43k|    assert(key);
  ------------------
  |  Branch (2790:5): [True: 5.43k, False: 0]
  ------------------
 2791|  5.43k|    assert(value);
  ------------------
  |  Branch (2791:5): [True: 5.43k, False: 0]
  ------------------
 2792|       |
 2793|  5.43k|    if (!PyDict_Check(op)) {
  ------------------
  |  |   18|  5.43k|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|  5.43k|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (2793:9): [True: 0, False: 5.43k]
  ------------------
 2794|      0|        if (PyFrozenDict_Check(op)) {
  ------------------
  |  |   37|      0|#define PyFrozenDict_Check(op) PyObject_TypeCheck((op), &PyFrozenDict_Type)
  |  |  ------------------
  |  |  |  |  378|      0|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (378:40): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2795|      0|            frozendict_does_not_support("assignment");
  ------------------
  |  | 2728|      0|    PyErr_SetString(PyExc_TypeError, "frozendict object does " \
  |  | 2729|      0|                    "not support item " WHAT)
  ------------------
 2796|      0|        }
 2797|      0|        else {
 2798|      0|            PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
 2799|      0|        }
 2800|      0|        return -1;
 2801|      0|    }
 2802|       |
 2803|  5.43k|    return _PyDict_SetItem_Take2((PyDictObject *)op,
 2804|  5.43k|                                 Py_NewRef(key), Py_NewRef(value));
  ------------------
  |  |  550|  5.43k|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|  5.43k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  5.43k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                                               Py_NewRef(key), Py_NewRef(value));
  ------------------
  |  |  550|  5.43k|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|  5.43k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  5.43k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2805|  5.43k|}
PyDict_DelItem:
 2926|    221|{
 2927|    221|    assert(key);
  ------------------
  |  Branch (2927:5): [True: 221, False: 0]
  ------------------
 2928|    221|    Py_hash_t hash = _PyObject_HashFast(key);
 2929|    221|    if (hash == -1) {
  ------------------
  |  Branch (2929:9): [True: 0, False: 221]
  ------------------
 2930|      0|        dict_unhashable_type(op, key);
 2931|      0|        return -1;
 2932|      0|    }
 2933|       |
 2934|    221|    return _PyDict_DelItem_KnownHash(op, key, hash);
 2935|    221|}
_PyDict_DelItem_KnownHash_LockHeld:
 2939|    221|{
 2940|    221|    if (!PyDict_Check(op)) {
  ------------------
  |  |   18|    221|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|    221|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (2940:9): [True: 0, False: 221]
  ------------------
 2941|      0|        if (PyFrozenDict_Check(op)) {
  ------------------
  |  |   37|      0|#define PyFrozenDict_Check(op) PyObject_TypeCheck((op), &PyFrozenDict_Type)
  |  |  ------------------
  |  |  |  |  378|      0|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (378:40): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2942|      0|            frozendict_does_not_support("deletion");
  ------------------
  |  | 2728|      0|    PyErr_SetString(PyExc_TypeError, "frozendict object does " \
  |  | 2729|      0|                    "not support item " WHAT)
  ------------------
 2943|      0|        }
 2944|      0|        else {
 2945|      0|            PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
 2946|      0|        }
 2947|      0|        return -1;
 2948|      0|    }
 2949|       |
 2950|    221|    Py_ssize_t ix;
 2951|    221|    PyObject *old_value;
 2952|    221|    PyDictObject *mp = (PyDictObject *)op;
 2953|    221|    assert(can_modify_dict(mp));
  ------------------
  |  Branch (2953:5): [True: 221, False: 0]
  ------------------
 2954|       |
 2955|    221|    assert(key);
  ------------------
  |  Branch (2955:5): [True: 221, False: 0]
  ------------------
 2956|    221|    assert(hash != -1);
  ------------------
  |  Branch (2956:5): [True: 221, False: 0]
  ------------------
 2957|    221|    ix = _Py_dict_lookup(mp, key, hash, &old_value);
 2958|    221|    if (ix == DKIX_ERROR)
  ------------------
  |  |  186|    221|#define DKIX_ERROR (-3)
  ------------------
  |  Branch (2958:9): [True: 0, False: 221]
  ------------------
 2959|      0|        return -1;
 2960|    221|    if (ix == DKIX_EMPTY || old_value == NULL) {
  ------------------
  |  |  184|    442|#define DKIX_EMPTY (-1)
  ------------------
  |  Branch (2960:9): [True: 0, False: 221]
  |  Branch (2960:29): [True: 0, False: 221]
  ------------------
 2961|      0|        _PyErr_SetKeyError(key);
 2962|      0|        return -1;
 2963|      0|    }
 2964|       |
 2965|    221|    _PyDict_NotifyEvent(PyDict_EVENT_DELETED, mp, key, NULL);
 2966|    221|    delitem_common(mp, hash, ix, old_value);
 2967|    221|    return 0;
 2968|    221|}
_PyDict_DelItem_KnownHash:
 2972|    221|{
 2973|    221|    int res;
 2974|    221|    Py_BEGIN_CRITICAL_SECTION(op);
  ------------------
  |  |   51|    221|    {
  ------------------
 2975|    221|    res = _PyDict_DelItem_KnownHash_LockHeld(op, key, hash);
 2976|    221|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|    221|    }
  ------------------
 2977|    221|    return res;
 2978|    221|}
_PyDict_DelItemIf:
 3026|     30|{
 3027|     30|    assert(PyDict_Check(op));
  ------------------
  |  Branch (3027:5): [True: 30, False: 0]
  ------------------
 3028|     30|    int res;
 3029|     30|    Py_BEGIN_CRITICAL_SECTION(op);
  ------------------
  |  |   51|     30|    {
  ------------------
 3030|     30|    res = delitemif_lock_held(op, key, predicate, arg);
 3031|     30|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|     30|    }
  ------------------
 3032|     30|    return res;
 3033|     30|}
PyDict_Clear:
 3103|      2|{
 3104|      2|    Py_BEGIN_CRITICAL_SECTION(op);
  ------------------
  |  |   51|      2|    {
  ------------------
 3105|      2|    clear_lock_held(op);
 3106|      2|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|      2|    }
  ------------------
 3107|      2|}
_PyDict_Next:
 3117|  2.34k|{
 3118|  2.34k|    Py_ssize_t i;
 3119|  2.34k|    PyDictObject *mp;
 3120|  2.34k|    PyObject *key, *value;
 3121|  2.34k|    Py_hash_t hash;
 3122|       |
 3123|  2.34k|    if (!PyAnyDict_Check(op))
  ------------------
  |  |   43|  2.34k|    (PyDict_Check(ob) || PyFrozenDict_Check(ob))
  |  |  ------------------
  |  |  |  |   18|  2.34k|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|  4.68k|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (760:41): [True: 2.34k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (PyDict_Check(ob) || PyFrozenDict_Check(ob))
  |  |  ------------------
  |  |  |  |   37|      0|#define PyFrozenDict_Check(op) PyObject_TypeCheck((op), &PyFrozenDict_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |  378|      0|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (378:40): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3124|      0|        return 0;
 3125|       |
 3126|  2.34k|    mp = (PyDictObject *)op;
 3127|  2.34k|    i = *ppos;
 3128|  2.34k|    if (_PyDict_HasSplitTable(mp)) {
  ------------------
  |  |   56|  2.34k|#define _PyDict_HasSplitTable(d) ((d)->ma_values != NULL)
  |  |  ------------------
  |  |  |  Branch (56:34): [True: 0, False: 2.34k]
  |  |  ------------------
  ------------------
 3129|      0|        assert(mp->ma_used <= SHARED_KEYS_MAX_SIZE);
  ------------------
  |  Branch (3129:9): [True: 0, False: 0]
  ------------------
 3130|      0|        if (i < 0 || i >= mp->ma_used)
  ------------------
  |  Branch (3130:13): [True: 0, False: 0]
  |  Branch (3130:22): [True: 0, False: 0]
  ------------------
 3131|      0|            return 0;
 3132|      0|        int index = get_index_from_order(mp, i);
 3133|      0|        value = mp->ma_values->values[index];
 3134|      0|        key = LOAD_SHARED_KEY(DK_UNICODE_ENTRIES(mp->ma_keys)[index].me_key);
  ------------------
  |  |  249|      0|#define LOAD_SHARED_KEY(key) key
  ------------------
 3135|      0|        hash = unicode_get_hash(key);
 3136|      0|        assert(value != NULL);
  ------------------
  |  Branch (3136:9): [True: 0, False: 0]
  ------------------
 3137|      0|    }
 3138|  2.34k|    else {
 3139|  2.34k|        Py_ssize_t n = mp->ma_keys->dk_nentries;
 3140|  2.34k|        if (i < 0 || i >= n)
  ------------------
  |  Branch (3140:13): [True: 0, False: 2.34k]
  |  Branch (3140:22): [True: 129, False: 2.21k]
  ------------------
 3141|    129|            return 0;
 3142|  2.21k|        if (DK_IS_UNICODE(mp->ma_keys)) {
  ------------------
  |  |  282|  2.21k|#define DK_IS_UNICODE(dk) ((dk)->dk_kind != DICT_KEYS_GENERAL)
  |  |  ------------------
  |  |  |  Branch (282:27): [True: 2.21k, False: 0]
  |  |  ------------------
  ------------------
 3143|  2.21k|            PyDictUnicodeEntry *entry_ptr = &DK_UNICODE_ENTRIES(mp->ma_keys)[i];
 3144|  2.35k|            while (i < n && entry_ptr->me_value == NULL) {
  ------------------
  |  Branch (3144:20): [True: 2.33k, False: 14]
  |  Branch (3144:29): [True: 139, False: 2.19k]
  ------------------
 3145|    139|                entry_ptr++;
 3146|    139|                i++;
 3147|    139|            }
 3148|  2.21k|            if (i >= n)
  ------------------
  |  Branch (3148:17): [True: 14, False: 2.19k]
  ------------------
 3149|     14|                return 0;
 3150|  2.19k|            key = entry_ptr->me_key;
 3151|  2.19k|            hash = unicode_get_hash(entry_ptr->me_key);
 3152|  2.19k|            value = entry_ptr->me_value;
 3153|  2.19k|        }
 3154|      0|        else {
 3155|      0|            PyDictKeyEntry *entry_ptr = &DK_ENTRIES(mp->ma_keys)[i];
 3156|      0|            while (i < n && entry_ptr->me_value == NULL) {
  ------------------
  |  Branch (3156:20): [True: 0, False: 0]
  |  Branch (3156:29): [True: 0, False: 0]
  ------------------
 3157|      0|                entry_ptr++;
 3158|      0|                i++;
 3159|      0|            }
 3160|      0|            if (i >= n)
  ------------------
  |  Branch (3160:17): [True: 0, False: 0]
  ------------------
 3161|      0|                return 0;
 3162|      0|            key = entry_ptr->me_key;
 3163|      0|            hash = entry_ptr->me_hash;
 3164|      0|            value = entry_ptr->me_value;
 3165|      0|        }
 3166|  2.21k|    }
 3167|  2.19k|    *ppos = i+1;
 3168|  2.19k|    if (pkey)
  ------------------
  |  Branch (3168:9): [True: 2.19k, False: 0]
  ------------------
 3169|  2.19k|        *pkey = key;
 3170|  2.19k|    if (pvalue)
  ------------------
  |  Branch (3170:9): [True: 1.32k, False: 873]
  ------------------
 3171|  1.32k|        *pvalue = value;
 3172|  2.19k|    if (phash)
  ------------------
  |  Branch (3172:9): [True: 334, False: 1.86k]
  ------------------
 3173|    334|        *phash = hash;
 3174|  2.19k|    return 1;
 3175|  2.34k|}
PyDict_Next:
 3197|  1.10k|{
 3198|       |    return _PyDict_Next(op, ppos, pkey, pvalue, NULL);
 3199|  1.10k|}
_PyDict_Pop_KnownHash:
 3206|     67|{
 3207|     67|    assert(PyDict_Check(mp));
  ------------------
  |  Branch (3207:5): [True: 67, False: 0]
  ------------------
 3208|     67|    assert(can_modify_dict(mp));
  ------------------
  |  Branch (3208:5): [True: 67, False: 0]
  ------------------
 3209|       |
 3210|     67|    if (mp->ma_used == 0) {
  ------------------
  |  Branch (3210:9): [True: 0, False: 67]
  ------------------
 3211|      0|        if (result) {
  ------------------
  |  Branch (3211:13): [True: 0, False: 0]
  ------------------
 3212|      0|            *result = NULL;
 3213|      0|        }
 3214|      0|        return 0;
 3215|      0|    }
 3216|       |
 3217|     67|    PyObject *old_value;
 3218|     67|    Py_ssize_t ix = _Py_dict_lookup(mp, key, hash, &old_value);
 3219|     67|    if (ix == DKIX_ERROR) {
  ------------------
  |  |  186|     67|#define DKIX_ERROR (-3)
  ------------------
  |  Branch (3219:9): [True: 0, False: 67]
  ------------------
 3220|      0|        if (result) {
  ------------------
  |  Branch (3220:13): [True: 0, False: 0]
  ------------------
 3221|      0|            *result = NULL;
 3222|      0|        }
 3223|      0|        return -1;
 3224|      0|    }
 3225|       |
 3226|     67|    if (ix == DKIX_EMPTY || old_value == NULL) {
  ------------------
  |  |  184|    134|#define DKIX_EMPTY (-1)
  ------------------
  |  Branch (3226:9): [True: 28, False: 39]
  |  Branch (3226:29): [True: 0, False: 39]
  ------------------
 3227|     28|        if (result) {
  ------------------
  |  Branch (3227:13): [True: 27, False: 1]
  ------------------
 3228|     27|            *result = NULL;
 3229|     27|        }
 3230|     28|        return 0;
 3231|     28|    }
 3232|       |
 3233|     67|    assert(old_value != NULL);
  ------------------
  |  Branch (3233:5): [True: 39, False: 0]
  ------------------
 3234|     39|    _PyDict_NotifyEvent(PyDict_EVENT_DELETED, mp, key, NULL);
 3235|     39|    delitem_common(mp, hash, ix, Py_NewRef(old_value));
  ------------------
  |  |  550|     39|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     39|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     39|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3236|       |
 3237|     39|    ASSERT_CONSISTENT(mp);
  ------------------
  |  |  653|     39|#  define ASSERT_CONSISTENT(op) assert(_PyDict_CheckConsistency((PyObject *)(op), 0))
  ------------------
  |  Branch (3237:5): [True: 39, False: 0]
  ------------------
 3238|     39|    if (result) {
  ------------------
  |  Branch (3238:9): [True: 39, False: 0]
  ------------------
 3239|     39|        *result = old_value;
 3240|     39|    }
 3241|      0|    else {
 3242|      0|        Py_DECREF(old_value);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3243|      0|    }
 3244|     39|    return 1;
 3245|     39|}
PyDict_Pop:
 3285|     67|{
 3286|     67|    int err;
 3287|     67|    Py_BEGIN_CRITICAL_SECTION(op);
  ------------------
  |  |   51|     67|    {
  ------------------
 3288|     67|    err = pop_lock_held(op, key, result);
 3289|     67|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|     67|    }
  ------------------
 3290|       |
 3291|     67|    return err;
 3292|     67|}
_PyDict_SubscriptKnownHash:
 3679|    160|{
 3680|    160|    PyDictObject *mp = (PyDictObject *)self;
 3681|    160|    Py_ssize_t ix;
 3682|    160|    PyObject *value;
 3683|       |
 3684|    160|    ix = _Py_dict_lookup_threadsafe(mp, key, hash, &value);
 3685|    160|    if (ix == DKIX_ERROR)
  ------------------
  |  |  186|    160|#define DKIX_ERROR (-3)
  ------------------
  |  Branch (3685:9): [True: 0, False: 160]
  ------------------
 3686|      0|        return NULL;
 3687|    160|    if (ix == DKIX_EMPTY || value == NULL) {
  ------------------
  |  |  184|    320|#define DKIX_EMPTY (-1)
  ------------------
  |  Branch (3687:9): [True: 59, False: 101]
  |  Branch (3687:29): [True: 0, False: 101]
  ------------------
 3688|     59|        if (!PyAnyDict_CheckExact(mp)) {
  ------------------
  |  |   41|     59|    (PyDict_CheckExact(ob) || PyFrozenDict_CheckExact(ob))
  |  |  ------------------
  |  |  |  |   19|     59|#define PyDict_CheckExact(op) Py_IS_TYPE((op), &PyDict_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |  215|    118|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|     59|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     59|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (215:32): [True: 59, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (PyDict_CheckExact(ob) || PyFrozenDict_CheckExact(ob))
  |  |  ------------------
  |  |  |  |   38|      0|#define PyFrozenDict_CheckExact(op) Py_IS_TYPE((op), &PyFrozenDict_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3689|       |            /* Look up __missing__ method if we're a subclass. */
 3690|      0|            PyObject *missing, *res;
 3691|      0|            missing = _PyObject_LookupSpecial(
 3692|      0|                    (PyObject *)mp, &_Py_ID(__missing__));
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3693|      0|            if (missing != NULL) {
  ------------------
  |  Branch (3693:17): [True: 0, False: 0]
  ------------------
 3694|      0|                res = PyObject_CallOneArg(missing, key);
 3695|      0|                Py_DECREF(missing);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3696|      0|                return res;
 3697|      0|            }
 3698|      0|            else if (PyErr_Occurred())
  ------------------
  |  Branch (3698:22): [True: 0, False: 0]
  ------------------
 3699|      0|                return NULL;
 3700|      0|        }
 3701|     59|        _PyErr_SetKeyError(key);
 3702|     59|        return NULL;
 3703|     59|    }
 3704|    101|    return value;
 3705|    160|}
_PyDict_Subscript:
 3709|    160|{
 3710|    160|    Py_hash_t hash = _PyObject_HashFast(key);
 3711|    160|    if (hash == -1) {
  ------------------
  |  Branch (3711:9): [True: 0, False: 160]
  ------------------
 3712|      0|        dict_unhashable_type(self, key);
 3713|      0|        return NULL;
 3714|      0|    }
 3715|    160|    return _PyDict_SubscriptKnownHash(self, key, hash);
 3716|    160|}
_PyDict_StoreSubscript:
 3720|     62|{
 3721|     62|    if (w == NULL)
  ------------------
  |  Branch (3721:9): [True: 37, False: 25]
  ------------------
 3722|     37|        return PyDict_DelItem(mp, v);
 3723|     25|    else
 3724|     25|        return PyDict_SetItem(mp, v, w);
 3725|     62|}
PyDict_Keys:
 3773|      4|{
 3774|      4|    PyObject *res;
 3775|      4|    Py_BEGIN_CRITICAL_SECTION(dict);
  ------------------
  |  |   51|      4|    {
  ------------------
 3776|      4|    res = keys_lock_held(dict);
 3777|      4|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|      4|    }
  ------------------
 3778|       |
 3779|      4|    return res;
 3780|      4|}
PyDict_Update:
 4298|     38|{
 4299|       |    return dict_merge_api(a, b, 1, NULL);
 4300|     38|}
_PyDict_MergeUniq:
 4311|     84|{
 4312|     84|    return dict_merge_api(a, b, 2, dupkey);
 4313|     84|}
PyDict_Copy:
 4460|     89|{
 4461|     89|    if (o == NULL || !PyDict_Check(o)) {
  ------------------
  |  |   18|     89|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     89|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (4461:9): [True: 0, False: 89]
  |  Branch (4461:22): [True: 0, False: 89]
  ------------------
 4462|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
 4463|      0|        return NULL;
 4464|      0|    }
 4465|       |
 4466|     89|    PyObject *res;
 4467|     89|    Py_BEGIN_CRITICAL_SECTION(o);
  ------------------
  |  |   51|     89|    {
  ------------------
 4468|     89|    res = copy_lock_held(o, 0);
 4469|     89|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|     89|    }
  ------------------
 4470|     89|    return res;
 4471|     89|}
_PyDict_CopyAsDict:
 4496|     87|{
 4497|     87|    assert(PyAnyDict_Check(o));
  ------------------
  |  Branch (4497:5): [True: 87, False: 0]
  |  Branch (4497:5): [True: 0, False: 0]
  ------------------
 4498|       |
 4499|     87|    PyObject *res;
 4500|     87|    if (PyFrozenDict_Check(o)) {
  ------------------
  |  |   37|     87|#define PyFrozenDict_Check(op) PyObject_TypeCheck((op), &PyFrozenDict_Type)
  |  |  ------------------
  |  |  |  |  378|     87|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     87|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     87|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (378:40): [True: 0, False: 87]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4501|      0|        res = copy_lock_held(o, 0);
 4502|      0|    }
 4503|     87|    else {
 4504|     87|        Py_BEGIN_CRITICAL_SECTION(o);
  ------------------
  |  |   51|     87|    {
  ------------------
 4505|     87|        res = copy_lock_held(o, 0);
 4506|     87|        Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|     87|    }
  ------------------
 4507|     87|    }
 4508|     87|    return res;
 4509|     87|}
PyDict_SetDefaultRef:
 4780|  6.09k|{
 4781|  6.09k|    int res;
 4782|  6.09k|    Py_BEGIN_CRITICAL_SECTION(d);
  ------------------
  |  |   51|  6.09k|    {
  ------------------
 4783|  6.09k|    res = dict_setdefault_ref_lock_held(d, key, default_value, result, 1);
 4784|  6.09k|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|  6.09k|    }
  ------------------
 4785|  6.09k|    return res;
 4786|  6.09k|}
_PyDict_KeysSize:
 5032|    193|{
 5033|    193|    size_t es = (keys->dk_kind == DICT_KEYS_GENERAL
  ------------------
  |  Branch (5033:18): [True: 0, False: 193]
  ------------------
 5034|    193|                 ? sizeof(PyDictKeyEntry) : sizeof(PyDictUnicodeEntry));
 5035|    193|    size_t size = sizeof(PyDictKeysObject);
 5036|    193|    size += (size_t)1 << keys->dk_log2_index_bytes;
 5037|    193|    size += USABLE_FRACTION((size_t)DK_SIZE(keys)) * es;
  ------------------
  |  |  575|    193|#define USABLE_FRACTION(n) (((n) << 1)/3)
  ------------------
 5038|    193|    return size;
 5039|    193|}
PyDict_Contains:
 5151|  2.45k|{
 5152|  2.45k|    if (!PyAnyDict_Check(op)) {
  ------------------
  |  |   43|  2.45k|    (PyDict_Check(ob) || PyFrozenDict_Check(ob))
  |  |  ------------------
  |  |  |  |   18|  2.45k|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|  4.91k|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (760:41): [True: 2.45k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (PyDict_Check(ob) || PyFrozenDict_Check(ob))
  |  |  ------------------
  |  |  |  |   37|      0|#define PyFrozenDict_Check(op) PyObject_TypeCheck((op), &PyFrozenDict_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |  378|      0|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (378:40): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5153|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
 5154|      0|        return -1;
 5155|      0|    }
 5156|       |
 5157|  2.45k|    return dict_contains(op, key);
 5158|  2.45k|}
PyDict_ContainsString:
 5162|      1|{
 5163|      1|    PyObject *key_obj = PyUnicode_FromString(key);
 5164|      1|    if (key_obj == NULL) {
  ------------------
  |  Branch (5164:9): [True: 0, False: 1]
  ------------------
 5165|      0|        return -1;
 5166|      0|    }
 5167|      1|    int res = PyDict_Contains(op, key_obj);
 5168|      1|    Py_DECREF(key_obj);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5169|      1|    return res;
 5170|      1|}
_PyDict_Contains_KnownHash:
 5175|  2.46k|{
 5176|  2.46k|    PyDictObject *mp = _PyAnyDict_CAST(op);
  ------------------
  |  |  311|  2.46k|    (assert(PyAnyDict_Check(op)), _Py_CAST(PyDictObject*, op))
  |  |  ------------------
  |  |  |  |   37|  2.46k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (5176:24): [True: 2.46k, False: 0]
  |  Branch (5176:24): [True: 0, False: 0]
  ------------------
 5177|      0|    PyObject *value;
 5178|  2.46k|    Py_ssize_t ix;
 5179|       |
 5180|       |#ifdef Py_GIL_DISABLED
 5181|       |    ix = _Py_dict_lookup_threadsafe(mp, key, hash, &value);
 5182|       |#else
 5183|  2.46k|    ix = _Py_dict_lookup(mp, key, hash, &value);
 5184|  2.46k|#endif
 5185|  2.46k|    if (ix == DKIX_ERROR)
  ------------------
  |  |  186|  2.46k|#define DKIX_ERROR (-3)
  ------------------
  |  Branch (5185:9): [True: 0, False: 2.46k]
  ------------------
 5186|      0|        return -1;
 5187|  2.46k|    if (ix != DKIX_EMPTY && value != NULL) {
  ------------------
  |  |  184|  4.92k|#define DKIX_EMPTY (-1)
  ------------------
  |  Branch (5187:9): [True: 282, False: 2.18k]
  |  Branch (5187:29): [True: 282, False: 0]
  ------------------
 5188|       |#ifdef Py_GIL_DISABLED
 5189|       |        Py_DECREF(value);
 5190|       |#endif
 5191|    282|        return 1;
 5192|    282|    }
 5193|  2.18k|    return 0;
 5194|  2.46k|}
PyDict_GetItemStringRef:
 5407|     95|{
 5408|     95|    PyObject *key_obj = PyUnicode_FromString(key);
 5409|     95|    if (key_obj == NULL) {
  ------------------
  |  Branch (5409:9): [True: 0, False: 95]
  ------------------
 5410|      0|        *result = NULL;
 5411|      0|        return -1;
 5412|      0|    }
 5413|     95|    int res = PyDict_GetItemRef(v, key_obj, result);
 5414|     95|    Py_DECREF(key_obj);
  ------------------
  |  |  430|     95|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     95|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     95|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5415|     95|    return res;
 5416|     95|}
PyDict_SetItemString:
 5420|    842|{
 5421|    842|    PyObject *kv;
 5422|    842|    int err;
 5423|    842|    kv = PyUnicode_FromString(key);
 5424|    842|    if (kv == NULL)
  ------------------
  |  Branch (5424:9): [True: 0, False: 842]
  ------------------
 5425|      0|        return -1;
 5426|    842|    PyInterpreterState *interp = _PyInterpreterState_GET();
 5427|    842|    _PyUnicode_InternImmortal(interp, &kv); /* XXX Should we really? */
 5428|    842|    err = PyDict_SetItem(v, kv, item);
 5429|    842|    Py_DECREF(kv);
  ------------------
  |  |  430|    842|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    842|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    842|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5430|    842|    return err;
 5431|    842|}
_PyDictView_New:
 6303|     39|{
 6304|     39|    _PyDictViewObject *dv;
 6305|     39|    if (dict == NULL) {
  ------------------
  |  Branch (6305:9): [True: 0, False: 39]
  ------------------
 6306|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
 6307|      0|        return NULL;
 6308|      0|    }
 6309|     39|    if (!PyAnyDict_Check(dict)) {
  ------------------
  |  |   43|     39|    (PyDict_Check(ob) || PyFrozenDict_Check(ob))
  |  |  ------------------
  |  |  |  |   18|     39|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|     78|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (760:41): [True: 39, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (PyDict_Check(ob) || PyFrozenDict_Check(ob))
  |  |  ------------------
  |  |  |  |   37|      0|#define PyFrozenDict_Check(op) PyObject_TypeCheck((op), &PyFrozenDict_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |  378|      0|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (378:40): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6310|       |        /* XXX Get rid of this restriction later */
 6311|      0|        PyErr_Format(PyExc_TypeError,
 6312|      0|                     "%s() requires a dict argument, not '%s'",
 6313|      0|                     type->tp_name, Py_TYPE(dict)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6314|      0|        return NULL;
 6315|      0|    }
 6316|     39|    dv = PyObject_GC_New(_PyDictViewObject, type);
  ------------------
  |  |  181|     39|    _Py_CAST(type*, _PyObject_GC_New(typeobj))
  |  |  ------------------
  |  |  |  |   37|     39|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
 6317|     39|    if (dv == NULL)
  ------------------
  |  Branch (6317:9): [True: 0, False: 39]
  ------------------
 6318|      0|        return NULL;
 6319|     39|    dv->dv_dict = (PyDictObject *)Py_NewRef(dict);
  ------------------
  |  |  550|     39|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     39|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     39|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6320|     39|    _PyObject_GC_TRACK(dv);
  ------------------
  |  |  513|     39|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     39|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     39|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6321|     39|    return (PyObject *)dv;
 6322|     39|}
_PyDict_NewKeysForClass:
 7099|     48|{
 7100|     48|    PyDictKeysObject *keys = new_keys_object(NEXT_LOG2_SHARED_KEYS_MAX_SIZE, 1);
  ------------------
  |  |  244|     48|#define NEXT_LOG2_SHARED_KEYS_MAX_SIZE 6
  ------------------
 7101|     48|    if (keys == NULL) {
  ------------------
  |  Branch (7101:9): [True: 0, False: 48]
  ------------------
 7102|      0|        PyErr_Clear();
 7103|      0|    }
 7104|     48|    else {
 7105|     48|        assert(keys->dk_nentries == 0);
  ------------------
  |  Branch (7105:9): [True: 48, False: 0]
  ------------------
 7106|       |        /* Set to max size+1 as it will shrink by one before each new object */
 7107|     48|        keys->dk_usable = SHARED_KEYS_MAX_SIZE;
  ------------------
  |  |  243|     48|#define SHARED_KEYS_MAX_SIZE 30
  ------------------
 7108|     48|        keys->dk_kind = DICT_KEYS_SPLIT;
 7109|     48|    }
 7110|     48|    if (cls->ht_type.tp_dict) {
  ------------------
  |  Branch (7110:9): [True: 48, False: 0]
  ------------------
 7111|     48|        PyObject *attrs = PyDict_GetItem(cls->ht_type.tp_dict, &_Py_ID(__static_attributes__));
  ------------------
  |  |  917|     48|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     48|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     48|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7112|     48|        if (attrs != NULL && PyTuple_Check(attrs)) {
  ------------------
  |  |   27|     45|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TUPLE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     45|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 45, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (7112:13): [True: 45, False: 3]
  ------------------
 7113|    135|            for (Py_ssize_t i = 0; i < PyTuple_GET_SIZE(attrs); i++) {
  ------------------
  |  |   27|    135|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    135|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    135|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (7113:36): [True: 90, False: 45]
  ------------------
 7114|     90|                PyObject *key = PyTuple_GET_ITEM(attrs, i);
  ------------------
  |  |   29|     90|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|     90|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     90|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (7114:33): [True: 90, False: 0]
  ------------------
 7115|      0|                Py_hash_t hash;
 7116|     90|                if (PyUnicode_CheckExact(key) && (hash = unicode_get_hash(key)) != -1) {
  ------------------
  |  |  104|     90|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  ------------------
  |  |  |  |  215|    180|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     90|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     90|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 90, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (7116:50): [True: 90, False: 0]
  ------------------
 7117|     90|                    if (insert_split_key(keys, key, hash) == DKIX_EMPTY) {
  ------------------
  |  |  184|     90|#define DKIX_EMPTY (-1)
  ------------------
  |  Branch (7117:25): [True: 0, False: 90]
  ------------------
 7118|      0|                        break;
 7119|      0|                    }
 7120|     90|                }
 7121|     90|            }
 7122|     45|        }
 7123|     48|    }
 7124|     48|    return keys;
 7125|     48|}
_PyObject_InitInlineValues:
 7129|    172|{
 7130|    172|    assert(tp->tp_flags & Py_TPFLAGS_HEAPTYPE);
  ------------------
  |  Branch (7130:5): [True: 172, False: 0]
  ------------------
 7131|    172|    assert(tp->tp_flags & Py_TPFLAGS_INLINE_VALUES);
  ------------------
  |  Branch (7131:5): [True: 172, False: 0]
  ------------------
 7132|    172|    assert(tp->tp_flags & Py_TPFLAGS_MANAGED_DICT);
  ------------------
  |  Branch (7132:5): [True: 172, False: 0]
  ------------------
 7133|    172|    PyDictKeysObject *keys = CACHED_KEYS(tp);
  ------------------
  |  |  870|    172|#define CACHED_KEYS(tp) (((PyHeapTypeObject*)tp)->ht_cached_keys)
  ------------------
 7134|    172|    assert(keys != NULL);
  ------------------
  |  Branch (7134:5): [True: 172, False: 0]
  ------------------
 7135|    172|    OBJECT_STAT_INC(inline_values);
  ------------------
  |  |   77|    172|#define OBJECT_STAT_INC(name) ((void)0)
  ------------------
 7136|       |#ifdef Py_GIL_DISABLED
 7137|       |    Py_ssize_t usable = _Py_atomic_load_ssize_relaxed(&keys->dk_usable);
 7138|       |    if (usable > 1) {
 7139|       |        LOCK_KEYS(keys);
 7140|       |        if (keys->dk_usable > 1) {
 7141|       |            _Py_atomic_store_ssize(&keys->dk_usable, keys->dk_usable - 1);
 7142|       |        }
 7143|       |        UNLOCK_KEYS(keys);
 7144|       |    }
 7145|       |#else
 7146|    172|    if (keys->dk_usable > 1) {
  ------------------
  |  Branch (7146:9): [True: 143, False: 29]
  ------------------
 7147|    143|        keys->dk_usable--;
 7148|    143|    }
 7149|    172|#endif
 7150|    172|    size_t size = shared_keys_usable_size(keys);
 7151|    172|    PyDictValues *values = _PyObject_InlineValues(obj);
 7152|    172|    assert(size < 256);
  ------------------
  |  Branch (7152:5): [True: 172, False: 0]
  ------------------
 7153|    172|    values->capacity = (uint8_t)size;
 7154|    172|    values->size = 0;
 7155|    172|    values->embedded = 1;
 7156|    172|    values->valid = 1;
 7157|  3.04k|    for (size_t i = 0; i < size; i++) {
  ------------------
  |  Branch (7157:24): [True: 2.87k, False: 172]
  ------------------
 7158|  2.87k|        values->values[i] = NULL;
 7159|  2.87k|    }
 7160|       |    _PyObject_ManagedDictPointer(obj)->dict = NULL;
 7161|    172|}
_PyDict_SetItem_LockHeld:
 7228|    918|{
 7229|    918|    if (!PyDict_Check(dict)) {
  ------------------
  |  |   18|    918|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|    918|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (7229:9): [True: 0, False: 918]
  ------------------
 7230|      0|        if (PyFrozenDict_Check(dict)) {
  ------------------
  |  |   37|      0|#define PyFrozenDict_Check(op) PyObject_TypeCheck((op), &PyFrozenDict_Type)
  |  |  ------------------
  |  |  |  |  378|      0|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (378:40): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7231|      0|            if (value == NULL) {
  ------------------
  |  Branch (7231:17): [True: 0, False: 0]
  ------------------
 7232|      0|                frozendict_does_not_support("deletion");
  ------------------
  |  | 2728|      0|    PyErr_SetString(PyExc_TypeError, "frozendict object does " \
  |  | 2729|      0|                    "not support item " WHAT)
  ------------------
 7233|      0|            }
 7234|      0|            else {
 7235|      0|                frozendict_does_not_support("assignment");
  ------------------
  |  | 2728|      0|    PyErr_SetString(PyExc_TypeError, "frozendict object does " \
  |  | 2729|      0|                    "not support item " WHAT)
  ------------------
 7236|      0|            }
 7237|      0|        }
 7238|      0|        else {
 7239|      0|            PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
 7240|      0|        }
 7241|      0|        return -1;
 7242|      0|    }
 7243|       |
 7244|    918|    if (value == NULL) {
  ------------------
  |  Branch (7244:9): [True: 0, False: 918]
  ------------------
 7245|      0|        Py_hash_t hash = _PyObject_HashFast(name);
 7246|      0|        if (hash == -1) {
  ------------------
  |  Branch (7246:13): [True: 0, False: 0]
  ------------------
 7247|      0|            dict_unhashable_type((PyObject*)dict, name);
 7248|      0|            return -1;
 7249|      0|        }
 7250|      0|        return _PyDict_DelItem_KnownHash_LockHeld((PyObject *)dict, name, hash);
 7251|    918|    } else {
 7252|    918|        return setitem_lock_held(dict, name, value);
 7253|    918|    }
 7254|    918|}
_PyObject_StoreInstanceAttribute:
 7375|     59|{
 7376|     59|    PyDictValues *values = _PyObject_InlineValues(obj);
 7377|     59|    if (!FT_ATOMIC_LOAD_UINT8(values->valid)) {
  ------------------
  |  |  154|     59|#define FT_ATOMIC_LOAD_UINT8(value) value
  ------------------
  |  Branch (7377:9): [True: 0, False: 59]
  ------------------
 7378|      0|        PyDictObject *dict = _PyObject_GetManagedDict(obj);
 7379|      0|        if (dict == NULL) {
  ------------------
  |  Branch (7379:13): [True: 0, False: 0]
  ------------------
 7380|      0|            dict = (PyDictObject *)PyObject_GenericGetDict(obj, NULL);
 7381|      0|            if (dict == NULL) {
  ------------------
  |  Branch (7381:17): [True: 0, False: 0]
  ------------------
 7382|      0|                return -1;
 7383|      0|            }
 7384|      0|            int res = store_instance_attr_dict(obj, dict, name, value);
 7385|      0|            Py_DECREF(dict);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7386|      0|            return res;
 7387|      0|        }
 7388|      0|        return store_instance_attr_dict(obj, dict, name, value);
 7389|      0|    }
 7390|       |
 7391|       |#ifdef Py_GIL_DISABLED
 7392|       |    // We have a valid inline values, at least for now...  There are two potential
 7393|       |    // races with having the values become invalid.  One is the dictionary
 7394|       |    // being detached from the object.  The other is if someone is inserting
 7395|       |    // into the dictionary directly and therefore causing it to resize.
 7396|       |    //
 7397|       |    // If we haven't materialized the dictionary yet we lock on the object, which
 7398|       |    // will also be used to prevent the dictionary from being materialized while
 7399|       |    // we're doing the insertion.  If we race and the dictionary gets created
 7400|       |    // then we'll need to release the object lock and lock the dictionary to
 7401|       |    // prevent resizing.
 7402|       |    PyDictObject *dict = _PyObject_GetManagedDict(obj);
 7403|       |    if (dict == NULL) {
 7404|       |        int res;
 7405|       |        Py_BEGIN_CRITICAL_SECTION(obj);
 7406|       |        dict = _PyObject_GetManagedDict(obj);
 7407|       |
 7408|       |        if (dict == NULL) {
 7409|       |            res = store_instance_attr_lock_held(obj, values, name, value);
 7410|       |        }
 7411|       |        Py_END_CRITICAL_SECTION();
 7412|       |
 7413|       |        if (dict == NULL) {
 7414|       |            return res;
 7415|       |        }
 7416|       |    }
 7417|       |    return store_instance_attr_dict(obj, dict, name, value);
 7418|       |#else
 7419|     59|    return store_instance_attr_lock_held(obj, values, name, value);
 7420|     59|#endif
 7421|     59|}
_PyObject_TryGetInstanceAttribute:
 7458|    163|{
 7459|    163|    assert(PyUnicode_CheckExact(name));
  ------------------
  |  Branch (7459:5): [True: 163, False: 0]
  ------------------
 7460|    163|    PyDictValues *values = _PyObject_InlineValues(obj);
 7461|    163|    if (!FT_ATOMIC_LOAD_UINT8(values->valid)) {
  ------------------
  |  |  154|    163|#define FT_ATOMIC_LOAD_UINT8(value) value
  ------------------
  |  Branch (7461:9): [True: 0, False: 163]
  ------------------
 7462|      0|        return false;
 7463|      0|    }
 7464|       |
 7465|    163|    PyDictKeysObject *keys = CACHED_KEYS(Py_TYPE(obj));
  ------------------
  |  |  870|    163|#define CACHED_KEYS(tp) (((PyHeapTypeObject*)tp)->ht_cached_keys)
  ------------------
 7466|    163|    assert(keys != NULL);
  ------------------
  |  Branch (7466:5): [True: 163, False: 0]
  ------------------
 7467|    163|    Py_ssize_t ix = _PyDictKeys_StringLookupSplit(keys, name);
 7468|    163|    if (ix == DKIX_EMPTY) {
  ------------------
  |  |  184|    163|#define DKIX_EMPTY (-1)
  ------------------
  |  Branch (7468:9): [True: 11, False: 152]
  ------------------
 7469|     11|        *attr = NULL;
 7470|     11|        return true;
 7471|     11|    }
 7472|       |
 7473|       |#ifdef Py_GIL_DISABLED
 7474|       |    PyObject *value = _Py_atomic_load_ptr_acquire(&values->values[ix]);
 7475|       |    if (value == NULL) {
 7476|       |        if (FT_ATOMIC_LOAD_UINT8(values->valid)) {
 7477|       |            *attr = NULL;
 7478|       |            return true;
 7479|       |        }
 7480|       |    }
 7481|       |    else if (_Py_TryIncrefCompare(&values->values[ix], value)) {
 7482|       |        *attr = value;
 7483|       |        return true;
 7484|       |    }
 7485|       |
 7486|       |    PyDictObject *dict = _PyObject_GetManagedDict(obj);
 7487|       |    if (dict == NULL) {
 7488|       |        // No dict, lock the object to prevent one from being
 7489|       |        // materialized...
 7490|       |        bool success = false;
 7491|       |        Py_BEGIN_CRITICAL_SECTION(obj);
 7492|       |
 7493|       |        dict = _PyObject_GetManagedDict(obj);
 7494|       |        if (dict == NULL) {
 7495|       |            // Still no dict, we can read from the values
 7496|       |            assert(values->valid);
 7497|       |            value = values->values[ix];
 7498|       |            *attr = _Py_XNewRefWithLock(value);
 7499|       |            success = true;
 7500|       |        }
 7501|       |
 7502|       |        Py_END_CRITICAL_SECTION();
 7503|       |
 7504|       |        if (success) {
 7505|       |            return true;
 7506|       |        }
 7507|       |    }
 7508|       |
 7509|       |    // We have a dictionary, we'll need to lock it to prevent
 7510|       |    // the values from being resized.
 7511|       |    assert(dict != NULL);
 7512|       |
 7513|       |    bool success;
 7514|       |    Py_BEGIN_CRITICAL_SECTION(dict);
 7515|       |
 7516|       |    if (dict->ma_values == values && FT_ATOMIC_LOAD_UINT8(values->valid)) {
 7517|       |        value = _Py_atomic_load_ptr_consume(&values->values[ix]);
 7518|       |        *attr = _Py_XNewRefWithLock(value);
 7519|       |        success = true;
 7520|       |    } else {
 7521|       |        // Caller needs to lookup from the dictionary
 7522|       |        success = false;
 7523|       |    }
 7524|       |
 7525|       |    Py_END_CRITICAL_SECTION();
 7526|       |
 7527|       |    return success;
 7528|       |#else
 7529|    152|    PyObject *value = values->values[ix];
 7530|    152|    *attr = Py_XNewRef(value);
  ------------------
  |  |  551|    152|#  define Py_XNewRef(obj) _Py_XNewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    152|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    152|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7531|       |    return true;
 7532|    163|#endif
 7533|    163|}
PyObject_VisitManagedDict:
 7571|     40|{
 7572|     40|    PyTypeObject *tp = Py_TYPE(obj);
  ------------------
  |  |  213|     40|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     40|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     40|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7573|     40|    if((tp->tp_flags & Py_TPFLAGS_MANAGED_DICT) == 0) {
  ------------------
  |  |  482|     40|#define Py_TPFLAGS_MANAGED_DICT (1 << 4)
  ------------------
  |  Branch (7573:8): [True: 0, False: 40]
  ------------------
 7574|      0|        return 0;
 7575|      0|    }
 7576|     40|    PyDictObject *dict = _PyObject_ManagedDictPointer(obj)->dict;
 7577|     40|    if (dict != NULL) {
  ------------------
  |  Branch (7577:9): [True: 0, False: 40]
  ------------------
 7578|       |        // GH-130327: If there's a managed dictionary available, we should
 7579|       |        // *always* traverse it. The dict is responsible for traversing the
 7580|       |        // inline values if it points to them.
 7581|      0|        Py_VISIT(dict);
  ------------------
  |  |  194|      0|    do {                                                                \
  |  |  195|      0|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  196|      0|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      0|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 0]
  |  |  ------------------
  |  |  198|      0|                return vret;                                            \
  |  |  199|      0|        }                                                               \
  |  |  200|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7582|      0|    }
 7583|     40|    else if (tp->tp_flags & Py_TPFLAGS_INLINE_VALUES) {
  ------------------
  |  |  472|     40|#define Py_TPFLAGS_INLINE_VALUES (1 << 2)
  ------------------
  |  Branch (7583:14): [True: 40, False: 0]
  ------------------
 7584|     40|        PyDictValues *values = _PyObject_InlineValues(obj);
 7585|     40|        if (values->valid) {
  ------------------
  |  Branch (7585:13): [True: 40, False: 0]
  ------------------
 7586|    938|            for (Py_ssize_t i = 0; i < values->capacity; i++) {
  ------------------
  |  Branch (7586:36): [True: 898, False: 40]
  ------------------
 7587|    898|                Py_VISIT(values->values[i]);
  ------------------
  |  |  194|    898|    do {                                                                \
  |  |  195|    898|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 302, False: 596]
  |  |  ------------------
  |  |  196|    302|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|    302|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    302|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|    302|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 302]
  |  |  ------------------
  |  |  198|    302|                return vret;                                            \
  |  |  199|    302|        }                                                               \
  |  |  200|    898|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 898]
  |  |  ------------------
  ------------------
 7588|    898|            }
 7589|     40|        }
 7590|     40|    }
 7591|     40|    return 0;
 7592|     40|}
PyObject_ClearManagedDict:
 7810|    126|{
 7811|       |    // This is called when the object is being freed or cleared
 7812|       |    // by the GC and therefore known to have no references.
 7813|    126|    if (Py_TYPE(obj)->tp_flags & Py_TPFLAGS_INLINE_VALUES) {
  ------------------
  |  |  213|    126|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    126|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    126|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  if (Py_TYPE(obj)->tp_flags & Py_TPFLAGS_INLINE_VALUES) {
  ------------------
  |  |  472|    126|#define Py_TPFLAGS_INLINE_VALUES (1 << 2)
  ------------------
  |  Branch (7813:9): [True: 126, False: 0]
  ------------------
 7814|    126|        PyDictObject *dict = _PyObject_GetManagedDict(obj);
 7815|    126|        if (dict == NULL) {
  ------------------
  |  Branch (7815:13): [True: 126, False: 0]
  ------------------
 7816|       |            // We have no materialized dictionary and inline values
 7817|       |            // that just need to be cleared.
 7818|       |            // No dict to clear, we're done
 7819|    126|            clear_inline_values(_PyObject_InlineValues(obj));
 7820|    126|            return;
 7821|    126|        }
 7822|      0|        else if (FT_ATOMIC_LOAD_PTR_RELAXED(dict->ma_values) ==
  ------------------
  |  |  153|      0|#define FT_ATOMIC_LOAD_PTR_RELAXED(value) value
  ------------------
  |  Branch (7822:18): [True: 0, False: 0]
  ------------------
 7823|      0|                    _PyObject_InlineValues(obj)) {
 7824|       |            // We have a materialized object which points at the inline
 7825|       |            // values. We need to materialize the keys. Nothing can modify
 7826|       |            // this object, but we need to lock the dictionary.
 7827|      0|            int err;
 7828|      0|            Py_BEGIN_CRITICAL_SECTION(dict);
  ------------------
  |  |   51|      0|    {
  ------------------
 7829|      0|            err = detach_dict_from_object(dict, obj);
 7830|      0|            Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|      0|    }
  ------------------
 7831|       |
 7832|      0|            if (err) {
  ------------------
  |  Branch (7832:17): [True: 0, False: 0]
  ------------------
 7833|       |                /* Must be out of memory */
 7834|      0|                assert(PyErr_Occurred() == PyExc_MemoryError);
  ------------------
  |  Branch (7834:17): [True: 0, False: 0]
  ------------------
 7835|      0|                PyErr_FormatUnraisable("Exception ignored while "
 7836|      0|                                       "clearing an object managed dict");
 7837|       |                /* Clear the dict */
 7838|      0|                Py_BEGIN_CRITICAL_SECTION(dict);
  ------------------
  |  |   51|      0|    {
  ------------------
 7839|      0|                PyDictKeysObject *oldkeys = dict->ma_keys;
 7840|      0|                set_keys(dict, Py_EMPTY_KEYS);
  ------------------
  |  |  645|      0|#define Py_EMPTY_KEYS &empty_keys_struct
  ------------------
 7841|      0|                dict->ma_values = NULL;
 7842|      0|                dictkeys_decref(oldkeys, IS_DICT_SHARED(dict));
  ------------------
  |  |  258|      0|#define IS_DICT_SHARED(mp) (false)
  ------------------
 7843|      0|                STORE_USED(dict, 0);
  ------------------
  |  |  321|      0|#define STORE_USED(mp, used) FT_ATOMIC_STORE_SSIZE_RELAXED(mp->ma_used, used)
  |  |  ------------------
  |  |  |  |  194|      0|#define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) value = new_value
  |  |  ------------------
  ------------------
 7844|      0|                clear_inline_values(_PyObject_InlineValues(obj));
 7845|      0|                Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|      0|    }
  ------------------
 7846|      0|            }
 7847|      0|        }
 7848|    126|    }
 7849|      0|    Py_CLEAR(_PyObject_ManagedDictPointer(obj)->dict);
  ------------------
  |  |  484|      0|    do { \
  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7850|      0|}
PyObject_GenericGetDict:
 7925|     18|{
 7926|     18|    PyTypeObject *tp = Py_TYPE(obj);
  ------------------
  |  |  213|     18|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     18|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     18|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7927|     18|    if (_PyType_HasFeature(tp, Py_TPFLAGS_MANAGED_DICT)) {
  ------------------
  |  |  482|     18|#define Py_TPFLAGS_MANAGED_DICT (1 << 4)
  ------------------
  |  Branch (7927:9): [True: 0, False: 18]
  ------------------
 7928|      0|        return Py_XNewRef(ensure_managed_dict(obj));
  ------------------
  |  |  551|      0|#  define Py_XNewRef(obj) _Py_XNewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7929|      0|    }
 7930|     18|    else {
 7931|     18|        PyObject **dictptr = _PyObject_ComputedDictPointer(obj);
 7932|     18|        if (dictptr == NULL) {
  ------------------
  |  Branch (7932:13): [True: 0, False: 18]
  ------------------
 7933|      0|            PyErr_SetString(PyExc_AttributeError,
 7934|      0|                            "This object has no __dict__");
 7935|      0|            return NULL;
 7936|      0|        }
 7937|       |
 7938|     18|        return Py_XNewRef(ensure_nonmanaged_dict(obj, dictptr));
  ------------------
  |  |  551|     18|#  define Py_XNewRef(obj) _Py_XNewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     18|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     18|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7939|     18|    }
 7940|     18|}
_PyObjectDict_SetItem:
 7945|    884|{
 7946|    884|    PyObject *dict;
 7947|    884|    int res;
 7948|       |
 7949|    884|    assert(dictptr != NULL);
  ------------------
  |  Branch (7949:5): [True: 884, False: 0]
  ------------------
 7950|    884|    dict = ensure_nonmanaged_dict(obj, dictptr);
 7951|    884|    if (dict == NULL) {
  ------------------
  |  Branch (7951:9): [True: 0, False: 884]
  ------------------
 7952|      0|        return -1;
 7953|      0|    }
 7954|       |
 7955|    884|    Py_BEGIN_CRITICAL_SECTION(dict);
  ------------------
  |  |   51|    884|    {
  ------------------
 7956|    884|    res = _PyDict_SetItem_LockHeld((PyDictObject *)dict, key, value);
 7957|    884|    ASSERT_CONSISTENT(dict);
  ------------------
  |  |  653|    884|#  define ASSERT_CONSISTENT(op) assert(_PyDict_CheckConsistency((PyObject *)(op), 0))
  ------------------
  |  Branch (7957:5): [True: 884, False: 0]
  ------------------
 7958|    884|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|    884|    }
  ------------------
 7959|    884|    return res;
 7960|    884|}
_PyDictKeys_GetVersionForCurrentState:
 7995|    425|{
 7996|    425|    uint32_t dk_version = FT_ATOMIC_LOAD_UINT32_RELAXED(dictkeys->dk_version);
  ------------------
  |  |  159|    425|#define FT_ATOMIC_LOAD_UINT32_RELAXED(value) value
  ------------------
 7997|    425|    if (dk_version != 0) {
  ------------------
  |  Branch (7997:9): [True: 385, False: 40]
  ------------------
 7998|    385|        return dk_version;
 7999|    385|    }
 8000|     40|    dk_version = get_next_dict_keys_version(interp);
 8001|     40|    FT_ATOMIC_STORE_UINT32_RELAXED(dictkeys->dk_version, dk_version);
  ------------------
  |  |  172|     40|#define FT_ATOMIC_STORE_UINT32_RELAXED(value, new_value) value = new_value
  ------------------
 8002|     40|    return dk_version;
 8003|    425|}
_PyDict_GetKeysVersionForCurrentState:
 8008|    354|{
 8009|    354|    ASSERT_DICT_LOCKED((PyObject *) dict);
 8010|    354|    uint32_t dk_version =
 8011|    354|        _PyDictKeys_GetVersionForCurrentState(interp, dict->ma_keys);
 8012|    354|    ensure_shared_on_keys_version_assignment(dict);
 8013|    354|    return dk_version;
 8014|    354|}
PyDict_Watch:
 8038|     33|{
 8039|     33|    if (!PyDict_Check(dict)) {
  ------------------
  |  |   18|     33|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     33|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (8039:9): [True: 0, False: 33]
  ------------------
 8040|      0|        PyErr_SetString(PyExc_ValueError, "Cannot watch non-dictionary");
 8041|      0|        return -1;
 8042|      0|    }
 8043|     33|    PyInterpreterState *interp = _PyInterpreterState_GET();
 8044|     33|    if (validate_watcher_id(interp, watcher_id)) {
  ------------------
  |  Branch (8044:9): [True: 0, False: 33]
  ------------------
 8045|      0|        return -1;
 8046|      0|    }
 8047|     33|    FT_ATOMIC_OR_UINT64(((PyDictObject*)dict)->_ma_watcher_tag,
  ------------------
  |  |  174|     33|#define FT_ATOMIC_OR_UINT64(value, new_value) (void)(value |= new_value)
  ------------------
 8048|     33|                        1ULL << watcher_id);
 8049|     33|    return 0;
 8050|     33|}
_PyDict_SendEvent:
 8125|  2.37k|{
 8126|  2.37k|    PyInterpreterState *interp = _PyInterpreterState_GET();
 8127|  21.3k|    for (int i = 0; i < DICT_MAX_WATCHERS; i++) {
  ------------------
  |  |   11|  21.3k|#define DICT_MAX_WATCHERS 8
  ------------------
  |  Branch (8127:21): [True: 18.9k, False: 2.37k]
  ------------------
 8128|  18.9k|        if (watcher_bits & 1) {
  ------------------
  |  Branch (8128:13): [True: 2.37k, False: 16.6k]
  ------------------
 8129|  2.37k|            PyDict_WatchCallback cb = FT_ATOMIC_LOAD_PTR_ACQUIRE(
  ------------------
  |  |  150|  2.37k|#define FT_ATOMIC_LOAD_PTR_ACQUIRE(value) value
  ------------------
 8130|  2.37k|                interp->dict_state.watchers[i]);
 8131|  2.37k|            if (cb && (cb(event, (PyObject*)mp, key, value) < 0)) {
  ------------------
  |  Branch (8131:17): [True: 2.37k, False: 0]
  |  Branch (8131:23): [True: 0, False: 2.37k]
  ------------------
 8132|       |                // We don't want to resurrect the dict by potentially having an
 8133|       |                // unraisablehook keep a reference to it, so we don't pass the
 8134|       |                // dict as context, just an informative string message.  Dict
 8135|       |                // repr can call arbitrary code, so we invent a simpler version.
 8136|      0|                PyErr_FormatUnraisable(
 8137|      0|                    "Exception ignored in %s watcher callback for <dict at %p>",
 8138|      0|                    dict_event_name(event), mp);
 8139|      0|            }
 8140|  2.37k|        }
 8141|  18.9k|        watcher_bits >>= 1;
 8142|  18.9k|    }
 8143|  2.37k|}
dictobject.c:dictkeys_get_index:
  513|   131k|{
  514|   131k|    int log2size = DK_LOG_SIZE(keys);
  ------------------
  |  |  260|   131k|#define DK_LOG_SIZE(dk)  _Py_RVALUE((dk)->dk_log2_size)
  |  |  ------------------
  |  |  |  |  277|   131k|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  ------------------
  ------------------
  515|   131k|    Py_ssize_t ix;
  516|       |
  517|   131k|    if (log2size < 8) {
  ------------------
  |  Branch (517:9): [True: 98.4k, False: 33.4k]
  ------------------
  518|  98.4k|        ix = LOAD_INDEX(keys, 8, i);
  ------------------
  |  |  260|  98.4k|#define LOAD_INDEX(keys, size, idx) ((const int##size##_t*)(keys->dk_indices))[idx]
  ------------------
  519|  98.4k|    }
  520|  33.4k|    else if (log2size < 16) {
  ------------------
  |  Branch (520:14): [True: 33.4k, False: 0]
  ------------------
  521|  33.4k|        ix = LOAD_INDEX(keys, 16, i);
  ------------------
  |  |  260|  33.4k|#define LOAD_INDEX(keys, size, idx) ((const int##size##_t*)(keys->dk_indices))[idx]
  ------------------
  522|  33.4k|    }
  523|      0|#if SIZEOF_VOID_P > 4
  524|      0|    else if (log2size >= 32) {
  ------------------
  |  Branch (524:14): [True: 0, False: 0]
  ------------------
  525|      0|        ix = LOAD_INDEX(keys, 64, i);
  ------------------
  |  |  260|      0|#define LOAD_INDEX(keys, size, idx) ((const int##size##_t*)(keys->dk_indices))[idx]
  ------------------
  526|      0|    }
  527|      0|#endif
  528|      0|    else {
  529|      0|        ix = LOAD_INDEX(keys, 32, i);
  ------------------
  |  |  260|      0|#define LOAD_INDEX(keys, size, idx) ((const int##size##_t*)(keys->dk_indices))[idx]
  ------------------
  530|      0|    }
  531|   131k|    assert(ix >= DKIX_DUMMY);
  ------------------
  |  Branch (531:5): [True: 131k, False: 0]
  ------------------
  532|   131k|    return ix;
  533|   131k|}
dictobject.c:unicode_get_hash:
  436|  54.5k|{
  437|  54.5k|    return PyUnstable_Unicode_GET_CACHED_HASH(o);
  438|  54.5k|}
dictobject.c:new_dict:
  930|  1.10k|{
  931|  1.10k|    PyDictObject *mp = _Py_FREELIST_POP(PyDictObject, dicts);
  ------------------
  |  |   43|  1.10k|    _Py_CAST(TYPE*, _PyFreeList_Pop(&_Py_freelists_GET()->NAME))
  |  |  ------------------
  |  |  |  |   37|  1.10k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  932|  1.10k|    if (mp == NULL) {
  ------------------
  |  Branch (932:9): [True: 601, False: 499]
  ------------------
  933|    601|        mp = PyObject_GC_New(PyDictObject, &PyDict_Type);
  ------------------
  |  |  181|    601|    _Py_CAST(type*, _PyObject_GC_New(typeobj))
  |  |  ------------------
  |  |  |  |   37|    601|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  934|    601|    }
  935|  1.10k|    assert(mp == NULL || Py_IS_TYPE(mp, &PyDict_Type));
  ------------------
  |  Branch (935:5): [True: 0, False: 1.10k]
  |  Branch (935:5): [True: 1.10k, False: 0]
  ------------------
  936|       |
  937|  1.10k|    return new_dict_impl(mp, keys, values, used, free_values_on_failure, 0);
  938|  1.10k|}
dictobject.c:new_dict_impl:
  904|  1.10k|{
  905|  1.10k|    assert(keys != NULL);
  ------------------
  |  Branch (905:5): [True: 1.10k, False: 0]
  ------------------
  906|  1.10k|    if (mp == NULL) {
  ------------------
  |  Branch (906:9): [True: 0, False: 1.10k]
  ------------------
  907|      0|        dictkeys_decref(keys, false);
  908|      0|        if (free_values_on_failure) {
  ------------------
  |  Branch (908:13): [True: 0, False: 0]
  ------------------
  909|      0|            free_values(values, false);
  910|      0|        }
  911|      0|        return NULL;
  912|      0|    }
  913|       |
  914|  1.10k|    mp->ma_keys = keys;
  915|  1.10k|    mp->ma_values = values;
  916|  1.10k|    mp->ma_used = used;
  917|  1.10k|    mp->_ma_watcher_tag = 0;
  918|  1.10k|    if (frozendict) {
  ------------------
  |  Branch (918:9): [True: 0, False: 1.10k]
  ------------------
  919|      0|        ((PyFrozenDictObject *)mp)->ma_hash = -1;
  920|      0|    }
  921|  1.10k|    ASSERT_CONSISTENT(mp);
  ------------------
  |  |  653|  1.10k|#  define ASSERT_CONSISTENT(op) assert(_PyDict_CheckConsistency((PyObject *)(op), 0))
  ------------------
  |  Branch (921:5): [True: 1.10k, False: 0]
  ------------------
  922|  1.10k|    _PyObject_GC_TRACK(mp);
  ------------------
  |  |  513|  1.10k|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  1.10k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.10k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  923|  1.10k|    return (PyObject *)mp;
  924|  1.10k|}
dictobject.c:check_keys_unicode:
 1191|    145|{
 1192|    145|    return PyUnicode_CheckExact(key) && (dk->dk_kind != DICT_KEYS_GENERAL);
  ------------------
  |  |  104|    145|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  ------------------
  |  |  |  |  215|    290|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    145|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    145|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 145, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1192:41): [True: 145, False: 0]
  ------------------
 1193|    145|}
dictobject.c:hash_unicode_key:
 1197|    165|{
 1198|    165|    assert(PyUnicode_CheckExact(key));
  ------------------
  |  Branch (1198:5): [True: 165, False: 0]
  ------------------
 1199|    165|    Py_hash_t hash = unicode_get_hash(key);
 1200|    165|    if (hash == -1) {
  ------------------
  |  Branch (1200:9): [True: 0, False: 165]
  ------------------
 1201|      0|        hash = PyUnicode_Type.tp_hash(key);
 1202|      0|        assert(hash != -1);
  ------------------
  |  Branch (1202:9): [True: 0, False: 0]
  ------------------
 1203|      0|    }
 1204|    165|    return hash;
 1205|    165|}
dictobject.c:unicodekeys_lookup_unicode:
 1151|  53.4k|{
 1152|       |    return do_lookup(NULL, dk, key, hash, compare_unicode_unicode);
 1153|  53.4k|}
dictobject.c:do_lookup:
 1058|  54.0k|{
 1059|  54.0k|    void *ep0 = _DK_ENTRIES(dk);
 1060|  54.0k|    size_t mask = DK_MASK(dk);
  ------------------
  |  |  452|  54.0k|#define DK_MASK(dk) (DK_SIZE(dk)-1)
  |  |  ------------------
  |  |  |  |  262|  54.0k|#define DK_SIZE(dk)      (((int64_t)1)<<DK_LOG_SIZE(dk))
  |  |  |  |  ------------------
  |  |  |  |  |  |  260|  54.0k|#define DK_LOG_SIZE(dk)  _Py_RVALUE((dk)->dk_log2_size)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  277|  54.0k|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1061|  54.0k|    size_t perturb = hash;
 1062|  54.0k|    size_t i = (size_t)hash & mask;
 1063|  54.0k|    Py_ssize_t ix;
 1064|  66.2k|    for (;;) {
 1065|  66.2k|        ix = dictkeys_get_index(dk, i);
 1066|  66.2k|        if (ix >= 0) {
  ------------------
  |  Branch (1066:13): [True: 33.7k, False: 32.5k]
  ------------------
 1067|  33.7k|            int cmp = check_lookup(mp, dk, ep0, ix, key, hash);
 1068|  33.7k|            if (cmp < 0) {
  ------------------
  |  Branch (1068:17): [True: 0, False: 33.7k]
  ------------------
 1069|      0|                return cmp;
 1070|  33.7k|            } else if (cmp) {
  ------------------
  |  Branch (1070:24): [True: 9.08k, False: 24.6k]
  ------------------
 1071|  9.08k|                return ix;
 1072|  9.08k|            }
 1073|  33.7k|        }
 1074|  32.5k|        else if (ix == DKIX_EMPTY) {
  ------------------
  |  |  184|  32.5k|#define DKIX_EMPTY (-1)
  ------------------
  |  Branch (1074:18): [True: 31.2k, False: 1.31k]
  ------------------
 1075|  31.2k|            return DKIX_EMPTY;
  ------------------
  |  |  184|  31.2k|#define DKIX_EMPTY (-1)
  ------------------
 1076|  31.2k|        }
 1077|  25.9k|        perturb >>= PERTURB_SHIFT;
  ------------------
  |  |  323|  25.9k|#define PERTURB_SHIFT 5
  ------------------
 1078|  25.9k|        i = mask & (i*5 + perturb + 1);
 1079|       |
 1080|       |        // Manual loop unrolling
 1081|  25.9k|        ix = dictkeys_get_index(dk, i);
 1082|  25.9k|        if (ix >= 0) {
  ------------------
  |  Branch (1082:13): [True: 13.1k, False: 12.8k]
  ------------------
 1083|  13.1k|            int cmp = check_lookup(mp, dk, ep0, ix, key, hash);
 1084|  13.1k|            if (cmp < 0) {
  ------------------
  |  Branch (1084:17): [True: 0, False: 13.1k]
  ------------------
 1085|      0|                return cmp;
 1086|  13.1k|            } else if (cmp) {
  ------------------
  |  Branch (1086:24): [True: 1.45k, False: 11.6k]
  ------------------
 1087|  1.45k|                return ix;
 1088|  1.45k|            }
 1089|  13.1k|        }
 1090|  12.8k|        else if (ix == DKIX_EMPTY) {
  ------------------
  |  |  184|  12.8k|#define DKIX_EMPTY (-1)
  ------------------
  |  Branch (1090:18): [True: 12.2k, False: 570]
  ------------------
 1091|  12.2k|            return DKIX_EMPTY;
  ------------------
  |  |  184|  12.2k|#define DKIX_EMPTY (-1)
  ------------------
 1092|  12.2k|        }
 1093|  12.2k|        perturb >>= PERTURB_SHIFT;
  ------------------
  |  |  323|  12.2k|#define PERTURB_SHIFT 5
  ------------------
 1094|  12.2k|        i = mask & (i*5 + perturb + 1);
 1095|  12.2k|    }
 1096|      0|    Py_UNREACHABLE();
  ------------------
  |  |  264|      0|#  define Py_UNREACHABLE() __builtin_unreachable()
  ------------------
 1097|  54.0k|}
dictobject.c:compare_unicode_unicode:
 1137|  46.2k|{
 1138|  46.2k|    PyDictUnicodeEntry *ep = &((PyDictUnicodeEntry *)ep0)[ix];
 1139|  46.2k|    PyObject *ep_key = FT_ATOMIC_LOAD_PTR_CONSUME(ep->me_key);
  ------------------
  |  |  151|  46.2k|#define FT_ATOMIC_LOAD_PTR_CONSUME(value) value
  ------------------
 1140|  46.2k|    assert(ep_key != NULL);
  ------------------
  |  Branch (1140:5): [True: 46.2k, False: 0]
  ------------------
 1141|  46.2k|    assert(PyUnicode_CheckExact(ep_key));
  ------------------
  |  Branch (1141:5): [True: 46.2k, False: 0]
  ------------------
 1142|  46.2k|    if (ep_key == key ||
  ------------------
  |  Branch (1142:9): [True: 9.14k, False: 37.0k]
  ------------------
 1143|  37.0k|            (unicode_get_hash(ep_key) == hash && unicode_eq(ep_key, key))) {
  ------------------
  |  Branch (1143:14): [True: 1.35k, False: 35.7k]
  |  Branch (1143:50): [True: 1.35k, False: 0]
  ------------------
 1144|  10.4k|        return 1;
 1145|  10.4k|    }
 1146|  35.7k|    return 0;
 1147|  46.2k|}
dictobject.c:unicodekeys_lookup_split:
 1215|    275|{
 1216|    275|    Py_ssize_t ix;
 1217|    275|    assert(dk->dk_kind == DICT_KEYS_SPLIT);
  ------------------
  |  Branch (1217:5): [True: 275, False: 0]
  ------------------
 1218|    275|    assert(PyUnicode_CheckExact(key));
  ------------------
  |  Branch (1218:5): [True: 275, False: 0]
  ------------------
 1219|       |
 1220|       |#ifdef Py_GIL_DISABLED
 1221|       |    // A split dictionaries keys can be mutated by other dictionaries
 1222|       |    // but if we have a unicode key we can avoid locking the shared
 1223|       |    // keys.
 1224|       |    ix = unicodekeys_lookup_unicode_threadsafe(dk, key, hash);
 1225|       |    if (ix == DKIX_KEY_CHANGED) {
 1226|       |        LOCK_KEYS(dk);
 1227|       |        ix = unicodekeys_lookup_unicode(dk, key, hash);
 1228|       |        UNLOCK_KEYS(dk);
 1229|       |    }
 1230|       |#else
 1231|    275|    ix = unicodekeys_lookup_unicode(dk, key, hash);
 1232|    275|#endif
 1233|    275|    return ix;
 1234|    275|}
dictobject.c:unicodekeys_lookup_generic:
 1130|      1|{
 1131|      1|    return do_lookup(mp, dk, key, hash, compare_unicode_generic);
 1132|      1|}
dictobject.c:dictkeys_generic_lookup:
 1185|    567|{
 1186|    567|    return do_lookup(mp, dk, key, hash, compare_generic);
 1187|    567|}
dictobject.c:compare_generic:
 1158|    682|{
 1159|    682|    PyDictKeyEntry *ep = &((PyDictKeyEntry *)ep0)[ix];
 1160|    682|    assert(ep->me_key != NULL);
  ------------------
  |  Branch (1160:5): [True: 682, False: 0]
  ------------------
 1161|    682|    if (ep->me_key == key) {
  ------------------
  |  Branch (1161:9): [True: 47, False: 635]
  ------------------
 1162|     47|        return 1;
 1163|     47|    }
 1164|    635|    if (ep->me_hash == hash) {
  ------------------
  |  Branch (1164:9): [True: 2, False: 633]
  ------------------
 1165|      2|        PyObject *startkey = ep->me_key;
 1166|      2|        Py_INCREF(startkey);
  ------------------
  |  |  310|      2|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1167|      2|        int cmp = PyObject_RichCompareBool(startkey, key, Py_EQ);
  ------------------
  |  |  654|      2|#define Py_EQ 2
  ------------------
 1168|      2|        Py_DECREF(startkey);
  ------------------
  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1169|      2|        if (cmp < 0) {
  ------------------
  |  Branch (1169:13): [True: 0, False: 2]
  ------------------
 1170|      0|            return DKIX_ERROR;
  ------------------
  |  |  186|      0|#define DKIX_ERROR (-3)
  ------------------
 1171|      0|        }
 1172|      2|        if (dk == mp->ma_keys && ep->me_key == startkey) {
  ------------------
  |  Branch (1172:13): [True: 2, False: 0]
  |  Branch (1172:34): [True: 2, False: 0]
  ------------------
 1173|      2|            return cmp;
 1174|      2|        }
 1175|      0|        else {
 1176|       |            /* The dict was mutated, restart */
 1177|      0|            return DKIX_KEY_CHANGED;
  ------------------
  |  |  187|      0|#define DKIX_KEY_CHANGED (-4) /* Used internally */
  ------------------
 1178|      0|        }
 1179|      2|    }
 1180|    633|    return 0;
 1181|    635|}
dictobject.c:can_modify_dict:
  295|  21.7k|{
  296|  21.7k|    if (PyFrozenDict_Check(mp)) {
  ------------------
  |  |   37|  21.7k|#define PyFrozenDict_Check(op) PyObject_TypeCheck((op), &PyFrozenDict_Type)
  |  |  ------------------
  |  |  |  |  378|  21.7k|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|  21.7k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|  21.7k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (378:40): [True: 0, False: 21.7k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  297|       |        // No locking required to modify a newly created frozendict
  298|       |        // since it's only accessible from the current thread.
  299|      0|        return PyUnstable_Object_IsUniquelyReferenced(_PyObject_CAST(mp));
  ------------------
  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  ------------------
  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  300|      0|    }
  301|  21.7k|    else {
  302|       |        // Locking is only required if the dictionary is not
  303|       |        // uniquely referenced.
  304|  21.7k|        ASSERT_DICT_LOCKED(mp);
  305|  21.7k|        return 1;
  306|  21.7k|    }
  307|  21.7k|}
dictobject.c:dict_new_presized:
 2272|    197|{
 2273|    197|    const uint8_t log2_max_presize = 17;
 2274|    197|    const Py_ssize_t max_presize = ((Py_ssize_t)1) << log2_max_presize;
 2275|    197|    uint8_t log2_newsize;
 2276|    197|    PyDictKeysObject *new_keys;
 2277|       |
 2278|    197|    if (minused <= USABLE_FRACTION(PyDict_MINSIZE)) {
  ------------------
  |  |  575|    197|#define USABLE_FRACTION(n) (((n) << 1)/3)
  ------------------
  |  Branch (2278:9): [True: 195, False: 2]
  ------------------
 2279|    195|        return PyDict_New();
 2280|    195|    }
 2281|       |    /* There are no strict guarantee that returned dict can contain minused
 2282|       |     * items without resize.  So we create medium size dict instead of very
 2283|       |     * large dict or MemoryError.
 2284|       |     */
 2285|      2|    if (minused > USABLE_FRACTION(max_presize)) {
  ------------------
  |  |  575|      2|#define USABLE_FRACTION(n) (((n) << 1)/3)
  ------------------
  |  Branch (2285:9): [True: 0, False: 2]
  ------------------
 2286|      0|        log2_newsize = log2_max_presize;
 2287|      0|    }
 2288|      2|    else {
 2289|      2|        log2_newsize = estimate_log2_keysize(minused);
 2290|      2|    }
 2291|       |
 2292|      2|    new_keys = new_keys_object(log2_newsize, unicode);
 2293|      2|    if (new_keys == NULL)
  ------------------
  |  Branch (2293:9): [True: 0, False: 2]
  ------------------
 2294|      0|        return NULL;
 2295|      2|    return new_dict(new_keys, NULL, 0, 0);
 2296|      2|}
dictobject.c:estimate_log2_keysize:
  607|      2|{
  608|      2|    return calculate_log2_keysize((n*3 + 1) / 2);
  609|      2|}
dictobject.c:calculate_log2_keysize:
  580|    657|{
  581|    657|#if SIZEOF_LONG == SIZEOF_SIZE_T
  582|    657|    minsize = Py_MAX(minsize, PyDict_MINSIZE);
  ------------------
  |  |  115|    657|#define Py_MAX(x, y) (((x) > (y)) ? (x) : (y))
  |  |  ------------------
  |  |  |  Branch (115:23): [True: 648, False: 9]
  |  |  ------------------
  ------------------
  583|    657|    return _Py_bit_length(minsize - 1);
  584|       |#elif defined(_MSC_VER)
  585|       |    // On 64bit Windows, sizeof(long) == 4. We cannot use _Py_bit_length.
  586|       |    minsize = Py_MAX(minsize, PyDict_MINSIZE);
  587|       |    unsigned long msb;
  588|       |    _BitScanReverse64(&msb, (uint64_t)minsize - 1);
  589|       |    return (uint8_t)(msb + 1);
  590|       |#else
  591|       |    uint8_t log2_size;
  592|       |    for (log2_size = PyDict_LOG_MINSIZE;
  593|       |            (((Py_ssize_t)1) << log2_size) < minsize;
  594|       |            log2_size++)
  595|       |        ;
  596|       |    return log2_size;
  597|       |#endif
  598|    657|}
dictobject.c:dict_getitem:
 2354|     48|{
 2355|     48|    if (!PyAnyDict_Check(op)) {
  ------------------
  |  |   43|     48|    (PyDict_Check(ob) || PyFrozenDict_Check(ob))
  |  |  ------------------
  |  |  |  |   18|     48|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|     96|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (760:41): [True: 48, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (PyDict_Check(ob) || PyFrozenDict_Check(ob))
  |  |  ------------------
  |  |  |  |   37|      0|#define PyFrozenDict_Check(op) PyObject_TypeCheck((op), &PyFrozenDict_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |  378|      0|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (378:40): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2356|      0|        return NULL;
 2357|      0|    }
 2358|     48|    PyDictObject *mp = (PyDictObject *)op;
 2359|       |
 2360|     48|    Py_hash_t hash = _PyObject_HashFast(key);
 2361|     48|    if (hash == -1) {
  ------------------
  |  Branch (2361:9): [True: 0, False: 48]
  ------------------
 2362|      0|        PyErr_FormatUnraisable(warnmsg);
 2363|      0|        return NULL;
 2364|      0|    }
 2365|       |
 2366|     48|    PyThreadState *tstate = _PyThreadState_GET();
 2367|       |#ifdef Py_DEBUG
 2368|       |    // bpo-40839: Before Python 3.10, it was possible to call PyDict_GetItem()
 2369|       |    // with the GIL released.
 2370|       |    _Py_EnsureTstateNotNULL(tstate);
 2371|       |#endif
 2372|       |
 2373|       |    /* Preserve the existing exception */
 2374|     48|    PyObject *value;
 2375|     48|    Py_ssize_t ix; (void)ix;
 2376|       |
 2377|     48|    PyObject *exc = _PyErr_GetRaisedException(tstate);
 2378|       |#ifdef Py_GIL_DISABLED
 2379|       |    ix = _Py_dict_lookup_threadsafe(mp, key, hash, &value);
 2380|       |    Py_XDECREF(value);
 2381|       |#else
 2382|     48|    ix = _Py_dict_lookup(mp, key, hash, &value);
 2383|     48|#endif
 2384|       |
 2385|       |    /* Ignore any exception raised by the lookup */
 2386|     48|    PyObject *exc2 = _PyErr_Occurred(tstate);
 2387|     48|    if (exc2 && !PyErr_GivenExceptionMatches(exc2, PyExc_KeyError)) {
  ------------------
  |  Branch (2387:9): [True: 0, False: 48]
  |  Branch (2387:17): [True: 0, False: 0]
  ------------------
 2388|      0|        PyErr_FormatUnraisable(warnmsg);
 2389|      0|    }
 2390|     48|    _PyErr_SetRaisedException(tstate, exc);
 2391|       |
 2392|     48|    assert(ix >= 0 || value == NULL);
  ------------------
  |  Branch (2392:5): [True: 45, False: 3]
  |  Branch (2392:5): [True: 3, False: 0]
  ------------------
 2393|     48|    return value;  // borrowed reference
 2394|     48|}
dictobject.c:setitem_take2_lock_held:
 2749|  6.93k|{
 2750|  6.93k|    Py_hash_t hash = _PyObject_HashFast(key);
 2751|  6.93k|    if (hash == -1) {
  ------------------
  |  Branch (2751:9): [True: 0, False: 6.93k]
  ------------------
 2752|      0|        dict_unhashable_type((PyObject*)mp, key);
 2753|      0|        Py_DECREF(key);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2754|      0|        Py_DECREF(value);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2755|      0|        return -1;
 2756|      0|    }
 2757|       |
 2758|  6.93k|    return setitem_take2_lock_held_known_hash(mp, key, value, hash);
 2759|  6.93k|}
dictobject.c:setitem_take2_lock_held_known_hash:
 2734|  6.93k|{
 2735|  6.93k|    assert(PyAnyDict_Check(mp));
  ------------------
  |  Branch (2735:5): [True: 6.93k, False: 0]
  |  Branch (2735:5): [True: 0, False: 0]
  ------------------
 2736|  6.93k|    assert(can_modify_dict(mp));
  ------------------
  |  Branch (2736:5): [True: 6.93k, False: 0]
  ------------------
 2737|  6.93k|    assert(key);
  ------------------
  |  Branch (2737:5): [True: 6.93k, False: 0]
  ------------------
 2738|  6.93k|    assert(value);
  ------------------
  |  Branch (2738:5): [True: 6.93k, False: 0]
  ------------------
 2739|       |
 2740|  6.93k|    if (mp->ma_keys == Py_EMPTY_KEYS) {
  ------------------
  |  |  645|  6.93k|#define Py_EMPTY_KEYS &empty_keys_struct
  ------------------
  |  Branch (2740:9): [True: 642, False: 6.29k]
  ------------------
 2741|    642|        return insert_to_emptydict(mp, key, hash, value);
 2742|    642|    }
 2743|       |    /* insertdict() handles any resizing that might be necessary */
 2744|  6.29k|    return insertdict(mp, key, hash, value);
 2745|  6.93k|}
dictobject.c:setitem_lock_held:
 2819|  1.05k|{
 2820|  1.05k|    assert(key);
  ------------------
  |  Branch (2820:5): [True: 1.05k, False: 0]
  ------------------
 2821|  1.05k|    assert(value);
  ------------------
  |  Branch (2821:5): [True: 1.05k, False: 0]
  ------------------
 2822|  1.05k|    return setitem_take2_lock_held(mp,
 2823|  1.05k|                                   Py_NewRef(key), Py_NewRef(value));
  ------------------
  |  |  550|  1.05k|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|  1.05k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.05k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                                                 Py_NewRef(key), Py_NewRef(value));
  ------------------
  |  |  550|  1.05k|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|  1.05k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.05k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2824|  1.05k|}
dictobject.c:insert_to_emptydict:
 2019|    650|{
 2020|    650|    assert(can_modify_dict(mp));
  ------------------
  |  Branch (2020:5): [True: 650, False: 0]
  ------------------
 2021|    650|    assert(mp->ma_keys == Py_EMPTY_KEYS);
  ------------------
  |  Branch (2021:5): [True: 650, False: 0]
  ------------------
 2022|       |
 2023|    650|    int unicode = PyUnicode_CheckExact(key);
  ------------------
  |  |  104|    650|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  ------------------
  |  |  |  |  215|    650|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    650|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    650|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2024|    650|    PyDictKeysObject *newkeys = new_keys_object(PyDict_LOG_MINSIZE, unicode);
  ------------------
  |  |  115|    650|#define PyDict_LOG_MINSIZE 3
  ------------------
 2025|    650|    if (newkeys == NULL) {
  ------------------
  |  Branch (2025:9): [True: 0, False: 650]
  ------------------
 2026|      0|        Py_DECREF(key);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2027|      0|        Py_DECREF(value);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2028|      0|        return -1;
 2029|      0|    }
 2030|    650|    _PyDict_NotifyEvent(PyDict_EVENT_ADDED, mp, key, value);
 2031|       |
 2032|       |    /* We don't decref Py_EMPTY_KEYS here because it is immortal. */
 2033|    650|    assert(mp->ma_values == NULL);
  ------------------
  |  Branch (2033:5): [True: 650, False: 0]
  ------------------
 2034|       |
 2035|    650|    size_t hashpos = (size_t)hash & (PyDict_MINSIZE-1);
  ------------------
  |  |  116|    650|#define PyDict_MINSIZE 8
  ------------------
 2036|    650|    dictkeys_set_index(newkeys, hashpos, 0);
 2037|    650|    if (unicode) {
  ------------------
  |  Branch (2037:9): [True: 581, False: 69]
  ------------------
 2038|    581|        PyDictUnicodeEntry *ep = DK_UNICODE_ENTRIES(newkeys);
 2039|    581|        ep->me_key = key;
 2040|    581|        STORE_VALUE(ep, value);
  ------------------
  |  |  316|    581|#define STORE_VALUE(ep, value) FT_ATOMIC_STORE_PTR_RELEASE((ep)->me_value, value)
  |  |  ------------------
  |  |  |  |  164|    581|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  |  |  ------------------
  ------------------
 2041|    581|    }
 2042|     69|    else {
 2043|     69|        PyDictKeyEntry *ep = DK_ENTRIES(newkeys);
 2044|     69|        ep->me_key = key;
 2045|     69|        ep->me_hash = hash;
 2046|     69|        STORE_VALUE(ep, value);
  ------------------
  |  |  316|     69|#define STORE_VALUE(ep, value) FT_ATOMIC_STORE_PTR_RELEASE((ep)->me_value, value)
  |  |  ------------------
  |  |  |  |  164|     69|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  |  |  ------------------
  ------------------
 2047|     69|    }
 2048|    650|    STORE_USED(mp, mp->ma_used + 1);
  ------------------
  |  |  321|    650|#define STORE_USED(mp, used) FT_ATOMIC_STORE_SSIZE_RELAXED(mp->ma_used, used)
  |  |  ------------------
  |  |  |  |  194|    650|#define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) value = new_value
  |  |  ------------------
  ------------------
 2049|    650|    newkeys->dk_usable--;
 2050|    650|    newkeys->dk_nentries++;
 2051|       |    // We store the keys last so no one can see them in a partially inconsistent
 2052|       |    // state so that we don't need to switch the keys to being shared yet for
 2053|       |    // the case where we're inserting from the non-owner thread.  We don't use
 2054|       |    // set_keys here because the transition from empty to non-empty is safe
 2055|       |    // as the empty keys will never be freed.
 2056|    650|    FT_ATOMIC_STORE_PTR_RELEASE(mp->ma_keys, newkeys);
  ------------------
  |  |  164|    650|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  ------------------
 2057|    650|    return 0;
 2058|    650|}
dictobject.c:dictkeys_set_index:
  538|  26.8k|{
  539|  26.8k|    int log2size = DK_LOG_SIZE(keys);
  ------------------
  |  |  260|  26.8k|#define DK_LOG_SIZE(dk)  _Py_RVALUE((dk)->dk_log2_size)
  |  |  ------------------
  |  |  |  |  277|  26.8k|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  ------------------
  ------------------
  540|       |
  541|  26.8k|    assert(ix >= DKIX_DUMMY);
  ------------------
  |  Branch (541:5): [True: 26.8k, False: 0]
  ------------------
  542|  26.8k|    assert(keys->dk_version == 0);
  ------------------
  |  Branch (542:5): [True: 26.8k, False: 0]
  ------------------
  543|       |
  544|  26.8k|    if (log2size < 8) {
  ------------------
  |  Branch (544:9): [True: 14.1k, False: 12.7k]
  ------------------
  545|  14.1k|        assert(ix <= 0x7f);
  ------------------
  |  Branch (545:9): [True: 14.1k, False: 0]
  ------------------
  546|  14.1k|        STORE_INDEX(keys, 8, i, ix);
  ------------------
  |  |  261|  14.1k|#define STORE_INDEX(keys, size, idx, value) ((int##size##_t*)(keys->dk_indices))[idx] = (int##size##_t)value
  ------------------
  547|  14.1k|    }
  548|  12.7k|    else if (log2size < 16) {
  ------------------
  |  Branch (548:14): [True: 12.7k, False: 0]
  ------------------
  549|  12.7k|        assert(ix <= 0x7fff);
  ------------------
  |  Branch (549:9): [True: 12.7k, False: 0]
  ------------------
  550|  12.7k|        STORE_INDEX(keys, 16, i, ix);
  ------------------
  |  |  261|  12.7k|#define STORE_INDEX(keys, size, idx, value) ((int##size##_t*)(keys->dk_indices))[idx] = (int##size##_t)value
  ------------------
  551|  12.7k|    }
  552|      0|#if SIZEOF_VOID_P > 4
  553|      0|    else if (log2size >= 32) {
  ------------------
  |  Branch (553:14): [True: 0, False: 0]
  ------------------
  554|      0|        STORE_INDEX(keys, 64, i, ix);
  ------------------
  |  |  261|      0|#define STORE_INDEX(keys, size, idx, value) ((int##size##_t*)(keys->dk_indices))[idx] = (int##size##_t)value
  ------------------
  555|      0|    }
  556|      0|#endif
  557|      0|    else {
  558|      0|        assert(ix <= 0x7fffffff);
  ------------------
  |  Branch (558:9): [True: 0, False: 0]
  ------------------
  559|      0|        STORE_INDEX(keys, 32, i, ix);
  ------------------
  |  |  261|      0|#define STORE_INDEX(keys, size, idx, value) ((int##size##_t*)(keys->dk_indices))[idx] = (int##size##_t)value
  ------------------
  560|      0|    }
  561|  26.8k|}
dictobject.c:insertdict:
 1948|  6.62k|{
 1949|  6.62k|    assert(can_modify_dict(mp));
  ------------------
  |  Branch (1949:5): [True: 6.62k, False: 0]
  ------------------
 1950|       |
 1951|  6.62k|    PyObject *old_value = NULL;
 1952|  6.62k|    Py_ssize_t ix;
 1953|       |
 1954|  6.62k|    if (_PyDict_HasSplitTable(mp) && PyUnicode_CheckExact(key)) {
  ------------------
  |  |   56|  13.2k|#define _PyDict_HasSplitTable(d) ((d)->ma_values != NULL)
  |  |  ------------------
  |  |  |  Branch (56:34): [True: 7, False: 6.62k]
  |  |  ------------------
  ------------------
                  if (_PyDict_HasSplitTable(mp) && PyUnicode_CheckExact(key)) {
  ------------------
  |  |  104|      7|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  ------------------
  |  |  |  |  215|      7|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      7|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 7, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1955|      7|        ix = insert_split_key(mp->ma_keys, key, hash);
 1956|      7|        if (ix != DKIX_EMPTY) {
  ------------------
  |  |  184|      7|#define DKIX_EMPTY (-1)
  ------------------
  |  Branch (1956:13): [True: 7, False: 0]
  ------------------
 1957|      7|            _PyDict_InsertSplitValue(mp, key, value, ix);
 1958|      7|            Py_DECREF(key);
  ------------------
  |  |  430|      7|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      7|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1959|      7|            Py_DECREF(value);
  ------------------
  |  |  430|      7|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      7|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1960|      7|            return 0;
 1961|      7|        }
 1962|       |        // No space in shared keys. Go to insert_combined_dict() below.
 1963|      7|    }
 1964|  6.62k|    else {
 1965|  6.62k|        ix = _Py_dict_lookup(mp, key, hash, &old_value);
 1966|  6.62k|        if (ix == DKIX_ERROR)
  ------------------
  |  |  186|  6.62k|#define DKIX_ERROR (-3)
  ------------------
  |  Branch (1966:13): [True: 0, False: 6.62k]
  ------------------
 1967|      0|            goto Fail;
 1968|  6.62k|    }
 1969|       |
 1970|  6.62k|    if (old_value == NULL) {
  ------------------
  |  Branch (1970:9): [True: 6.31k, False: 307]
  ------------------
 1971|       |        // insert_combined_dict() will convert from non DICT_KEYS_GENERAL table
 1972|       |        // into DICT_KEYS_GENERAL table if key is not Unicode.
 1973|       |        // We don't convert it before _Py_dict_lookup because non-Unicode key
 1974|       |        // may change generic table into Unicode table.
 1975|       |        //
 1976|       |        // NOTE: ix may not be DKIX_EMPTY because split table may have key
 1977|       |        // without value.
 1978|  6.31k|        if (insert_combined_dict(mp, hash, key, value) < 0) {
  ------------------
  |  Branch (1978:13): [True: 0, False: 6.31k]
  ------------------
 1979|      0|            goto Fail;
 1980|      0|        }
 1981|  6.31k|        STORE_USED(mp, mp->ma_used + 1);
  ------------------
  |  |  321|  6.31k|#define STORE_USED(mp, used) FT_ATOMIC_STORE_SSIZE_RELAXED(mp->ma_used, used)
  |  |  ------------------
  |  |  |  |  194|  6.31k|#define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) value = new_value
  |  |  ------------------
  ------------------
 1982|  6.31k|        ASSERT_CONSISTENT(mp);
  ------------------
  |  |  653|  6.31k|#  define ASSERT_CONSISTENT(op) assert(_PyDict_CheckConsistency((PyObject *)(op), 0))
  ------------------
  |  Branch (1982:9): [True: 6.31k, False: 0]
  ------------------
 1983|  6.31k|        return 0;
 1984|  6.31k|    }
 1985|       |
 1986|    307|    if (old_value != value) {
  ------------------
  |  Branch (1986:9): [True: 260, False: 47]
  ------------------
 1987|    260|        _PyDict_NotifyEvent(PyDict_EVENT_MODIFIED, mp, key, value);
 1988|    260|        assert(old_value != NULL);
  ------------------
  |  Branch (1988:9): [True: 260, False: 0]
  ------------------
 1989|    260|        if (DK_IS_UNICODE(mp->ma_keys)) {
  ------------------
  |  |  282|    260|#define DK_IS_UNICODE(dk) ((dk)->dk_kind != DICT_KEYS_GENERAL)
  |  |  ------------------
  |  |  |  Branch (282:27): [True: 254, False: 6]
  |  |  ------------------
  ------------------
 1990|    254|            if (_PyDict_HasSplitTable(mp)) {
  ------------------
  |  |   56|    254|#define _PyDict_HasSplitTable(d) ((d)->ma_values != NULL)
  |  |  ------------------
  |  |  |  Branch (56:34): [True: 0, False: 254]
  |  |  ------------------
  ------------------
 1991|      0|                STORE_SPLIT_VALUE(mp, ix, value);
  ------------------
  |  |  317|      0|#define STORE_SPLIT_VALUE(mp, idx, value) FT_ATOMIC_STORE_PTR_RELEASE(mp->ma_values->values[idx], value)
  |  |  ------------------
  |  |  |  |  164|      0|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  |  |  ------------------
  ------------------
 1992|      0|            }
 1993|    254|            else {
 1994|    254|                PyDictUnicodeEntry *ep = &DK_UNICODE_ENTRIES(mp->ma_keys)[ix];
 1995|    254|                STORE_VALUE(ep, value);
  ------------------
  |  |  316|    254|#define STORE_VALUE(ep, value) FT_ATOMIC_STORE_PTR_RELEASE((ep)->me_value, value)
  |  |  ------------------
  |  |  |  |  164|    254|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  |  |  ------------------
  ------------------
 1996|    254|            }
 1997|    254|        }
 1998|      6|        else {
 1999|      6|            PyDictKeyEntry *ep = &DK_ENTRIES(mp->ma_keys)[ix];
 2000|      6|            STORE_VALUE(ep, value);
  ------------------
  |  |  316|      6|#define STORE_VALUE(ep, value) FT_ATOMIC_STORE_PTR_RELEASE((ep)->me_value, value)
  |  |  ------------------
  |  |  |  |  164|      6|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  |  |  ------------------
  ------------------
 2001|      6|        }
 2002|    260|    }
 2003|    307|    Py_XDECREF(old_value); /* which **CAN** re-enter (see issue #22653) */
  ------------------
  |  |  524|    307|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    307|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    307|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2004|    307|    ASSERT_CONSISTENT(mp);
  ------------------
  |  |  653|    307|#  define ASSERT_CONSISTENT(op) assert(_PyDict_CheckConsistency((PyObject *)(op), 0))
  ------------------
  |  Branch (2004:5): [True: 307, False: 0]
  ------------------
 2005|    307|    Py_DECREF(key);
  ------------------
  |  |  430|    307|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    307|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    307|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2006|    307|    return 0;
 2007|       |
 2008|      0|Fail:
 2009|      0|    Py_DECREF(value);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2010|      0|    Py_DECREF(key);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2011|      0|    return -1;
 2012|    307|}
dictobject.c:insert_combined_dict:
 1844|  11.2k|{
 1845|       |    // gh-140551: If dict was cleared in _Py_dict_lookup,
 1846|       |    // we have to resize one more time to force general key kind.
 1847|  11.2k|    if (DK_IS_UNICODE(mp->ma_keys) && !PyUnicode_CheckExact(key)) {
  ------------------
  |  |  282|  22.4k|#define DK_IS_UNICODE(dk) ((dk)->dk_kind != DICT_KEYS_GENERAL)
  |  |  ------------------
  |  |  |  Branch (282:27): [True: 10.7k, False: 488]
  |  |  ------------------
  ------------------
                  if (DK_IS_UNICODE(mp->ma_keys) && !PyUnicode_CheckExact(key)) {
  ------------------
  |  |  104|  10.7k|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  ------------------
  |  |  |  |  215|  10.7k|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|  10.7k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|  10.7k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1847:39): [True: 0, False: 10.7k]
  ------------------
 1848|      0|        if (insertion_resize(mp, 0) < 0)
  ------------------
  |  Branch (1848:13): [True: 0, False: 0]
  ------------------
 1849|      0|            return -1;
 1850|      0|        assert(mp->ma_keys->dk_kind == DICT_KEYS_GENERAL);
  ------------------
  |  Branch (1850:9): [True: 0, False: 0]
  ------------------
 1851|      0|    }
 1852|       |
 1853|  11.2k|    if (mp->ma_keys->dk_usable <= 0) {
  ------------------
  |  Branch (1853:9): [True: 655, False: 10.5k]
  ------------------
 1854|       |        /* Need to resize. */
 1855|    655|        if (insertion_resize(mp, 1) < 0) {
  ------------------
  |  Branch (1855:13): [True: 0, False: 655]
  ------------------
 1856|      0|            return -1;
 1857|      0|        }
 1858|    655|    }
 1859|       |
 1860|  11.2k|    _PyDict_NotifyEvent(PyDict_EVENT_ADDED, mp, key, value);
 1861|  11.2k|    FT_ATOMIC_STORE_UINT32_RELAXED(mp->ma_keys->dk_version, 0);
  ------------------
  |  |  172|  11.2k|#define FT_ATOMIC_STORE_UINT32_RELAXED(value, new_value) value = new_value
  ------------------
 1862|       |
 1863|  11.2k|    Py_ssize_t hashpos = find_empty_slot(mp->ma_keys, hash);
 1864|  11.2k|    dictkeys_set_index(mp->ma_keys, hashpos, mp->ma_keys->dk_nentries);
 1865|       |
 1866|  11.2k|    if (DK_IS_UNICODE(mp->ma_keys)) {
  ------------------
  |  |  282|  11.2k|#define DK_IS_UNICODE(dk) ((dk)->dk_kind != DICT_KEYS_GENERAL)
  |  |  ------------------
  |  |  |  Branch (282:27): [True: 10.7k, False: 488]
  |  |  ------------------
  ------------------
 1867|  10.7k|        PyDictUnicodeEntry *ep;
 1868|  10.7k|        ep = &DK_UNICODE_ENTRIES(mp->ma_keys)[mp->ma_keys->dk_nentries];
 1869|  10.7k|        STORE_KEY(ep, key);
  ------------------
  |  |  315|  10.7k|#define STORE_KEY(ep, key) FT_ATOMIC_STORE_PTR_RELEASE((ep)->me_key, key)
  |  |  ------------------
  |  |  |  |  164|  10.7k|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  |  |  ------------------
  ------------------
 1870|  10.7k|        STORE_VALUE(ep, value);
  ------------------
  |  |  316|  10.7k|#define STORE_VALUE(ep, value) FT_ATOMIC_STORE_PTR_RELEASE((ep)->me_value, value)
  |  |  ------------------
  |  |  |  |  164|  10.7k|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  |  |  ------------------
  ------------------
 1871|  10.7k|    }
 1872|    488|    else {
 1873|    488|        PyDictKeyEntry *ep;
 1874|    488|        ep = &DK_ENTRIES(mp->ma_keys)[mp->ma_keys->dk_nentries];
 1875|    488|        STORE_KEY(ep, key);
  ------------------
  |  |  315|    488|#define STORE_KEY(ep, key) FT_ATOMIC_STORE_PTR_RELEASE((ep)->me_key, key)
  |  |  ------------------
  |  |  |  |  164|    488|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  |  |  ------------------
  ------------------
 1876|    488|        STORE_VALUE(ep, value);
  ------------------
  |  |  316|    488|#define STORE_VALUE(ep, value) FT_ATOMIC_STORE_PTR_RELEASE((ep)->me_value, value)
  |  |  ------------------
  |  |  |  |  164|    488|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  |  |  ------------------
  ------------------
 1877|    488|        STORE_HASH(ep, hash);
  ------------------
  |  |  318|    488|#define STORE_HASH(ep, hash) FT_ATOMIC_STORE_SSIZE_RELAXED((ep)->me_hash, hash)
  |  |  ------------------
  |  |  |  |  194|    488|#define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) value = new_value
  |  |  ------------------
  ------------------
 1878|    488|    }
 1879|  11.2k|    STORE_KEYS_USABLE(mp->ma_keys, mp->ma_keys->dk_usable - 1);
  ------------------
  |  |  319|  11.2k|#define STORE_KEYS_USABLE(keys, usable) FT_ATOMIC_STORE_SSIZE_RELAXED(keys->dk_usable, usable)
  |  |  ------------------
  |  |  |  |  194|  11.2k|#define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) value = new_value
  |  |  ------------------
  ------------------
 1880|  11.2k|    STORE_KEYS_NENTRIES(mp->ma_keys, mp->ma_keys->dk_nentries + 1);
  ------------------
  |  |  320|  11.2k|#define STORE_KEYS_NENTRIES(keys, nentries) FT_ATOMIC_STORE_SSIZE_RELAXED(keys->dk_nentries, nentries)
  |  |  ------------------
  |  |  |  |  194|  11.2k|#define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) value = new_value
  |  |  ------------------
  ------------------
 1881|  11.2k|    assert(mp->ma_keys->dk_usable >= 0);
  ------------------
  |  Branch (1881:5): [True: 11.2k, False: 0]
  ------------------
 1882|  11.2k|    return 0;
 1883|  11.2k|}
dictobject.c:insertion_resize:
 1837|    655|{
 1838|    655|    return dictresize(mp, calculate_log2_keysize(GROWTH_RATE(mp)), unicode);
  ------------------
  |  |  622|    655|#define GROWTH_RATE(d) ((d)->ma_used*3)
  ------------------
 1839|    655|}
dictobject.c:dictresize:
 2121|    655|{
 2122|    655|    assert(can_modify_dict(mp));
  ------------------
  |  Branch (2122:5): [True: 655, False: 0]
  ------------------
 2123|       |
 2124|    655|    PyDictKeysObject *oldkeys, *newkeys;
 2125|    655|    PyDictValues *oldvalues;
 2126|       |
 2127|    655|    if (log2_newsize >= SIZEOF_SIZE_T*8) {
  ------------------
  |  | 1838|    655|#define SIZEOF_SIZE_T 8
  ------------------
  |  Branch (2127:9): [True: 0, False: 655]
  ------------------
 2128|      0|        PyErr_NoMemory();
 2129|      0|        return -1;
 2130|      0|    }
 2131|    655|    assert(log2_newsize >= PyDict_LOG_MINSIZE);
  ------------------
  |  Branch (2131:5): [True: 655, False: 0]
  ------------------
 2132|       |
 2133|    655|    oldkeys = mp->ma_keys;
 2134|    655|    oldvalues = mp->ma_values;
 2135|       |
 2136|    655|    if (!DK_IS_UNICODE(oldkeys)) {
  ------------------
  |  |  282|    655|#define DK_IS_UNICODE(dk) ((dk)->dk_kind != DICT_KEYS_GENERAL)
  ------------------
  |  Branch (2136:9): [True: 29, False: 626]
  ------------------
 2137|     29|        unicode = 0;
 2138|     29|    }
 2139|       |
 2140|    655|    ensure_shared_on_resize(mp);
 2141|       |    /* NOTE: Current odict checks mp->ma_keys to detect resize happen.
 2142|       |     * So we can't reuse oldkeys even if oldkeys->dk_size == newsize.
 2143|       |     * TODO: Try reusing oldkeys when reimplement odict.
 2144|       |     */
 2145|       |
 2146|       |    /* Allocate a new table. */
 2147|    655|    newkeys = new_keys_object(log2_newsize, unicode);
 2148|    655|    if (newkeys == NULL) {
  ------------------
  |  Branch (2148:9): [True: 0, False: 655]
  ------------------
 2149|      0|        return -1;
 2150|      0|    }
 2151|       |    // New table must be large enough.
 2152|    655|    assert(newkeys->dk_usable >= mp->ma_used);
  ------------------
  |  Branch (2152:5): [True: 655, False: 0]
  ------------------
 2153|       |
 2154|    655|    Py_ssize_t numentries = mp->ma_used;
 2155|       |
 2156|    655|    if (oldvalues != NULL) {
  ------------------
  |  Branch (2156:9): [True: 0, False: 655]
  ------------------
 2157|      0|        LOCK_KEYS(oldkeys);
 2158|      0|        PyDictUnicodeEntry *oldentries = DK_UNICODE_ENTRIES(oldkeys);
 2159|       |        /* Convert split table into new combined table.
 2160|       |         * We must incref keys; we can transfer values.
 2161|       |         */
 2162|      0|        if (newkeys->dk_kind == DICT_KEYS_GENERAL) {
  ------------------
  |  Branch (2162:13): [True: 0, False: 0]
  ------------------
 2163|       |            // split -> generic
 2164|      0|            PyDictKeyEntry *newentries = DK_ENTRIES(newkeys);
 2165|       |
 2166|      0|            for (Py_ssize_t i = 0; i < numentries; i++) {
  ------------------
  |  Branch (2166:36): [True: 0, False: 0]
  ------------------
 2167|      0|                int index = get_index_from_order(mp, i);
 2168|      0|                PyDictUnicodeEntry *ep = &oldentries[index];
 2169|      0|                assert(oldvalues->values[index] != NULL);
  ------------------
  |  Branch (2169:17): [True: 0, False: 0]
  ------------------
 2170|      0|                newentries[i].me_key = Py_NewRef(ep->me_key);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2171|      0|                newentries[i].me_hash = unicode_get_hash(ep->me_key);
 2172|      0|                newentries[i].me_value = oldvalues->values[index];
 2173|      0|            }
 2174|      0|            build_indices_generic(newkeys, newentries, numentries);
 2175|      0|        }
 2176|      0|        else { // split -> combined unicode
 2177|      0|            PyDictUnicodeEntry *newentries = DK_UNICODE_ENTRIES(newkeys);
 2178|       |
 2179|      0|            for (Py_ssize_t i = 0; i < numentries; i++) {
  ------------------
  |  Branch (2179:36): [True: 0, False: 0]
  ------------------
 2180|      0|                int index = get_index_from_order(mp, i);
 2181|      0|                PyDictUnicodeEntry *ep = &oldentries[index];
 2182|      0|                assert(oldvalues->values[index] != NULL);
  ------------------
  |  Branch (2182:17): [True: 0, False: 0]
  ------------------
 2183|      0|                newentries[i].me_key = Py_NewRef(ep->me_key);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2184|      0|                newentries[i].me_value = oldvalues->values[index];
 2185|      0|            }
 2186|      0|            build_indices_unicode(newkeys, newentries, numentries);
 2187|      0|        }
 2188|      0|        UNLOCK_KEYS(oldkeys);
 2189|      0|        set_keys(mp, newkeys);
 2190|      0|        dictkeys_decref(oldkeys, IS_DICT_SHARED(mp));
  ------------------
  |  |  258|      0|#define IS_DICT_SHARED(mp) (false)
  ------------------
 2191|      0|        set_values(mp, NULL);
 2192|      0|        if (oldvalues->embedded) {
  ------------------
  |  Branch (2192:13): [True: 0, False: 0]
  ------------------
 2193|      0|            assert(oldvalues->embedded == 1);
  ------------------
  |  Branch (2193:13): [True: 0, False: 0]
  ------------------
 2194|      0|            assert(oldvalues->valid == 1);
  ------------------
  |  Branch (2194:13): [True: 0, False: 0]
  ------------------
 2195|      0|            invalidate_and_clear_inline_values(oldvalues);
 2196|      0|        }
 2197|      0|        else {
 2198|      0|            free_values(oldvalues, IS_DICT_SHARED(mp));
  ------------------
  |  |  258|      0|#define IS_DICT_SHARED(mp) (false)
  ------------------
 2199|      0|        }
 2200|      0|    }
 2201|    655|    else {  // oldkeys is combined.
 2202|    655|        if (oldkeys->dk_kind == DICT_KEYS_GENERAL) {
  ------------------
  |  Branch (2202:13): [True: 29, False: 626]
  ------------------
 2203|       |            // generic -> generic
 2204|     29|            assert(newkeys->dk_kind == DICT_KEYS_GENERAL);
  ------------------
  |  Branch (2204:13): [True: 29, False: 0]
  ------------------
 2205|     29|            PyDictKeyEntry *oldentries = DK_ENTRIES(oldkeys);
 2206|     29|            PyDictKeyEntry *newentries = DK_ENTRIES(newkeys);
 2207|     29|            if (oldkeys->dk_nentries == numentries) {
  ------------------
  |  Branch (2207:17): [True: 24, False: 5]
  ------------------
 2208|     24|                memcpy(newentries, oldentries, numentries * sizeof(PyDictKeyEntry));
 2209|     24|            }
 2210|      5|            else {
 2211|      5|                PyDictKeyEntry *ep = oldentries;
 2212|      5|                for (Py_ssize_t i = 0; i < numentries; i++) {
  ------------------
  |  Branch (2212:40): [True: 0, False: 5]
  ------------------
 2213|      0|                    while (ep->me_value == NULL)
  ------------------
  |  Branch (2213:28): [True: 0, False: 0]
  ------------------
 2214|      0|                        ep++;
 2215|      0|                    newentries[i] = *ep++;
 2216|      0|                }
 2217|      5|            }
 2218|     29|            build_indices_generic(newkeys, newentries, numentries);
 2219|     29|        }
 2220|    626|        else {  // oldkeys is combined unicode
 2221|    626|            PyDictUnicodeEntry *oldentries = DK_UNICODE_ENTRIES(oldkeys);
 2222|    626|            if (unicode) { // combined unicode -> combined unicode
  ------------------
  |  Branch (2222:17): [True: 626, False: 0]
  ------------------
 2223|    626|                PyDictUnicodeEntry *newentries = DK_UNICODE_ENTRIES(newkeys);
 2224|    626|                if (oldkeys->dk_nentries == numentries && mp->ma_keys->dk_kind == DICT_KEYS_UNICODE) {
  ------------------
  |  Branch (2224:21): [True: 580, False: 46]
  |  Branch (2224:59): [True: 580, False: 0]
  ------------------
 2225|    580|                    memcpy(newentries, oldentries, numentries * sizeof(PyDictUnicodeEntry));
 2226|    580|                }
 2227|     46|                else {
 2228|     46|                    PyDictUnicodeEntry *ep = oldentries;
 2229|    449|                    for (Py_ssize_t i = 0; i < numentries; i++) {
  ------------------
  |  Branch (2229:44): [True: 403, False: 46]
  ------------------
 2230|    491|                        while (ep->me_value == NULL)
  ------------------
  |  Branch (2230:32): [True: 88, False: 403]
  ------------------
 2231|     88|                            ep++;
 2232|    403|                        newentries[i] = *ep++;
 2233|    403|                    }
 2234|     46|                }
 2235|    626|                build_indices_unicode(newkeys, newentries, numentries);
 2236|    626|            }
 2237|      0|            else { // combined unicode -> generic
 2238|      0|                PyDictKeyEntry *newentries = DK_ENTRIES(newkeys);
 2239|      0|                PyDictUnicodeEntry *ep = oldentries;
 2240|      0|                for (Py_ssize_t i = 0; i < numentries; i++) {
  ------------------
  |  Branch (2240:40): [True: 0, False: 0]
  ------------------
 2241|      0|                    while (ep->me_value == NULL)
  ------------------
  |  Branch (2241:28): [True: 0, False: 0]
  ------------------
 2242|      0|                        ep++;
 2243|      0|                    newentries[i].me_key = ep->me_key;
 2244|      0|                    newentries[i].me_hash = unicode_get_hash(ep->me_key);
 2245|      0|                    newentries[i].me_value = ep->me_value;
 2246|      0|                    ep++;
 2247|      0|                }
 2248|      0|                build_indices_generic(newkeys, newentries, numentries);
 2249|      0|            }
 2250|    626|        }
 2251|       |
 2252|    655|        set_keys(mp, newkeys);
 2253|       |
 2254|    655|        if (oldkeys != Py_EMPTY_KEYS) {
  ------------------
  |  |  645|    655|#define Py_EMPTY_KEYS &empty_keys_struct
  ------------------
  |  Branch (2254:13): [True: 655, False: 0]
  ------------------
 2255|       |#ifdef Py_REF_DEBUG
 2256|       |            _Py_DecRefTotal(_PyThreadState_GET());
 2257|       |#endif
 2258|    655|            assert(oldkeys->dk_kind != DICT_KEYS_SPLIT);
  ------------------
  |  Branch (2258:13): [True: 655, False: 0]
  ------------------
 2259|    655|            assert(oldkeys->dk_refcnt == 1);
  ------------------
  |  Branch (2259:13): [True: 655, False: 0]
  ------------------
 2260|    655|            free_keys_object(oldkeys, IS_DICT_SHARED(mp));
  ------------------
  |  |  258|    655|#define IS_DICT_SHARED(mp) (false)
  ------------------
 2261|    655|        }
 2262|    655|    }
 2263|       |
 2264|    655|    STORE_KEYS_USABLE(mp->ma_keys, mp->ma_keys->dk_usable - numentries);
  ------------------
  |  |  319|    655|#define STORE_KEYS_USABLE(keys, usable) FT_ATOMIC_STORE_SSIZE_RELAXED(keys->dk_usable, usable)
  |  |  ------------------
  |  |  |  |  194|    655|#define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) value = new_value
  |  |  ------------------
  ------------------
 2265|    655|    STORE_KEYS_NENTRIES(mp->ma_keys, numentries);
  ------------------
  |  |  320|    655|#define STORE_KEYS_NENTRIES(keys, nentries) FT_ATOMIC_STORE_SSIZE_RELAXED(keys->dk_nentries, nentries)
  |  |  ------------------
  |  |  |  |  194|    655|#define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) value = new_value
  |  |  ------------------
  ------------------
 2266|    655|    ASSERT_CONSISTENT(mp);
  ------------------
  |  |  653|    655|#  define ASSERT_CONSISTENT(op) assert(_PyDict_CheckConsistency((PyObject *)(op), 0))
  ------------------
  |  Branch (2266:5): [True: 655, False: 0]
  ------------------
 2267|    655|    return 0;
 2268|    655|}
dictobject.c:ensure_shared_on_resize:
 1393|    675|{
 1394|       |#ifdef Py_GIL_DISABLED
 1395|       |    _Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED(mp);
 1396|       |
 1397|       |    if (!_Py_IsOwnedByCurrentThread((PyObject *)mp) && !IS_DICT_SHARED(mp)) {
 1398|       |        // We are writing to the dict from another thread that owns
 1399|       |        // it and we haven't marked it as shared which will ensure
 1400|       |        // that when we re-size ma_keys or ma_values that we will
 1401|       |        // free using QSBR.  We need to lock the dictionary to
 1402|       |        // contend with writes from the owning thread, mark it as
 1403|       |        // shared, and then we can continue with lock-free reads.
 1404|       |        // Technically this is a little heavy handed, we could just
 1405|       |        // free the individual old keys / old-values using qsbr
 1406|       |        SET_DICT_SHARED(mp);
 1407|       |    }
 1408|       |#endif
 1409|    675|}
dictobject.c:build_indices_generic:
 2065|     29|{
 2066|     29|    size_t mask = DK_MASK(keys);
  ------------------
  |  |  452|     29|#define DK_MASK(dk) (DK_SIZE(dk)-1)
  |  |  ------------------
  |  |  |  |  262|     29|#define DK_SIZE(dk)      (((int64_t)1)<<DK_LOG_SIZE(dk))
  |  |  |  |  ------------------
  |  |  |  |  |  |  260|     29|#define DK_LOG_SIZE(dk)  _Py_RVALUE((dk)->dk_log2_size)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  277|     29|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2067|    636|    for (Py_ssize_t ix = 0; ix != n; ix++, ep++) {
  ------------------
  |  Branch (2067:29): [True: 607, False: 29]
  ------------------
 2068|    607|        Py_hash_t hash = ep->me_hash;
 2069|    607|        size_t i = hash & mask;
 2070|    949|        for (size_t perturb = hash; dictkeys_get_index(keys, i) != DKIX_EMPTY;) {
  ------------------
  |  |  184|    949|#define DKIX_EMPTY (-1)
  ------------------
  |  Branch (2070:37): [True: 342, False: 607]
  ------------------
 2071|    342|            perturb >>= PERTURB_SHIFT;
  ------------------
  |  |  323|    342|#define PERTURB_SHIFT 5
  ------------------
 2072|    342|            i = mask & (i*5 + perturb + 1);
 2073|    342|        }
 2074|    607|        dictkeys_set_index(keys, i, ix);
 2075|    607|    }
 2076|     29|}
dictobject.c:build_indices_unicode:
 2080|    626|{
 2081|    626|    size_t mask = DK_MASK(keys);
  ------------------
  |  |  452|    626|#define DK_MASK(dk) (DK_SIZE(dk)-1)
  |  |  ------------------
  |  |  |  |  262|    626|#define DK_SIZE(dk)      (((int64_t)1)<<DK_LOG_SIZE(dk))
  |  |  |  |  ------------------
  |  |  |  |  |  |  260|    626|#define DK_LOG_SIZE(dk)  _Py_RVALUE((dk)->dk_log2_size)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  277|    626|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2082|  14.6k|    for (Py_ssize_t ix = 0; ix != n; ix++, ep++) {
  ------------------
  |  Branch (2082:29): [True: 13.9k, False: 626]
  ------------------
 2083|  13.9k|        Py_hash_t hash = unicode_get_hash(ep->me_key);
 2084|  13.9k|        assert(hash != -1);
  ------------------
  |  Branch (2084:9): [True: 13.9k, False: 0]
  ------------------
 2085|  13.9k|        size_t i = hash & mask;
 2086|  16.9k|        for (size_t perturb = hash; dictkeys_get_index(keys, i) != DKIX_EMPTY;) {
  ------------------
  |  |  184|  16.9k|#define DKIX_EMPTY (-1)
  ------------------
  |  Branch (2086:37): [True: 2.94k, False: 13.9k]
  ------------------
 2087|  2.94k|            perturb >>= PERTURB_SHIFT;
  ------------------
  |  |  323|  2.94k|#define PERTURB_SHIFT 5
  ------------------
 2088|  2.94k|            i = mask & (i*5 + perturb + 1);
 2089|  2.94k|        }
 2090|  13.9k|        dictkeys_set_index(keys, i, ix);
 2091|  13.9k|    }
 2092|    626|}
dictobject.c:free_keys_object:
  845|    925|{
  846|       |#ifdef Py_GIL_DISABLED
  847|       |    if (use_qsbr) {
  848|       |        _PyMem_FreeDelayed(keys, _PyDict_KeysSize(keys));
  849|       |        return;
  850|       |    }
  851|       |#endif
  852|    925|    if (DK_LOG_SIZE(keys) == PyDict_LOG_MINSIZE && keys->dk_kind == DICT_KEYS_UNICODE) {
  ------------------
  |  |  260|    925|#define DK_LOG_SIZE(dk)  _Py_RVALUE((dk)->dk_log2_size)
  |  |  ------------------
  |  |  |  |  277|    925|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  ------------------
  ------------------
                  if (DK_LOG_SIZE(keys) == PyDict_LOG_MINSIZE && keys->dk_kind == DICT_KEYS_UNICODE) {
  ------------------
  |  |  115|  1.85k|#define PyDict_LOG_MINSIZE 3
  ------------------
  |  Branch (852:9): [True: 388, False: 537]
  |  Branch (852:52): [True: 375, False: 13]
  ------------------
  853|    375|        _Py_FREELIST_FREE(dictkeys, keys, PyMem_Free);
  ------------------
  |  |   35|    375|    _PyFreeList_Free(&_Py_freelists_GET()->NAME, _PyObject_CAST(op), \
  |  |  ------------------
  |  |  |  |  171|    375|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    375|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   36|    375|                     Py_ ## NAME ## _MAXFREELIST, freefunc)
  |  |  ------------------
  |  |  |  |   17|    375|#  define Py_dictkeys_MAXFREELIST 80
  |  |  ------------------
  ------------------
  854|    375|    }
  855|    550|    else {
  856|    550|        PyMem_Free(keys);
  857|    550|    }
  858|    925|}
dictobject.c:find_empty_slot:
 1821|  11.3k|{
 1822|  11.3k|    assert(keys != NULL);
  ------------------
  |  Branch (1822:5): [True: 11.3k, False: 0]
  ------------------
 1823|       |
 1824|  11.3k|    const size_t mask = DK_MASK(keys);
  ------------------
  |  |  452|  11.3k|#define DK_MASK(dk) (DK_SIZE(dk)-1)
  |  |  ------------------
  |  |  |  |  262|  11.3k|#define DK_SIZE(dk)      (((int64_t)1)<<DK_LOG_SIZE(dk))
  |  |  |  |  ------------------
  |  |  |  |  |  |  260|  11.3k|#define DK_LOG_SIZE(dk)  _Py_RVALUE((dk)->dk_log2_size)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  277|  11.3k|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1825|  11.3k|    size_t i = hash & mask;
 1826|  11.3k|    Py_ssize_t ix = dictkeys_get_index(keys, i);
 1827|  21.3k|    for (size_t perturb = hash; is_unusable_slot(ix);) {
  ------------------
  |  Branch (1827:33): [True: 10.0k, False: 11.3k]
  ------------------
 1828|  10.0k|        perturb >>= PERTURB_SHIFT;
  ------------------
  |  |  323|  10.0k|#define PERTURB_SHIFT 5
  ------------------
 1829|  10.0k|        i = (i*5 + perturb + 1) & mask;
 1830|  10.0k|        ix = dictkeys_get_index(keys, i);
 1831|  10.0k|    }
 1832|  11.3k|    return i;
 1833|  11.3k|}
dictobject.c:is_unusable_slot:
 1808|  21.3k|{
 1809|       |#ifdef Py_GIL_DISABLED
 1810|       |    return ix >= 0 || ix == DKIX_DUMMY;
 1811|       |#else
 1812|  21.3k|    return ix >= 0;
 1813|  21.3k|#endif
 1814|  21.3k|}
dictobject.c:delitem_common:
 2884|    290|{
 2885|    290|    assert(can_modify_dict(mp));
  ------------------
  |  Branch (2885:5): [True: 290, False: 0]
  ------------------
 2886|       |
 2887|    290|    PyObject *old_key;
 2888|       |
 2889|    290|    Py_ssize_t hashpos = lookdict_index(mp->ma_keys, hash, ix);
 2890|    290|    assert(hashpos >= 0);
  ------------------
  |  Branch (2890:5): [True: 290, False: 0]
  ------------------
 2891|       |
 2892|    290|    STORE_USED(mp, mp->ma_used - 1);
  ------------------
  |  |  321|    290|#define STORE_USED(mp, used) FT_ATOMIC_STORE_SSIZE_RELAXED(mp->ma_used, used)
  |  |  ------------------
  |  |  |  |  194|    290|#define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) value = new_value
  |  |  ------------------
  ------------------
 2893|    290|    if (_PyDict_HasSplitTable(mp)) {
  ------------------
  |  |   56|    290|#define _PyDict_HasSplitTable(d) ((d)->ma_values != NULL)
  |  |  ------------------
  |  |  |  Branch (56:34): [True: 0, False: 290]
  |  |  ------------------
  ------------------
 2894|      0|        assert(old_value == mp->ma_values->values[ix]);
  ------------------
  |  Branch (2894:9): [True: 0, False: 0]
  ------------------
 2895|      0|        STORE_SPLIT_VALUE(mp, ix, NULL);
  ------------------
  |  |  317|      0|#define STORE_SPLIT_VALUE(mp, idx, value) FT_ATOMIC_STORE_PTR_RELEASE(mp->ma_values->values[idx], value)
  |  |  ------------------
  |  |  |  |  164|      0|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  |  |  ------------------
  ------------------
 2896|      0|        assert(ix < SHARED_KEYS_MAX_SIZE);
  ------------------
  |  Branch (2896:9): [True: 0, False: 0]
  ------------------
 2897|       |        /* Update order */
 2898|      0|        delete_index_from_values(mp->ma_values, ix);
 2899|      0|        ASSERT_CONSISTENT(mp);
  ------------------
  |  |  653|      0|#  define ASSERT_CONSISTENT(op) assert(_PyDict_CheckConsistency((PyObject *)(op), 0))
  ------------------
  |  Branch (2899:9): [True: 0, False: 0]
  ------------------
 2900|      0|    }
 2901|    290|    else {
 2902|    290|        FT_ATOMIC_STORE_UINT32_RELAXED(mp->ma_keys->dk_version, 0);
  ------------------
  |  |  172|    290|#define FT_ATOMIC_STORE_UINT32_RELAXED(value, new_value) value = new_value
  ------------------
 2903|    290|        dictkeys_set_index(mp->ma_keys, hashpos, DKIX_DUMMY);
  ------------------
  |  |  185|    290|#define DKIX_DUMMY (-2)  /* Used internally */
  ------------------
 2904|    290|        if (DK_IS_UNICODE(mp->ma_keys)) {
  ------------------
  |  |  282|    290|#define DK_IS_UNICODE(dk) ((dk)->dk_kind != DICT_KEYS_GENERAL)
  |  |  ------------------
  |  |  |  Branch (282:27): [True: 260, False: 30]
  |  |  ------------------
  ------------------
 2905|    260|            PyDictUnicodeEntry *ep = &DK_UNICODE_ENTRIES(mp->ma_keys)[ix];
 2906|    260|            old_key = ep->me_key;
 2907|    260|            STORE_KEY(ep, NULL);
  ------------------
  |  |  315|    260|#define STORE_KEY(ep, key) FT_ATOMIC_STORE_PTR_RELEASE((ep)->me_key, key)
  |  |  ------------------
  |  |  |  |  164|    260|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  |  |  ------------------
  ------------------
 2908|    260|            STORE_VALUE(ep, NULL);
  ------------------
  |  |  316|    260|#define STORE_VALUE(ep, value) FT_ATOMIC_STORE_PTR_RELEASE((ep)->me_value, value)
  |  |  ------------------
  |  |  |  |  164|    260|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  |  |  ------------------
  ------------------
 2909|    260|        }
 2910|     30|        else {
 2911|     30|            PyDictKeyEntry *ep = &DK_ENTRIES(mp->ma_keys)[ix];
 2912|     30|            old_key = ep->me_key;
 2913|     30|            STORE_KEY(ep, NULL);
  ------------------
  |  |  315|     30|#define STORE_KEY(ep, key) FT_ATOMIC_STORE_PTR_RELEASE((ep)->me_key, key)
  |  |  ------------------
  |  |  |  |  164|     30|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  |  |  ------------------
  ------------------
 2914|     30|            STORE_VALUE(ep, NULL);
  ------------------
  |  |  316|     30|#define STORE_VALUE(ep, value) FT_ATOMIC_STORE_PTR_RELEASE((ep)->me_value, value)
  |  |  ------------------
  |  |  |  |  164|     30|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  |  |  ------------------
  ------------------
 2915|     30|            STORE_HASH(ep, 0);
  ------------------
  |  |  318|     30|#define STORE_HASH(ep, hash) FT_ATOMIC_STORE_SSIZE_RELAXED((ep)->me_hash, hash)
  |  |  ------------------
  |  |  |  |  194|     30|#define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) value = new_value
  |  |  ------------------
  ------------------
 2916|     30|        }
 2917|    290|        Py_DECREF(old_key);
  ------------------
  |  |  430|    290|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    290|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    290|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2918|    290|    }
 2919|    290|    Py_DECREF(old_value);
  ------------------
  |  |  430|    290|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    290|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    290|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2920|       |
 2921|       |    ASSERT_CONSISTENT(mp);
  ------------------
  |  |  653|    290|#  define ASSERT_CONSISTENT(op) assert(_PyDict_CheckConsistency((PyObject *)(op), 0))
  ------------------
  |  Branch (2921:5): [True: 290, False: 0]
  ------------------
 2922|    290|}
dictobject.c:lookdict_index:
 1036|    290|{
 1037|    290|    size_t mask = DK_MASK(k);
  ------------------
  |  |  452|    290|#define DK_MASK(dk) (DK_SIZE(dk)-1)
  |  |  ------------------
  |  |  |  |  262|    290|#define DK_SIZE(dk)      (((int64_t)1)<<DK_LOG_SIZE(dk))
  |  |  |  |  ------------------
  |  |  |  |  |  |  260|    290|#define DK_LOG_SIZE(dk)  _Py_RVALUE((dk)->dk_log2_size)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  277|    290|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1038|    290|    size_t perturb = (size_t)hash;
 1039|    290|    size_t i = (size_t)hash & mask;
 1040|       |
 1041|    380|    for (;;) {
 1042|    380|        Py_ssize_t ix = dictkeys_get_index(k, i);
 1043|    380|        if (ix == index) {
  ------------------
  |  Branch (1043:13): [True: 290, False: 90]
  ------------------
 1044|    290|            return i;
 1045|    290|        }
 1046|     90|        if (ix == DKIX_EMPTY) {
  ------------------
  |  |  184|     90|#define DKIX_EMPTY (-1)
  ------------------
  |  Branch (1046:13): [True: 0, False: 90]
  ------------------
 1047|      0|            return DKIX_EMPTY;
  ------------------
  |  |  184|      0|#define DKIX_EMPTY (-1)
  ------------------
 1048|      0|        }
 1049|     90|        perturb >>= PERTURB_SHIFT;
  ------------------
  |  |  323|     90|#define PERTURB_SHIFT 5
  ------------------
 1050|     90|        i = mask & (i*5 + perturb + 1);
 1051|     90|    }
 1052|      0|    Py_UNREACHABLE();
  ------------------
  |  |  264|      0|#  define Py_UNREACHABLE() __builtin_unreachable()
  ------------------
 1053|    290|}
dictobject.c:delitemif_lock_held:
 2984|     30|{
 2985|     30|    PyDictObject *mp = _PyAnyDict_CAST(op);
  ------------------
  |  |  311|     30|    (assert(PyAnyDict_Check(op)), _Py_CAST(PyDictObject*, op))
  |  |  ------------------
  |  |  |  |   37|     30|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (2985:24): [True: 30, False: 0]
  |  Branch (2985:24): [True: 0, False: 0]
  ------------------
 2986|     30|    assert(can_modify_dict(mp));
  ------------------
  |  Branch (2986:5): [True: 30, False: 0]
  ------------------
 2987|       |
 2988|     30|    Py_ssize_t ix;
 2989|     30|    Py_hash_t hash;
 2990|     30|    PyObject *old_value;
 2991|     30|    int res;
 2992|       |
 2993|     30|    assert(key);
  ------------------
  |  Branch (2993:5): [True: 30, False: 0]
  ------------------
 2994|     30|    hash = PyObject_Hash(key);
 2995|     30|    if (hash == -1)
  ------------------
  |  Branch (2995:9): [True: 0, False: 30]
  ------------------
 2996|      0|        return -1;
 2997|     30|    ix = _Py_dict_lookup(mp, key, hash, &old_value);
 2998|     30|    if (ix == DKIX_ERROR) {
  ------------------
  |  |  186|     30|#define DKIX_ERROR (-3)
  ------------------
  |  Branch (2998:9): [True: 0, False: 30]
  ------------------
 2999|      0|        return -1;
 3000|      0|    }
 3001|     30|    if (ix == DKIX_EMPTY || old_value == NULL) {
  ------------------
  |  |  184|     60|#define DKIX_EMPTY (-1)
  ------------------
  |  Branch (3001:9): [True: 0, False: 30]
  |  Branch (3001:29): [True: 0, False: 30]
  ------------------
 3002|      0|        return 0;
 3003|      0|    }
 3004|       |
 3005|     30|    res = predicate(old_value, arg);
 3006|     30|    if (res == -1)
  ------------------
  |  Branch (3006:9): [True: 0, False: 30]
  ------------------
 3007|      0|        return -1;
 3008|       |
 3009|     30|    if (res > 0) {
  ------------------
  |  Branch (3009:9): [True: 30, False: 0]
  ------------------
 3010|     30|        _PyDict_NotifyEvent(PyDict_EVENT_DELETED, mp, key, NULL);
 3011|     30|        delitem_common(mp, hash, ix, old_value);
 3012|     30|        return 1;
 3013|     30|    } else {
 3014|      0|        return 0;
 3015|      0|    }
 3016|     30|}
dictobject.c:clear_lock_held:
 3052|      2|{
 3053|      2|    if (!PyDict_Check(op)) {
  ------------------
  |  |   18|      2|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      2|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (3053:9): [True: 0, False: 2]
  ------------------
 3054|      0|        return;
 3055|      0|    }
 3056|      2|    PyDictObject *mp = (PyDictObject *)op;
 3057|      2|    assert(can_modify_dict(mp));
  ------------------
  |  Branch (3057:5): [True: 2, False: 0]
  ------------------
 3058|       |
 3059|      2|    PyDictKeysObject *oldkeys;
 3060|      2|    PyDictValues *oldvalues;
 3061|      2|    Py_ssize_t i, n;
 3062|       |
 3063|      2|    oldkeys = mp->ma_keys;
 3064|      2|    oldvalues = mp->ma_values;
 3065|      2|    if (oldkeys == Py_EMPTY_KEYS) {
  ------------------
  |  |  645|      2|#define Py_EMPTY_KEYS &empty_keys_struct
  ------------------
  |  Branch (3065:9): [True: 0, False: 2]
  ------------------
 3066|      0|        return;
 3067|      0|    }
 3068|       |    /* Empty the dict... */
 3069|      2|    _PyDict_NotifyEvent(PyDict_EVENT_CLEARED, mp, NULL, NULL);
 3070|       |    // We don't inc ref empty keys because they're immortal
 3071|      2|    ensure_shared_on_resize(mp);
 3072|      2|    STORE_USED(mp, 0);
  ------------------
  |  |  321|      2|#define STORE_USED(mp, used) FT_ATOMIC_STORE_SSIZE_RELAXED(mp->ma_used, used)
  |  |  ------------------
  |  |  |  |  194|      2|#define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) value = new_value
  |  |  ------------------
  ------------------
 3073|      2|    if (oldvalues == NULL) {
  ------------------
  |  Branch (3073:9): [True: 2, False: 0]
  ------------------
 3074|      2|        set_keys(mp, Py_EMPTY_KEYS);
  ------------------
  |  |  645|      2|#define Py_EMPTY_KEYS &empty_keys_struct
  ------------------
 3075|      2|        assert(oldkeys->dk_refcnt == 1);
  ------------------
  |  Branch (3075:9): [True: 2, False: 0]
  ------------------
 3076|      2|        dictkeys_decref(oldkeys, IS_DICT_SHARED(mp));
  ------------------
  |  |  258|      2|#define IS_DICT_SHARED(mp) (false)
  ------------------
 3077|      2|    }
 3078|      0|    else if (oldvalues->embedded) {
  ------------------
  |  Branch (3078:14): [True: 0, False: 0]
  ------------------
 3079|      0|        clear_embedded_values(oldvalues, oldkeys->dk_nentries);
 3080|      0|    }
 3081|      0|    else {
 3082|      0|        set_values(mp, NULL);
 3083|      0|        set_keys(mp, Py_EMPTY_KEYS);
  ------------------
  |  |  645|      0|#define Py_EMPTY_KEYS &empty_keys_struct
  ------------------
 3084|      0|        n = oldkeys->dk_nentries;
 3085|      0|        for (i = 0; i < n; i++) {
  ------------------
  |  Branch (3085:21): [True: 0, False: 0]
  ------------------
 3086|      0|            PyObject *tmp = oldvalues->values[i];
 3087|      0|            FT_ATOMIC_STORE_PTR_RELEASE(oldvalues->values[i], NULL);
  ------------------
  |  |  164|      0|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  ------------------
 3088|      0|            Py_XDECREF(tmp);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3089|      0|        }
 3090|      0|        free_values(oldvalues, IS_DICT_SHARED(mp));
  ------------------
  |  |  258|      0|#define IS_DICT_SHARED(mp) (false)
  ------------------
 3091|      0|        dictkeys_decref(oldkeys, IS_DICT_SHARED(mp));
  ------------------
  |  |  258|      0|#define IS_DICT_SHARED(mp) (false)
  ------------------
 3092|      0|    }
 3093|      2|    ASSERT_CONSISTENT(mp);
  ------------------
  |  |  653|      2|#  define ASSERT_CONSISTENT(op) assert(_PyDict_CheckConsistency((PyObject *)(op), 0))
  ------------------
  |  Branch (3093:5): [True: 2, False: 0]
  ------------------
 3094|      2|}
dictobject.c:pop_lock_held:
 3249|     67|{
 3250|     67|    if (!PyDict_Check(op)) {
  ------------------
  |  |   18|     67|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     67|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (3250:9): [True: 0, False: 67]
  ------------------
 3251|      0|        if (result) {
  ------------------
  |  Branch (3251:13): [True: 0, False: 0]
  ------------------
 3252|      0|            *result = NULL;
 3253|      0|        }
 3254|      0|        if (PyFrozenDict_Check(op)) {
  ------------------
  |  |   37|      0|#define PyFrozenDict_Check(op) PyObject_TypeCheck((op), &PyFrozenDict_Type)
  |  |  ------------------
  |  |  |  |  378|      0|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (378:40): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3255|      0|            frozendict_does_not_support("deletion");
  ------------------
  |  | 2728|      0|    PyErr_SetString(PyExc_TypeError, "frozendict object does " \
  |  | 2729|      0|                    "not support item " WHAT)
  ------------------
 3256|      0|        }
 3257|      0|        else {
 3258|      0|            PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
 3259|      0|        }
 3260|      0|        return -1;
 3261|      0|    }
 3262|     67|    PyDictObject *dict = (PyDictObject *)op;
 3263|     67|    assert(can_modify_dict(dict));
  ------------------
  |  Branch (3263:5): [True: 67, False: 0]
  ------------------
 3264|       |
 3265|     67|    if (dict->ma_used == 0) {
  ------------------
  |  Branch (3265:9): [True: 0, False: 67]
  ------------------
 3266|      0|        if (result) {
  ------------------
  |  Branch (3266:13): [True: 0, False: 0]
  ------------------
 3267|      0|            *result = NULL;
 3268|      0|        }
 3269|      0|        return 0;
 3270|      0|    }
 3271|       |
 3272|     67|    Py_hash_t hash = _PyObject_HashFast(key);
 3273|     67|    if (hash == -1) {
  ------------------
  |  Branch (3273:9): [True: 0, False: 67]
  ------------------
 3274|      0|        dict_unhashable_type(op, key);
 3275|      0|        if (result) {
  ------------------
  |  Branch (3275:13): [True: 0, False: 0]
  ------------------
 3276|      0|            *result = NULL;
 3277|      0|        }
 3278|      0|        return -1;
 3279|      0|    }
 3280|     67|    return _PyDict_Pop_KnownHash(dict, key, hash, result);
 3281|     67|}
dictobject.c:dict_pop_default:
 3314|     27|{
 3315|     27|    PyObject *result;
 3316|     27|    if (PyDict_Pop(dict, key, &result) == 0) {
  ------------------
  |  Branch (3316:9): [True: 0, False: 27]
  ------------------
 3317|      0|        if (default_value != NULL) {
  ------------------
  |  Branch (3317:13): [True: 0, False: 0]
  ------------------
 3318|      0|            return Py_NewRef(default_value);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3319|      0|        }
 3320|      0|        _PyErr_SetKeyError(key);
 3321|      0|        return NULL;
 3322|      0|    }
 3323|     27|    return result;
 3324|     27|}
dictobject.c:keys_lock_held:
 3735|      4|{
 3736|      4|    ASSERT_DICT_LOCKED(dict);
 3737|       |
 3738|      4|    if (dict == NULL || !PyAnyDict_Check(dict)) {
  ------------------
  |  |   43|      4|    (PyDict_Check(ob) || PyFrozenDict_Check(ob))
  |  |  ------------------
  |  |  |  |   18|      4|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      8|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (760:41): [True: 4, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (PyDict_Check(ob) || PyFrozenDict_Check(ob))
  |  |  ------------------
  |  |  |  |   37|      0|#define PyFrozenDict_Check(op) PyObject_TypeCheck((op), &PyFrozenDict_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |  378|      0|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (378:40): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3738:9): [True: 0, False: 4]
  ------------------
 3739|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
 3740|      0|        return NULL;
 3741|      0|    }
 3742|      4|    PyDictObject *mp = (PyDictObject *)dict;
 3743|      4|    PyObject *v;
 3744|      4|    Py_ssize_t n;
 3745|       |
 3746|      4|  again:
 3747|      4|    n = mp->ma_used;
 3748|      4|    v = PyList_New(n);
 3749|      4|    if (v == NULL)
  ------------------
  |  Branch (3749:9): [True: 0, False: 4]
  ------------------
 3750|      0|        return NULL;
 3751|      4|    if (n != mp->ma_used) {
  ------------------
  |  Branch (3751:9): [True: 0, False: 4]
  ------------------
 3752|       |        /* Durnit.  The allocations caused the dict to resize.
 3753|       |         * Just start over, this shouldn't normally happen.
 3754|       |         */
 3755|      0|        Py_DECREF(v);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3756|      0|        goto again;
 3757|      0|    }
 3758|       |
 3759|       |    /* Nothing we do below makes any function calls. */
 3760|      4|    Py_ssize_t j = 0, pos = 0;
 3761|      4|    PyObject *key;
 3762|    877|    while (_PyDict_Next((PyObject*)mp, &pos, &key, NULL, NULL)) {
  ------------------
  |  Branch (3762:12): [True: 873, False: 4]
  ------------------
 3763|    873|        assert(j < n);
  ------------------
  |  Branch (3763:9): [True: 873, False: 0]
  ------------------
 3764|    873|        PyList_SET_ITEM(v, j, Py_NewRef(key));
  ------------------
  |  |   50|    873|    PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|    873|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    873|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|    873|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    873|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3765|    873|        j++;
 3766|    873|    }
 3767|      4|    assert(j == n);
  ------------------
  |  Branch (3767:5): [True: 4, False: 0]
  ------------------
 3768|      4|    return v;
 3769|      4|}
dictobject.c:dict_merge:
 4184|    131|{
 4185|    131|    assert(a != NULL);
  ------------------
  |  Branch (4185:5): [True: 131, False: 0]
  ------------------
 4186|    131|    assert(b != NULL);
  ------------------
  |  Branch (4186:5): [True: 131, False: 0]
  ------------------
 4187|    131|    assert(0 <= override && override <= 2);
  ------------------
  |  Branch (4187:5): [True: 131, False: 0]
  |  Branch (4187:5): [True: 131, False: 0]
  ------------------
 4188|       |
 4189|    131|    PyDictObject *mp = _PyAnyDict_CAST(a);
  ------------------
  |  |  311|    131|    (assert(PyAnyDict_Check(op)), _Py_CAST(PyDictObject*, op))
  |  |  ------------------
  |  |  |  |   37|    131|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (4189:24): [True: 131, False: 0]
  |  Branch (4189:24): [True: 0, False: 0]
  ------------------
 4190|      0|    int res = 0;
 4191|    131|    if (PyAnyDict_Check(b) && (Py_TYPE(b)->tp_iter == dict_iter)) {
  ------------------
  |  |   43|    262|    (PyDict_Check(ob) || PyFrozenDict_Check(ob))
  |  |  ------------------
  |  |  |  |   18|    131|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|    262|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (760:41): [True: 131, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (PyDict_Check(ob) || PyFrozenDict_Check(ob))
  |  |  ------------------
  |  |  |  |   37|      0|#define PyFrozenDict_Check(op) PyObject_TypeCheck((op), &PyFrozenDict_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |  378|      0|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (378:40): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  if (PyAnyDict_Check(b) && (Py_TYPE(b)->tp_iter == dict_iter)) {
  ------------------
  |  |  213|    131|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    131|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    131|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4191:31): [True: 131, False: 0]
  ------------------
 4192|    131|        PyDictObject *other = (PyDictObject*)b;
 4193|    131|        int res;
 4194|    131|        Py_BEGIN_CRITICAL_SECTION2(a, b);
  ------------------
  |  |   57|    131|    {
  ------------------
 4195|    131|        res = dict_dict_merge((PyDictObject *)a, other, override, dupkey);
 4196|    131|        ASSERT_CONSISTENT(a);
  ------------------
  |  |  653|    131|#  define ASSERT_CONSISTENT(op) assert(_PyDict_CheckConsistency((PyObject *)(op), 0))
  ------------------
  |  Branch (4196:9): [True: 131, False: 0]
  ------------------
 4197|    131|        Py_END_CRITICAL_SECTION2();
  ------------------
  |  |   61|    131|    }
  ------------------
 4198|    131|        return res;
 4199|    131|    }
 4200|      0|    else {
 4201|       |        /* Do it the generic, slower way */
 4202|      0|        Py_BEGIN_CRITICAL_SECTION(a);
  ------------------
  |  |   51|      0|    {
  ------------------
 4203|      0|        PyObject *keys = PyMapping_Keys(b);
 4204|      0|        PyObject *iter;
 4205|      0|        PyObject *key, *value;
 4206|      0|        int status;
 4207|       |
 4208|      0|        if (keys == NULL) {
  ------------------
  |  Branch (4208:13): [True: 0, False: 0]
  ------------------
 4209|       |            /* Docstring says this is equivalent to E.keys() so
 4210|       |             * if E doesn't have a .keys() method we want
 4211|       |             * AttributeError to percolate up.  Might as well
 4212|       |             * do the same for any other error.
 4213|       |             */
 4214|      0|            res = -1;
 4215|      0|            goto slow_exit;
 4216|      0|        }
 4217|       |
 4218|      0|        iter = PyObject_GetIter(keys);
 4219|      0|        Py_DECREF(keys);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4220|      0|        if (iter == NULL) {
  ------------------
  |  Branch (4220:13): [True: 0, False: 0]
  ------------------
 4221|      0|            res = -1;
 4222|      0|            goto slow_exit;
 4223|      0|        }
 4224|       |
 4225|      0|        for (key = PyIter_Next(iter); key; key = PyIter_Next(iter)) {
  ------------------
  |  Branch (4225:39): [True: 0, False: 0]
  ------------------
 4226|      0|            if (override != 1) {
  ------------------
  |  Branch (4226:17): [True: 0, False: 0]
  ------------------
 4227|      0|                status = dict_contains(a, key);
 4228|      0|                if (status != 0) {
  ------------------
  |  Branch (4228:21): [True: 0, False: 0]
  ------------------
 4229|      0|                    if (status > 0) {
  ------------------
  |  Branch (4229:25): [True: 0, False: 0]
  ------------------
 4230|      0|                        if (dupkey == NULL) {
  ------------------
  |  Branch (4230:29): [True: 0, False: 0]
  ------------------
 4231|      0|                            Py_DECREF(key);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4232|      0|                            continue;
 4233|      0|                        }
 4234|      0|                        *dupkey = key;
 4235|      0|                        res = -2;
 4236|      0|                    }
 4237|      0|                    else {
 4238|      0|                        Py_DECREF(key);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4239|      0|                        res = -1;
 4240|      0|                    }
 4241|      0|                    Py_DECREF(iter);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4242|      0|                    goto slow_exit;
 4243|      0|                }
 4244|      0|            }
 4245|      0|            value = PyObject_GetItem(b, key);
 4246|      0|            if (value == NULL) {
  ------------------
  |  Branch (4246:17): [True: 0, False: 0]
  ------------------
 4247|      0|                Py_DECREF(iter);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4248|      0|                Py_DECREF(key);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4249|      0|                res = -1;
 4250|      0|                goto slow_exit;
 4251|      0|            }
 4252|      0|            status = setitem_lock_held(mp, key, value);
 4253|      0|            Py_DECREF(key);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4254|      0|            Py_DECREF(value);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4255|      0|            if (status < 0) {
  ------------------
  |  Branch (4255:17): [True: 0, False: 0]
  ------------------
 4256|      0|                Py_DECREF(iter);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4257|      0|                res = -1;
 4258|      0|                goto slow_exit;
 4259|      0|                return -1;
 4260|      0|            }
 4261|      0|        }
 4262|      0|        Py_DECREF(iter);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4263|      0|        if (PyErr_Occurred()) {
  ------------------
  |  Branch (4263:13): [True: 0, False: 0]
  ------------------
 4264|       |            /* Iterator completed, via error */
 4265|      0|            res = -1;
 4266|      0|            goto slow_exit;
 4267|      0|        }
 4268|       |
 4269|      0|slow_exit:
 4270|      0|        ASSERT_CONSISTENT(a);
  ------------------
  |  |  653|      0|#  define ASSERT_CONSISTENT(op) assert(_PyDict_CheckConsistency((PyObject *)(op), 0))
  ------------------
  |  Branch (4270:9): [True: 0, False: 0]
  ------------------
 4271|      0|        Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|      0|    }
  ------------------
 4272|      0|        return res;
 4273|      0|    }
 4274|    131|}
dictobject.c:dict_dict_merge:
 4089|    131|{
 4090|    131|    assert(can_modify_dict(mp));
  ------------------
  |  Branch (4090:5): [True: 131, False: 0]
  ------------------
 4091|    131|    ASSERT_DICT_LOCKED(other);
 4092|       |
 4093|    131|    if (other == mp || other->ma_used == 0)
  ------------------
  |  Branch (4093:9): [True: 0, False: 131]
  |  Branch (4093:24): [True: 93, False: 38]
  ------------------
 4094|       |        /* a.update(a) or a.update({}); nothing to do */
 4095|     93|        return 0;
 4096|     38|    if (mp->ma_used == 0) {
  ------------------
  |  Branch (4096:9): [True: 18, False: 20]
  ------------------
 4097|       |        /* Since the target dict is empty, _PyDict_Contains_KnownHash()
 4098|       |         * always returns 0.  Setting override to 1
 4099|       |         * skips the unnecessary test.
 4100|       |         */
 4101|     18|        override = 1;
 4102|     18|        PyDictKeysObject *okeys = other->ma_keys;
 4103|       |
 4104|       |        // If other is clean, combined, and just allocated, just clone it.
 4105|     18|        if (mp->ma_values == NULL &&
  ------------------
  |  Branch (4105:13): [True: 18, False: 0]
  ------------------
 4106|     18|            other->ma_values == NULL &&
  ------------------
  |  Branch (4106:13): [True: 18, False: 0]
  ------------------
 4107|     18|            other->ma_used == okeys->dk_nentries &&
  ------------------
  |  Branch (4107:13): [True: 18, False: 0]
  ------------------
 4108|     18|            (DK_LOG_SIZE(okeys) == PyDict_LOG_MINSIZE ||
  ------------------
  |  |  260|     18|#define DK_LOG_SIZE(dk)  _Py_RVALUE((dk)->dk_log2_size)
  |  |  ------------------
  |  |  |  |  277|     18|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  ------------------
  ------------------
                          (DK_LOG_SIZE(okeys) == PyDict_LOG_MINSIZE ||
  ------------------
  |  |  115|     36|#define PyDict_LOG_MINSIZE 3
  ------------------
  |  Branch (4108:14): [True: 17, False: 1]
  ------------------
 4109|      1|             USABLE_FRACTION(DK_SIZE(okeys)/2) < other->ma_used)
  ------------------
  |  |  575|      1|#define USABLE_FRACTION(n) (((n) << 1)/3)
  ------------------
  |  Branch (4109:14): [True: 1, False: 0]
  ------------------
 4110|     18|        ) {
 4111|     18|            _PyDict_NotifyEvent(PyDict_EVENT_CLONED, mp, (PyObject *)other, NULL);
 4112|     18|            PyDictKeysObject *keys = clone_combined_dict_keys(other);
 4113|     18|            if (keys == NULL)
  ------------------
  |  Branch (4113:17): [True: 0, False: 18]
  ------------------
 4114|      0|                return -1;
 4115|       |
 4116|     18|            ensure_shared_on_resize(mp);
 4117|     18|            dictkeys_decref(mp->ma_keys, IS_DICT_SHARED(mp));
  ------------------
  |  |  258|     18|#define IS_DICT_SHARED(mp) (false)
  ------------------
 4118|     18|            set_keys(mp, keys);
 4119|     18|            STORE_USED(mp, other->ma_used);
  ------------------
  |  |  321|     18|#define STORE_USED(mp, used) FT_ATOMIC_STORE_SSIZE_RELAXED(mp->ma_used, used)
  |  |  ------------------
  |  |  |  |  194|     18|#define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) value = new_value
  |  |  ------------------
  ------------------
 4120|     18|            ASSERT_CONSISTENT(mp);
  ------------------
  |  |  653|     18|#  define ASSERT_CONSISTENT(op) assert(_PyDict_CheckConsistency((PyObject *)(op), 0))
  ------------------
  |  Branch (4120:13): [True: 18, False: 0]
  ------------------
 4121|       |
 4122|     18|            if (_PyObject_GC_IS_TRACKED(other) && !_PyObject_GC_IS_TRACKED(mp)) {
  ------------------
  |  |   81|     36|#define _PyObject_GC_IS_TRACKED(op) _PyObject_GC_IS_TRACKED(_Py_CAST(PyObject*, op))
  |  |  ------------------
  |  |  |  |   37|     18|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  |  Branch (81:37): [True: 18, False: 0]
  |  |  ------------------
  ------------------
                          if (_PyObject_GC_IS_TRACKED(other) && !_PyObject_GC_IS_TRACKED(mp)) {
  ------------------
  |  |   81|     18|#define _PyObject_GC_IS_TRACKED(op) _PyObject_GC_IS_TRACKED(_Py_CAST(PyObject*, op))
  |  |  ------------------
  |  |  |  |   37|     18|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (4122:51): [True: 0, False: 18]
  ------------------
 4123|       |                /* Maintain tracking. */
 4124|      0|                _PyObject_GC_TRACK(mp);
  ------------------
  |  |  513|      0|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4125|      0|            }
 4126|       |
 4127|     18|            return 0;
 4128|     18|        }
 4129|     18|    }
 4130|       |    /* Do one big resize at the start, rather than
 4131|       |        * incrementally resizing as we insert new items.  Expect
 4132|       |        * that there will be no (or few) overlapping keys.
 4133|       |        */
 4134|     20|    if (USABLE_FRACTION(DK_SIZE(mp->ma_keys)) < other->ma_used) {
  ------------------
  |  |  575|     20|#define USABLE_FRACTION(n) (((n) << 1)/3)
  ------------------
  |  Branch (4134:9): [True: 0, False: 20]
  ------------------
 4135|      0|        int unicode = DK_IS_UNICODE(other->ma_keys);
  ------------------
  |  |  282|      0|#define DK_IS_UNICODE(dk) ((dk)->dk_kind != DICT_KEYS_GENERAL)
  ------------------
 4136|      0|        if (dictresize(mp, estimate_log2_keysize(mp->ma_used + other->ma_used),
  ------------------
  |  Branch (4136:13): [True: 0, False: 0]
  ------------------
 4137|      0|                        unicode)) {
 4138|      0|            return -1;
 4139|      0|        }
 4140|      0|    }
 4141|       |
 4142|     20|    Py_ssize_t orig_size = other->ma_used;
 4143|     20|    Py_ssize_t pos = 0;
 4144|     20|    Py_hash_t hash;
 4145|     20|    PyObject *key, *value;
 4146|       |
 4147|    354|    while (_PyDict_Next((PyObject*)other, &pos, &key, &value, &hash)) {
  ------------------
  |  Branch (4147:12): [True: 334, False: 20]
  ------------------
 4148|    334|        int err = 0;
 4149|    334|        Py_INCREF(key);
  ------------------
  |  |  310|    334|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    334|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    334|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4150|    334|        Py_INCREF(value);
  ------------------
  |  |  310|    334|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    334|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    334|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4151|    334|        if (override == 1) {
  ------------------
  |  Branch (4151:13): [True: 334, False: 0]
  ------------------
 4152|    334|            err = insertdict(mp, Py_NewRef(key), hash, Py_NewRef(value));
  ------------------
  |  |  550|    334|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    334|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    334|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                          err = insertdict(mp, Py_NewRef(key), hash, Py_NewRef(value));
  ------------------
  |  |  550|    334|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    334|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    334|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4153|    334|        }
 4154|      0|        else {
 4155|      0|            err = _PyDict_Contains_KnownHash((PyObject *)mp, key, hash);
 4156|      0|            if (err == 0) {
  ------------------
  |  Branch (4156:17): [True: 0, False: 0]
  ------------------
 4157|      0|                err = insertdict(mp, Py_NewRef(key), hash, Py_NewRef(value));
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                              err = insertdict(mp, Py_NewRef(key), hash, Py_NewRef(value));
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4158|      0|            }
 4159|      0|            else if (err > 0) {
  ------------------
  |  Branch (4159:22): [True: 0, False: 0]
  ------------------
 4160|      0|                if (dupkey != NULL) {
  ------------------
  |  Branch (4160:21): [True: 0, False: 0]
  ------------------
 4161|      0|                    *dupkey = key;
 4162|      0|                    Py_DECREF(value);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4163|      0|                    return -2;
 4164|      0|                }
 4165|      0|                err = 0;
 4166|      0|            }
 4167|      0|        }
 4168|    334|        Py_DECREF(value);
  ------------------
  |  |  430|    334|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    334|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    334|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4169|    334|        Py_DECREF(key);
  ------------------
  |  |  430|    334|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    334|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    334|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4170|    334|        if (err != 0)
  ------------------
  |  Branch (4170:13): [True: 0, False: 334]
  ------------------
 4171|      0|            return -1;
 4172|       |
 4173|    334|        if (orig_size != other->ma_used) {
  ------------------
  |  Branch (4173:13): [True: 0, False: 334]
  ------------------
 4174|      0|            PyErr_SetString(PyExc_RuntimeError,
 4175|      0|                    "dict mutated during update");
 4176|      0|            return -1;
 4177|      0|        }
 4178|    334|    }
 4179|     20|    return 0;
 4180|     20|}
dictobject.c:clone_combined_dict_keys:
  967|    193|{
  968|    193|    assert(PyAnyDict_Check(orig));
  ------------------
  |  Branch (968:5): [True: 193, False: 0]
  |  Branch (968:5): [True: 0, False: 0]
  ------------------
  969|    193|    assert(Py_TYPE(orig)->tp_iter == dict_iter);
  ------------------
  |  Branch (969:5): [True: 193, False: 0]
  ------------------
  970|    193|    assert(orig->ma_values == NULL);
  ------------------
  |  Branch (970:5): [True: 193, False: 0]
  ------------------
  971|    193|    assert(orig->ma_keys != Py_EMPTY_KEYS);
  ------------------
  |  Branch (971:5): [True: 193, False: 0]
  ------------------
  972|    193|    assert(orig->ma_keys->dk_refcnt == 1);
  ------------------
  |  Branch (972:5): [True: 193, False: 0]
  ------------------
  973|       |
  974|    193|    if (!PyFrozenDict_Check(orig)) {
  ------------------
  |  |   37|    193|#define PyFrozenDict_Check(op) PyObject_TypeCheck((op), &PyFrozenDict_Type)
  |  |  ------------------
  |  |  |  |  378|    193|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    193|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    193|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (974:9): [True: 193, False: 0]
  ------------------
  975|    193|        ASSERT_DICT_LOCKED(orig);
  976|    193|    }
  977|       |
  978|    193|    size_t keys_size = _PyDict_KeysSize(orig->ma_keys);
  979|    193|    PyDictKeysObject *keys = PyMem_Malloc(keys_size);
  980|    193|    if (keys == NULL) {
  ------------------
  |  Branch (980:9): [True: 0, False: 193]
  ------------------
  981|      0|        PyErr_NoMemory();
  982|      0|        return NULL;
  983|      0|    }
  984|       |
  985|    193|    memcpy(keys, orig->ma_keys, keys_size);
  986|       |
  987|       |    /* After copying key/value pairs, we need to incref all
  988|       |       keys and values and they are about to be co-owned by a
  989|       |       new dict object. */
  990|    193|    PyObject **pkey, **pvalue;
  991|    193|    size_t offs;
  992|    193|    if (DK_IS_UNICODE(orig->ma_keys)) {
  ------------------
  |  |  282|    193|#define DK_IS_UNICODE(dk) ((dk)->dk_kind != DICT_KEYS_GENERAL)
  |  |  ------------------
  |  |  |  Branch (282:27): [True: 193, False: 0]
  |  |  ------------------
  ------------------
  993|    193|        PyDictUnicodeEntry *ep0 = DK_UNICODE_ENTRIES(keys);
  994|    193|        pkey = &ep0->me_key;
  995|    193|        pvalue = &ep0->me_value;
  996|    193|        offs = sizeof(PyDictUnicodeEntry) / sizeof(PyObject*);
  997|    193|    }
  998|      0|    else {
  999|      0|        PyDictKeyEntry *ep0 = DK_ENTRIES(keys);
 1000|      0|        pkey = &ep0->me_key;
 1001|      0|        pvalue = &ep0->me_value;
 1002|      0|        offs = sizeof(PyDictKeyEntry) / sizeof(PyObject*);
 1003|      0|    }
 1004|       |
 1005|    193|    Py_ssize_t n = keys->dk_nentries;
 1006|  2.33k|    for (Py_ssize_t i = 0; i < n; i++) {
  ------------------
  |  Branch (1006:28): [True: 2.14k, False: 193]
  ------------------
 1007|  2.14k|        PyObject *value = *pvalue;
 1008|  2.14k|        if (value != NULL) {
  ------------------
  |  Branch (1008:13): [True: 2.00k, False: 139]
  ------------------
 1009|  2.00k|            Py_INCREF(value);
  ------------------
  |  |  310|  2.00k|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  2.00k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.00k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1010|  2.00k|            Py_INCREF(*pkey);
  ------------------
  |  |  310|  2.00k|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  2.00k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.00k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1011|  2.00k|        }
 1012|  2.14k|        pvalue += offs;
 1013|  2.14k|        pkey += offs;
 1014|  2.14k|    }
 1015|       |
 1016|       |    /* Since we copied the keys table we now have an extra reference
 1017|       |       in the system.  Manually call increment _Py_RefTotal to signal that
 1018|       |       we have it now; calling dictkeys_incref would be an error as
 1019|       |       keys->dk_refcnt is already set to 1 (after memcpy). */
 1020|       |#ifdef Py_REF_DEBUG
 1021|       |    _Py_IncRefTotal(_PyThreadState_GET());
 1022|       |#endif
 1023|    193|    return keys;
 1024|    193|}
dictobject.c:dict_merge_api:
 4278|    122|{
 4279|       |    /* We accept for the argument either a concrete dictionary object,
 4280|       |     * or an abstract "mapping" object.  For the former, we can do
 4281|       |     * things quite efficiently.  For the latter, we only require that
 4282|       |     * PyMapping_Keys() and PyObject_GetItem() be supported.
 4283|       |     */
 4284|    122|    if (a == NULL || !PyDict_Check(a) || b == NULL) {
  ------------------
  |  |   18|    122|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|    244|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (4284:9): [True: 0, False: 122]
  |  Branch (4284:22): [True: 0, False: 122]
  |  Branch (4284:42): [True: 0, False: 122]
  ------------------
 4285|      0|        if (a != NULL && PyFrozenDict_Check(a)) {
  ------------------
  |  |   37|      0|#define PyFrozenDict_Check(op) PyObject_TypeCheck((op), &PyFrozenDict_Type)
  |  |  ------------------
  |  |  |  |  378|      0|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (378:40): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4285:13): [True: 0, False: 0]
  ------------------
 4286|      0|            frozendict_does_not_support("assignment");
  ------------------
  |  | 2728|      0|    PyErr_SetString(PyExc_TypeError, "frozendict object does " \
  |  | 2729|      0|                    "not support item " WHAT)
  ------------------
 4287|      0|        }
 4288|      0|        else {
 4289|      0|            PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
 4290|      0|        }
 4291|      0|        return -1;
 4292|      0|    }
 4293|    122|    return dict_merge(a, b, override, dupkey);
 4294|    122|}
dictobject.c:copy_lock_held:
 4351|    176|{
 4352|    176|    PyObject *copy;
 4353|    176|    PyDictObject *mp;
 4354|       |
 4355|       |    // frozendict is immutable and so doesn't need critical section
 4356|    176|    if (!PyFrozenDict_Check(o)) {
  ------------------
  |  |   37|    176|#define PyFrozenDict_Check(op) PyObject_TypeCheck((op), &PyFrozenDict_Type)
  |  |  ------------------
  |  |  |  |  378|    176|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    176|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    176|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4356:9): [True: 176, False: 0]
  ------------------
 4357|    176|        ASSERT_DICT_LOCKED(o);
 4358|    176|    }
 4359|       |
 4360|    176|    mp = (PyDictObject *)o;
 4361|    176|    if (mp->ma_used == 0) {
  ------------------
  |  Branch (4361:9): [True: 1, False: 175]
  ------------------
 4362|       |        /* The dict is empty; just return a new dict. */
 4363|      1|        if (as_frozendict) {
  ------------------
  |  Branch (4363:13): [True: 0, False: 1]
  ------------------
 4364|      0|            return PyFrozenDict_New(NULL);
 4365|      0|        }
 4366|      1|        else {
 4367|      1|            return PyDict_New();
 4368|      1|        }
 4369|      1|    }
 4370|       |
 4371|    175|    if (_PyDict_HasSplitTable(mp)) {
  ------------------
  |  |   56|    175|#define _PyDict_HasSplitTable(d) ((d)->ma_values != NULL)
  |  |  ------------------
  |  |  |  Branch (56:34): [True: 0, False: 175]
  |  |  ------------------
  ------------------
 4372|      0|        PyDictObject *split_copy;
 4373|      0|        PyDictValues *newvalues = copy_values(mp->ma_values);
 4374|      0|        if (newvalues == NULL) {
  ------------------
  |  Branch (4374:13): [True: 0, False: 0]
  ------------------
 4375|      0|            return PyErr_NoMemory();
 4376|      0|        }
 4377|      0|        if (as_frozendict) {
  ------------------
  |  Branch (4377:13): [True: 0, False: 0]
  ------------------
 4378|      0|            split_copy = (PyDictObject *)PyObject_GC_New(PyFrozenDictObject,
  ------------------
  |  |  181|      0|    _Py_CAST(type*, _PyObject_GC_New(typeobj))
  |  |  ------------------
  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
 4379|      0|                                                         &PyFrozenDict_Type);
 4380|      0|        }
 4381|      0|        else {
 4382|      0|            split_copy = PyObject_GC_New(PyDictObject, &PyDict_Type);
  ------------------
  |  |  181|      0|    _Py_CAST(type*, _PyObject_GC_New(typeobj))
  |  |  ------------------
  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
 4383|      0|        }
 4384|      0|        if (split_copy == NULL) {
  ------------------
  |  Branch (4384:13): [True: 0, False: 0]
  ------------------
 4385|      0|            free_values(newvalues, false);
 4386|      0|            return NULL;
 4387|      0|        }
 4388|      0|        for (size_t i = 0; i < newvalues->capacity; i++) {
  ------------------
  |  Branch (4388:28): [True: 0, False: 0]
  ------------------
 4389|      0|            Py_XINCREF(newvalues->values[i]);
  ------------------
  |  |  514|      0|#  define Py_XINCREF(op) Py_XINCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4390|      0|        }
 4391|      0|        split_copy->ma_values = newvalues;
 4392|      0|        split_copy->ma_keys = mp->ma_keys;
 4393|      0|        split_copy->ma_used = mp->ma_used;
 4394|      0|        split_copy->_ma_watcher_tag = 0;
 4395|      0|        dictkeys_incref(mp->ma_keys);
 4396|      0|        if (as_frozendict) {
  ------------------
  |  Branch (4396:13): [True: 0, False: 0]
  ------------------
 4397|      0|            PyFrozenDictObject *frozen = (PyFrozenDictObject *)split_copy;
 4398|      0|            frozen->ma_hash = -1;
 4399|      0|        }
 4400|      0|        _PyObject_GC_TRACK(split_copy);
  ------------------
  |  |  513|      0|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4401|      0|        return (PyObject *)split_copy;
 4402|      0|    }
 4403|       |
 4404|    175|    if (Py_TYPE(mp)->tp_iter == dict_iter &&
  ------------------
  |  |  213|    175|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    175|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    175|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4404:9): [True: 175, False: 0]
  ------------------
 4405|    175|            mp->ma_values == NULL &&
  ------------------
  |  Branch (4405:13): [True: 175, False: 0]
  ------------------
 4406|    175|            (mp->ma_used >= (mp->ma_keys->dk_nentries * 2) / 3))
  ------------------
  |  Branch (4406:13): [True: 175, False: 0]
  ------------------
 4407|    175|    {
 4408|       |        /* Use fast-copy if:
 4409|       |
 4410|       |           (1) type(mp) doesn't override tp_iter; and
 4411|       |
 4412|       |           (2) 'mp' is not a split-dict; and
 4413|       |
 4414|       |           (3) if 'mp' is non-compact ('del' operation does not resize dicts),
 4415|       |               do fast-copy only if it has at most 1/3 non-used keys.
 4416|       |
 4417|       |           The last condition (3) is important to guard against a pathological
 4418|       |           case when a large dict is almost emptied with multiple del/pop
 4419|       |           operations and copied after that.  In cases like this, we defer to
 4420|       |           PyDict_Merge, which produces a compacted copy.
 4421|       |        */
 4422|    175|        PyDictKeysObject *keys = clone_combined_dict_keys(mp);
 4423|    175|        if (keys == NULL) {
  ------------------
  |  Branch (4423:13): [True: 0, False: 175]
  ------------------
 4424|      0|            return NULL;
 4425|      0|        }
 4426|    175|        PyDictObject *new;
 4427|    175|        if (as_frozendict) {
  ------------------
  |  Branch (4427:13): [True: 0, False: 175]
  ------------------
 4428|      0|            new = (PyDictObject *)new_frozendict(keys, NULL, 0, 0);
 4429|      0|        }
 4430|    175|        else {
 4431|    175|            new = (PyDictObject *)new_dict(keys, NULL, 0, 0);
 4432|    175|        }
 4433|    175|        if (new == NULL) {
  ------------------
  |  Branch (4433:13): [True: 0, False: 175]
  ------------------
 4434|       |            /* In case of an error, new_dict()/new_frozendict() takes care of
 4435|       |               cleaning up `keys`. */
 4436|      0|            return NULL;
 4437|      0|        }
 4438|       |
 4439|    175|        new->ma_used = mp->ma_used;
 4440|    175|        ASSERT_CONSISTENT(new);
  ------------------
  |  |  653|    175|#  define ASSERT_CONSISTENT(op) assert(_PyDict_CheckConsistency((PyObject *)(op), 0))
  ------------------
  |  Branch (4440:9): [True: 175, False: 0]
  ------------------
 4441|    175|        return (PyObject *)new;
 4442|    175|    }
 4443|       |
 4444|      0|    if (as_frozendict) {
  ------------------
  |  Branch (4444:9): [True: 0, False: 0]
  ------------------
 4445|      0|        copy = PyFrozenDict_New(NULL);
 4446|      0|    }
 4447|      0|    else {
 4448|      0|        copy = PyDict_New();
 4449|      0|    }
 4450|      0|    if (copy == NULL)
  ------------------
  |  Branch (4450:9): [True: 0, False: 0]
  ------------------
 4451|      0|        return NULL;
 4452|      0|    if (dict_merge(copy, o, 1, NULL) == 0)
  ------------------
  |  Branch (4452:9): [True: 0, False: 0]
  ------------------
 4453|      0|        return copy;
 4454|      0|    Py_DECREF(copy);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4455|       |    return NULL;
 4456|      0|}
dictobject.c:new_values:
  874|      1|{
  875|      1|    size_t n = values_size_from_count(size);
  876|      1|    PyDictValues *res = (PyDictValues *)PyMem_Malloc(n);
  877|      1|    if (res == NULL) {
  ------------------
  |  Branch (877:9): [True: 0, False: 1]
  ------------------
  878|      0|        return NULL;
  879|      0|    }
  880|      1|    res->embedded = 0;
  881|      1|    res->size = 0;
  882|      1|    assert(size < 256);
  ------------------
  |  Branch (882:5): [True: 1, False: 0]
  ------------------
  883|      1|    res->capacity = (uint8_t)size;
  884|      1|    return res;
  885|      1|}
dictobject.c:values_size_from_count:
  862|      1|{
  863|      1|    assert(count >= 1);
  ------------------
  |  Branch (863:5): [True: 1, False: 0]
  ------------------
  864|      1|    size_t suffix_size = _Py_SIZE_ROUND_UP(count, sizeof(PyObject *));
  ------------------
  |  |  213|      1|#define _Py_SIZE_ROUND_UP(n, a) (((size_t)(n) + \
  |  |  214|      1|        (size_t)((a) - 1)) & ~(size_t)((a) - 1))
  ------------------
  865|      1|    assert(suffix_size < 128);
  ------------------
  |  Branch (865:5): [True: 1, False: 0]
  ------------------
  866|      1|    assert(suffix_size % sizeof(PyObject *) == 0);
  ------------------
  |  Branch (866:5): [True: 1, False: 0]
  ------------------
  867|      1|    return (count + 1) * sizeof(PyObject *) + suffix_size;
  868|      1|}
dictobject.c:dictkeys_incref:
  467|      1|{
  468|      1|    if (FT_ATOMIC_LOAD_SSIZE_RELAXED(dk->dk_refcnt) < 0) {
  ------------------
  |  |  149|      1|#define FT_ATOMIC_LOAD_SSIZE_RELAXED(value) value
  ------------------
  |  Branch (468:9): [True: 0, False: 1]
  ------------------
  469|      0|        assert(FT_ATOMIC_LOAD_SSIZE_RELAXED(dk->dk_refcnt) == _Py_DICT_IMMORTAL_INITIAL_REFCNT);
  ------------------
  |  Branch (469:9): [True: 0, False: 0]
  ------------------
  470|      0|        return;
  471|      0|    }
  472|       |#ifdef Py_REF_DEBUG
  473|       |    _Py_IncRefTotal(_PyThreadState_GET());
  474|       |#endif
  475|      1|    INCREF_KEYS(dk);
  ------------------
  |  |  251|      1|#define INCREF_KEYS(dk)  dk->dk_refcnt++
  ------------------
  476|      1|}
dictobject.c:dict_setdefault_ref_lock_held:
 4678|  6.09k|{
 4679|  6.09k|    if (!PyDict_Check(d)) {
  ------------------
  |  |   18|  6.09k|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|  6.09k|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (4679:9): [True: 0, False: 6.09k]
  ------------------
 4680|      0|        if (PyFrozenDict_Check(d)) {
  ------------------
  |  |   37|      0|#define PyFrozenDict_Check(op) PyObject_TypeCheck((op), &PyFrozenDict_Type)
  |  |  ------------------
  |  |  |  |  378|      0|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (378:40): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4681|      0|            frozendict_does_not_support("assignment");
  ------------------
  |  | 2728|      0|    PyErr_SetString(PyExc_TypeError, "frozendict object does " \
  |  | 2729|      0|                    "not support item " WHAT)
  ------------------
 4682|      0|        }
 4683|      0|        else {
 4684|      0|            PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
 4685|      0|        }
 4686|      0|        if (result) {
  ------------------
  |  Branch (4686:13): [True: 0, False: 0]
  ------------------
 4687|      0|            *result = NULL;
 4688|      0|        }
 4689|      0|        return -1;
 4690|      0|    }
 4691|  6.09k|    assert(can_modify_dict((PyDictObject*)d));
  ------------------
  |  Branch (4691:5): [True: 6.09k, False: 0]
  ------------------
 4692|       |
 4693|  6.09k|    PyDictObject *mp = (PyDictObject *)d;
 4694|  6.09k|    PyObject *value;
 4695|  6.09k|    Py_hash_t hash;
 4696|  6.09k|    Py_ssize_t ix;
 4697|       |
 4698|  6.09k|    hash = _PyObject_HashFast(key);
 4699|  6.09k|    if (hash == -1) {
  ------------------
  |  Branch (4699:9): [True: 0, False: 6.09k]
  ------------------
 4700|      0|        dict_unhashable_type(d, key);
 4701|      0|        if (result) {
  ------------------
  |  Branch (4701:13): [True: 0, False: 0]
  ------------------
 4702|      0|            *result = NULL;
 4703|      0|        }
 4704|      0|        return -1;
 4705|      0|    }
 4706|       |
 4707|  6.09k|    if (mp->ma_keys == Py_EMPTY_KEYS) {
  ------------------
  |  |  645|  6.09k|#define Py_EMPTY_KEYS &empty_keys_struct
  ------------------
  |  Branch (4707:9): [True: 8, False: 6.08k]
  ------------------
 4708|      8|        if (insert_to_emptydict(mp, Py_NewRef(key), hash,
  ------------------
  |  |  550|      8|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      8|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4708:13): [True: 0, False: 8]
  ------------------
 4709|      8|                                Py_NewRef(default_value)) < 0) {
  ------------------
  |  |  550|      8|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      8|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4710|      0|            if (result) {
  ------------------
  |  Branch (4710:17): [True: 0, False: 0]
  ------------------
 4711|      0|                *result = NULL;
 4712|      0|            }
 4713|      0|            return -1;
 4714|      0|        }
 4715|      8|        if (result) {
  ------------------
  |  Branch (4715:13): [True: 1, False: 7]
  ------------------
 4716|      1|            *result = incref_result ? Py_NewRef(default_value) : default_value;
  ------------------
  |  |  550|      1|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4716:23): [True: 1, False: 0]
  ------------------
 4717|      1|        }
 4718|      8|        return 0;
 4719|      8|    }
 4720|       |
 4721|  6.08k|    if (_PyDict_HasSplitTable(mp) && PyUnicode_CheckExact(key)) {
  ------------------
  |  |   56|  12.1k|#define _PyDict_HasSplitTable(d) ((d)->ma_values != NULL)
  |  |  ------------------
  |  |  |  Branch (56:34): [True: 0, False: 6.08k]
  |  |  ------------------
  ------------------
                  if (_PyDict_HasSplitTable(mp) && PyUnicode_CheckExact(key)) {
  ------------------
  |  |  104|      0|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4722|      0|        ix = insert_split_key(mp->ma_keys, key, hash);
 4723|      0|        if (ix != DKIX_EMPTY) {
  ------------------
  |  |  184|      0|#define DKIX_EMPTY (-1)
  ------------------
  |  Branch (4723:13): [True: 0, False: 0]
  ------------------
 4724|      0|            PyObject *value = mp->ma_values->values[ix];
 4725|      0|            int already_present = value != NULL;
 4726|      0|            if (!already_present) {
  ------------------
  |  Branch (4726:17): [True: 0, False: 0]
  ------------------
 4727|      0|                _PyDict_InsertSplitValue(mp, key, default_value, ix);
 4728|      0|                value = default_value;
 4729|      0|            }
 4730|      0|            if (result) {
  ------------------
  |  Branch (4730:17): [True: 0, False: 0]
  ------------------
 4731|      0|                *result = incref_result ? Py_NewRef(value) : value;
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4731:27): [True: 0, False: 0]
  ------------------
 4732|      0|            }
 4733|      0|            return already_present;
 4734|      0|        }
 4735|       |        // No space in shared keys. Go to insert_combined_dict() below.
 4736|      0|    }
 4737|  6.08k|    else {
 4738|  6.08k|        ix = _Py_dict_lookup(mp, key, hash, &value);
 4739|  6.08k|        if (ix == DKIX_ERROR) {
  ------------------
  |  |  186|  6.08k|#define DKIX_ERROR (-3)
  ------------------
  |  Branch (4739:13): [True: 0, False: 6.08k]
  ------------------
 4740|      0|            if (result) {
  ------------------
  |  Branch (4740:17): [True: 0, False: 0]
  ------------------
 4741|      0|                *result = NULL;
 4742|      0|            }
 4743|      0|            return -1;
 4744|      0|        }
 4745|  6.08k|    }
 4746|       |
 4747|  6.08k|    if (ix == DKIX_EMPTY) {
  ------------------
  |  |  184|  6.08k|#define DKIX_EMPTY (-1)
  ------------------
  |  Branch (4747:9): [True: 4.93k, False: 1.15k]
  ------------------
 4748|  4.93k|        value = default_value;
 4749|       |
 4750|       |        // See comment to this function in insertdict.
 4751|  4.93k|        if (insert_combined_dict(mp, hash, Py_NewRef(key), Py_NewRef(value)) < 0) {
  ------------------
  |  |  550|  4.93k|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|  4.93k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  4.93k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      if (insert_combined_dict(mp, hash, Py_NewRef(key), Py_NewRef(value)) < 0) {
  ------------------
  |  |  550|  4.93k|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|  4.93k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  4.93k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4751:13): [True: 0, False: 4.93k]
  ------------------
 4752|      0|            Py_DECREF(key);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4753|      0|            Py_DECREF(value);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4754|      0|            if (result) {
  ------------------
  |  Branch (4754:17): [True: 0, False: 0]
  ------------------
 4755|      0|                *result = NULL;
 4756|      0|            }
 4757|      0|            return -1;
 4758|      0|        }
 4759|       |
 4760|  4.93k|        STORE_USED(mp, mp->ma_used + 1);
  ------------------
  |  |  321|  4.93k|#define STORE_USED(mp, used) FT_ATOMIC_STORE_SSIZE_RELAXED(mp->ma_used, used)
  |  |  ------------------
  |  |  |  |  194|  4.93k|#define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) value = new_value
  |  |  ------------------
  ------------------
 4761|  4.93k|        assert(mp->ma_keys->dk_usable >= 0);
  ------------------
  |  Branch (4761:9): [True: 4.93k, False: 0]
  ------------------
 4762|  4.93k|        ASSERT_CONSISTENT(mp);
  ------------------
  |  |  653|  4.93k|#  define ASSERT_CONSISTENT(op) assert(_PyDict_CheckConsistency((PyObject *)(op), 0))
  ------------------
  |  Branch (4762:9): [True: 4.93k, False: 0]
  ------------------
 4763|  4.93k|        if (result) {
  ------------------
  |  Branch (4763:13): [True: 3.47k, False: 1.45k]
  ------------------
 4764|  3.47k|            *result = incref_result ? Py_NewRef(value) : value;
  ------------------
  |  |  550|  3.47k|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|  3.47k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  3.47k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4764:23): [True: 3.47k, False: 0]
  ------------------
 4765|  3.47k|        }
 4766|  4.93k|        return 0;
 4767|  4.93k|    }
 4768|       |
 4769|  6.08k|    assert(value != NULL);
  ------------------
  |  Branch (4769:5): [True: 1.15k, False: 0]
  ------------------
 4770|  1.15k|    ASSERT_CONSISTENT(mp);
  ------------------
  |  |  653|  1.15k|#  define ASSERT_CONSISTENT(op) assert(_PyDict_CheckConsistency((PyObject *)(op), 0))
  ------------------
  |  Branch (4770:5): [True: 1.15k, False: 0]
  ------------------
 4771|  1.15k|    if (result) {
  ------------------
  |  Branch (4771:9): [True: 1.15k, False: 0]
  ------------------
 4772|  1.15k|        *result = incref_result ? Py_NewRef(value) : value;
  ------------------
  |  |  550|  1.15k|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|  1.15k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.15k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4772:19): [True: 1.15k, False: 0]
  ------------------
 4773|  1.15k|    }
 4774|  1.15k|    return 1;
 4775|  1.15k|}
dictobject.c:dict_update_arg:
 3914|      9|{
 3915|      9|    if (PyAnyDict_CheckExact(arg)) {
  ------------------
  |  |   41|      9|    (PyDict_CheckExact(ob) || PyFrozenDict_CheckExact(ob))
  |  |  ------------------
  |  |  |  |   19|      9|#define PyDict_CheckExact(op) Py_IS_TYPE((op), &PyDict_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |  215|     18|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      9|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      9|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (215:32): [True: 9, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (PyDict_CheckExact(ob) || PyFrozenDict_CheckExact(ob))
  |  |  ------------------
  |  |  |  |   38|      0|#define PyFrozenDict_CheckExact(op) Py_IS_TYPE((op), &PyFrozenDict_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3916|      9|        return dict_merge(self, arg, 1, NULL);
 3917|      9|    }
 3918|      0|    int has_keys = PyObject_HasAttrWithError(arg, &_Py_ID(keys));
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3919|      0|    if (has_keys < 0) {
  ------------------
  |  Branch (3919:9): [True: 0, False: 0]
  ------------------
 3920|      0|        return -1;
 3921|      0|    }
 3922|      0|    if (has_keys) {
  ------------------
  |  Branch (3922:9): [True: 0, False: 0]
  ------------------
 3923|      0|        return dict_merge(self, arg, 1, NULL);
 3924|      0|    }
 3925|      0|    return dict_merge_from_seq2(self, arg, 1);
 3926|      0|}
dictobject.c:dict_contains:
 5138|  2.46k|{
 5139|  2.46k|    Py_hash_t hash = _PyObject_HashFast(key);
 5140|  2.46k|    if (hash == -1) {
  ------------------
  |  Branch (5140:9): [True: 0, False: 2.46k]
  ------------------
 5141|      0|        dict_unhashable_type(op, key);
 5142|      0|        return -1;
 5143|      0|    }
 5144|       |
 5145|  2.46k|    return _PyDict_Contains_KnownHash(op, key, hash);
 5146|  2.46k|}
dictobject.c:dict_dealloc:
 3528|    503|{
 3529|    503|    PyDictObject *mp = (PyDictObject *)self;
 3530|    503|    _PyObject_ResurrectStart(self);
 3531|    503|    _PyDict_NotifyEvent(PyDict_EVENT_DEALLOCATED, mp, NULL, NULL);
 3532|    503|    if (_PyObject_ResurrectEnd(self)) {
  ------------------
  |  Branch (3532:9): [True: 0, False: 503]
  ------------------
 3533|      0|        return;
 3534|      0|    }
 3535|    503|    PyDictValues *values = mp->ma_values;
 3536|    503|    PyDictKeysObject *keys = mp->ma_keys;
 3537|    503|    Py_ssize_t i, n;
 3538|       |
 3539|       |    /* bpo-31095: UnTrack is needed before calling any callbacks */
 3540|    503|    PyObject_GC_UnTrack(mp);
 3541|    503|    if (values != NULL) {
  ------------------
  |  Branch (3541:9): [True: 0, False: 503]
  ------------------
 3542|      0|        if (values->embedded == 0) {
  ------------------
  |  Branch (3542:13): [True: 0, False: 0]
  ------------------
 3543|      0|            for (i = 0, n = values->capacity; i < n; i++) {
  ------------------
  |  Branch (3543:47): [True: 0, False: 0]
  ------------------
 3544|      0|                Py_XDECREF(values->values[i]);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3545|      0|            }
 3546|      0|            free_values(values, false);
 3547|      0|        }
 3548|      0|        dictkeys_decref(keys, false);
 3549|      0|    }
 3550|    503|    else if (keys != NULL) {
  ------------------
  |  Branch (3550:14): [True: 503, False: 0]
  ------------------
 3551|    503|        assert(keys->dk_refcnt == 1 || keys == Py_EMPTY_KEYS);
  ------------------
  |  Branch (3551:9): [True: 268, False: 235]
  |  Branch (3551:9): [True: 235, False: 0]
  ------------------
 3552|    503|        dictkeys_decref(keys, false);
 3553|    503|    }
 3554|    503|    if (Py_IS_TYPE(mp, &PyDict_Type)) {
  ------------------
  |  |  215|    503|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|    503|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    503|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 503, False: 0]
  |  |  ------------------
  ------------------
 3555|    503|        _Py_FREELIST_FREE(dicts, mp, Py_TYPE(mp)->tp_free);
  ------------------
  |  |   35|    503|    _PyFreeList_Free(&_Py_freelists_GET()->NAME, _PyObject_CAST(op), \
  |  |  ------------------
  |  |  |  |  171|    503|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    503|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   36|    503|                     Py_ ## NAME ## _MAXFREELIST, freefunc)
  |  |  ------------------
  |  |  |  |   16|    503|#  define Py_dicts_MAXFREELIST 80
  |  |  ------------------
  ------------------
 3556|    503|    }
 3557|      0|    else {
 3558|      0|        Py_TYPE(mp)->tp_free((PyObject *)mp);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3559|      0|    }
 3560|    503|}
dictobject.c:dict_length:
 3667|      1|{
 3668|      1|    return GET_USED(_PyAnyDict_CAST(self));
  ------------------
  |  |  313|      1|#define GET_USED(ep) FT_ATOMIC_LOAD_SSIZE_RELAXED((ep)->ma_used)
  |  |  ------------------
  |  |  |  |  149|      4|#define FT_ATOMIC_LOAD_SSIZE_RELAXED(value) value
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (149:45): [True: 1, False: 0]
  |  |  |  |  |  Branch (149:45): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3669|      1|}
dictobject.c:dict_traverse:
 4953|    836|{
 4954|    836|    PyDictObject *mp = (PyDictObject *)op;
 4955|    836|    PyDictKeysObject *keys = mp->ma_keys;
 4956|    836|    Py_ssize_t i, n = keys->dk_nentries;
 4957|       |
 4958|    836|    if (DK_IS_UNICODE(keys)) {
  ------------------
  |  |  282|    836|#define DK_IS_UNICODE(dk) ((dk)->dk_kind != DICT_KEYS_GENERAL)
  |  |  ------------------
  |  |  |  Branch (282:27): [True: 756, False: 80]
  |  |  ------------------
  ------------------
 4959|    756|        if (_PyDict_HasSplitTable(mp)) {
  ------------------
  |  |   56|    756|#define _PyDict_HasSplitTable(d) ((d)->ma_values != NULL)
  |  |  ------------------
  |  |  |  Branch (56:34): [True: 0, False: 756]
  |  |  ------------------
  ------------------
 4960|      0|            for (i = 0; i < n; i++) {
  ------------------
  |  Branch (4960:25): [True: 0, False: 0]
  ------------------
 4961|      0|                Py_VISIT(mp->ma_values->values[i]);
  ------------------
  |  |  194|      0|    do {                                                                \
  |  |  195|      0|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  196|      0|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      0|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 0]
  |  |  ------------------
  |  |  198|      0|                return vret;                                            \
  |  |  199|      0|        }                                                               \
  |  |  200|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4962|      0|            }
 4963|      0|        }
 4964|    756|        else {
 4965|    756|            PyDictUnicodeEntry *entries = DK_UNICODE_ENTRIES(keys);
 4966|  12.0k|            for (i = 0; i < n; i++) {
  ------------------
  |  Branch (4966:25): [True: 11.3k, False: 756]
  ------------------
 4967|  11.3k|                Py_VISIT(entries[i].me_value);
  ------------------
  |  |  194|  11.3k|    do {                                                                \
  |  |  195|  11.3k|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 11.1k, False: 122]
  |  |  ------------------
  |  |  196|  11.1k|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|  11.1k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  11.1k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|  11.1k|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 11.1k]
  |  |  ------------------
  |  |  198|  11.1k|                return vret;                                            \
  |  |  199|  11.1k|        }                                                               \
  |  |  200|  11.3k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 11.3k]
  |  |  ------------------
  ------------------
 4968|  11.3k|            }
 4969|    756|        }
 4970|    756|    }
 4971|     80|    else {
 4972|     80|        PyDictKeyEntry *entries = DK_ENTRIES(keys);
 4973|    666|        for (i = 0; i < n; i++) {
  ------------------
  |  Branch (4973:21): [True: 586, False: 80]
  ------------------
 4974|    586|            if (entries[i].me_value != NULL) {
  ------------------
  |  Branch (4974:17): [True: 580, False: 6]
  ------------------
 4975|    580|                Py_VISIT(entries[i].me_value);
  ------------------
  |  |  194|    580|    do {                                                                \
  |  |  195|    580|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 580, False: 0]
  |  |  ------------------
  |  |  196|    580|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|    580|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    580|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|    580|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 580]
  |  |  ------------------
  |  |  198|    580|                return vret;                                            \
  |  |  199|    580|        }                                                               \
  |  |  200|    580|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 580]
  |  |  ------------------
  ------------------
 4976|    580|                Py_VISIT(entries[i].me_key);
  ------------------
  |  |  194|    580|    do {                                                                \
  |  |  195|    580|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 580, False: 0]
  |  |  ------------------
  |  |  196|    580|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|    580|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    580|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|    580|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 580]
  |  |  ------------------
  |  |  198|    580|                return vret;                                            \
  |  |  199|    580|        }                                                               \
  |  |  200|    580|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 580]
  |  |  ------------------
  ------------------
 4977|    580|            }
 4978|    586|        }
 4979|     80|    }
 4980|    836|    return 0;
 4981|    836|}
dictobject.c:dict_tp_clear:
 4985|      2|{
 4986|      2|    PyDict_Clear(op);
 4987|      2|    return 0;
 4988|      2|}
dictobject.c:dictiter_new:
 5459|     36|{
 5460|     36|    Py_ssize_t used;
 5461|     36|    dictiterobject *di;
 5462|     36|    di = PyObject_GC_New(dictiterobject, itertype);
  ------------------
  |  |  181|     36|    _Py_CAST(type*, _PyObject_GC_New(typeobj))
  |  |  ------------------
  |  |  |  |   37|     36|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
 5463|     36|    if (di == NULL) {
  ------------------
  |  Branch (5463:9): [True: 0, False: 36]
  ------------------
 5464|      0|        return NULL;
 5465|      0|    }
 5466|     36|    di->di_dict = (PyDictObject*)Py_NewRef(dict);
  ------------------
  |  |  550|     36|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     36|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     36|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5467|     36|    used = GET_USED(dict);
  ------------------
  |  |  313|     36|#define GET_USED(ep) FT_ATOMIC_LOAD_SSIZE_RELAXED((ep)->ma_used)
  |  |  ------------------
  |  |  |  |  149|     36|#define FT_ATOMIC_LOAD_SSIZE_RELAXED(value) value
  |  |  ------------------
  ------------------
 5468|     36|    di->di_used = used;
 5469|     36|    di->len = used;
 5470|     36|    if (itertype == &PyDictRevIterKey_Type ||
  ------------------
  |  Branch (5470:9): [True: 0, False: 36]
  ------------------
 5471|     36|         itertype == &PyDictRevIterItem_Type ||
  ------------------
  |  Branch (5471:10): [True: 0, False: 36]
  ------------------
 5472|     36|         itertype == &PyDictRevIterValue_Type) {
  ------------------
  |  Branch (5472:10): [True: 0, False: 36]
  ------------------
 5473|      0|        if (_PyDict_HasSplitTable(dict)) {
  ------------------
  |  |   56|      0|#define _PyDict_HasSplitTable(d) ((d)->ma_values != NULL)
  |  |  ------------------
  |  |  |  Branch (56:34): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5474|      0|            di->di_pos = used - 1;
 5475|      0|        }
 5476|      0|        else {
 5477|      0|            di->di_pos = load_keys_nentries(dict) - 1;
 5478|      0|        }
 5479|      0|    }
 5480|     36|    else {
 5481|     36|        di->di_pos = 0;
 5482|     36|    }
 5483|     36|    if (itertype == &PyDictIterItem_Type ||
  ------------------
  |  Branch (5483:9): [True: 34, False: 2]
  ------------------
 5484|     34|        itertype == &PyDictRevIterItem_Type) {
  ------------------
  |  Branch (5484:9): [True: 0, False: 2]
  ------------------
 5485|     34|        di->di_result = _PyTuple_FromPairSteal(Py_None, Py_None);
  ------------------
  |  |  616|     34|#  define Py_None (&_Py_NoneStruct)
  ------------------
                      di->di_result = _PyTuple_FromPairSteal(Py_None, Py_None);
  ------------------
  |  |  616|     34|#  define Py_None (&_Py_NoneStruct)
  ------------------
 5486|     34|        if (di->di_result == NULL) {
  ------------------
  |  Branch (5486:13): [True: 0, False: 34]
  ------------------
 5487|      0|            Py_DECREF(di);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5488|      0|            return NULL;
 5489|      0|        }
 5490|     34|    }
 5491|      2|    else {
 5492|      2|        di->di_result = NULL;
 5493|      2|    }
 5494|     36|    _PyObject_GC_TRACK(di);
  ------------------
  |  |  513|     36|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     36|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     36|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5495|     36|    return (PyObject *)di;
 5496|     36|}
dictobject.c:dict_get_impl:
 4656|     96|{
 4657|     96|    PyObject *val = NULL;
 4658|     96|    Py_hash_t hash;
 4659|     96|    Py_ssize_t ix;
 4660|       |
 4661|     96|    hash = _PyObject_HashFast(key);
 4662|     96|    if (hash == -1) {
  ------------------
  |  Branch (4662:9): [True: 0, False: 96]
  ------------------
 4663|      0|        dict_unhashable_type((PyObject*)self, key);
 4664|      0|        return NULL;
 4665|      0|    }
 4666|     96|    ix = _Py_dict_lookup_threadsafe(self, key, hash, &val);
 4667|     96|    if (ix == DKIX_ERROR)
  ------------------
  |  |  186|     96|#define DKIX_ERROR (-3)
  ------------------
  |  Branch (4667:9): [True: 0, False: 96]
  ------------------
 4668|      0|        return NULL;
 4669|     96|    if (ix == DKIX_EMPTY || val == NULL) {
  ------------------
  |  |  184|    192|#define DKIX_EMPTY (-1)
  ------------------
  |  Branch (4669:9): [True: 57, False: 39]
  |  Branch (4669:29): [True: 0, False: 39]
  ------------------
 4670|     57|        val = Py_NewRef(default_value);
  ------------------
  |  |  550|     57|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     57|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     57|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4671|     57|    }
 4672|     96|    return val;
 4673|     96|}
dictobject.c:dict_pop_impl:
 4853|     27|{
 4854|     27|    return dict_pop_default((PyObject*)self, key, default_value);
 4855|     27|}
dictobject.c:dict_keys_impl:
 6878|      2|{
 6879|      2|    return _PyDictView_New((PyObject *)self, &PyDictKeys_Type);
 6880|      2|}
dictobject.c:dict_items_impl:
 6990|     35|{
 6991|     35|    return _PyDictView_New((PyObject *)self, &PyDictItems_Type);
 6992|     35|}
dictobject.c:dict_values_impl:
 7080|      2|{
 7081|      2|    return _PyDictView_New((PyObject *)self, &PyDictValues_Type);
 7082|      2|}
dictobject.c:dict_update:
 3956|      9|{
 3957|      9|    if (dict_update_common(self, args, kwds, "update") != -1)
  ------------------
  |  Branch (3957:9): [True: 9, False: 0]
  ------------------
 3958|      9|        Py_RETURN_NONE;
  ------------------
  |  |  628|      9|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|      9|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
 3959|      0|    return NULL;
 3960|      9|}
dictobject.c:dict_update_common:
 3931|      9|{
 3932|      9|    PyObject *arg = NULL;
 3933|      9|    int result = 0;
 3934|       |
 3935|      9|    if (!PyArg_UnpackTuple(args, methname, 0, 1, &arg)) {
  ------------------
  |  Branch (3935:9): [True: 0, False: 9]
  ------------------
 3936|      0|        result = -1;
 3937|      0|    }
 3938|      9|    else if (arg != NULL) {
  ------------------
  |  Branch (3938:14): [True: 9, False: 0]
  ------------------
 3939|      9|        result = dict_update_arg(self, arg);
 3940|      9|    }
 3941|       |
 3942|      9|    if (result == 0 && kwds != NULL) {
  ------------------
  |  Branch (3942:9): [True: 9, False: 0]
  |  Branch (3942:24): [True: 0, False: 9]
  ------------------
 3943|      0|        if (PyArg_ValidateKeywordArguments(kwds))
  ------------------
  |  Branch (3943:13): [True: 0, False: 0]
  ------------------
 3944|      0|            result = dict_merge(self, kwds, 1, NULL);
 3945|      0|        else
 3946|      0|            result = -1;
 3947|      0|    }
 3948|      9|    return result;
 3949|      9|}
dictobject.c:dictiter_dealloc:
 5500|     36|{
 5501|     36|    dictiterobject *di = (dictiterobject *)self;
 5502|       |    /* bpo-31095: UnTrack is needed before calling any callbacks */
 5503|     36|    _PyObject_GC_UNTRACK(di);
  ------------------
  |  |  515|     36|        _PyObject_GC_UNTRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     36|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     36|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5504|     36|    Py_XDECREF(di->di_dict);
  ------------------
  |  |  524|     36|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     36|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     36|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5505|     36|    Py_XDECREF(di->di_result);
  ------------------
  |  |  524|     36|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     36|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     36|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5506|     36|    PyObject_GC_Del(di);
 5507|     36|}
dictobject.c:dictiter_len:
 5520|     29|{
 5521|     29|    dictiterobject *di = (dictiterobject *)self;
 5522|     29|    Py_ssize_t len = 0;
 5523|     29|    if (di->di_dict != NULL && di->di_used == GET_USED(di->di_dict))
  ------------------
  |  |  313|     29|#define GET_USED(ep) FT_ATOMIC_LOAD_SSIZE_RELAXED((ep)->ma_used)
  |  |  ------------------
  |  |  |  |  149|     29|#define FT_ATOMIC_LOAD_SSIZE_RELAXED(value) value
  |  |  ------------------
  ------------------
  |  Branch (5523:9): [True: 29, False: 0]
  |  Branch (5523:32): [True: 29, False: 0]
  ------------------
 5524|     29|        len = FT_ATOMIC_LOAD_SSIZE_RELAXED(di->len);
  ------------------
  |  |  149|     29|#define FT_ATOMIC_LOAD_SSIZE_RELAXED(value) value
  ------------------
 5525|     29|    return PyLong_FromSize_t(len);
 5526|     29|}
dictobject.c:dictiter_iternextitem:
 6024|    317|{
 6025|    317|    dictiterobject *di = (dictiterobject *)self;
 6026|    317|    PyDictObject *d = di->di_dict;
 6027|       |
 6028|    317|    if (d == NULL)
  ------------------
  |  Branch (6028:9): [True: 0, False: 317]
  ------------------
 6029|      0|        return NULL;
 6030|       |
 6031|    317|    PyObject *key, *value;
 6032|       |#ifdef Py_GIL_DISABLED
 6033|       |    if (dictiter_iternext_threadsafe(d, self, &key, &value) == 0) {
 6034|       |#else
 6035|    317|    if (dictiter_iternextitem_lock_held(d, self, &key, &value) == 0) {
  ------------------
  |  Branch (6035:9): [True: 284, False: 33]
  ------------------
 6036|       |
 6037|    284|#endif
 6038|    284|        PyObject *result = di->di_result;
 6039|    284|        if (acquire_iter_result(result)) {
  ------------------
  |  Branch (6039:13): [True: 33, False: 251]
  ------------------
 6040|     33|            PyObject *oldkey = PyTuple_GET_ITEM(result, 0);
  ------------------
  |  |   29|     33|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|     33|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     33|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6040:32): [True: 33, False: 0]
  ------------------
 6041|     33|            PyObject *oldvalue = PyTuple_GET_ITEM(result, 1);
  ------------------
  |  |   29|     33|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|     33|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     33|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6041:34): [True: 33, False: 0]
  ------------------
 6042|     33|            PyTuple_SET_ITEM(result, 0, key);
  ------------------
  |  |   40|     33|    PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|     33|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     33|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|     33|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     33|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6043|     33|            PyTuple_SET_ITEM(result, 1, value);
  ------------------
  |  |   40|     33|    PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|     33|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     33|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|     33|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     33|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6044|     33|            Py_DECREF(oldkey);
  ------------------
  |  |  430|     33|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     33|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     33|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6045|     33|            Py_DECREF(oldvalue);
  ------------------
  |  |  430|     33|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     33|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     33|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6046|       |            // bpo-42536: The GC may have untracked this result tuple. Since we're
 6047|       |            // recycling it, make sure it's tracked again:
 6048|     33|            _PyTuple_Recycle(result);
 6049|     33|        }
 6050|    251|        else {
 6051|    251|            result = _PyTuple_FromPairSteal(key, value);
 6052|    251|        }
 6053|    284|        return result;
 6054|    284|    }
 6055|     33|    return NULL;
 6056|    317|}
dictobject.c:dictiter_iternextitem_lock_held:
 5801|    317|{
 5802|    317|    dictiterobject *di = (dictiterobject *)self;
 5803|    317|    PyObject *key, *value;
 5804|    317|    Py_ssize_t i;
 5805|       |
 5806|    317|    assert (PyAnyDict_Check(d));
  ------------------
  |  Branch (5806:5): [True: 317, False: 0]
  |  Branch (5806:5): [True: 0, False: 0]
  ------------------
 5807|    317|    ASSERT_DICT_LOCKED(d);
 5808|       |
 5809|    317|    if (di->di_used != d->ma_used) {
  ------------------
  |  Branch (5809:9): [True: 0, False: 317]
  ------------------
 5810|      0|        PyErr_SetString(PyExc_RuntimeError,
 5811|      0|                        "dictionary changed size during iteration");
 5812|      0|        di->di_used = -1; /* Make this state sticky */
 5813|      0|        return -1;
 5814|      0|    }
 5815|       |
 5816|    317|    i = FT_ATOMIC_LOAD_SSIZE_RELAXED(di->di_pos);
  ------------------
  |  |  149|    317|#define FT_ATOMIC_LOAD_SSIZE_RELAXED(value) value
  ------------------
 5817|       |
 5818|    317|    assert(i >= 0);
  ------------------
  |  Branch (5818:5): [True: 317, False: 0]
  ------------------
 5819|    317|    if (_PyDict_HasSplitTable(d)) {
  ------------------
  |  |   56|    317|#define _PyDict_HasSplitTable(d) ((d)->ma_values != NULL)
  |  |  ------------------
  |  |  |  Branch (56:34): [True: 0, False: 317]
  |  |  ------------------
  ------------------
 5820|      0|        if (i >= d->ma_used)
  ------------------
  |  Branch (5820:13): [True: 0, False: 0]
  ------------------
 5821|      0|            goto fail;
 5822|      0|        int index = get_index_from_order(d, i);
 5823|      0|        key = LOAD_SHARED_KEY(DK_UNICODE_ENTRIES(d->ma_keys)[index].me_key);
  ------------------
  |  |  249|      0|#define LOAD_SHARED_KEY(key) key
  ------------------
 5824|      0|        value = d->ma_values->values[index];
 5825|      0|        assert(value != NULL);
  ------------------
  |  Branch (5825:9): [True: 0, False: 0]
  ------------------
 5826|      0|    }
 5827|    317|    else {
 5828|    317|        Py_ssize_t n = d->ma_keys->dk_nentries;
 5829|    317|        if (DK_IS_UNICODE(d->ma_keys)) {
  ------------------
  |  |  282|    317|#define DK_IS_UNICODE(dk) ((dk)->dk_kind != DICT_KEYS_GENERAL)
  |  |  ------------------
  |  |  |  Branch (282:27): [True: 317, False: 0]
  |  |  ------------------
  ------------------
 5830|    317|            PyDictUnicodeEntry *entry_ptr = &DK_UNICODE_ENTRIES(d->ma_keys)[i];
 5831|    369|            while (i < n && entry_ptr->me_value == NULL) {
  ------------------
  |  Branch (5831:20): [True: 336, False: 33]
  |  Branch (5831:29): [True: 52, False: 284]
  ------------------
 5832|     52|                entry_ptr++;
 5833|     52|                i++;
 5834|     52|            }
 5835|    317|            if (i >= n)
  ------------------
  |  Branch (5835:17): [True: 33, False: 284]
  ------------------
 5836|     33|                goto fail;
 5837|    284|            key = entry_ptr->me_key;
 5838|    284|            value = entry_ptr->me_value;
 5839|    284|        }
 5840|      0|        else {
 5841|      0|            PyDictKeyEntry *entry_ptr = &DK_ENTRIES(d->ma_keys)[i];
 5842|      0|            while (i < n && entry_ptr->me_value == NULL) {
  ------------------
  |  Branch (5842:20): [True: 0, False: 0]
  |  Branch (5842:29): [True: 0, False: 0]
  ------------------
 5843|      0|                entry_ptr++;
 5844|      0|                i++;
 5845|      0|            }
 5846|      0|            if (i >= n)
  ------------------
  |  Branch (5846:17): [True: 0, False: 0]
  ------------------
 5847|      0|                goto fail;
 5848|      0|            key = entry_ptr->me_key;
 5849|      0|            value = entry_ptr->me_value;
 5850|      0|        }
 5851|    317|    }
 5852|       |    // We found an element, but did not expect it
 5853|    284|    if (di->len == 0) {
  ------------------
  |  Branch (5853:9): [True: 0, False: 284]
  ------------------
 5854|      0|        PyErr_SetString(PyExc_RuntimeError,
 5855|      0|                        "dictionary keys changed during iteration");
 5856|      0|        goto fail;
 5857|      0|    }
 5858|    284|    di->di_pos = i+1;
 5859|    284|    di->len--;
 5860|    284|    if (out_key != NULL) {
  ------------------
  |  Branch (5860:9): [True: 284, False: 0]
  ------------------
 5861|    284|        *out_key = Py_NewRef(key);
  ------------------
  |  |  550|    284|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    284|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    284|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5862|    284|    }
 5863|    284|    if (out_value != NULL) {
  ------------------
  |  Branch (5863:9): [True: 284, False: 0]
  ------------------
 5864|    284|        *out_value = Py_NewRef(value);
  ------------------
  |  |  550|    284|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    284|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    284|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5865|    284|    }
 5866|    284|    return 0;
 5867|       |
 5868|     33|fail:
 5869|     33|    di->di_dict = NULL;
 5870|     33|    Py_DECREF(d);
  ------------------
  |  |  430|     33|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     33|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     33|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5871|     33|    return -1;
 5872|    284|}
dictobject.c:acquire_iter_result:
 6014|    284|{
 6015|    284|    if (_PyObject_IsUniquelyReferenced(result)) {
  ------------------
  |  Branch (6015:9): [True: 33, False: 251]
  ------------------
 6016|     33|        Py_INCREF(result);
  ------------------
  |  |  310|     33|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     33|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     33|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6017|     33|        return true;
 6018|     33|    }
 6019|    251|    return false;
 6020|    284|}
dictobject.c:dictview_dealloc:
 6275|     39|{
 6276|     39|    _PyDictViewObject *dv = (_PyDictViewObject *)self;
 6277|       |    /* bpo-31095: UnTrack is needed before calling any callbacks */
 6278|     39|    _PyObject_GC_UNTRACK(dv);
  ------------------
  |  |  515|     39|        _PyObject_GC_UNTRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     39|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     39|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6279|     39|    Py_XDECREF(dv->dv_dict);
  ------------------
  |  |  524|     39|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     39|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     39|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6280|     39|    PyObject_GC_Del(dv);
 6281|     39|}
dictobject.c:dictkeys_iter:
 6461|      1|{
 6462|      1|    _PyDictViewObject *dv = (_PyDictViewObject *)self;
 6463|      1|    if (dv->dv_dict == NULL) {
  ------------------
  |  Branch (6463:9): [True: 0, False: 1]
  ------------------
 6464|      0|        Py_RETURN_NONE;
  ------------------
  |  |  628|      0|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
 6465|      0|    }
 6466|      1|    return dictiter_new(dv->dv_dict, &PyDictIterKey_Type);
 6467|      1|}
dictobject.c:dictitems_iter:
 6896|     34|{
 6897|     34|    _PyDictViewObject *dv = (_PyDictViewObject *)self;
 6898|     34|    if (dv->dv_dict == NULL) {
  ------------------
  |  Branch (6898:9): [True: 0, False: 34]
  ------------------
 6899|      0|        Py_RETURN_NONE;
  ------------------
  |  |  628|      0|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
 6900|      0|    }
 6901|     34|    return dictiter_new(dv->dv_dict, &PyDictIterItem_Type);
 6902|     34|}
dictobject.c:dictvalues_iter:
 7008|      1|{
 7009|      1|    _PyDictViewObject *dv = (_PyDictViewObject *)self;
 7010|      1|    if (dv->dv_dict == NULL) {
  ------------------
  |  Branch (7010:9): [True: 0, False: 1]
  ------------------
 7011|      0|        Py_RETURN_NONE;
  ------------------
  |  |  628|      0|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
 7012|      0|    }
 7013|      1|    return dictiter_new(dv->dv_dict, &PyDictIterValue_Type);
 7014|      1|}
dictobject.c:new_keys_object:
  789|  1.35k|{
  790|  1.35k|    Py_ssize_t usable;
  791|  1.35k|    int log2_bytes;
  792|  1.35k|    size_t entry_size = unicode ? sizeof(PyDictUnicodeEntry) : sizeof(PyDictKeyEntry);
  ------------------
  |  Branch (792:25): [True: 1.25k, False: 98]
  ------------------
  793|       |
  794|  1.35k|    assert(log2_size >= PyDict_LOG_MINSIZE);
  ------------------
  |  Branch (794:5): [True: 1.35k, False: 0]
  ------------------
  795|       |
  796|  1.35k|    usable = USABLE_FRACTION((size_t)1<<log2_size);
  ------------------
  |  |  575|  1.35k|#define USABLE_FRACTION(n) (((n) << 1)/3)
  ------------------
  797|  1.35k|    if (log2_size < 8) {
  ------------------
  |  Branch (797:9): [True: 1.33k, False: 24]
  ------------------
  798|  1.33k|        log2_bytes = log2_size;
  799|  1.33k|    }
  800|     24|    else if (log2_size < 16) {
  ------------------
  |  Branch (800:14): [True: 24, False: 0]
  ------------------
  801|     24|        log2_bytes = log2_size + 1;
  802|     24|    }
  803|      0|#if SIZEOF_VOID_P > 4
  804|      0|    else if (log2_size >= 32) {
  ------------------
  |  Branch (804:14): [True: 0, False: 0]
  ------------------
  805|      0|        log2_bytes = log2_size + 3;
  806|      0|    }
  807|      0|#endif
  808|      0|    else {
  809|      0|        log2_bytes = log2_size + 2;
  810|      0|    }
  811|       |
  812|  1.35k|    PyDictKeysObject *dk = NULL;
  813|  1.35k|    if (log2_size == PyDict_LOG_MINSIZE && unicode) {
  ------------------
  |  |  115|  2.71k|#define PyDict_LOG_MINSIZE 3
  ------------------
  |  Branch (813:9): [True: 659, False: 696]
  |  Branch (813:44): [True: 585, False: 74]
  ------------------
  814|    585|        dk = _Py_FREELIST_POP_MEM(dictkeys);
  ------------------
  |  |   48|    585|    _PyFreeList_PopMem(&_Py_freelists_GET()->NAME)
  ------------------
  815|    585|    }
  816|  1.35k|    if (dk == NULL) {
  ------------------
  |  Branch (816:9): [True: 982, False: 373]
  ------------------
  817|    982|        dk = PyMem_Malloc(sizeof(PyDictKeysObject)
  818|    982|                          + ((size_t)1 << log2_bytes)
  819|    982|                          + entry_size * usable);
  820|    982|        if (dk == NULL) {
  ------------------
  |  Branch (820:13): [True: 0, False: 982]
  ------------------
  821|      0|            PyErr_NoMemory();
  822|      0|            return NULL;
  823|      0|        }
  824|    982|    }
  825|       |#ifdef Py_REF_DEBUG
  826|       |    _Py_IncRefTotal(_PyThreadState_GET());
  827|       |#endif
  828|  1.35k|    dk->dk_refcnt = 1;
  829|  1.35k|    dk->dk_log2_size = log2_size;
  830|  1.35k|    dk->dk_log2_index_bytes = log2_bytes;
  831|  1.35k|    dk->dk_kind = unicode ? DICT_KEYS_UNICODE : DICT_KEYS_GENERAL;
  ------------------
  |  Branch (831:19): [True: 1.25k, False: 98]
  ------------------
  832|       |#ifdef Py_GIL_DISABLED
  833|       |    dk->dk_mutex = (PyMutex){0};
  834|       |#endif
  835|  1.35k|    dk->dk_nentries = 0;
  836|  1.35k|    dk->dk_usable = usable;
  837|  1.35k|    dk->dk_version = 0;
  838|  1.35k|    memset(&dk->dk_indices[0], 0xff, ((size_t)1 << log2_bytes));
  839|  1.35k|    memset(&dk->dk_indices[(size_t)1 << log2_bytes], 0, entry_size * usable);
  840|  1.35k|    return dk;
  841|  1.35k|}
dictobject.c:insert_split_key:
 1887|    156|{
 1888|    156|    assert(PyUnicode_CheckExact(key));
  ------------------
  |  Branch (1888:5): [True: 156, False: 0]
  ------------------
 1889|    156|    Py_ssize_t ix;
 1890|       |
 1891|       |
 1892|       |#ifdef Py_GIL_DISABLED
 1893|       |    ix = unicodekeys_lookup_unicode_threadsafe(keys, key, hash);
 1894|       |    if (ix >= 0) {
 1895|       |        return ix;
 1896|       |    }
 1897|       |#endif
 1898|       |
 1899|    156|    LOCK_KEYS(keys);
 1900|    156|    ix = unicodekeys_lookup_unicode(keys, key, hash);
 1901|    156|    if (ix == DKIX_EMPTY && keys->dk_usable > 0) {
  ------------------
  |  |  184|    312|#define DKIX_EMPTY (-1)
  ------------------
  |  Branch (1901:9): [True: 99, False: 57]
  |  Branch (1901:29): [True: 99, False: 0]
  ------------------
 1902|       |        // Insert into new slot
 1903|     99|        FT_ATOMIC_STORE_UINT32_RELAXED(keys->dk_version, 0);
  ------------------
  |  |  172|     99|#define FT_ATOMIC_STORE_UINT32_RELAXED(value, new_value) value = new_value
  ------------------
 1904|     99|        Py_ssize_t hashpos = find_empty_slot(keys, hash);
 1905|     99|        ix = keys->dk_nentries;
 1906|     99|        dictkeys_set_index(keys, hashpos, ix);
 1907|     99|        PyDictUnicodeEntry *ep = &DK_UNICODE_ENTRIES(keys)[ix];
 1908|     99|        STORE_SHARED_KEY(ep->me_key, Py_NewRef(key));
  ------------------
  |  |  250|     99|#define STORE_SHARED_KEY(key, value) key = value
  ------------------
 1909|     99|        split_keys_entry_added(keys);
 1910|     99|    }
 1911|    156|    assert (ix < SHARED_KEYS_MAX_SIZE);
  ------------------
  |  Branch (1911:5): [True: 156, False: 0]
  ------------------
 1912|    156|    UNLOCK_KEYS(keys);
 1913|    156|    return ix;
 1914|    156|}
dictobject.c:split_keys_entry_added:
  264|     99|{
  265|     99|    keys->dk_usable--;
  266|     99|    keys->dk_nentries++;
  267|     99|}
dictobject.c:store_instance_attr_lock_held:
 7262|     59|{
 7263|     59|    PyDictKeysObject *keys = CACHED_KEYS(Py_TYPE(obj));
  ------------------
  |  |  870|     59|#define CACHED_KEYS(tp) (((PyHeapTypeObject*)tp)->ht_cached_keys)
  ------------------
 7264|     59|    assert(keys != NULL);
  ------------------
  |  Branch (7264:5): [True: 59, False: 0]
  ------------------
 7265|     59|    assert(values != NULL);
  ------------------
  |  Branch (7265:5): [True: 59, False: 0]
  ------------------
 7266|     59|    assert(Py_TYPE(obj)->tp_flags & Py_TPFLAGS_INLINE_VALUES);
  ------------------
  |  Branch (7266:5): [True: 59, False: 0]
  ------------------
 7267|     59|    Py_ssize_t ix = DKIX_EMPTY;
  ------------------
  |  |  184|     59|#define DKIX_EMPTY (-1)
  ------------------
 7268|     59|    PyDictObject *dict = _PyObject_GetManagedDict(obj);
 7269|     59|    assert(dict == NULL || ((PyDictObject *)dict)->ma_values == values);
  ------------------
  |  Branch (7269:5): [True: 59, False: 0]
  |  Branch (7269:5): [True: 0, False: 0]
  ------------------
 7270|     59|    if (PyUnicode_CheckExact(name)) {
  ------------------
  |  |  104|     59|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  ------------------
  |  |  |  |  215|     59|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     59|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     59|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 59, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7271|     59|        Py_hash_t hash = unicode_get_hash(name);
 7272|     59|        if (hash == -1) {
  ------------------
  |  Branch (7272:13): [True: 0, False: 59]
  ------------------
 7273|      0|            hash = PyUnicode_Type.tp_hash(name);
 7274|      0|            assert(hash != -1);
  ------------------
  |  Branch (7274:13): [True: 0, False: 0]
  ------------------
 7275|      0|        }
 7276|       |
 7277|     59|        ix = insert_split_key(keys, name, hash);
 7278|       |
 7279|       |#ifdef Py_STATS
 7280|       |        if (ix == DKIX_EMPTY) {
 7281|       |            if (PyUnicode_CheckExact(name)) {
 7282|       |                if (shared_keys_usable_size(keys) == SHARED_KEYS_MAX_SIZE) {
 7283|       |                    OBJECT_STAT_INC(dict_materialized_too_big);
 7284|       |                }
 7285|       |                else {
 7286|       |                    OBJECT_STAT_INC(dict_materialized_new_key);
 7287|       |                }
 7288|       |            }
 7289|       |            else {
 7290|       |                OBJECT_STAT_INC(dict_materialized_str_subclass);
 7291|       |            }
 7292|       |        }
 7293|       |#endif
 7294|     59|    }
 7295|       |
 7296|     59|    if (ix == DKIX_EMPTY) {
  ------------------
  |  |  184|     59|#define DKIX_EMPTY (-1)
  ------------------
  |  Branch (7296:9): [True: 0, False: 59]
  ------------------
 7297|      0|        int res;
 7298|      0|        if (dict == NULL) {
  ------------------
  |  Branch (7298:13): [True: 0, False: 0]
  ------------------
 7299|       |            // Make the dict but don't publish it in the object
 7300|       |            // so that no one else will see it.
 7301|      0|            dict = make_dict_from_instance_attributes(keys, values);
 7302|      0|            if (dict == NULL ||
  ------------------
  |  Branch (7302:17): [True: 0, False: 0]
  ------------------
 7303|      0|                _PyDict_SetItem_LockHeld(dict, name, value) < 0) {
  ------------------
  |  Branch (7303:17): [True: 0, False: 0]
  ------------------
 7304|      0|                Py_XDECREF(dict);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7305|      0|                return -1;
 7306|      0|            }
 7307|       |
 7308|      0|            FT_ATOMIC_STORE_PTR_RELEASE(_PyObject_ManagedDictPointer(obj)->dict,
  ------------------
  |  |  164|      0|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  ------------------
 7309|      0|                                        (PyDictObject *)dict);
 7310|      0|            return 0;
 7311|      0|        }
 7312|       |
 7313|      0|        _Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED(dict);
 7314|       |
 7315|      0|        res = _PyDict_SetItem_LockHeld(dict, name, value);
 7316|      0|        return res;
 7317|      0|    }
 7318|       |
 7319|     59|    PyObject *old_value = values->values[ix];
 7320|     59|    if (old_value == NULL && value == NULL) {
  ------------------
  |  Branch (7320:9): [True: 47, False: 12]
  |  Branch (7320:30): [True: 0, False: 47]
  ------------------
 7321|      0|        PyErr_Format(PyExc_AttributeError,
 7322|      0|                        "'%.100s' object has no attribute '%U'",
 7323|      0|                        Py_TYPE(obj)->tp_name, name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7324|      0|        (void)_PyObject_SetAttributeErrorContext(obj, name);
 7325|      0|        return -1;
 7326|      0|    }
 7327|       |
 7328|     59|    if (dict) {
  ------------------
  |  Branch (7328:9): [True: 0, False: 59]
  ------------------
 7329|      0|        PyDict_WatchEvent event = (old_value == NULL ? PyDict_EVENT_ADDED :
  ------------------
  |  Branch (7329:36): [True: 0, False: 0]
  ------------------
 7330|      0|                                   value == NULL ? PyDict_EVENT_DELETED :
  ------------------
  |  Branch (7330:36): [True: 0, False: 0]
  ------------------
 7331|      0|                                   PyDict_EVENT_MODIFIED);
 7332|      0|        _PyDict_NotifyEvent(event, dict, name, value);
 7333|      0|    }
 7334|       |
 7335|     59|    FT_ATOMIC_STORE_PTR_RELEASE(values->values[ix], Py_XNewRef(value));
  ------------------
  |  |  164|     59|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  ------------------
 7336|       |
 7337|     59|    if (old_value == NULL) {
  ------------------
  |  Branch (7337:9): [True: 47, False: 12]
  ------------------
 7338|     47|        _PyDictValues_AddToInsertionOrder(values, ix);
 7339|     47|        if (dict) {
  ------------------
  |  Branch (7339:13): [True: 0, False: 47]
  ------------------
 7340|      0|            assert(dict->ma_values == values);
  ------------------
  |  Branch (7340:13): [True: 0, False: 0]
  ------------------
 7341|      0|            STORE_USED(dict, dict->ma_used + 1);
  ------------------
  |  |  321|      0|#define STORE_USED(mp, used) FT_ATOMIC_STORE_SSIZE_RELAXED(mp->ma_used, used)
  |  |  ------------------
  |  |  |  |  194|      0|#define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) value = new_value
  |  |  ------------------
  ------------------
 7342|      0|        }
 7343|     47|    }
 7344|     12|    else {
 7345|     12|        if (value == NULL) {
  ------------------
  |  Branch (7345:13): [True: 0, False: 12]
  ------------------
 7346|      0|            delete_index_from_values(values, ix);
 7347|      0|            if (dict) {
  ------------------
  |  Branch (7347:17): [True: 0, False: 0]
  ------------------
 7348|      0|                assert(dict->ma_values == values);
  ------------------
  |  Branch (7348:17): [True: 0, False: 0]
  ------------------
 7349|      0|                STORE_USED(dict, dict->ma_used - 1);
  ------------------
  |  |  321|      0|#define STORE_USED(mp, used) FT_ATOMIC_STORE_SSIZE_RELAXED(mp->ma_used, used)
  |  |  ------------------
  |  |  |  |  194|      0|#define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) value = new_value
  |  |  ------------------
  ------------------
 7350|      0|            }
 7351|      0|        }
 7352|     12|        Py_DECREF(old_value);
  ------------------
  |  |  430|     12|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     12|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     12|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7353|     12|    }
 7354|     59|    return 0;
 7355|     59|}
dictobject.c:clear_inline_values:
 7596|    126|{
 7597|    126|    if (values->valid) {
  ------------------
  |  Branch (7597:9): [True: 126, False: 0]
  ------------------
 7598|    126|        FT_ATOMIC_STORE_UINT8(values->valid, 0);
  ------------------
  |  |  155|    126|#define FT_ATOMIC_STORE_UINT8(value, new_value) value = new_value
  ------------------
 7599|  2.03k|        for (Py_ssize_t i = 0; i < values->capacity; i++) {
  ------------------
  |  Branch (7599:32): [True: 1.90k, False: 126]
  ------------------
 7600|       |            Py_CLEAR(values->values[i]);
  ------------------
  |  |  484|  1.90k|    do { \
  |  |  485|  1.90k|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|  1.90k|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|  1.90k|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|  1.90k|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|  1.90k|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 300, False: 1.60k]
  |  |  ------------------
  |  |  488|    300|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|    300|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|    300|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|    300|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    300|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    300|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|    300|        } \
  |  |  491|  1.90k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 1.90k]
  |  |  ------------------
  ------------------
 7601|  1.90k|        }
 7602|    126|    }
 7603|    126|}
dictobject.c:set_keys:
  271|    675|{
  272|    675|    mp->ma_keys = keys;
  273|    675|}
dictobject.c:dictkeys_decref:
  480|    523|{
  481|    523|    if (FT_ATOMIC_LOAD_SSIZE_RELAXED(dk->dk_refcnt) < 0) {
  ------------------
  |  |  149|    523|#define FT_ATOMIC_LOAD_SSIZE_RELAXED(value) value
  ------------------
  |  Branch (481:9): [True: 253, False: 270]
  ------------------
  482|    253|        assert(FT_ATOMIC_LOAD_SSIZE_RELAXED(dk->dk_refcnt) == _Py_DICT_IMMORTAL_INITIAL_REFCNT);
  ------------------
  |  Branch (482:9): [True: 253, False: 0]
  ------------------
  483|    253|        return;
  484|    253|    }
  485|    523|    assert(FT_ATOMIC_LOAD_SSIZE(dk->dk_refcnt) > 0);
  ------------------
  |  Branch (485:5): [True: 270, False: 0]
  ------------------
  486|       |#ifdef Py_REF_DEBUG
  487|       |    _Py_DecRefTotal(_PyThreadState_GET());
  488|       |#endif
  489|    270|    if (DECREF_KEYS(dk) == 1) {
  ------------------
  |  |  252|    270|#define DECREF_KEYS(dk)  dk->dk_refcnt--
  ------------------
  |  Branch (489:9): [True: 270, False: 0]
  ------------------
  490|    270|        if (DK_IS_UNICODE(dk)) {
  ------------------
  |  |  282|    270|#define DK_IS_UNICODE(dk) ((dk)->dk_kind != DICT_KEYS_GENERAL)
  |  |  ------------------
  |  |  |  Branch (282:27): [True: 270, False: 0]
  |  |  ------------------
  ------------------
  491|    270|            PyDictUnicodeEntry *entries = DK_UNICODE_ENTRIES(dk);
  492|    270|            Py_ssize_t i, n;
  493|  2.83k|            for (i = 0, n = dk->dk_nentries; i < n; i++) {
  ------------------
  |  Branch (493:46): [True: 2.56k, False: 270]
  ------------------
  494|  2.56k|                Py_XDECREF(entries[i].me_key);
  ------------------
  |  |  524|  2.56k|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  2.56k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.56k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  495|  2.56k|                Py_XDECREF(entries[i].me_value);
  ------------------
  |  |  524|  2.56k|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  2.56k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.56k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  496|  2.56k|            }
  497|    270|        }
  498|      0|        else {
  499|      0|            PyDictKeyEntry *entries = DK_ENTRIES(dk);
  500|      0|            Py_ssize_t i, n;
  501|      0|            for (i = 0, n = dk->dk_nentries; i < n; i++) {
  ------------------
  |  Branch (501:46): [True: 0, False: 0]
  ------------------
  502|      0|                Py_XDECREF(entries[i].me_key);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  503|      0|                Py_XDECREF(entries[i].me_value);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  504|      0|            }
  505|      0|        }
  506|    270|        free_keys_object(dk, use_qsbr);
  507|    270|    }
  508|    270|}
dictobject.c:new_dict_with_shared_keys:
  951|      1|{
  952|      1|    size_t size = shared_keys_usable_size(keys);
  953|      1|    PyDictValues *values = new_values(size);
  954|      1|    if (values == NULL) {
  ------------------
  |  Branch (954:9): [True: 0, False: 1]
  ------------------
  955|      0|        return PyErr_NoMemory();
  956|      0|    }
  957|      1|    dictkeys_incref(keys);
  958|     31|    for (size_t i = 0; i < size; i++) {
  ------------------
  |  Branch (958:24): [True: 30, False: 1]
  ------------------
  959|       |        values->values[i] = NULL;
  960|     30|    }
  961|      1|    return new_dict(keys, values, 0, 1);
  962|      1|}
dictobject.c:ensure_nonmanaged_dict:
 7894|    902|{
 7895|    902|    PyDictKeysObject *cached;
 7896|       |
 7897|    902|    PyObject *dict = FT_ATOMIC_LOAD_PTR_ACQUIRE(*dictptr);
  ------------------
  |  |  150|    902|#define FT_ATOMIC_LOAD_PTR_ACQUIRE(value) value
  ------------------
 7898|    902|    if (dict == NULL) {
  ------------------
  |  Branch (7898:9): [True: 112, False: 790]
  ------------------
 7899|       |#ifdef Py_GIL_DISABLED
 7900|       |        Py_BEGIN_CRITICAL_SECTION(obj);
 7901|       |        dict = *dictptr;
 7902|       |        if (dict != NULL) {
 7903|       |            goto done;
 7904|       |        }
 7905|       |#endif
 7906|    112|        PyTypeObject *tp = Py_TYPE(obj);
  ------------------
  |  |  213|    112|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    112|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    112|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7907|    112|        if (_PyType_HasFeature(tp, Py_TPFLAGS_HEAPTYPE) && (cached = CACHED_KEYS(tp))) {
  ------------------
  |  |  503|    112|#define Py_TPFLAGS_HEAPTYPE (1UL << 9)
  ------------------
                      if (_PyType_HasFeature(tp, Py_TPFLAGS_HEAPTYPE) && (cached = CACHED_KEYS(tp))) {
  ------------------
  |  |  870|      7|#define CACHED_KEYS(tp) (((PyHeapTypeObject*)tp)->ht_cached_keys)
  ------------------
  |  Branch (7907:13): [True: 7, False: 105]
  |  Branch (7907:60): [True: 1, False: 6]
  ------------------
 7908|      1|            assert(!_PyType_HasFeature(tp, Py_TPFLAGS_INLINE_VALUES));
  ------------------
  |  Branch (7908:13): [True: 1, False: 0]
  ------------------
 7909|      1|            dict = new_dict_with_shared_keys(cached);
 7910|      1|        }
 7911|    111|        else {
 7912|    111|            dict = PyDict_New();
 7913|    111|        }
 7914|    112|        FT_ATOMIC_STORE_PTR_RELEASE(*dictptr, dict);
  ------------------
  |  |  164|    112|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  ------------------
 7915|       |#ifdef Py_GIL_DISABLED
 7916|       |done:
 7917|       |        Py_END_CRITICAL_SECTION();
 7918|       |#endif
 7919|    112|    }
 7920|    902|    return dict;
 7921|    902|}
dictobject.c:get_next_dict_keys_version:
 7970|     40|{
 7971|       |#ifdef Py_GIL_DISABLED
 7972|       |    uint32_t v;
 7973|       |    do {
 7974|       |        v = _Py_atomic_load_uint32_relaxed(
 7975|       |            &interp->dict_state.next_keys_version);
 7976|       |        if (v == 0) {
 7977|       |            return 0;
 7978|       |        }
 7979|       |    } while (!_Py_atomic_compare_exchange_uint32(
 7980|       |        &interp->dict_state.next_keys_version, &v, v + 1));
 7981|       |#else
 7982|     40|    if (interp->dict_state.next_keys_version == 0) {
  ------------------
  |  Branch (7982:9): [True: 0, False: 40]
  ------------------
 7983|      0|        return 0;
 7984|      0|    }
 7985|     40|    uint32_t v = interp->dict_state.next_keys_version++;
 7986|     40|#endif
 7987|     40|    return v;
 7988|     40|}
dictobject.c:ensure_shared_on_keys_version_assignment:
 1413|    354|{
 1414|    354|    ASSERT_DICT_LOCKED((PyObject *) mp);
 1415|       |    #ifdef Py_GIL_DISABLED
 1416|       |    if (!IS_DICT_SHARED(mp)) {
 1417|       |        // This ensures that a concurrent resize operation will delay
 1418|       |        // freeing the old keys or values using QSBR, which is necessary to
 1419|       |        // safely allow concurrent reads without locking.
 1420|       |        SET_DICT_SHARED(mp);
 1421|       |    }
 1422|       |    #endif
 1423|    354|}
dictobject.c:validate_watcher_id:
 8018|     33|{
 8019|     33|    if (watcher_id < 0 || watcher_id >= DICT_MAX_WATCHERS) {
  ------------------
  |  |   11|     33|#define DICT_MAX_WATCHERS 8
  ------------------
  |  Branch (8019:9): [True: 0, False: 33]
  |  Branch (8019:27): [True: 0, False: 33]
  ------------------
 8020|      0|        PyErr_Format(PyExc_ValueError, "Invalid dict watcher ID %d", watcher_id);
 8021|      0|        return -1;
 8022|      0|    }
 8023|     33|    PyDict_WatchCallback cb = FT_ATOMIC_LOAD_PTR_RELAXED(
  ------------------
  |  |  153|     33|#define FT_ATOMIC_LOAD_PTR_RELAXED(value) value
  ------------------
 8024|     33|        interp->dict_state.watchers[watcher_id]);
 8025|     33|    if (cb == NULL) {
  ------------------
  |  Branch (8025:9): [True: 0, False: 33]
  ------------------
 8026|      0|        PyErr_Format(PyExc_ValueError, "No dict watcher set for ID %d", watcher_id);
 8027|      0|        return -1;
 8028|      0|    }
 8029|     33|    return 0;
 8030|     33|}

enumobject.c:reversed_new_impl:
  365|      3|{
  366|      3|    Py_ssize_t n;
  367|      3|    PyObject *reversed_meth;
  368|      3|    reversedobject *ro;
  369|       |
  370|      3|    reversed_meth = _PyObject_LookupSpecial(seq, &_Py_ID(__reversed__));
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  371|      3|    if (reversed_meth == Py_None) {
  ------------------
  |  |  616|      3|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (371:9): [True: 0, False: 3]
  ------------------
  372|      0|        Py_DECREF(reversed_meth);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  373|      0|        PyErr_Format(PyExc_TypeError,
  374|      0|                     "'%.200s' object is not reversible",
  375|      0|                     Py_TYPE(seq)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  376|      0|        return NULL;
  377|      0|    }
  378|      3|    if (reversed_meth != NULL) {
  ------------------
  |  Branch (378:9): [True: 3, False: 0]
  ------------------
  379|      3|        PyObject *res = _PyObject_CallNoArgs(reversed_meth);
  380|      3|        Py_DECREF(reversed_meth);
  ------------------
  |  |  430|      3|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  381|      3|        return res;
  382|      3|    }
  383|      0|    else if (PyErr_Occurred())
  ------------------
  |  Branch (383:14): [True: 0, False: 0]
  ------------------
  384|      0|        return NULL;
  385|       |
  386|      0|    if (!PySequence_Check(seq)) {
  ------------------
  |  Branch (386:9): [True: 0, False: 0]
  ------------------
  387|      0|        PyErr_Format(PyExc_TypeError,
  388|      0|                     "'%.200s' object is not reversible",
  389|      0|                     Py_TYPE(seq)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  390|      0|        return NULL;
  391|      0|    }
  392|       |
  393|      0|    n = PySequence_Size(seq);
  394|      0|    if (n == -1)
  ------------------
  |  Branch (394:9): [True: 0, False: 0]
  ------------------
  395|      0|        return NULL;
  396|       |
  397|      0|    ro = (reversedobject *)type->tp_alloc(type, 0);
  398|      0|    if (ro == NULL)
  ------------------
  |  Branch (398:9): [True: 0, False: 0]
  ------------------
  399|      0|        return NULL;
  400|       |
  401|      0|    ro->index = n-1;
  402|      0|    ro->seq = Py_NewRef(seq);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  403|      0|    return (PyObject *)ro;
  404|      0|}
enumobject.c:reversed_vectorcall:
  409|      3|{
  410|      3|    if (!_PyArg_NoKwnames("reversed", kwnames)) {
  ------------------
  |  |   15|      3|    ((kwnames) == NULL || _PyArg_NoKwnames((funcname), (kwnames)))
  |  |  ------------------
  |  |  |  Branch (15:6): [True: 3, False: 0]
  |  |  |  Branch (15:27): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  411|      0|        return NULL;
  412|      0|    }
  413|       |
  414|      3|    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
  ------------------
  |  |   37|      3|#define PyVectorcall_NARGS(n) _PyVectorcall_NARGS(n)
  ------------------
  415|      3|    if (!_PyArg_CheckPositional("reversed", nargs, 1, 1)) {
  ------------------
  |  |   31|      3|    (((min) <= (nargs) && (nargs) <= (max)) \
  |  |  ------------------
  |  |  |  Branch (31:7): [True: 3, False: 0]
  |  |  |  Branch (31:27): [True: 3, False: 0]
  |  |  ------------------
  |  |   32|      3|     || _PyArg_CheckPositional((funcname), (nargs), (min), (max)))
  |  |  ------------------
  |  |  |  Branch (32:9): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  416|      0|        return NULL;
  417|      0|    }
  418|       |
  419|      3|    return reversed_new_impl(_PyType_CAST(type), args[0]);
  ------------------
  |  |  770|      3|    (assert(PyType_Check(op)), _Py_CAST(PyTypeObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (419:30): [True: 3, False: 0]
  ------------------
  420|      3|}

PyException_GetTraceback:
  512|    220|{
  513|    220|    PyObject *traceback;
  514|    220|    Py_BEGIN_CRITICAL_SECTION(self);
  ------------------
  |  |   51|    220|    {
  ------------------
  515|    220|    traceback = Py_XNewRef(PyBaseExceptionObject_CAST(self)->traceback);
  ------------------
  |  |  551|    220|#  define Py_XNewRef(obj) _Py_XNewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    220|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    220|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  516|    220|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|    220|    }
  ------------------
  517|    220|    return traceback;
  518|    220|}
PyException_SetTraceback:
  523|    104|{
  524|    104|    int res;
  525|    104|    Py_BEGIN_CRITICAL_SECTION(self);
  ------------------
  |  |   51|    104|    {
  ------------------
  526|    104|    res = BaseException___traceback___set_impl(PyBaseExceptionObject_CAST(self), tb);
  527|    104|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|    104|    }
  ------------------
  528|    104|    return res;
  529|    104|}
PyException_SetCause:
  544|      1|{
  545|      1|    Py_BEGIN_CRITICAL_SECTION(self);
  ------------------
  |  |   51|      1|    {
  ------------------
  546|      1|    PyBaseExceptionObject *base_self = PyBaseExceptionObject_CAST(self);
  547|      1|    base_self->suppress_context = 1;
  548|      1|    Py_XSETREF(base_self->cause, cause);
  ------------------
  |  |  374|      1|    do { \
  |  |  375|      1|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      1|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  376|      1|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      1|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  377|      1|        *_tmp_dst_ptr = (src); \
  |  |  378|      1|        Py_XDECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  524|      1|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  379|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (379:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  549|      1|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|      1|    }
  ------------------
  550|      1|}
PyException_GetContext:
  554|      9|{
  555|      9|    PyObject *context;
  556|      9|    Py_BEGIN_CRITICAL_SECTION(self);
  ------------------
  |  |   51|      9|    {
  ------------------
  557|      9|    context = Py_XNewRef(PyBaseExceptionObject_CAST(self)->context);
  ------------------
  |  |  551|      9|#  define Py_XNewRef(obj) _Py_XNewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      9|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      9|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  558|      9|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|      9|    }
  ------------------
  559|      9|    return context;
  560|      9|}
PyException_SetContext:
  565|      9|{
  566|      9|    Py_BEGIN_CRITICAL_SECTION(self);
  ------------------
  |  |   51|      9|    {
  ------------------
  567|      9|    Py_XSETREF(PyBaseExceptionObject_CAST(self)->context, context);
  ------------------
  |  |  374|      9|    do { \
  |  |  375|      9|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      9|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  376|      9|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      9|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  377|      9|        *_tmp_dst_ptr = (src); \
  |  |  378|      9|        Py_XDECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  524|      9|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      9|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      9|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  379|      9|    } while (0)
  |  |  ------------------
  |  |  |  Branch (379:14): [Folded, False: 9]
  |  |  ------------------
  ------------------
  568|      9|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|      9|    }
  ------------------
  569|      9|}
_PyExc_InitTypes:
 4491|      1|{
 4492|     70|    for (size_t i=0; i < Py_ARRAY_LENGTH(static_exceptions); i++) {
  ------------------
  |  |  196|     70|    (sizeof(array) / sizeof((array)[0]))
  ------------------
  |  Branch (4492:22): [True: 69, False: 1]
  ------------------
 4493|     69|        PyTypeObject *exc = static_exceptions[i].exc;
 4494|     69|        if (_PyStaticType_InitBuiltin(interp, exc) < 0) {
  ------------------
  |  Branch (4494:13): [True: 0, False: 69]
  ------------------
 4495|      0|            return -1;
 4496|      0|        }
 4497|     69|        if (exc->tp_new == BaseException_new
  ------------------
  |  Branch (4497:13): [True: 51, False: 18]
  ------------------
 4498|     51|            && exc->tp_init == BaseException_init)
  ------------------
  |  Branch (4498:16): [True: 36, False: 15]
  ------------------
 4499|     36|        {
 4500|     36|            exc->tp_vectorcall = BaseException_vectorcall;
 4501|     36|        }
 4502|     69|    }
 4503|      1|    return 0;
 4504|      1|}
_PyExc_InitGlobalObjects:
 4519|      1|{
 4520|      1|    if (preallocate_memerrors() < 0) {
  ------------------
  |  Branch (4520:9): [True: 0, False: 1]
  ------------------
 4521|      0|        return _PyStatus_NO_MEMORY();
  ------------------
  |  |   33|      0|#define _PyStatus_NO_MEMORY() _PyStatus_ERR(_PyStatus_NO_MEMORY_ERRMSG)
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  ------------------
 4522|      0|    }
 4523|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 4524|      1|}
_PyExc_InitState:
 4528|      1|{
 4529|      1|    struct _Py_exc_state *state = &interp->exc_state;
 4530|       |
 4531|      1|#define ADD_ERRNO(TYPE, CODE) \
 4532|      1|    do { \
 4533|      1|        PyObject *_code = PyLong_FromLong(CODE); \
 4534|      1|        assert(_PyObject_RealIsSubclass(PyExc_ ## TYPE, PyExc_OSError)); \
 4535|      1|        if (!_code || PyDict_SetItem(state->errnomap, _code, PyExc_ ## TYPE)) { \
 4536|      1|            Py_XDECREF(_code); \
 4537|      1|            return _PyStatus_ERR("errmap insertion problem."); \
 4538|      1|        } \
 4539|      1|        Py_DECREF(_code); \
 4540|      1|    } while (0)
 4541|       |
 4542|       |    /* Add exceptions to errnomap */
 4543|      1|    assert(state->errnomap == NULL);
  ------------------
  |  Branch (4543:5): [True: 1, False: 0]
  ------------------
 4544|      1|    state->errnomap = PyDict_New();
 4545|      1|    if (!state->errnomap) {
  ------------------
  |  Branch (4545:9): [True: 0, False: 1]
  ------------------
 4546|      0|        return _PyStatus_NO_MEMORY();
  ------------------
  |  |   33|      0|#define _PyStatus_NO_MEMORY() _PyStatus_ERR(_PyStatus_NO_MEMORY_ERRMSG)
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  ------------------
 4547|      0|    }
 4548|       |
 4549|      1|    ADD_ERRNO(BlockingIOError, EAGAIN);
  ------------------
  |  | 4532|      1|    do { \
  |  | 4533|      1|        PyObject *_code = PyLong_FromLong(CODE); \
  |  | 4534|      1|        assert(_PyObject_RealIsSubclass(PyExc_ ## TYPE, PyExc_OSError)); \
  |  | 4535|      1|        if (!_code || PyDict_SetItem(state->errnomap, _code, PyExc_ ## TYPE)) { \
  |  |  ------------------
  |  |  |  Branch (4535:13): [True: 0, False: 1]
  |  |  |  Branch (4535:23): [True: 0, False: 1]
  |  |  ------------------
  |  | 4536|      0|            Py_XDECREF(_code); \
  |  |  ------------------
  |  |  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4537|      0|            return _PyStatus_ERR("errmap insertion problem."); \
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  |  | 4538|      0|        } \
  |  | 4539|      1|        Py_DECREF(_code); \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4540|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (4540:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (4549:5): [True: 1, False: 0]
  ------------------
 4550|      1|    ADD_ERRNO(BlockingIOError, EALREADY);
  ------------------
  |  | 4532|      1|    do { \
  |  | 4533|      1|        PyObject *_code = PyLong_FromLong(CODE); \
  |  | 4534|      1|        assert(_PyObject_RealIsSubclass(PyExc_ ## TYPE, PyExc_OSError)); \
  |  | 4535|      1|        if (!_code || PyDict_SetItem(state->errnomap, _code, PyExc_ ## TYPE)) { \
  |  |  ------------------
  |  |  |  Branch (4535:13): [True: 0, False: 1]
  |  |  |  Branch (4535:23): [True: 0, False: 1]
  |  |  ------------------
  |  | 4536|      0|            Py_XDECREF(_code); \
  |  |  ------------------
  |  |  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4537|      0|            return _PyStatus_ERR("errmap insertion problem."); \
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  |  | 4538|      0|        } \
  |  | 4539|      1|        Py_DECREF(_code); \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4540|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (4540:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (4550:5): [True: 1, False: 0]
  ------------------
 4551|      1|    ADD_ERRNO(BlockingIOError, EINPROGRESS);
  ------------------
  |  | 4532|      1|    do { \
  |  | 4533|      1|        PyObject *_code = PyLong_FromLong(CODE); \
  |  | 4534|      1|        assert(_PyObject_RealIsSubclass(PyExc_ ## TYPE, PyExc_OSError)); \
  |  | 4535|      1|        if (!_code || PyDict_SetItem(state->errnomap, _code, PyExc_ ## TYPE)) { \
  |  |  ------------------
  |  |  |  Branch (4535:13): [True: 0, False: 1]
  |  |  |  Branch (4535:23): [True: 0, False: 1]
  |  |  ------------------
  |  | 4536|      0|            Py_XDECREF(_code); \
  |  |  ------------------
  |  |  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4537|      0|            return _PyStatus_ERR("errmap insertion problem."); \
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  |  | 4538|      0|        } \
  |  | 4539|      1|        Py_DECREF(_code); \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4540|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (4540:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (4551:5): [True: 1, False: 0]
  ------------------
 4552|      1|    ADD_ERRNO(BlockingIOError, EWOULDBLOCK);
  ------------------
  |  | 4532|      1|    do { \
  |  | 4533|      1|        PyObject *_code = PyLong_FromLong(CODE); \
  |  | 4534|      1|        assert(_PyObject_RealIsSubclass(PyExc_ ## TYPE, PyExc_OSError)); \
  |  | 4535|      1|        if (!_code || PyDict_SetItem(state->errnomap, _code, PyExc_ ## TYPE)) { \
  |  |  ------------------
  |  |  |  Branch (4535:13): [True: 0, False: 1]
  |  |  |  Branch (4535:23): [True: 0, False: 1]
  |  |  ------------------
  |  | 4536|      0|            Py_XDECREF(_code); \
  |  |  ------------------
  |  |  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4537|      0|            return _PyStatus_ERR("errmap insertion problem."); \
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  |  | 4538|      0|        } \
  |  | 4539|      1|        Py_DECREF(_code); \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4540|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (4540:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (4552:5): [True: 1, False: 0]
  ------------------
 4553|      1|    ADD_ERRNO(BrokenPipeError, EPIPE);
  ------------------
  |  | 4532|      1|    do { \
  |  | 4533|      1|        PyObject *_code = PyLong_FromLong(CODE); \
  |  | 4534|      1|        assert(_PyObject_RealIsSubclass(PyExc_ ## TYPE, PyExc_OSError)); \
  |  | 4535|      1|        if (!_code || PyDict_SetItem(state->errnomap, _code, PyExc_ ## TYPE)) { \
  |  |  ------------------
  |  |  |  Branch (4535:13): [True: 0, False: 1]
  |  |  |  Branch (4535:23): [True: 0, False: 1]
  |  |  ------------------
  |  | 4536|      0|            Py_XDECREF(_code); \
  |  |  ------------------
  |  |  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4537|      0|            return _PyStatus_ERR("errmap insertion problem."); \
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  |  | 4538|      0|        } \
  |  | 4539|      1|        Py_DECREF(_code); \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4540|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (4540:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (4553:5): [True: 1, False: 0]
  ------------------
 4554|      1|#ifdef ESHUTDOWN
 4555|      1|    ADD_ERRNO(BrokenPipeError, ESHUTDOWN);
  ------------------
  |  | 4532|      1|    do { \
  |  | 4533|      1|        PyObject *_code = PyLong_FromLong(CODE); \
  |  | 4534|      1|        assert(_PyObject_RealIsSubclass(PyExc_ ## TYPE, PyExc_OSError)); \
  |  | 4535|      1|        if (!_code || PyDict_SetItem(state->errnomap, _code, PyExc_ ## TYPE)) { \
  |  |  ------------------
  |  |  |  Branch (4535:13): [True: 0, False: 1]
  |  |  |  Branch (4535:23): [True: 0, False: 1]
  |  |  ------------------
  |  | 4536|      0|            Py_XDECREF(_code); \
  |  |  ------------------
  |  |  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4537|      0|            return _PyStatus_ERR("errmap insertion problem."); \
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  |  | 4538|      0|        } \
  |  | 4539|      1|        Py_DECREF(_code); \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4540|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (4540:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (4555:5): [True: 1, False: 0]
  ------------------
 4556|      1|#endif
 4557|      1|    ADD_ERRNO(ChildProcessError, ECHILD);
  ------------------
  |  | 4532|      1|    do { \
  |  | 4533|      1|        PyObject *_code = PyLong_FromLong(CODE); \
  |  | 4534|      1|        assert(_PyObject_RealIsSubclass(PyExc_ ## TYPE, PyExc_OSError)); \
  |  | 4535|      1|        if (!_code || PyDict_SetItem(state->errnomap, _code, PyExc_ ## TYPE)) { \
  |  |  ------------------
  |  |  |  Branch (4535:13): [True: 0, False: 1]
  |  |  |  Branch (4535:23): [True: 0, False: 1]
  |  |  ------------------
  |  | 4536|      0|            Py_XDECREF(_code); \
  |  |  ------------------
  |  |  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4537|      0|            return _PyStatus_ERR("errmap insertion problem."); \
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  |  | 4538|      0|        } \
  |  | 4539|      1|        Py_DECREF(_code); \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4540|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (4540:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (4557:5): [True: 1, False: 0]
  ------------------
 4558|      1|    ADD_ERRNO(ConnectionAbortedError, ECONNABORTED);
  ------------------
  |  | 4532|      1|    do { \
  |  | 4533|      1|        PyObject *_code = PyLong_FromLong(CODE); \
  |  | 4534|      1|        assert(_PyObject_RealIsSubclass(PyExc_ ## TYPE, PyExc_OSError)); \
  |  | 4535|      1|        if (!_code || PyDict_SetItem(state->errnomap, _code, PyExc_ ## TYPE)) { \
  |  |  ------------------
  |  |  |  Branch (4535:13): [True: 0, False: 1]
  |  |  |  Branch (4535:23): [True: 0, False: 1]
  |  |  ------------------
  |  | 4536|      0|            Py_XDECREF(_code); \
  |  |  ------------------
  |  |  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4537|      0|            return _PyStatus_ERR("errmap insertion problem."); \
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  |  | 4538|      0|        } \
  |  | 4539|      1|        Py_DECREF(_code); \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4540|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (4540:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (4558:5): [True: 1, False: 0]
  ------------------
 4559|      1|    ADD_ERRNO(ConnectionRefusedError, ECONNREFUSED);
  ------------------
  |  | 4532|      1|    do { \
  |  | 4533|      1|        PyObject *_code = PyLong_FromLong(CODE); \
  |  | 4534|      1|        assert(_PyObject_RealIsSubclass(PyExc_ ## TYPE, PyExc_OSError)); \
  |  | 4535|      1|        if (!_code || PyDict_SetItem(state->errnomap, _code, PyExc_ ## TYPE)) { \
  |  |  ------------------
  |  |  |  Branch (4535:13): [True: 0, False: 1]
  |  |  |  Branch (4535:23): [True: 0, False: 1]
  |  |  ------------------
  |  | 4536|      0|            Py_XDECREF(_code); \
  |  |  ------------------
  |  |  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4537|      0|            return _PyStatus_ERR("errmap insertion problem."); \
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  |  | 4538|      0|        } \
  |  | 4539|      1|        Py_DECREF(_code); \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4540|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (4540:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (4559:5): [True: 1, False: 0]
  ------------------
 4560|      1|    ADD_ERRNO(ConnectionResetError, ECONNRESET);
  ------------------
  |  | 4532|      1|    do { \
  |  | 4533|      1|        PyObject *_code = PyLong_FromLong(CODE); \
  |  | 4534|      1|        assert(_PyObject_RealIsSubclass(PyExc_ ## TYPE, PyExc_OSError)); \
  |  | 4535|      1|        if (!_code || PyDict_SetItem(state->errnomap, _code, PyExc_ ## TYPE)) { \
  |  |  ------------------
  |  |  |  Branch (4535:13): [True: 0, False: 1]
  |  |  |  Branch (4535:23): [True: 0, False: 1]
  |  |  ------------------
  |  | 4536|      0|            Py_XDECREF(_code); \
  |  |  ------------------
  |  |  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4537|      0|            return _PyStatus_ERR("errmap insertion problem."); \
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  |  | 4538|      0|        } \
  |  | 4539|      1|        Py_DECREF(_code); \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4540|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (4540:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (4560:5): [True: 1, False: 0]
  ------------------
 4561|      1|    ADD_ERRNO(FileExistsError, EEXIST);
  ------------------
  |  | 4532|      1|    do { \
  |  | 4533|      1|        PyObject *_code = PyLong_FromLong(CODE); \
  |  | 4534|      1|        assert(_PyObject_RealIsSubclass(PyExc_ ## TYPE, PyExc_OSError)); \
  |  | 4535|      1|        if (!_code || PyDict_SetItem(state->errnomap, _code, PyExc_ ## TYPE)) { \
  |  |  ------------------
  |  |  |  Branch (4535:13): [True: 0, False: 1]
  |  |  |  Branch (4535:23): [True: 0, False: 1]
  |  |  ------------------
  |  | 4536|      0|            Py_XDECREF(_code); \
  |  |  ------------------
  |  |  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4537|      0|            return _PyStatus_ERR("errmap insertion problem."); \
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  |  | 4538|      0|        } \
  |  | 4539|      1|        Py_DECREF(_code); \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4540|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (4540:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (4561:5): [True: 1, False: 0]
  ------------------
 4562|      1|    ADD_ERRNO(FileNotFoundError, ENOENT);
  ------------------
  |  | 4532|      1|    do { \
  |  | 4533|      1|        PyObject *_code = PyLong_FromLong(CODE); \
  |  | 4534|      1|        assert(_PyObject_RealIsSubclass(PyExc_ ## TYPE, PyExc_OSError)); \
  |  | 4535|      1|        if (!_code || PyDict_SetItem(state->errnomap, _code, PyExc_ ## TYPE)) { \
  |  |  ------------------
  |  |  |  Branch (4535:13): [True: 0, False: 1]
  |  |  |  Branch (4535:23): [True: 0, False: 1]
  |  |  ------------------
  |  | 4536|      0|            Py_XDECREF(_code); \
  |  |  ------------------
  |  |  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4537|      0|            return _PyStatus_ERR("errmap insertion problem."); \
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  |  | 4538|      0|        } \
  |  | 4539|      1|        Py_DECREF(_code); \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4540|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (4540:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (4562:5): [True: 1, False: 0]
  ------------------
 4563|      1|    ADD_ERRNO(IsADirectoryError, EISDIR);
  ------------------
  |  | 4532|      1|    do { \
  |  | 4533|      1|        PyObject *_code = PyLong_FromLong(CODE); \
  |  | 4534|      1|        assert(_PyObject_RealIsSubclass(PyExc_ ## TYPE, PyExc_OSError)); \
  |  | 4535|      1|        if (!_code || PyDict_SetItem(state->errnomap, _code, PyExc_ ## TYPE)) { \
  |  |  ------------------
  |  |  |  Branch (4535:13): [True: 0, False: 1]
  |  |  |  Branch (4535:23): [True: 0, False: 1]
  |  |  ------------------
  |  | 4536|      0|            Py_XDECREF(_code); \
  |  |  ------------------
  |  |  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4537|      0|            return _PyStatus_ERR("errmap insertion problem."); \
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  |  | 4538|      0|        } \
  |  | 4539|      1|        Py_DECREF(_code); \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4540|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (4540:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (4563:5): [True: 1, False: 0]
  ------------------
 4564|      1|    ADD_ERRNO(NotADirectoryError, ENOTDIR);
  ------------------
  |  | 4532|      1|    do { \
  |  | 4533|      1|        PyObject *_code = PyLong_FromLong(CODE); \
  |  | 4534|      1|        assert(_PyObject_RealIsSubclass(PyExc_ ## TYPE, PyExc_OSError)); \
  |  | 4535|      1|        if (!_code || PyDict_SetItem(state->errnomap, _code, PyExc_ ## TYPE)) { \
  |  |  ------------------
  |  |  |  Branch (4535:13): [True: 0, False: 1]
  |  |  |  Branch (4535:23): [True: 0, False: 1]
  |  |  ------------------
  |  | 4536|      0|            Py_XDECREF(_code); \
  |  |  ------------------
  |  |  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4537|      0|            return _PyStatus_ERR("errmap insertion problem."); \
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  |  | 4538|      0|        } \
  |  | 4539|      1|        Py_DECREF(_code); \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4540|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (4540:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (4564:5): [True: 1, False: 0]
  ------------------
 4565|      1|    ADD_ERRNO(InterruptedError, EINTR);
  ------------------
  |  | 4532|      1|    do { \
  |  | 4533|      1|        PyObject *_code = PyLong_FromLong(CODE); \
  |  | 4534|      1|        assert(_PyObject_RealIsSubclass(PyExc_ ## TYPE, PyExc_OSError)); \
  |  | 4535|      1|        if (!_code || PyDict_SetItem(state->errnomap, _code, PyExc_ ## TYPE)) { \
  |  |  ------------------
  |  |  |  Branch (4535:13): [True: 0, False: 1]
  |  |  |  Branch (4535:23): [True: 0, False: 1]
  |  |  ------------------
  |  | 4536|      0|            Py_XDECREF(_code); \
  |  |  ------------------
  |  |  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4537|      0|            return _PyStatus_ERR("errmap insertion problem."); \
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  |  | 4538|      0|        } \
  |  | 4539|      1|        Py_DECREF(_code); \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4540|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (4540:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (4565:5): [True: 1, False: 0]
  ------------------
 4566|      1|    ADD_ERRNO(PermissionError, EACCES);
  ------------------
  |  | 4532|      1|    do { \
  |  | 4533|      1|        PyObject *_code = PyLong_FromLong(CODE); \
  |  | 4534|      1|        assert(_PyObject_RealIsSubclass(PyExc_ ## TYPE, PyExc_OSError)); \
  |  | 4535|      1|        if (!_code || PyDict_SetItem(state->errnomap, _code, PyExc_ ## TYPE)) { \
  |  |  ------------------
  |  |  |  Branch (4535:13): [True: 0, False: 1]
  |  |  |  Branch (4535:23): [True: 0, False: 1]
  |  |  ------------------
  |  | 4536|      0|            Py_XDECREF(_code); \
  |  |  ------------------
  |  |  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4537|      0|            return _PyStatus_ERR("errmap insertion problem."); \
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  |  | 4538|      0|        } \
  |  | 4539|      1|        Py_DECREF(_code); \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4540|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (4540:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (4566:5): [True: 1, False: 0]
  ------------------
 4567|      1|    ADD_ERRNO(PermissionError, EPERM);
  ------------------
  |  | 4532|      1|    do { \
  |  | 4533|      1|        PyObject *_code = PyLong_FromLong(CODE); \
  |  | 4534|      1|        assert(_PyObject_RealIsSubclass(PyExc_ ## TYPE, PyExc_OSError)); \
  |  | 4535|      1|        if (!_code || PyDict_SetItem(state->errnomap, _code, PyExc_ ## TYPE)) { \
  |  |  ------------------
  |  |  |  Branch (4535:13): [True: 0, False: 1]
  |  |  |  Branch (4535:23): [True: 0, False: 1]
  |  |  ------------------
  |  | 4536|      0|            Py_XDECREF(_code); \
  |  |  ------------------
  |  |  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4537|      0|            return _PyStatus_ERR("errmap insertion problem."); \
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  |  | 4538|      0|        } \
  |  | 4539|      1|        Py_DECREF(_code); \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4540|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (4540:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (4567:5): [True: 1, False: 0]
  ------------------
 4568|       |#ifdef ENOTCAPABLE
 4569|       |    // Extension for WASI capability-based security. Process lacks
 4570|       |    // capability to access a resource.
 4571|       |    ADD_ERRNO(PermissionError, ENOTCAPABLE);
 4572|       |#endif
 4573|      1|    ADD_ERRNO(ProcessLookupError, ESRCH);
  ------------------
  |  | 4532|      1|    do { \
  |  | 4533|      1|        PyObject *_code = PyLong_FromLong(CODE); \
  |  | 4534|      1|        assert(_PyObject_RealIsSubclass(PyExc_ ## TYPE, PyExc_OSError)); \
  |  | 4535|      1|        if (!_code || PyDict_SetItem(state->errnomap, _code, PyExc_ ## TYPE)) { \
  |  |  ------------------
  |  |  |  Branch (4535:13): [True: 0, False: 1]
  |  |  |  Branch (4535:23): [True: 0, False: 1]
  |  |  ------------------
  |  | 4536|      0|            Py_XDECREF(_code); \
  |  |  ------------------
  |  |  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4537|      0|            return _PyStatus_ERR("errmap insertion problem."); \
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  |  | 4538|      0|        } \
  |  | 4539|      1|        Py_DECREF(_code); \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4540|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (4540:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (4573:5): [True: 1, False: 0]
  ------------------
 4574|      1|    ADD_ERRNO(TimeoutError, ETIMEDOUT);
  ------------------
  |  | 4532|      1|    do { \
  |  | 4533|      1|        PyObject *_code = PyLong_FromLong(CODE); \
  |  | 4534|      1|        assert(_PyObject_RealIsSubclass(PyExc_ ## TYPE, PyExc_OSError)); \
  |  | 4535|      1|        if (!_code || PyDict_SetItem(state->errnomap, _code, PyExc_ ## TYPE)) { \
  |  |  ------------------
  |  |  |  Branch (4535:13): [True: 0, False: 1]
  |  |  |  Branch (4535:23): [True: 0, False: 1]
  |  |  ------------------
  |  | 4536|      0|            Py_XDECREF(_code); \
  |  |  ------------------
  |  |  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4537|      0|            return _PyStatus_ERR("errmap insertion problem."); \
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  |  | 4538|      0|        } \
  |  | 4539|      1|        Py_DECREF(_code); \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4540|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (4540:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (4574:5): [True: 1, False: 0]
  ------------------
 4575|       |#ifdef WSAETIMEDOUT
 4576|       |    ADD_ERRNO(TimeoutError, WSAETIMEDOUT);
 4577|       |#endif
 4578|       |
 4579|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 4580|       |
 4581|      1|#undef ADD_ERRNO
 4582|      1|}
_PyBuiltins_AddExceptions:
 4588|      1|{
 4589|      1|    PyObject *mod_dict = PyModule_GetDict(bltinmod);
 4590|      1|    if (mod_dict == NULL) {
  ------------------
  |  Branch (4590:9): [True: 0, False: 1]
  ------------------
 4591|      0|        return -1;
 4592|      0|    }
 4593|       |
 4594|     70|    for (size_t i=0; i < Py_ARRAY_LENGTH(static_exceptions); i++) {
  ------------------
  |  |  196|     70|    (sizeof(array) / sizeof((array)[0]))
  ------------------
  |  Branch (4594:22): [True: 69, False: 1]
  ------------------
 4595|     69|        struct static_exception item = static_exceptions[i];
 4596|       |
 4597|     69|        if (PyDict_SetItemString(mod_dict, item.name, (PyObject*)item.exc)) {
  ------------------
  |  Branch (4597:13): [True: 0, False: 69]
  ------------------
 4598|      0|            return -1;
 4599|      0|        }
 4600|     69|    }
 4601|       |
 4602|      1|    PyObject *PyExc_ExceptionGroup = create_exception_group_class();
 4603|      1|    if (!PyExc_ExceptionGroup) {
  ------------------
  |  Branch (4603:9): [True: 0, False: 1]
  ------------------
 4604|      0|        return -1;
 4605|      0|    }
 4606|      1|    if (PyDict_SetItemString(mod_dict, "ExceptionGroup", PyExc_ExceptionGroup)) {
  ------------------
  |  Branch (4606:9): [True: 0, False: 1]
  ------------------
 4607|      0|        return -1;
 4608|      0|    }
 4609|      1|    if (PyDict_SetItemString(mod_dict, "EnvironmentError", PyExc_OSError)) {
  ------------------
  |  Branch (4609:9): [True: 0, False: 1]
  ------------------
 4610|      0|        return -1;
 4611|      0|    }
 4612|      1|    if (PyDict_SetItemString(mod_dict, "IOError", PyExc_OSError)) {
  ------------------
  |  Branch (4612:9): [True: 0, False: 1]
  ------------------
 4613|      0|        return -1;
 4614|      0|    }
 4615|       |#ifdef MS_WINDOWS
 4616|       |    if (PyDict_SetItemString(mod_dict, "WindowsError", PyExc_OSError)) {
 4617|       |        return -1;
 4618|       |    }
 4619|       |#endif
 4620|      1|    return 0;
 4621|      1|}
exceptions.c:PyBaseExceptionObject_CAST:
   43|    593|{
   44|    593|    assert(PyExceptionInstance_Check(exc));
  ------------------
  |  Branch (44:5): [True: 593, False: 0]
  ------------------
   45|    593|    return (PyBaseExceptionObject *)exc;
   46|    593|}
exceptions.c:BaseException___traceback___set_impl:
  393|    104|{
  394|    104|    if (value == NULL) {
  ------------------
  |  Branch (394:9): [True: 0, False: 104]
  ------------------
  395|      0|        PyErr_SetString(PyExc_TypeError, "__traceback__ may not be deleted");
  396|      0|        return -1;
  397|      0|    }
  398|    104|    if (PyTraceBack_Check(value)) {
  ------------------
  |  |   14|    104|#define PyTraceBack_Check(v) Py_IS_TYPE((v), &PyTraceBack_Type)
  |  |  ------------------
  |  |  |  |  215|    104|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    104|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    104|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 102, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  399|    102|        Py_XSETREF(self->traceback, Py_NewRef(value));
  ------------------
  |  |  374|    102|    do { \
  |  |  375|    102|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|    102|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  376|    102|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|    102|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  377|    102|        *_tmp_dst_ptr = (src); \
  |  |  378|    102|        Py_XDECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  524|    102|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    102|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    102|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  379|    102|    } while (0)
  |  |  ------------------
  |  |  |  Branch (379:14): [Folded, False: 102]
  |  |  ------------------
  ------------------
  400|    102|    }
  401|      2|    else if (value == Py_None) {
  ------------------
  |  |  616|      2|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (401:14): [True: 2, False: 0]
  ------------------
  402|      2|        Py_CLEAR(self->traceback);
  ------------------
  |  |  484|      2|    do { \
  |  |  485|      2|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      2|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      2|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      2|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      2|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 2, False: 0]
  |  |  ------------------
  |  |  488|      2|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      2|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      2|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      2|        } \
  |  |  491|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
  403|      2|    }
  404|      0|    else {
  405|      0|        PyErr_SetString(PyExc_TypeError,
  406|      0|                        "__traceback__ must be a traceback or None");
  407|      0|        return -1;
  408|      0|    }
  409|    104|    return 0;
  410|    104|}
exceptions.c:BaseException_dealloc:
  139|     65|{
  140|     65|    PyBaseExceptionObject *self = PyBaseExceptionObject_CAST(op);
  141|     65|    PyObject_GC_UnTrack(self);
  142|       |    // bpo-44348: The trashcan mechanism prevents stack overflow when deleting
  143|       |    // long chains of exceptions. For example, exceptions can be chained
  144|       |    // through the __context__ attributes or the __traceback__ attribute.
  145|     65|    (void)BaseException_clear(op);
  146|     65|    Py_TYPE(self)->tp_free(self);
  ------------------
  |  |  213|     65|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     65|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     65|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  147|     65|}
exceptions.c:get_exc_state:
   31|     43|{
   32|     43|    PyInterpreterState *interp = _PyInterpreterState_GET();
   33|     43|    return &interp->exc_state;
   34|     43|}
exceptions.c:ImportError_dealloc:
 1847|      7|{
 1848|      7|    _PyObject_GC_UNTRACK(self);
  ------------------
  |  |  515|      7|        _PyObject_GC_UNTRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      7|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1849|      7|    (void)ImportError_clear(self);
 1850|      7|    Py_TYPE(self)->tp_free(self);
  ------------------
  |  |  213|      7|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      7|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1851|      7|}
exceptions.c:PyImportErrorObject_CAST:
 1793|     14|{
 1794|     14|    assert(PyObject_TypeCheck(self, (PyTypeObject *)PyExc_ImportError));
  ------------------
  |  Branch (1794:5): [True: 14, False: 0]
  ------------------
 1795|     14|    return (PyImportErrorObject *)self;
 1796|     14|}
exceptions.c:ImportError_clear:
 1836|      7|{
 1837|      7|    PyImportErrorObject *self = PyImportErrorObject_CAST(op);
 1838|      7|    Py_CLEAR(self->msg);
  ------------------
  |  |  484|      7|    do { \
  |  |  485|      7|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      7|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      7|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      7|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      7|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 7, False: 0]
  |  |  ------------------
  |  |  488|      7|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      7|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      7|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      7|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      7|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      7|        } \
  |  |  491|      7|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 7]
  |  |  ------------------
  ------------------
 1839|      7|    Py_CLEAR(self->name);
  ------------------
  |  |  484|      7|    do { \
  |  |  485|      7|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      7|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      7|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      7|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      7|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 2, False: 5]
  |  |  ------------------
  |  |  488|      2|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      2|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      2|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      2|        } \
  |  |  491|      7|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 7]
  |  |  ------------------
  ------------------
 1840|      7|    Py_CLEAR(self->path);
  ------------------
  |  |  484|      7|    do { \
  |  |  485|      7|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      7|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      7|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      7|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      7|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 5, False: 2]
  |  |  ------------------
  |  |  488|      5|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      5|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      5|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      5|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      5|        } \
  |  |  491|      7|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 7]
  |  |  ------------------
  ------------------
 1841|       |    Py_CLEAR(self->name_from);
  ------------------
  |  |  484|      7|    do { \
  |  |  485|      7|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      7|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      7|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      7|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      7|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 7]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      7|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 7]
  |  |  ------------------
  ------------------
 1842|      7|    return BaseException_clear(op);
 1843|      7|}
exceptions.c:ImportError_init:
 1800|      7|{
 1801|      7|    static char *kwlist[] = {"name", "path", "name_from", 0};
 1802|      7|    PyObject *empty_tuple;
 1803|      7|    PyObject *msg = NULL;
 1804|      7|    PyObject *name = NULL;
 1805|      7|    PyObject *path = NULL;
 1806|      7|    PyObject *name_from = NULL;
 1807|       |
 1808|      7|    if (BaseException_init(op, args, NULL) == -1)
  ------------------
  |  Branch (1808:9): [True: 0, False: 7]
  ------------------
 1809|      0|        return -1;
 1810|       |
 1811|      7|    PyImportErrorObject *self = PyImportErrorObject_CAST(op);
 1812|      7|    empty_tuple = PyTuple_New(0);
 1813|      7|    if (!empty_tuple)
  ------------------
  |  Branch (1813:9): [True: 0, False: 7]
  ------------------
 1814|      0|        return -1;
 1815|      7|    if (!PyArg_ParseTupleAndKeywords(empty_tuple, kwds, "|$OOO:ImportError", kwlist,
  ------------------
  |  Branch (1815:9): [True: 0, False: 7]
  ------------------
 1816|      7|                                     &name, &path, &name_from)) {
 1817|      0|        Py_DECREF(empty_tuple);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1818|      0|        return -1;
 1819|      0|    }
 1820|      7|    Py_DECREF(empty_tuple);
  ------------------
  |  |  430|      7|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      7|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1821|       |
 1822|      7|    Py_XSETREF(self->name, Py_XNewRef(name));
  ------------------
  |  |  374|      7|    do { \
  |  |  375|      7|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      7|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  376|      7|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      7|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  377|      7|        *_tmp_dst_ptr = (src); \
  |  |  378|      7|        Py_XDECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  524|      7|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      7|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  379|      7|    } while (0)
  |  |  ------------------
  |  |  |  Branch (379:14): [Folded, False: 7]
  |  |  ------------------
  ------------------
 1823|      7|    Py_XSETREF(self->path, Py_XNewRef(path));
  ------------------
  |  |  374|      7|    do { \
  |  |  375|      7|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      7|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  376|      7|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      7|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  377|      7|        *_tmp_dst_ptr = (src); \
  |  |  378|      7|        Py_XDECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  524|      7|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      7|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  379|      7|    } while (0)
  |  |  ------------------
  |  |  |  Branch (379:14): [Folded, False: 7]
  |  |  ------------------
  ------------------
 1824|      7|    Py_XSETREF(self->name_from, Py_XNewRef(name_from));
  ------------------
  |  |  374|      7|    do { \
  |  |  375|      7|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      7|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  376|      7|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      7|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  377|      7|        *_tmp_dst_ptr = (src); \
  |  |  378|      7|        Py_XDECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  524|      7|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      7|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  379|      7|    } while (0)
  |  |  ------------------
  |  |  |  Branch (379:14): [Folded, False: 7]
  |  |  ------------------
  ------------------
 1825|       |
 1826|      7|    if (PyTuple_GET_SIZE(args) == 1) {
  ------------------
  |  |   27|      7|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      7|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1826:9): [True: 7, False: 0]
  ------------------
 1827|      7|        msg = Py_NewRef(PyTuple_GET_ITEM(args, 0));
  ------------------
  |  |  550|      7|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      7|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     14|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (37:38): [True: 7, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1828|      7|    }
 1829|      7|    Py_XSETREF(self->msg, msg);
  ------------------
  |  |  374|      7|    do { \
  |  |  375|      7|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      7|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  376|      7|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      7|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  377|      7|        *_tmp_dst_ptr = (src); \
  |  |  378|      7|        Py_XDECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  524|      7|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      7|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  379|      7|    } while (0)
  |  |  ------------------
  |  |  |  Branch (379:14): [Folded, False: 7]
  |  |  ------------------
  ------------------
 1830|       |
 1831|      7|    return 0;
 1832|      7|}
exceptions.c:OSError_dealloc:
 2321|     10|{
 2322|     10|    _PyObject_GC_UNTRACK(self);
  ------------------
  |  |  515|     10|        _PyObject_GC_UNTRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     10|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2323|     10|    (void)OSError_clear(self);
 2324|     10|    Py_TYPE(self)->tp_free(self);
  ------------------
  |  |  213|     10|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     10|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2325|     10|}
exceptions.c:PyOSErrorObject_CAST:
 2035|     20|{
 2036|     20|    assert(PyObject_TypeCheck(self, (PyTypeObject *)PyExc_OSError));
  ------------------
  |  Branch (2036:5): [True: 20, False: 0]
  ------------------
 2037|     20|    return (PyOSErrorObject *)self;
 2038|     20|}
exceptions.c:OSError_clear:
 2307|     10|{
 2308|     10|    PyOSErrorObject *self = PyOSErrorObject_CAST(op);
 2309|     10|    Py_CLEAR(self->myerrno);
  ------------------
  |  |  484|     10|    do { \
  |  |  485|     10|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|     10|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|     10|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|     10|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|     10|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 10, False: 0]
  |  |  ------------------
  |  |  488|     10|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|     10|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|     10|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|     10|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     10|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|     10|        } \
  |  |  491|     10|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 10]
  |  |  ------------------
  ------------------
 2310|     10|    Py_CLEAR(self->strerror);
  ------------------
  |  |  484|     10|    do { \
  |  |  485|     10|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|     10|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|     10|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|     10|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|     10|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 10, False: 0]
  |  |  ------------------
  |  |  488|     10|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|     10|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|     10|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|     10|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     10|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|     10|        } \
  |  |  491|     10|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 10]
  |  |  ------------------
  ------------------
 2311|     10|    Py_CLEAR(self->filename);
  ------------------
  |  |  484|     10|    do { \
  |  |  485|     10|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|     10|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|     10|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|     10|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|     10|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 5, False: 5]
  |  |  ------------------
  |  |  488|      5|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      5|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      5|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      5|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      5|        } \
  |  |  491|     10|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 10]
  |  |  ------------------
  ------------------
 2312|     10|    Py_CLEAR(self->filename2);
  ------------------
  |  |  484|     10|    do { \
  |  |  485|     10|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|     10|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|     10|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|     10|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|     10|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 10]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|     10|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 10]
  |  |  ------------------
  ------------------
 2313|       |#ifdef MS_WINDOWS
 2314|       |    Py_CLEAR(self->winerror);
 2315|       |#endif
 2316|     10|    return BaseException_clear(op);
 2317|     10|}
exceptions.c:OSError_init:
 2268|     10|{
 2269|     10|    PyOSErrorObject *self = PyOSErrorObject_CAST(op);
 2270|     10|    PyObject *myerrno = NULL, *strerror = NULL;
 2271|     10|    PyObject *filename = NULL, *filename2 = NULL;
 2272|       |#ifdef MS_WINDOWS
 2273|       |    PyObject *winerror = NULL;
 2274|       |#endif
 2275|       |
 2276|     10|    if (!oserror_use_init(Py_TYPE(self)))
  ------------------
  |  |  213|     10|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     10|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2276:9): [True: 10, False: 0]
  ------------------
 2277|       |        /* Everything already done in OSError_new */
 2278|     10|        return 0;
 2279|       |
 2280|      0|    if (!_PyArg_NoKeywords(Py_TYPE(self)->tp_name, kwds))
  ------------------
  |  |   25|      0|    ((kwargs) == NULL || _PyArg_NoKeywords((funcname), (kwargs)))
  |  |  ------------------
  |  |  |  Branch (25:6): [True: 0, False: 0]
  |  |  |  Branch (25:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2281|      0|        return -1;
 2282|       |
 2283|      0|    Py_INCREF(args);
  ------------------
  |  |  310|      0|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2284|      0|    if (oserror_parse_args(&args, &myerrno, &strerror, &filename, &filename2
  ------------------
  |  Branch (2284:9): [True: 0, False: 0]
  ------------------
 2285|       |#ifdef MS_WINDOWS
 2286|       |                           , &winerror
 2287|       |#endif
 2288|      0|        ))
 2289|      0|        goto error;
 2290|       |
 2291|      0|    if (oserror_init(self, &args, myerrno, strerror, filename, filename2
  ------------------
  |  Branch (2291:9): [True: 0, False: 0]
  ------------------
 2292|       |#ifdef MS_WINDOWS
 2293|       |                     , winerror
 2294|       |#endif
 2295|      0|        ))
 2296|      0|        goto error;
 2297|       |
 2298|      0|    return 0;
 2299|       |
 2300|      0|error:
 2301|      0|    Py_DECREF(args);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2302|      0|    return -1;
 2303|      0|}
exceptions.c:oserror_use_init:
 2180|     30|{
 2181|       |    /* When __init__ is defined in an OSError subclass, we want any
 2182|       |       extraneous argument to __new__ to be ignored.  The only reasonable
 2183|       |       solution, given __new__ takes a variable number of arguments,
 2184|       |       is to defer arg parsing and initialization to __init__.
 2185|       |
 2186|       |       But when __new__ is overridden as well, it should call our __new__
 2187|       |       with the right arguments.
 2188|       |
 2189|       |       (see http://bugs.python.org/issue12555#msg148829 )
 2190|       |    */
 2191|     30|    if (type->tp_init != OSError_init && type->tp_new == OSError_new) {
  ------------------
  |  Branch (2191:9): [True: 0, False: 30]
  |  Branch (2191:42): [True: 0, False: 0]
  ------------------
 2192|      0|        assert((PyObject *) type != PyExc_OSError);
  ------------------
  |  Branch (2192:9): [True: 0, False: 0]
  ------------------
 2193|      0|        return 1;
 2194|      0|    }
 2195|     30|    return 0;
 2196|     30|}
exceptions.c:oserror_parse_args:
 2069|     10|{
 2070|     10|    Py_ssize_t nargs;
 2071|     10|    PyObject *args = *p_args;
 2072|     10|#ifndef MS_WINDOWS
 2073|       |    /*
 2074|       |     * ignored on non-Windows platforms,
 2075|       |     * but parsed so OSError has a consistent signature
 2076|       |     */
 2077|     10|    PyObject *_winerror = NULL;
 2078|     10|    PyObject **winerror = &_winerror;
 2079|     10|#endif /* MS_WINDOWS */
 2080|       |
 2081|     10|    nargs = PyTuple_GET_SIZE(args);
  ------------------
  |  |   27|     10|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     10|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2082|       |
 2083|     10|    if (nargs >= 2 && nargs <= 5) {
  ------------------
  |  Branch (2083:9): [True: 10, False: 0]
  |  Branch (2083:23): [True: 10, False: 0]
  ------------------
 2084|     10|        if (!PyArg_UnpackTuple(args, "OSError", 2, 5,
  ------------------
  |  Branch (2084:13): [True: 0, False: 10]
  ------------------
 2085|     10|                               myerrno, strerror,
 2086|     10|                               filename, winerror, filename2))
 2087|      0|            return -1;
 2088|       |#ifdef MS_WINDOWS
 2089|       |        if (*winerror && PyLong_Check(*winerror)) {
 2090|       |            long errcode, winerrcode;
 2091|       |            PyObject *newargs;
 2092|       |            Py_ssize_t i;
 2093|       |
 2094|       |            winerrcode = PyLong_AsLong(*winerror);
 2095|       |            if (winerrcode == -1 && PyErr_Occurred())
 2096|       |                return -1;
 2097|       |            errcode = winerror_to_errno(winerrcode);
 2098|       |            *myerrno = PyLong_FromLong(errcode);
 2099|       |            if (!*myerrno)
 2100|       |                return -1;
 2101|       |            newargs = PyTuple_New(nargs);
 2102|       |            if (!newargs)
 2103|       |                return -1;
 2104|       |            PyTuple_SET_ITEM(newargs, 0, *myerrno);
 2105|       |            for (i = 1; i < nargs; i++) {
 2106|       |                PyObject *val = PyTuple_GET_ITEM(args, i);
 2107|       |                PyTuple_SET_ITEM(newargs, i, Py_NewRef(val));
 2108|       |            }
 2109|       |            Py_DECREF(args);
 2110|       |            args = *p_args = newargs;
 2111|       |        }
 2112|       |#endif /* MS_WINDOWS */
 2113|     10|    }
 2114|       |
 2115|     10|    return 0;
 2116|     10|}
exceptions.c:oserror_init:
 2126|     10|{
 2127|     10|    PyObject *args = *p_args;
 2128|     10|    Py_ssize_t nargs = PyTuple_GET_SIZE(args);
  ------------------
  |  |   27|     10|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     10|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2129|       |
 2130|       |    /* self->filename will remain Py_None otherwise */
 2131|     10|    if (filename && filename != Py_None) {
  ------------------
  |  |  616|      5|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (2131:9): [True: 5, False: 5]
  |  Branch (2131:21): [True: 5, False: 0]
  ------------------
 2132|      5|        if (Py_IS_TYPE(self, (PyTypeObject *) PyExc_BlockingIOError) &&
  ------------------
  |  |  215|     10|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 0, False: 5]
  |  |  ------------------
  ------------------
 2133|      0|            PyNumber_Check(filename)) {
  ------------------
  |  Branch (2133:13): [True: 0, False: 0]
  ------------------
 2134|       |            /* BlockingIOError's 3rd argument can be the number of
 2135|       |             * characters written.
 2136|       |             */
 2137|      0|            self->written = PyNumber_AsSsize_t(filename, PyExc_ValueError);
 2138|      0|            if (self->written == -1 && PyErr_Occurred())
  ------------------
  |  Branch (2138:17): [True: 0, False: 0]
  |  Branch (2138:40): [True: 0, False: 0]
  ------------------
 2139|      0|                return -1;
 2140|      0|        }
 2141|      5|        else {
 2142|      5|            self->filename = Py_NewRef(filename);
  ------------------
  |  |  550|      5|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2143|       |
 2144|      5|            if (filename2 && filename2 != Py_None) {
  ------------------
  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (2144:17): [True: 0, False: 5]
  |  Branch (2144:30): [True: 0, False: 0]
  ------------------
 2145|      0|                self->filename2 = Py_NewRef(filename2);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2146|      0|            }
 2147|       |
 2148|      5|            if (nargs >= 2 && nargs <= 5) {
  ------------------
  |  Branch (2148:17): [True: 5, False: 0]
  |  Branch (2148:31): [True: 5, False: 0]
  ------------------
 2149|       |                /* filename, filename2, and winerror are removed from the args tuple
 2150|       |                   (for compatibility purposes, see test_exceptions.py) */
 2151|      5|                PyObject *subslice = PyTuple_GetSlice(args, 0, 2);
 2152|      5|                if (!subslice)
  ------------------
  |  Branch (2152:21): [True: 0, False: 5]
  ------------------
 2153|      0|                    return -1;
 2154|       |
 2155|      5|                Py_DECREF(args);  /* replacing args */
  ------------------
  |  |  430|      5|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2156|      5|                *p_args = args = subslice;
 2157|      5|            }
 2158|      5|        }
 2159|      5|    }
 2160|     10|    self->myerrno = Py_XNewRef(myerrno);
  ------------------
  |  |  551|     10|#  define Py_XNewRef(obj) _Py_XNewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     10|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2161|     10|    self->strerror = Py_XNewRef(strerror);
  ------------------
  |  |  551|     10|#  define Py_XNewRef(obj) _Py_XNewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     10|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2162|       |#ifdef MS_WINDOWS
 2163|       |    self->winerror = Py_XNewRef(winerror);
 2164|       |#endif
 2165|       |
 2166|       |    /* Steals the reference to args */
 2167|     10|    Py_XSETREF(self->args, args);
  ------------------
  |  |  374|     10|    do { \
  |  |  375|     10|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|     10|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  376|     10|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|     10|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  377|     10|        *_tmp_dst_ptr = (src); \
  |  |  378|     10|        Py_XDECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  524|     10|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     10|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  379|     10|    } while (0)
  |  |  ------------------
  |  |  |  Branch (379:14): [Folded, False: 10]
  |  |  ------------------
  ------------------
 2168|     10|    *p_args = args = NULL;
 2169|       |
 2170|     10|    return 0;
 2171|     10|}
exceptions.c:OSError_new:
 2200|     10|{
 2201|     10|    PyOSErrorObject *self = NULL;
 2202|     10|    PyObject *myerrno = NULL, *strerror = NULL;
 2203|     10|    PyObject *filename = NULL, *filename2 = NULL;
 2204|       |#ifdef MS_WINDOWS
 2205|       |    PyObject *winerror = NULL;
 2206|       |#endif
 2207|       |
 2208|     10|    Py_INCREF(args);
  ------------------
  |  |  310|     10|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     10|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2209|       |
 2210|     10|    if (!oserror_use_init(type)) {
  ------------------
  |  Branch (2210:9): [True: 10, False: 0]
  ------------------
 2211|     10|        if (!_PyArg_NoKeywords(type->tp_name, kwds))
  ------------------
  |  |   25|     10|    ((kwargs) == NULL || _PyArg_NoKeywords((funcname), (kwargs)))
  |  |  ------------------
  |  |  |  Branch (25:6): [True: 10, False: 0]
  |  |  |  Branch (25:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2212|      0|            goto error;
 2213|       |
 2214|     10|        if (oserror_parse_args(&args, &myerrno, &strerror,
  ------------------
  |  Branch (2214:13): [True: 0, False: 10]
  ------------------
 2215|     10|                               &filename, &filename2
 2216|       |#ifdef MS_WINDOWS
 2217|       |                               , &winerror
 2218|       |#endif
 2219|     10|            ))
 2220|      0|            goto error;
 2221|       |
 2222|     10|        struct _Py_exc_state *state = get_exc_state();
 2223|     10|        if (myerrno && PyLong_Check(myerrno) &&
  ------------------
  |  |   13|     10|        PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     20|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 10, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2223:13): [True: 10, False: 0]
  ------------------
 2224|     10|            state->errnomap && (PyObject *) type == PyExc_OSError) {
  ------------------
  |  Branch (2224:13): [True: 10, False: 0]
  |  Branch (2224:32): [True: 10, False: 0]
  ------------------
 2225|     10|            PyObject *newtype;
 2226|     10|            newtype = PyDict_GetItemWithError(state->errnomap, myerrno);
 2227|     10|            if (newtype) {
  ------------------
  |  Branch (2227:17): [True: 10, False: 0]
  ------------------
 2228|     10|                type = _PyType_CAST(newtype);
  ------------------
  |  |  770|     10|    (assert(PyType_Check(op)), _Py_CAST(PyTypeObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (2228:24): [True: 10, False: 0]
  ------------------
 2229|     10|            }
 2230|      0|            else if (PyErr_Occurred())
  ------------------
  |  Branch (2230:22): [True: 0, False: 0]
  ------------------
 2231|      0|                goto error;
 2232|     10|        }
 2233|     10|    }
 2234|       |
 2235|     10|    self = (PyOSErrorObject *) type->tp_alloc(type, 0);
 2236|     10|    if (!self)
  ------------------
  |  Branch (2236:9): [True: 0, False: 10]
  ------------------
 2237|      0|        goto error;
 2238|       |
 2239|     10|    self->dict = NULL;
 2240|     10|    self->traceback = self->cause = self->context = NULL;
 2241|     10|    self->written = -1;
 2242|       |
 2243|     10|    if (!oserror_use_init(type)) {
  ------------------
  |  Branch (2243:9): [True: 10, False: 0]
  ------------------
 2244|     10|        if (oserror_init(self, &args, myerrno, strerror, filename, filename2
  ------------------
  |  Branch (2244:13): [True: 0, False: 10]
  ------------------
 2245|       |#ifdef MS_WINDOWS
 2246|       |                         , winerror
 2247|       |#endif
 2248|     10|            ))
 2249|      0|            goto error;
 2250|     10|    }
 2251|      0|    else {
 2252|      0|        self->args = PyTuple_New(0);
 2253|      0|        if (self->args == NULL)
  ------------------
  |  Branch (2253:13): [True: 0, False: 0]
  ------------------
 2254|      0|            goto error;
 2255|      0|    }
 2256|       |
 2257|     10|    Py_XDECREF(args);
  ------------------
  |  |  524|     10|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     10|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2258|     10|    return (PyObject *) self;
 2259|       |
 2260|      0|error:
 2261|      0|    Py_XDECREF(args);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2262|      0|    Py_XDECREF(self);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2263|       |    return NULL;
 2264|     10|}
exceptions.c:AttributeError_dealloc:
 2698|     32|{
 2699|     32|    _PyObject_GC_UNTRACK(self);
  ------------------
  |  |  515|     32|        _PyObject_GC_UNTRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     32|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     32|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2700|     32|    (void)AttributeError_clear(self);
 2701|     32|    Py_TYPE(self)->tp_free(self);
  ------------------
  |  |  213|     32|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     32|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     32|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2702|     32|}
exceptions.c:PyAttributeErrorObject_CAST:
 2653|     64|{
 2654|     64|    assert(PyObject_TypeCheck(self, (PyTypeObject *)PyExc_AttributeError));
  ------------------
  |  Branch (2654:5): [True: 64, False: 0]
  ------------------
 2655|     64|    return (PyAttributeErrorObject *)self;
 2656|     64|}
exceptions.c:AttributeError_clear:
 2689|     32|{
 2690|     32|    PyAttributeErrorObject *self = PyAttributeErrorObject_CAST(op);
 2691|     32|    Py_CLEAR(self->obj);
  ------------------
  |  |  484|     32|    do { \
  |  |  485|     32|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|     32|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|     32|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|     32|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|     32|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 21, False: 11]
  |  |  ------------------
  |  |  488|     21|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|     21|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|     21|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|     21|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     21|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     21|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|     21|        } \
  |  |  491|     32|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 32]
  |  |  ------------------
  ------------------
 2692|       |    Py_CLEAR(self->name);
  ------------------
  |  |  484|     32|    do { \
  |  |  485|     32|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|     32|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|     32|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|     32|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|     32|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 21, False: 11]
  |  |  ------------------
  |  |  488|     21|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|     21|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|     21|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|     21|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     21|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     21|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|     21|        } \
  |  |  491|     32|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 32]
  |  |  ------------------
  ------------------
 2693|     32|    return BaseException_clear(op);
 2694|     32|}
exceptions.c:AttributeError_init:
 2660|     32|{
 2661|     32|    static char *kwlist[] = {"name", "obj", NULL};
 2662|     32|    PyObject *name = NULL;
 2663|     32|    PyObject *obj = NULL;
 2664|       |
 2665|     32|    if (BaseException_init(op, args, NULL) == -1) {
  ------------------
  |  Branch (2665:9): [True: 0, False: 32]
  ------------------
 2666|      0|        return -1;
 2667|      0|    }
 2668|       |
 2669|     32|    PyObject *empty_tuple = PyTuple_New(0);
 2670|     32|    if (!empty_tuple) {
  ------------------
  |  Branch (2670:9): [True: 0, False: 32]
  ------------------
 2671|      0|        return -1;
 2672|      0|    }
 2673|     32|    if (!PyArg_ParseTupleAndKeywords(empty_tuple, kwds, "|$OO:AttributeError", kwlist,
  ------------------
  |  Branch (2673:9): [True: 0, False: 32]
  ------------------
 2674|     32|                                     &name, &obj)) {
 2675|      0|        Py_DECREF(empty_tuple);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2676|      0|        return -1;
 2677|      0|    }
 2678|     32|    Py_DECREF(empty_tuple);
  ------------------
  |  |  430|     32|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     32|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     32|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2679|       |
 2680|     32|    PyAttributeErrorObject *self = PyAttributeErrorObject_CAST(op);
 2681|     32|    Py_XSETREF(self->name, Py_XNewRef(name));
  ------------------
  |  |  374|     32|    do { \
  |  |  375|     32|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|     32|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  376|     32|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|     32|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  377|     32|        *_tmp_dst_ptr = (src); \
  |  |  378|     32|        Py_XDECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  524|     32|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     32|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     32|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  379|     32|    } while (0)
  |  |  ------------------
  |  |  |  Branch (379:14): [Folded, False: 32]
  |  |  ------------------
  ------------------
 2682|     32|    Py_XSETREF(self->obj, Py_XNewRef(obj));
  ------------------
  |  |  374|     32|    do { \
  |  |  375|     32|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|     32|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  376|     32|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|     32|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  377|     32|        *_tmp_dst_ptr = (src); \
  |  |  378|     32|        Py_XDECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  524|     32|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     32|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     32|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  379|     32|    } while (0)
  |  |  ------------------
  |  |  |  Branch (379:14): [Folded, False: 32]
  |  |  ------------------
  ------------------
 2683|       |
 2684|     32|    return 0;
 2685|     32|}
exceptions.c:get_memory_error:
 4108|     16|{
 4109|     16|    PyBaseExceptionObject *self = NULL;
 4110|     16|    struct _Py_exc_state *state = get_exc_state();
 4111|       |
 4112|     16|    MEMERRORS_LOCK(state);
  ------------------
  |  | 4102|     16|# define MEMERRORS_LOCK(state) ((void)0)
  ------------------
 4113|     16|    if (state->memerrors_freelist != NULL) {
  ------------------
  |  Branch (4113:9): [True: 0, False: 16]
  ------------------
 4114|       |        /* Fetch MemoryError from freelist and initialize it */
 4115|      0|        self = state->memerrors_freelist;
 4116|      0|        state->memerrors_freelist = (PyBaseExceptionObject *) self->dict;
 4117|      0|        state->memerrors_numfree--;
 4118|      0|        self->dict = NULL;
 4119|      0|        self->args = (PyObject *)&_Py_SINGLETON(tuple_empty);
  ------------------
  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  ------------------
  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  ------------------
  ------------------
 4120|      0|        _Py_NewReference((PyObject *)self);
 4121|      0|        _PyObject_GC_TRACK(self);
  ------------------
  |  |  513|      0|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4122|      0|    }
 4123|     16|    MEMERRORS_UNLOCK(state);
  ------------------
  |  | 4103|     16|# define MEMERRORS_UNLOCK(state) ((void)0)
  ------------------
 4124|       |
 4125|     16|    if (self != NULL) {
  ------------------
  |  Branch (4125:9): [True: 0, False: 16]
  ------------------
 4126|      0|        return (PyObject *)self;
 4127|      0|    }
 4128|       |
 4129|     16|    if (!allow_allocation) {
  ------------------
  |  Branch (4129:9): [True: 0, False: 16]
  ------------------
 4130|      0|        PyInterpreterState *interp = _PyInterpreterState_GET();
 4131|      0|        return Py_NewRef(
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4132|      0|            &_Py_INTERP_SINGLETON(interp, last_resort_memory_error));
 4133|      0|    }
 4134|     16|    return BaseException_new((PyTypeObject *)PyExc_MemoryError, args, kwds);
 4135|     16|}
exceptions.c:MemoryError_dealloc:
 4166|     16|{
 4167|     16|    PyBaseExceptionObject *self = PyBaseExceptionObject_CAST(op);
 4168|     16|    _PyObject_GC_UNTRACK(self);
  ------------------
  |  |  515|     16|        _PyObject_GC_UNTRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     16|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     16|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4169|       |
 4170|     16|    (void)BaseException_clear(op);
 4171|       |
 4172|       |    /* If this is a subclass of MemoryError, we don't need to
 4173|       |     * do anything in the free-list*/
 4174|     16|    if (!Py_IS_TYPE(self, (PyTypeObject *) PyExc_MemoryError)) {
  ------------------
  |  |  215|     16|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|     16|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     16|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4174:9): [True: 0, False: 16]
  ------------------
 4175|      0|        Py_TYPE(self)->tp_free(op);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4176|      0|        return;
 4177|      0|    }
 4178|       |
 4179|     16|    struct _Py_exc_state *state = get_exc_state();
 4180|     16|    MEMERRORS_LOCK(state);
  ------------------
  |  | 4102|     16|# define MEMERRORS_LOCK(state) ((void)0)
  ------------------
 4181|     16|    if (state->memerrors_numfree < MEMERRORS_SAVE) {
  ------------------
  |  | 4096|     16|#define MEMERRORS_SAVE 16
  ------------------
  |  Branch (4181:9): [True: 16, False: 0]
  ------------------
 4182|     16|        self->dict = (PyObject *) state->memerrors_freelist;
 4183|     16|        state->memerrors_freelist = self;
 4184|     16|        state->memerrors_numfree++;
 4185|     16|        MEMERRORS_UNLOCK(state);
  ------------------
  |  | 4103|     16|# define MEMERRORS_UNLOCK(state) ((void)0)
  ------------------
 4186|     16|        return;
 4187|     16|    }
 4188|      0|    MEMERRORS_UNLOCK(state);
  ------------------
  |  | 4103|      0|# define MEMERRORS_UNLOCK(state) ((void)0)
  ------------------
 4189|       |
 4190|      0|    Py_TYPE(self)->tp_free((PyObject *)self);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4191|      0|}
exceptions.c:BaseException_clear:
  126|    130|{
  127|    130|    PyBaseExceptionObject *self = PyBaseExceptionObject_CAST(op);
  128|    130|    Py_CLEAR(self->dict);
  ------------------
  |  |  484|    130|    do { \
  |  |  485|    130|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|    130|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|    130|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|    130|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|    130|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 130]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|    130|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 130]
  |  |  ------------------
  ------------------
  129|    130|    Py_CLEAR(self->args);
  ------------------
  |  |  484|    130|    do { \
  |  |  485|    130|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|    130|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|    130|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|    130|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|    130|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 130, False: 0]
  |  |  ------------------
  |  |  488|    130|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|    130|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|    130|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|    130|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    130|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    130|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|    130|        } \
  |  |  491|    130|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 130]
  |  |  ------------------
  ------------------
  130|    130|    Py_CLEAR(self->notes);
  ------------------
  |  |  484|    130|    do { \
  |  |  485|    130|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|    130|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|    130|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|    130|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|    130|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 130]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|    130|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 130]
  |  |  ------------------
  ------------------
  131|    130|    Py_CLEAR(self->traceback);
  ------------------
  |  |  484|    130|    do { \
  |  |  485|    130|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|    130|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|    130|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|    130|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|    130|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 90, False: 40]
  |  |  ------------------
  |  |  488|     90|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|     90|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|     90|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|     90|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     90|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     90|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|     90|        } \
  |  |  491|    130|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 130]
  |  |  ------------------
  ------------------
  132|    130|    Py_CLEAR(self->cause);
  ------------------
  |  |  484|    130|    do { \
  |  |  485|    130|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|    130|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|    130|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|    130|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|    130|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 130]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|    130|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 130]
  |  |  ------------------
  ------------------
  133|       |    Py_CLEAR(self->context);
  ------------------
  |  |  484|    130|    do { \
  |  |  485|    130|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|    130|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|    130|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|    130|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|    130|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 9, False: 121]
  |  |  ------------------
  |  |  488|      9|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      9|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      9|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      9|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      9|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      9|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      9|        } \
  |  |  491|    130|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 130]
  |  |  ------------------
  ------------------
  134|    130|    return 0;
  135|    130|}
exceptions.c:BaseException_init:
   81|     39|{
   82|     39|    PyBaseExceptionObject *self = PyBaseExceptionObject_CAST(op);
   83|     39|    if (!_PyArg_NoKeywords(Py_TYPE(self)->tp_name, kwds))
  ------------------
  |  |   25|     39|    ((kwargs) == NULL || _PyArg_NoKeywords((funcname), (kwargs)))
  |  |  ------------------
  |  |  |  Branch (25:6): [True: 39, False: 0]
  |  |  |  Branch (25:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   84|      0|        return -1;
   85|       |
   86|     39|    Py_XSETREF(self->args, Py_NewRef(args));
  ------------------
  |  |  374|     39|    do { \
  |  |  375|     39|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|     39|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  376|     39|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|     39|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  377|     39|        *_tmp_dst_ptr = (src); \
  |  |  378|     39|        Py_XDECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  524|     39|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     39|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     39|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  379|     39|    } while (0)
  |  |  ------------------
  |  |  |  Branch (379:14): [Folded, False: 39]
  |  |  ------------------
  ------------------
   87|     39|    return 0;
   88|     39|}
exceptions.c:MemoryError_new:
 4139|     16|{
 4140|       |    /* If this is a subclass of MemoryError, don't use the freelist
 4141|       |     * and just return a fresh object */
 4142|     16|    if (type != (PyTypeObject *) PyExc_MemoryError) {
  ------------------
  |  Branch (4142:9): [True: 0, False: 16]
  ------------------
 4143|      0|        return BaseException_new(type, args, kwds);
 4144|      0|    }
 4145|     16|    return get_memory_error(1, args, kwds);
 4146|     16|}
exceptions.c:BaseException_new:
   53|     55|{
   54|     55|    PyBaseExceptionObject *self;
   55|       |
   56|     55|    self = (PyBaseExceptionObject *)type->tp_alloc(type, 0);
   57|     55|    if (!self)
  ------------------
  |  Branch (57:9): [True: 0, False: 55]
  ------------------
   58|      0|        return NULL;
   59|       |    /* the dict is created on the fly in PyObject_GenericSetAttr */
   60|     55|    self->dict = NULL;
   61|     55|    self->notes = NULL;
   62|     55|    self->traceback = self->cause = self->context = NULL;
   63|     55|    self->suppress_context = 0;
   64|       |
   65|     55|    if (args) {
  ------------------
  |  Branch (65:9): [True: 39, False: 16]
  ------------------
   66|     39|        self->args = Py_NewRef(args);
  ------------------
  |  |  550|     39|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     39|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     39|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   67|     39|        return (PyObject *)self;
   68|     39|    }
   69|       |
   70|     16|    self->args = PyTuple_New(0);
   71|     16|    if (!self->args) {
  ------------------
  |  Branch (71:9): [True: 0, False: 16]
  ------------------
   72|      0|        Py_DECREF(self);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   73|      0|        return NULL;
   74|      0|    }
   75|       |
   76|     16|    return (PyObject *)self;
   77|     16|}
exceptions.c:BaseException_vectorcall:
   94|     65|{
   95|     65|    PyTypeObject *type = _PyType_CAST(type_obj);
  ------------------
  |  |  770|     65|    (assert(PyType_Check(op)), _Py_CAST(PyTypeObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|     65|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (95:26): [True: 65, False: 0]
  ------------------
   96|     65|    if (!_PyArg_NoKwnames(type->tp_name, kwnames)) {
  ------------------
  |  |   15|     65|    ((kwnames) == NULL || _PyArg_NoKwnames((funcname), (kwnames)))
  |  |  ------------------
  |  |  |  Branch (15:6): [True: 65, False: 0]
  |  |  |  Branch (15:27): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   97|      0|        return NULL;
   98|      0|    }
   99|       |
  100|     65|    PyBaseExceptionObject *self;
  101|     65|    self = (PyBaseExceptionObject *)type->tp_alloc(type, 0);
  102|     65|    if (!self) {
  ------------------
  |  Branch (102:9): [True: 0, False: 65]
  ------------------
  103|      0|        return NULL;
  104|      0|    }
  105|       |
  106|       |    // The dict is created on the fly in PyObject_GenericSetAttr()
  107|     65|    self->dict = NULL;
  108|     65|    self->notes = NULL;
  109|     65|    self->traceback = NULL;
  110|     65|    self->cause = NULL;
  111|     65|    self->context = NULL;
  112|     65|    self->suppress_context = 0;
  113|       |
  114|     65|    self->args = PyTuple_FromArray(args, PyVectorcall_NARGS(nargsf));
  ------------------
  |  |   37|     65|#define PyVectorcall_NARGS(n) _PyVectorcall_NARGS(n)
  ------------------
  115|     65|    if (!self->args) {
  ------------------
  |  Branch (115:9): [True: 0, False: 65]
  ------------------
  116|      0|        Py_DECREF(self);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  117|      0|        return NULL;
  118|      0|    }
  119|       |
  120|     65|    return (PyObject *)self;
  121|     65|}
exceptions.c:preallocate_memerrors:
 4195|      1|{
 4196|       |    /* We create enough MemoryErrors and then decref them, which will fill
 4197|       |       up the freelist. */
 4198|      1|    int i;
 4199|       |
 4200|      1|    PyObject *errors[MEMERRORS_SAVE];
 4201|     17|    for (i = 0; i < MEMERRORS_SAVE; i++) {
  ------------------
  |  | 4096|     17|#define MEMERRORS_SAVE 16
  ------------------
  |  Branch (4201:17): [True: 16, False: 1]
  ------------------
 4202|     16|        errors[i] = MemoryError_new((PyTypeObject *) PyExc_MemoryError,
 4203|     16|                                    NULL, NULL);
 4204|     16|        if (!errors[i]) {
  ------------------
  |  Branch (4204:13): [True: 0, False: 16]
  ------------------
 4205|      0|            return -1;
 4206|      0|        }
 4207|     16|    }
 4208|     17|    for (i = 0; i < MEMERRORS_SAVE; i++) {
  ------------------
  |  | 4096|     17|#define MEMERRORS_SAVE 16
  ------------------
  |  Branch (4208:17): [True: 16, False: 1]
  ------------------
 4209|     16|        Py_DECREF(errors[i]);
  ------------------
  |  |  430|     16|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     16|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     16|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4210|     16|    }
 4211|      1|    return 0;
 4212|      1|}
exceptions.c:create_exception_group_class:
 1763|      1|create_exception_group_class(void) {
 1764|      1|    struct _Py_exc_state *state = get_exc_state();
 1765|       |
 1766|      1|    PyObject *bases = _PyTuple_FromPair(
 1767|      1|        PyExc_BaseExceptionGroup, PyExc_Exception);
 1768|      1|    if (bases == NULL) {
  ------------------
  |  Branch (1768:9): [True: 0, False: 1]
  ------------------
 1769|      0|        return NULL;
 1770|      0|    }
 1771|       |
 1772|      1|    assert(!state->PyExc_ExceptionGroup);
  ------------------
  |  Branch (1772:5): [True: 1, False: 0]
  ------------------
 1773|      1|    state->PyExc_ExceptionGroup = PyErr_NewException(
 1774|      1|        "builtins.ExceptionGroup", bases, NULL);
 1775|       |
 1776|      1|    Py_DECREF(bases);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1777|      1|    return state->PyExc_ExceptionGroup;
 1778|      1|}

PyFile_NewStdPrinter:
  291|      1|{
  292|      1|    PyStdPrinter_Object *self;
  293|       |
  294|      1|    if (fd != fileno(stdout) && fd != fileno(stderr)) {
  ------------------
  |  Branch (294:9): [True: 1, False: 0]
  |  Branch (294:33): [True: 0, False: 1]
  ------------------
  295|       |        /* not enough infrastructure for PyErr_BadInternalCall() */
  296|      0|        return NULL;
  297|      0|    }
  298|       |
  299|      1|    self = PyObject_New(PyStdPrinter_Object,
  ------------------
  |  |  130|      1|#define PyObject_New(type, typeobj) ((type *)_PyObject_New(typeobj))
  ------------------
  300|      1|                        &PyStdPrinter_Type);
  301|      1|    if (self != NULL) {
  ------------------
  |  Branch (301:9): [True: 1, False: 0]
  ------------------
  302|      1|        self->fd = fd;
  303|      1|    }
  304|      1|    return (PyObject*)self;
  305|      1|}

PyFloat_GetInfo:
   84|      1|{
   85|      1|    PyObject* floatinfo;
   86|      1|    int pos = 0;
   87|       |
   88|      1|    floatinfo = PyStructSequence_New(&FloatInfoType);
   89|      1|    if (floatinfo == NULL) {
  ------------------
  |  Branch (89:9): [True: 0, False: 1]
  ------------------
   90|      0|        return NULL;
   91|      0|    }
   92|       |
   93|      1|#define SetFlag(CALL) \
   94|      1|    do {                                                    \
   95|      1|        PyObject *flag = (CALL);                            \
   96|      1|        if (flag == NULL) {                                 \
   97|      1|            Py_CLEAR(floatinfo);                            \
   98|      1|            return NULL;                                    \
   99|      1|        }                                                   \
  100|      1|        PyStructSequence_SET_ITEM(floatinfo, pos++, flag);  \
  101|      1|    } while (0)
  102|       |
  103|      1|#define SetIntFlag(FLAG) SetFlag(PyLong_FromLong((FLAG)))
  104|      1|#define SetDblFlag(FLAG) SetFlag(PyFloat_FromDouble((FLAG)))
  105|       |
  106|      1|    SetDblFlag(DBL_MAX);
  ------------------
  |  |  104|      1|#define SetDblFlag(FLAG) SetFlag(PyFloat_FromDouble((FLAG)))
  |  |  ------------------
  |  |  |  |   94|      1|    do {                                                    \
  |  |  |  |   95|      1|        PyObject *flag = (CALL);                            \
  |  |  |  |   96|      1|        if (flag == NULL) {                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (96:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |   97|      0|            Py_CLEAR(floatinfo);                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |  484|      0|    do { \
  |  |  |  |  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  490|      0|        } \
  |  |  |  |  |  |  491|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   98|      0|            return NULL;                                    \
  |  |  |  |   99|      0|        }                                                   \
  |  |  |  |  100|      1|        PyStructSequence_SET_ITEM(floatinfo, pos++, flag);  \
  |  |  |  |  ------------------
  |  |  |  |  |  |   11|      1|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  |  |  |  |  ------------------
  |  |  |  |  101|      1|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (101:14): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  107|      1|    SetIntFlag(DBL_MAX_EXP);
  ------------------
  |  |  103|      1|#define SetIntFlag(FLAG) SetFlag(PyLong_FromLong((FLAG)))
  |  |  ------------------
  |  |  |  |   94|      1|    do {                                                    \
  |  |  |  |   95|      1|        PyObject *flag = (CALL);                            \
  |  |  |  |   96|      1|        if (flag == NULL) {                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (96:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |   97|      0|            Py_CLEAR(floatinfo);                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |  484|      0|    do { \
  |  |  |  |  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  490|      0|        } \
  |  |  |  |  |  |  491|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   98|      0|            return NULL;                                    \
  |  |  |  |   99|      0|        }                                                   \
  |  |  |  |  100|      1|        PyStructSequence_SET_ITEM(floatinfo, pos++, flag);  \
  |  |  |  |  ------------------
  |  |  |  |  |  |   11|      1|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  |  |  |  |  ------------------
  |  |  |  |  101|      1|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (101:14): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  108|      1|    SetIntFlag(DBL_MAX_10_EXP);
  ------------------
  |  |  103|      1|#define SetIntFlag(FLAG) SetFlag(PyLong_FromLong((FLAG)))
  |  |  ------------------
  |  |  |  |   94|      1|    do {                                                    \
  |  |  |  |   95|      1|        PyObject *flag = (CALL);                            \
  |  |  |  |   96|      1|        if (flag == NULL) {                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (96:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |   97|      0|            Py_CLEAR(floatinfo);                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |  484|      0|    do { \
  |  |  |  |  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  490|      0|        } \
  |  |  |  |  |  |  491|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   98|      0|            return NULL;                                    \
  |  |  |  |   99|      0|        }                                                   \
  |  |  |  |  100|      1|        PyStructSequence_SET_ITEM(floatinfo, pos++, flag);  \
  |  |  |  |  ------------------
  |  |  |  |  |  |   11|      1|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  |  |  |  |  ------------------
  |  |  |  |  101|      1|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (101:14): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  109|      1|    SetDblFlag(DBL_MIN);
  ------------------
  |  |  104|      1|#define SetDblFlag(FLAG) SetFlag(PyFloat_FromDouble((FLAG)))
  |  |  ------------------
  |  |  |  |   94|      1|    do {                                                    \
  |  |  |  |   95|      1|        PyObject *flag = (CALL);                            \
  |  |  |  |   96|      1|        if (flag == NULL) {                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (96:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |   97|      0|            Py_CLEAR(floatinfo);                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |  484|      0|    do { \
  |  |  |  |  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  490|      0|        } \
  |  |  |  |  |  |  491|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   98|      0|            return NULL;                                    \
  |  |  |  |   99|      0|        }                                                   \
  |  |  |  |  100|      1|        PyStructSequence_SET_ITEM(floatinfo, pos++, flag);  \
  |  |  |  |  ------------------
  |  |  |  |  |  |   11|      1|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  |  |  |  |  ------------------
  |  |  |  |  101|      1|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (101:14): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  110|      1|    SetIntFlag(DBL_MIN_EXP);
  ------------------
  |  |  103|      1|#define SetIntFlag(FLAG) SetFlag(PyLong_FromLong((FLAG)))
  |  |  ------------------
  |  |  |  |   94|      1|    do {                                                    \
  |  |  |  |   95|      1|        PyObject *flag = (CALL);                            \
  |  |  |  |   96|      1|        if (flag == NULL) {                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (96:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |   97|      0|            Py_CLEAR(floatinfo);                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |  484|      0|    do { \
  |  |  |  |  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  490|      0|        } \
  |  |  |  |  |  |  491|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   98|      0|            return NULL;                                    \
  |  |  |  |   99|      0|        }                                                   \
  |  |  |  |  100|      1|        PyStructSequence_SET_ITEM(floatinfo, pos++, flag);  \
  |  |  |  |  ------------------
  |  |  |  |  |  |   11|      1|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  |  |  |  |  ------------------
  |  |  |  |  101|      1|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (101:14): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  111|      1|    SetIntFlag(DBL_MIN_10_EXP);
  ------------------
  |  |  103|      1|#define SetIntFlag(FLAG) SetFlag(PyLong_FromLong((FLAG)))
  |  |  ------------------
  |  |  |  |   94|      1|    do {                                                    \
  |  |  |  |   95|      1|        PyObject *flag = (CALL);                            \
  |  |  |  |   96|      1|        if (flag == NULL) {                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (96:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |   97|      0|            Py_CLEAR(floatinfo);                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |  484|      0|    do { \
  |  |  |  |  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  490|      0|        } \
  |  |  |  |  |  |  491|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   98|      0|            return NULL;                                    \
  |  |  |  |   99|      0|        }                                                   \
  |  |  |  |  100|      1|        PyStructSequence_SET_ITEM(floatinfo, pos++, flag);  \
  |  |  |  |  ------------------
  |  |  |  |  |  |   11|      1|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  |  |  |  |  ------------------
  |  |  |  |  101|      1|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (101:14): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  112|      1|    SetIntFlag(DBL_DIG);
  ------------------
  |  |  103|      1|#define SetIntFlag(FLAG) SetFlag(PyLong_FromLong((FLAG)))
  |  |  ------------------
  |  |  |  |   94|      1|    do {                                                    \
  |  |  |  |   95|      1|        PyObject *flag = (CALL);                            \
  |  |  |  |   96|      1|        if (flag == NULL) {                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (96:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |   97|      0|            Py_CLEAR(floatinfo);                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |  484|      0|    do { \
  |  |  |  |  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  490|      0|        } \
  |  |  |  |  |  |  491|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   98|      0|            return NULL;                                    \
  |  |  |  |   99|      0|        }                                                   \
  |  |  |  |  100|      1|        PyStructSequence_SET_ITEM(floatinfo, pos++, flag);  \
  |  |  |  |  ------------------
  |  |  |  |  |  |   11|      1|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  |  |  |  |  ------------------
  |  |  |  |  101|      1|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (101:14): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  113|      1|    SetIntFlag(DBL_MANT_DIG);
  ------------------
  |  |  103|      1|#define SetIntFlag(FLAG) SetFlag(PyLong_FromLong((FLAG)))
  |  |  ------------------
  |  |  |  |   94|      1|    do {                                                    \
  |  |  |  |   95|      1|        PyObject *flag = (CALL);                            \
  |  |  |  |   96|      1|        if (flag == NULL) {                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (96:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |   97|      0|            Py_CLEAR(floatinfo);                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |  484|      0|    do { \
  |  |  |  |  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  490|      0|        } \
  |  |  |  |  |  |  491|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   98|      0|            return NULL;                                    \
  |  |  |  |   99|      0|        }                                                   \
  |  |  |  |  100|      1|        PyStructSequence_SET_ITEM(floatinfo, pos++, flag);  \
  |  |  |  |  ------------------
  |  |  |  |  |  |   11|      1|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  |  |  |  |  ------------------
  |  |  |  |  101|      1|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (101:14): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  114|      1|    SetDblFlag(DBL_EPSILON);
  ------------------
  |  |  104|      1|#define SetDblFlag(FLAG) SetFlag(PyFloat_FromDouble((FLAG)))
  |  |  ------------------
  |  |  |  |   94|      1|    do {                                                    \
  |  |  |  |   95|      1|        PyObject *flag = (CALL);                            \
  |  |  |  |   96|      1|        if (flag == NULL) {                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (96:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |   97|      0|            Py_CLEAR(floatinfo);                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |  484|      0|    do { \
  |  |  |  |  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  490|      0|        } \
  |  |  |  |  |  |  491|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   98|      0|            return NULL;                                    \
  |  |  |  |   99|      0|        }                                                   \
  |  |  |  |  100|      1|        PyStructSequence_SET_ITEM(floatinfo, pos++, flag);  \
  |  |  |  |  ------------------
  |  |  |  |  |  |   11|      1|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  |  |  |  |  ------------------
  |  |  |  |  101|      1|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (101:14): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  115|      1|    SetIntFlag(FLT_RADIX);
  ------------------
  |  |  103|      1|#define SetIntFlag(FLAG) SetFlag(PyLong_FromLong((FLAG)))
  |  |  ------------------
  |  |  |  |   94|      1|    do {                                                    \
  |  |  |  |   95|      1|        PyObject *flag = (CALL);                            \
  |  |  |  |   96|      1|        if (flag == NULL) {                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (96:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |   97|      0|            Py_CLEAR(floatinfo);                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |  484|      0|    do { \
  |  |  |  |  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  490|      0|        } \
  |  |  |  |  |  |  491|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   98|      0|            return NULL;                                    \
  |  |  |  |   99|      0|        }                                                   \
  |  |  |  |  100|      1|        PyStructSequence_SET_ITEM(floatinfo, pos++, flag);  \
  |  |  |  |  ------------------
  |  |  |  |  |  |   11|      1|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  |  |  |  |  ------------------
  |  |  |  |  101|      1|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (101:14): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  116|      1|    SetIntFlag(FLT_ROUNDS);
  ------------------
  |  |  103|      1|#define SetIntFlag(FLAG) SetFlag(PyLong_FromLong((FLAG)))
  |  |  ------------------
  |  |  |  |   94|      1|    do {                                                    \
  |  |  |  |   95|      1|        PyObject *flag = (CALL);                            \
  |  |  |  |   96|      1|        if (flag == NULL) {                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (96:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  |   97|      0|            Py_CLEAR(floatinfo);                            \
  |  |  |  |  ------------------
  |  |  |  |  |  |  484|      0|    do { \
  |  |  |  |  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  490|      0|        } \
  |  |  |  |  |  |  491|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   98|      0|            return NULL;                                    \
  |  |  |  |   99|      0|        }                                                   \
  |  |  |  |  100|      1|        PyStructSequence_SET_ITEM(floatinfo, pos++, flag);  \
  |  |  |  |  ------------------
  |  |  |  |  |  |   11|      1|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  |  |  |  |  ------------------
  |  |  |  |  101|      1|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (101:14): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  117|      1|#undef SetIntFlag
  118|      1|#undef SetDblFlag
  119|      1|#undef SetFlag
  120|       |
  121|      1|    return floatinfo;
  122|      1|}
PyFloat_FromDouble:
  126|     46|{
  127|     46|    PyFloatObject *op = _Py_FREELIST_POP(PyFloatObject, floats);
  ------------------
  |  |   43|     46|    _Py_CAST(TYPE*, _PyFreeList_Pop(&_Py_freelists_GET()->NAME))
  |  |  ------------------
  |  |  |  |   37|     46|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  128|     46|    if (op == NULL) {
  ------------------
  |  Branch (128:9): [True: 10, False: 36]
  ------------------
  129|     10|        op = PyObject_Malloc(sizeof(PyFloatObject));
  130|     10|        if (!op) {
  ------------------
  |  Branch (130:13): [True: 0, False: 10]
  ------------------
  131|      0|            return PyErr_NoMemory();
  132|      0|        }
  133|     10|        _PyObject_Init((PyObject*)op, &PyFloat_Type);
  134|     10|    }
  135|     46|    op->ob_fval = fval;
  136|     46|    return (PyObject *) op;
  137|     46|}
_PyFloat_ExactDealloc:
  231|     39|{
  232|     39|    assert(PyFloat_CheckExact(obj));
  ------------------
  |  Branch (232:5): [True: 39, False: 0]
  ------------------
  233|     39|    _Py_FREELIST_FREE(floats, obj, PyObject_Free);
  ------------------
  |  |   35|     39|    _PyFreeList_Free(&_Py_freelists_GET()->NAME, _PyObject_CAST(op), \
  |  |  ------------------
  |  |  |  |  171|     39|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     39|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   36|     39|                     Py_ ## NAME ## _MAXFREELIST, freefunc)
  |  |  ------------------
  |  |  |  |   18|     39|#  define Py_floats_MAXFREELIST 100
  |  |  ------------------
  ------------------
  234|     39|}
_PyFloat_InitTypes:
 1856|      1|{
 1857|       |    /* Init float info */
 1858|      1|    if (_PyStructSequence_InitBuiltin(interp, &FloatInfoType,
  ------------------
  |  Branch (1858:9): [True: 0, False: 1]
  ------------------
 1859|      1|                                      &floatinfo_desc) < 0)
 1860|      0|    {
 1861|      0|        return _PyStatus_ERR("can't init float info type");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 1862|      0|    }
 1863|       |
 1864|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 1865|      1|}
floatobject.c:float_dealloc:
  238|     39|{
  239|     39|    assert(PyFloat_Check(op));
  ------------------
  |  Branch (239:5): [True: 39, False: 0]
  ------------------
  240|     39|    if (PyFloat_CheckExact(op))
  ------------------
  |  |   17|     39|#define PyFloat_CheckExact(op) Py_IS_TYPE((op), &PyFloat_Type)
  |  |  ------------------
  |  |  |  |  215|     39|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     39|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     39|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 39, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  241|     39|        _PyFloat_ExactDealloc(op);
  242|      0|    else
  243|      0|        Py_TYPE(op)->tp_free(op);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  244|     39|}
floatobject.c:float_richcompare:
  373|      6|{
  374|      6|    double i, j;
  375|      6|    int r = 0;
  376|       |
  377|      6|    assert(PyFloat_Check(v));
  ------------------
  |  Branch (377:5): [True: 6, False: 0]
  ------------------
  378|      6|    i = PyFloat_AS_DOUBLE(v);
  ------------------
  |  |   18|      6|#define PyFloat_AS_DOUBLE(op) PyFloat_AS_DOUBLE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      6|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  379|       |
  380|       |    /* Switch on the type of w.  Set i and j to doubles to be compared,
  381|       |     * and op to the richcomp to use.
  382|       |     */
  383|      6|    if (PyFloat_Check(w))
  ------------------
  |  |   16|      6|#define PyFloat_Check(op) PyObject_TypeCheck(op, &PyFloat_Type)
  |  |  ------------------
  |  |  |  |  378|      6|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      6|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (378:40): [True: 3, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  384|      3|        j = PyFloat_AS_DOUBLE(w);
  ------------------
  |  |   18|      3|#define PyFloat_AS_DOUBLE(op) PyFloat_AS_DOUBLE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  385|       |
  386|      3|    else if (!isfinite(i)) {
  ------------------
  |  Branch (386:14): [True: 0, False: 3]
  ------------------
  387|      0|        if (PyLong_Check(w))
  ------------------
  |  |   13|      0|        PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  388|       |            /* If i is an infinity, its magnitude exceeds any
  389|       |             * finite integer, so it doesn't matter which int we
  390|       |             * compare i with.  If i is a NaN, similarly.
  391|       |             */
  392|      0|            j = 0.0;
  393|      0|        else
  394|      0|            goto Unimplemented;
  395|      0|    }
  396|       |
  397|      3|    else if (PyLong_Check(w)) {
  ------------------
  |  |   13|      3|        PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      3|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 3, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  398|      3|        int vsign = i == 0.0 ? 0 : i < 0.0 ? -1 : 1;
  ------------------
  |  Branch (398:21): [True: 0, False: 3]
  |  Branch (398:36): [True: 0, False: 3]
  ------------------
  399|      3|        int wsign;
  400|      3|        int exponent;
  401|       |
  402|      3|        (void)PyLong_GetSign(w, &wsign);
  403|      3|        if (vsign != wsign) {
  ------------------
  |  Branch (403:13): [True: 3, False: 0]
  ------------------
  404|       |            /* Magnitudes are irrelevant -- the signs alone
  405|       |             * determine the outcome.
  406|       |             */
  407|      3|            i = (double)vsign;
  408|      3|            j = (double)wsign;
  409|      3|            goto Compare;
  410|      3|        }
  411|       |        /* The signs are the same. */
  412|       |        /* Convert w to a double if it fits.  In particular, 0 fits. */
  413|      0|        int64_t nbits64 = _PyLong_NumBits(w);
  414|      0|        assert(nbits64 >= 0);
  ------------------
  |  Branch (414:9): [True: 0, False: 0]
  ------------------
  415|      0|        assert(!PyErr_Occurred());
  ------------------
  |  Branch (415:9): [True: 0, False: 0]
  ------------------
  416|      0|        if (nbits64 > DBL_MAX_EXP) {
  ------------------
  |  Branch (416:13): [True: 0, False: 0]
  ------------------
  417|       |            /* This Python integer is larger than any finite C double.
  418|       |             * Replace with little doubles
  419|       |             * that give the same outcome -- w is so large that
  420|       |             * its magnitude must exceed the magnitude of any
  421|       |             * finite float.
  422|       |             */
  423|      0|            i = (double)vsign;
  424|      0|            assert(wsign != 0);
  ------------------
  |  Branch (424:13): [True: 0, False: 0]
  ------------------
  425|      0|            j = wsign * 2.0;
  426|      0|            goto Compare;
  427|      0|        }
  428|      0|        int nbits = (int)nbits64;
  429|      0|        if (nbits <= 48) {
  ------------------
  |  Branch (429:13): [True: 0, False: 0]
  ------------------
  430|      0|            j = PyLong_AsDouble(w);
  431|       |            /* It's impossible that <= 48 bits overflowed. */
  432|      0|            assert(j != -1.0 || ! PyErr_Occurred());
  ------------------
  |  Branch (432:13): [True: 0, False: 0]
  |  Branch (432:13): [True: 0, False: 0]
  ------------------
  433|      0|            goto Compare;
  434|      0|        }
  435|      0|        assert(wsign != 0); /* else nbits was 0 */
  ------------------
  |  Branch (435:9): [True: 0, False: 0]
  ------------------
  436|      0|        assert(vsign != 0); /* if vsign were 0, then since wsign is
  ------------------
  |  Branch (436:9): [True: 0, False: 0]
  ------------------
  437|       |                             * not 0, we would have taken the
  438|       |                             * vsign != wsign branch at the start */
  439|      0|        (void) frexp(i, &exponent);
  440|       |        /* exponent is the # of bits in v before the radix point;
  441|       |         * we know that nbits (the # of bits in w) > 48 at this point
  442|       |         */
  443|      0|        if (exponent < nbits) {
  ------------------
  |  Branch (443:13): [True: 0, False: 0]
  ------------------
  444|      0|            j = i;
  445|      0|            i = 0.0;
  446|      0|            goto Compare;
  447|      0|        }
  448|      0|        if (exponent > nbits) {
  ------------------
  |  Branch (448:13): [True: 0, False: 0]
  ------------------
  449|      0|            j = 0.0;
  450|      0|            goto Compare;
  451|      0|        }
  452|       |        /* v and w have the same number of bits before the radix
  453|       |         * point.  Construct an int from the integer part of v and
  454|       |         * update op if necessary, so comparing two ints has the same outcome.
  455|       |         */
  456|      0|        {
  457|      0|            double fracpart;
  458|      0|            double intpart;
  459|      0|            PyObject *result = NULL;
  460|      0|            PyObject *vv = NULL;
  461|       |
  462|      0|            fracpart = modf(i, &intpart);
  463|      0|            if (fracpart != 0.0) {
  ------------------
  |  Branch (463:17): [True: 0, False: 0]
  ------------------
  464|      0|                switch (op) {
  ------------------
  |  Branch (464:25): [True: 0, False: 0]
  ------------------
  465|       |                    /* Non-integer float never equals to an int. */
  466|      0|                    case Py_EQ:
  ------------------
  |  |  654|      0|#define Py_EQ 2
  ------------------
  |  Branch (466:21): [True: 0, False: 0]
  ------------------
  467|      0|                        Py_RETURN_FALSE;
  ------------------
  |  |   45|      0|#  define Py_RETURN_FALSE return Py_False
  |  |  ------------------
  |  |  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  468|      0|                    case Py_NE:
  ------------------
  |  |  655|      0|#define Py_NE 3
  ------------------
  |  Branch (468:21): [True: 0, False: 0]
  ------------------
  469|      0|                        Py_RETURN_TRUE;
  ------------------
  |  |   44|      0|#  define Py_RETURN_TRUE return Py_True
  |  |  ------------------
  |  |  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  470|       |                    /* For non-integer float, v <= w <=> v < w.
  471|       |                     * If v > 0: trunc(v) < v < trunc(v) + 1
  472|       |                     *   v < w => trunc(v) < w
  473|       |                     *   trunc(v) < w => trunc(v) + 1 <= w => v < w
  474|       |                     * If v < 0: trunc(v) - 1 < v < trunc(v)
  475|       |                     *   v < w => trunc(v) - 1 < w => trunc(v) <= w
  476|       |                     *   trunc(v) <= w => v < w
  477|       |                     */
  478|      0|                    case Py_LT:
  ------------------
  |  |  652|      0|#define Py_LT 0
  ------------------
  |  Branch (478:21): [True: 0, False: 0]
  ------------------
  479|      0|                    case Py_LE:
  ------------------
  |  |  653|      0|#define Py_LE 1
  ------------------
  |  Branch (479:21): [True: 0, False: 0]
  ------------------
  480|      0|                        op = vsign > 0 ? Py_LT : Py_LE;
  ------------------
  |  |  652|      0|#define Py_LT 0
  ------------------
                                      op = vsign > 0 ? Py_LT : Py_LE;
  ------------------
  |  |  653|      0|#define Py_LE 1
  ------------------
  |  Branch (480:30): [True: 0, False: 0]
  ------------------
  481|      0|                        break;
  482|       |                    /* The same as above, but with opposite directions. */
  483|      0|                    case Py_GT:
  ------------------
  |  |  656|      0|#define Py_GT 4
  ------------------
  |  Branch (483:21): [True: 0, False: 0]
  ------------------
  484|      0|                    case Py_GE:
  ------------------
  |  |  657|      0|#define Py_GE 5
  ------------------
  |  Branch (484:21): [True: 0, False: 0]
  ------------------
  485|      0|                        op = vsign > 0 ? Py_GE : Py_GT;
  ------------------
  |  |  657|      0|#define Py_GE 5
  ------------------
                                      op = vsign > 0 ? Py_GE : Py_GT;
  ------------------
  |  |  656|      0|#define Py_GT 4
  ------------------
  |  Branch (485:30): [True: 0, False: 0]
  ------------------
  486|      0|                        break;
  487|      0|                }
  488|      0|            }
  489|       |
  490|      0|            vv = PyLong_FromDouble(intpart);
  491|      0|            if (vv == NULL)
  ------------------
  |  Branch (491:17): [True: 0, False: 0]
  ------------------
  492|      0|                goto Error;
  493|       |
  494|      0|            r = PyObject_RichCompareBool(vv, w, op);
  495|      0|            if (r < 0)
  ------------------
  |  Branch (495:17): [True: 0, False: 0]
  ------------------
  496|      0|                goto Error;
  497|      0|            result = PyBool_FromLong(r);
  498|      0|         Error:
  499|      0|            Py_XDECREF(vv);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  500|      0|            return result;
  501|      0|        }
  502|      0|    } /* else if (PyLong_Check(w)) */
  503|       |
  504|      0|    else        /* w isn't float or int */
  505|      0|        goto Unimplemented;
  506|       |
  507|      6| Compare:
  508|      6|    switch (op) {
  ------------------
  |  Branch (508:13): [True: 6, False: 0]
  ------------------
  509|      0|    case Py_EQ:
  ------------------
  |  |  654|      0|#define Py_EQ 2
  ------------------
  |  Branch (509:5): [True: 0, False: 6]
  ------------------
  510|      0|        r = i == j;
  511|      0|        break;
  512|      6|    case Py_NE:
  ------------------
  |  |  655|      6|#define Py_NE 3
  ------------------
  |  Branch (512:5): [True: 6, False: 0]
  ------------------
  513|      6|        r = i != j;
  514|      6|        break;
  515|      0|    case Py_LE:
  ------------------
  |  |  653|      0|#define Py_LE 1
  ------------------
  |  Branch (515:5): [True: 0, False: 6]
  ------------------
  516|      0|        r = i <= j;
  517|      0|        break;
  518|      0|    case Py_GE:
  ------------------
  |  |  657|      0|#define Py_GE 5
  ------------------
  |  Branch (518:5): [True: 0, False: 6]
  ------------------
  519|      0|        r = i >= j;
  520|      0|        break;
  521|      0|    case Py_LT:
  ------------------
  |  |  652|      0|#define Py_LT 0
  ------------------
  |  Branch (521:5): [True: 0, False: 6]
  ------------------
  522|      0|        r = i < j;
  523|      0|        break;
  524|      0|    case Py_GT:
  ------------------
  |  |  656|      0|#define Py_GT 4
  ------------------
  |  Branch (524:5): [True: 0, False: 6]
  ------------------
  525|      0|        r = i > j;
  526|      0|        break;
  527|      6|    }
  528|      6|    return PyBool_FromLong(r);
  529|       |
  530|      0| Unimplemented:
  531|      0|    Py_RETURN_NOTIMPLEMENTED;
  ------------------
  |  |  648|      0|#  define Py_RETURN_NOTIMPLEMENTED return Py_NotImplemented
  |  |  ------------------
  |  |  |  |  640|      0|#  define Py_NotImplemented (&_Py_NotImplementedStruct)
  |  |  ------------------
  ------------------
  532|      6|}

_PyFrameLocalsProxy_New:
  948|      1|{
  949|      1|    PyObject* args = PyTuple_Pack(1, frame);
  950|      1|    if (args == NULL) {
  ------------------
  |  Branch (950:9): [True: 0, False: 1]
  ------------------
  951|      0|        return NULL;
  952|      0|    }
  953|       |
  954|      1|    PyObject* proxy = framelocalsproxy_new(&PyFrameLocalsProxy_Type, args, NULL);
  955|      1|    Py_DECREF(args);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  956|      1|    return proxy;
  957|      1|}
_PyFrame_New_NoTrack:
 2115|     93|{
 2116|     93|    CALL_STAT_INC(frame_objects_created);
  ------------------
  |  |   76|     93|#define CALL_STAT_INC(name) ((void)0)
  ------------------
 2117|     93|    int slots = code->co_nlocalsplus + code->co_stacksize;
 2118|     93|    PyFrameObject *f = PyObject_GC_NewVar(PyFrameObject, &PyFrame_Type, slots);
  ------------------
  |  |  183|     93|    _Py_CAST(type*, _PyObject_GC_NewVar((typeobj), (n)))
  |  |  ------------------
  |  |  |  |   37|     93|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
 2119|     93|    if (f == NULL) {
  ------------------
  |  Branch (2119:9): [True: 0, False: 93]
  ------------------
 2120|      0|        return NULL;
 2121|      0|    }
 2122|     93|    f->f_back = NULL;
 2123|     93|    f->f_trace = NULL;
 2124|     93|    f->f_trace_lines = 1;
 2125|     93|    f->f_trace_opcodes = 0;
 2126|     93|    f->f_lineno = 0;
 2127|     93|    f->f_extra_locals = NULL;
 2128|     93|    f->f_locals_cache = NULL;
 2129|       |    f->f_overwritten_fast_locals = NULL;
 2130|     93|    return f;
 2131|     93|}
_PyFrame_HasHiddenLocals:
 2253|      4|{
 2254|       |    /*
 2255|       |     * This function returns if there are hidden locals introduced by PEP 709,
 2256|       |     * which are the isolated fast locals for inline comprehensions
 2257|       |     */
 2258|      4|    PyCodeObject* co = _PyFrame_GetCode(frame);
 2259|       |
 2260|      4|    for (int i = 0; i < co->co_nlocalsplus; i++) {
  ------------------
  |  Branch (2260:21): [True: 0, False: 4]
  ------------------
 2261|      0|        _PyLocals_Kind kind = _PyLocals_GetKind(co->co_localspluskinds, i);
 2262|       |
 2263|      0|        if (kind & CO_FAST_HIDDEN) {
  ------------------
  |  |  196|      0|#define CO_FAST_HIDDEN  (0x10)
  ------------------
  |  Branch (2263:13): [True: 0, False: 0]
  ------------------
 2264|      0|            if (framelocalsproxy_hasval(frame, co, i)) {
  ------------------
  |  Branch (2264:17): [True: 0, False: 0]
  ------------------
 2265|      0|                return true;
 2266|      0|            }
 2267|      0|        }
 2268|      0|    }
 2269|       |
 2270|      4|    return false;
 2271|      4|}
_PyFrame_GetLocals:
 2276|      4|{
 2277|       |    // We should try to avoid creating the FrameObject if possible.
 2278|       |    // So we check if the frame is a module or class level scope
 2279|      4|    PyCodeObject *co = _PyFrame_GetCode(frame);
 2280|       |
 2281|      4|    if (!(co->co_flags & CO_OPTIMIZED) && !_PyFrame_HasHiddenLocals(frame)) {
  ------------------
  |  |  118|      4|#define CO_OPTIMIZED    0x0001
  ------------------
  |  Branch (2281:9): [True: 4, False: 0]
  |  Branch (2281:43): [True: 4, False: 0]
  ------------------
 2282|      4|        if (frame->f_locals == NULL) {
  ------------------
  |  Branch (2282:13): [True: 0, False: 4]
  ------------------
 2283|       |            // We found cases when f_locals is NULL for non-optimized code.
 2284|       |            // We fill the f_locals with an empty dict to avoid crash until
 2285|       |            // we find the root cause.
 2286|      0|            frame->f_locals = PyDict_New();
 2287|      0|            if (frame->f_locals == NULL) {
  ------------------
  |  Branch (2287:17): [True: 0, False: 0]
  ------------------
 2288|      0|                return NULL;
 2289|      0|            }
 2290|      0|        }
 2291|      4|        return Py_NewRef(frame->f_locals);
  ------------------
  |  |  550|      4|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2292|      4|    }
 2293|       |
 2294|      0|    PyFrameObject* f = _PyFrame_GetFrameObject(frame);
 2295|      0|    if (f == NULL) {
  ------------------
  |  Branch (2295:9): [True: 0, False: 0]
  ------------------
 2296|      0|        return NULL;
 2297|      0|    }
 2298|       |
 2299|      0|    return _PyFrameLocalsProxy_New(f);
 2300|      0|}
PyFrame_GetCode:
 2385|      4|{
 2386|      4|    assert(frame != NULL);
  ------------------
  |  Branch (2386:5): [True: 4, False: 0]
  ------------------
 2387|      4|    PyObject *code;
 2388|      4|    Py_BEGIN_CRITICAL_SECTION(frame);
  ------------------
  |  |   51|      4|    {
  ------------------
 2389|      4|    assert(!_PyFrame_IsIncomplete(frame->f_frame));
  ------------------
  |  Branch (2389:5): [True: 4, False: 0]
  ------------------
 2390|      4|    code = Py_NewRef(_PyFrame_GetCode(frame->f_frame));
  ------------------
  |  |  550|      4|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2391|      4|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|      4|    }
  ------------------
 2392|      4|    return (PyCodeObject *)code;
 2393|      4|}
frameobject.c:framelocalsproxy_dealloc:
  413|      1|{
  414|      1|    PyFrameLocalsProxyObject *proxy = PyFrameLocalsProxyObject_CAST(self);
  ------------------
  |  |   29|      1|    (                                                               \
  |  |   30|      1|        assert(PyObject_TypeCheck((op), &PyFrameLocalsProxy_Type)), \
  |  |   31|      1|        (PyFrameLocalsProxyObject *)(op)                            \
  |  |   32|      1|    )
  ------------------
  |  Branch (414:39): [True: 1, False: 0]
  ------------------
  415|      0|    PyObject_GC_UnTrack(self);
  416|      1|    Py_CLEAR(proxy->frame);
  ------------------
  |  |  484|      1|    do { \
  |  |  485|      1|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      1|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      1|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      1|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      1|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 1, False: 0]
  |  |  ------------------
  |  |  488|      1|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      1|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      1|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      1|        } \
  |  |  491|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  417|      1|    Py_TYPE(self)->tp_free(self);
  ------------------
  |  |  213|      1|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  418|      1|}
frameobject.c:framelocalsproxy_new:
  422|      1|{
  423|      1|    if (PyTuple_GET_SIZE(args) != 1) {
  ------------------
  |  |   27|      1|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (423:9): [True: 0, False: 1]
  ------------------
  424|      0|        PyErr_Format(PyExc_TypeError,
  425|      0|                     "FrameLocalsProxy expected 1 argument, got %zd",
  426|      0|                     PyTuple_GET_SIZE(args));
  ------------------
  |  |   27|      0|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  427|      0|        return NULL;
  428|      0|    }
  429|      1|    PyObject *item = PyTuple_GET_ITEM(args, 0);
  ------------------
  |  |   29|      1|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|      1|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (429:22): [True: 1, False: 0]
  ------------------
  430|       |
  431|      1|    if (!PyFrame_Check(item)) {
  ------------------
  |  |    8|      1|#define PyFrame_Check(op) Py_IS_TYPE((op), &PyFrame_Type)
  |  |  ------------------
  |  |  |  |  215|      1|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (431:9): [True: 0, False: 1]
  ------------------
  432|      0|        PyErr_Format(PyExc_TypeError, "expect frame, not %T", item);
  433|      0|        return NULL;
  434|      0|    }
  435|      1|    PyFrameObject *frame = (PyFrameObject*)item;
  436|       |
  437|      1|    if (kwds != NULL && PyDict_Size(kwds) != 0) {
  ------------------
  |  Branch (437:9): [True: 0, False: 1]
  |  Branch (437:25): [True: 0, False: 0]
  ------------------
  438|      0|        PyErr_SetString(PyExc_TypeError,
  439|      0|                        "FrameLocalsProxy takes no keyword arguments");
  440|      0|        return 0;
  441|      0|    }
  442|       |
  443|      1|    PyFrameLocalsProxyObject *self = (PyFrameLocalsProxyObject *)type->tp_alloc(type, 0);
  444|      1|    if (self == NULL) {
  ------------------
  |  Branch (444:9): [True: 0, False: 1]
  ------------------
  445|      0|        return NULL;
  446|      0|    }
  447|       |
  448|      1|    ((PyFrameLocalsProxyObject*)self)->frame = (PyFrameObject*)Py_NewRef(frame);
  ------------------
  |  |  550|      1|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  449|       |
  450|      1|    return (PyObject *)self;
  451|      1|}
frameobject.c:frame_dealloc:
 1928|     93|{
 1929|       |    /* It is the responsibility of the owning generator/coroutine
 1930|       |     * to have cleared the generator pointer */
 1931|     93|    PyFrameObject *f = PyFrameObject_CAST(op);
  ------------------
  |  |   26|     93|    (assert(PyObject_TypeCheck((op), &PyFrame_Type)), (PyFrameObject *)(op))
  ------------------
  |  Branch (1931:24): [True: 93, False: 0]
  ------------------
 1932|     93|    if (_PyObject_GC_IS_TRACKED(f)) {
  ------------------
  |  |   81|     93|#define _PyObject_GC_IS_TRACKED(op) _PyObject_GC_IS_TRACKED(_Py_CAST(PyObject*, op))
  |  |  ------------------
  |  |  |  |   37|     93|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  |  Branch (81:37): [True: 14, False: 79]
  |  |  ------------------
  ------------------
 1933|     14|        _PyObject_GC_UNTRACK(f);
  ------------------
  |  |  515|     14|        _PyObject_GC_UNTRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     14|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     14|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1934|     14|    }
 1935|       |
 1936|       |    /* GH-106092: If f->f_frame was on the stack and we reached the maximum
 1937|       |     * nesting depth for deallocations, the trashcan may have delayed this
 1938|       |     * deallocation until after f->f_frame is freed. Avoid dereferencing
 1939|       |     * f->f_frame unless we know it still points to valid memory. */
 1940|     93|    _PyInterpreterFrame *frame = (_PyInterpreterFrame *)f->_f_frame_data;
 1941|       |
 1942|       |    /* Kill all local variables including specials, if we own them */
 1943|     93|    if (f->f_frame == frame && frame->owner == FRAME_OWNED_BY_FRAME_OBJECT) {
  ------------------
  |  Branch (1943:9): [True: 14, False: 79]
  |  Branch (1943:32): [True: 14, False: 0]
  ------------------
 1944|     14|        PyStackRef_CLEAR(frame->f_executable);
  ------------------
  |  |  711|     14|    do { \
  |  |  712|     14|        _PyStackRef *_tmp_op_ptr = &(REF); \
  |  |  713|     14|        _PyStackRef _tmp_old_op = (*_tmp_op_ptr); \
  |  |  714|     14|        *_tmp_op_ptr = PyStackRef_NULL; \
  |  |  715|     14|        PyStackRef_XCLOSE(_tmp_old_op); \
  |  |  716|     14|    } while (0)
  |  |  ------------------
  |  |  |  Branch (716:14): [Folded, False: 14]
  |  |  ------------------
  ------------------
 1945|     14|        PyStackRef_CLEAR(frame->f_funcobj);
  ------------------
  |  |  711|     14|    do { \
  |  |  712|     14|        _PyStackRef *_tmp_op_ptr = &(REF); \
  |  |  713|     14|        _PyStackRef _tmp_old_op = (*_tmp_op_ptr); \
  |  |  714|     14|        *_tmp_op_ptr = PyStackRef_NULL; \
  |  |  715|     14|        PyStackRef_XCLOSE(_tmp_old_op); \
  |  |  716|     14|    } while (0)
  |  |  ------------------
  |  |  |  Branch (716:14): [Folded, False: 14]
  |  |  ------------------
  ------------------
 1946|     14|        Py_CLEAR(frame->f_locals);
  ------------------
  |  |  484|     14|    do { \
  |  |  485|     14|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|     14|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|     14|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|     14|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|     14|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 14]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|     14|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 14]
  |  |  ------------------
  ------------------
 1947|     14|        _PyStackRef *locals = _PyFrame_GetLocalsArray(frame);
 1948|     14|        _PyStackRef *sp = frame->stackpointer;
 1949|     82|        while (sp > locals) {
  ------------------
  |  Branch (1949:16): [True: 68, False: 14]
  ------------------
 1950|     68|            sp--;
 1951|     68|            PyStackRef_CLEAR(*sp);
  ------------------
  |  |  711|     68|    do { \
  |  |  712|     68|        _PyStackRef *_tmp_op_ptr = &(REF); \
  |  |  713|     68|        _PyStackRef _tmp_old_op = (*_tmp_op_ptr); \
  |  |  714|     68|        *_tmp_op_ptr = PyStackRef_NULL; \
  |  |  715|     68|        PyStackRef_XCLOSE(_tmp_old_op); \
  |  |  716|     68|    } while (0)
  |  |  ------------------
  |  |  |  Branch (716:14): [Folded, False: 68]
  |  |  ------------------
  ------------------
 1952|     68|        }
 1953|     14|    }
 1954|     93|    Py_CLEAR(f->f_back);
  ------------------
  |  |  484|     93|    do { \
  |  |  485|     93|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|     93|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|     93|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|     93|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|     93|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 14, False: 79]
  |  |  ------------------
  |  |  488|     14|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|     14|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|     14|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|     14|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     14|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     14|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|     14|        } \
  |  |  491|     93|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 93]
  |  |  ------------------
  ------------------
 1955|     93|    Py_CLEAR(f->f_trace);
  ------------------
  |  |  484|     93|    do { \
  |  |  485|     93|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|     93|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|     93|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|     93|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|     93|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 93]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|     93|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 93]
  |  |  ------------------
  ------------------
 1956|     93|    Py_CLEAR(f->f_extra_locals);
  ------------------
  |  |  484|     93|    do { \
  |  |  485|     93|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|     93|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|     93|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|     93|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|     93|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 93]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|     93|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 93]
  |  |  ------------------
  ------------------
 1957|     93|    Py_CLEAR(f->f_locals_cache);
  ------------------
  |  |  484|     93|    do { \
  |  |  485|     93|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|     93|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|     93|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|     93|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|     93|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 93]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|     93|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 93]
  |  |  ------------------
  ------------------
 1958|       |    Py_CLEAR(f->f_overwritten_fast_locals);
  ------------------
  |  |  484|     93|    do { \
  |  |  485|     93|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|     93|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|     93|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|     93|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|     93|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 93]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|     93|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 93]
  |  |  ------------------
  ------------------
 1959|     93|    PyObject_GC_Del(f);
 1960|     93|}
frameobject.c:frame_locals_get_impl:
  975|      1|{
  976|      1|    assert(!_PyFrame_IsIncomplete(self->f_frame));
  ------------------
  |  Branch (976:5): [True: 1, False: 0]
  ------------------
  977|       |
  978|      1|    PyCodeObject *co = _PyFrame_GetCode(self->f_frame);
  979|       |
  980|      1|    if (!(co->co_flags & CO_OPTIMIZED) && !_PyFrame_HasHiddenLocals(self->f_frame)) {
  ------------------
  |  |  118|      1|#define CO_OPTIMIZED    0x0001
  ------------------
  |  Branch (980:9): [True: 0, False: 1]
  |  Branch (980:43): [True: 0, False: 0]
  ------------------
  981|      0|        if (self->f_frame->f_locals == NULL) {
  ------------------
  |  Branch (981:13): [True: 0, False: 0]
  ------------------
  982|       |            // We found cases when f_locals is NULL for non-optimized code.
  983|       |            // We fill the f_locals with an empty dict to avoid crash until
  984|       |            // we find the root cause.
  985|      0|            self->f_frame->f_locals = PyDict_New();
  986|      0|            if (self->f_frame->f_locals == NULL) {
  ------------------
  |  Branch (986:17): [True: 0, False: 0]
  ------------------
  987|      0|                return NULL;
  988|      0|            }
  989|      0|        }
  990|      0|        return Py_NewRef(self->f_frame->f_locals);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  991|      0|    }
  992|       |
  993|      1|    return _PyFrameLocalsProxy_New(self);
  994|      1|}

_PyFunction_FromConstructor:
  117|     16|{
  118|     16|    PyObject *module;
  119|     16|    if (PyDict_GetItemRef(constr->fc_globals, &_Py_ID(__name__), &module) < 0) {
  ------------------
  |  |  917|     16|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     16|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     16|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (119:9): [True: 0, False: 16]
  ------------------
  120|      0|        return NULL;
  121|      0|    }
  122|       |
  123|     16|    PyFunctionObject *op = PyObject_GC_New(PyFunctionObject, &PyFunction_Type);
  ------------------
  |  |  181|     16|    _Py_CAST(type*, _PyObject_GC_New(typeobj))
  |  |  ------------------
  |  |  |  |   37|     16|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  124|     16|    if (op == NULL) {
  ------------------
  |  Branch (124:9): [True: 0, False: 16]
  ------------------
  125|      0|        Py_XDECREF(module);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  126|      0|        return NULL;
  127|      0|    }
  128|     16|    _Py_INCREF_DICT(constr->fc_globals);
  ------------------
  |  |  384|     16|#  define _Py_INCREF_DICT Py_INCREF
  |  |  ------------------
  |  |  |  |  310|     16|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     16|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     16|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  129|     16|    op->func_globals = constr->fc_globals;
  130|     16|    _Py_INCREF_BUILTINS(constr->fc_builtins);
  ------------------
  |  |  386|     16|#  define _Py_INCREF_BUILTINS Py_INCREF
  |  |  ------------------
  |  |  |  |  310|     16|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     16|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     16|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  131|     16|    op->func_builtins = constr->fc_builtins;
  132|     16|    op->func_name = Py_NewRef(constr->fc_name);
  ------------------
  |  |  550|     16|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     16|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     16|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  133|     16|    op->func_qualname = Py_NewRef(constr->fc_qualname);
  ------------------
  |  |  550|     16|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     16|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     16|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  134|     16|    _Py_INCREF_CODE((PyCodeObject *)constr->fc_code);
  ------------------
  |  |  317|     16|#  define _Py_INCREF_CODE Py_INCREF
  |  |  ------------------
  |  |  |  |  310|     16|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     16|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     16|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  135|     16|    op->func_code = constr->fc_code;
  136|     16|    op->func_defaults = Py_XNewRef(constr->fc_defaults);
  ------------------
  |  |  551|     16|#  define Py_XNewRef(obj) _Py_XNewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     16|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     16|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  137|     16|    op->func_kwdefaults = Py_XNewRef(constr->fc_kwdefaults);
  ------------------
  |  |  551|     16|#  define Py_XNewRef(obj) _Py_XNewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     16|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     16|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  138|     16|    op->func_closure = Py_XNewRef(constr->fc_closure);
  ------------------
  |  |  551|     16|#  define Py_XNewRef(obj) _Py_XNewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     16|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     16|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  139|     16|    op->func_doc = Py_NewRef(Py_None);
  ------------------
  |  |  550|     16|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     16|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     16|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  140|     16|    op->func_dict = NULL;
  141|     16|    op->func_weakreflist = NULL;
  142|     16|    op->func_module = module;
  143|     16|    op->func_annotations = NULL;
  144|     16|    op->func_annotate = NULL;
  145|     16|    op->func_typeparams = NULL;
  146|     16|    op->vectorcall = _PyFunction_Vectorcall;
  147|     16|    op->func_version = FUNC_VERSION_UNSET;
  ------------------
  |  |   18|     16|#define FUNC_VERSION_UNSET 0
  ------------------
  148|       |    // NOTE: functions created via FrameConstructor do not use deferred
  149|       |    // reference counting because they are typically not part of cycles
  150|       |    // nor accessed by multiple threads.
  151|     16|    _PyObject_GC_TRACK(op);
  ------------------
  |  |  513|     16|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     16|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     16|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  152|       |    handle_func_event(PyFunction_EVENT_CREATE, op, NULL);
  153|     16|    return op;
  154|     16|}
PyFunction_NewWithQualName:
  158|    736|{
  159|    736|    assert(globals != NULL);
  ------------------
  |  Branch (159:5): [True: 736, False: 0]
  ------------------
  160|    736|    assert(PyAnyDict_Check(globals));
  ------------------
  |  Branch (160:5): [True: 736, False: 0]
  |  Branch (160:5): [True: 0, False: 0]
  ------------------
  161|    736|    _Py_INCREF_DICT(globals);
  ------------------
  |  |  384|    736|#  define _Py_INCREF_DICT Py_INCREF
  |  |  ------------------
  |  |  |  |  310|    736|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    736|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    736|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  162|       |
  163|    736|    PyCodeObject *code_obj = (PyCodeObject *)code;
  164|    736|    _Py_INCREF_CODE(code_obj);
  ------------------
  |  |  317|    736|#  define _Py_INCREF_CODE Py_INCREF
  |  |  ------------------
  |  |  |  |  310|    736|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    736|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    736|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  165|       |
  166|    736|    assert(code_obj->co_name != NULL);
  ------------------
  |  Branch (166:5): [True: 736, False: 0]
  ------------------
  167|    736|    PyObject *name = Py_NewRef(code_obj->co_name);
  ------------------
  |  |  550|    736|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    736|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    736|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  168|       |
  169|    736|    if (!qualname) {
  ------------------
  |  Branch (169:9): [True: 736, False: 0]
  ------------------
  170|    736|        qualname = code_obj->co_qualname;
  171|    736|    }
  172|    736|    assert(qualname != NULL);
  ------------------
  |  Branch (172:5): [True: 736, False: 0]
  ------------------
  173|    736|    Py_INCREF(qualname);
  ------------------
  |  |  310|    736|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    736|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    736|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  174|       |
  175|    736|    PyObject *consts = code_obj->co_consts;
  176|    736|    assert(PyTuple_Check(consts));
  ------------------
  |  Branch (176:5): [True: 736, False: 0]
  ------------------
  177|    736|    PyObject *doc;
  178|    736|    if (code_obj->co_flags & CO_HAS_DOCSTRING) {
  ------------------
  |  |  150|    736|#define CO_HAS_DOCSTRING 0x4000000
  ------------------
  |  Branch (178:9): [True: 304, False: 432]
  ------------------
  179|    304|        assert(PyTuple_Size(consts) >= 1);
  ------------------
  |  Branch (179:9): [True: 304, False: 0]
  ------------------
  180|    304|        doc = PyTuple_GetItem(consts, 0);
  181|    304|        if (!PyUnicode_Check(doc)) {
  ------------------
  |  |  103|    304|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|    304|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (181:13): [True: 0, False: 304]
  ------------------
  182|      0|            doc = Py_None;
  ------------------
  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  ------------------
  183|      0|        }
  184|    304|    }
  185|    432|    else {
  186|    432|        doc = Py_None;
  ------------------
  |  |  616|    432|#  define Py_None (&_Py_NoneStruct)
  ------------------
  187|    432|    }
  188|    736|    Py_INCREF(doc);
  ------------------
  |  |  310|    736|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    736|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    736|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  189|       |
  190|       |    // __module__: Use globals['__name__'] if it exists, or NULL.
  191|    736|    PyObject *module;
  192|    736|    PyObject *builtins = NULL;
  193|    736|    if (PyDict_GetItemRef(globals, &_Py_ID(__name__), &module) < 0) {
  ------------------
  |  |  917|    736|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|    736|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|    736|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (193:9): [True: 0, False: 736]
  ------------------
  194|      0|        goto error;
  195|      0|    }
  196|       |
  197|    736|    builtins = _PyDict_LoadBuiltinsFromGlobals(globals);
  198|    736|    if (builtins == NULL) {
  ------------------
  |  Branch (198:9): [True: 0, False: 736]
  ------------------
  199|      0|        goto error;
  200|      0|    }
  201|       |
  202|    736|    PyFunctionObject *op = PyObject_GC_New(PyFunctionObject, &PyFunction_Type);
  ------------------
  |  |  181|    736|    _Py_CAST(type*, _PyObject_GC_New(typeobj))
  |  |  ------------------
  |  |  |  |   37|    736|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  203|    736|    if (op == NULL) {
  ------------------
  |  Branch (203:9): [True: 0, False: 736]
  ------------------
  204|      0|        goto error;
  205|      0|    }
  206|       |    /* Note: No failures from this point on, since func_dealloc() does not
  207|       |       expect a partially-created object. */
  208|       |
  209|    736|    op->func_globals = globals;
  210|    736|    op->func_builtins = builtins;
  211|    736|    op->func_name = name;
  212|    736|    op->func_qualname = qualname;
  213|    736|    op->func_code = (PyObject*)code_obj;
  214|    736|    op->func_defaults = NULL;    // No default positional arguments
  215|    736|    op->func_kwdefaults = NULL;  // No default keyword arguments
  216|    736|    op->func_closure = NULL;
  217|    736|    op->func_doc = doc;
  218|    736|    op->func_dict = NULL;
  219|    736|    op->func_weakreflist = NULL;
  220|    736|    op->func_module = module;
  221|    736|    op->func_annotations = NULL;
  222|    736|    op->func_annotate = NULL;
  223|    736|    op->func_typeparams = NULL;
  224|    736|    op->vectorcall = _PyFunction_Vectorcall;
  225|    736|    op->func_version = FUNC_VERSION_UNSET;
  ------------------
  |  |   18|    736|#define FUNC_VERSION_UNSET 0
  ------------------
  226|    736|    if (((code_obj->co_flags & CO_NESTED) == 0) ||
  ------------------
  |  |  122|    736|#define CO_NESTED       0x0010
  ------------------
  |  Branch (226:9): [True: 673, False: 63]
  ------------------
  227|    676|        (code_obj->co_flags & CO_METHOD)) {
  ------------------
  |  |  153|     63|#define CO_METHOD  0x8000000
  ------------------
  |  Branch (227:9): [True: 3, False: 60]
  ------------------
  228|       |        // Use deferred reference counting for top-level functions, but not
  229|       |        // nested functions because they are more likely to capture variables,
  230|       |        // which makes prompt deallocation more important.
  231|       |        //
  232|       |        // Nested methods (functions defined in class scope) are also deferred,
  233|       |        // since they will likely be cleaned up by GC anyway.
  234|    676|        _PyObject_SetDeferredRefcount((PyObject *)op);
  235|    676|    }
  236|    736|    _PyObject_GC_TRACK(op);
  ------------------
  |  |  513|    736|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    736|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    736|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  237|    736|    handle_func_event(PyFunction_EVENT_CREATE, op, NULL);
  238|    736|    return (PyObject *)op;
  239|       |
  240|      0|error:
  241|      0|    Py_DECREF(globals);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  242|      0|    Py_DECREF(code_obj);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  243|      0|    Py_DECREF(name);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  244|      0|    Py_DECREF(qualname);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  245|      0|    Py_DECREF(doc);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  246|      0|    Py_XDECREF(module);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  247|      0|    Py_XDECREF(builtins);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  248|       |    return NULL;
  249|    736|}
_PyFunction_SetVersion:
  320|    736|{
  321|    736|    assert(func->func_version == FUNC_VERSION_UNSET);
  ------------------
  |  Branch (321:5): [True: 736, False: 0]
  ------------------
  322|    736|    assert(version >= FUNC_VERSION_FIRST_VALID);
  ------------------
  |  Branch (322:5): [True: 736, False: 0]
  ------------------
  323|       |    // This should only be called from MAKE_FUNCTION. No code is specialized
  324|       |    // based on the version, so we do not need to stop the world to set it.
  325|    736|    func->func_version = version;
  326|    736|#ifndef Py_GIL_DISABLED
  327|    736|    PyInterpreterState *interp = _PyInterpreterState_GET();
  328|    736|    struct _func_version_cache_item *slot = get_cache_item(interp, version);
  329|    736|    slot->func = func;
  330|    736|    slot->code = func->func_code;
  331|    736|#endif
  332|    736|}
_PyFunction_ClearCodeByVersion:
  368|    138|{
  369|    138|#ifndef Py_GIL_DISABLED
  370|    138|    PyInterpreterState *interp = _PyInterpreterState_GET();
  371|    138|    struct _func_version_cache_item *slot = get_cache_item(interp, version);
  372|    138|    if (slot->code) {
  ------------------
  |  Branch (372:9): [True: 106, False: 32]
  ------------------
  373|    106|        assert(PyCode_Check(slot->code));
  ------------------
  |  Branch (373:9): [True: 106, False: 0]
  ------------------
  374|    106|        PyCodeObject *code = (PyCodeObject *)slot->code;
  375|    106|        if (code->co_version == version) {
  ------------------
  |  Branch (375:13): [True: 106, False: 0]
  ------------------
  376|    106|            slot->code = NULL;
  377|       |            slot->func = NULL;
  378|    106|        }
  379|    106|    }
  380|    138|#endif
  381|    138|}
_PyFunction_GetVersionForCurrentState:
  385|     74|{
  386|     74|    return func->func_version;
  387|     74|}
PyFunction_New:
  391|    736|{
  392|       |    return PyFunction_NewWithQualName(code, globals, NULL);
  393|    736|}
PyStaticMethod_New:
 1903|      8|{
 1904|      8|    staticmethod *sm = (staticmethod *)
 1905|      8|        PyType_GenericAlloc(&PyStaticMethod_Type, 0);
 1906|      8|    if (sm == NULL) {
  ------------------
  |  Branch (1906:9): [True: 0, False: 8]
  ------------------
 1907|      0|        return NULL;
 1908|      0|    }
 1909|      8|    _PyObject_SetDeferredRefcount((PyObject *)sm);
 1910|      8|    if (sm_set_callable(sm, callable) < 0) {
  ------------------
  |  Branch (1910:9): [True: 0, False: 8]
  ------------------
 1911|      0|        Py_DECREF(sm);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1912|      0|        return NULL;
 1913|      0|    }
 1914|      8|    return (PyObject *)sm;
 1915|      8|}
_PyStaticMethod_GetFunc:
 1926|    169|{
 1927|    169|    staticmethod *sm = _PyStaticMethod_CAST(self);
  ------------------
  |  | 1676|    169|    (assert(PyObject_TypeCheck((cm), &PyStaticMethod_Type)), \
  |  | 1677|    169|     _Py_CAST(staticmethod*, cm))
  |  |  ------------------
  |  |  |  |   37|    169|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (1927:24): [True: 169, False: 0]
  ------------------
 1928|      0|    return sm->sm_callable;
 1929|    169|}
funcobject.c:handle_func_event:
   55|    929|{
   56|    929|    assert(Py_REFCNT(func) > 0);
  ------------------
  |  Branch (56:5): [True: 929, False: 0]
  ------------------
   57|    929|    PyInterpreterState *interp = _PyInterpreterState_GET();
   58|    929|    assert(interp->_initialized);
  ------------------
  |  Branch (58:5): [True: 929, False: 0]
  ------------------
   59|    929|    if (interp->active_func_watchers) {
  ------------------
  |  Branch (59:9): [True: 0, False: 929]
  ------------------
   60|      0|        notify_func_watchers(interp, event, func, new_value);
   61|      0|    }
   62|    929|    switch (event) {
   63|      0|        case PyFunction_EVENT_MODIFY_CODE:
  ------------------
  |  Branch (63:9): [True: 0, False: 929]
  ------------------
   64|      0|        case PyFunction_EVENT_MODIFY_DEFAULTS:
  ------------------
  |  Branch (64:9): [True: 0, False: 929]
  ------------------
   65|      0|        case PyFunction_EVENT_MODIFY_KWDEFAULTS:
  ------------------
  |  Branch (65:9): [True: 0, False: 929]
  ------------------
   66|      9|        case PyFunction_EVENT_MODIFY_QUALNAME:
  ------------------
  |  Branch (66:9): [True: 9, False: 920]
  ------------------
   67|       |#if _Py_TIER2
   68|       |            // Note: we only invalidate JIT code if a function version changes.
   69|       |            // Not when the function is deallocated.
   70|       |            // Function deallocation occurs frequently (think: lambdas),
   71|       |            // so we want to minimize dependency invalidation there.
   72|       |            _Py_Executors_InvalidateDependency(interp, func, 1);
   73|       |#endif
   74|      9|            RARE_EVENT_INTERP_INC(interp, func_modification);
  ------------------
  |  |   98|      9|    do { \
  |  |   99|      9|        /* saturating add */ \
  |  |  100|      9|        uint8_t val = FT_ATOMIC_LOAD_UINT8_RELAXED(interp->rare_events.name); \
  |  |  ------------------
  |  |  |  |  157|      9|#define FT_ATOMIC_LOAD_UINT8_RELAXED(value) value
  |  |  ------------------
  |  |  101|      9|        if (val < UINT8_MAX) { \
  |  |  ------------------
  |  |  |  Branch (101:13): [True: 9, False: 0]
  |  |  ------------------
  |  |  102|      9|            FT_ATOMIC_STORE_UINT8(interp->rare_events.name, val + 1); \
  |  |  ------------------
  |  |  |  |  155|      9|#define FT_ATOMIC_STORE_UINT8(value, new_value) value = new_value
  |  |  ------------------
  |  |  103|      9|        } \
  |  |  104|      9|        RARE_EVENT_STAT_INC(name); \
  |  |  ------------------
  |  |  |  |   89|      9|#define RARE_EVENT_STAT_INC(name) ((void)0)
  |  |  ------------------
  |  |  105|      9|    } while (0); \
  |  |  ------------------
  |  |  |  Branch (105:14): [Folded, False: 9]
  |  |  ------------------
  ------------------
   75|      9|            break;
   76|    920|        default:
  ------------------
  |  Branch (76:9): [True: 920, False: 9]
  ------------------
   77|    920|            break;
   78|    929|    }
   79|    929|}
funcobject.c:get_cache_item:
  312|  1.02k|{
  313|  1.02k|    return interp->func_state.func_version_cache +
  314|  1.02k|           (version % FUNC_VERSION_CACHE_SIZE);
  ------------------
  |  |  497|  1.02k|#define FUNC_VERSION_CACHE_SIZE (1<<12)  /* Must be a power of 2 */
  ------------------
  315|  1.02k|}
funcobject.c:func_clear_version:
  336|    168|{
  337|    168|    if (func->func_version < FUNC_VERSION_FIRST_VALID) {
  ------------------
  |  |   20|    168|#define FUNC_VERSION_FIRST_VALID 2
  ------------------
  |  Branch (337:9): [True: 16, False: 152]
  ------------------
  338|       |        // Version was never set or has already been cleared.
  339|     16|        return;
  340|     16|    }
  341|    152|#ifndef Py_GIL_DISABLED
  342|    152|    struct _func_version_cache_item *slot =
  343|    152|        get_cache_item(interp, func->func_version);
  344|    152|    if (slot->func == func) {
  ------------------
  |  Branch (344:9): [True: 143, False: 9]
  ------------------
  345|    143|        slot->func = NULL;
  346|       |        // Leave slot->code alone, there may be use for it.
  347|    143|    }
  348|    152|#endif
  349|    152|    func->func_version = FUNC_VERSION_CLEARED;
  ------------------
  |  |   19|    152|#define FUNC_VERSION_CLEARED 1
  ------------------
  350|    152|}
funcobject.c:func_dealloc:
 1129|    168|{
 1130|    168|    PyFunctionObject *op = _PyFunction_CAST(self);
  ------------------
  |  |   86|    168|    (assert(PyFunction_Check(func)), _Py_CAST(PyFunctionObject*, func))
  |  |  ------------------
  |  |  |  |   37|    168|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (1130:28): [True: 168, False: 0]
  ------------------
 1131|      0|    _PyObject_ResurrectStart(self);
 1132|    168|    handle_func_event(PyFunction_EVENT_DESTROY, op, NULL);
 1133|    168|    if (_PyObject_ResurrectEnd(self)) {
  ------------------
  |  Branch (1133:9): [True: 0, False: 168]
  ------------------
 1134|      0|        return;
 1135|      0|    }
 1136|    168|    _PyObject_GC_UNTRACK(op);
  ------------------
  |  |  515|    168|        _PyObject_GC_UNTRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    168|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    168|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1137|    168|    FT_CLEAR_WEAKREFS(self, op->func_weakreflist);
  ------------------
  |  |   47|    168|    do {                                            \
  |  |   48|    168|        assert(Py_REFCNT(obj) == 0);                \
  |  |   49|    168|        if (weakref_list != NULL) {                 \
  |  |  ------------------
  |  |  |  Branch (49:13): [True: 0, False: 168]
  |  |  ------------------
  |  |   50|      0|            PyObject_ClearWeakRefs(obj);            \
  |  |   51|      0|        }                                           \
  |  |   52|    168|    } while (0)
  |  |  ------------------
  |  |  |  Branch (52:14): [Folded, False: 168]
  |  |  ------------------
  ------------------
  |  Branch (1137:5): [True: 168, False: 0]
  ------------------
 1138|    168|    (void)func_clear((PyObject*)op);
 1139|       |    // These aren't cleared by func_clear().
 1140|    168|    _Py_DECREF_CODE((PyCodeObject *)op->func_code);
  ------------------
  |  |  318|    168|#  define _Py_DECREF_CODE Py_DECREF
  |  |  ------------------
  |  |  |  |  430|    168|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    168|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    168|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1141|    168|    Py_DECREF(op->func_name);
  ------------------
  |  |  430|    168|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    168|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    168|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1142|    168|    Py_DECREF(op->func_qualname);
  ------------------
  |  |  430|    168|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    168|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    168|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1143|    168|    PyObject_GC_Del(op);
 1144|    168|}
funcobject.c:func_traverse:
 1156|    456|{
 1157|    456|    PyFunctionObject *f = _PyFunction_CAST(self);
  ------------------
  |  |   86|    456|    (assert(PyFunction_Check(func)), _Py_CAST(PyFunctionObject*, func))
  |  |  ------------------
  |  |  |  |   37|    456|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (1157:27): [True: 456, False: 0]
  ------------------
 1158|    456|    Py_VISIT(f->func_code);
  ------------------
  |  |  194|    456|    do {                                                                \
  |  |  195|    456|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 456, False: 0]
  |  |  ------------------
  |  |  196|    456|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|    456|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    456|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|    456|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 456]
  |  |  ------------------
  |  |  198|    456|                return vret;                                            \
  |  |  199|    456|        }                                                               \
  |  |  200|    456|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 456]
  |  |  ------------------
  ------------------
 1159|    456|    Py_VISIT(f->func_globals);
  ------------------
  |  |  194|    456|    do {                                                                \
  |  |  195|    456|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 456, False: 0]
  |  |  ------------------
  |  |  196|    456|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|    456|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    456|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|    456|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 456]
  |  |  ------------------
  |  |  198|    456|                return vret;                                            \
  |  |  199|    456|        }                                                               \
  |  |  200|    456|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 456]
  |  |  ------------------
  ------------------
 1160|    456|    Py_VISIT(f->func_builtins);
  ------------------
  |  |  194|    456|    do {                                                                \
  |  |  195|    456|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 456, False: 0]
  |  |  ------------------
  |  |  196|    456|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|    456|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    456|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|    456|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 456]
  |  |  ------------------
  |  |  198|    456|                return vret;                                            \
  |  |  199|    456|        }                                                               \
  |  |  200|    456|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 456]
  |  |  ------------------
  ------------------
 1161|    456|    Py_VISIT(f->func_module);
  ------------------
  |  |  194|    456|    do {                                                                \
  |  |  195|    456|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 454, False: 2]
  |  |  ------------------
  |  |  196|    454|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|    454|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    454|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|    454|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 454]
  |  |  ------------------
  |  |  198|    454|                return vret;                                            \
  |  |  199|    454|        }                                                               \
  |  |  200|    456|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 456]
  |  |  ------------------
  ------------------
 1162|    456|    Py_VISIT(f->func_defaults);
  ------------------
  |  |  194|    456|    do {                                                                \
  |  |  195|    456|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 56, False: 400]
  |  |  ------------------
  |  |  196|     56|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|     56|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     56|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|     56|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 56]
  |  |  ------------------
  |  |  198|     56|                return vret;                                            \
  |  |  199|     56|        }                                                               \
  |  |  200|    456|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 456]
  |  |  ------------------
  ------------------
 1163|    456|    Py_VISIT(f->func_kwdefaults);
  ------------------
  |  |  194|    456|    do {                                                                \
  |  |  195|    456|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 20, False: 436]
  |  |  ------------------
  |  |  196|     20|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|     20|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     20|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|     20|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 20]
  |  |  ------------------
  |  |  198|     20|                return vret;                                            \
  |  |  199|     20|        }                                                               \
  |  |  200|    456|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 456]
  |  |  ------------------
  ------------------
 1164|    456|    Py_VISIT(f->func_doc);
  ------------------
  |  |  194|    456|    do {                                                                \
  |  |  195|    456|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 456, False: 0]
  |  |  ------------------
  |  |  196|    456|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|    456|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    456|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|    456|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 456]
  |  |  ------------------
  |  |  198|    456|                return vret;                                            \
  |  |  199|    456|        }                                                               \
  |  |  200|    456|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 456]
  |  |  ------------------
  ------------------
 1165|    456|    Py_VISIT(f->func_name);
  ------------------
  |  |  194|    456|    do {                                                                \
  |  |  195|    456|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 456, False: 0]
  |  |  ------------------
  |  |  196|    456|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|    456|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    456|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|    456|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 456]
  |  |  ------------------
  |  |  198|    456|                return vret;                                            \
  |  |  199|    456|        }                                                               \
  |  |  200|    456|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 456]
  |  |  ------------------
  ------------------
 1166|    456|    Py_VISIT(f->func_dict);
  ------------------
  |  |  194|    456|    do {                                                                \
  |  |  195|    456|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 36, False: 420]
  |  |  ------------------
  |  |  196|     36|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|     36|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     36|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|     36|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 36]
  |  |  ------------------
  |  |  198|     36|                return vret;                                            \
  |  |  199|     36|        }                                                               \
  |  |  200|    456|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 456]
  |  |  ------------------
  ------------------
 1167|    456|    Py_VISIT(f->func_closure);
  ------------------
  |  |  194|    456|    do {                                                                \
  |  |  195|    456|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 26, False: 430]
  |  |  ------------------
  |  |  196|     26|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|     26|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     26|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|     26|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 26]
  |  |  ------------------
  |  |  198|     26|                return vret;                                            \
  |  |  199|     26|        }                                                               \
  |  |  200|    456|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 456]
  |  |  ------------------
  ------------------
 1168|    456|    Py_VISIT(f->func_annotations);
  ------------------
  |  |  194|    456|    do {                                                                \
  |  |  195|    456|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 0, False: 456]
  |  |  ------------------
  |  |  196|      0|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      0|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 0]
  |  |  ------------------
  |  |  198|      0|                return vret;                                            \
  |  |  199|      0|        }                                                               \
  |  |  200|    456|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 456]
  |  |  ------------------
  ------------------
 1169|    456|    Py_VISIT(f->func_annotate);
  ------------------
  |  |  194|    456|    do {                                                                \
  |  |  195|    456|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 0, False: 456]
  |  |  ------------------
  |  |  196|      0|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      0|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 0]
  |  |  ------------------
  |  |  198|      0|                return vret;                                            \
  |  |  199|      0|        }                                                               \
  |  |  200|    456|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 456]
  |  |  ------------------
  ------------------
 1170|    456|    Py_VISIT(f->func_typeparams);
  ------------------
  |  |  194|    456|    do {                                                                \
  |  |  195|    456|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 0, False: 456]
  |  |  ------------------
  |  |  196|      0|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      0|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 0]
  |  |  ------------------
  |  |  198|      0|                return vret;                                            \
  |  |  199|      0|        }                                                               \
  |  |  200|    456|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 456]
  |  |  ------------------
  ------------------
 1171|    456|    Py_VISIT(f->func_qualname);
  ------------------
  |  |  194|    456|    do {                                                                \
  |  |  195|    456|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 456, False: 0]
  |  |  ------------------
  |  |  196|    456|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|    456|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    456|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|    456|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 456]
  |  |  ------------------
  |  |  198|    456|                return vret;                                            \
  |  |  199|    456|        }                                                               \
  |  |  200|    456|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 456]
  |  |  ------------------
  ------------------
 1172|    456|    return 0;
 1173|    456|}
funcobject.c:func_clear:
 1095|    168|{
 1096|    168|    PyFunctionObject *op = _PyFunction_CAST(self);
  ------------------
  |  |   86|    168|    (assert(PyFunction_Check(func)), _Py_CAST(PyFunctionObject*, func))
  |  |  ------------------
  |  |  |  |   37|    168|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (1096:28): [True: 168, False: 0]
  ------------------
 1097|      0|    func_clear_version(_PyInterpreterState_GET(), op);
 1098|    168|    PyObject *globals = op->func_globals;
 1099|    168|    op->func_globals = NULL;
 1100|    168|    if (globals != NULL) {
  ------------------
  |  Branch (1100:9): [True: 168, False: 0]
  ------------------
 1101|    168|        _Py_DECREF_DICT(globals);
  ------------------
  |  |  385|    168|#  define _Py_DECREF_DICT Py_DECREF
  |  |  ------------------
  |  |  |  |  430|    168|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    168|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    168|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1102|    168|    }
 1103|    168|    PyObject *builtins = op->func_builtins;
 1104|    168|    op->func_builtins = NULL;
 1105|    168|    if (builtins != NULL) {
  ------------------
  |  Branch (1105:9): [True: 168, False: 0]
  ------------------
 1106|    168|        _Py_DECREF_BUILTINS(builtins);
  ------------------
  |  |  387|    168|#  define _Py_DECREF_BUILTINS Py_DECREF
  |  |  ------------------
  |  |  |  |  430|    168|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    168|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    168|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1107|    168|    }
 1108|    168|    Py_CLEAR(op->func_module);
  ------------------
  |  |  484|    168|    do { \
  |  |  485|    168|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|    168|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|    168|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|    168|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|    168|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 162, False: 6]
  |  |  ------------------
  |  |  488|    162|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|    162|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|    162|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|    162|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    162|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    162|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|    162|        } \
  |  |  491|    168|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 168]
  |  |  ------------------
  ------------------
 1109|    168|    Py_CLEAR(op->func_defaults);
  ------------------
  |  |  484|    168|    do { \
  |  |  485|    168|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|    168|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|    168|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|    168|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|    168|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 24, False: 144]
  |  |  ------------------
  |  |  488|     24|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|     24|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|     24|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|     24|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     24|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     24|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|     24|        } \
  |  |  491|    168|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 168]
  |  |  ------------------
  ------------------
 1110|    168|    Py_CLEAR(op->func_kwdefaults);
  ------------------
  |  |  484|    168|    do { \
  |  |  485|    168|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|    168|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|    168|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|    168|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|    168|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 1, False: 167]
  |  |  ------------------
  |  |  488|      1|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      1|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      1|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      1|        } \
  |  |  491|    168|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 168]
  |  |  ------------------
  ------------------
 1111|    168|    Py_CLEAR(op->func_doc);
  ------------------
  |  |  484|    168|    do { \
  |  |  485|    168|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|    168|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|    168|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|    168|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|    168|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 168, False: 0]
  |  |  ------------------
  |  |  488|    168|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|    168|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|    168|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|    168|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    168|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    168|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|    168|        } \
  |  |  491|    168|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 168]
  |  |  ------------------
  ------------------
 1112|    168|    Py_CLEAR(op->func_dict);
  ------------------
  |  |  484|    168|    do { \
  |  |  485|    168|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|    168|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|    168|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|    168|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|    168|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 168]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|    168|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 168]
  |  |  ------------------
  ------------------
 1113|    168|    Py_CLEAR(op->func_closure);
  ------------------
  |  |  484|    168|    do { \
  |  |  485|    168|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|    168|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|    168|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|    168|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|    168|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 15, False: 153]
  |  |  ------------------
  |  |  488|     15|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|     15|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|     15|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|     15|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     15|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     15|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|     15|        } \
  |  |  491|    168|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 168]
  |  |  ------------------
  ------------------
 1114|    168|    Py_CLEAR(op->func_annotations);
  ------------------
  |  |  484|    168|    do { \
  |  |  485|    168|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|    168|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|    168|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|    168|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|    168|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 168]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|    168|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 168]
  |  |  ------------------
  ------------------
 1115|    168|    Py_CLEAR(op->func_annotate);
  ------------------
  |  |  484|    168|    do { \
  |  |  485|    168|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|    168|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|    168|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|    168|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|    168|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 168]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|    168|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 168]
  |  |  ------------------
  ------------------
 1116|    168|    Py_CLEAR(op->func_typeparams);
  ------------------
  |  |  484|    168|    do { \
  |  |  485|    168|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|    168|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|    168|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|    168|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|    168|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 168]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|    168|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 168]
  |  |  ------------------
  ------------------
 1117|       |    // Don't Py_CLEAR(op->func_code), since code is always required
 1118|       |    // to be non-NULL. Similarly, name and qualname shouldn't be NULL.
 1119|       |    // However, name and qualname could be str subclasses, so they
 1120|       |    // could have reference cycles. The solution is to replace them
 1121|       |    // with a genuinely immutable string.
 1122|    168|    Py_SETREF(op->func_name, &_Py_STR(empty));
  ------------------
  |  |  352|    168|    do { \
  |  |  353|    168|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|    168|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  354|    168|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|    168|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  355|    168|        *_tmp_dst_ptr = (src); \
  |  |  356|    168|        Py_DECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  430|    168|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    168|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    168|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  357|    168|    } while (0)
  |  |  ------------------
  |  |  |  Branch (357:14): [Folded, False: 168]
  |  |  ------------------
  ------------------
 1123|    168|    Py_SETREF(op->func_qualname, &_Py_STR(empty));
  ------------------
  |  |  352|    168|    do { \
  |  |  353|    168|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|    168|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  354|    168|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|    168|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  355|    168|        *_tmp_dst_ptr = (src); \
  |  |  356|    168|        Py_DECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  430|    168|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    168|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    168|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  357|    168|    } while (0)
  |  |  ------------------
  |  |  |  Branch (357:14): [Folded, False: 168]
  |  |  ------------------
  ------------------
 1124|    168|    return 0;
 1125|    168|}
funcobject.c:func_get_code:
  635|      2|{
  636|      2|    PyFunctionObject *op = _PyFunction_CAST(self);
  ------------------
  |  |   86|      2|    (assert(PyFunction_Check(func)), _Py_CAST(PyFunctionObject*, func))
  |  |  ------------------
  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (636:28): [True: 2, False: 0]
  ------------------
  637|      2|    if (PySys_Audit("object.__getattr__", "Os", op, "__code__") < 0) {
  ------------------
  |  Branch (637:9): [True: 0, False: 2]
  ------------------
  638|      0|        return NULL;
  639|      0|    }
  640|       |
  641|      2|    return Py_NewRef(op->func_code);
  ------------------
  |  |  550|      2|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  642|      2|}
funcobject.c:func_get_name:
  695|     68|{
  696|     68|    PyFunctionObject *op = _PyFunction_CAST(self);
  ------------------
  |  |   86|     68|    (assert(PyFunction_Check(func)), _Py_CAST(PyFunctionObject*, func))
  |  |  ------------------
  |  |  |  |   37|     68|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (696:28): [True: 68, False: 0]
  ------------------
  697|     68|    return Py_NewRef(op->func_name);
  ------------------
  |  |  550|     68|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     68|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     68|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  698|     68|}
funcobject.c:func_set_name:
  702|      9|{
  703|      9|    PyFunctionObject *op = _PyFunction_CAST(self);
  ------------------
  |  |   86|      9|    (assert(PyFunction_Check(func)), _Py_CAST(PyFunctionObject*, func))
  |  |  ------------------
  |  |  |  |   37|      9|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (703:28): [True: 9, False: 0]
  ------------------
  704|       |    /* Not legal to del f.func_name or to set it to anything
  705|       |     * other than a string object. */
  706|      9|    if (value == NULL || !PyUnicode_Check(value)) {
  ------------------
  |  |  103|      9|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      9|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (706:9): [True: 0, False: 9]
  |  Branch (706:26): [True: 0, False: 9]
  ------------------
  707|      0|        PyErr_SetString(PyExc_TypeError,
  708|      0|                        "__name__ must be set to a string object");
  709|      0|        return -1;
  710|      0|    }
  711|      9|    Py_XSETREF(op->func_name, Py_NewRef(value));
  ------------------
  |  |  374|      9|    do { \
  |  |  375|      9|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      9|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  376|      9|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      9|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  377|      9|        *_tmp_dst_ptr = (src); \
  |  |  378|      9|        Py_XDECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  524|      9|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      9|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      9|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  379|      9|    } while (0)
  |  |  ------------------
  |  |  |  Branch (379:14): [Folded, False: 9]
  |  |  ------------------
  ------------------
  712|      9|    return 0;
  713|      9|}
funcobject.c:func_get_qualname:
  717|     68|{
  718|     68|    PyFunctionObject *op = _PyFunction_CAST(self);
  ------------------
  |  |   86|     68|    (assert(PyFunction_Check(func)), _Py_CAST(PyFunctionObject*, func))
  |  |  ------------------
  |  |  |  |   37|     68|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (718:28): [True: 68, False: 0]
  ------------------
  719|     68|    return Py_NewRef(op->func_qualname);
  ------------------
  |  |  550|     68|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     68|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     68|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  720|     68|}
funcobject.c:func_set_qualname:
  724|      9|{
  725|      9|    PyFunctionObject *op = _PyFunction_CAST(self);
  ------------------
  |  |   86|      9|    (assert(PyFunction_Check(func)), _Py_CAST(PyFunctionObject*, func))
  |  |  ------------------
  |  |  |  |   37|      9|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (725:28): [True: 9, False: 0]
  ------------------
  726|       |    /* Not legal to del f.__qualname__ or to set it to anything
  727|       |     * other than a string object. */
  728|      9|    if (value == NULL || !PyUnicode_Check(value)) {
  ------------------
  |  |  103|      9|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      9|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (728:9): [True: 0, False: 9]
  |  Branch (728:26): [True: 0, False: 9]
  ------------------
  729|      0|        PyErr_SetString(PyExc_TypeError,
  730|      0|                        "__qualname__ must be set to a string object");
  731|      0|        return -1;
  732|      0|    }
  733|      9|    handle_func_event(PyFunction_EVENT_MODIFY_QUALNAME, (PyFunctionObject *) op, value);
  734|      9|    Py_XSETREF(op->func_qualname, Py_NewRef(value));
  ------------------
  |  |  374|      9|    do { \
  |  |  375|      9|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      9|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  376|      9|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      9|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  377|      9|        *_tmp_dst_ptr = (src); \
  |  |  378|      9|        Py_XDECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  524|      9|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      9|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      9|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  379|      9|    } while (0)
  |  |  ------------------
  |  |  |  Branch (379:14): [Folded, False: 9]
  |  |  ------------------
  ------------------
  735|      9|    return 0;
  736|      9|}
funcobject.c:func_descr_get:
 1178|    114|{
 1179|    114|    if (obj == Py_None || obj == NULL) {
  ------------------
  |  |  616|    228|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (1179:9): [True: 0, False: 114]
  |  Branch (1179:27): [True: 46, False: 68]
  ------------------
 1180|     46|        return Py_NewRef(func);
  ------------------
  |  |  550|     46|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     46|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     46|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1181|     46|    }
 1182|     68|    return PyMethod_New(func, obj);
 1183|    114|}
funcobject.c:cm_traverse:
 1426|     34|{
 1427|     34|    classmethod *cm = _PyClassMethod_CAST(self);
  ------------------
  |  | 1411|     34|    (assert(PyObject_TypeCheck((cm), &PyClassMethod_Type)), \
  |  | 1412|     34|     _Py_CAST(classmethod*, cm))
  |  |  ------------------
  |  |  |  |   37|     34|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (1427:23): [True: 34, False: 0]
  ------------------
 1428|     34|    Py_VISIT(cm->cm_callable);
  ------------------
  |  |  194|     34|    do {                                                                \
  |  |  195|     34|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 34, False: 0]
  |  |  ------------------
  |  |  196|     34|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|     34|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     34|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|     34|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 34]
  |  |  ------------------
  |  |  198|     34|                return vret;                                            \
  |  |  199|     34|        }                                                               \
  |  |  200|     34|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 34]
  |  |  ------------------
  ------------------
 1429|     34|    Py_VISIT(cm->cm_dict);
  ------------------
  |  |  194|     34|    do {                                                                \
  |  |  195|     34|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 34, False: 0]
  |  |  ------------------
  |  |  196|     34|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|     34|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     34|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|     34|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 34]
  |  |  ------------------
  |  |  198|     34|                return vret;                                            \
  |  |  199|     34|        }                                                               \
  |  |  200|     34|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 34]
  |  |  ------------------
  ------------------
 1430|     34|    return 0;
 1431|     34|}
funcobject.c:cm_get___isabstractmethod__:
 1511|     26|{
 1512|     26|    classmethod *cm = _PyClassMethod_CAST(self);
  ------------------
  |  | 1411|     26|    (assert(PyObject_TypeCheck((cm), &PyClassMethod_Type)), \
  |  | 1412|     26|     _Py_CAST(classmethod*, cm))
  |  |  ------------------
  |  |  |  |   37|     26|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (1512:23): [True: 26, False: 0]
  ------------------
 1513|      0|    int res = _PyObject_IsAbstract(cm->cm_callable);
 1514|     26|    if (res == -1) {
  ------------------
  |  Branch (1514:9): [True: 0, False: 26]
  ------------------
 1515|      0|        return NULL;
 1516|      0|    }
 1517|     26|    else if (res) {
  ------------------
  |  Branch (1517:14): [True: 0, False: 26]
  ------------------
 1518|      0|        Py_RETURN_TRUE;
  ------------------
  |  |   44|      0|#  define Py_RETURN_TRUE return Py_True
  |  |  ------------------
  |  |  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1519|      0|    }
 1520|     26|    Py_RETURN_FALSE;
  ------------------
  |  |   45|     26|#  define Py_RETURN_FALSE return Py_False
  |  |  ------------------
  |  |  |  |   25|     26|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     26|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     26|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1521|     26|}
funcobject.c:cm_descr_get:
 1445|    128|{
 1446|    128|    classmethod *cm = (classmethod *)self;
 1447|    128|    if (type == NULL)
  ------------------
  |  Branch (1447:9): [True: 0, False: 128]
  ------------------
 1448|      0|        type = (PyObject *)(Py_TYPE(obj));
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1449|    128|    return PyMethod_New(cm->cm_callable, type);
 1450|    128|}
funcobject.c:cm_init:
 1490|     43|{
 1491|     43|    if (!_PyArg_NoKeywords("classmethod", kwds)) {
  ------------------
  |  |   25|     43|    ((kwargs) == NULL || _PyArg_NoKeywords((funcname), (kwargs)))
  |  |  ------------------
  |  |  |  Branch (25:6): [True: 43, False: 0]
  |  |  |  Branch (25:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1492|      0|        return -1;
 1493|      0|    }
 1494|     43|    PyObject *callable;  // borrowed ref
 1495|     43|    if (!PyArg_UnpackTuple(args, "classmethod", 1, 1, &callable)) {
  ------------------
  |  Branch (1495:9): [True: 0, False: 43]
  ------------------
 1496|      0|        return -1;
 1497|      0|    }
 1498|       |
 1499|     43|    classmethod *cm = (classmethod *)self;
 1500|     43|    return cm_set_callable(cm, callable);
 1501|     43|}
funcobject.c:cm_new:
 1467|     43|{
 1468|     43|    if (!_PyArg_NoKeywords("classmethod", kwds)) {
  ------------------
  |  |   25|     43|    ((kwargs) == NULL || _PyArg_NoKeywords((funcname), (kwargs)))
  |  |  ------------------
  |  |  |  Branch (25:6): [True: 43, False: 0]
  |  |  |  Branch (25:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1469|      0|        return NULL;
 1470|      0|    }
 1471|     43|    PyObject *callable;  // borrowed ref
 1472|     43|    if (!PyArg_UnpackTuple(args, "classmethod", 1, 1, &callable)) {
  ------------------
  |  Branch (1472:9): [True: 0, False: 43]
  ------------------
 1473|      0|        return NULL;
 1474|      0|    }
 1475|       |
 1476|     43|    classmethod *cm = (classmethod *)PyType_GenericAlloc(type, 0);
 1477|     43|    if (cm == NULL) {
  ------------------
  |  Branch (1477:9): [True: 0, False: 43]
  ------------------
 1478|      0|        return NULL;
 1479|      0|    }
 1480|     43|    _PyObject_SetDeferredRefcount((PyObject *)cm);
 1481|     43|    if (cm_set_callable(cm, callable) < 0) {
  ------------------
  |  Branch (1481:9): [True: 0, False: 43]
  ------------------
 1482|      0|        Py_DECREF(cm);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1483|      0|        return NULL;
 1484|      0|    }
 1485|     43|    return (PyObject *)cm;
 1486|     43|}
funcobject.c:cm_set_callable:
 1454|     86|{
 1455|     86|    assert(callable != NULL);
  ------------------
  |  Branch (1455:5): [True: 86, False: 0]
  ------------------
 1456|     86|    if (cm->cm_callable == callable) {
  ------------------
  |  Branch (1456:9): [True: 43, False: 43]
  ------------------
 1457|       |        // cm_init() sets the same callable than cm_new()
 1458|     43|        return 0;
 1459|     43|    }
 1460|       |
 1461|     43|    Py_XSETREF(cm->cm_callable, Py_NewRef(callable));
  ------------------
  |  |  374|     43|    do { \
  |  |  375|     43|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|     43|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  376|     43|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|     43|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  377|     43|        *_tmp_dst_ptr = (src); \
  |  |  378|     43|        Py_XDECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  524|     43|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     43|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     43|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  379|     43|    } while (0)
  |  |  ------------------
  |  |  |  Branch (379:14): [Folded, False: 43]
  |  |  ------------------
  ------------------
 1462|     43|    return functools_wraps((PyObject *)cm, cm->cm_callable);
 1463|     86|}
funcobject.c:functools_wraps:
 1302|     60|{
 1303|     60|#define COPY_ATTR(ATTR) \
 1304|     60|    do { \
 1305|     60|        if (functools_copy_attr(wrapper, wrapped, &_Py_ID(ATTR)) < 0) { \
 1306|     60|            return -1; \
 1307|     60|        } \
 1308|     60|    } while (0) \
 1309|     60|
 1310|     60|    COPY_ATTR(__module__);
  ------------------
  |  | 1304|     60|    do { \
  |  | 1305|     60|        if (functools_copy_attr(wrapper, wrapped, &_Py_ID(ATTR)) < 0) { \
  |  |  ------------------
  |  |  |  |  917|     60|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|     60|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|     60|    _PyRuntime.static_objects.NAME
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1305:13): [True: 0, False: 60]
  |  |  ------------------
  |  | 1306|      0|            return -1; \
  |  | 1307|      0|        } \
  |  | 1308|     60|    } while (0) \
  |  |  ------------------
  |  |  |  Branch (1308:14): [Folded, False: 60]
  |  |  ------------------
  ------------------
 1311|     60|    COPY_ATTR(__name__);
  ------------------
  |  | 1304|     60|    do { \
  |  | 1305|     60|        if (functools_copy_attr(wrapper, wrapped, &_Py_ID(ATTR)) < 0) { \
  |  |  ------------------
  |  |  |  |  917|     60|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|     60|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|     60|    _PyRuntime.static_objects.NAME
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1305:13): [True: 0, False: 60]
  |  |  ------------------
  |  | 1306|      0|            return -1; \
  |  | 1307|      0|        } \
  |  | 1308|     60|    } while (0) \
  |  |  ------------------
  |  |  |  Branch (1308:14): [Folded, False: 60]
  |  |  ------------------
  ------------------
 1312|     60|    COPY_ATTR(__qualname__);
  ------------------
  |  | 1304|     60|    do { \
  |  | 1305|     60|        if (functools_copy_attr(wrapper, wrapped, &_Py_ID(ATTR)) < 0) { \
  |  |  ------------------
  |  |  |  |  917|     60|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|     60|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|     60|    _PyRuntime.static_objects.NAME
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1305:13): [True: 0, False: 60]
  |  |  ------------------
  |  | 1306|      0|            return -1; \
  |  | 1307|      0|        } \
  |  | 1308|     60|    } while (0) \
  |  |  ------------------
  |  |  |  Branch (1308:14): [Folded, False: 60]
  |  |  ------------------
  ------------------
 1313|     60|    COPY_ATTR(__doc__);
  ------------------
  |  | 1304|     60|    do { \
  |  | 1305|     60|        if (functools_copy_attr(wrapper, wrapped, &_Py_ID(ATTR)) < 0) { \
  |  |  ------------------
  |  |  |  |  917|     60|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|     60|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|     60|    _PyRuntime.static_objects.NAME
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1305:13): [True: 0, False: 60]
  |  |  ------------------
  |  | 1306|      0|            return -1; \
  |  | 1307|      0|        } \
  |  | 1308|     60|    } while (0) \
  |  |  ------------------
  |  |  |  Branch (1308:14): [Folded, False: 60]
  |  |  ------------------
  ------------------
 1314|     60|    return 0;
 1315|       |
 1316|     60|#undef COPY_ATTR
 1317|     60|}
funcobject.c:functools_copy_attr:
 1289|    240|{
 1290|    240|    PyObject *value;
 1291|    240|    int res = PyObject_GetOptionalAttr(wrapped, name, &value);
 1292|    240|    if (value != NULL) {
  ------------------
  |  Branch (1292:9): [True: 240, False: 0]
  ------------------
 1293|    240|        res = PyObject_SetAttr(wrapper, name, value);
 1294|    240|        Py_DECREF(value);
  ------------------
  |  |  430|    240|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    240|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    240|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1295|    240|    }
 1296|    240|    return res;
 1297|    240|}
funcobject.c:sm_traverse:
 1691|     26|{
 1692|     26|    staticmethod *sm = _PyStaticMethod_CAST(self);
  ------------------
  |  | 1676|     26|    (assert(PyObject_TypeCheck((cm), &PyStaticMethod_Type)), \
  |  | 1677|     26|     _Py_CAST(staticmethod*, cm))
  |  |  ------------------
  |  |  |  |   37|     26|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (1692:24): [True: 26, False: 0]
  ------------------
 1693|     26|    Py_VISIT(sm->sm_callable);
  ------------------
  |  |  194|     26|    do {                                                                \
  |  |  195|     26|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 26, False: 0]
  |  |  ------------------
  |  |  196|     26|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|     26|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     26|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|     26|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 26]
  |  |  ------------------
  |  |  198|     26|                return vret;                                            \
  |  |  199|     26|        }                                                               \
  |  |  200|     26|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 26]
  |  |  ------------------
  ------------------
 1694|     26|    Py_VISIT(sm->sm_dict);
  ------------------
  |  |  194|     26|    do {                                                                \
  |  |  195|     26|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 26, False: 0]
  |  |  ------------------
  |  |  196|     26|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|     26|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     26|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|     26|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 26]
  |  |  ------------------
  |  |  198|     26|                return vret;                                            \
  |  |  199|     26|        }                                                               \
  |  |  200|     26|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 26]
  |  |  ------------------
  ------------------
 1695|     26|    return 0;
 1696|     26|}
funcobject.c:sm_descr_get:
 1709|     31|{
 1710|     31|    staticmethod *sm = (staticmethod *)self;
 1711|     31|    return Py_NewRef(sm->sm_callable);
  ------------------
  |  |  550|     31|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     31|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     31|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1712|     31|}
funcobject.c:sm_init:
 1752|      9|{
 1753|      9|    if (!_PyArg_NoKeywords("staticmethod", kwds)) {
  ------------------
  |  |   25|      9|    ((kwargs) == NULL || _PyArg_NoKeywords((funcname), (kwargs)))
  |  |  ------------------
  |  |  |  Branch (25:6): [True: 9, False: 0]
  |  |  |  Branch (25:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1754|      0|        return -1;
 1755|      0|    }
 1756|      9|    PyObject *callable;  // borrowed ref
 1757|      9|    if (!PyArg_UnpackTuple(args, "staticmethod", 1, 1, &callable)) {
  ------------------
  |  Branch (1757:9): [True: 0, False: 9]
  ------------------
 1758|      0|        return -1;
 1759|      0|    }
 1760|       |
 1761|      9|    staticmethod *sm = (staticmethod *)self;
 1762|      9|    return sm_set_callable(sm, callable);
 1763|      9|}
funcobject.c:sm_new:
 1729|      9|{
 1730|      9|    if (!_PyArg_NoKeywords("staticmethod", kwds)) {
  ------------------
  |  |   25|      9|    ((kwargs) == NULL || _PyArg_NoKeywords((funcname), (kwargs)))
  |  |  ------------------
  |  |  |  Branch (25:6): [True: 9, False: 0]
  |  |  |  Branch (25:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1731|      0|        return NULL;
 1732|      0|    }
 1733|      9|    PyObject *callable;  // borrowed ref
 1734|      9|    if (!PyArg_UnpackTuple(args, "staticmethod", 1, 1, &callable)) {
  ------------------
  |  Branch (1734:9): [True: 0, False: 9]
  ------------------
 1735|      0|        return NULL;
 1736|      0|    }
 1737|       |
 1738|      9|    staticmethod *sm = (staticmethod *)PyType_GenericAlloc(type, 0);
 1739|      9|    if (sm == NULL) {
  ------------------
  |  Branch (1739:9): [True: 0, False: 9]
  ------------------
 1740|      0|        return NULL;
 1741|      0|    }
 1742|      9|    _PyObject_SetDeferredRefcount((PyObject *)sm);
 1743|      9|    if (sm_set_callable(sm, callable) < 0) {
  ------------------
  |  Branch (1743:9): [True: 0, False: 9]
  ------------------
 1744|      0|        Py_DECREF(sm);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1745|      0|        return NULL;
 1746|      0|    }
 1747|      9|    return (PyObject *)sm;
 1748|      9|}
funcobject.c:sm_set_callable:
 1716|     26|{
 1717|     26|    assert(callable != NULL);
  ------------------
  |  Branch (1717:5): [True: 26, False: 0]
  ------------------
 1718|     26|    if (sm->sm_callable == callable) {
  ------------------
  |  Branch (1718:9): [True: 9, False: 17]
  ------------------
 1719|       |        // sm_init() sets the same callable than sm_new()
 1720|      9|        return 0;
 1721|      9|    }
 1722|       |
 1723|     17|    Py_XSETREF(sm->sm_callable, Py_NewRef(callable));
  ------------------
  |  |  374|     17|    do { \
  |  |  375|     17|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|     17|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  376|     17|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|     17|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  377|     17|        *_tmp_dst_ptr = (src); \
  |  |  378|     17|        Py_XDECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  524|     17|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     17|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     17|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  379|     17|    } while (0)
  |  |  ------------------
  |  |  |  Branch (379:14): [Folded, False: 17]
  |  |  ------------------
  ------------------
 1724|     17|    return functools_wraps((PyObject *)sm, sm->sm_callable);
 1725|     26|}

Py_GenericAlias:
 1045|      2|{
 1046|      2|    gaobject *alias = (gaobject*) PyType_GenericAlloc(
 1047|      2|            (PyTypeObject *)&Py_GenericAliasType, 0);
 1048|      2|    if (alias == NULL) {
  ------------------
  |  Branch (1048:9): [True: 0, False: 2]
  ------------------
 1049|      0|        return NULL;
 1050|      0|    }
 1051|      2|    if (!setup_ga(alias, origin, args)) {
  ------------------
  |  Branch (1051:9): [True: 0, False: 2]
  ------------------
 1052|      0|        Py_DECREF(alias);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1053|      0|        return NULL;
 1054|      0|    }
 1055|      2|    return (PyObject *)alias;
 1056|      2|}
genericaliasobject.c:ga_dealloc:
   33|      2|{
   34|      2|    gaobject *alias = (gaobject *)self;
   35|       |
   36|      2|    _PyObject_GC_UNTRACK(self);
  ------------------
  |  |  515|      2|        _PyObject_GC_UNTRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   37|      2|    FT_CLEAR_WEAKREFS(self, alias->weakreflist);
  ------------------
  |  |   47|      2|    do {                                            \
  |  |   48|      2|        assert(Py_REFCNT(obj) == 0);                \
  |  |   49|      2|        if (weakref_list != NULL) {                 \
  |  |  ------------------
  |  |  |  Branch (49:13): [True: 0, False: 2]
  |  |  ------------------
  |  |   50|      0|            PyObject_ClearWeakRefs(obj);            \
  |  |   51|      0|        }                                           \
  |  |   52|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (52:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (37:5): [True: 2, False: 0]
  ------------------
   38|      2|    Py_XDECREF(alias->origin);
  ------------------
  |  |  524|      2|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   39|      2|    Py_XDECREF(alias->args);
  ------------------
  |  |  524|      2|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   40|      2|    Py_XDECREF(alias->parameters);
  ------------------
  |  |  524|      2|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   41|      2|    Py_TYPE(self)->tp_free(self);
  ------------------
  |  |  213|      2|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   42|      2|}
genericaliasobject.c:setup_ga:
  872|      2|setup_ga(gaobject *alias, PyObject *origin, PyObject *args) {
  873|      2|    if (!PyTuple_Check(args)) {
  ------------------
  |  |   27|      2|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TUPLE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      2|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (873:9): [True: 2, False: 0]
  ------------------
  874|      2|        args = PyTuple_Pack(1, args);
  875|      2|        if (args == NULL) {
  ------------------
  |  Branch (875:13): [True: 0, False: 2]
  ------------------
  876|      0|            return 0;
  877|      0|        }
  878|      2|    }
  879|      0|    else {
  880|      0|        Py_INCREF(args);
  ------------------
  |  |  310|      0|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  881|      0|    }
  882|       |
  883|      2|    alias->origin = Py_NewRef(origin);
  ------------------
  |  |  550|      2|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  884|      2|    alias->args = args;
  885|      2|    alias->parameters = NULL;
  886|      2|    alias->weakreflist = NULL;
  887|       |
  888|      2|    if (PyVectorcall_Function(origin) != NULL) {
  ------------------
  |  Branch (888:9): [True: 2, False: 0]
  ------------------
  889|      2|        alias->vectorcall = ga_vectorcall;
  890|      2|    }
  891|      0|    else {
  892|      0|        alias->vectorcall = NULL;
  893|      0|    }
  894|       |
  895|      2|    return 1;
  896|      2|}

_Py_MakeCoro:
 1115|     21|{
 1116|     21|    int coro_flags = ((PyCodeObject *)func->func_code)->co_flags &
 1117|     21|        (CO_GENERATOR | CO_COROUTINE | CO_ASYNC_GENERATOR);
  ------------------
  |  |  123|     21|#define CO_GENERATOR    0x0020
  ------------------
                      (CO_GENERATOR | CO_COROUTINE | CO_ASYNC_GENERATOR);
  ------------------
  |  |  127|     21|#define CO_COROUTINE            0x0080
  ------------------
                      (CO_GENERATOR | CO_COROUTINE | CO_ASYNC_GENERATOR);
  ------------------
  |  |  129|     21|#define CO_ASYNC_GENERATOR      0x0200
  ------------------
 1118|     21|    assert(coro_flags);
  ------------------
  |  Branch (1118:5): [True: 21, False: 0]
  ------------------
 1119|     21|    if (coro_flags == CO_GENERATOR) {
  ------------------
  |  |  123|     21|#define CO_GENERATOR    0x0020
  ------------------
  |  Branch (1119:9): [True: 19, False: 2]
  ------------------
 1120|     19|        return make_gen(&PyGen_Type, func);
 1121|     19|    }
 1122|      2|    if (coro_flags == CO_ASYNC_GENERATOR) {
  ------------------
  |  |  129|      2|#define CO_ASYNC_GENERATOR      0x0200
  ------------------
  |  Branch (1122:9): [True: 1, False: 1]
  ------------------
 1123|      1|        PyAsyncGenObject *ag;
 1124|      1|        ag = (PyAsyncGenObject *)make_gen(&PyAsyncGen_Type, func);
 1125|      1|        if (ag == NULL) {
  ------------------
  |  Branch (1125:13): [True: 0, False: 1]
  ------------------
 1126|      0|            return NULL;
 1127|      0|        }
 1128|      1|        ag->ag_origin_or_finalizer = NULL;
 1129|      1|        ag->ag_closed = 0;
 1130|      1|        ag->ag_hooks_inited = 0;
 1131|      1|        ag->ag_running_async = 0;
 1132|      1|        return (PyObject*)ag;
 1133|      1|    }
 1134|       |
 1135|      2|    assert (coro_flags == CO_COROUTINE);
  ------------------
  |  Branch (1135:5): [True: 1, False: 0]
  ------------------
 1136|      1|    PyObject *coro = make_gen(&PyCoro_Type, func);
 1137|      1|    if (!coro) {
  ------------------
  |  Branch (1137:9): [True: 0, False: 1]
  ------------------
 1138|      0|        return NULL;
 1139|      0|    }
 1140|      1|    PyThreadState *tstate = _PyThreadState_GET();
 1141|      1|    int origin_depth = tstate->coroutine_origin_tracking_depth;
 1142|       |
 1143|      1|    if (origin_depth == 0) {
  ------------------
  |  Branch (1143:9): [True: 1, False: 0]
  ------------------
 1144|      1|        ((PyCoroObject *)coro)->cr_origin_or_finalizer = NULL;
 1145|      1|    } else {
 1146|      0|        _PyInterpreterFrame *frame = tstate->current_frame;
 1147|      0|        assert(frame);
  ------------------
  |  Branch (1147:9): [True: 0, False: 0]
  ------------------
 1148|      0|        assert(_PyFrame_IsIncomplete(frame));
  ------------------
  |  Branch (1148:9): [True: 0, False: 0]
  ------------------
 1149|      0|        frame = _PyFrame_GetFirstComplete(frame->previous);
 1150|      0|        PyObject *cr_origin = _PyCoro_ComputeOrigin(origin_depth, frame);
 1151|      0|        ((PyCoroObject *)coro)->cr_origin_or_finalizer = cr_origin;
 1152|      0|        if (!cr_origin) {
  ------------------
  |  Branch (1152:13): [True: 0, False: 0]
  ------------------
 1153|      0|            Py_DECREF(coro);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1154|      0|            return NULL;
 1155|      0|        }
 1156|      0|    }
 1157|      1|    return coro;
 1158|      1|}
genobject.c:_PyGen_GetCode:
   69|      6|_PyGen_GetCode(PyGenObject *gen) {
   70|      6|    return _PyFrame_GetCode(&gen->gi_iframe);
   71|      6|}
genobject.c:gen_clear_frame:
  168|      4|{
  169|      4|    assert(FT_ATOMIC_LOAD_INT8_RELAXED(gen->gi_frame_state) == FRAME_CLEARED);
  ------------------
  |  Branch (169:5): [True: 4, False: 0]
  ------------------
  170|      4|    _PyInterpreterFrame *frame = &gen->gi_iframe;
  171|       |    frame->previous = NULL;
  172|      4|    _PyFrame_ClearExceptCode(frame);
  173|      4|    _PyErr_ClearExcState(&gen->gi_exc_state);
  174|      4|}
genobject.c:gen_dealloc:
  206|     21|{
  207|     21|    PyGenObject *gen = _PyGen_CAST(self);
  ------------------
  |  |   33|     21|    _Py_CAST(PyGenObject*, (op))
  |  |  ------------------
  |  |  |  |   37|     21|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  208|       |
  209|     21|    _PyObject_GC_UNTRACK(gen);
  ------------------
  |  |  515|     21|        _PyObject_GC_UNTRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     21|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     21|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  210|       |
  211|     21|    FT_CLEAR_WEAKREFS(self, gen->gi_weakreflist);
  ------------------
  |  |   47|     21|    do {                                            \
  |  |   48|     21|        assert(Py_REFCNT(obj) == 0);                \
  |  |   49|     21|        if (weakref_list != NULL) {                 \
  |  |  ------------------
  |  |  |  Branch (49:13): [True: 0, False: 21]
  |  |  ------------------
  |  |   50|      0|            PyObject_ClearWeakRefs(obj);            \
  |  |   51|      0|        }                                           \
  |  |   52|     21|    } while (0)
  |  |  ------------------
  |  |  |  Branch (52:14): [Folded, False: 21]
  |  |  ------------------
  ------------------
  |  Branch (211:5): [True: 21, False: 0]
  ------------------
  212|       |
  213|     21|    _PyObject_GC_TRACK(self);
  ------------------
  |  |  513|     21|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     21|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     21|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  214|       |
  215|     21|    if (PyObject_CallFinalizerFromDealloc(self))
  ------------------
  |  Branch (215:9): [True: 0, False: 21]
  ------------------
  216|      0|        return;                     /* resurrected.  :( */
  217|       |
  218|     21|    _PyObject_GC_UNTRACK(self);
  ------------------
  |  |  515|     21|        _PyObject_GC_UNTRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     21|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     21|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  219|     21|    if (PyAsyncGen_CheckExact(gen)) {
  ------------------
  |  |   46|     21|#define PyAsyncGen_CheckExact(op) Py_IS_TYPE((op), &PyAsyncGen_Type)
  |  |  ------------------
  |  |  |  |  215|     21|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     21|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     21|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 1, False: 20]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  220|       |        /* We have to handle this case for asynchronous generators
  221|       |           right here, because this code has to be between UNTRACK
  222|       |           and GC_Del. */
  223|      1|        Py_CLEAR(((PyAsyncGenObject*)gen)->ag_origin_or_finalizer);
  ------------------
  |  |  484|      1|    do { \
  |  |  485|      1|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      1|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      1|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      1|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      1|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  224|      1|    }
  225|     21|    if (PyCoro_CheckExact(gen)) {
  ------------------
  |  |   31|     21|#define PyCoro_CheckExact(op) Py_IS_TYPE((op), &PyCoro_Type)
  |  |  ------------------
  |  |  |  |  215|     21|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     21|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     21|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 1, False: 20]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  226|      1|        Py_CLEAR(((PyCoroObject *)gen)->cr_origin_or_finalizer);
  ------------------
  |  |  484|      1|    do { \
  |  |  485|      1|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      1|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      1|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      1|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      1|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  227|      1|    }
  228|     21|    if (gen->gi_frame_state != FRAME_CLEARED) {
  ------------------
  |  Branch (228:9): [True: 0, False: 21]
  ------------------
  229|      0|        gen->gi_frame_state = FRAME_CLEARED;
  230|      0|        gen_clear_frame(gen);
  231|      0|    }
  232|     21|    assert(gen->gi_exc_state.exc_value == NULL);
  ------------------
  |  Branch (232:5): [True: 21, False: 0]
  ------------------
  233|     21|    PyStackRef_CLEAR(gen->gi_iframe.f_executable);
  ------------------
  |  |  711|     21|    do { \
  |  |  712|     21|        _PyStackRef *_tmp_op_ptr = &(REF); \
  |  |  713|     21|        _PyStackRef _tmp_old_op = (*_tmp_op_ptr); \
  |  |  714|     21|        *_tmp_op_ptr = PyStackRef_NULL; \
  |  |  715|     21|        PyStackRef_XCLOSE(_tmp_old_op); \
  |  |  716|     21|    } while (0)
  |  |  ------------------
  |  |  |  Branch (716:14): [Folded, False: 21]
  |  |  ------------------
  ------------------
  234|     21|    Py_CLEAR(gen->gi_name);
  ------------------
  |  |  484|     21|    do { \
  |  |  485|     21|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|     21|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|     21|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|     21|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|     21|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 21, False: 0]
  |  |  ------------------
  |  |  488|     21|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|     21|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|     21|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|     21|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     21|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     21|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|     21|        } \
  |  |  491|     21|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 21]
  |  |  ------------------
  ------------------
  235|     21|    Py_CLEAR(gen->gi_qualname);
  ------------------
  |  |  484|     21|    do { \
  |  |  485|     21|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|     21|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|     21|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|     21|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|     21|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 21, False: 0]
  |  |  ------------------
  |  |  488|     21|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|     21|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|     21|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|     21|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     21|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     21|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|     21|        } \
  |  |  491|     21|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 21]
  |  |  ------------------
  ------------------
  236|       |
  237|     21|    PyObject_GC_Del(gen);
  238|     21|}
genobject.c:gen_send_ex:
  330|     34|{
  331|     34|    *presult = NULL;
  332|     34|    int8_t frame_state = FT_ATOMIC_LOAD_INT8_RELAXED(gen->gi_frame_state);
  ------------------
  |  |  156|     34|#define FT_ATOMIC_LOAD_INT8_RELAXED(value) value
  ------------------
  333|     34|    do {
  334|     34|        if (frame_state == FRAME_CREATED && arg && arg != Py_None) {
  ------------------
  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (334:13): [True: 15, False: 19]
  |  Branch (334:45): [True: 0, False: 15]
  |  Branch (334:52): [True: 0, False: 0]
  ------------------
  335|      0|            const char *msg = "can't send non-None value to a "
  336|      0|                                "just-started generator";
  337|      0|            if (PyCoro_CheckExact(gen)) {
  ------------------
  |  |   31|      0|#define PyCoro_CheckExact(op) Py_IS_TYPE((op), &PyCoro_Type)
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  338|      0|                msg = NON_INIT_CORO_MSG;
  339|      0|            }
  340|      0|            else if (PyAsyncGen_CheckExact(gen)) {
  ------------------
  |  |   46|      0|#define PyAsyncGen_CheckExact(op) Py_IS_TYPE((op), &PyAsyncGen_Type)
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  341|      0|                msg = "can't send non-None value to a "
  342|      0|                        "just-started async generator";
  343|      0|            }
  344|      0|            PyErr_SetString(PyExc_TypeError, msg);
  345|      0|            return PYGEN_ERROR;
  346|      0|        }
  347|     34|        if (frame_state == FRAME_EXECUTING) {
  ------------------
  |  Branch (347:13): [True: 0, False: 34]
  ------------------
  348|      0|            gen_raise_already_executing_error(gen);
  349|      0|            return PYGEN_ERROR;
  350|      0|        }
  351|     34|        if (FRAME_STATE_FINISHED(frame_state)) {
  ------------------
  |  |   57|     34|#define FRAME_STATE_FINISHED(S) ((S) == FRAME_CLEARED)
  |  |  ------------------
  |  |  |  Branch (57:33): [True: 0, False: 34]
  |  |  ------------------
  ------------------
  352|      0|            if (PyCoro_CheckExact(gen)) {
  ------------------
  |  |   31|      0|#define PyCoro_CheckExact(op) Py_IS_TYPE((op), &PyCoro_Type)
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  353|       |                /* `gen` is an exhausted coroutine: raise an error,
  354|       |                except when called from gen_close(), which should
  355|       |                always be a silent method. */
  356|      0|                PyErr_SetString(
  357|      0|                    PyExc_RuntimeError,
  358|      0|                    "cannot reuse already awaited coroutine");
  359|      0|            }
  360|      0|            else if (arg) {
  ------------------
  |  Branch (360:22): [True: 0, False: 0]
  ------------------
  361|       |                /* `gen` is an exhausted generator:
  362|       |                only return value if called from send(). */
  363|      0|                *presult = Py_None;
  ------------------
  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  ------------------
  364|      0|                return PYGEN_RETURN;
  365|      0|            }
  366|      0|            return PYGEN_ERROR;
  367|      0|        }
  368|       |
  369|     34|        assert((frame_state == FRAME_CREATED) ||
  ------------------
  |  Branch (369:9): [True: 19, False: 0]
  |  Branch (369:9): [True: 19, False: 0]
  |  Branch (369:9): [True: 15, False: 19]
  ------------------
  370|     34|               FRAME_STATE_SUSPENDED(frame_state));
  371|     34|    } while (!_Py_GEN_TRY_SET_FRAME_STATE(gen, frame_state, FRAME_EXECUTING));
  ------------------
  |  |   57|     34|    ((gen)->gi_frame_state = (state), true)
  ------------------
  |  Branch (371:14): [True: 0, False: 34]
  ------------------
  372|       |
  373|     34|    return gen_send_ex2(gen, arg, presult, 0);
  374|     34|}
genobject.c:gen_send_ex2:
  260|     34|{
  261|     34|    assert(FT_ATOMIC_LOAD_INT8_RELAXED(gen->gi_frame_state) == FRAME_EXECUTING);
  ------------------
  |  Branch (261:5): [True: 34, False: 0]
  ------------------
  262|       |
  263|     34|    PyThreadState *tstate = _PyThreadState_GET();
  264|     34|    _PyInterpreterFrame *frame = &gen->gi_iframe;
  265|       |
  266|       |    /* Push arg onto the frame's value stack */
  267|     34|    PyObject *arg_obj = arg ? arg : Py_None;
  ------------------
  |  |  616|     34|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (267:25): [True: 0, False: 34]
  ------------------
  268|     34|    _PyFrame_StackPush(frame, PyStackRef_FromPyObjectNew(arg_obj));
  ------------------
  |  |  599|     34|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     34|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     34|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  269|       |
  270|     34|    _PyErr_StackItem *prev_exc_info = tstate->exc_info;
  271|     34|    gen->gi_exc_state.previous_item = prev_exc_info;
  272|     34|    tstate->exc_info = &gen->gi_exc_state;
  273|       |
  274|     34|    if (exc) {
  ------------------
  |  Branch (274:9): [True: 0, False: 34]
  ------------------
  275|      0|        assert(_PyErr_Occurred(tstate));
  ------------------
  |  Branch (275:9): [True: 0, False: 0]
  ------------------
  276|      0|        _PyErr_ChainStackItem();
  277|      0|    }
  278|       |
  279|     34|    EVAL_CALL_STAT_INC(EVAL_CALL_GENERATOR);
  ------------------
  |  |   79|     34|#define EVAL_CALL_STAT_INC(name) ((void)0)
  ------------------
  280|     34|    PyObject *result = _PyEval_EvalFrame(tstate, frame, exc);
  281|     34|    assert(tstate->exc_info == prev_exc_info);
  ------------------
  |  Branch (281:5): [True: 34, False: 0]
  ------------------
  282|     34|#ifndef Py_GIL_DISABLED
  283|     34|    assert(gen->gi_exc_state.previous_item == NULL);
  ------------------
  |  Branch (283:5): [True: 34, False: 0]
  ------------------
  284|     34|    assert(frame->previous == NULL);
  ------------------
  |  Branch (284:5): [True: 34, False: 0]
  ------------------
  285|     34|    assert(gen->gi_frame_state != FRAME_EXECUTING);
  ------------------
  |  Branch (285:5): [True: 34, False: 0]
  ------------------
  286|     34|#endif
  287|       |
  288|       |    // The generator_return_kind field is used to distinguish between a
  289|       |    // yield and a return from within _PyEval_EvalFrame(). Earlier versions
  290|       |    // of CPython (prior to 3.15) used gi_frame_state for this purpose, but
  291|       |    // that requires the GIL for thread-safety.
  292|     34|    int return_kind = ((_PyThreadStateImpl *)tstate)->generator_return_kind;
  293|       |
  294|     34|    if (return_kind == GENERATOR_YIELD) {
  ------------------
  |  Branch (294:9): [True: 21, False: 13]
  ------------------
  295|     21|        assert(result != NULL && !_PyErr_Occurred(tstate));
  ------------------
  |  Branch (295:9): [True: 21, False: 0]
  |  Branch (295:9): [True: 21, False: 0]
  ------------------
  296|     21|#ifndef Py_GIL_DISABLED
  297|     21|        assert(FRAME_STATE_SUSPENDED(gen->gi_frame_state));
  ------------------
  |  Branch (297:9): [True: 21, False: 0]
  |  Branch (297:9): [True: 21, False: 0]
  ------------------
  298|     21|#endif
  299|     21|        *presult = result;
  300|     21|        return PYGEN_NEXT;
  301|     21|    }
  302|       |
  303|     34|    assert(return_kind == GENERATOR_RETURN);
  ------------------
  |  Branch (303:5): [True: 13, False: 0]
  ------------------
  304|     13|    assert(gen->gi_exc_state.exc_value == NULL);
  ------------------
  |  Branch (304:5): [True: 13, False: 0]
  ------------------
  305|     13|    assert(FT_ATOMIC_LOAD_INT8_RELAXED(gen->gi_frame_state) == FRAME_CLEARED);
  ------------------
  |  Branch (305:5): [True: 13, False: 0]
  ------------------
  306|       |
  307|       |    /* If the generator just returned (as opposed to yielding), signal
  308|       |     * that the generator is exhausted. */
  309|     13|    if (result) {
  ------------------
  |  Branch (309:9): [True: 13, False: 0]
  ------------------
  310|     13|        assert(result == Py_None || !PyAsyncGen_CheckExact(gen));
  ------------------
  |  Branch (310:9): [True: 13, False: 0]
  |  Branch (310:9): [True: 0, False: 0]
  ------------------
  311|     13|        if (result == Py_None && !PyAsyncGen_CheckExact(gen) && !arg) {
  ------------------
  |  |  616|     26|#  define Py_None (&_Py_NoneStruct)
  ------------------
                      if (result == Py_None && !PyAsyncGen_CheckExact(gen) && !arg) {
  ------------------
  |  |   46|     13|#define PyAsyncGen_CheckExact(op) Py_IS_TYPE((op), &PyAsyncGen_Type)
  |  |  ------------------
  |  |  |  |  215|     26|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     13|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     13|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (311:13): [True: 13, False: 0]
  |  Branch (311:34): [True: 13, False: 0]
  |  Branch (311:65): [True: 13, False: 0]
  ------------------
  312|       |            /* Return NULL if called by gen_iternext() */
  313|     13|            Py_CLEAR(result);
  ------------------
  |  |  484|     13|    do { \
  |  |  485|     13|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|     13|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|     13|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|     13|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|     13|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 13, False: 0]
  |  |  ------------------
  |  |  488|     13|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|     13|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|     13|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|     13|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     13|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     13|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|     13|        } \
  |  |  491|     13|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 13]
  |  |  ------------------
  ------------------
  314|     13|        }
  315|     13|    }
  316|      0|    else {
  317|      0|        assert(!PyErr_ExceptionMatches(PyExc_StopIteration));
  ------------------
  |  Branch (317:9): [True: 0, False: 0]
  ------------------
  318|      0|        assert(!PyAsyncGen_CheckExact(gen) ||
  ------------------
  |  Branch (318:9): [True: 0, False: 0]
  |  Branch (318:9): [True: 0, False: 0]
  ------------------
  319|      0|            !PyErr_ExceptionMatches(PyExc_StopAsyncIteration));
  320|      0|    }
  321|       |
  322|     13|    *presult = result;
  323|     13|    return result ? PYGEN_RETURN : PYGEN_ERROR;
  ------------------
  |  Branch (323:12): [True: 0, False: 13]
  ------------------
  324|     13|}
genobject.c:gen_iternext:
  759|     34|{
  760|     34|    assert(PyGen_CheckExact(self) || PyCoro_CheckExact(self));
  ------------------
  |  Branch (760:5): [True: 34, False: 0]
  |  Branch (760:5): [True: 0, False: 0]
  ------------------
  761|     34|    PyGenObject *gen = _PyGen_CAST(self);
  ------------------
  |  |   33|     34|    _Py_CAST(PyGenObject*, (op))
  |  |  ------------------
  |  |  |  |   37|     34|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  762|       |
  763|     34|    PyObject *result;
  764|     34|    if (gen_send_ex(gen, NULL, &result) == PYGEN_RETURN) {
  ------------------
  |  Branch (764:9): [True: 0, False: 34]
  ------------------
  765|      0|        if (result != Py_None) {
  ------------------
  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (765:13): [True: 0, False: 0]
  ------------------
  766|      0|            _PyGen_SetStopIterationValue(result);
  767|      0|        }
  768|       |        Py_CLEAR(result);
  ------------------
  |  |  484|      0|    do { \
  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  769|      0|    }
  770|     34|    return result;
  771|     34|}
genobject.c:gen_close:
  464|      4|{
  465|      4|    PyGenObject *gen = _PyGen_CAST(self);
  ------------------
  |  |   33|      4|    _Py_CAST(PyGenObject*, (op))
  |  |  ------------------
  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  466|       |
  467|      4|    int8_t frame_state = FT_ATOMIC_LOAD_INT8_RELAXED(gen->gi_frame_state);
  ------------------
  |  |  156|      4|#define FT_ATOMIC_LOAD_INT8_RELAXED(value) value
  ------------------
  468|      4|    do {
  469|      4|        if (frame_state == FRAME_CREATED) {
  ------------------
  |  Branch (469:13): [True: 3, False: 1]
  ------------------
  470|       |            // && (1) to avoid -Wunreachable-code warning on Clang
  471|      3|            if (!_Py_GEN_TRY_SET_FRAME_STATE(gen, frame_state, FRAME_CLEARED) && (1)) {
  ------------------
  |  |   57|      6|    ((gen)->gi_frame_state = (state), true)
  ------------------
  |  Branch (471:17): [True: 0, False: 3]
  |  Branch (471:82): [True: 0, Folded]
  ------------------
  472|      0|                continue;
  473|      0|            }
  474|      3|            gen_clear_frame(gen);
  475|      3|            Py_RETURN_NONE;
  ------------------
  |  |  628|      3|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|      3|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
  476|      3|        }
  477|       |
  478|      1|        if (FRAME_STATE_FINISHED(frame_state)) {
  ------------------
  |  |   57|      1|#define FRAME_STATE_FINISHED(S) ((S) == FRAME_CLEARED)
  |  |  ------------------
  |  |  |  Branch (57:33): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  479|      0|            Py_RETURN_NONE;
  ------------------
  |  |  628|      0|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
  480|      0|        }
  481|       |
  482|      1|        if (frame_state == FRAME_EXECUTING) {
  ------------------
  |  Branch (482:13): [True: 0, False: 1]
  ------------------
  483|      0|            gen_raise_already_executing_error(gen);
  484|      0|            return NULL;
  485|      0|        }
  486|       |
  487|      1|        assert(FRAME_STATE_SUSPENDED(frame_state));
  ------------------
  |  Branch (487:9): [True: 1, False: 0]
  |  Branch (487:9): [True: 1, False: 0]
  ------------------
  488|      1|    } while (!_Py_GEN_TRY_SET_FRAME_STATE(gen, frame_state, FRAME_EXECUTING));
  ------------------
  |  |   57|      1|    ((gen)->gi_frame_state = (state), true)
  ------------------
  |  Branch (488:14): [True: 0, False: 1]
  ------------------
  489|       |
  490|      1|    int err = 0;
  491|      1|    _PyInterpreterFrame *frame = &gen->gi_iframe;
  492|      1|    if (frame_state == FRAME_SUSPENDED_YIELD_FROM) {
  ------------------
  |  Branch (492:9): [True: 0, False: 1]
  ------------------
  493|      0|        PyObject *yf = PyStackRef_AsPyObjectNew(_PyFrame_StackPeek(frame, 2));
  ------------------
  |  |  736|      0|#define PyStackRef_AsPyObjectNew(stackref) Py_NewRef(PyStackRef_AsPyObjectBorrow(stackref))
  |  |  ------------------
  |  |  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  494|      0|        err = gen_close_iter(yf);
  495|      0|        Py_DECREF(yf);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  496|      0|    }
  497|       |
  498|      1|    if (is_resume(frame->instr_ptr)) {
  ------------------
  |  Branch (498:9): [True: 1, False: 0]
  ------------------
  499|      1|        bool no_unwind_tools = _PyEval_NoToolsForUnwind(_PyThreadState_GET(), frame);
  500|       |        /* We can safely ignore the outermost try block
  501|       |         * as it is automatically generated to handle
  502|       |         * StopIteration. */
  503|      1|        int oparg = frame->instr_ptr->op.arg;
  504|      1|        if (oparg & RESUME_OPARG_DEPTH1_MASK && no_unwind_tools) {
  ------------------
  |  |   93|      2|#define RESUME_OPARG_DEPTH1_MASK 0x8
  ------------------
  |  Branch (504:13): [True: 1, False: 0]
  |  Branch (504:49): [True: 1, False: 0]
  ------------------
  505|       |            // RESUME after YIELD_VALUE and exception depth is 1
  506|      1|            assert((oparg & RESUME_OPARG_LOCATION_MASK) != RESUME_AT_FUNC_START);
  ------------------
  |  Branch (506:13): [True: 1, False: 0]
  ------------------
  507|      1|            FT_ATOMIC_STORE_INT8_RELEASE(gen->gi_frame_state, FRAME_CLEARED);
  ------------------
  |  |  167|      1|#define FT_ATOMIC_STORE_INT8_RELEASE(value, new_value) value = new_value
  ------------------
  508|      1|            gen_clear_frame(gen);
  509|      1|            Py_RETURN_NONE;
  ------------------
  |  |  628|      1|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|      1|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
  510|      1|        }
  511|      1|    }
  512|      0|    if (err == 0) {
  ------------------
  |  Branch (512:9): [True: 0, False: 0]
  ------------------
  513|      0|        PyErr_SetNone(PyExc_GeneratorExit);
  514|      0|    }
  515|       |
  516|      0|    PyObject *retval;
  517|      0|    if (gen_send_ex2(gen, Py_None, &retval, 1) == PYGEN_RETURN) {
  ------------------
  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (517:9): [True: 0, False: 0]
  ------------------
  518|       |        // the generator returned a value while closing, return the value here
  519|      0|        assert(!PyErr_Occurred());
  ------------------
  |  Branch (519:9): [True: 0, False: 0]
  ------------------
  520|      0|        return retval;
  521|      0|    }
  522|      0|    else if (retval) {
  ------------------
  |  Branch (522:14): [True: 0, False: 0]
  ------------------
  523|      0|        const char *msg = "generator ignored GeneratorExit";
  524|      0|        if (PyCoro_CheckExact(gen)) {
  ------------------
  |  |   31|      0|#define PyCoro_CheckExact(op) Py_IS_TYPE((op), &PyCoro_Type)
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  525|      0|            msg = "coroutine ignored GeneratorExit";
  526|      0|        } else if (PyAsyncGen_CheckExact(gen)) {
  ------------------
  |  |   46|      0|#define PyAsyncGen_CheckExact(op) Py_IS_TYPE((op), &PyAsyncGen_Type)
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  527|      0|            msg = ASYNC_GEN_IGNORED_EXIT_MSG;
  528|      0|        }
  529|      0|        Py_DECREF(retval);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  530|      0|        PyErr_SetString(PyExc_RuntimeError, msg);
  531|      0|        return NULL;
  532|      0|    }
  533|      0|    assert(PyErr_Occurred());
  ------------------
  |  Branch (533:5): [True: 0, False: 0]
  ------------------
  534|       |
  535|      0|    if (PyErr_ExceptionMatches(PyExc_GeneratorExit)) {
  ------------------
  |  Branch (535:9): [True: 0, False: 0]
  ------------------
  536|      0|        PyErr_Clear();          /* ignore this error */
  537|      0|        Py_RETURN_NONE;
  ------------------
  |  |  628|      0|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
  538|      0|    }
  539|      0|    return NULL;
  540|      0|}
genobject.c:is_resume:
  452|      1|{
  453|      1|    uint8_t code = FT_ATOMIC_LOAD_UINT8_RELAXED(instr->op.code);
  ------------------
  |  |  157|      1|#define FT_ATOMIC_LOAD_UINT8_RELAXED(value) value
  ------------------
  454|      1|    return (
  455|      1|        code == RESUME ||
  ------------------
  |  |  133|      2|#define RESUME                                 128
  ------------------
  |  Branch (455:9): [True: 0, False: 1]
  ------------------
  456|      1|        code == RESUME_CHECK ||
  ------------------
  |  |  205|      2|#define RESUME_CHECK                           200
  ------------------
  |  Branch (456:9): [True: 1, False: 0]
  ------------------
  457|      0|        code == RESUME_CHECK_JIT ||
  ------------------
  |  |  206|      1|#define RESUME_CHECK_JIT                       201
  ------------------
  |  Branch (457:9): [True: 0, False: 0]
  ------------------
  458|      0|        code == INSTRUMENTED_RESUME
  ------------------
  |  |  235|      0|#define INSTRUMENTED_RESUME                    244
  ------------------
  |  Branch (458:9): [True: 0, False: 0]
  ------------------
  459|      1|    );
  460|      1|}
genobject.c:gen_finalize:
  109|     21|{
  110|     21|    PyGenObject *gen = (PyGenObject *)self;
  111|       |
  112|     21|    if (FRAME_STATE_FINISHED(gen->gi_frame_state)) {
  ------------------
  |  |   57|     21|#define FRAME_STATE_FINISHED(S) ((S) == FRAME_CLEARED)
  |  |  ------------------
  |  |  |  Branch (57:33): [True: 18, False: 3]
  |  |  ------------------
  ------------------
  113|       |        /* Generator isn't paused, so no need to close */
  114|     18|        return;
  115|     18|    }
  116|       |
  117|      3|    if (PyAsyncGen_CheckExact(self)) {
  ------------------
  |  |   46|      3|#define PyAsyncGen_CheckExact(op) Py_IS_TYPE((op), &PyAsyncGen_Type)
  |  |  ------------------
  |  |  |  |  215|      3|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 1, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  118|      1|        PyAsyncGenObject *agen = (PyAsyncGenObject*)self;
  119|      1|        PyObject *finalizer = agen->ag_origin_or_finalizer;
  120|      1|        if (finalizer && !agen->ag_closed) {
  ------------------
  |  Branch (120:13): [True: 0, False: 1]
  |  Branch (120:26): [True: 0, False: 0]
  ------------------
  121|       |            /* Save the current exception, if any. */
  122|      0|            PyObject *exc = PyErr_GetRaisedException();
  123|       |
  124|      0|            PyObject *res = PyObject_CallOneArg(finalizer, self);
  125|      0|            if (res == NULL) {
  ------------------
  |  Branch (125:17): [True: 0, False: 0]
  ------------------
  126|      0|                PyErr_FormatUnraisable("Exception ignored while "
  127|      0|                                       "finalizing generator %R", self);
  128|      0|            }
  129|      0|            else {
  130|      0|                Py_DECREF(res);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  131|      0|            }
  132|       |            /* Restore the saved exception. */
  133|      0|            PyErr_SetRaisedException(exc);
  134|      0|            return;
  135|      0|        }
  136|      1|    }
  137|       |
  138|       |    /* Save the current exception, if any. */
  139|      3|    PyObject *exc = PyErr_GetRaisedException();
  140|       |
  141|       |    /* If `gen` is a coroutine, and if it was never awaited on,
  142|       |       issue a RuntimeWarning. */
  143|      3|    assert(_PyGen_GetCode(gen) != NULL);
  ------------------
  |  Branch (143:5): [True: 3, False: 0]
  ------------------
  144|      3|    if (_PyGen_GetCode(gen)->co_flags & CO_COROUTINE &&
  ------------------
  |  |  127|      6|#define CO_COROUTINE            0x0080
  ------------------
  |  Branch (144:9): [True: 0, False: 3]
  ------------------
  145|      0|        gen->gi_frame_state == FRAME_CREATED)
  ------------------
  |  Branch (145:9): [True: 0, False: 0]
  ------------------
  146|      0|    {
  147|      0|        _PyErr_WarnUnawaitedCoroutine((PyObject *)gen);
  148|      0|    }
  149|      3|    else {
  150|      3|        PyObject *res = gen_close((PyObject*)gen, NULL);
  151|      3|        if (res == NULL) {
  ------------------
  |  Branch (151:13): [True: 0, False: 3]
  ------------------
  152|      0|            if (PyErr_Occurred()) {
  ------------------
  |  Branch (152:17): [True: 0, False: 0]
  ------------------
  153|      0|                PyErr_FormatUnraisable("Exception ignored while "
  154|      0|                                       "closing generator %R", self);
  155|      0|            }
  156|      0|        }
  157|      3|        else {
  158|      3|            Py_DECREF(res);
  ------------------
  |  |  430|      3|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  159|      3|        }
  160|      3|    }
  161|       |
  162|       |    /* Restore the saved exception. */
  163|      3|    PyErr_SetRaisedException(exc);
  164|      3|}
genobject.c:make_gen:
 1093|     21|{
 1094|     21|    PyCodeObject *code = (PyCodeObject *)func->func_code;
 1095|     21|    int slots = _PyFrame_NumSlotsForCodeObject(code);
 1096|     21|    PyGenObject *gen = PyObject_GC_NewVar(PyGenObject, type, slots);
  ------------------
  |  |  183|     21|    _Py_CAST(type*, _PyObject_GC_NewVar((typeobj), (n)))
  |  |  ------------------
  |  |  |  |   37|     21|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
 1097|     21|    if (gen == NULL) {
  ------------------
  |  Branch (1097:9): [True: 0, False: 21]
  ------------------
 1098|      0|        return NULL;
 1099|      0|    }
 1100|     21|    gen->gi_frame_state = FRAME_CLEARED;
 1101|     21|    gen->gi_weakreflist = NULL;
 1102|     21|    gen->gi_exc_state.exc_value = NULL;
 1103|     21|    gen->gi_exc_state.previous_item = NULL;
 1104|     21|    gen->gi_iframe.f_executable = PyStackRef_None;
  ------------------
  |  |  473|     21|#define PyStackRef_None ((_PyStackRef){.bits = ((uintptr_t)&_Py_NoneStruct) | Py_TAG_REFCNT })
  |  |  ------------------
  |  |  |  |   55|     21|#define Py_TAG_REFCNT 1
  |  |  ------------------
  ------------------
 1105|     21|    assert(func->func_name != NULL);
  ------------------
  |  Branch (1105:5): [True: 21, False: 0]
  ------------------
 1106|     21|    gen->gi_name = Py_NewRef(func->func_name);
  ------------------
  |  |  550|     21|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     21|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     21|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1107|     21|    assert(func->func_qualname != NULL);
  ------------------
  |  Branch (1107:5): [True: 21, False: 0]
  ------------------
 1108|     21|    gen->gi_qualname = Py_NewRef(func->func_qualname);
  ------------------
  |  |  550|     21|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     21|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     21|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1109|     21|    _PyObject_GC_TRACK(gen);
  ------------------
  |  |  513|     21|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     21|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     21|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1110|     21|    return (PyObject *)gen;
 1111|     21|}

_PyInterpolation_InitTypes:
  165|      1|{
  166|      1|    PyObject *tuple = Py_BuildValue("(ssss)", "value", "expression", "conversion", "format_spec");
  167|      1|    if (!tuple) {
  ------------------
  |  Branch (167:9): [True: 0, False: 1]
  ------------------
  168|      0|        goto error;
  169|      0|    }
  170|       |
  171|      1|    PyObject *dict = _PyType_GetDict(&_PyInterpolation_Type);
  172|      1|    if (!dict) {
  ------------------
  |  Branch (172:9): [True: 0, False: 1]
  ------------------
  173|      0|        Py_DECREF(tuple);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  174|      0|        goto error;
  175|      0|    }
  176|       |
  177|      1|    int status = PyDict_SetItemString(dict, "__match_args__", tuple);
  178|      1|    Py_DECREF(tuple);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  179|      1|    if (status < 0) {
  ------------------
  |  Branch (179:9): [True: 0, False: 1]
  ------------------
  180|      0|        goto error;
  181|      0|    }
  182|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
  183|       |
  184|      0|error:
  185|      0|    return _PyStatus_ERR("Can't initialize interpolation types");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
  186|      1|}

_PyLazyImport_New:
   15|      4|{
   16|      4|    PyLazyImportObject *m;
   17|      4|    if (!name || !PyUnicode_Check(name)) {
  ------------------
  |  |  103|      4|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      4|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (17:9): [True: 0, False: 4]
  |  Branch (17:18): [True: 0, False: 4]
  ------------------
   18|      0|        PyErr_SetString(PyExc_TypeError, "expected str for name");
   19|      0|        return NULL;
   20|      0|    }
   21|      4|    if (fromlist == Py_None || fromlist == NULL) {
  ------------------
  |  |  616|      8|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (21:9): [True: 4, False: 0]
  |  Branch (21:32): [True: 0, False: 0]
  ------------------
   22|      4|        fromlist = NULL;
   23|      4|    }
   24|      0|    else if (!PyUnicode_Check(fromlist) && !PyTuple_Check(fromlist)) {
  ------------------
  |  |  103|      0|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
                  else if (!PyUnicode_Check(fromlist) && !PyTuple_Check(fromlist)) {
  ------------------
  |  |   27|      0|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TUPLE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (24:14): [True: 0, False: 0]
  |  Branch (24:44): [True: 0, False: 0]
  ------------------
   25|      0|        PyErr_SetString(PyExc_TypeError,
   26|      0|            "lazy_import: fromlist must be None, a string, or a tuple");
   27|      0|        return NULL;
   28|      0|    }
   29|      4|    m = PyObject_GC_New(PyLazyImportObject, &PyLazyImport_Type);
  ------------------
  |  |  181|      4|    _Py_CAST(type*, _PyObject_GC_New(typeobj))
  |  |  ------------------
  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
   30|      4|    if (m == NULL) {
  ------------------
  |  Branch (30:9): [True: 0, False: 4]
  ------------------
   31|      0|        return NULL;
   32|      0|    }
   33|      4|    m->lz_builtins = Py_XNewRef(builtins);
  ------------------
  |  |  551|      4|#  define Py_XNewRef(obj) _Py_XNewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   34|      4|    m->lz_from = Py_NewRef(name);
  ------------------
  |  |  550|      4|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   35|      4|    m->lz_attr = Py_XNewRef(fromlist);
  ------------------
  |  |  551|      4|#  define Py_XNewRef(obj) _Py_XNewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   36|       |
   37|       |    // Capture frame information for the original import location.
   38|      4|    m->lz_code = NULL;
   39|      4|    m->lz_instr_offset = -1;
   40|       |
   41|      4|    if (frame != NULL) {
  ------------------
  |  Branch (41:9): [True: 4, False: 0]
  ------------------
   42|      4|        PyCodeObject *code = _PyFrame_GetCode(frame);
   43|      4|        if (code != NULL) {
  ------------------
  |  Branch (43:13): [True: 4, False: 0]
  ------------------
   44|      4|            m->lz_code = (PyCodeObject *)Py_NewRef(code);
  ------------------
  |  |  550|      4|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   45|       |            // Calculate the instruction offset from the current frame.
   46|      4|            m->lz_instr_offset = _PyInterpreterFrame_LASTI(frame);
  ------------------
  |  |   18|      4|    ((int)((IF)->instr_ptr - _PyFrame_GetBytecode((IF))))
  ------------------
   47|      4|        }
   48|      4|    }
   49|       |
   50|      4|    _PyObject_GC_TRACK(m);
  ------------------
  |  |  513|      4|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   51|      4|    return (PyObject *)m;
   52|      4|}

PyList_New:
  242|    378|{
  243|    378|    if (size < 0) {
  ------------------
  |  Branch (243:9): [True: 0, False: 378]
  ------------------
  244|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
  245|      0|        return NULL;
  246|      0|    }
  247|       |
  248|    378|    PyListObject *op = _Py_FREELIST_POP(PyListObject, lists);
  ------------------
  |  |   43|    378|    _Py_CAST(TYPE*, _PyFreeList_Pop(&_Py_freelists_GET()->NAME))
  |  |  ------------------
  |  |  |  |   37|    378|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  249|    378|    if (op == NULL) {
  ------------------
  |  Branch (249:9): [True: 51, False: 327]
  ------------------
  250|     51|        op = PyObject_GC_New(PyListObject, &PyList_Type);
  ------------------
  |  |  181|     51|    _Py_CAST(type*, _PyObject_GC_New(typeobj))
  |  |  ------------------
  |  |  |  |   37|     51|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  251|     51|        if (op == NULL) {
  ------------------
  |  Branch (251:13): [True: 0, False: 51]
  ------------------
  252|      0|            return NULL;
  253|      0|        }
  254|     51|    }
  255|    378|    if (size <= 0) {
  ------------------
  |  Branch (255:9): [True: 334, False: 44]
  ------------------
  256|    334|        op->ob_item = NULL;
  257|    334|    }
  258|     44|    else {
  259|       |#ifdef Py_GIL_DISABLED
  260|       |        _PyListArray *array = list_allocate_array(size);
  261|       |        if (array == NULL) {
  262|       |            Py_DECREF(op);
  263|       |            return PyErr_NoMemory();
  264|       |        }
  265|       |        memset(&array->ob_item, 0, size * sizeof(PyObject *));
  266|       |        op->ob_item = array->ob_item;
  267|       |#else
  268|     44|        op->ob_item = (PyObject **) PyMem_Calloc(size, sizeof(PyObject *));
  269|     44|#endif
  270|     44|        if (op->ob_item == NULL) {
  ------------------
  |  Branch (270:13): [True: 0, False: 44]
  ------------------
  271|      0|            Py_DECREF(op);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  272|      0|            return PyErr_NoMemory();
  273|      0|        }
  274|     44|    }
  275|    378|    Py_SET_SIZE(op, size);
  ------------------
  |  |  216|    378|#  define Py_SET_SIZE(ob, size) _Py_SET_SIZE_impl(_PyVarObject_CAST(ob), (size))
  |  |  ------------------
  |  |  |  |  182|    378|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    378|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  276|    378|    op->allocated = size;
  277|    378|    _PyObject_GC_TRACK(op);
  ------------------
  |  |  513|    378|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    378|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    378|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  278|    378|    return (PyObject *) op;
  279|    378|}
PyList_Size:
  310|      2|{
  311|      2|    if (!PyList_Check(op)) {
  ------------------
  |  |   25|      2|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LIST_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      2|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (311:9): [True: 0, False: 2]
  ------------------
  312|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
  313|      0|        return -1;
  314|      0|    }
  315|      2|    else {
  316|      2|        return PyList_GET_SIZE(op);
  ------------------
  |  |   38|      2|#define PyList_GET_SIZE(op) PyList_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  317|      2|    }
  318|      2|}
PyList_GetItemRef:
  407|      1|{
  408|      1|    if (!PyList_Check(op)) {
  ------------------
  |  |   25|      1|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LIST_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      1|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (408:9): [True: 0, False: 1]
  ------------------
  409|      0|        PyErr_SetString(PyExc_TypeError, "expected a list");
  410|      0|        return NULL;
  411|      0|    }
  412|      1|    PyObject *item = list_get_item_ref((PyListObject *)op, i);
  413|      1|    if (item == NULL) {
  ------------------
  |  Branch (413:9): [True: 0, False: 1]
  ------------------
  414|      0|        _Py_DECLARE_STR(list_err, "list index out of range");
  415|      0|        PyErr_SetObject(PyExc_IndexError, &_Py_STR(list_err));
  ------------------
  |  |  919|      0|     (_Py_SINGLETON(strings.literals._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  416|      0|        return NULL;
  417|      0|    }
  418|      1|    return item;
  419|      1|}
PyList_SetItem:
  456|      2|{
  457|      2|    if (!PyList_Check(op)) {
  ------------------
  |  |   25|      2|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LIST_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      2|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (457:9): [True: 0, False: 2]
  ------------------
  458|      0|        Py_XDECREF(newitem);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  459|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
  460|      0|        return -1;
  461|      0|    }
  462|      2|    int ret;
  463|      2|    PyListObject *self = ((PyListObject *)op);
  464|      2|    Py_BEGIN_CRITICAL_SECTION(self);
  ------------------
  |  |   51|      2|    {
  ------------------
  465|      2|    if (!valid_index(i, Py_SIZE(self))) {
  ------------------
  |  |  214|      2|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (465:9): [True: 0, False: 2]
  ------------------
  466|      0|        Py_XDECREF(newitem);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  467|      0|        PyErr_SetString(PyExc_IndexError,
  468|      0|                        "list assignment index out of range");
  469|      0|        ret = -1;
  470|      0|        goto end;
  471|      0|    }
  472|      2|    PyObject *tmp = self->ob_item[i];
  473|      2|    FT_ATOMIC_STORE_PTR_RELEASE(self->ob_item[i], newitem);
  ------------------
  |  |  164|      2|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  ------------------
  474|      2|    Py_XDECREF(tmp);
  ------------------
  |  |  524|      2|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  475|      2|    ret = 0;
  476|      2|end:;
  477|      2|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|      2|    }
  ------------------
  478|      2|    return ret;
  479|      2|}
PyList_Insert:
  511|      1|{
  512|      1|    if (!PyList_Check(op)) {
  ------------------
  |  |   25|      1|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LIST_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      1|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (512:9): [True: 0, False: 1]
  ------------------
  513|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
  514|      0|        return -1;
  515|      0|    }
  516|      1|    PyListObject *self = (PyListObject *)op;
  517|      1|    int err;
  518|      1|    Py_BEGIN_CRITICAL_SECTION(self);
  ------------------
  |  |   51|      1|    {
  ------------------
  519|      1|    err = ins1(self, where, newitem);
  520|      1|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|      1|    }
  ------------------
  521|      1|    return err;
  522|      1|}
_PyList_AppendTakeRefListResize:
  527|    464|{
  528|    464|    Py_ssize_t len = Py_SIZE(self);
  ------------------
  |  |  214|    464|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    464|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    464|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  529|    464|    assert(self->allocated == -1 || self->allocated == len);
  ------------------
  |  Branch (529:5): [True: 0, False: 464]
  |  Branch (529:5): [True: 464, False: 0]
  ------------------
  530|    464|    if (list_resize(self, len + 1) < 0) {
  ------------------
  |  Branch (530:9): [True: 0, False: 464]
  ------------------
  531|      0|        Py_DECREF(newitem);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  532|      0|        return -1;
  533|      0|    }
  534|    464|    FT_ATOMIC_STORE_PTR_RELEASE(self->ob_item[len], newitem);
  ------------------
  |  |  164|    464|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  ------------------
  535|    464|    return 0;
  536|    464|}
PyList_Append:
  540|  5.37k|{
  541|  5.37k|    if (PyList_Check(op) && (newitem != NULL)) {
  ------------------
  |  |   25|  5.37k|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LIST_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|  10.7k|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 5.37k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (541:29): [True: 5.37k, False: 0]
  ------------------
  542|  5.37k|        int ret;
  543|  5.37k|        Py_BEGIN_CRITICAL_SECTION(op);
  ------------------
  |  |   51|  5.37k|    {
  ------------------
  544|  5.37k|        ret = _PyList_AppendTakeRef((PyListObject *)op, Py_NewRef(newitem));
  ------------------
  |  |  550|  5.37k|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|  5.37k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  5.37k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  545|  5.37k|        Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|  5.37k|    }
  ------------------
  546|  5.37k|        return ret;
  547|  5.37k|    }
  548|      0|    PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
  549|      0|    return -1;
  550|  5.37k|}
_PyList_BinarySlice:
  721|      4|{
  722|      4|    assert(PyList_CheckExact(container));
  ------------------
  |  Branch (722:5): [True: 4, False: 0]
  ------------------
  723|      4|    Py_ssize_t istart = 0;
  724|      4|    Py_ssize_t istop = PY_SSIZE_T_MAX;
  ------------------
  |  |  137|      4|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  725|       |    /* Unpack the index values before acquiring the lock, since
  726|       |     * _PyEval_SliceIndex may call __index__ which could execute
  727|       |     * arbitrary Python code. */
  728|      4|    if (!_PyEval_SliceIndex(start, &istart)) {
  ------------------
  |  Branch (728:9): [True: 0, False: 4]
  ------------------
  729|      0|        return NULL;
  730|      0|    }
  731|      4|    if (!_PyEval_SliceIndex(stop, &istop)) {
  ------------------
  |  Branch (731:9): [True: 0, False: 4]
  ------------------
  732|      0|        return NULL;
  733|      0|    }
  734|      4|    PyObject *ret;
  735|      4|    Py_BEGIN_CRITICAL_SECTION(container);
  ------------------
  |  |   51|      4|    {
  ------------------
  736|      4|    Py_ssize_t len = Py_SIZE(container);
  ------------------
  |  |  214|      4|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  737|      4|    PySlice_AdjustIndices(len, &istart, &istop, 1);
  738|      4|    ret = list_slice_lock_held((PyListObject *)container, istart, istop);
  739|      4|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|      4|    }
  ------------------
  740|      4|    return ret;
  741|      4|}
_PyList_Concat:
  803|      1|{
  804|      1|    if (!PyList_Check(bb)) {
  ------------------
  |  |   25|      1|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LIST_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      1|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (804:9): [True: 0, False: 1]
  ------------------
  805|      0|        PyErr_Format(PyExc_TypeError,
  806|      0|                  "can only concatenate list (not \"%.200s\") to list",
  807|      0|                  Py_TYPE(bb)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  808|      0|        return NULL;
  809|      0|    }
  810|      1|    PyListObject *a = (PyListObject *)aa;
  811|      1|    PyListObject *b = (PyListObject *)bb;
  812|      1|    PyObject *ret;
  813|      1|    Py_BEGIN_CRITICAL_SECTION2(a, b);
  ------------------
  |  |   57|      1|    {
  ------------------
  814|      1|    ret = list_concat_lock_held(a, b);
  815|      1|    Py_END_CRITICAL_SECTION2();
  ------------------
  |  |   61|      1|    }
  ------------------
  816|      1|    return ret;
  817|      1|}
_PyList_Extend:
 1534|     67|{
 1535|     67|    return list_extend((PyObject*)self, iterable);
 1536|     67|}
PyList_Sort:
 3213|     34|{
 3214|     34|    if (v == NULL || !PyList_Check(v)) {
  ------------------
  |  |   25|     34|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LIST_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     34|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (3214:9): [True: 0, False: 34]
  |  Branch (3214:22): [True: 0, False: 34]
  ------------------
 3215|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
 3216|      0|        return -1;
 3217|      0|    }
 3218|     34|    Py_BEGIN_CRITICAL_SECTION(v);
  ------------------
  |  |   51|     34|    {
  ------------------
 3219|     34|    v = list_sort_impl((PyListObject *)v, NULL, 0);
 3220|     34|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|     34|    }
  ------------------
 3221|     34|    if (v == NULL)
  ------------------
  |  Branch (3221:9): [True: 0, False: 34]
  ------------------
 3222|      0|        return -1;
 3223|     34|    Py_DECREF(v);
  ------------------
  |  |  430|     34|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     34|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     34|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3224|     34|    return 0;
 3225|     34|}
PyList_AsTuple:
 3262|     71|{
 3263|     71|    if (v == NULL || !PyList_Check(v)) {
  ------------------
  |  |   25|     71|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LIST_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     71|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (3263:9): [True: 0, False: 71]
  |  Branch (3263:22): [True: 0, False: 71]
  ------------------
 3264|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
 3265|      0|        return NULL;
 3266|      0|    }
 3267|     71|    PyObject *ret;
 3268|     71|    PyListObject *self = (PyListObject *)v;
 3269|     71|    Py_BEGIN_CRITICAL_SECTION(self);
  ------------------
  |  |   51|     71|    {
  ------------------
 3270|     71|    ret = PyTuple_FromArray(self->ob_item, Py_SIZE(v));
  ------------------
  |  |  214|     71|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     71|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     71|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3271|     71|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|     71|    }
  ------------------
 3272|     71|    return ret;
 3273|     71|}
_PyList_AsTupleAndClear:
 3277|      4|{
 3278|      4|    assert(self != NULL);
  ------------------
  |  Branch (3278:5): [True: 4, False: 0]
  ------------------
 3279|      4|    PyObject *ret;
 3280|      4|    if (self->ob_item == NULL) {
  ------------------
  |  Branch (3280:9): [True: 0, False: 4]
  ------------------
 3281|      0|        return PyTuple_New(0);
 3282|      0|    }
 3283|      4|    Py_BEGIN_CRITICAL_SECTION(self);
  ------------------
  |  |   51|      4|    {
  ------------------
 3284|      4|    PyObject **items = self->ob_item;
 3285|      4|    Py_ssize_t size = Py_SIZE(self);
  ------------------
  |  |  214|      4|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3286|      4|    Py_SET_SIZE(self, 0);
  ------------------
  |  |  216|      4|#  define Py_SET_SIZE(ob, size) _Py_SET_SIZE_impl(_PyVarObject_CAST(ob), (size))
  |  |  ------------------
  |  |  |  |  182|      4|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3287|      4|    ret = _PyTuple_FromArraySteal(items, size);
 3288|      4|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|      4|    }
  ------------------
 3289|      4|    return ret;
 3290|      4|}
_PyList_FromStackRefStealOnSuccess:
 3294|    205|{
 3295|    205|    if (n == 0) {
  ------------------
  |  Branch (3295:9): [True: 185, False: 20]
  ------------------
 3296|    185|        return PyList_New(0);
 3297|    185|    }
 3298|       |
 3299|     20|    PyListObject *list = (PyListObject *)PyList_New(n);
 3300|     20|    if (list == NULL) {
  ------------------
  |  Branch (3300:9): [True: 0, False: 20]
  ------------------
 3301|      0|        return NULL;
 3302|      0|    }
 3303|       |
 3304|     20|    PyObject **dst = list->ob_item;
 3305|     49|    for (Py_ssize_t i = 0; i < n; i++) {
  ------------------
  |  Branch (3305:28): [True: 29, False: 20]
  ------------------
 3306|     29|        dst[i] = PyStackRef_AsPyObjectSteal(src[i]);
 3307|     29|    }
 3308|       |
 3309|     20|    return (PyObject *)list;
 3310|     20|}
listobject.c:valid_index:
  322|  1.60k|{
  323|       |    /* The cast to size_t lets us use just a single comparison
  324|       |       to check whether i is in the range: 0 <= i < limit.
  325|       |
  326|       |       See:  Section 14.2 "Bounds Checking" in the Agner Fog
  327|       |       optimization manual found at:
  328|       |       https://www.agner.org/optimize/optimizing_cpp.pdf
  329|       |    */
  330|  1.60k|    return (size_t) i < (size_t) limit;
  331|  1.60k|}
listobject.c:list_get_item_ref:
  382|  1.05k|{
  383|  1.05k|    if (!valid_index(i, Py_SIZE(op))) {
  ------------------
  |  |  214|  1.05k|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  1.05k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.05k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (383:9): [True: 13, False: 1.04k]
  ------------------
  384|     13|        return NULL;
  385|     13|    }
  386|  1.04k|    return Py_NewRef(PyList_GET_ITEM(op, i));
  ------------------
  |  |  550|  1.04k|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|  1.04k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.08k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (37:38): [True: 1.04k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  387|  1.04k|}
listobject.c:ins1:
  483|      2|{
  484|      2|    Py_ssize_t i, n = Py_SIZE(self);
  ------------------
  |  |  214|      2|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  485|      2|    PyObject **items;
  486|      2|    if (v == NULL) {
  ------------------
  |  Branch (486:9): [True: 0, False: 2]
  ------------------
  487|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
  488|      0|        return -1;
  489|      0|    }
  490|       |
  491|      2|    assert((size_t)n + 1 < PY_SSIZE_T_MAX);
  ------------------
  |  Branch (491:5): [True: 2, False: 0]
  ------------------
  492|      2|    if (list_resize(self, n+1) < 0)
  ------------------
  |  Branch (492:9): [True: 0, False: 2]
  ------------------
  493|      0|        return -1;
  494|       |
  495|      2|    if (where < 0) {
  ------------------
  |  Branch (495:9): [True: 0, False: 2]
  ------------------
  496|      0|        where += n;
  497|      0|        if (where < 0)
  ------------------
  |  Branch (497:13): [True: 0, False: 0]
  ------------------
  498|      0|            where = 0;
  499|      0|    }
  500|      2|    if (where > n)
  ------------------
  |  Branch (500:9): [True: 0, False: 2]
  ------------------
  501|      0|        where = n;
  502|      2|    items = self->ob_item;
  503|      3|    for (i = n; --i >= where; )
  ------------------
  |  Branch (503:17): [True: 1, False: 2]
  ------------------
  504|      1|        FT_ATOMIC_STORE_PTR_RELEASE(items[i+1], items[i]);
  ------------------
  |  |  164|      3|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  ------------------
  505|      2|    FT_ATOMIC_STORE_PTR_RELEASE(items[where], Py_NewRef(v));
  ------------------
  |  |  164|      2|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  ------------------
  506|      2|    return 0;
  507|      2|}
listobject.c:list_resize:
  105|    514|{
  106|    514|    size_t new_allocated, target_bytes;
  107|    514|    Py_ssize_t allocated = self->allocated;
  108|       |
  109|       |    /* Bypass realloc() when a previous overallocation is large enough
  110|       |       to accommodate the newsize.  If the newsize falls lower than half
  111|       |       the allocated size, then proceed with the realloc() to shrink the list.
  112|       |    */
  113|    514|    if (allocated >= newsize && newsize >= (allocated >> 1)) {
  ------------------
  |  Branch (113:9): [True: 37, False: 477]
  |  Branch (113:33): [True: 24, False: 13]
  ------------------
  114|     24|        assert(self->ob_item != NULL || newsize == 0);
  ------------------
  |  Branch (114:9): [True: 24, False: 0]
  |  Branch (114:9): [True: 0, False: 0]
  ------------------
  115|     24|        Py_SET_SIZE(self, newsize);
  ------------------
  |  |  216|     24|#  define Py_SET_SIZE(ob, size) _Py_SET_SIZE_impl(_PyVarObject_CAST(ob), (size))
  |  |  ------------------
  |  |  |  |  182|     24|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     24|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  116|     24|        return 0;
  117|     24|    }
  118|       |
  119|       |    /* This over-allocates proportional to the list size, making room
  120|       |     * for additional growth.  The over-allocation is mild, but is
  121|       |     * enough to give linear-time amortized behavior over a long
  122|       |     * sequence of appends() in the presence of a poorly-performing
  123|       |     * system realloc().
  124|       |     * Add padding to make the allocated size multiple of 4.
  125|       |     * The growth pattern is:  0, 4, 8, 16, 24, 32, 40, 52, 64, 76, ...
  126|       |     * Note: new_allocated won't overflow because the largest possible value
  127|       |     *       is PY_SSIZE_T_MAX * (9 / 8) + 6 which always fits in a size_t.
  128|       |     */
  129|    490|    new_allocated = ((size_t)newsize + (newsize >> 3) + 6) & ~(size_t)3;
  130|       |    /* Do not overallocate if the new size is closer to overallocated size
  131|       |     * than to the old size.
  132|       |     */
  133|    490|    if (newsize - Py_SIZE(self) > (Py_ssize_t)(new_allocated - newsize))
  ------------------
  |  |  214|    490|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    490|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    490|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (133:9): [True: 7, False: 483]
  ------------------
  134|      7|        new_allocated = ((size_t)newsize + 3) & ~(size_t)3;
  135|       |
  136|    490|    if (newsize == 0)
  ------------------
  |  Branch (136:9): [True: 2, False: 488]
  ------------------
  137|      2|        new_allocated = 0;
  138|       |
  139|    490|    ensure_shared_on_resize(self);
  140|       |
  141|       |#ifdef Py_GIL_DISABLED
  142|       |    _PyListArray *array = list_allocate_array(new_allocated);
  143|       |    if (array == NULL) {
  144|       |        if (newsize < allocated) {
  145|       |            // Never fail when shrinking allocations
  146|       |            Py_SET_SIZE(self, newsize);
  147|       |            return 0;
  148|       |        }
  149|       |        PyErr_NoMemory();
  150|       |        return -1;
  151|       |    }
  152|       |    PyObject **old_items = self->ob_item;
  153|       |    if (self->ob_item) {
  154|       |        if (new_allocated < (size_t)allocated) {
  155|       |            target_bytes = new_allocated * sizeof(PyObject*);
  156|       |        }
  157|       |        else {
  158|       |            target_bytes = allocated * sizeof(PyObject*);
  159|       |        }
  160|       |        memcpy(array->ob_item, self->ob_item, target_bytes);
  161|       |    }
  162|       |    if (new_allocated > (size_t)allocated) {
  163|       |        memset(array->ob_item + allocated, 0, sizeof(PyObject *) * (new_allocated - allocated));
  164|       |    }
  165|       |     _Py_atomic_store_ptr_release(&self->ob_item, &array->ob_item);
  166|       |    self->allocated = new_allocated;
  167|       |    Py_SET_SIZE(self, newsize);
  168|       |    if (old_items != NULL) {
  169|       |        free_list_items(old_items, _PyObject_GC_IS_SHARED(self));
  170|       |    }
  171|       |#else
  172|    490|    PyObject **items;
  173|    490|    if (new_allocated <= (size_t)PY_SSIZE_T_MAX / sizeof(PyObject *)) {
  ------------------
  |  |  137|    490|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (173:9): [True: 490, False: 0]
  ------------------
  174|    490|        target_bytes = new_allocated * sizeof(PyObject *);
  175|    490|        items = (PyObject **)PyMem_Realloc(self->ob_item, target_bytes);
  176|    490|    }
  177|      0|    else {
  178|       |        // integer overflow
  179|      0|        items = NULL;
  180|      0|    }
  181|    490|    if (items == NULL) {
  ------------------
  |  Branch (181:9): [True: 0, False: 490]
  ------------------
  182|      0|        if (newsize < allocated) {
  ------------------
  |  Branch (182:13): [True: 0, False: 0]
  ------------------
  183|       |            // Never fail when shrinking allocations
  184|      0|            Py_SET_SIZE(self, newsize);
  ------------------
  |  |  216|      0|#  define Py_SET_SIZE(ob, size) _Py_SET_SIZE_impl(_PyVarObject_CAST(ob), (size))
  |  |  ------------------
  |  |  |  |  182|      0|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  185|      0|            return 0;
  186|      0|        }
  187|      0|        PyErr_NoMemory();
  188|      0|        return -1;
  189|      0|    }
  190|    490|    self->ob_item = items;
  191|    490|    Py_SET_SIZE(self, newsize);
  ------------------
  |  |  216|    490|#  define Py_SET_SIZE(ob, size) _Py_SET_SIZE_impl(_PyVarObject_CAST(ob), (size))
  |  |  ------------------
  |  |  |  |  182|    490|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    490|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  192|    490|    self->allocated = new_allocated;
  193|    490|#endif
  194|    490|    return 0;
  195|    490|}
listobject.c:ensure_shared_on_resize:
   77|    490|{
   78|       |#ifdef Py_GIL_DISABLED
   79|       |    // We can't use _Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED here because
   80|       |    // the `CALL_LIST_APPEND` bytecode handler may lock the list without
   81|       |    // a critical section.
   82|       |    assert(Py_REFCNT(self) == 1 || PyMutex_IsLocked(&_PyObject_CAST(self)->ob_mutex));
   83|       |
   84|       |    // Ensure that the list array is freed using QSBR if we are not the
   85|       |    // owning thread.
   86|       |    if (!_Py_IsOwnedByCurrentThread((PyObject *)self) &&
   87|       |        !_PyObject_GC_IS_SHARED(self))
   88|       |    {
   89|       |        _PyObject_GC_SET_SHARED(self);
   90|       |    }
   91|       |#endif
   92|    490|}
listobject.c:list_slice_lock_held:
  697|      5|{
  698|      5|    PyListObject *np;
  699|      5|    PyObject **src, **dest;
  700|      5|    Py_ssize_t i, len;
  701|      5|    len = ihigh - ilow;
  702|      5|    if (len <= 0) {
  ------------------
  |  Branch (702:9): [True: 0, False: 5]
  ------------------
  703|      0|        return PyList_New(0);
  704|      0|    }
  705|      5|    np = (PyListObject *) list_new_prealloc(len);
  706|      5|    if (np == NULL)
  ------------------
  |  Branch (706:9): [True: 0, False: 5]
  ------------------
  707|      0|        return NULL;
  708|       |
  709|      5|    src = a->ob_item + ilow;
  710|      5|    dest = np->ob_item;
  711|     14|    for (i = 0; i < len; i++) {
  ------------------
  |  Branch (711:17): [True: 9, False: 5]
  ------------------
  712|      9|        PyObject *v = src[i];
  713|      9|        dest[i] = Py_NewRef(v);
  ------------------
  |  |  550|      9|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      9|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      9|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  714|      9|    }
  715|      5|    Py_SET_SIZE(np, len);
  ------------------
  |  |  216|      5|#  define Py_SET_SIZE(ob, size) _Py_SET_SIZE_impl(_PyVarObject_CAST(ob), (size))
  |  |  ------------------
  |  |  |  |  182|      5|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  716|      5|    return (PyObject *)np;
  717|      5|}
listobject.c:list_new_prealloc:
  283|      6|{
  284|      6|    assert(size > 0);
  ------------------
  |  Branch (284:5): [True: 6, False: 0]
  ------------------
  285|      6|    PyListObject *op = (PyListObject *) PyList_New(0);
  286|      6|    if (op == NULL) {
  ------------------
  |  Branch (286:9): [True: 0, False: 6]
  ------------------
  287|      0|        return NULL;
  288|      0|    }
  289|      6|    assert(op->ob_item == NULL);
  ------------------
  |  Branch (289:5): [True: 6, False: 0]
  ------------------
  290|       |#ifdef Py_GIL_DISABLED
  291|       |    _PyListArray *array = list_allocate_array(size);
  292|       |    if (array == NULL) {
  293|       |        Py_DECREF(op);
  294|       |        return PyErr_NoMemory();
  295|       |    }
  296|       |    op->ob_item = array->ob_item;
  297|       |#else
  298|      6|    op->ob_item = PyMem_New(PyObject *, size);
  ------------------
  |  |   64|      6|  ( ((size_t)(n) > PY_SSIZE_T_MAX / sizeof(type)) ? NULL :      \
  |  |  ------------------
  |  |  |  |  137|      6|#   define PY_SSIZE_T_MAX SSIZE_MAX
  |  |  ------------------
  |  |  |  Branch (64:5): [True: 0, False: 6]
  |  |  ------------------
  |  |   65|      6|        ( (type *) PyMem_Malloc((n) * sizeof(type)) ) )
  ------------------
  299|      6|    if (op->ob_item == NULL) {
  ------------------
  |  Branch (299:9): [True: 0, False: 6]
  ------------------
  300|      0|        Py_DECREF(op);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  301|      0|        return PyErr_NoMemory();
  302|      0|    }
  303|      6|#endif
  304|      6|    op->allocated = size;
  305|      6|    return (PyObject *) op;
  306|      6|}
listobject.c:list_concat_lock_held:
  771|      1|{
  772|      1|    Py_ssize_t size;
  773|      1|    Py_ssize_t i;
  774|      1|    PyObject **src, **dest;
  775|      1|    PyListObject *np;
  776|      1|    assert((size_t)Py_SIZE(a) + (size_t)Py_SIZE(b) < PY_SSIZE_T_MAX);
  ------------------
  |  Branch (776:5): [True: 1, False: 0]
  ------------------
  777|      1|    size = Py_SIZE(a) + Py_SIZE(b);
  ------------------
  |  |  214|      1|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  size = Py_SIZE(a) + Py_SIZE(b);
  ------------------
  |  |  214|      1|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  778|      1|    if (size == 0) {
  ------------------
  |  Branch (778:9): [True: 0, False: 1]
  ------------------
  779|      0|        return PyList_New(0);
  780|      0|    }
  781|      1|    np = (PyListObject *) list_new_prealloc(size);
  782|      1|    if (np == NULL) {
  ------------------
  |  Branch (782:9): [True: 0, False: 1]
  ------------------
  783|      0|        return NULL;
  784|      0|    }
  785|      1|    src = a->ob_item;
  786|      1|    dest = np->ob_item;
  787|      2|    for (i = 0; i < Py_SIZE(a); i++) {
  ------------------
  |  |  214|      2|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (787:17): [True: 1, False: 1]
  ------------------
  788|      1|        PyObject *v = src[i];
  789|      1|        dest[i] = Py_NewRef(v);
  ------------------
  |  |  550|      1|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  790|      1|    }
  791|      1|    src = b->ob_item;
  792|      1|    dest = np->ob_item + Py_SIZE(a);
  ------------------
  |  |  214|      1|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  793|      3|    for (i = 0; i < Py_SIZE(b); i++) {
  ------------------
  |  |  214|      3|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (793:17): [True: 2, False: 1]
  ------------------
  794|      2|        PyObject *v = src[i];
  795|      2|        dest[i] = Py_NewRef(v);
  ------------------
  |  |  550|      2|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  796|      2|    }
  797|      1|    Py_SET_SIZE(np, size);
  ------------------
  |  |  216|      1|#  define Py_SET_SIZE(ob, size) _Py_SET_SIZE_impl(_PyVarObject_CAST(ob), (size))
  |  |  ------------------
  |  |  |  |  182|      1|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  798|      1|    return (PyObject *)np;
  799|      1|}
listobject.c:list_ass_slice_lock_held:
  951|     31|{
  952|       |    /* Because [X]DECREF can recursively invoke list operations on
  953|       |       this list, we must postpone all [X]DECREF activity until
  954|       |       after the list is back in its canonical shape.  Therefore
  955|       |       we must allocate an additional array, 'recycle', into which
  956|       |       we temporarily copy the items that are deleted from the
  957|       |       list. :-( */
  958|     31|    PyObject *recycle_on_stack[8];
  959|     31|    PyObject **recycle = recycle_on_stack; /* will allocate more if needed */
  960|     31|    PyObject **item;
  961|     31|    PyObject **vitem = NULL;
  962|     31|    PyObject *v_as_SF = NULL; /* PySequence_Fast(v) */
  963|     31|    Py_ssize_t n; /* # of elements in replacement list */
  964|     31|    Py_ssize_t norig; /* # of elements in list getting replaced */
  965|     31|    Py_ssize_t d; /* Change in size */
  966|     31|    Py_ssize_t k;
  967|     31|    size_t s;
  968|     31|    int result = -1;            /* guilty until proved innocent */
  969|     31|#define b ((PyListObject *)v)
  970|     31|    if (v == NULL)
  ------------------
  |  Branch (970:9): [True: 30, False: 1]
  ------------------
  971|     30|        n = 0;
  972|      1|    else {
  973|      1|        v_as_SF = PySequence_Fast(v, "can only assign an iterable");
  974|      1|        if(v_as_SF == NULL)
  ------------------
  |  Branch (974:12): [True: 0, False: 1]
  ------------------
  975|      0|            goto Error;
  976|      1|        n = PySequence_Fast_GET_SIZE(v_as_SF);
  ------------------
  |  |   92|      1|    (PyList_Check(o) ? PyList_GET_SIZE(o) : PyTuple_GET_SIZE(o))
  |  |  ------------------
  |  |  |  |   25|      1|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LIST_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      1|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (760:41): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (PyList_Check(o) ? PyList_GET_SIZE(o) : PyTuple_GET_SIZE(o))
  |  |  ------------------
  |  |  |  |   38|      1|#define PyList_GET_SIZE(op) PyList_GET_SIZE(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (PyList_Check(o) ? PyList_GET_SIZE(o) : PyTuple_GET_SIZE(o))
  |  |  ------------------
  |  |  |  |   27|      0|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  977|      1|        vitem = PySequence_Fast_ITEMS(v_as_SF);
  ------------------
  |  |  102|      1|    (PyList_Check(sf) ? ((PyListObject *)(sf))->ob_item \
  |  |  ------------------
  |  |  |  |   25|      1|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LIST_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      1|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (760:41): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|      1|                      : ((PyTupleObject *)(sf))->ob_item)
  ------------------
  978|      1|    }
  979|     31|    if (ilow < 0)
  ------------------
  |  Branch (979:9): [True: 0, False: 31]
  ------------------
  980|      0|        ilow = 0;
  981|     31|    else if (ilow > Py_SIZE(a))
  ------------------
  |  |  214|     31|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     31|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     31|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (981:14): [True: 0, False: 31]
  ------------------
  982|      0|        ilow = Py_SIZE(a);
  ------------------
  |  |  214|      0|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  983|       |
  984|     31|    if (ihigh < ilow)
  ------------------
  |  Branch (984:9): [True: 0, False: 31]
  ------------------
  985|      0|        ihigh = ilow;
  986|     31|    else if (ihigh > Py_SIZE(a))
  ------------------
  |  |  214|     31|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     31|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     31|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (986:14): [True: 0, False: 31]
  ------------------
  987|      0|        ihigh = Py_SIZE(a);
  ------------------
  |  |  214|      0|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  988|       |
  989|     31|    norig = ihigh - ilow;
  990|     31|    assert(norig >= 0);
  ------------------
  |  Branch (990:5): [True: 31, False: 0]
  ------------------
  991|     31|    d = n - norig;
  992|     31|    if (Py_SIZE(a) + d == 0) {
  ------------------
  |  |  214|     31|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     31|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     31|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (992:9): [True: 30, False: 1]
  ------------------
  993|     30|        Py_XDECREF(v_as_SF);
  ------------------
  |  |  524|     30|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     30|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     30|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  994|     30|        list_clear(a);
  995|     30|        return 0;
  996|     30|    }
  997|      1|    item = a->ob_item;
  998|       |    /* recycle the items that we are about to remove */
  999|      1|    s = norig * sizeof(PyObject *);
 1000|       |    /* If norig == 0, item might be NULL, in which case we may not memcpy from it. */
 1001|      1|    if (s) {
  ------------------
  |  Branch (1001:9): [True: 1, False: 0]
  ------------------
 1002|      1|        if (s > sizeof(recycle_on_stack)) {
  ------------------
  |  Branch (1002:13): [True: 0, False: 1]
  ------------------
 1003|      0|            recycle = (PyObject **)PyMem_Malloc(s);
 1004|      0|            if (recycle == NULL) {
  ------------------
  |  Branch (1004:17): [True: 0, False: 0]
  ------------------
 1005|      0|                PyErr_NoMemory();
 1006|      0|                goto Error;
 1007|      0|            }
 1008|      0|        }
 1009|      1|        memcpy(recycle, &item[ilow], s);
 1010|      1|    }
 1011|       |
 1012|      1|    if (d < 0) { /* Delete -d items */
  ------------------
  |  Branch (1012:9): [True: 0, False: 1]
  ------------------
 1013|      0|        Py_ssize_t tail = Py_SIZE(a) - ihigh;
  ------------------
  |  |  214|      0|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1014|      0|        ptr_wise_atomic_memmove(a, &item[ihigh+d], &item[ihigh], tail);
 1015|      0|        (void)list_resize(a, Py_SIZE(a) + d); // NB: shrinking a list can't fail
  ------------------
  |  |  214|      0|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1016|      0|        item = a->ob_item;
 1017|      0|    }
 1018|      1|    else if (d > 0) { /* Insert d items */
  ------------------
  |  Branch (1018:14): [True: 0, False: 1]
  ------------------
 1019|      0|        k = Py_SIZE(a);
  ------------------
  |  |  214|      0|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1020|      0|        if (list_resize(a, k+d) < 0)
  ------------------
  |  Branch (1020:13): [True: 0, False: 0]
  ------------------
 1021|      0|            goto Error;
 1022|      0|        item = a->ob_item;
 1023|      0|        ptr_wise_atomic_memmove(a, &item[ihigh+d], &item[ihigh], k - ihigh);
 1024|      0|    }
 1025|      4|    for (k = 0; k < n; k++, ilow++) {
  ------------------
  |  Branch (1025:17): [True: 3, False: 1]
  ------------------
 1026|      3|        PyObject *w = vitem[k];
 1027|      3|        FT_ATOMIC_STORE_PTR_RELEASE(item[ilow], Py_XNewRef(w));
  ------------------
  |  |  164|      3|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  ------------------
 1028|      3|    }
 1029|      4|    for (k = norig - 1; k >= 0; --k)
  ------------------
  |  Branch (1029:25): [True: 3, False: 1]
  ------------------
 1030|      3|        Py_XDECREF(recycle[k]);
  ------------------
  |  |  524|      4|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1031|      1|    result = 0;
 1032|      1| Error:
 1033|      1|    if (recycle != recycle_on_stack)
  ------------------
  |  Branch (1033:9): [True: 0, False: 1]
  ------------------
 1034|      0|        PyMem_Free(recycle);
 1035|      1|    Py_XDECREF(v_as_SF);
  ------------------
  |  |  524|      1|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1036|      1|    return result;
 1037|      1|#undef b
 1038|      1|}
listobject.c:list_extend_impl:
 1525|     88|{
 1526|     88|    if (_list_extend(self, iterable) < 0) {
  ------------------
  |  Branch (1526:9): [True: 0, False: 88]
  ------------------
 1527|      0|        return NULL;
 1528|      0|    }
 1529|     88|    Py_RETURN_NONE;
  ------------------
  |  |  628|     88|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|     88|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
 1530|     88|}
listobject.c:_list_extend:
 1458|    112|{
 1459|       |    // Special case:
 1460|       |    // lists and tuples which can use PySequence_Fast ops
 1461|    112|    int res = -1;
 1462|    112|    if ((PyObject *)self == iterable) {
  ------------------
  |  Branch (1462:9): [True: 0, False: 112]
  ------------------
 1463|      0|        Py_BEGIN_CRITICAL_SECTION(self);
  ------------------
  |  |   51|      0|    {
  ------------------
 1464|      0|        res = list_inplace_repeat_lock_held(self, 2);
 1465|      0|        Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|      0|    }
  ------------------
 1466|      0|    }
 1467|    112|    else if (PyList_CheckExact(iterable)) {
  ------------------
  |  |   26|    112|#define PyList_CheckExact(op) Py_IS_TYPE((op), &PyList_Type)
  |  |  ------------------
  |  |  |  |  215|    112|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    112|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    112|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 36, False: 76]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1468|     36|        Py_BEGIN_CRITICAL_SECTION2(self, iterable);
  ------------------
  |  |   57|     36|    {
  ------------------
 1469|     36|        res = list_extend_lock_held(self, iterable);
 1470|     36|        Py_END_CRITICAL_SECTION2();
  ------------------
  |  |   61|     36|    }
  ------------------
 1471|     36|    }
 1472|     76|    else if (PyTuple_CheckExact(iterable)) {
  ------------------
  |  |   28|     76|#define PyTuple_CheckExact(op) Py_IS_TYPE((op), &PyTuple_Type)
  |  |  ------------------
  |  |  |  |  215|     76|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     76|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     76|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 36, False: 40]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1473|     36|        Py_BEGIN_CRITICAL_SECTION(self);
  ------------------
  |  |   51|     36|    {
  ------------------
 1474|     36|        res = list_extend_lock_held(self, iterable);
 1475|     36|        Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|     36|    }
  ------------------
 1476|     36|    }
 1477|     40|    else if (PyAnySet_CheckExact(iterable)) {
  ------------------
  |  |   29|     40|    (Py_IS_TYPE((ob), &PySet_Type) || Py_IS_TYPE((ob), &PyFrozenSet_Type))
  |  |  ------------------
  |  |  |  |  215|     80|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     40|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     40|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 40]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (Py_IS_TYPE((ob), &PySet_Type) || Py_IS_TYPE((ob), &PyFrozenSet_Type))
  |  |  ------------------
  |  |  |  |  215|     40|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     40|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     40|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 40]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1478|      0|        Py_BEGIN_CRITICAL_SECTION2(self, iterable);
  ------------------
  |  |   57|      0|    {
  ------------------
 1479|      0|        res = list_extend_set(self, (PySetObject *)iterable);
 1480|      0|        Py_END_CRITICAL_SECTION2();
  ------------------
  |  |   61|      0|    }
  ------------------
 1481|      0|    }
 1482|     40|    else if (PyDict_CheckExact(iterable)) {
  ------------------
  |  |   19|     40|#define PyDict_CheckExact(op) Py_IS_TYPE((op), &PyDict_Type)
  |  |  ------------------
  |  |  |  |  215|     40|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     40|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     40|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 40]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1483|      0|        Py_BEGIN_CRITICAL_SECTION2(self, iterable);
  ------------------
  |  |   57|      0|    {
  ------------------
 1484|      0|        res = list_extend_dict(self, (PyDictObject *)iterable, 0 /*keys*/);
 1485|      0|        Py_END_CRITICAL_SECTION2();
  ------------------
  |  |   61|      0|    }
  ------------------
 1486|      0|    }
 1487|     40|    else if (Py_IS_TYPE(iterable, &PyDictKeys_Type)) {
  ------------------
  |  |  215|     40|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|     40|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     40|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 0, False: 40]
  |  |  ------------------
  ------------------
 1488|      0|        PyDictObject *dict = ((_PyDictViewObject *)iterable)->dv_dict;
 1489|      0|        Py_BEGIN_CRITICAL_SECTION2(self, dict);
  ------------------
  |  |   57|      0|    {
  ------------------
 1490|      0|        res = list_extend_dict(self, dict, 0 /*keys*/);
 1491|      0|        Py_END_CRITICAL_SECTION2();
  ------------------
  |  |   61|      0|    }
  ------------------
 1492|      0|    }
 1493|     40|    else if (Py_IS_TYPE(iterable, &PyDictValues_Type)) {
  ------------------
  |  |  215|     40|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|     40|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     40|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 0, False: 40]
  |  |  ------------------
  ------------------
 1494|      0|        PyDictObject *dict = ((_PyDictViewObject *)iterable)->dv_dict;
 1495|      0|        Py_BEGIN_CRITICAL_SECTION2(self, dict);
  ------------------
  |  |   57|      0|    {
  ------------------
 1496|      0|        res = list_extend_dict(self, dict, 1 /*values*/);
 1497|      0|        Py_END_CRITICAL_SECTION2();
  ------------------
  |  |   61|      0|    }
  ------------------
 1498|      0|    }
 1499|     40|    else if (Py_IS_TYPE(iterable, &PyDictItems_Type)) {
  ------------------
  |  |  215|     40|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|     40|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     40|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 0, False: 40]
  |  |  ------------------
  ------------------
 1500|      0|        PyDictObject *dict = ((_PyDictViewObject *)iterable)->dv_dict;
 1501|      0|        Py_BEGIN_CRITICAL_SECTION2(self, dict);
  ------------------
  |  |   57|      0|    {
  ------------------
 1502|      0|        res = list_extend_dictitems(self, dict);
 1503|      0|        Py_END_CRITICAL_SECTION2();
  ------------------
  |  |   61|      0|    }
  ------------------
 1504|      0|    }
 1505|     40|    else {
 1506|     40|        Py_BEGIN_CRITICAL_SECTION(self);
  ------------------
  |  |   51|     40|    {
  ------------------
 1507|     40|        res = list_extend_iter_lock_held(self, iterable);
 1508|     40|        Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|     40|    }
  ------------------
 1509|     40|    }
 1510|    112|    return res;
 1511|    112|}
listobject.c:list_extend_lock_held:
 1356|     72|{
 1357|     72|    PyObject *seq = PySequence_Fast(iterable, "argument must be iterable");
 1358|     72|    if (!seq) {
  ------------------
  |  Branch (1358:9): [True: 0, False: 72]
  ------------------
 1359|      0|        return -1;
 1360|      0|    }
 1361|       |
 1362|     72|    int res = list_extend_fast(self, seq);
 1363|     72|    Py_DECREF(seq);
  ------------------
  |  |  430|     72|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     72|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     72|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1364|     72|    return res;
 1365|     72|}
listobject.c:list_extend_fast:
 1243|     72|{
 1244|     72|    Py_ssize_t n = PySequence_Fast_GET_SIZE(iterable);
  ------------------
  |  |   92|     72|    (PyList_Check(o) ? PyList_GET_SIZE(o) : PyTuple_GET_SIZE(o))
  |  |  ------------------
  |  |  |  |   25|     72|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LIST_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|     72|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (760:41): [True: 36, False: 36]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (PyList_Check(o) ? PyList_GET_SIZE(o) : PyTuple_GET_SIZE(o))
  |  |  ------------------
  |  |  |  |   38|     36|#define PyList_GET_SIZE(op) PyList_GET_SIZE(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     36|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     36|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (PyList_Check(o) ? PyList_GET_SIZE(o) : PyTuple_GET_SIZE(o))
  |  |  ------------------
  |  |  |  |   27|     36|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     36|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     36|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1245|     72|    if (n == 0) {
  ------------------
  |  Branch (1245:9): [True: 0, False: 72]
  ------------------
 1246|       |        /* short circuit when iterable is empty */
 1247|      0|        return 0;
 1248|      0|    }
 1249|       |
 1250|     72|    Py_ssize_t m = Py_SIZE(self);
  ------------------
  |  |  214|     72|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     72|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     72|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1251|       |    // It should not be possible to allocate a list large enough to cause
 1252|       |    // an overflow on any relevant platform.
 1253|     72|    assert(m < PY_SSIZE_T_MAX - n);
  ------------------
  |  Branch (1253:5): [True: 72, False: 0]
  ------------------
 1254|     72|    if (self->ob_item == NULL) {
  ------------------
  |  Branch (1254:9): [True: 59, False: 13]
  ------------------
 1255|     59|        if (list_preallocate_exact(self, n) < 0) {
  ------------------
  |  Branch (1255:13): [True: 0, False: 59]
  ------------------
 1256|      0|            return -1;
 1257|      0|        }
 1258|     59|        Py_SET_SIZE(self, n);
  ------------------
  |  |  216|     59|#  define Py_SET_SIZE(ob, size) _Py_SET_SIZE_impl(_PyVarObject_CAST(ob), (size))
  |  |  ------------------
  |  |  |  |  182|     59|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     59|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1259|     59|    }
 1260|     13|    else if (list_resize(self, m + n) < 0) {
  ------------------
  |  Branch (1260:14): [True: 0, False: 13]
  ------------------
 1261|      0|        return -1;
 1262|      0|    }
 1263|       |
 1264|       |    // note that we may still have self == iterable here for the
 1265|       |    // situation a.extend(a), but the following code works
 1266|       |    // in that case too.  Just make sure to resize self
 1267|       |    // before calling PySequence_Fast_ITEMS.
 1268|       |    //
 1269|       |    // populate the end of self with iterable's items.
 1270|     72|    PyObject **src = PySequence_Fast_ITEMS(iterable);
  ------------------
  |  |  102|     72|    (PyList_Check(sf) ? ((PyListObject *)(sf))->ob_item \
  |  |  ------------------
  |  |  |  |   25|     72|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LIST_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|     72|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (760:41): [True: 36, False: 36]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|     72|                      : ((PyTupleObject *)(sf))->ob_item)
  ------------------
 1271|     72|    PyObject **dest = self->ob_item + m;
 1272|  1.09k|    for (Py_ssize_t i = 0; i < n; i++) {
  ------------------
  |  Branch (1272:28): [True: 1.01k, False: 72]
  ------------------
 1273|  1.01k|        PyObject *o = src[i];
 1274|  1.01k|        FT_ATOMIC_STORE_PTR_RELEASE(dest[i], Py_NewRef(o));
  ------------------
  |  |  164|  1.01k|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  ------------------
 1275|  1.01k|    }
 1276|     72|    return 0;
 1277|     72|}
listobject.c:list_preallocate_exact:
  199|     93|{
  200|     93|    PyObject **items;
  201|     93|    assert(self->ob_item == NULL);
  ------------------
  |  Branch (201:5): [True: 93, False: 0]
  ------------------
  202|     93|    assert(size > 0);
  ------------------
  |  Branch (202:5): [True: 93, False: 0]
  ------------------
  203|       |
  204|       |    /* Since the Python memory allocator has granularity of 16 bytes on 64-bit
  205|       |     * platforms (8 on 32-bit), there is no benefit of allocating space for
  206|       |     * the odd number of items, and there is no drawback of rounding the
  207|       |     * allocated size up to the nearest even number.
  208|       |     */
  209|     93|    size = (size + 1) & ~(size_t)1;
  210|       |#ifdef Py_GIL_DISABLED
  211|       |    _PyListArray *array = list_allocate_array(size);
  212|       |    if (array == NULL) {
  213|       |        PyErr_NoMemory();
  214|       |        return -1;
  215|       |    }
  216|       |    items = array->ob_item;
  217|       |    memset(items, 0, size * sizeof(PyObject *));
  218|       |#else
  219|     93|    items = PyMem_New(PyObject*, size);
  ------------------
  |  |   64|     93|  ( ((size_t)(n) > PY_SSIZE_T_MAX / sizeof(type)) ? NULL :      \
  |  |  ------------------
  |  |  |  |  137|     93|#   define PY_SSIZE_T_MAX SSIZE_MAX
  |  |  ------------------
  |  |  |  Branch (64:5): [True: 0, False: 93]
  |  |  ------------------
  |  |   65|     93|        ( (type *) PyMem_Malloc((n) * sizeof(type)) ) )
  ------------------
  220|     93|    if (items == NULL) {
  ------------------
  |  Branch (220:9): [True: 0, False: 93]
  ------------------
  221|      0|        PyErr_NoMemory();
  222|      0|        return -1;
  223|      0|    }
  224|     93|#endif
  225|     93|    FT_ATOMIC_STORE_PTR_RELEASE(self->ob_item, items);
  ------------------
  |  |  164|     93|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  ------------------
  226|     93|    self->allocated = size;
  227|     93|    return 0;
  228|     93|}
listobject.c:list_extend_iter_lock_held:
 1281|     40|{
 1282|     40|    PyObject *it = PyObject_GetIter(iterable);
 1283|     40|    if (it == NULL) {
  ------------------
  |  Branch (1283:9): [True: 0, False: 40]
  ------------------
 1284|      0|        return -1;
 1285|      0|    }
 1286|     40|    PyObject *(*iternext)(PyObject *) = *Py_TYPE(it)->tp_iternext;
  ------------------
  |  |  213|     40|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     40|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     40|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1287|       |
 1288|       |    /* Guess a result list size. */
 1289|     40|    Py_ssize_t n = PyObject_LengthHint(iterable, 8);
 1290|     40|    if (n < 0) {
  ------------------
  |  Branch (1290:9): [True: 0, False: 40]
  ------------------
 1291|      0|        Py_DECREF(it);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1292|      0|        return -1;
 1293|      0|    }
 1294|       |
 1295|     40|    Py_ssize_t m = Py_SIZE(self);
  ------------------
  |  |  214|     40|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     40|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     40|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1296|     40|    if (m > PY_SSIZE_T_MAX - n) {
  ------------------
  |  |  137|     40|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (1296:9): [True: 0, False: 40]
  ------------------
 1297|       |        /* m + n overflowed; on the chance that n lied, and there really
 1298|       |         * is enough room, ignore it.  If n was telling the truth, we'll
 1299|       |         * eventually run out of memory during the loop.
 1300|       |         */
 1301|      0|    }
 1302|     40|    else if (self->ob_item == NULL) {
  ------------------
  |  Branch (1302:14): [True: 34, False: 6]
  ------------------
 1303|     34|        if (n && list_preallocate_exact(self, n) < 0)
  ------------------
  |  Branch (1303:13): [True: 34, False: 0]
  |  Branch (1303:18): [True: 0, False: 34]
  ------------------
 1304|      0|            goto error;
 1305|     34|    }
 1306|      6|    else {
 1307|       |        /* Make room. */
 1308|      6|        if (list_resize(self, m + n) < 0) {
  ------------------
  |  Branch (1308:13): [True: 0, False: 6]
  ------------------
 1309|      0|            goto error;
 1310|      0|        }
 1311|       |
 1312|       |        /* Make the list sane again. */
 1313|      6|        Py_SET_SIZE(self, m);
  ------------------
  |  |  216|      6|#  define Py_SET_SIZE(ob, size) _Py_SET_SIZE_impl(_PyVarObject_CAST(ob), (size))
  |  |  ------------------
  |  |  |  |  182|      6|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1314|      6|    }
 1315|       |
 1316|       |    /* Run iterator to exhaustion. */
 1317|    338|    for (;;) {
 1318|    338|        PyObject *item = iternext(it);
 1319|    338|        if (item == NULL) {
  ------------------
  |  Branch (1319:13): [True: 40, False: 298]
  ------------------
 1320|     40|            if (PyErr_Occurred()) {
  ------------------
  |  Branch (1320:17): [True: 0, False: 40]
  ------------------
 1321|      0|                if (PyErr_ExceptionMatches(PyExc_StopIteration))
  ------------------
  |  Branch (1321:21): [True: 0, False: 0]
  ------------------
 1322|      0|                    PyErr_Clear();
 1323|      0|                else
 1324|      0|                    goto error;
 1325|      0|            }
 1326|     40|            break;
 1327|     40|        }
 1328|       |
 1329|    298|        if (Py_SIZE(self) < self->allocated) {
  ------------------
  |  |  214|    298|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    298|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    298|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1329:13): [True: 298, False: 0]
  ------------------
 1330|    298|            Py_ssize_t len = Py_SIZE(self);
  ------------------
  |  |  214|    298|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    298|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    298|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1331|    298|            FT_ATOMIC_STORE_PTR_RELEASE(self->ob_item[len], item);  // steals item ref
  ------------------
  |  |  164|    298|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  ------------------
 1332|    298|            Py_SET_SIZE(self, len + 1);
  ------------------
  |  |  216|    298|#  define Py_SET_SIZE(ob, size) _Py_SET_SIZE_impl(_PyVarObject_CAST(ob), (size))
  |  |  ------------------
  |  |  |  |  182|    298|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    298|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1333|    298|        }
 1334|      0|        else {
 1335|      0|            if (_PyList_AppendTakeRef(self, item) < 0)
  ------------------
  |  Branch (1335:17): [True: 0, False: 0]
  ------------------
 1336|      0|                goto error;
 1337|      0|        }
 1338|    298|    }
 1339|       |
 1340|       |    /* Cut back result list if initial guess was too large. */
 1341|     40|    if (Py_SIZE(self) < self->allocated) {
  ------------------
  |  |  214|     40|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     40|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     40|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1341:9): [True: 23, False: 17]
  ------------------
 1342|     23|        if (list_resize(self, Py_SIZE(self)) < 0)
  ------------------
  |  |  214|     23|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     23|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     23|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1342:13): [True: 0, False: 23]
  ------------------
 1343|      0|            goto error;
 1344|     23|    }
 1345|       |
 1346|     40|    Py_DECREF(it);
  ------------------
  |  |  430|     40|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     40|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     40|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1347|     40|    return 0;
 1348|       |
 1349|      0|  error:
 1350|      0|    Py_DECREF(it);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1351|      0|    return -1;
 1352|     40|}
listobject.c:list_clear:
  904|     58|{
  905|       |    list_clear_impl(a, true);
  906|     58|}
listobject.c:list_clear_impl:
  874|     58|{
  875|     58|    PyObject **items = a->ob_item;
  876|     58|    if (items == NULL) {
  ------------------
  |  Branch (876:9): [True: 0, False: 58]
  ------------------
  877|      0|        return;
  878|      0|    }
  879|       |
  880|       |    /* Because XDECREF can recursively invoke operations on
  881|       |       this list, we make it empty first. */
  882|     58|    Py_ssize_t i = Py_SIZE(a);
  ------------------
  |  |  214|     58|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     58|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     58|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  883|     58|    Py_SET_SIZE(a, 0);
  ------------------
  |  |  216|     58|#  define Py_SET_SIZE(ob, size) _Py_SET_SIZE_impl(_PyVarObject_CAST(ob), (size))
  |  |  ------------------
  |  |  |  |  182|     58|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     58|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  884|     58|    FT_ATOMIC_STORE_PTR_RELEASE(a->ob_item, NULL);
  ------------------
  |  |  164|     58|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  ------------------
  885|     58|    a->allocated = 0;
  886|    117|    while (--i >= 0) {
  ------------------
  |  Branch (886:12): [True: 59, False: 58]
  ------------------
  887|     59|        Py_XDECREF(items[i]);
  ------------------
  |  |  524|     59|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     59|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     59|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  888|     59|    }
  889|       |#ifdef Py_GIL_DISABLED
  890|       |    if (is_resize) {
  891|       |        ensure_shared_on_resize(a);
  892|       |    }
  893|       |    bool use_qsbr = is_resize && _PyObject_GC_IS_SHARED(a);
  894|       |#else
  895|     58|    bool use_qsbr = false;
  896|     58|#endif
  897|     58|    free_list_items(items, use_qsbr);
  898|       |    // Note that there is no guarantee that the list is actually empty
  899|       |    // at this point, because XDECREF may have populated it indirectly again!
  900|     58|}
listobject.c:free_list_items:
   60|    251|{
   61|       |#ifdef Py_GIL_DISABLED
   62|       |    _PyListArray *array = _Py_CONTAINER_OF(items, _PyListArray, ob_item);
   63|       |    if (use_qsbr) {
   64|       |        size_t size = sizeof(_PyListArray) + array->allocated * sizeof(PyObject *);
   65|       |        _PyMem_FreeDelayed(array, size);
   66|       |    }
   67|       |    else {
   68|       |        PyMem_Free(array);
   69|       |    }
   70|       |#else
   71|    251|    PyMem_Free(items);
   72|    251|#endif
   73|    251|}
listobject.c:list_sort_impl:
 2947|     36|{
 2948|     36|    MergeState ms;
 2949|     36|    Py_ssize_t nremaining;
 2950|     36|    Py_ssize_t minrun;
 2951|     36|    sortslice lo;
 2952|     36|    Py_ssize_t saved_ob_size, saved_allocated;
 2953|     36|    PyObject **saved_ob_item;
 2954|     36|    PyObject **final_ob_item;
 2955|     36|    PyObject *result = NULL;            /* guilty until proved innocent */
 2956|     36|    Py_ssize_t i;
 2957|     36|    PyObject **keys;
 2958|       |
 2959|     36|    assert(self != NULL);
  ------------------
  |  Branch (2959:5): [True: 36, False: 0]
  ------------------
 2960|     36|    assert(PyList_Check(self));
  ------------------
  |  Branch (2960:5): [True: 36, False: 0]
  ------------------
 2961|     36|    if (keyfunc == Py_None)
  ------------------
  |  |  616|     36|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (2961:9): [True: 2, False: 34]
  ------------------
 2962|      2|        keyfunc = NULL;
 2963|       |
 2964|       |    /* The list is temporarily made empty, so that mutations performed
 2965|       |     * by comparison functions can't affect the slice of memory we're
 2966|       |     * sorting (allowing mutations during sorting is a core-dump
 2967|       |     * factory, since ob_item may change).
 2968|       |     */
 2969|     36|    saved_ob_size = Py_SIZE(self);
  ------------------
  |  |  214|     36|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     36|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     36|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2970|     36|    saved_ob_item = self->ob_item;
 2971|     36|    saved_allocated = self->allocated;
 2972|     36|    Py_SET_SIZE(self, 0);
  ------------------
  |  |  216|     36|#  define Py_SET_SIZE(ob, size) _Py_SET_SIZE_impl(_PyVarObject_CAST(ob), (size))
  |  |  ------------------
  |  |  |  |  182|     36|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     36|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2973|     36|    FT_ATOMIC_STORE_PTR_RELEASE(self->ob_item, NULL);
  ------------------
  |  |  164|     36|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  ------------------
 2974|     36|    self->allocated = -1; /* any operation will reset it to >= 0 */
 2975|       |
 2976|     36|    if (keyfunc == NULL) {
  ------------------
  |  Branch (2976:9): [True: 36, False: 0]
  ------------------
 2977|     36|        keys = NULL;
 2978|     36|        lo.keys = saved_ob_item;
 2979|     36|        lo.values = NULL;
 2980|     36|    }
 2981|      0|    else {
 2982|      0|        if (saved_ob_size < MERGESTATE_TEMP_SIZE/2)
  ------------------
  |  | 1731|      0|#define MERGESTATE_TEMP_SIZE 256
  ------------------
  |  Branch (2982:13): [True: 0, False: 0]
  ------------------
 2983|       |            /* Leverage stack space we allocated but won't otherwise use */
 2984|      0|            keys = &ms.temparray[saved_ob_size+1];
 2985|      0|        else {
 2986|      0|            keys = PyMem_Malloc(sizeof(PyObject *) * saved_ob_size);
 2987|      0|            if (keys == NULL) {
  ------------------
  |  Branch (2987:17): [True: 0, False: 0]
  ------------------
 2988|      0|                PyErr_NoMemory();
 2989|      0|                goto keyfunc_fail;
 2990|      0|            }
 2991|      0|        }
 2992|       |
 2993|      0|        for (i = 0; i < saved_ob_size ; i++) {
  ------------------
  |  Branch (2993:21): [True: 0, False: 0]
  ------------------
 2994|      0|            keys[i] = PyObject_CallOneArg(keyfunc, saved_ob_item[i]);
 2995|      0|            if (keys[i] == NULL) {
  ------------------
  |  Branch (2995:17): [True: 0, False: 0]
  ------------------
 2996|      0|                for (i=i-1 ; i>=0 ; i--)
  ------------------
  |  Branch (2996:30): [True: 0, False: 0]
  ------------------
 2997|      0|                    Py_DECREF(keys[i]);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2998|      0|                if (saved_ob_size >= MERGESTATE_TEMP_SIZE/2)
  ------------------
  |  | 1731|      0|#define MERGESTATE_TEMP_SIZE 256
  ------------------
  |  Branch (2998:21): [True: 0, False: 0]
  ------------------
 2999|      0|                    PyMem_Free(keys);
 3000|      0|                goto keyfunc_fail;
 3001|      0|            }
 3002|      0|        }
 3003|       |
 3004|      0|        lo.keys = keys;
 3005|      0|        lo.values = saved_ob_item;
 3006|      0|    }
 3007|       |
 3008|       |
 3009|       |    /* The pre-sort check: here's where we decide which compare function to use.
 3010|       |     * How much optimization is safe? We test for homogeneity with respect to
 3011|       |     * several properties that are expensive to check at compare-time, and
 3012|       |     * set ms appropriately. */
 3013|     36|    if (saved_ob_size > 1) {
  ------------------
  |  Branch (3013:9): [True: 3, False: 33]
  ------------------
 3014|       |        /* Assume the first element is representative of the whole list. */
 3015|      3|        int keys_are_in_tuples = (Py_IS_TYPE(lo.keys[0], &PyTuple_Type) &&
  ------------------
  |  |  215|      6|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 0, False: 3]
  |  |  ------------------
  ------------------
 3016|      0|                                  Py_SIZE(lo.keys[0]) > 0);
  ------------------
  |  |  214|      0|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3016:35): [True: 0, False: 0]
  ------------------
 3017|       |
 3018|      3|        PyTypeObject* key_type = (keys_are_in_tuples ?
  ------------------
  |  Branch (3018:35): [True: 0, False: 3]
  ------------------
 3019|      0|                                  Py_TYPE(PyTuple_GET_ITEM(lo.keys[0], 0)) :
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (37:38): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3020|      3|                                  Py_TYPE(lo.keys[0]));
  ------------------
  |  |  213|      3|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3021|       |
 3022|      3|        int keys_are_all_same_type = 1;
 3023|      3|        int strings_are_latin = 1;
 3024|      3|        int ints_are_bounded = 1;
 3025|       |
 3026|       |        /* Prove that assumption by checking every key. */
 3027|    420|        for (i=0; i < saved_ob_size; i++) {
  ------------------
  |  Branch (3027:19): [True: 417, False: 3]
  ------------------
 3028|       |
 3029|    417|            if (keys_are_in_tuples &&
  ------------------
  |  Branch (3029:17): [True: 0, False: 417]
  ------------------
 3030|      0|                !(Py_IS_TYPE(lo.keys[i], &PyTuple_Type) && Py_SIZE(lo.keys[i]) != 0)) {
  ------------------
  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
                              !(Py_IS_TYPE(lo.keys[i], &PyTuple_Type) && Py_SIZE(lo.keys[i]) != 0)) {
  ------------------
  |  |  214|      0|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3030:60): [True: 0, False: 0]
  ------------------
 3031|      0|                keys_are_in_tuples = 0;
 3032|      0|                keys_are_all_same_type = 0;
 3033|      0|                break;
 3034|      0|            }
 3035|       |
 3036|       |            /* Note: for lists of tuples, key is the first element of the tuple
 3037|       |             * lo.keys[i], not lo.keys[i] itself! We verify type-homogeneity
 3038|       |             * for lists of tuples in the if-statement directly above. */
 3039|    417|            PyObject *key = (keys_are_in_tuples ?
  ------------------
  |  Branch (3039:30): [True: 0, False: 417]
  ------------------
 3040|      0|                             PyTuple_GET_ITEM(lo.keys[i], 0) :
  ------------------
  |  |   29|      0|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|      0|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3040:30): [True: 0, False: 0]
  ------------------
 3041|    417|                             lo.keys[i]);
 3042|       |
 3043|    417|            if (!Py_IS_TYPE(key, key_type)) {
  ------------------
  |  |  215|    417|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|    417|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    417|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3043:17): [True: 0, False: 417]
  ------------------
 3044|      0|                keys_are_all_same_type = 0;
 3045|       |                /* If keys are in tuple we must loop over the whole list to make
 3046|       |                   sure all items are tuples */
 3047|      0|                if (!keys_are_in_tuples) {
  ------------------
  |  Branch (3047:21): [True: 0, False: 0]
  ------------------
 3048|      0|                    break;
 3049|      0|                }
 3050|      0|            }
 3051|       |
 3052|    417|            if (keys_are_all_same_type) {
  ------------------
  |  Branch (3052:17): [True: 417, False: 0]
  ------------------
 3053|    417|                if (key_type == &PyLong_Type &&
  ------------------
  |  Branch (3053:21): [True: 0, False: 417]
  ------------------
 3054|      0|                    ints_are_bounded &&
  ------------------
  |  Branch (3054:21): [True: 0, False: 0]
  ------------------
 3055|      0|                    !_PyLong_IsCompact((PyLongObject *)key)) {
  ------------------
  |  Branch (3055:21): [True: 0, False: 0]
  ------------------
 3056|       |
 3057|      0|                    ints_are_bounded = 0;
 3058|      0|                }
 3059|    417|                else if (key_type == &PyUnicode_Type &&
  ------------------
  |  Branch (3059:26): [True: 417, False: 0]
  ------------------
 3060|    417|                         strings_are_latin &&
  ------------------
  |  Branch (3060:26): [True: 417, False: 0]
  ------------------
 3061|    834|                         PyUnicode_KIND(key) != PyUnicode_1BYTE_KIND) {
  ------------------
  |  |  258|    417|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|    834|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 417, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3061:26): [True: 0, False: 417]
  ------------------
 3062|       |
 3063|      0|                        strings_are_latin = 0;
 3064|      0|                    }
 3065|    417|                }
 3066|    417|            }
 3067|       |
 3068|       |        /* Choose the best compare, given what we now know about the keys. */
 3069|      3|        if (keys_are_all_same_type) {
  ------------------
  |  Branch (3069:13): [True: 3, False: 0]
  ------------------
 3070|       |
 3071|      3|            if (key_type == &PyUnicode_Type && strings_are_latin) {
  ------------------
  |  Branch (3071:17): [True: 3, False: 0]
  |  Branch (3071:48): [True: 3, False: 0]
  ------------------
 3072|      3|                ms.key_compare = unsafe_latin_compare;
 3073|      3|            }
 3074|      0|            else if (key_type == &PyLong_Type && ints_are_bounded) {
  ------------------
  |  Branch (3074:22): [True: 0, False: 0]
  |  Branch (3074:50): [True: 0, False: 0]
  ------------------
 3075|      0|                ms.key_compare = unsafe_long_compare;
 3076|      0|            }
 3077|      0|            else if (key_type == &PyFloat_Type) {
  ------------------
  |  Branch (3077:22): [True: 0, False: 0]
  ------------------
 3078|      0|                ms.key_compare = unsafe_float_compare;
 3079|      0|            }
 3080|      0|            else if ((ms.key_richcompare = key_type->tp_richcompare) != NULL) {
  ------------------
  |  Branch (3080:22): [True: 0, False: 0]
  ------------------
 3081|      0|                ms.key_compare = unsafe_object_compare;
 3082|      0|            }
 3083|      0|            else {
 3084|      0|                ms.key_compare = safe_object_compare;
 3085|      0|            }
 3086|      3|        }
 3087|      0|        else {
 3088|      0|            ms.key_compare = safe_object_compare;
 3089|      0|        }
 3090|       |
 3091|      3|        if (keys_are_in_tuples) {
  ------------------
  |  Branch (3091:13): [True: 0, False: 3]
  ------------------
 3092|       |            /* Make sure we're not dealing with tuples of tuples
 3093|       |             * (remember: here, key_type refers list [key[0] for key in keys]) */
 3094|      0|            if (key_type == &PyTuple_Type) {
  ------------------
  |  Branch (3094:17): [True: 0, False: 0]
  ------------------
 3095|      0|                ms.tuple_elem_compare = safe_object_compare;
 3096|      0|            }
 3097|      0|            else {
 3098|      0|                ms.tuple_elem_compare = ms.key_compare;
 3099|      0|            }
 3100|       |
 3101|      0|            ms.key_compare = unsafe_tuple_compare;
 3102|      0|        }
 3103|      3|    }
 3104|       |    /* End of pre-sort check: ms is now set properly! */
 3105|       |
 3106|     36|    merge_init(&ms, saved_ob_size, keys != NULL, &lo);
 3107|       |
 3108|     36|    nremaining = saved_ob_size;
 3109|     36|    if (nremaining < 2)
  ------------------
  |  Branch (3109:9): [True: 33, False: 3]
  ------------------
 3110|     33|        goto succeed;
 3111|       |
 3112|       |    /* Reverse sort stability achieved by initially reversing the list,
 3113|       |    applying a stable forward sort, then reversing the final result. */
 3114|      3|    if (reverse) {
  ------------------
  |  Branch (3114:9): [True: 0, False: 3]
  ------------------
 3115|      0|        if (keys != NULL)
  ------------------
  |  Branch (3115:13): [True: 0, False: 0]
  ------------------
 3116|      0|            reverse_slice(&keys[0], &keys[saved_ob_size]);
 3117|      0|        reverse_slice(&saved_ob_item[0], &saved_ob_item[saved_ob_size]);
 3118|      0|    }
 3119|       |
 3120|       |    /* March over the array once, left to right, finding natural runs,
 3121|       |     * and extending short natural runs to minrun elements.
 3122|       |     */
 3123|     10|    do {
 3124|     10|        Py_ssize_t n;
 3125|       |
 3126|       |        /* Identify next run. */
 3127|     10|        n = count_run(&ms, &lo, nremaining);
 3128|     10|        if (n < 0)
  ------------------
  |  Branch (3128:13): [True: 0, False: 10]
  ------------------
 3129|      0|            goto fail;
 3130|       |        /* If short, extend to min(minrun, nremaining). */
 3131|     10|        minrun = minrun_next(&ms);
 3132|     10|        if (n < minrun) {
  ------------------
  |  Branch (3132:13): [True: 9, False: 1]
  ------------------
 3133|      9|            const Py_ssize_t force = nremaining <= minrun ?
  ------------------
  |  Branch (3133:38): [True: 2, False: 7]
  ------------------
 3134|      7|                              nremaining : minrun;
 3135|      9|            if (binarysort(&ms, &lo, force, n) < 0)
  ------------------
  |  Branch (3135:17): [True: 0, False: 9]
  ------------------
 3136|      0|                goto fail;
 3137|      9|            n = force;
 3138|      9|        }
 3139|       |        /* Maybe merge pending runs. */
 3140|     10|        assert(ms.n == 0 || ms.pending[ms.n -1].base.keys +
  ------------------
  |  Branch (3140:9): [True: 3, False: 7]
  |  Branch (3140:9): [True: 7, False: 0]
  ------------------
 3141|     10|                            ms.pending[ms.n-1].len == lo.keys);
 3142|     10|        if (found_new_run(&ms, n) < 0)
  ------------------
  |  Branch (3142:13): [True: 0, False: 10]
  ------------------
 3143|      0|            goto fail;
 3144|       |        /* Push new run on stack. */
 3145|     10|        assert(ms.n < MAX_MERGE_PENDING);
  ------------------
  |  Branch (3145:9): [True: 10, False: 0]
  ------------------
 3146|     10|        ms.pending[ms.n].base = lo;
 3147|     10|        ms.pending[ms.n].len = n;
 3148|     10|        ++ms.n;
 3149|       |        /* Advance to find next run. */
 3150|     10|        sortslice_advance(&lo, n);
 3151|     10|        nremaining -= n;
 3152|     10|    } while (nremaining);
  ------------------
  |  Branch (3152:14): [True: 7, False: 3]
  ------------------
 3153|       |
 3154|      3|    if (merge_force_collapse(&ms) < 0)
  ------------------
  |  Branch (3154:9): [True: 0, False: 3]
  ------------------
 3155|      0|        goto fail;
 3156|      3|    assert(ms.n == 1);
  ------------------
  |  Branch (3156:5): [True: 3, False: 0]
  ------------------
 3157|      3|    assert(keys == NULL
  ------------------
  |  Branch (3157:5): [True: 3, False: 0]
  |  Branch (3157:5): [True: 3, False: 0]
  ------------------
 3158|      3|           ? ms.pending[0].base.keys == saved_ob_item
 3159|      3|           : ms.pending[0].base.keys == &keys[0]);
 3160|      3|    assert(ms.pending[0].len == saved_ob_size);
  ------------------
  |  Branch (3160:5): [True: 3, False: 0]
  ------------------
 3161|      3|    lo = ms.pending[0].base;
 3162|       |
 3163|     36|succeed:
 3164|     36|    result = Py_None;
  ------------------
  |  |  616|     36|#  define Py_None (&_Py_NoneStruct)
  ------------------
 3165|     36|fail:
 3166|     36|    if (keys != NULL) {
  ------------------
  |  Branch (3166:9): [True: 0, False: 36]
  ------------------
 3167|      0|        for (i = 0; i < saved_ob_size; i++)
  ------------------
  |  Branch (3167:21): [True: 0, False: 0]
  ------------------
 3168|      0|            Py_DECREF(keys[i]);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3169|      0|        if (saved_ob_size >= MERGESTATE_TEMP_SIZE/2)
  ------------------
  |  | 1731|      0|#define MERGESTATE_TEMP_SIZE 256
  ------------------
  |  Branch (3169:13): [True: 0, False: 0]
  ------------------
 3170|      0|            PyMem_Free(keys);
 3171|      0|    }
 3172|       |
 3173|     36|    if (self->allocated != -1 && result != NULL) {
  ------------------
  |  Branch (3173:9): [True: 0, False: 36]
  |  Branch (3173:34): [True: 0, False: 0]
  ------------------
 3174|       |        /* The user mucked with the list during the sort,
 3175|       |         * and we don't already have another error to report.
 3176|       |         */
 3177|      0|        PyErr_SetString(PyExc_ValueError, "list modified during sort");
 3178|      0|        result = NULL;
 3179|      0|    }
 3180|       |
 3181|     36|    if (reverse && saved_ob_size > 1)
  ------------------
  |  Branch (3181:9): [True: 0, False: 36]
  |  Branch (3181:20): [True: 0, False: 0]
  ------------------
 3182|      0|        reverse_slice(saved_ob_item, saved_ob_item + saved_ob_size);
 3183|       |
 3184|     36|    merge_freemem(&ms);
 3185|       |
 3186|     36|keyfunc_fail:
 3187|     36|    final_ob_item = self->ob_item;
 3188|     36|    i = Py_SIZE(self);
  ------------------
  |  |  214|     36|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     36|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     36|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3189|     36|    Py_SET_SIZE(self, saved_ob_size);
  ------------------
  |  |  216|     36|#  define Py_SET_SIZE(ob, size) _Py_SET_SIZE_impl(_PyVarObject_CAST(ob), (size))
  |  |  ------------------
  |  |  |  |  182|     36|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     36|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3190|     36|    FT_ATOMIC_STORE_PTR_RELEASE(self->ob_item, saved_ob_item);
  ------------------
  |  |  164|     36|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  ------------------
 3191|     36|    FT_ATOMIC_STORE_SSIZE_RELAXED(self->allocated, saved_allocated);
  ------------------
  |  |  194|     36|#define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) value = new_value
  ------------------
 3192|     36|    if (final_ob_item != NULL) {
  ------------------
  |  Branch (3192:9): [True: 0, False: 36]
  ------------------
 3193|       |        /* we cannot use list_clear() for this because it does not
 3194|       |           guarantee that the list is really empty when it returns */
 3195|      0|        while (--i >= 0) {
  ------------------
  |  Branch (3195:16): [True: 0, False: 0]
  ------------------
 3196|      0|            Py_XDECREF(final_ob_item[i]);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3197|      0|        }
 3198|       |#ifdef Py_GIL_DISABLED
 3199|       |        ensure_shared_on_resize(self);
 3200|       |        bool use_qsbr = _PyObject_GC_IS_SHARED(self);
 3201|       |#else
 3202|      0|        bool use_qsbr = false;
 3203|      0|#endif
 3204|      0|        free_list_items(final_ob_item, use_qsbr);
 3205|      0|    }
 3206|     36|    return Py_XNewRef(result);
  ------------------
  |  |  551|     36|#  define Py_XNewRef(obj) _Py_XNewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     36|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     36|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3207|     36|}
listobject.c:unsafe_latin_compare:
 2816|  2.55k|{
 2817|  2.55k|    Py_ssize_t len;
 2818|  2.55k|    int res;
 2819|       |
 2820|       |    /* Modified from Objects/unicodeobject.c:unicode_compare, assuming: */
 2821|  2.55k|    assert(Py_IS_TYPE(v, &PyUnicode_Type));
  ------------------
  |  Branch (2821:5): [True: 2.55k, False: 0]
  ------------------
 2822|  2.55k|    assert(Py_IS_TYPE(w, &PyUnicode_Type));
  ------------------
  |  Branch (2822:5): [True: 2.55k, False: 0]
  ------------------
 2823|  2.55k|    assert(PyUnicode_KIND(v) == PyUnicode_KIND(w));
  ------------------
  |  Branch (2823:5): [True: 2.55k, False: 0]
  |  Branch (2823:5): [True: 2.55k, False: 0]
  |  Branch (2823:5): [True: 2.55k, False: 0]
  ------------------
 2824|  2.55k|    assert(PyUnicode_KIND(v) == PyUnicode_1BYTE_KIND);
  ------------------
  |  Branch (2824:5): [True: 2.55k, False: 0]
  |  Branch (2824:5): [True: 2.55k, False: 0]
  ------------------
 2825|       |
 2826|  2.55k|    len = Py_MIN(PyUnicode_GET_LENGTH(v), PyUnicode_GET_LENGTH(w));
  ------------------
  |  |  112|  2.55k|#define Py_MIN(x, y) (((x) > (y)) ? (y) : (x))
  |  |  ------------------
  |  |  |  Branch (112:23): [True: 1.29k, False: 1.25k]
  |  |  ------------------
  ------------------
 2827|  2.55k|    res = memcmp(PyUnicode_DATA(v), PyUnicode_DATA(w), len);
  ------------------
  |  |  284|  2.55k|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  2.55k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.55k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  res = memcmp(PyUnicode_DATA(v), PyUnicode_DATA(w), len);
  ------------------
  |  |  284|  2.55k|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  2.55k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.55k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2828|       |
 2829|  2.55k|    res = (res != 0 ?
  ------------------
  |  Branch (2829:12): [True: 2.51k, False: 36]
  ------------------
 2830|  2.51k|           res < 0 :
 2831|  2.55k|           PyUnicode_GET_LENGTH(v) < PyUnicode_GET_LENGTH(w));
  ------------------
  |  |  299|     36|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     36|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     36|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                         PyUnicode_GET_LENGTH(v) < PyUnicode_GET_LENGTH(w));
  ------------------
  |  |  299|     36|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     36|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     36|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2832|       |
 2833|  2.55k|    assert(res == PyObject_RichCompareBool(v, w, Py_LT));;
  ------------------
  |  Branch (2833:5): [True: 2.55k, False: 0]
  ------------------
 2834|  2.55k|    return res;
 2835|  2.55k|}
listobject.c:merge_init:
 2234|     36|{
 2235|     36|    assert(ms != NULL);
  ------------------
  |  Branch (2235:5): [True: 36, False: 0]
  ------------------
 2236|     36|    if (has_keyfunc) {
  ------------------
  |  Branch (2236:9): [True: 0, False: 36]
  ------------------
 2237|       |        /* The temporary space for merging will need at most half the list
 2238|       |         * size rounded up.  Use the minimum possible space so we can use the
 2239|       |         * rest of temparray for other things.  In particular, if there is
 2240|       |         * enough extra space, listsort() will use it to store the keys.
 2241|       |         */
 2242|      0|        ms->alloced = (list_size + 1) / 2;
 2243|       |
 2244|       |        /* ms->alloced describes how many keys will be stored at
 2245|       |           ms->temparray, but we also need to store the values.  Hence,
 2246|       |           ms->alloced is capped at half of MERGESTATE_TEMP_SIZE. */
 2247|      0|        if (MERGESTATE_TEMP_SIZE / 2 < ms->alloced)
  ------------------
  |  | 1731|      0|#define MERGESTATE_TEMP_SIZE 256
  ------------------
  |  Branch (2247:13): [True: 0, False: 0]
  ------------------
 2248|      0|            ms->alloced = MERGESTATE_TEMP_SIZE / 2;
  ------------------
  |  | 1731|      0|#define MERGESTATE_TEMP_SIZE 256
  ------------------
 2249|      0|        ms->a.values = &ms->temparray[ms->alloced];
 2250|      0|    }
 2251|     36|    else {
 2252|     36|        ms->alloced = MERGESTATE_TEMP_SIZE;
  ------------------
  |  | 1731|     36|#define MERGESTATE_TEMP_SIZE 256
  ------------------
 2253|     36|        ms->a.values = NULL;
 2254|     36|    }
 2255|     36|    ms->a.keys = ms->temparray;
 2256|     36|    ms->n = 0;
 2257|     36|    ms->min_gallop = MIN_GALLOP;
  ------------------
  |  | 1728|     36|#define MIN_GALLOP 7
  ------------------
 2258|     36|    ms->listlen = list_size;
 2259|     36|    ms->basekeys = lo->keys;
 2260|       |
 2261|       |    /* State for generating minrun values. See listsort.txt. */
 2262|     36|    ms->mr_e = 0;
 2263|     39|    while (list_size >> ms->mr_e >= MAX_MINRUN) {
  ------------------
  |  | 1734|     39|#define MAX_MINRUN 64
  ------------------
  |  Branch (2263:12): [True: 3, False: 36]
  ------------------
 2264|      3|        ++ms->mr_e;
 2265|      3|    }
 2266|     36|    ms->mr_mask = (1 << ms->mr_e) - 1;
 2267|     36|    ms->mr_current = 0;
 2268|     36|}
listobject.c:count_run:
 1952|     10|{
 1953|     10|    Py_ssize_t k; /* used by IFLT macro expansion */
 1954|     10|    Py_ssize_t n;
 1955|     10|    PyObject ** const lo = slo->keys;
 1956|       |
 1957|       |    /* In general, as things go on we've established that the slice starts
 1958|       |       with a monotone run of n elements, starting at lo. */
 1959|       |
 1960|       |    /* We're n elements into the slice, and the most recent neq+1 elements are
 1961|       |     * all equal. This reverses them in-place, and resets neq for reuse.
 1962|       |     */
 1963|     10|#define REVERSE_LAST_NEQ                        \
 1964|     10|    if (neq) {                                  \
 1965|     10|        sortslice slice = *slo;                 \
 1966|     10|        ++neq;                                  \
 1967|     10|        sortslice_advance(&slice, n - neq);     \
 1968|     10|        sortslice_reverse(&slice, neq);         \
 1969|     10|        neq = 0;                                \
 1970|     10|    }
 1971|       |
 1972|       |    /* Sticking to only __lt__ compares is confusing and error-prone. But in
 1973|       |     * this routine, almost all uses of IFLT can be captured by tiny macros
 1974|       |     * giving mnemonic names to the intent. Note that inline functions don't
 1975|       |     * work for this (IFLT expands to code including `goto fail`).
 1976|       |     */
 1977|     10|#define IF_NEXT_LARGER  IFLT(lo[n-1], lo[n])
 1978|     10|#define IF_NEXT_SMALLER IFLT(lo[n], lo[n-1])
 1979|       |
 1980|     10|    assert(nremaining);
  ------------------
  |  Branch (1980:5): [True: 10, False: 0]
  ------------------
 1981|       |    /* try ascending run first */
 1982|     25|    for (n = 1; n < nremaining; ++n) {
  ------------------
  |  Branch (1982:17): [True: 25, False: 0]
  ------------------
 1983|     25|        IF_NEXT_SMALLER
  ------------------
  |  | 1978|     25|#define IF_NEXT_SMALLER IFLT(lo[n], lo[n-1])
  |  |  ------------------
  |  |  |  | 1715|     25|#define IFLT(X, Y) if ((k = ISLT(X, Y)) < 0) goto fail;  \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1709|     25|#define ISLT(X, Y) (*(ms->key_compare))(X, Y, ms)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1715:24): [True: 0, False: 25]
  |  |  |  |  ------------------
  |  |  |  | 1716|     25|           if (k)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1716:16): [True: 10, False: 15]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1984|     10|            break;
 1985|     25|    }
 1986|     10|    if (n == nremaining)
  ------------------
  |  Branch (1986:9): [True: 0, False: 10]
  ------------------
 1987|      0|        return n;
 1988|       |    /* lo[n] is strictly less */
 1989|       |    /* If n is 1 now, then the first compare established it's a descending
 1990|       |     * run, so fall through to the descending case. But if n > 1, there are
 1991|       |     * n elements in an ascending run terminated by the strictly less lo[n].
 1992|       |     * If the first key < lo[n-1], *somewhere* along the way the sequence
 1993|       |     * increased, so we're done (there is no descending run).
 1994|       |     * Else first key >= lo[n-1], which implies that the entire ascending run
 1995|       |     * consists of equal elements. In that case, this is a descending run,
 1996|       |     * and we reverse the all-equal prefix in-place.
 1997|       |     */
 1998|     10|    if (n > 1) {
  ------------------
  |  Branch (1998:9): [True: 6, False: 4]
  ------------------
 1999|      6|        IFLT(lo[0], lo[n-1])
  ------------------
  |  | 1715|      6|#define IFLT(X, Y) if ((k = ISLT(X, Y)) < 0) goto fail;  \
  |  |  ------------------
  |  |  |  | 1709|      6|#define ISLT(X, Y) (*(ms->key_compare))(X, Y, ms)
  |  |  ------------------
  |  |  |  Branch (1715:24): [True: 0, False: 6]
  |  |  ------------------
  |  | 1716|      6|           if (k)
  |  |  ------------------
  |  |  |  Branch (1716:16): [True: 6, False: 0]
  |  |  ------------------
  ------------------
 2000|      6|            return n;
 2001|      0|        sortslice_reverse(slo, n);
 2002|      0|    }
 2003|      4|    ++n; /* in all cases it's been established that lo[n] has been resolved */
 2004|       |
 2005|       |    /* Finish descending run. All-squal subruns are reversed in-place on the
 2006|       |     * fly. Their original order will be restored at the end by the whole-slice
 2007|       |     * reversal.
 2008|       |     */
 2009|      4|    Py_ssize_t neq = 0;
 2010|      7|    for ( ; n < nremaining; ++n) {
  ------------------
  |  Branch (2010:13): [True: 6, False: 1]
  ------------------
 2011|      6|        IF_NEXT_SMALLER {
  ------------------
  |  | 1978|      6|#define IF_NEXT_SMALLER IFLT(lo[n], lo[n-1])
  |  |  ------------------
  |  |  |  | 1715|      6|#define IFLT(X, Y) if ((k = ISLT(X, Y)) < 0) goto fail;  \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1709|      6|#define ISLT(X, Y) (*(ms->key_compare))(X, Y, ms)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1715:24): [True: 0, False: 6]
  |  |  |  |  ------------------
  |  |  |  | 1716|      6|           if (k)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1716:16): [True: 3, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2012|       |            /* This ends the most recent run of equal elements, but still in
 2013|       |             * the "descending" direction.
 2014|       |             */
 2015|      3|            REVERSE_LAST_NEQ
  ------------------
  |  | 1964|      3|    if (neq) {                                  \
  |  |  ------------------
  |  |  |  Branch (1964:9): [True: 0, False: 3]
  |  |  ------------------
  |  | 1965|      0|        sortslice slice = *slo;                 \
  |  | 1966|      0|        ++neq;                                  \
  |  | 1967|      0|        sortslice_advance(&slice, n - neq);     \
  |  | 1968|      0|        sortslice_reverse(&slice, neq);         \
  |  | 1969|      0|        neq = 0;                                \
  |  | 1970|      0|    }
  ------------------
 2016|      3|        }
 2017|      3|        else {
 2018|      3|            IF_NEXT_LARGER /* descending run is over */
  ------------------
  |  | 1977|      3|#define IF_NEXT_LARGER  IFLT(lo[n-1], lo[n])
  |  |  ------------------
  |  |  |  | 1715|      3|#define IFLT(X, Y) if ((k = ISLT(X, Y)) < 0) goto fail;  \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1709|      3|#define ISLT(X, Y) (*(ms->key_compare))(X, Y, ms)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1715:24): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  |  | 1716|      3|           if (k)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1716:16): [True: 3, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2019|      3|                break;
 2020|      0|            else /* not x < y and not y < x implies x == y */
 2021|      0|                ++neq;
 2022|      3|        }
 2023|      6|    }
 2024|      4|    REVERSE_LAST_NEQ
  ------------------
  |  | 1964|      4|    if (neq) {                                  \
  |  |  ------------------
  |  |  |  Branch (1964:9): [True: 0, False: 4]
  |  |  ------------------
  |  | 1965|      0|        sortslice slice = *slo;                 \
  |  | 1966|      0|        ++neq;                                  \
  |  | 1967|      0|        sortslice_advance(&slice, n - neq);     \
  |  | 1968|      0|        sortslice_reverse(&slice, neq);         \
  |  | 1969|      0|        neq = 0;                                \
  |  | 1970|      0|    }
  ------------------
 2025|      4|    sortslice_reverse(slo, n); /* transform to ascending run */
 2026|       |
 2027|       |    /* And after reversing, it's possible this can be extended by a
 2028|       |     * naturally increasing suffix; e.g., [3, 2, 3, 4, 1] makes an
 2029|       |     * ascending run from the first 4 elements.
 2030|       |     */
 2031|      5|    for ( ; n < nremaining; ++n) {
  ------------------
  |  Branch (2031:13): [True: 4, False: 1]
  ------------------
 2032|      4|        IF_NEXT_SMALLER
  ------------------
  |  | 1978|      4|#define IF_NEXT_SMALLER IFLT(lo[n], lo[n-1])
  |  |  ------------------
  |  |  |  | 1715|      4|#define IFLT(X, Y) if ((k = ISLT(X, Y)) < 0) goto fail;  \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1709|      4|#define ISLT(X, Y) (*(ms->key_compare))(X, Y, ms)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1715:24): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  |  | 1716|      4|           if (k)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (1716:16): [True: 3, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2033|      3|            break;
 2034|      4|    }
 2035|       |
 2036|      4|    return n;
 2037|      0|fail:
 2038|      0|    return -1;
 2039|       |
 2040|      4|#undef REVERSE_LAST_NEQ
 2041|      4|#undef IF_NEXT_SMALLER
 2042|      4|#undef IF_NEXT_LARGER
 2043|      4|}
listobject.c:sortslice_reverse:
 1936|      4|{
 1937|      4|    reverse_slice(s->keys, &s->keys[n]);
 1938|      4|    if (s->values != NULL)
  ------------------
  |  Branch (1938:9): [True: 0, False: 4]
  ------------------
 1939|      0|        reverse_slice(s->values, &s->values[n]);
 1940|      4|}
listobject.c:minrun_next:
 2748|     10|{
 2749|     10|    ms->mr_current += ms->listlen;
 2750|     10|    assert(ms->mr_current >= 0); /* no overflow */
  ------------------
  |  Branch (2750:5): [True: 10, False: 0]
  ------------------
 2751|     10|    Py_ssize_t result = ms->mr_current >> ms->mr_e;
 2752|     10|    ms->mr_current &= ms->mr_mask;
 2753|     10|    return result;
 2754|     10|}
listobject.c:binarysort:
 1814|      9|{
 1815|      9|    Py_ssize_t k; /* for IFLT macro expansion */
 1816|      9|    PyObject ** const a = ss->keys;
 1817|      9|    PyObject ** const v = ss->values;
 1818|      9|    const bool has_values = v != NULL;
 1819|      9|    PyObject *pivot;
 1820|      9|    Py_ssize_t M;
 1821|       |
 1822|      9|    assert(0 <= ok && ok <= n && 1 <= n && n <= MAX_MINRUN);
  ------------------
  |  Branch (1822:5): [True: 9, False: 0]
  |  Branch (1822:5): [True: 9, False: 0]
  |  Branch (1822:5): [True: 9, False: 0]
  |  Branch (1822:5): [True: 9, False: 0]
  ------------------
 1823|       |    /* assert a[:ok] is sorted */
 1824|      9|    if (! ok)
  ------------------
  |  Branch (1824:9): [True: 0, False: 9]
  ------------------
 1825|      0|        ++ok;
 1826|       |    /* Regular insertion sort has average- and worst-case O(n**2) cost
 1827|       |       for both # of comparisons and number of bytes moved. But its branches
 1828|       |       are highly predictable, and it loves sorted input (n-1 compares and no
 1829|       |       data movement). This is significant in cases like sortperf.py's %sort,
 1830|       |       where an out-of-order element near the start of a run is moved into
 1831|       |       place slowly but then the remaining elements up to length minrun are
 1832|       |       generally at worst one slot away from their correct position (so only
 1833|       |       need 1 or 2 commpares to resolve). If comparisons are very fast (such
 1834|       |       as for a list of Python floats), the simple inner loop leaves it
 1835|       |       very competitive with binary insertion, despite that it does
 1836|       |       significantly more compares overall on random data.
 1837|       |
 1838|       |       Binary insertion sort has worst, average, and best case O(n log n)
 1839|       |       cost for # of comparisons, but worst and average case O(n**2) cost
 1840|       |       for data movement. The more expensive comparisons, the more important
 1841|       |       the comparison advantage. But its branches are less predictable the
 1842|       |       more "randomish" the data, and that's so significant its worst case
 1843|       |       in real life is random input rather than reverse-ordered (which does
 1844|       |       about twice the data movement than random input does).
 1845|       |
 1846|       |       Note that the number of bytes moved doesn't seem to matter. MAX_MINRUN
 1847|       |       of 64 is so small that the key and value pointers all fit in a corner
 1848|       |       of L1 cache, and moving things around in that is very fast. */
 1849|       |#if 0 // ordinary insertion sort.
 1850|       |    PyObject * vpivot = NULL;
 1851|       |    for (; ok < n; ++ok) {
 1852|       |        pivot = a[ok];
 1853|       |        if (has_values)
 1854|       |            vpivot = v[ok];
 1855|       |        for (M = ok - 1; M >= 0; --M) {
 1856|       |            k = ISLT(pivot, a[M]);
 1857|       |            if (k < 0) {
 1858|       |                a[M + 1] = pivot;
 1859|       |                if (has_values)
 1860|       |                    v[M + 1] = vpivot;
 1861|       |                goto fail;
 1862|       |            }
 1863|       |            else if (k) {
 1864|       |                a[M + 1] = a[M];
 1865|       |                if (has_values)
 1866|       |                    v[M + 1] = v[M];
 1867|       |            }
 1868|       |            else
 1869|       |                break;
 1870|       |        }
 1871|       |        a[M + 1] = pivot;
 1872|       |        if (has_values)
 1873|       |            v[M + 1] = vpivot;
 1874|       |    }
 1875|       |#else // binary insertion sort
 1876|      9|    Py_ssize_t L, R;
 1877|    393|    for (; ok < n; ++ok) {
  ------------------
  |  Branch (1877:12): [True: 384, False: 9]
  ------------------
 1878|       |        /* set L to where a[ok] belongs */
 1879|    384|        L = 0;
 1880|    384|        R = ok;
 1881|    384|        pivot = a[ok];
 1882|       |        /* Slice invariants. vacuously true at the start:
 1883|       |         * all a[0:L]  <= pivot
 1884|       |         * all a[L:R]     unknown
 1885|       |         * all a[R:ok]  > pivot
 1886|       |         */
 1887|    384|        assert(L < R);
  ------------------
  |  Branch (1887:9): [True: 384, False: 0]
  ------------------
 1888|  1.70k|        do {
 1889|       |            /* don't do silly ;-) things to prevent overflow when finding
 1890|       |               the midpoint; L and R are very far from filling a Py_ssize_t */
 1891|  1.70k|            M = (L + R) >> 1;
 1892|  1.70k|#if 1 // straightforward, but highly unpredictable branch on random data
 1893|  1.70k|            IFLT(pivot, a[M])
  ------------------
  |  | 1715|  1.70k|#define IFLT(X, Y) if ((k = ISLT(X, Y)) < 0) goto fail;  \
  |  |  ------------------
  |  |  |  | 1709|  1.70k|#define ISLT(X, Y) (*(ms->key_compare))(X, Y, ms)
  |  |  ------------------
  |  |  |  Branch (1715:24): [True: 0, False: 1.70k]
  |  |  ------------------
  |  | 1716|  1.70k|           if (k)
  |  |  ------------------
  |  |  |  Branch (1716:16): [True: 851, False: 856]
  |  |  ------------------
  ------------------
 1894|    851|                R = M;
 1895|    856|            else
 1896|    856|                L = M + 1;
 1897|       |#else
 1898|       |            /* Try to get compiler to generate conditional move instructions
 1899|       |               instead. Works fine, but leaving it disabled for now because
 1900|       |               it's not yielding consistently faster sorts. Needs more
 1901|       |               investigation. More computation in the inner loop adds its own
 1902|       |               costs, which can be significant when compares are fast. */
 1903|       |            k = ISLT(pivot, a[M]);
 1904|       |            if (k < 0)
 1905|       |                goto fail;
 1906|       |            Py_ssize_t Mp1 = M + 1;
 1907|       |            R = k ? M : R;
 1908|       |            L = k ? L : Mp1;
 1909|       |#endif
 1910|  1.70k|        } while (L < R);
  ------------------
  |  Branch (1910:18): [True: 1.32k, False: 384]
  ------------------
 1911|    384|        assert(L == R);
  ------------------
  |  Branch (1911:9): [True: 384, False: 0]
  ------------------
 1912|       |        /* a[:L] holds all elements from a[:ok] <= pivot now, so pivot belongs
 1913|       |           at index L. Slide a[L:ok] to the right a slot to make room for it.
 1914|       |           Caution: using memmove is much slower under MSVC 5; we're not
 1915|       |           usually moving many slots. Years later: under Visual Studio 2022,
 1916|       |           memmove seems just slightly slower than doing it "by hand". */
 1917|  4.77k|        for (M = ok; M > L; --M)
  ------------------
  |  Branch (1917:22): [True: 4.39k, False: 384]
  ------------------
 1918|  4.39k|            a[M] = a[M - 1];
 1919|    384|        a[L] = pivot;
 1920|    384|        if (has_values) {
  ------------------
  |  Branch (1920:13): [True: 0, False: 384]
  ------------------
 1921|      0|            pivot = v[ok];
 1922|      0|            for (M = ok; M > L; --M)
  ------------------
  |  Branch (1922:26): [True: 0, False: 0]
  ------------------
 1923|      0|                v[M] = v[M - 1];
 1924|      0|            v[L] = pivot;
 1925|      0|        }
 1926|    384|    }
 1927|      9|#endif // pick binary or regular insertion sort
 1928|      9|    return 0;
 1929|       |
 1930|      0| fail:
 1931|      0|    return -1;
 1932|      9|}
listobject.c:found_new_run:
 2706|     10|{
 2707|     10|    assert(ms);
  ------------------
  |  Branch (2707:5): [True: 10, False: 0]
  ------------------
 2708|     10|    if (ms->n) {
  ------------------
  |  Branch (2708:9): [True: 7, False: 3]
  ------------------
 2709|      7|        assert(ms->n > 0);
  ------------------
  |  Branch (2709:9): [True: 7, False: 0]
  ------------------
 2710|      7|        struct s_slice *p = ms->pending;
 2711|      7|        Py_ssize_t s1 = p[ms->n - 1].base.keys - ms->basekeys; /* start index */
 2712|      7|        Py_ssize_t n1 = p[ms->n - 1].len;
 2713|      7|        int power = powerloop(s1, n1, n2, ms->listlen);
 2714|     11|        while (ms->n > 1 && p[ms->n - 2].power > power) {
  ------------------
  |  Branch (2714:16): [True: 8, False: 3]
  |  Branch (2714:29): [True: 4, False: 4]
  ------------------
 2715|      4|            if (merge_at(ms, ms->n - 2) < 0)
  ------------------
  |  Branch (2715:17): [True: 0, False: 4]
  ------------------
 2716|      0|                return -1;
 2717|      4|        }
 2718|      7|        assert(ms->n < 2 || p[ms->n - 2].power < power);
  ------------------
  |  Branch (2718:9): [True: 3, False: 4]
  |  Branch (2718:9): [True: 4, False: 0]
  ------------------
 2719|      7|        p[ms->n - 1].power = power;
 2720|      7|    }
 2721|     10|    return 0;
 2722|     10|}
listobject.c:powerloop:
 2659|      7|{
 2660|      7|    int result = 0;
 2661|      7|    assert(s1 >= 0);
  ------------------
  |  Branch (2661:5): [True: 7, False: 0]
  ------------------
 2662|      7|    assert(n1 > 0 && n2 > 0);
  ------------------
  |  Branch (2662:5): [True: 7, False: 0]
  |  Branch (2662:5): [True: 7, False: 0]
  ------------------
 2663|      7|    assert(s1 + n1 + n2 <= n);
  ------------------
  |  Branch (2663:5): [True: 7, False: 0]
  ------------------
 2664|       |    /* midpoints a and b:
 2665|       |     * a = s1 + n1/2
 2666|       |     * b = s1 + n1 + n2/2 = a + (n1 + n2)/2
 2667|       |     *
 2668|       |     * Those may not be integers, though, because of the "/2". So we work with
 2669|       |     * 2*a and 2*b instead, which are necessarily integers. It makes no
 2670|       |     * difference to the outcome, since the bits in the expansion of (2*i)/n
 2671|       |     * are merely shifted one position from those of i/n.
 2672|       |     */
 2673|      7|    Py_ssize_t a = 2 * s1 + n1;  /* 2*a */
 2674|      7|    Py_ssize_t b = a + n1 + n2;  /* 2*b */
 2675|       |    /* Emulate a/n and b/n one bit a time, until bits differ. */
 2676|     17|    for (;;) {
 2677|     17|        ++result;
 2678|     17|        if (a >= n) {  /* both quotient bits are 1 */
  ------------------
  |  Branch (2678:13): [True: 5, False: 12]
  ------------------
 2679|      5|            assert(b >= a);
  ------------------
  |  Branch (2679:13): [True: 5, False: 0]
  ------------------
 2680|      5|            a -= n;
 2681|      5|            b -= n;
 2682|      5|        }
 2683|     12|        else if (b >= n) {  /* a/n bit is 0, b/n bit is 1 */
  ------------------
  |  Branch (2683:18): [True: 7, False: 5]
  ------------------
 2684|      7|            break;
 2685|      7|        } /* else both quotient bits are 0 */
 2686|     17|        assert(a < b && b < n);
  ------------------
  |  Branch (2686:9): [True: 10, False: 0]
  |  Branch (2686:9): [True: 10, False: 0]
  ------------------
 2687|     10|        a <<= 1;
 2688|     10|        b <<= 1;
 2689|     10|    }
 2690|      7|    return result;
 2691|      7|}
listobject.c:merge_at:
 2599|      7|{
 2600|      7|    sortslice ssa, ssb;
 2601|      7|    Py_ssize_t na, nb;
 2602|      7|    Py_ssize_t k;
 2603|       |
 2604|      7|    assert(ms != NULL);
  ------------------
  |  Branch (2604:5): [True: 7, False: 0]
  ------------------
 2605|      7|    assert(ms->n >= 2);
  ------------------
  |  Branch (2605:5): [True: 7, False: 0]
  ------------------
 2606|      7|    assert(i >= 0);
  ------------------
  |  Branch (2606:5): [True: 7, False: 0]
  ------------------
 2607|      7|    assert(i == ms->n - 2 || i == ms->n - 3);
  ------------------
  |  Branch (2607:5): [True: 7, False: 0]
  |  Branch (2607:5): [True: 0, False: 0]
  ------------------
 2608|       |
 2609|      7|    ssa = ms->pending[i].base;
 2610|      7|    na = ms->pending[i].len;
 2611|      7|    ssb = ms->pending[i+1].base;
 2612|      7|    nb = ms->pending[i+1].len;
 2613|      7|    assert(na > 0 && nb > 0);
  ------------------
  |  Branch (2613:5): [True: 7, False: 0]
  |  Branch (2613:5): [True: 7, False: 0]
  ------------------
 2614|      7|    assert(ssa.keys + na == ssb.keys);
  ------------------
  |  Branch (2614:5): [True: 7, False: 0]
  ------------------
 2615|       |
 2616|       |    /* Record the length of the combined runs; if i is the 3rd-last
 2617|       |     * run now, also slide over the last run (which isn't involved
 2618|       |     * in this merge).  The current run i+1 goes away in any case.
 2619|       |     */
 2620|      7|    ms->pending[i].len = na + nb;
 2621|      7|    if (i == ms->n - 3)
  ------------------
  |  Branch (2621:9): [True: 0, False: 7]
  ------------------
 2622|      0|        ms->pending[i+1] = ms->pending[i+2];
 2623|      7|    --ms->n;
 2624|       |
 2625|       |    /* Where does b start in a?  Elements in a before that can be
 2626|       |     * ignored (already in place).
 2627|       |     */
 2628|      7|    k = gallop_right(ms, *ssb.keys, ssa.keys, na, 0);
 2629|      7|    if (k < 0)
  ------------------
  |  Branch (2629:9): [True: 0, False: 7]
  ------------------
 2630|      0|        return -1;
 2631|      7|    sortslice_advance(&ssa, k);
 2632|      7|    na -= k;
 2633|      7|    if (na == 0)
  ------------------
  |  Branch (2633:9): [True: 0, False: 7]
  ------------------
 2634|      0|        return 0;
 2635|       |
 2636|       |    /* Where does a end in b?  Elements in b after that can be
 2637|       |     * ignored (already in place).
 2638|       |     */
 2639|      7|    nb = gallop_left(ms, ssa.keys[na-1], ssb.keys, nb, nb-1);
 2640|      7|    if (nb <= 0)
  ------------------
  |  Branch (2640:9): [True: 0, False: 7]
  ------------------
 2641|      0|        return nb;
 2642|       |
 2643|       |    /* Merge what remains of the runs, using a temp array with
 2644|       |     * min(na, nb) elements.
 2645|       |     */
 2646|      7|    if (na <= nb)
  ------------------
  |  Branch (2646:9): [True: 4, False: 3]
  ------------------
 2647|      4|        return merge_lo(ms, ssa, na, ssb, nb);
 2648|      3|    else
 2649|      3|        return merge_hi(ms, ssa, na, ssb, nb);
 2650|      7|}
listobject.c:gallop_right:
 2157|     35|{
 2158|     35|    Py_ssize_t ofs;
 2159|     35|    Py_ssize_t lastofs;
 2160|     35|    Py_ssize_t k;
 2161|       |
 2162|     35|    assert(key && a && n > 0 && hint >= 0 && hint < n);
  ------------------
  |  Branch (2162:5): [True: 35, False: 0]
  |  Branch (2162:5): [True: 35, False: 0]
  |  Branch (2162:5): [True: 35, False: 0]
  |  Branch (2162:5): [True: 35, False: 0]
  |  Branch (2162:5): [True: 35, False: 0]
  ------------------
 2163|       |
 2164|     35|    a += hint;
 2165|     35|    lastofs = 0;
 2166|     35|    ofs = 1;
 2167|     35|    IFLT(key, *a) {
  ------------------
  |  | 1715|     35|#define IFLT(X, Y) if ((k = ISLT(X, Y)) < 0) goto fail;  \
  |  |  ------------------
  |  |  |  | 1709|     35|#define ISLT(X, Y) (*(ms->key_compare))(X, Y, ms)
  |  |  ------------------
  |  |  |  Branch (1715:24): [True: 0, False: 35]
  |  |  ------------------
  |  | 1716|     35|           if (k)
  |  |  ------------------
  |  |  |  Branch (1716:16): [True: 19, False: 16]
  |  |  ------------------
  ------------------
 2168|       |        /* key < a[hint] -- gallop left, until
 2169|       |         * a[hint - ofs] <= key < a[hint - lastofs]
 2170|       |         */
 2171|     19|        const Py_ssize_t maxofs = hint + 1;             /* &a[0] is lowest */
 2172|     37|        while (ofs < maxofs) {
  ------------------
  |  Branch (2172:16): [True: 23, False: 14]
  ------------------
 2173|     23|            IFLT(key, *(a-ofs)) {
  ------------------
  |  | 1715|     23|#define IFLT(X, Y) if ((k = ISLT(X, Y)) < 0) goto fail;  \
  |  |  ------------------
  |  |  |  | 1709|     23|#define ISLT(X, Y) (*(ms->key_compare))(X, Y, ms)
  |  |  ------------------
  |  |  |  Branch (1715:24): [True: 0, False: 23]
  |  |  ------------------
  |  | 1716|     23|           if (k)
  |  |  ------------------
  |  |  |  Branch (1716:16): [True: 18, False: 5]
  |  |  ------------------
  ------------------
 2174|     18|                lastofs = ofs;
 2175|     18|                assert(ofs <= (PY_SSIZE_T_MAX - 1) / 2);
  ------------------
  |  Branch (2175:17): [True: 18, False: 0]
  ------------------
 2176|     18|                ofs = (ofs << 1) + 1;
 2177|     18|            }
 2178|      5|            else                /* a[hint - ofs] <= key */
 2179|      5|                break;
 2180|     23|        }
 2181|     19|        if (ofs > maxofs)
  ------------------
  |  Branch (2181:13): [True: 2, False: 17]
  ------------------
 2182|      2|            ofs = maxofs;
 2183|       |        /* Translate back to positive offsets relative to &a[0]. */
 2184|     19|        k = lastofs;
 2185|     19|        lastofs = hint - ofs;
 2186|     19|        ofs = hint - k;
 2187|     19|    }
 2188|     16|    else {
 2189|       |        /* a[hint] <= key -- gallop right, until
 2190|       |         * a[hint + lastofs] <= key < a[hint + ofs]
 2191|       |        */
 2192|     16|        const Py_ssize_t maxofs = n - hint;             /* &a[n-1] is highest */
 2193|     40|        while (ofs < maxofs) {
  ------------------
  |  Branch (2193:16): [True: 35, False: 5]
  ------------------
 2194|     35|            IFLT(key, a[ofs])
  ------------------
  |  | 1715|     35|#define IFLT(X, Y) if ((k = ISLT(X, Y)) < 0) goto fail;  \
  |  |  ------------------
  |  |  |  | 1709|     35|#define ISLT(X, Y) (*(ms->key_compare))(X, Y, ms)
  |  |  ------------------
  |  |  |  Branch (1715:24): [True: 0, False: 35]
  |  |  ------------------
  |  | 1716|     35|           if (k)
  |  |  ------------------
  |  |  |  Branch (1716:16): [True: 11, False: 24]
  |  |  ------------------
  ------------------
 2195|     11|                break;
 2196|       |            /* a[hint + ofs] <= key */
 2197|     24|            lastofs = ofs;
 2198|     24|            assert(ofs <= (PY_SSIZE_T_MAX - 1) / 2);
  ------------------
  |  Branch (2198:13): [True: 24, False: 0]
  ------------------
 2199|     24|            ofs = (ofs << 1) + 1;
 2200|     24|        }
 2201|     16|        if (ofs > maxofs)
  ------------------
  |  Branch (2201:13): [True: 0, False: 16]
  ------------------
 2202|      0|            ofs = maxofs;
 2203|       |        /* Translate back to offsets relative to &a[0]. */
 2204|     16|        lastofs += hint;
 2205|     16|        ofs += hint;
 2206|     16|    }
 2207|     35|    a -= hint;
 2208|       |
 2209|     35|    assert(-1 <= lastofs && lastofs < ofs && ofs <= n);
  ------------------
  |  Branch (2209:5): [True: 35, False: 0]
  |  Branch (2209:5): [True: 35, False: 0]
  |  Branch (2209:5): [True: 35, False: 0]
  ------------------
 2210|       |    /* Now a[lastofs] <= key < a[ofs], so key belongs somewhere to the
 2211|       |     * right of lastofs but no farther right than ofs.  Do a binary
 2212|       |     * search, with invariant a[lastofs-1] <= key < a[ofs].
 2213|       |     */
 2214|     35|    ++lastofs;
 2215|     76|    while (lastofs < ofs) {
  ------------------
  |  Branch (2215:12): [True: 41, False: 35]
  ------------------
 2216|     41|        Py_ssize_t m = lastofs + ((ofs - lastofs) >> 1);
 2217|       |
 2218|     41|        IFLT(key, a[m])
  ------------------
  |  | 1715|     41|#define IFLT(X, Y) if ((k = ISLT(X, Y)) < 0) goto fail;  \
  |  |  ------------------
  |  |  |  | 1709|     41|#define ISLT(X, Y) (*(ms->key_compare))(X, Y, ms)
  |  |  ------------------
  |  |  |  Branch (1715:24): [True: 0, False: 41]
  |  |  ------------------
  |  | 1716|     41|           if (k)
  |  |  ------------------
  |  |  |  Branch (1716:16): [True: 22, False: 19]
  |  |  ------------------
  ------------------
 2219|     22|            ofs = m;                    /* key < a[m] */
 2220|     19|        else
 2221|     19|            lastofs = m+1;              /* a[m] <= key */
 2222|     41|    }
 2223|     35|    assert(lastofs == ofs);             /* so a[ofs-1] <= key < a[ofs] */
  ------------------
  |  Branch (2223:5): [True: 35, False: 0]
  ------------------
 2224|     35|    return ofs;
 2225|       |
 2226|      0|fail:
 2227|      0|    return -1;
 2228|     35|}
listobject.c:gallop_left:
 2068|     32|{
 2069|     32|    Py_ssize_t ofs;
 2070|     32|    Py_ssize_t lastofs;
 2071|     32|    Py_ssize_t k;
 2072|       |
 2073|     32|    assert(key && a && n > 0 && hint >= 0 && hint < n);
  ------------------
  |  Branch (2073:5): [True: 32, False: 0]
  |  Branch (2073:5): [True: 32, False: 0]
  |  Branch (2073:5): [True: 32, False: 0]
  |  Branch (2073:5): [True: 32, False: 0]
  |  Branch (2073:5): [True: 32, False: 0]
  ------------------
 2074|       |
 2075|     32|    a += hint;
 2076|     32|    lastofs = 0;
 2077|     32|    ofs = 1;
 2078|     32|    IFLT(*a, key) {
  ------------------
  |  | 1715|     32|#define IFLT(X, Y) if ((k = ISLT(X, Y)) < 0) goto fail;  \
  |  |  ------------------
  |  |  |  | 1709|     32|#define ISLT(X, Y) (*(ms->key_compare))(X, Y, ms)
  |  |  ------------------
  |  |  |  Branch (1715:24): [True: 0, False: 32]
  |  |  ------------------
  |  | 1716|     32|           if (k)
  |  |  ------------------
  |  |  |  Branch (1716:16): [True: 14, False: 18]
  |  |  ------------------
  ------------------
 2079|       |        /* a[hint] < key -- gallop right, until
 2080|       |         * a[hint + lastofs] < key <= a[hint + ofs]
 2081|       |         */
 2082|     14|        const Py_ssize_t maxofs = n - hint;             /* &a[n-1] is highest */
 2083|     29|        while (ofs < maxofs) {
  ------------------
  |  Branch (2083:16): [True: 21, False: 8]
  ------------------
 2084|     21|            IFLT(a[ofs], key) {
  ------------------
  |  | 1715|     21|#define IFLT(X, Y) if ((k = ISLT(X, Y)) < 0) goto fail;  \
  |  |  ------------------
  |  |  |  | 1709|     21|#define ISLT(X, Y) (*(ms->key_compare))(X, Y, ms)
  |  |  ------------------
  |  |  |  Branch (1715:24): [True: 0, False: 21]
  |  |  ------------------
  |  | 1716|     21|           if (k)
  |  |  ------------------
  |  |  |  Branch (1716:16): [True: 15, False: 6]
  |  |  ------------------
  ------------------
 2085|     15|                lastofs = ofs;
 2086|     15|                assert(ofs <= (PY_SSIZE_T_MAX - 1) / 2);
  ------------------
  |  Branch (2086:17): [True: 15, False: 0]
  ------------------
 2087|     15|                ofs = (ofs << 1) + 1;
 2088|     15|            }
 2089|      6|            else                /* key <= a[hint + ofs] */
 2090|      6|                break;
 2091|     21|        }
 2092|     14|        if (ofs > maxofs)
  ------------------
  |  Branch (2092:13): [True: 1, False: 13]
  ------------------
 2093|      1|            ofs = maxofs;
 2094|       |        /* Translate back to offsets relative to &a[0]. */
 2095|     14|        lastofs += hint;
 2096|     14|        ofs += hint;
 2097|     14|    }
 2098|     18|    else {
 2099|       |        /* key <= a[hint] -- gallop left, until
 2100|       |         * a[hint - ofs] < key <= a[hint - lastofs]
 2101|       |         */
 2102|     18|        const Py_ssize_t maxofs = hint + 1;             /* &a[0] is lowest */
 2103|     45|        while (ofs < maxofs) {
  ------------------
  |  Branch (2103:16): [True: 37, False: 8]
  ------------------
 2104|     37|            IFLT(*(a-ofs), key)
  ------------------
  |  | 1715|     37|#define IFLT(X, Y) if ((k = ISLT(X, Y)) < 0) goto fail;  \
  |  |  ------------------
  |  |  |  | 1709|     37|#define ISLT(X, Y) (*(ms->key_compare))(X, Y, ms)
  |  |  ------------------
  |  |  |  Branch (1715:24): [True: 0, False: 37]
  |  |  ------------------
  |  | 1716|     37|           if (k)
  |  |  ------------------
  |  |  |  Branch (1716:16): [True: 10, False: 27]
  |  |  ------------------
  ------------------
 2105|     10|                break;
 2106|       |            /* key <= a[hint - ofs] */
 2107|     27|            lastofs = ofs;
 2108|     27|            assert(ofs <= (PY_SSIZE_T_MAX - 1) / 2);
  ------------------
  |  Branch (2108:13): [True: 27, False: 0]
  ------------------
 2109|     27|            ofs = (ofs << 1) + 1;
 2110|     27|        }
 2111|     18|        if (ofs > maxofs)
  ------------------
  |  Branch (2111:13): [True: 1, False: 17]
  ------------------
 2112|      1|            ofs = maxofs;
 2113|       |        /* Translate back to positive offsets relative to &a[0]. */
 2114|     18|        k = lastofs;
 2115|     18|        lastofs = hint - ofs;
 2116|     18|        ofs = hint - k;
 2117|     18|    }
 2118|     32|    a -= hint;
 2119|       |
 2120|     32|    assert(-1 <= lastofs && lastofs < ofs && ofs <= n);
  ------------------
  |  Branch (2120:5): [True: 32, False: 0]
  |  Branch (2120:5): [True: 32, False: 0]
  |  Branch (2120:5): [True: 32, False: 0]
  ------------------
 2121|       |    /* Now a[lastofs] < key <= a[ofs], so key belongs somewhere to the
 2122|       |     * right of lastofs but no farther right than ofs.  Do a binary
 2123|       |     * search, with invariant a[lastofs-1] < key <= a[ofs].
 2124|       |     */
 2125|     32|    ++lastofs;
 2126|     71|    while (lastofs < ofs) {
  ------------------
  |  Branch (2126:12): [True: 39, False: 32]
  ------------------
 2127|     39|        Py_ssize_t m = lastofs + ((ofs - lastofs) >> 1);
 2128|       |
 2129|     39|        IFLT(a[m], key)
  ------------------
  |  | 1715|     39|#define IFLT(X, Y) if ((k = ISLT(X, Y)) < 0) goto fail;  \
  |  |  ------------------
  |  |  |  | 1709|     39|#define ISLT(X, Y) (*(ms->key_compare))(X, Y, ms)
  |  |  ------------------
  |  |  |  Branch (1715:24): [True: 0, False: 39]
  |  |  ------------------
  |  | 1716|     39|           if (k)
  |  |  ------------------
  |  |  |  Branch (1716:16): [True: 18, False: 21]
  |  |  ------------------
  ------------------
 2130|     18|            lastofs = m+1;              /* a[m] < key */
 2131|     21|        else
 2132|     21|            ofs = m;                    /* key <= a[m] */
 2133|     39|    }
 2134|     32|    assert(lastofs == ofs);             /* so a[ofs-1] < key <= a[ofs] */
  ------------------
  |  Branch (2134:5): [True: 32, False: 0]
  ------------------
 2135|     32|    return ofs;
 2136|       |
 2137|      0|fail:
 2138|      0|    return -1;
 2139|     32|}
listobject.c:merge_lo:
 2329|      4|{
 2330|      4|    Py_ssize_t k;
 2331|      4|    sortslice dest;
 2332|      4|    int result = -1;            /* guilty until proved innocent */
 2333|      4|    Py_ssize_t min_gallop;
 2334|       |
 2335|      4|    assert(ms && ssa.keys && ssb.keys && na > 0 && nb > 0);
  ------------------
  |  Branch (2335:5): [True: 4, False: 0]
  |  Branch (2335:5): [True: 4, False: 0]
  |  Branch (2335:5): [True: 4, False: 0]
  |  Branch (2335:5): [True: 4, False: 0]
  |  Branch (2335:5): [True: 4, False: 0]
  ------------------
 2336|      4|    assert(ssa.keys + na == ssb.keys);
  ------------------
  |  Branch (2336:5): [True: 4, False: 0]
  ------------------
 2337|      4|    if (MERGE_GETMEM(ms, na) < 0)
  ------------------
  |  | 2317|      4|#define MERGE_GETMEM(MS, NEED) ((NEED) <= (MS)->alloced ? 0 :   \
  |  |  ------------------
  |  |  |  Branch (2317:33): [True: 4, False: 0]
  |  |  ------------------
  |  | 2318|      4|                                merge_getmem(MS, NEED))
  ------------------
  |  Branch (2337:9): [True: 0, False: 4]
  ------------------
 2338|      0|        return -1;
 2339|      4|    sortslice_memcpy(&ms->a, 0, &ssa, 0, na);
 2340|      4|    dest = ssa;
 2341|      4|    ssa = ms->a;
 2342|       |
 2343|      4|    sortslice_copy_incr(&dest, &ssb);
 2344|      4|    --nb;
 2345|      4|    if (nb == 0)
  ------------------
  |  Branch (2345:9): [True: 0, False: 4]
  ------------------
 2346|      0|        goto Succeed;
 2347|      4|    if (na == 1)
  ------------------
  |  Branch (2347:9): [True: 0, False: 4]
  ------------------
 2348|      0|        goto CopyB;
 2349|       |
 2350|      4|    min_gallop = ms->min_gallop;
 2351|     13|    for (;;) {
 2352|     13|        Py_ssize_t acount = 0;          /* # of times A won in a row */
 2353|     13|        Py_ssize_t bcount = 0;          /* # of times B won in a row */
 2354|       |
 2355|       |        /* Do the straightforward thing until (if ever) one run
 2356|       |         * appears to win consistently.
 2357|       |         */
 2358|    281|        for (;;) {
 2359|    281|            assert(na > 1 && nb > 0);
  ------------------
  |  Branch (2359:13): [True: 281, False: 0]
  |  Branch (2359:13): [True: 281, False: 0]
  ------------------
 2360|    281|            k = ISLT(ssb.keys[0], ssa.keys[0]);
  ------------------
  |  | 1709|    281|#define ISLT(X, Y) (*(ms->key_compare))(X, Y, ms)
  ------------------
 2361|    281|            if (k) {
  ------------------
  |  Branch (2361:17): [True: 128, False: 153]
  ------------------
 2362|    128|                if (k < 0)
  ------------------
  |  Branch (2362:21): [True: 0, False: 128]
  ------------------
 2363|      0|                    goto Fail;
 2364|    128|                sortslice_copy_incr(&dest, &ssb);
 2365|    128|                ++bcount;
 2366|    128|                acount = 0;
 2367|    128|                --nb;
 2368|    128|                if (nb == 0)
  ------------------
  |  Branch (2368:21): [True: 2, False: 126]
  ------------------
 2369|      2|                    goto Succeed;
 2370|    126|                if (bcount >= min_gallop)
  ------------------
  |  Branch (2370:21): [True: 4, False: 122]
  ------------------
 2371|      4|                    break;
 2372|    126|            }
 2373|    153|            else {
 2374|    153|                sortslice_copy_incr(&dest, &ssa);
 2375|    153|                ++acount;
 2376|    153|                bcount = 0;
 2377|    153|                --na;
 2378|    153|                if (na == 1)
  ------------------
  |  Branch (2378:21): [True: 0, False: 153]
  ------------------
 2379|      0|                    goto CopyB;
 2380|    153|                if (acount >= min_gallop)
  ------------------
  |  Branch (2380:21): [True: 7, False: 146]
  ------------------
 2381|      7|                    break;
 2382|    153|            }
 2383|    281|        }
 2384|       |
 2385|       |        /* One run is winning so consistently that galloping may
 2386|       |         * be a huge win.  So try that, and continue galloping until
 2387|       |         * (if ever) neither run appears to be winning consistently
 2388|       |         * anymore.
 2389|       |         */
 2390|     11|        ++min_gallop;
 2391|     16|        do {
 2392|     16|            assert(na > 1 && nb > 0);
  ------------------
  |  Branch (2392:13): [True: 16, False: 0]
  |  Branch (2392:13): [True: 16, False: 0]
  ------------------
 2393|     16|            min_gallop -= min_gallop > 1;
 2394|     16|            ms->min_gallop = min_gallop;
 2395|     16|            k = gallop_right(ms, ssb.keys[0], ssa.keys, na, 0);
 2396|     16|            acount = k;
 2397|     16|            if (k) {
  ------------------
  |  Branch (2397:17): [True: 9, False: 7]
  ------------------
 2398|      9|                if (k < 0)
  ------------------
  |  Branch (2398:21): [True: 0, False: 9]
  ------------------
 2399|      0|                    goto Fail;
 2400|      9|                sortslice_memcpy(&dest, 0, &ssa, 0, k);
 2401|      9|                sortslice_advance(&dest, k);
 2402|      9|                sortslice_advance(&ssa, k);
 2403|      9|                na -= k;
 2404|      9|                if (na == 1)
  ------------------
  |  Branch (2404:21): [True: 1, False: 8]
  ------------------
 2405|      1|                    goto CopyB;
 2406|       |                /* na==0 is impossible now if the comparison
 2407|       |                 * function is consistent, but we can't assume
 2408|       |                 * that it is.
 2409|       |                 */
 2410|      8|                if (na == 0)
  ------------------
  |  Branch (2410:21): [True: 0, False: 8]
  ------------------
 2411|      0|                    goto Succeed;
 2412|      8|            }
 2413|     15|            sortslice_copy_incr(&dest, &ssb);
 2414|     15|            --nb;
 2415|     15|            if (nb == 0)
  ------------------
  |  Branch (2415:17): [True: 1, False: 14]
  ------------------
 2416|      1|                goto Succeed;
 2417|       |
 2418|     14|            k = gallop_left(ms, ssa.keys[0], ssb.keys, nb, 0);
 2419|     14|            bcount = k;
 2420|     14|            if (k) {
  ------------------
  |  Branch (2420:17): [True: 7, False: 7]
  ------------------
 2421|      7|                if (k < 0)
  ------------------
  |  Branch (2421:21): [True: 0, False: 7]
  ------------------
 2422|      0|                    goto Fail;
 2423|      7|                sortslice_memmove(&dest, 0, &ssb, 0, k);
 2424|      7|                sortslice_advance(&dest, k);
 2425|      7|                sortslice_advance(&ssb, k);
 2426|      7|                nb -= k;
 2427|      7|                if (nb == 0)
  ------------------
  |  Branch (2427:21): [True: 0, False: 7]
  ------------------
 2428|      0|                    goto Succeed;
 2429|      7|            }
 2430|     14|            sortslice_copy_incr(&dest, &ssa);
 2431|     14|            --na;
 2432|     14|            if (na == 1)
  ------------------
  |  Branch (2432:17): [True: 0, False: 14]
  ------------------
 2433|      0|                goto CopyB;
 2434|     14|        } while (acount >= MIN_GALLOP || bcount >= MIN_GALLOP);
  ------------------
  |  | 1728|     28|#define MIN_GALLOP 7
  ------------------
                      } while (acount >= MIN_GALLOP || bcount >= MIN_GALLOP);
  ------------------
  |  | 1728|     10|#define MIN_GALLOP 7
  ------------------
  |  Branch (2434:18): [True: 4, False: 10]
  |  Branch (2434:42): [True: 1, False: 9]
  ------------------
 2435|      9|        ++min_gallop;           /* penalize it for leaving galloping mode */
 2436|      9|        ms->min_gallop = min_gallop;
 2437|      9|    }
 2438|      3|Succeed:
 2439|      3|    result = 0;
 2440|      3|Fail:
 2441|      3|    if (na)
  ------------------
  |  Branch (2441:9): [True: 3, False: 0]
  ------------------
 2442|      3|        sortslice_memcpy(&dest, 0, &ssa, 0, na);
 2443|      3|    return result;
 2444|      1|CopyB:
 2445|      1|    assert(na == 1 && nb > 0);
  ------------------
  |  Branch (2445:5): [True: 1, False: 0]
  |  Branch (2445:5): [True: 1, False: 0]
  ------------------
 2446|       |    /* The last element of ssa belongs at the end of the merge. */
 2447|      1|    sortslice_memmove(&dest, 0, &ssb, 0, nb);
 2448|      1|    sortslice_copy(&dest, nb, &ssa, 0);
 2449|      1|    return 0;
 2450|      1|}
listobject.c:sortslice_memcpy:
 1681|     29|{
 1682|     29|    memcpy(&s1->keys[i], &s2->keys[j], sizeof(PyObject *) * n);
 1683|     29|    if (s1->values != NULL)
  ------------------
  |  Branch (1683:9): [True: 0, False: 29]
  ------------------
 1684|      0|        memcpy(&s1->values[i], &s2->values[j], sizeof(PyObject *) * n);
 1685|     29|}
listobject.c:sortslice_copy_incr:
 1663|    314|{
 1664|    314|    *dst->keys++ = *src->keys++;
 1665|    314|    if (dst->values != NULL)
  ------------------
  |  Branch (1665:9): [True: 0, False: 314]
  ------------------
 1666|      0|        *dst->values++ = *src->values++;
 1667|    314|}
listobject.c:sortslice_memmove:
 1690|     15|{
 1691|     15|    memmove(&s1->keys[i], &s2->keys[j], sizeof(PyObject *) * n);
 1692|     15|    if (s1->values != NULL)
  ------------------
  |  Branch (1692:9): [True: 0, False: 15]
  ------------------
 1693|      0|        memmove(&s1->values[i], &s2->values[j], sizeof(PyObject *) * n);
 1694|     15|}
listobject.c:sortslice_copy:
 1655|      1|{
 1656|      1|    s1->keys[i] = s2->keys[j];
 1657|      1|    if (s1->values != NULL)
  ------------------
  |  Branch (1657:9): [True: 0, False: 1]
  ------------------
 1658|      0|        s1->values[i] = s2->values[j];
 1659|      1|}
listobject.c:merge_hi:
 2461|      3|{
 2462|      3|    Py_ssize_t k;
 2463|      3|    sortslice dest, basea, baseb;
 2464|      3|    int result = -1;            /* guilty until proved innocent */
 2465|      3|    Py_ssize_t min_gallop;
 2466|       |
 2467|      3|    assert(ms && ssa.keys && ssb.keys && na > 0 && nb > 0);
  ------------------
  |  Branch (2467:5): [True: 3, False: 0]
  |  Branch (2467:5): [True: 3, False: 0]
  |  Branch (2467:5): [True: 3, False: 0]
  |  Branch (2467:5): [True: 3, False: 0]
  |  Branch (2467:5): [True: 3, False: 0]
  ------------------
 2468|      3|    assert(ssa.keys + na == ssb.keys);
  ------------------
  |  Branch (2468:5): [True: 3, False: 0]
  ------------------
 2469|      3|    if (MERGE_GETMEM(ms, nb) < 0)
  ------------------
  |  | 2317|      3|#define MERGE_GETMEM(MS, NEED) ((NEED) <= (MS)->alloced ? 0 :   \
  |  |  ------------------
  |  |  |  Branch (2317:33): [True: 3, False: 0]
  |  |  ------------------
  |  | 2318|      3|                                merge_getmem(MS, NEED))
  ------------------
  |  Branch (2469:9): [True: 0, False: 3]
  ------------------
 2470|      0|        return -1;
 2471|      3|    dest = ssb;
 2472|      3|    sortslice_advance(&dest, nb-1);
 2473|      3|    sortslice_memcpy(&ms->a, 0, &ssb, 0, nb);
 2474|      3|    basea = ssa;
 2475|      3|    baseb = ms->a;
 2476|      3|    ssb.keys = ms->a.keys + nb - 1;
 2477|      3|    if (ssb.values != NULL)
  ------------------
  |  Branch (2477:9): [True: 0, False: 3]
  ------------------
 2478|      0|        ssb.values = ms->a.values + nb - 1;
 2479|      3|    sortslice_advance(&ssa, na - 1);
 2480|       |
 2481|      3|    sortslice_copy_decr(&dest, &ssa);
 2482|      3|    --na;
 2483|      3|    if (na == 0)
  ------------------
  |  Branch (2483:9): [True: 0, False: 3]
  ------------------
 2484|      0|        goto Succeed;
 2485|      3|    if (nb == 1)
  ------------------
  |  Branch (2485:9): [True: 0, False: 3]
  ------------------
 2486|      0|        goto CopyA;
 2487|       |
 2488|      3|    min_gallop = ms->min_gallop;
 2489|      7|    for (;;) {
 2490|      7|        Py_ssize_t acount = 0;          /* # of times A won in a row */
 2491|      7|        Py_ssize_t bcount = 0;          /* # of times B won in a row */
 2492|       |
 2493|       |        /* Do the straightforward thing until (if ever) one run
 2494|       |         * appears to win consistently.
 2495|       |         */
 2496|    260|        for (;;) {
 2497|    260|            assert(na > 0 && nb > 1);
  ------------------
  |  Branch (2497:13): [True: 260, False: 0]
  |  Branch (2497:13): [True: 260, False: 0]
  ------------------
 2498|    260|            k = ISLT(ssb.keys[0], ssa.keys[0]);
  ------------------
  |  | 1709|    260|#define ISLT(X, Y) (*(ms->key_compare))(X, Y, ms)
  ------------------
 2499|    260|            if (k) {
  ------------------
  |  Branch (2499:17): [True: 150, False: 110]
  ------------------
 2500|    150|                if (k < 0)
  ------------------
  |  Branch (2500:21): [True: 0, False: 150]
  ------------------
 2501|      0|                    goto Fail;
 2502|    150|                sortslice_copy_decr(&dest, &ssa);
 2503|    150|                ++acount;
 2504|    150|                bcount = 0;
 2505|    150|                --na;
 2506|    150|                if (na == 0)
  ------------------
  |  Branch (2506:21): [True: 2, False: 148]
  ------------------
 2507|      2|                    goto Succeed;
 2508|    148|                if (acount >= min_gallop)
  ------------------
  |  Branch (2508:21): [True: 4, False: 144]
  ------------------
 2509|      4|                    break;
 2510|    148|            }
 2511|    110|            else {
 2512|    110|                sortslice_copy_decr(&dest, &ssb);
 2513|    110|                ++bcount;
 2514|    110|                acount = 0;
 2515|    110|                --nb;
 2516|    110|                if (nb == 1)
  ------------------
  |  Branch (2516:21): [True: 0, False: 110]
  ------------------
 2517|      0|                    goto CopyA;
 2518|    110|                if (bcount >= min_gallop)
  ------------------
  |  Branch (2518:21): [True: 1, False: 109]
  ------------------
 2519|      1|                    break;
 2520|    110|            }
 2521|    260|        }
 2522|       |
 2523|       |        /* One run is winning so consistently that galloping may
 2524|       |         * be a huge win.  So try that, and continue galloping until
 2525|       |         * (if ever) neither run appears to be winning consistently
 2526|       |         * anymore.
 2527|       |         */
 2528|      5|        ++min_gallop;
 2529|     12|        do {
 2530|     12|            assert(na > 0 && nb > 1);
  ------------------
  |  Branch (2530:13): [True: 12, False: 0]
  |  Branch (2530:13): [True: 12, False: 0]
  ------------------
 2531|     12|            min_gallop -= min_gallop > 1;
 2532|     12|            ms->min_gallop = min_gallop;
 2533|     12|            k = gallop_right(ms, ssb.keys[0], basea.keys, na, na-1);
 2534|     12|            if (k < 0)
  ------------------
  |  Branch (2534:17): [True: 0, False: 12]
  ------------------
 2535|      0|                goto Fail;
 2536|     12|            k = na - k;
 2537|     12|            acount = k;
 2538|     12|            if (k) {
  ------------------
  |  Branch (2538:17): [True: 7, False: 5]
  ------------------
 2539|      7|                sortslice_advance(&dest, -k);
 2540|      7|                sortslice_advance(&ssa, -k);
 2541|      7|                sortslice_memmove(&dest, 1, &ssa, 1, k);
 2542|      7|                na -= k;
 2543|      7|                if (na == 0)
  ------------------
  |  Branch (2543:21): [True: 1, False: 6]
  ------------------
 2544|      1|                    goto Succeed;
 2545|      7|            }
 2546|     11|            sortslice_copy_decr(&dest, &ssb);
 2547|     11|            --nb;
 2548|     11|            if (nb == 1)
  ------------------
  |  Branch (2548:17): [True: 0, False: 11]
  ------------------
 2549|      0|                goto CopyA;
 2550|       |
 2551|     11|            k = gallop_left(ms, ssa.keys[0], baseb.keys, nb, nb-1);
 2552|     11|            if (k < 0)
  ------------------
  |  Branch (2552:17): [True: 0, False: 11]
  ------------------
 2553|      0|                goto Fail;
 2554|     11|            k = nb - k;
 2555|     11|            bcount = k;
 2556|     11|            if (k) {
  ------------------
  |  Branch (2556:17): [True: 7, False: 4]
  ------------------
 2557|      7|                sortslice_advance(&dest, -k);
 2558|      7|                sortslice_advance(&ssb, -k);
 2559|      7|                sortslice_memcpy(&dest, 1, &ssb, 1, k);
 2560|      7|                nb -= k;
 2561|      7|                if (nb == 1)
  ------------------
  |  Branch (2561:21): [True: 0, False: 7]
  ------------------
 2562|      0|                    goto CopyA;
 2563|       |                /* nb==0 is impossible now if the comparison
 2564|       |                 * function is consistent, but we can't assume
 2565|       |                 * that it is.
 2566|       |                 */
 2567|      7|                if (nb == 0)
  ------------------
  |  Branch (2567:21): [True: 0, False: 7]
  ------------------
 2568|      0|                    goto Succeed;
 2569|      7|            }
 2570|     11|            sortslice_copy_decr(&dest, &ssa);
 2571|     11|            --na;
 2572|     11|            if (na == 0)
  ------------------
  |  Branch (2572:17): [True: 0, False: 11]
  ------------------
 2573|      0|                goto Succeed;
 2574|     11|        } while (acount >= MIN_GALLOP || bcount >= MIN_GALLOP);
  ------------------
  |  | 1728|     22|#define MIN_GALLOP 7
  ------------------
                      } while (acount >= MIN_GALLOP || bcount >= MIN_GALLOP);
  ------------------
  |  | 1728|      7|#define MIN_GALLOP 7
  ------------------
  |  Branch (2574:18): [True: 4, False: 7]
  |  Branch (2574:42): [True: 3, False: 4]
  ------------------
 2575|      4|        ++min_gallop;           /* penalize it for leaving galloping mode */
 2576|      4|        ms->min_gallop = min_gallop;
 2577|      4|    }
 2578|      3|Succeed:
 2579|      3|    result = 0;
 2580|      3|Fail:
 2581|      3|    if (nb)
  ------------------
  |  Branch (2581:9): [True: 3, False: 0]
  ------------------
 2582|      3|        sortslice_memcpy(&dest, -(nb-1), &baseb, 0, nb);
 2583|      3|    return result;
 2584|      0|CopyA:
 2585|      0|    assert(nb == 1 && na > 0);
  ------------------
  |  Branch (2585:5): [True: 0, False: 0]
  |  Branch (2585:5): [True: 0, False: 0]
  ------------------
 2586|       |    /* The first element of ssb belongs at the front of the merge. */
 2587|      0|    sortslice_memmove(&dest, 1-na, &ssa, 1-na, na);
 2588|      0|    sortslice_advance(&dest, -na);
 2589|      0|    sortslice_advance(&ssa, -na);
 2590|      0|    sortslice_copy(&dest, 0, &ssb, 0);
 2591|      0|    return 0;
 2592|      0|}
listobject.c:sortslice_copy_decr:
 1671|    285|{
 1672|    285|    *dst->keys-- = *src->keys--;
 1673|    285|    if (dst->values != NULL)
  ------------------
  |  Branch (1673:9): [True: 0, False: 285]
  ------------------
 1674|      0|        *dst->values-- = *src->values--;
 1675|    285|}
listobject.c:sortslice_advance:
 1698|     83|{
 1699|     83|    slice->keys += n;
 1700|     83|    if (slice->values != NULL)
  ------------------
  |  Branch (1700:9): [True: 0, False: 83]
  ------------------
 1701|      0|        slice->values += n;
 1702|     83|}
listobject.c:merge_force_collapse:
 2731|      3|{
 2732|      3|    struct s_slice *p = ms->pending;
 2733|       |
 2734|      3|    assert(ms);
  ------------------
  |  Branch (2734:5): [True: 3, False: 0]
  ------------------
 2735|      6|    while (ms->n > 1) {
  ------------------
  |  Branch (2735:12): [True: 3, False: 3]
  ------------------
 2736|      3|        Py_ssize_t n = ms->n - 2;
 2737|      3|        if (n > 0 && p[n-1].len < p[n+1].len)
  ------------------
  |  Branch (2737:13): [True: 2, False: 1]
  |  Branch (2737:22): [True: 0, False: 2]
  ------------------
 2738|      0|            --n;
 2739|      3|        if (merge_at(ms, n) < 0)
  ------------------
  |  Branch (2739:13): [True: 0, False: 3]
  ------------------
 2740|      0|            return -1;
 2741|      3|    }
 2742|      3|    return 0;
 2743|      3|}
listobject.c:merge_freemem:
 2276|     36|{
 2277|     36|    assert(ms != NULL);
  ------------------
  |  Branch (2277:5): [True: 36, False: 0]
  ------------------
 2278|     36|    if (ms->a.keys != ms->temparray) {
  ------------------
  |  Branch (2278:9): [True: 0, False: 36]
  ------------------
 2279|      0|        PyMem_Free(ms->a.keys);
 2280|       |        ms->a.keys = NULL;
 2281|      0|    }
 2282|     36|}
listobject.c:reverse_slice:
 1622|      4|{
 1623|      4|    assert(lo && hi);
  ------------------
  |  Branch (1623:5): [True: 4, False: 0]
  |  Branch (1623:5): [True: 4, False: 0]
  ------------------
 1624|       |
 1625|      4|    --hi;
 1626|      9|    while (lo < hi) {
  ------------------
  |  Branch (1626:12): [True: 5, False: 4]
  ------------------
 1627|      5|        PyObject *t = *lo;
 1628|      5|        FT_ATOMIC_STORE_PTR_RELEASE(*lo, *hi);
  ------------------
  |  |  164|      5|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  ------------------
 1629|      5|        FT_ATOMIC_STORE_PTR_RELEASE(*hi, t);
  ------------------
  |  |  164|      5|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  ------------------
 1630|      5|        ++lo;
 1631|      5|        --hi;
 1632|      5|    }
 1633|      4|}
listobject.c:list_slice_subscript:
 3672|      1|{
 3673|      1|    assert(PyList_Check(self));
  ------------------
  |  Branch (3673:5): [True: 1, False: 0]
  ------------------
 3674|      1|    assert(PySlice_Check(item));
  ------------------
  |  Branch (3674:5): [True: 1, False: 0]
  ------------------
 3675|      1|    Py_ssize_t start, stop, step;
 3676|      1|    if (PySlice_Unpack(item, &start, &stop, &step) < 0) {
  ------------------
  |  Branch (3676:9): [True: 0, False: 1]
  ------------------
 3677|      0|        return NULL;
 3678|      0|    }
 3679|      1|    return list_slice_wrap((PyListObject *)self, start, stop, step);
 3680|      1|}
listobject.c:list_slice_wrap:
 3653|      1|{
 3654|      1|    PyObject *res = NULL;
 3655|      1|    Py_BEGIN_CRITICAL_SECTION(aa);
  ------------------
  |  |   51|      1|    {
  ------------------
 3656|      1|    Py_ssize_t len = PySlice_AdjustIndices(Py_SIZE(aa), &start, &stop, step);
  ------------------
  |  |  214|      1|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3657|      1|    if (len <= 0) {
  ------------------
  |  Branch (3657:9): [True: 0, False: 1]
  ------------------
 3658|      0|        res = PyList_New(0);
 3659|      0|    }
 3660|      1|    else if (step == 1) {
  ------------------
  |  Branch (3660:14): [True: 1, False: 0]
  ------------------
 3661|      1|        res = list_slice_lock_held(aa, start, stop);
 3662|      1|    }
 3663|      0|    else {
 3664|      0|        res = list_slice_step_lock_held(aa, start, step, len);
 3665|      0|    }
 3666|      1|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|      1|    }
  ------------------
 3667|      1|    return res;
 3668|      1|}
listobject.c:list_dealloc:
  556|    367|{
  557|    367|    PyListObject *op = (PyListObject *)self;
  558|    367|    Py_ssize_t i;
  559|    367|    PyObject_GC_UnTrack(op);
  560|    367|    if (op->ob_item != NULL) {
  ------------------
  |  Branch (560:9): [True: 193, False: 174]
  ------------------
  561|       |        /* Do it backwards, for Christian Tismer.
  562|       |           There's a simple test case where somehow this reduces
  563|       |           thrashing when a *very* large list is created and
  564|       |           immediately deleted. */
  565|    193|        i = Py_SIZE(op);
  ------------------
  |  |  214|    193|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    193|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    193|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  566|  7.73k|        while (--i >= 0) {
  ------------------
  |  Branch (566:16): [True: 7.54k, False: 193]
  ------------------
  567|  7.54k|            Py_XDECREF(op->ob_item[i]);
  ------------------
  |  |  524|  7.54k|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  7.54k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  7.54k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  568|  7.54k|        }
  569|    193|        free_list_items(op->ob_item, false);
  570|    193|        op->ob_item = NULL;
  571|    193|    }
  572|    367|    if (PyList_CheckExact(op)) {
  ------------------
  |  |   26|    367|#define PyList_CheckExact(op) Py_IS_TYPE((op), &PyList_Type)
  |  |  ------------------
  |  |  |  |  215|    367|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    367|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    367|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 337, False: 30]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  573|    337|        _Py_FREELIST_FREE(lists, op, PyObject_GC_Del);
  ------------------
  |  |   35|    337|    _PyFreeList_Free(&_Py_freelists_GET()->NAME, _PyObject_CAST(op), \
  |  |  ------------------
  |  |  |  |  171|    337|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    337|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   36|    337|                     Py_ ## NAME ## _MAXFREELIST, freefunc)
  |  |  ------------------
  |  |  |  |   13|    337|#  define Py_lists_MAXFREELIST 80
  |  |  ------------------
  ------------------
  574|    337|    }
  575|     30|    else {
  576|     30|        PyObject_GC_Del(op);
  577|     30|    }
  578|    367|}
listobject.c:list_length:
  651|     99|{
  652|     99|    return PyList_GET_SIZE(a);
  ------------------
  |  |   38|     99|#define PyList_GET_SIZE(op) PyList_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     99|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     99|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  653|     99|}
listobject.c:list_item:
  676|    519|{
  677|    519|    PyListObject *a = (PyListObject *)aa;
  678|    519|    if (!valid_index(i, PyList_GET_SIZE(a))) {
  ------------------
  |  |   38|    519|#define PyList_GET_SIZE(op) PyList_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    519|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    519|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (678:9): [True: 4, False: 515]
  ------------------
  679|      4|        PyErr_SetObject(PyExc_IndexError, &_Py_STR(list_err));
  ------------------
  |  |  919|      4|     (_Py_SINGLETON(strings.literals._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      4|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      4|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  680|      4|        return NULL;
  681|      4|    }
  682|    515|    PyObject *item;
  683|       |#ifdef Py_GIL_DISABLED
  684|       |    item = list_get_item_ref(a, i);
  685|       |    if (item == NULL) {
  686|       |        PyErr_SetObject(PyExc_IndexError, &_Py_STR(list_err));
  687|       |        return NULL;
  688|       |    }
  689|       |#else
  690|    515|    item = Py_NewRef(a->ob_item[i]);
  ------------------
  |  |  550|    515|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    515|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    515|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  691|    515|#endif
  692|    515|    return item;
  693|    519|}
listobject.c:list_contains:
  657|     44|{
  658|       |
  659|    752|    for (Py_ssize_t i = 0; ; i++) {
  660|    752|        PyObject *item = list_get_item_ref((PyListObject *)aa, i);
  661|    752|        if (item == NULL) {
  ------------------
  |  Branch (661:13): [True: 6, False: 746]
  ------------------
  662|       |            // out-of-bounds
  663|      6|            return 0;
  664|      6|        }
  665|    746|        int cmp = PyObject_RichCompareBool(item, el, Py_EQ);
  ------------------
  |  |  654|    746|#define Py_EQ 2
  ------------------
  666|    746|        Py_DECREF(item);
  ------------------
  |  |  430|    746|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    746|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    746|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  667|    746|        if (cmp != 0) {
  ------------------
  |  Branch (667:13): [True: 38, False: 708]
  ------------------
  668|     38|            return cmp;
  669|     38|        }
  670|    746|    }
  671|      0|    return 0;
  672|     44|}
listobject.c:list_subscript:
 3690|      2|{
 3691|      2|    PyListObject* self = (PyListObject*)_self;
 3692|      2|    if (_PyIndex_Check(item)) {
  ------------------
  |  Branch (3692:9): [True: 1, False: 1]
  ------------------
 3693|      1|        Py_ssize_t i;
 3694|      1|        i = PyNumber_AsSsize_t(item, PyExc_IndexError);
 3695|      1|        if (i == -1 && PyErr_Occurred())
  ------------------
  |  Branch (3695:13): [True: 0, False: 1]
  |  Branch (3695:24): [True: 0, False: 0]
  ------------------
 3696|      0|            return NULL;
 3697|      1|        if (i < 0)
  ------------------
  |  Branch (3697:13): [True: 0, False: 1]
  ------------------
 3698|      0|            i += PyList_GET_SIZE(self);
  ------------------
  |  |   38|      0|#define PyList_GET_SIZE(op) PyList_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3699|      1|        return list_item((PyObject *)self, i);
 3700|      1|    }
 3701|      1|    else if (PySlice_Check(item)) {
  ------------------
  |  |   22|      1|#define PySlice_Check(op) Py_IS_TYPE((op), &PySlice_Type)
  |  |  ------------------
  |  |  |  |  215|      1|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3702|      1|        return list_slice_subscript(_self, item);
 3703|      1|    }
 3704|      0|    else {
 3705|      0|        PyErr_Format(PyExc_TypeError,
 3706|      0|                     "list indices must be integers or slices, not %.200s",
 3707|      0|                     Py_TYPE(item)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3708|       |        return NULL;
 3709|      0|    }
 3710|      2|}
listobject.c:list_ass_subscript:
 3897|      1|{
 3898|      1|    int res;
 3899|       |#ifdef Py_GIL_DISABLED
 3900|       |    if (PySlice_Check(item) && value != NULL && PyList_CheckExact(value)) {
 3901|       |        Py_BEGIN_CRITICAL_SECTION2(self, value);
 3902|       |        res = list_ass_subscript_lock_held(self, item, value);
 3903|       |        Py_END_CRITICAL_SECTION2();
 3904|       |        return res;
 3905|       |    }
 3906|       |#endif
 3907|      1|    Py_BEGIN_CRITICAL_SECTION(self);
  ------------------
  |  |   51|      1|    {
  ------------------
 3908|      1|    res = list_ass_subscript_lock_held(self, item, value);
 3909|      1|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|      1|    }
  ------------------
 3910|      1|    return res;
 3911|      1|}
listobject.c:list_ass_subscript_lock_held:
 3731|      1|{
 3732|      1|    _Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED(_self);
 3733|       |
 3734|      1|    PyListObject *self = (PyListObject *)_self;
 3735|      1|    if (_PyIndex_Check(item)) {
  ------------------
  |  Branch (3735:9): [True: 0, False: 1]
  ------------------
 3736|      0|        Py_ssize_t i = PyNumber_AsSsize_t(item, PyExc_IndexError);
 3737|      0|        if (i == -1 && PyErr_Occurred())
  ------------------
  |  Branch (3737:13): [True: 0, False: 0]
  |  Branch (3737:24): [True: 0, False: 0]
  ------------------
 3738|      0|            return -1;
 3739|      0|        if (i < 0)
  ------------------
  |  Branch (3739:13): [True: 0, False: 0]
  ------------------
 3740|      0|            i += PyList_GET_SIZE(self);
  ------------------
  |  |   38|      0|#define PyList_GET_SIZE(op) PyList_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3741|      0|        return list_ass_item_lock_held(self, i, value);
 3742|      0|    }
 3743|      1|    else if (PySlice_Check(item)) {
  ------------------
  |  |   22|      1|#define PySlice_Check(op) Py_IS_TYPE((op), &PySlice_Type)
  |  |  ------------------
  |  |  |  |  215|      1|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3744|      1|        Py_ssize_t start, stop, step;
 3745|       |
 3746|      1|        if (PySlice_Unpack(item, &start, &stop, &step) < 0) {
  ------------------
  |  Branch (3746:13): [True: 0, False: 1]
  ------------------
 3747|      0|            return -1;
 3748|      0|        }
 3749|       |
 3750|      1|        if (value == NULL) {
  ------------------
  |  Branch (3750:13): [True: 0, False: 1]
  ------------------
 3751|       |            /* delete slice */
 3752|      0|            PyObject **garbage;
 3753|      0|            size_t cur;
 3754|      0|            Py_ssize_t i;
 3755|      0|            int res;
 3756|       |
 3757|      0|            Py_ssize_t slicelength = adjust_slice_indexes(self, &start, &stop,
 3758|      0|                                                          step);
 3759|       |
 3760|      0|            if (step == 1)
  ------------------
  |  Branch (3760:17): [True: 0, False: 0]
  ------------------
 3761|      0|                return list_ass_slice_lock_held(self, start, stop, value);
 3762|       |
 3763|      0|            if (slicelength <= 0)
  ------------------
  |  Branch (3763:17): [True: 0, False: 0]
  ------------------
 3764|      0|                return 0;
 3765|       |
 3766|      0|            if (step < 0) {
  ------------------
  |  Branch (3766:17): [True: 0, False: 0]
  ------------------
 3767|      0|                stop = start + 1;
 3768|      0|                start = stop + step*(slicelength - 1) - 1;
 3769|      0|                step = -step;
 3770|      0|            }
 3771|       |
 3772|      0|            garbage = (PyObject**)
 3773|      0|                PyMem_Malloc(slicelength*sizeof(PyObject*));
 3774|      0|            if (!garbage) {
  ------------------
  |  Branch (3774:17): [True: 0, False: 0]
  ------------------
 3775|      0|                PyErr_NoMemory();
 3776|      0|                return -1;
 3777|      0|            }
 3778|       |
 3779|       |            /* drawing pictures might help understand these for
 3780|       |               loops. Basically, we memmove the parts of the
 3781|       |               list that are *not* part of the slice: step-1
 3782|       |               items for each item that is part of the slice,
 3783|       |               and then tail end of the list that was not
 3784|       |               covered by the slice */
 3785|      0|            for (cur = start, i = 0;
 3786|      0|                 cur < (size_t)stop;
  ------------------
  |  Branch (3786:18): [True: 0, False: 0]
  ------------------
 3787|      0|                 cur += step, i++) {
 3788|      0|                Py_ssize_t lim = step - 1;
 3789|       |
 3790|      0|                garbage[i] = PyList_GET_ITEM(self, cur);
  ------------------
  |  |   40|      0|#define PyList_GET_ITEM(op, index) (_PyList_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   26|      0|    (assert(PyList_Check(op)), _Py_CAST(PyListObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3790:30): [True: 0, False: 0]
  ------------------
 3791|       |
 3792|      0|                if (cur + step >= (size_t)Py_SIZE(self)) {
  ------------------
  |  |  214|      0|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3792:21): [True: 0, False: 0]
  ------------------
 3793|      0|                    lim = Py_SIZE(self) - cur - 1;
  ------------------
  |  |  214|      0|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3794|      0|                }
 3795|       |
 3796|      0|                ptr_wise_atomic_memmove(self, self->ob_item + cur - i,
 3797|      0|                    self->ob_item + cur + 1, lim);
 3798|      0|            }
 3799|      0|            cur = start + (size_t)slicelength * step;
 3800|      0|            if (cur < (size_t)Py_SIZE(self)) {
  ------------------
  |  |  214|      0|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3800:17): [True: 0, False: 0]
  ------------------
 3801|      0|                ptr_wise_atomic_memmove(self, self->ob_item + cur - slicelength,
 3802|      0|                    self->ob_item + cur, Py_SIZE(self) - cur);
  ------------------
  |  |  214|      0|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3803|      0|            }
 3804|       |
 3805|      0|            Py_SET_SIZE(self, Py_SIZE(self) - slicelength);
  ------------------
  |  |  216|      0|#  define Py_SET_SIZE(ob, size) _Py_SET_SIZE_impl(_PyVarObject_CAST(ob), (size))
  |  |  ------------------
  |  |  |  |  182|      0|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3806|      0|            res = list_resize(self, Py_SIZE(self));
  ------------------
  |  |  214|      0|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3807|       |
 3808|      0|            for (i = 0; i < slicelength; i++) {
  ------------------
  |  Branch (3808:25): [True: 0, False: 0]
  ------------------
 3809|      0|                Py_DECREF(garbage[i]);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3810|      0|            }
 3811|      0|            PyMem_Free(garbage);
 3812|       |
 3813|      0|            return res;
 3814|      0|        }
 3815|      1|        else {
 3816|       |            /* assign slice */
 3817|      1|            PyObject *ins, *seq;
 3818|      1|            PyObject **garbage, **seqitems, **selfitems;
 3819|      1|            Py_ssize_t i;
 3820|      1|            size_t cur;
 3821|       |
 3822|       |            /* protect against a[::-1] = a */
 3823|      1|            if (self == (PyListObject*)value) {
  ------------------
  |  Branch (3823:17): [True: 0, False: 1]
  ------------------
 3824|      0|                seq = list_slice_lock_held((PyListObject *)value, 0,
 3825|      0|                                            Py_SIZE(value));
  ------------------
  |  |  214|      0|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3826|      0|            }
 3827|      1|            else {
 3828|      1|                seq = PySequence_Fast(value,
 3829|      1|                                      "must assign iterable "
 3830|      1|                                      "to extended slice");
 3831|      1|            }
 3832|      1|            if (!seq)
  ------------------
  |  Branch (3832:17): [True: 0, False: 1]
  ------------------
 3833|      0|                return -1;
 3834|       |
 3835|      1|            Py_ssize_t slicelength = adjust_slice_indexes(self, &start, &stop,
 3836|      1|                                                          step);
 3837|       |
 3838|      1|            if (step == 1) {
  ------------------
  |  Branch (3838:17): [True: 1, False: 0]
  ------------------
 3839|      1|                int res = list_ass_slice_lock_held(self, start, stop, seq);
 3840|      1|                Py_DECREF(seq);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3841|      1|                return res;
 3842|      1|            }
 3843|       |
 3844|      0|            if (PySequence_Fast_GET_SIZE(seq) != slicelength) {
  ------------------
  |  |   92|      0|    (PyList_Check(o) ? PyList_GET_SIZE(o) : PyTuple_GET_SIZE(o))
  |  |  ------------------
  |  |  |  |   25|      0|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LIST_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (760:41): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (PyList_Check(o) ? PyList_GET_SIZE(o) : PyTuple_GET_SIZE(o))
  |  |  ------------------
  |  |  |  |   38|      0|#define PyList_GET_SIZE(op) PyList_GET_SIZE(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (PyList_Check(o) ? PyList_GET_SIZE(o) : PyTuple_GET_SIZE(o))
  |  |  ------------------
  |  |  |  |   27|      0|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3844:17): [True: 0, False: 0]
  ------------------
 3845|      0|                PyErr_Format(PyExc_ValueError,
 3846|      0|                    "attempt to assign sequence of "
 3847|      0|                    "size %zd to extended slice of "
 3848|      0|                    "size %zd",
 3849|      0|                         PySequence_Fast_GET_SIZE(seq),
  ------------------
  |  |   92|      0|    (PyList_Check(o) ? PyList_GET_SIZE(o) : PyTuple_GET_SIZE(o))
  |  |  ------------------
  |  |  |  |   25|      0|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LIST_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (760:41): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (PyList_Check(o) ? PyList_GET_SIZE(o) : PyTuple_GET_SIZE(o))
  |  |  ------------------
  |  |  |  |   38|      0|#define PyList_GET_SIZE(op) PyList_GET_SIZE(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (PyList_Check(o) ? PyList_GET_SIZE(o) : PyTuple_GET_SIZE(o))
  |  |  ------------------
  |  |  |  |   27|      0|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3850|      0|                         slicelength);
 3851|      0|                Py_DECREF(seq);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3852|      0|                return -1;
 3853|      0|            }
 3854|       |
 3855|      0|            if (!slicelength) {
  ------------------
  |  Branch (3855:17): [True: 0, False: 0]
  ------------------
 3856|      0|                Py_DECREF(seq);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3857|      0|                return 0;
 3858|      0|            }
 3859|       |
 3860|      0|            garbage = (PyObject**)
 3861|      0|                PyMem_Malloc(slicelength*sizeof(PyObject*));
 3862|      0|            if (!garbage) {
  ------------------
  |  Branch (3862:17): [True: 0, False: 0]
  ------------------
 3863|      0|                Py_DECREF(seq);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3864|      0|                PyErr_NoMemory();
 3865|      0|                return -1;
 3866|      0|            }
 3867|       |
 3868|      0|            selfitems = self->ob_item;
 3869|      0|            seqitems = PySequence_Fast_ITEMS(seq);
  ------------------
  |  |  102|      0|    (PyList_Check(sf) ? ((PyListObject *)(sf))->ob_item \
  |  |  ------------------
  |  |  |  |   25|      0|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LIST_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (760:41): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|      0|                      : ((PyTupleObject *)(sf))->ob_item)
  ------------------
 3870|      0|            for (cur = start, i = 0; i < slicelength;
  ------------------
  |  Branch (3870:38): [True: 0, False: 0]
  ------------------
 3871|      0|                 cur += (size_t)step, i++) {
 3872|      0|                garbage[i] = selfitems[cur];
 3873|      0|                ins = Py_NewRef(seqitems[i]);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3874|      0|                FT_ATOMIC_STORE_PTR_RELEASE(selfitems[cur], ins);
  ------------------
  |  |  164|      0|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  ------------------
 3875|      0|            }
 3876|       |
 3877|      0|            for (i = 0; i < slicelength; i++) {
  ------------------
  |  Branch (3877:25): [True: 0, False: 0]
  ------------------
 3878|      0|                Py_DECREF(garbage[i]);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3879|      0|            }
 3880|       |
 3881|      0|            PyMem_Free(garbage);
 3882|      0|            Py_DECREF(seq);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3883|       |
 3884|      0|            return 0;
 3885|      0|        }
 3886|      1|    }
 3887|      0|    else {
 3888|      0|        PyErr_Format(PyExc_TypeError,
 3889|      0|                     "list indices must be integers or slices, not %.200s",
 3890|      0|                     Py_TYPE(item)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3891|      0|        return -1;
 3892|      0|    }
 3893|      1|}
listobject.c:adjust_slice_indexes:
 3716|      1|{
 3717|      1|    Py_ssize_t slicelength = PySlice_AdjustIndices(Py_SIZE(lst), start, stop,
  ------------------
  |  |  214|      1|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3718|      1|                                                   step);
 3719|       |
 3720|       |    /* Make sure s[5:2] = [..] inserts at the right place:
 3721|       |        before 5, not before 2. */
 3722|      1|    if ((step < 0 && *start < *stop) ||
  ------------------
  |  Branch (3722:10): [True: 0, False: 1]
  |  Branch (3722:22): [True: 0, False: 0]
  ------------------
 3723|      1|        (step > 0 && *start > *stop))
  ------------------
  |  Branch (3723:10): [True: 1, False: 0]
  |  Branch (3723:22): [True: 0, False: 1]
  ------------------
 3724|      0|        *stop = *start;
 3725|       |
 3726|      1|    return slicelength;
 3727|      1|}
listobject.c:list_traverse:
 3429|     88|{
 3430|     88|    PyListObject *o = (PyListObject *)self;
 3431|     88|    Py_ssize_t i;
 3432|       |
 3433|    222|    for (i = Py_SIZE(o); --i >= 0; )
  ------------------
  |  |  214|     88|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     88|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     88|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3433:26): [True: 134, False: 88]
  ------------------
 3434|    134|        Py_VISIT(o->ob_item[i]);
  ------------------
  |  |  194|    134|    do {                                                                \
  |  |  195|    134|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 134, False: 0]
  |  |  ------------------
  |  |  196|    134|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|    134|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    134|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|    134|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 134]
  |  |  ------------------
  |  |  198|    134|                return vret;                                            \
  |  |  199|    134|        }                                                               \
  |  |  200|    134|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 134]
  |  |  ------------------
  ------------------
 3435|     88|    return 0;
 3436|     88|}
listobject.c:list_richcompare:
 3503|     31|{
 3504|     31|    PyObject *ret;
 3505|     31|    Py_BEGIN_CRITICAL_SECTION2(v, w);
  ------------------
  |  |   57|     31|    {
  ------------------
 3506|     31|    ret = list_richcompare_impl(v, w, op);
 3507|     31|    Py_END_CRITICAL_SECTION2()
  ------------------
  |  |   61|     31|    }
  ------------------
 3508|     31|    return ret;
 3509|     31|}
listobject.c:list_richcompare_impl:
 3440|     31|{
 3441|     31|    PyListObject *vl, *wl;
 3442|     31|    Py_ssize_t i;
 3443|       |
 3444|     31|    if (!PyList_Check(v) || !PyList_Check(w))
  ------------------
  |  |   25|     31|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LIST_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     62|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
                  if (!PyList_Check(v) || !PyList_Check(w))
  ------------------
  |  |   25|     31|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LIST_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     31|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (3444:9): [True: 0, False: 31]
  |  Branch (3444:29): [True: 0, False: 31]
  ------------------
 3445|      0|        Py_RETURN_NOTIMPLEMENTED;
  ------------------
  |  |  648|      0|#  define Py_RETURN_NOTIMPLEMENTED return Py_NotImplemented
  |  |  ------------------
  |  |  |  |  640|      0|#  define Py_NotImplemented (&_Py_NotImplementedStruct)
  |  |  ------------------
  ------------------
 3446|       |
 3447|     31|    vl = (PyListObject *)v;
 3448|     31|    wl = (PyListObject *)w;
 3449|       |
 3450|     31|    if (Py_SIZE(vl) != Py_SIZE(wl) && (op == Py_EQ || op == Py_NE)) {
  ------------------
  |  |  214|     31|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     31|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     31|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  if (Py_SIZE(vl) != Py_SIZE(wl) && (op == Py_EQ || op == Py_NE)) {
  ------------------
  |  |  214|     62|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     31|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     31|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  if (Py_SIZE(vl) != Py_SIZE(wl) && (op == Py_EQ || op == Py_NE)) {
  ------------------
  |  |  654|     12|#define Py_EQ 2
  ------------------
                  if (Py_SIZE(vl) != Py_SIZE(wl) && (op == Py_EQ || op == Py_NE)) {
  ------------------
  |  |  655|      0|#define Py_NE 3
  ------------------
  |  Branch (3450:9): [True: 6, False: 25]
  |  Branch (3450:40): [True: 6, False: 0]
  |  Branch (3450:55): [True: 0, False: 0]
  ------------------
 3451|       |        /* Shortcut: if the lengths differ, the lists differ */
 3452|      6|        if (op == Py_EQ)
  ------------------
  |  |  654|      6|#define Py_EQ 2
  ------------------
  |  Branch (3452:13): [True: 6, False: 0]
  ------------------
 3453|      6|            Py_RETURN_FALSE;
  ------------------
  |  |   45|      6|#  define Py_RETURN_FALSE return Py_False
  |  |  ------------------
  |  |  |  |   25|      6|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      6|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3454|      0|        else
 3455|      0|            Py_RETURN_TRUE;
  ------------------
  |  |   44|      0|#  define Py_RETURN_TRUE return Py_True
  |  |  ------------------
  |  |  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3456|      6|    }
 3457|       |
 3458|       |    /* Search for the first index where items are different */
 3459|     28|    for (i = 0; i < Py_SIZE(vl) && i < Py_SIZE(wl); i++) {
  ------------------
  |  |  214|     56|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     28|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     28|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  for (i = 0; i < Py_SIZE(vl) && i < Py_SIZE(wl); i++) {
  ------------------
  |  |  214|      3|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3459:17): [True: 3, False: 25]
  |  Branch (3459:36): [True: 3, False: 0]
  ------------------
 3460|      3|        PyObject *vitem = vl->ob_item[i];
 3461|      3|        PyObject *witem = wl->ob_item[i];
 3462|      3|        if (vitem == witem) {
  ------------------
  |  Branch (3462:13): [True: 0, False: 3]
  ------------------
 3463|      0|            continue;
 3464|      0|        }
 3465|       |
 3466|      3|        Py_INCREF(vitem);
  ------------------
  |  |  310|      3|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3467|      3|        Py_INCREF(witem);
  ------------------
  |  |  310|      3|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3468|      3|        int k = PyObject_RichCompareBool(vitem, witem, Py_EQ);
  ------------------
  |  |  654|      3|#define Py_EQ 2
  ------------------
 3469|      3|        Py_DECREF(vitem);
  ------------------
  |  |  430|      3|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3470|      3|        Py_DECREF(witem);
  ------------------
  |  |  430|      3|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3471|      3|        if (k < 0)
  ------------------
  |  Branch (3471:13): [True: 0, False: 3]
  ------------------
 3472|      0|            return NULL;
 3473|      3|        if (!k)
  ------------------
  |  Branch (3473:13): [True: 0, False: 3]
  ------------------
 3474|      0|            break;
 3475|      3|    }
 3476|       |
 3477|     25|    if (i >= Py_SIZE(vl) || i >= Py_SIZE(wl)) {
  ------------------
  |  |  214|     50|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     25|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     25|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  if (i >= Py_SIZE(vl) || i >= Py_SIZE(wl)) {
  ------------------
  |  |  214|      0|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3477:9): [True: 25, False: 0]
  |  Branch (3477:29): [True: 0, False: 0]
  ------------------
 3478|       |        /* No more items to compare -- compare sizes */
 3479|     25|        Py_RETURN_RICHCOMPARE(Py_SIZE(vl), Py_SIZE(wl), op);
  ------------------
  |  |  674|     25|    do {                                                                    \
  |  |  675|     25|        switch (op) {                                                       \
  |  |  676|     24|        case Py_EQ: if ((val1) == (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |  654|     24|#define Py_EQ 2
  |  |  ------------------
  |  |                       case Py_EQ: if ((val1) == (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |   44|     24|#  define Py_RETURN_TRUE return Py_True
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|     24|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|     24|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     24|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       case Py_EQ: if ((val1) == (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |   45|      0|#  define Py_RETURN_FALSE return Py_False
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (676:9): [True: 24, False: 1]
  |  |  |  Branch (676:25): [True: 24, False: 0]
  |  |  ------------------
  |  |  677|     24|        case Py_NE: if ((val1) != (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |  655|      1|#define Py_NE 3
  |  |  ------------------
  |  |                       case Py_NE: if ((val1) != (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |   44|      0|#  define Py_RETURN_TRUE return Py_True
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       case Py_NE: if ((val1) != (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |   45|      1|#  define Py_RETURN_FALSE return Py_False
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      1|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (677:9): [True: 1, False: 24]
  |  |  |  Branch (677:25): [True: 0, False: 1]
  |  |  ------------------
  |  |  678|      1|        case Py_LT: if ((val1) < (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;   \
  |  |  ------------------
  |  |  |  |  652|      0|#define Py_LT 0
  |  |  ------------------
  |  |                       case Py_LT: if ((val1) < (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;   \
  |  |  ------------------
  |  |  |  |   44|      0|#  define Py_RETURN_TRUE return Py_True
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       case Py_LT: if ((val1) < (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;   \
  |  |  ------------------
  |  |  |  |   45|      0|#  define Py_RETURN_FALSE return Py_False
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (678:9): [True: 0, False: 25]
  |  |  |  Branch (678:25): [True: 0, False: 0]
  |  |  ------------------
  |  |  679|      0|        case Py_GT: if ((val1) > (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;   \
  |  |  ------------------
  |  |  |  |  656|      0|#define Py_GT 4
  |  |  ------------------
  |  |                       case Py_GT: if ((val1) > (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;   \
  |  |  ------------------
  |  |  |  |   44|      0|#  define Py_RETURN_TRUE return Py_True
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       case Py_GT: if ((val1) > (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;   \
  |  |  ------------------
  |  |  |  |   45|      0|#  define Py_RETURN_FALSE return Py_False
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (679:9): [True: 0, False: 25]
  |  |  |  Branch (679:25): [True: 0, False: 0]
  |  |  ------------------
  |  |  680|      0|        case Py_LE: if ((val1) <= (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |  653|      0|#define Py_LE 1
  |  |  ------------------
  |  |                       case Py_LE: if ((val1) <= (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |   44|      0|#  define Py_RETURN_TRUE return Py_True
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       case Py_LE: if ((val1) <= (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |   45|      0|#  define Py_RETURN_FALSE return Py_False
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (680:9): [True: 0, False: 25]
  |  |  |  Branch (680:25): [True: 0, False: 0]
  |  |  ------------------
  |  |  681|      0|        case Py_GE: if ((val1) >= (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |  657|      0|#define Py_GE 5
  |  |  ------------------
  |  |                       case Py_GE: if ((val1) >= (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |   44|      0|#  define Py_RETURN_TRUE return Py_True
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       case Py_GE: if ((val1) >= (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |   45|      0|#  define Py_RETURN_FALSE return Py_False
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (681:9): [True: 0, False: 25]
  |  |  |  Branch (681:25): [True: 0, False: 0]
  |  |  ------------------
  |  |  682|      0|        default:                                                            \
  |  |  ------------------
  |  |  |  Branch (682:9): [True: 0, False: 25]
  |  |  ------------------
  |  |  683|      0|            Py_UNREACHABLE();                                               \
  |  |  ------------------
  |  |  |  |  264|      0|#  define Py_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  684|     25|        }                                                                   \
  |  |  685|     25|    } while (0)
  |  |  ------------------
  |  |  |  Branch (685:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3480|     25|    }
 3481|       |
 3482|       |    /* We have an item that differs -- shortcuts for EQ/NE */
 3483|      0|    if (op == Py_EQ) {
  ------------------
  |  |  654|      0|#define Py_EQ 2
  ------------------
  |  Branch (3483:9): [True: 0, False: 0]
  ------------------
 3484|      0|        Py_RETURN_FALSE;
  ------------------
  |  |   45|      0|#  define Py_RETURN_FALSE return Py_False
  |  |  ------------------
  |  |  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3485|      0|    }
 3486|      0|    if (op == Py_NE) {
  ------------------
  |  |  655|      0|#define Py_NE 3
  ------------------
  |  Branch (3486:9): [True: 0, False: 0]
  ------------------
 3487|      0|        Py_RETURN_TRUE;
  ------------------
  |  |   44|      0|#  define Py_RETURN_TRUE return Py_True
  |  |  ------------------
  |  |  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3488|      0|    }
 3489|       |
 3490|       |    /* Compare the final item again using the proper operator */
 3491|      0|    PyObject *vitem = vl->ob_item[i];
 3492|      0|    PyObject *witem = wl->ob_item[i];
 3493|      0|    Py_INCREF(vitem);
  ------------------
  |  |  310|      0|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3494|      0|    Py_INCREF(witem);
  ------------------
  |  |  310|      0|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3495|      0|    PyObject *result = PyObject_RichCompare(vl->ob_item[i], wl->ob_item[i], op);
 3496|      0|    Py_DECREF(vitem);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3497|      0|    Py_DECREF(witem);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3498|      0|    return result;
 3499|      0|}
listobject.c:list___reversed___impl:
 4190|      3|{
 4191|      3|    listreviterobject *it;
 4192|       |
 4193|      3|    it = PyObject_GC_New(listreviterobject, &PyListRevIter_Type);
  ------------------
  |  |  181|      3|    _Py_CAST(type*, _PyObject_GC_New(typeobj))
  |  |  ------------------
  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
 4194|      3|    if (it == NULL)
  ------------------
  |  Branch (4194:9): [True: 0, False: 3]
  ------------------
 4195|      0|        return NULL;
 4196|      3|    assert(PyList_Check(self));
  ------------------
  |  Branch (4196:5): [True: 3, False: 0]
  ------------------
 4197|      3|    it->it_index = PyList_GET_SIZE(self) - 1;
  ------------------
  |  |   38|      3|#define PyList_GET_SIZE(op) PyList_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4198|      3|    it->it_seq = (PyListObject*)Py_NewRef(self);
  ------------------
  |  |  550|      3|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4199|      3|    PyObject_GC_Track(it);
 4200|      3|    return (PyObject *)it;
 4201|      3|}
listobject.c:py_list_clear_impl:
 1202|      2|{
 1203|      2|    list_clear(self);
 1204|      2|    Py_RETURN_NONE;
  ------------------
  |  |  628|      2|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|      2|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
 1205|      2|}
listobject.c:list_append_impl:
 1234|     50|{
 1235|     50|    if (_PyList_AppendTakeRef(self, Py_NewRef(object)) < 0) {
  ------------------
  |  |  550|     50|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     50|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     50|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1235:9): [True: 0, False: 50]
  ------------------
 1236|      0|        return NULL;
 1237|      0|    }
 1238|     50|    Py_RETURN_NONE;
  ------------------
  |  |  628|     50|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|     50|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
 1239|     50|}
listobject.c:list_insert_impl:
 1185|      1|{
 1186|      1|    if (ins1(self, index, object) == 0) {
  ------------------
  |  Branch (1186:9): [True: 1, False: 0]
  ------------------
 1187|      1|        Py_RETURN_NONE;
  ------------------
  |  |  628|      1|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|      1|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
 1188|      1|    }
 1189|      0|    return NULL;
 1190|      1|}
listobject.c:list_pop_impl:
 1588|     32|{
 1589|     32|    PyObject *v;
 1590|       |
 1591|     32|    if (Py_SIZE(self) == 0) {
  ------------------
  |  |  214|     32|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     32|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     32|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1591:9): [True: 0, False: 32]
  ------------------
 1592|       |        /* Special-case most common failure cause */
 1593|      0|        PyErr_SetString(PyExc_IndexError, "pop from empty list");
 1594|      0|        return NULL;
 1595|      0|    }
 1596|     32|    if (index < 0)
  ------------------
  |  Branch (1596:9): [True: 32, False: 0]
  ------------------
 1597|     32|        index += Py_SIZE(self);
  ------------------
  |  |  214|     32|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     32|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     32|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1598|     32|    if (!valid_index(index, Py_SIZE(self))) {
  ------------------
  |  |  214|     32|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     32|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     32|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1598:9): [True: 0, False: 32]
  ------------------
 1599|      0|        PyErr_SetString(PyExc_IndexError, "pop index out of range");
 1600|      0|        return NULL;
 1601|      0|    }
 1602|       |
 1603|     32|    PyObject **items = self->ob_item;
 1604|     32|    v = items[index];
 1605|     32|    if (Py_SIZE(self) == 1) {
  ------------------
  |  |  214|     32|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     32|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     32|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1605:9): [True: 26, False: 6]
  ------------------
 1606|     26|        Py_INCREF(v);
  ------------------
  |  |  310|     26|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     26|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     26|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1607|     26|        list_clear(self);
 1608|     26|        return v;
 1609|     26|    }
 1610|      6|    Py_ssize_t size_after_pop = Py_SIZE(self) - 1;
  ------------------
  |  |  214|      6|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      6|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1611|      6|    if (index < size_after_pop) {
  ------------------
  |  Branch (1611:9): [True: 0, False: 6]
  ------------------
 1612|      0|        ptr_wise_atomic_memmove(self, &items[index], &items[index+1],
 1613|      0|                                size_after_pop - index);
 1614|      0|    }
 1615|      6|    list_resize(self, size_after_pop);  // NB: shrinking a list can't fail
 1616|      6|    return v;
 1617|     32|}
listobject.c:list_remove_impl:
 3407|     30|{
 3408|     30|    Py_ssize_t i;
 3409|       |
 3410|     30|    for (i = 0; i < Py_SIZE(self); i++) {
  ------------------
  |  |  214|     30|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     30|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     30|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3410:17): [True: 30, False: 0]
  ------------------
 3411|     30|        PyObject *obj = self->ob_item[i];
 3412|     30|        Py_INCREF(obj);
  ------------------
  |  |  310|     30|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     30|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     30|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3413|     30|        int cmp = PyObject_RichCompareBool(obj, value, Py_EQ);
  ------------------
  |  |  654|     30|#define Py_EQ 2
  ------------------
 3414|     30|        Py_DECREF(obj);
  ------------------
  |  |  430|     30|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     30|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     30|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3415|     30|        if (cmp > 0) {
  ------------------
  |  Branch (3415:13): [True: 30, False: 0]
  ------------------
 3416|     30|            if (list_ass_slice_lock_held(self, i, i+1, NULL) == 0)
  ------------------
  |  Branch (3416:17): [True: 30, False: 0]
  ------------------
 3417|     30|                Py_RETURN_NONE;
  ------------------
  |  |  628|     30|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|     30|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
 3418|      0|            return NULL;
 3419|     30|        }
 3420|      0|        else if (cmp < 0)
  ------------------
  |  Branch (3420:18): [True: 0, False: 0]
  ------------------
 3421|      0|            return NULL;
 3422|     30|    }
 3423|      0|    PyErr_SetString(PyExc_ValueError, "list.remove(x): x not in list");
 3424|       |    return NULL;
 3425|     30|}
listobject.c:list___init___impl:
 3526|     54|{
 3527|       |    /* Verify list invariants established by PyType_GenericAlloc() */
 3528|     54|    assert(0 <= Py_SIZE(self));
  ------------------
  |  Branch (3528:5): [True: 54, False: 0]
  ------------------
 3529|     54|    assert(Py_SIZE(self) <= self->allocated || self->allocated == -1);
  ------------------
  |  Branch (3529:5): [True: 54, False: 0]
  |  Branch (3529:5): [True: 0, False: 0]
  ------------------
 3530|     54|    assert(self->ob_item != NULL ||
  ------------------
  |  Branch (3530:5): [True: 0, False: 54]
  |  Branch (3530:5): [True: 54, False: 0]
  |  Branch (3530:5): [True: 0, False: 0]
  ------------------
 3531|     54|           self->allocated == 0 || self->allocated == -1);
 3532|       |
 3533|       |    /* Empty previous contents */
 3534|     54|    if (self->ob_item != NULL) {
  ------------------
  |  Branch (3534:9): [True: 0, False: 54]
  ------------------
 3535|      0|        Py_BEGIN_CRITICAL_SECTION(self);
  ------------------
  |  |   51|      0|    {
  ------------------
 3536|      0|        list_clear(self);
 3537|      0|        Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|      0|    }
  ------------------
 3538|      0|    }
 3539|     54|    if (iterable != NULL) {
  ------------------
  |  Branch (3539:9): [True: 24, False: 30]
  ------------------
 3540|     24|        if (_list_extend(self, iterable) < 0) {
  ------------------
  |  Branch (3540:13): [True: 0, False: 24]
  ------------------
 3541|      0|            return -1;
 3542|      0|        }
 3543|     24|    }
 3544|     54|    return 0;
 3545|     54|}
listobject.c:list_vectorcall:
 3550|     24|{
 3551|     24|    if (!_PyArg_NoKwnames("list", kwnames)) {
  ------------------
  |  |   15|     24|    ((kwnames) == NULL || _PyArg_NoKwnames((funcname), (kwnames)))
  |  |  ------------------
  |  |  |  Branch (15:6): [True: 24, False: 0]
  |  |  |  Branch (15:27): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3552|      0|        return NULL;
 3553|      0|    }
 3554|     24|    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
  ------------------
  |  |   37|     24|#define PyVectorcall_NARGS(n) _PyVectorcall_NARGS(n)
  ------------------
 3555|     24|    if (!_PyArg_CheckPositional("list", nargs, 0, 1)) {
  ------------------
  |  |   31|     24|    (((min) <= (nargs) && (nargs) <= (max)) \
  |  |  ------------------
  |  |  |  Branch (31:7): [True: 24, False: 0]
  |  |  |  Branch (31:27): [True: 24, False: 0]
  |  |  ------------------
  |  |   32|     24|     || _PyArg_CheckPositional((funcname), (nargs), (min), (max)))
  |  |  ------------------
  |  |  |  Branch (32:9): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3556|      0|        return NULL;
 3557|      0|    }
 3558|       |
 3559|     24|    PyObject *list = PyType_GenericAlloc(_PyType_CAST(type), 0);
  ------------------
  |  |  770|     24|    (assert(PyType_Check(op)), _Py_CAST(PyTypeObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|     24|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (3559:42): [True: 24, False: 0]
  ------------------
 3560|     24|    if (list == NULL) {
  ------------------
  |  Branch (3560:9): [True: 0, False: 24]
  ------------------
 3561|      0|        return NULL;
 3562|      0|    }
 3563|     24|    if (nargs) {
  ------------------
  |  Branch (3563:9): [True: 24, False: 0]
  ------------------
 3564|     24|        if (list___init___impl((PyListObject *)list, args[0])) {
  ------------------
  |  Branch (3564:13): [True: 0, False: 24]
  ------------------
 3565|      0|            Py_DECREF(list);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3566|      0|            return NULL;
 3567|      0|        }
 3568|     24|    }
 3569|     24|    return list;
 3570|     24|}
listobject.c:list_iteritem:
 3915|     23|{
 3916|     23|    PyObject *result = list_get_item_ref((PyListObject *)obj, index);
 3917|     23|    return (_PyObjectIndexPair) { .object = result, .index = index + 1 };
 3918|     23|}
listobject.c:list_iter:
 4030|      4|{
 4031|      4|    if (!PyList_Check(seq)) {
  ------------------
  |  |   25|      4|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LIST_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      4|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (4031:9): [True: 0, False: 4]
  ------------------
 4032|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
 4033|      0|        return NULL;
 4034|      0|    }
 4035|      4|    _PyListIterObject *it = _Py_FREELIST_POP(_PyListIterObject, list_iters);
  ------------------
  |  |   43|      4|    _Py_CAST(TYPE*, _PyFreeList_Pop(&_Py_freelists_GET()->NAME))
  |  |  ------------------
  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
 4036|      4|    if (it == NULL) {
  ------------------
  |  Branch (4036:9): [True: 1, False: 3]
  ------------------
 4037|      1|        it = PyObject_GC_New(_PyListIterObject, &PyListIter_Type);
  ------------------
  |  |  181|      1|    _Py_CAST(type*, _PyObject_GC_New(typeobj))
  |  |  ------------------
  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
 4038|      1|        if (it == NULL) {
  ------------------
  |  Branch (4038:13): [True: 0, False: 1]
  ------------------
 4039|      0|            return NULL;
 4040|      0|        }
 4041|      1|    }
 4042|      4|    it->it_index = 0;
 4043|      4|    it->it_seq = (PyListObject *)Py_NewRef(seq);
  ------------------
  |  |  550|      4|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4044|      4|    _PyObject_GC_TRACK(it);
  ------------------
  |  |  513|      4|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4045|      4|    return (PyObject *)it;
 4046|      4|}
listobject.c:listiter_dealloc:
 4050|      4|{
 4051|      4|    _PyListIterObject *it = (_PyListIterObject *)self;
 4052|      4|    _PyObject_GC_UNTRACK(it);
  ------------------
  |  |  515|      4|        _PyObject_GC_UNTRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4053|      4|    Py_XDECREF(it->it_seq);
  ------------------
  |  |  524|      4|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4054|      4|    assert(Py_IS_TYPE(self, &PyListIter_Type));
  ------------------
  |  Branch (4054:5): [True: 4, False: 0]
  ------------------
 4055|      4|    _Py_FREELIST_FREE(list_iters, it, PyObject_GC_Del);
  ------------------
  |  |   35|      4|    _PyFreeList_Free(&_Py_freelists_GET()->NAME, _PyObject_CAST(op), \
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   36|      4|                     Py_ ## NAME ## _MAXFREELIST, freefunc)
  |  |  ------------------
  |  |  |  |   14|      4|#  define Py_list_iters_MAXFREELIST 10
  |  |  ------------------
  ------------------
 4056|      4|}
listobject.c:listiter_next:
 4067|    276|{
 4068|    276|    _PyListIterObject *it = (_PyListIterObject *)self;
 4069|    276|    Py_ssize_t index = FT_ATOMIC_LOAD_SSIZE_RELAXED(it->it_index);
  ------------------
  |  |  149|    276|#define FT_ATOMIC_LOAD_SSIZE_RELAXED(value) value
  ------------------
 4070|    276|    if (index < 0) {
  ------------------
  |  Branch (4070:9): [True: 0, False: 276]
  ------------------
 4071|      0|        return NULL;
 4072|      0|    }
 4073|       |
 4074|    276|    PyObject *item = list_get_item_ref(it->it_seq, index);
 4075|    276|    if (item == NULL) {
  ------------------
  |  Branch (4075:9): [True: 3, False: 273]
  ------------------
 4076|       |        // out-of-bounds
 4077|      3|        FT_ATOMIC_STORE_SSIZE_RELAXED(it->it_index, -1);
  ------------------
  |  |  194|      3|#define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) value = new_value
  ------------------
 4078|      3|#ifndef Py_GIL_DISABLED
 4079|      3|        PyListObject *seq = it->it_seq;
 4080|      3|        it->it_seq = NULL;
 4081|      3|        Py_DECREF(seq);
  ------------------
  |  |  430|      3|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4082|      3|#endif
 4083|      3|        return NULL;
 4084|      3|    }
 4085|    273|    FT_ATOMIC_STORE_SSIZE_RELAXED(it->it_index, index + 1);
  ------------------
  |  |  194|    273|#define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) value = new_value
  ------------------
 4086|    273|    return item;
 4087|    276|}
listobject.c:listreviter_dealloc:
 4205|      3|{
 4206|      3|    listreviterobject *it = (listreviterobject *)self;
 4207|      3|    PyObject_GC_UnTrack(it);
 4208|      3|    Py_XDECREF(it->it_seq);
  ------------------
  |  |  524|      3|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4209|      3|    PyObject_GC_Del(it);
 4210|      3|}
listobject.c:listreviter_next:
 4221|      5|{
 4222|      5|    listreviterobject *it = (listreviterobject *)self;
 4223|      5|    assert(it != NULL);
  ------------------
  |  Branch (4223:5): [True: 5, False: 0]
  ------------------
 4224|      5|    Py_ssize_t index = FT_ATOMIC_LOAD_SSIZE_RELAXED(it->it_index);
  ------------------
  |  |  149|      5|#define FT_ATOMIC_LOAD_SSIZE_RELAXED(value) value
  ------------------
 4225|      5|    if (index < 0) {
  ------------------
  |  Branch (4225:9): [True: 2, False: 3]
  ------------------
 4226|      2|        return NULL;
 4227|      2|    }
 4228|       |
 4229|      3|    PyListObject *seq = it->it_seq;
 4230|      3|    assert(PyList_Check(seq));
  ------------------
  |  Branch (4230:5): [True: 3, False: 0]
  ------------------
 4231|      3|    PyObject *item = list_get_item_ref(seq, index);
 4232|      3|    if (item != NULL) {
  ------------------
  |  Branch (4232:9): [True: 3, False: 0]
  ------------------
 4233|      3|        FT_ATOMIC_STORE_SSIZE_RELAXED(it->it_index, index - 1);
  ------------------
  |  |  194|      3|#define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) value = new_value
  ------------------
 4234|      3|        return item;
 4235|      3|    }
 4236|      0|    FT_ATOMIC_STORE_SSIZE_RELAXED(it->it_index, -1);
  ------------------
  |  |  194|      0|#define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) value = new_value
  ------------------
 4237|      0|#ifndef Py_GIL_DISABLED
 4238|      0|    it->it_seq = NULL;
 4239|      0|    Py_DECREF(seq);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4240|      0|#endif
 4241|       |    return NULL;
 4242|      3|}

PyLong_FromLong:
  408|    979|{
  409|       |    PYLONG_FROM_INT(unsigned long, long, ival);
  ------------------
  |  |  371|    979|    do {                                                                            \
  |  |  372|    979|        /* Handle small and medium cases. */                                        \
  |  |  373|    979|        if (IS_SMALL_INT(ival)) {                                                   \
  |  |  ------------------
  |  |  |  |   29|    979|#define IS_SMALL_INT(ival) _PY_IS_SMALL_INT(ival)
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|    979|    (-_PY_NSMALLNEGINTS <= (val) && (val) < _PY_NSMALLPOSINTS)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   98|    979|#define _PY_NSMALLNEGINTS           5
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   (-_PY_NSMALLNEGINTS <= (val) && (val) < _PY_NSMALLPOSINTS)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   97|    976|#define _PY_NSMALLPOSINTS           1025
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (68:6): [True: 976, False: 3]
  |  |  |  |  |  |  |  Branch (68:37): [True: 789, False: 187]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  374|    789|            return get_small_int((sdigit)(ival));                                   \
  |  |  375|    789|        }                                                                           \
  |  |  376|    979|        if (-(INT_TYPE)PyLong_MASK <= (ival) && (ival) <= (INT_TYPE)PyLong_MASK) {  \
  |  |  ------------------
  |  |  |  |   62|    190|#define PyLong_MASK     ((digit)(PyLong_BASE - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   61|    190|#define PyLong_BASE     ((digit)1 << PyLong_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   47|    190|#define PyLong_SHIFT    30
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       if (-(INT_TYPE)PyLong_MASK <= (ival) && (ival) <= (INT_TYPE)PyLong_MASK) {  \
  |  |  ------------------
  |  |  |  |   62|    190|#define PyLong_MASK     ((digit)(PyLong_BASE - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   61|    190|#define PyLong_BASE     ((digit)1 << PyLong_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   47|    190|#define PyLong_SHIFT    30
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (376:13): [True: 190, False: 0]
  |  |  |  Branch (376:49): [True: 172, False: 18]
  |  |  ------------------
  |  |  377|    172|            return _PyLong_FromMedium((sdigit)(ival));                              \
  |  |  378|    172|        }                                                                           \
  |  |  379|    190|        UINT_TYPE abs_ival = (ival) < 0 ? 0U-(UINT_TYPE)(ival) : (UINT_TYPE)(ival); \
  |  |  ------------------
  |  |  |  Branch (379:30): [True: 0, False: 18]
  |  |  ------------------
  |  |  380|     18|        /* Do shift in two steps to avoid possible undefined behavior. */           \
  |  |  381|     18|        UINT_TYPE t = abs_ival >> PyLong_SHIFT >> PyLong_SHIFT;                     \
  |  |  ------------------
  |  |  |  |   47|     18|#define PyLong_SHIFT    30
  |  |  ------------------
  |  |                       UINT_TYPE t = abs_ival >> PyLong_SHIFT >> PyLong_SHIFT;                     \
  |  |  ------------------
  |  |  |  |   47|     18|#define PyLong_SHIFT    30
  |  |  ------------------
  |  |  382|     18|        /* Count digits (at least two - smaller cases were handled above). */       \
  |  |  383|     18|        Py_ssize_t ndigits = 2;                                                     \
  |  |  384|     18|        while (t) {                                                                 \
  |  |  ------------------
  |  |  |  Branch (384:16): [True: 0, False: 18]
  |  |  ------------------
  |  |  385|      0|            ++ndigits;                                                              \
  |  |  386|      0|            t >>= PyLong_SHIFT;                                                     \
  |  |  ------------------
  |  |  |  |   47|      0|#define PyLong_SHIFT    30
  |  |  ------------------
  |  |  387|      0|        }                                                                           \
  |  |  388|     18|        /* Construct output value. */                                               \
  |  |  389|     18|        PyLongObject *v = long_alloc(ndigits);                                      \
  |  |  390|     18|        if (v == NULL) {                                                            \
  |  |  ------------------
  |  |  |  Branch (390:13): [True: 0, False: 18]
  |  |  ------------------
  |  |  391|      0|            return NULL;                                                            \
  |  |  392|      0|        }                                                                           \
  |  |  393|     18|        digit *p = v->long_value.ob_digit;                                          \
  |  |  394|     18|        _PyLong_SetSignAndDigitCount(v, (ival) < 0 ? -1 : 1, ndigits);              \
  |  |  ------------------
  |  |  |  Branch (394:41): [True: 0, False: 18]
  |  |  ------------------
  |  |  395|     18|        t = abs_ival;                                                               \
  |  |  396|     54|        while (t) {                                                                 \
  |  |  ------------------
  |  |  |  Branch (396:16): [True: 36, False: 18]
  |  |  ------------------
  |  |  397|     36|            *p++ = (digit)(t & PyLong_MASK);                                        \
  |  |  ------------------
  |  |  |  |   62|     36|#define PyLong_MASK     ((digit)(PyLong_BASE - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   61|     36|#define PyLong_BASE     ((digit)1 << PyLong_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   47|     36|#define PyLong_SHIFT    30
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  398|     36|            t >>= PyLong_SHIFT;                                                     \
  |  |  ------------------
  |  |  |  |   47|     36|#define PyLong_SHIFT    30
  |  |  ------------------
  |  |  399|     36|        }                                                                           \
  |  |  400|     18|        return (PyObject *)v;                                                       \
  |  |  401|     18|    } while(0)
  |  |  ------------------
  |  |  |  Branch (401:13): [Folded, False: 0]
  |  |  ------------------
  ------------------
  410|    979|}
PyLong_FromUnsignedLong:
  446|    379|{
  447|       |    PYLONG_FROM_UINT(unsigned long, ival);
  ------------------
  |  |  413|    379|    do { \
  |  |  414|    379|        /* Handle small and medium cases. */ \
  |  |  415|    379|        if (IS_SMALL_UINT(ival)) { \
  |  |  ------------------
  |  |  |  |   30|    379|#define IS_SMALL_UINT(ival) ((ival) < _PY_NSMALLPOSINTS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   97|    379|#define _PY_NSMALLPOSINTS           1025
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (30:29): [True: 35, False: 344]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  416|     35|            return get_small_int((sdigit)(ival)); \
  |  |  417|     35|        } \
  |  |  418|    379|        if ((ival) <= PyLong_MASK) { \
  |  |  ------------------
  |  |  |  |   62|    344|#define PyLong_MASK     ((digit)(PyLong_BASE - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   61|    344|#define PyLong_BASE     ((digit)1 << PyLong_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   47|    344|#define PyLong_SHIFT    30
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (418:13): [True: 0, False: 344]
  |  |  ------------------
  |  |  419|      0|            return _PyLong_FromMedium((sdigit)(ival)); \
  |  |  420|      0|        } \
  |  |  421|    344|        /* Do shift in two steps to avoid possible undefined behavior. */ \
  |  |  422|    344|        INT_TYPE t = (ival) >> PyLong_SHIFT >> PyLong_SHIFT; \
  |  |  ------------------
  |  |  |  |   47|    344|#define PyLong_SHIFT    30
  |  |  ------------------
  |  |                       INT_TYPE t = (ival) >> PyLong_SHIFT >> PyLong_SHIFT; \
  |  |  ------------------
  |  |  |  |   47|    344|#define PyLong_SHIFT    30
  |  |  ------------------
  |  |  423|    344|        /* Count digits (at least two - smaller cases were handled above). */ \
  |  |  424|    344|        Py_ssize_t ndigits = 2; \
  |  |  425|    344|        while (t) { \
  |  |  ------------------
  |  |  |  Branch (425:16): [True: 0, False: 344]
  |  |  ------------------
  |  |  426|      0|            ++ndigits; \
  |  |  427|      0|            t >>= PyLong_SHIFT; \
  |  |  ------------------
  |  |  |  |   47|      0|#define PyLong_SHIFT    30
  |  |  ------------------
  |  |  428|      0|        } \
  |  |  429|    344|        /* Construct output value. */ \
  |  |  430|    344|        PyLongObject *v = long_alloc(ndigits); \
  |  |  431|    344|        if (v == NULL) { \
  |  |  ------------------
  |  |  |  Branch (431:13): [True: 0, False: 344]
  |  |  ------------------
  |  |  432|      0|            return NULL; \
  |  |  433|      0|        } \
  |  |  434|    344|        digit *p = v->long_value.ob_digit; \
  |  |  435|  1.03k|        while ((ival)) { \
  |  |  ------------------
  |  |  |  Branch (435:16): [True: 688, False: 344]
  |  |  ------------------
  |  |  436|    688|            *p++ = (digit)((ival) & PyLong_MASK); \
  |  |  ------------------
  |  |  |  |   62|    688|#define PyLong_MASK     ((digit)(PyLong_BASE - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   61|    688|#define PyLong_BASE     ((digit)1 << PyLong_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   47|    688|#define PyLong_SHIFT    30
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  437|    688|            (ival) >>= PyLong_SHIFT; \
  |  |  ------------------
  |  |  |  |   47|    688|#define PyLong_SHIFT    30
  |  |  ------------------
  |  |  438|    688|        } \
  |  |  439|    344|        return (PyObject *)v; \
  |  |  440|    344|    } while(0)
  |  |  ------------------
  |  |  |  Branch (440:13): [Folded, False: 0]
  |  |  ------------------
  ------------------
  448|    379|}
PyLong_FromUnsignedLongLong:
  454|    102|{
  455|       |    PYLONG_FROM_UINT(unsigned long long, ival);
  ------------------
  |  |  413|    102|    do { \
  |  |  414|    102|        /* Handle small and medium cases. */ \
  |  |  415|    102|        if (IS_SMALL_UINT(ival)) { \
  |  |  ------------------
  |  |  |  |   30|    102|#define IS_SMALL_UINT(ival) ((ival) < _PY_NSMALLPOSINTS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   97|    102|#define _PY_NSMALLPOSINTS           1025
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (30:29): [True: 14, False: 88]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  416|     14|            return get_small_int((sdigit)(ival)); \
  |  |  417|     14|        } \
  |  |  418|    102|        if ((ival) <= PyLong_MASK) { \
  |  |  ------------------
  |  |  |  |   62|     88|#define PyLong_MASK     ((digit)(PyLong_BASE - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   61|     88|#define PyLong_BASE     ((digit)1 << PyLong_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   47|     88|#define PyLong_SHIFT    30
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (418:13): [True: 28, False: 60]
  |  |  ------------------
  |  |  419|     28|            return _PyLong_FromMedium((sdigit)(ival)); \
  |  |  420|     28|        } \
  |  |  421|     88|        /* Do shift in two steps to avoid possible undefined behavior. */ \
  |  |  422|     88|        INT_TYPE t = (ival) >> PyLong_SHIFT >> PyLong_SHIFT; \
  |  |  ------------------
  |  |  |  |   47|     60|#define PyLong_SHIFT    30
  |  |  ------------------
  |  |                       INT_TYPE t = (ival) >> PyLong_SHIFT >> PyLong_SHIFT; \
  |  |  ------------------
  |  |  |  |   47|     60|#define PyLong_SHIFT    30
  |  |  ------------------
  |  |  423|     60|        /* Count digits (at least two - smaller cases were handled above). */ \
  |  |  424|     60|        Py_ssize_t ndigits = 2; \
  |  |  425|     60|        while (t) { \
  |  |  ------------------
  |  |  |  Branch (425:16): [True: 0, False: 60]
  |  |  ------------------
  |  |  426|      0|            ++ndigits; \
  |  |  427|      0|            t >>= PyLong_SHIFT; \
  |  |  ------------------
  |  |  |  |   47|      0|#define PyLong_SHIFT    30
  |  |  ------------------
  |  |  428|      0|        } \
  |  |  429|     60|        /* Construct output value. */ \
  |  |  430|     60|        PyLongObject *v = long_alloc(ndigits); \
  |  |  431|     60|        if (v == NULL) { \
  |  |  ------------------
  |  |  |  Branch (431:13): [True: 0, False: 60]
  |  |  ------------------
  |  |  432|      0|            return NULL; \
  |  |  433|      0|        } \
  |  |  434|     60|        digit *p = v->long_value.ob_digit; \
  |  |  435|    180|        while ((ival)) { \
  |  |  ------------------
  |  |  |  Branch (435:16): [True: 120, False: 60]
  |  |  ------------------
  |  |  436|    120|            *p++ = (digit)((ival) & PyLong_MASK); \
  |  |  ------------------
  |  |  |  |   62|    120|#define PyLong_MASK     ((digit)(PyLong_BASE - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   61|    120|#define PyLong_BASE     ((digit)1 << PyLong_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   47|    120|#define PyLong_SHIFT    30
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  437|    120|            (ival) >>= PyLong_SHIFT; \
  |  |  ------------------
  |  |  |  |   47|    120|#define PyLong_SHIFT    30
  |  |  ------------------
  |  |  438|    120|        } \
  |  |  439|     60|        return (PyObject *)v; \
  |  |  440|     60|    } while(0)
  |  |  ------------------
  |  |  |  Branch (440:13): [Folded, False: 0]
  |  |  ------------------
  ------------------
  456|    102|}
PyLong_FromSize_t:
  462|     29|{
  463|       |    PYLONG_FROM_UINT(size_t, ival);
  ------------------
  |  |  413|     29|    do { \
  |  |  414|     29|        /* Handle small and medium cases. */ \
  |  |  415|     29|        if (IS_SMALL_UINT(ival)) { \
  |  |  ------------------
  |  |  |  |   30|     29|#define IS_SMALL_UINT(ival) ((ival) < _PY_NSMALLPOSINTS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   97|     29|#define _PY_NSMALLPOSINTS           1025
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (30:29): [True: 29, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  416|     29|            return get_small_int((sdigit)(ival)); \
  |  |  417|     29|        } \
  |  |  418|     29|        if ((ival) <= PyLong_MASK) { \
  |  |  ------------------
  |  |  |  |   62|      0|#define PyLong_MASK     ((digit)(PyLong_BASE - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   61|      0|#define PyLong_BASE     ((digit)1 << PyLong_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   47|      0|#define PyLong_SHIFT    30
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (418:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  419|      0|            return _PyLong_FromMedium((sdigit)(ival)); \
  |  |  420|      0|        } \
  |  |  421|      0|        /* Do shift in two steps to avoid possible undefined behavior. */ \
  |  |  422|      0|        INT_TYPE t = (ival) >> PyLong_SHIFT >> PyLong_SHIFT; \
  |  |  ------------------
  |  |  |  |   47|      0|#define PyLong_SHIFT    30
  |  |  ------------------
  |  |                       INT_TYPE t = (ival) >> PyLong_SHIFT >> PyLong_SHIFT; \
  |  |  ------------------
  |  |  |  |   47|      0|#define PyLong_SHIFT    30
  |  |  ------------------
  |  |  423|      0|        /* Count digits (at least two - smaller cases were handled above). */ \
  |  |  424|      0|        Py_ssize_t ndigits = 2; \
  |  |  425|      0|        while (t) { \
  |  |  ------------------
  |  |  |  Branch (425:16): [True: 0, False: 0]
  |  |  ------------------
  |  |  426|      0|            ++ndigits; \
  |  |  427|      0|            t >>= PyLong_SHIFT; \
  |  |  ------------------
  |  |  |  |   47|      0|#define PyLong_SHIFT    30
  |  |  ------------------
  |  |  428|      0|        } \
  |  |  429|      0|        /* Construct output value. */ \
  |  |  430|      0|        PyLongObject *v = long_alloc(ndigits); \
  |  |  431|      0|        if (v == NULL) { \
  |  |  ------------------
  |  |  |  Branch (431:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  432|      0|            return NULL; \
  |  |  433|      0|        } \
  |  |  434|      0|        digit *p = v->long_value.ob_digit; \
  |  |  435|      0|        while ((ival)) { \
  |  |  ------------------
  |  |  |  Branch (435:16): [True: 0, False: 0]
  |  |  ------------------
  |  |  436|      0|            *p++ = (digit)((ival) & PyLong_MASK); \
  |  |  ------------------
  |  |  |  |   62|      0|#define PyLong_MASK     ((digit)(PyLong_BASE - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   61|      0|#define PyLong_BASE     ((digit)1 << PyLong_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   47|      0|#define PyLong_SHIFT    30
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  437|      0|            (ival) >>= PyLong_SHIFT; \
  |  |  ------------------
  |  |  |  |   47|      0|#define PyLong_SHIFT    30
  |  |  ------------------
  |  |  438|      0|        } \
  |  |  439|      0|        return (PyObject *)v; \
  |  |  440|      0|    } while(0)
  |  |  ------------------
  |  |  |  Branch (440:13): [Folded, False: 0]
  |  |  ------------------
  ------------------
  464|     29|}
PyLong_AsLongAndOverflow:
  594|    150|{
  595|       |    /* This version originally by Tim Peters */
  596|    150|    PyLongObject *v;
  597|    150|    long res;
  598|    150|    Py_ssize_t i;
  599|    150|    int sign;
  600|    150|    int do_decref = 0; /* if PyNumber_Index was called */
  601|       |
  602|    150|    *overflow = 0;
  603|    150|    if (vv == NULL) {
  ------------------
  |  Branch (603:9): [True: 0, False: 150]
  ------------------
  604|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
  605|      0|        return -1;
  606|      0|    }
  607|       |
  608|    150|    if (PyLong_Check(vv)) {
  ------------------
  |  |   13|    150|        PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|    150|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 150, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  609|    150|        v = (PyLongObject *)vv;
  610|    150|    }
  611|      0|    else {
  612|      0|        v = (PyLongObject *)_PyNumber_Index(vv);
  613|      0|        if (v == NULL)
  ------------------
  |  Branch (613:13): [True: 0, False: 0]
  ------------------
  614|      0|            return -1;
  615|      0|        do_decref = 1;
  616|      0|    }
  617|    150|    if (_PyLong_IsCompact(v)) {
  ------------------
  |  Branch (617:9): [True: 148, False: 2]
  ------------------
  618|       |#if SIZEOF_LONG < SIZEOF_SIZE_T
  619|       |        Py_ssize_t tmp = _PyLong_CompactValue(v);
  620|       |        if (tmp < LONG_MIN) {
  621|       |            *overflow = -1;
  622|       |            res = -1;
  623|       |        }
  624|       |        else if (tmp > LONG_MAX) {
  625|       |            *overflow = 1;
  626|       |            res = -1;
  627|       |        }
  628|       |        else {
  629|       |            res = (long)tmp;
  630|       |        }
  631|       |#else
  632|    148|        res = _PyLong_CompactValue(v);
  633|    148|#endif
  634|    148|    }
  635|      2|    else {
  636|      2|        res = -1;
  637|      2|        i = _PyLong_DigitCount(v);
  638|      2|        sign = _PyLong_NonCompactSign(v);
  639|       |
  640|      2|        unsigned long x = unroll_digits_ulong(v, &i);
  641|      2|        while (--i >= 0) {
  ------------------
  |  Branch (641:16): [True: 2, False: 0]
  ------------------
  642|      2|            if (x > (ULONG_MAX >> PyLong_SHIFT)) {
  ------------------
  |  |   47|      2|#define PyLong_SHIFT    30
  ------------------
  |  Branch (642:17): [True: 2, False: 0]
  ------------------
  643|      2|                *overflow = sign;
  644|      2|                goto exit;
  645|      2|            }
  646|      0|            x = (x << PyLong_SHIFT) | v->long_value.ob_digit[i];
  ------------------
  |  |   47|      0|#define PyLong_SHIFT    30
  ------------------
  647|      0|        }
  648|       |        /* Haven't lost any bits, but casting to long requires extra
  649|       |        * care (see comment above).
  650|       |        */
  651|      0|        if (x <= (unsigned long)LONG_MAX) {
  ------------------
  |  Branch (651:13): [True: 0, False: 0]
  ------------------
  652|      0|            res = (long)x * sign;
  653|      0|        }
  654|      0|        else if (sign < 0 && x == PY_ABS_LONG_MIN) {
  ------------------
  |  |  532|      0|#define PY_ABS_LONG_MIN         (0-(unsigned long)LONG_MIN)
  ------------------
  |  Branch (654:18): [True: 0, False: 0]
  |  Branch (654:30): [True: 0, False: 0]
  ------------------
  655|      0|            res = LONG_MIN;
  656|      0|        }
  657|      0|        else {
  658|      0|            *overflow = sign;
  659|       |            /* res is already set to -1 */
  660|      0|        }
  661|      0|    }
  662|    150|  exit:
  663|    150|    if (do_decref) {
  ------------------
  |  Branch (663:9): [True: 0, False: 150]
  ------------------
  664|      0|        Py_DECREF(v);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  665|      0|    }
  666|    150|    return res;
  667|    150|}
PyLong_AsLong:
  674|     16|{
  675|     16|    int overflow;
  676|     16|    long result = PyLong_AsLongAndOverflow(obj, &overflow);
  677|     16|    if (overflow) {
  ------------------
  |  Branch (677:9): [True: 1, False: 15]
  ------------------
  678|       |        /* XXX: could be cute and give a different
  679|       |           message for overflow == -1 */
  680|      1|        PyErr_SetString(PyExc_OverflowError,
  681|      1|                        "Python int too large to convert to C long");
  682|      1|    }
  683|     16|    return result;
  684|     16|}
PyLong_AsInt:
  691|    123|{
  692|    123|    int overflow;
  693|    123|    long result = PyLong_AsLongAndOverflow(obj, &overflow);
  694|    123|    if (overflow || result > INT_MAX || result < INT_MIN) {
  ------------------
  |  Branch (694:9): [True: 0, False: 123]
  |  Branch (694:21): [True: 0, False: 123]
  |  Branch (694:41): [True: 0, False: 123]
  ------------------
  695|       |        /* XXX: could be cute and give a different
  696|       |           message for overflow == -1 */
  697|      0|        PyErr_SetString(PyExc_OverflowError,
  698|      0|                        "Python int too large to convert to C int");
  699|      0|        return -1;
  700|      0|    }
  701|    123|    return (int)result;
  702|    123|}
PyLong_AsSsize_t:
  708|     91|PyLong_AsSsize_t(PyObject *vv) {
  709|     91|    PyLongObject *v;
  710|     91|    Py_ssize_t i;
  711|     91|    int sign;
  712|       |
  713|     91|    if (vv == NULL) {
  ------------------
  |  Branch (713:9): [True: 0, False: 91]
  ------------------
  714|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
  715|      0|        return -1;
  716|      0|    }
  717|     91|    if (!PyLong_Check(vv)) {
  ------------------
  |  |   13|     91|        PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     91|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (717:9): [True: 0, False: 91]
  ------------------
  718|      0|        PyErr_SetString(PyExc_TypeError, "an integer is required");
  719|      0|        return -1;
  720|      0|    }
  721|       |
  722|     91|    v = (PyLongObject *)vv;
  723|     91|    if (_PyLong_IsCompact(v)) {
  ------------------
  |  Branch (723:9): [True: 91, False: 0]
  ------------------
  724|     91|        return _PyLong_CompactValue(v);
  725|     91|    }
  726|      0|    i = _PyLong_DigitCount(v);
  727|      0|    sign = _PyLong_NonCompactSign(v);
  728|       |
  729|      0|    size_t x = unroll_digits_size_t(v, &i);
  730|      0|    while (--i >= 0) {
  ------------------
  |  Branch (730:12): [True: 0, False: 0]
  ------------------
  731|      0|        if (x > (SIZE_MAX >> PyLong_SHIFT)) {
  ------------------
  |  |   47|      0|#define PyLong_SHIFT    30
  ------------------
  |  Branch (731:13): [True: 0, False: 0]
  ------------------
  732|      0|            goto overflow;
  733|      0|        }
  734|      0|        x = (x << PyLong_SHIFT) | v->long_value.ob_digit[i];
  ------------------
  |  |   47|      0|#define PyLong_SHIFT    30
  ------------------
  735|      0|    }
  736|       |    /* Haven't lost any bits, but casting to a signed type requires
  737|       |     * extra care (see comment above).
  738|       |     */
  739|      0|    if (x <= (size_t)PY_SSIZE_T_MAX) {
  ------------------
  |  |  137|      0|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (739:9): [True: 0, False: 0]
  ------------------
  740|      0|        return (Py_ssize_t)x * sign;
  741|      0|    }
  742|      0|    else if (sign < 0 && x == PY_ABS_SSIZE_T_MIN) {
  ------------------
  |  |  533|      0|#define PY_ABS_SSIZE_T_MIN      (0-(size_t)PY_SSIZE_T_MIN)
  |  |  ------------------
  |  |  |  |  146|      0|#define PY_SSIZE_T_MIN (-PY_SSIZE_T_MAX-1)
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|#   define PY_SSIZE_T_MAX SSIZE_MAX
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (742:14): [True: 0, False: 0]
  |  Branch (742:26): [True: 0, False: 0]
  ------------------
  743|      0|        return PY_SSIZE_T_MIN;
  ------------------
  |  |  146|      0|#define PY_SSIZE_T_MIN (-PY_SSIZE_T_MAX-1)
  |  |  ------------------
  |  |  |  |  137|      0|#   define PY_SSIZE_T_MAX SSIZE_MAX
  |  |  ------------------
  ------------------
  744|      0|    }
  745|       |    /* else overflow */
  746|       |
  747|      0|  overflow:
  748|      0|    PyErr_SetString(PyExc_OverflowError,
  749|      0|                    "Python int too large to convert to C ssize_t");
  750|      0|    return -1;
  751|      0|}
PyLong_AsUnsignedLong:
  758|      2|{
  759|      2|    PyLongObject *v;
  760|      2|    Py_ssize_t i;
  761|       |
  762|      2|    if (vv == NULL) {
  ------------------
  |  Branch (762:9): [True: 0, False: 2]
  ------------------
  763|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
  764|      0|        return (unsigned long)-1;
  765|      0|    }
  766|      2|    if (!PyLong_Check(vv)) {
  ------------------
  |  |   13|      2|        PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      2|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (766:9): [True: 0, False: 2]
  ------------------
  767|      0|        PyErr_SetString(PyExc_TypeError, "an integer is required");
  768|      0|        return (unsigned long)-1;
  769|      0|    }
  770|       |
  771|      2|    v = (PyLongObject *)vv;
  772|      2|    if (_PyLong_IsNonNegativeCompact(v)) {
  ------------------
  |  Branch (772:9): [True: 2, False: 0]
  ------------------
  773|       |#if SIZEOF_LONG < SIZEOF_SIZE_T
  774|       |        size_t tmp = (size_t)_PyLong_CompactValue(v);
  775|       |        unsigned long res = (unsigned long)tmp;
  776|       |        if (res != tmp) {
  777|       |            goto overflow;
  778|       |        }
  779|       |        return res;
  780|       |#else
  781|      2|        return (unsigned long)(size_t)_PyLong_CompactValue(v);
  782|      2|#endif
  783|      2|    }
  784|      0|    if (_PyLong_IsNegative(v)) {
  ------------------
  |  Branch (784:9): [True: 0, False: 0]
  ------------------
  785|      0|        PyErr_SetString(PyExc_OverflowError,
  786|      0|                        "can't convert negative value to unsigned int");
  787|      0|        return (unsigned long) -1;
  788|      0|    }
  789|      0|    i = _PyLong_DigitCount(v);
  790|       |
  791|      0|    unsigned long x = unroll_digits_ulong(v, &i);
  792|      0|    while (--i >= 0) {
  ------------------
  |  Branch (792:12): [True: 0, False: 0]
  ------------------
  793|      0|        if (x > (ULONG_MAX >> PyLong_SHIFT)) {
  ------------------
  |  |   47|      0|#define PyLong_SHIFT    30
  ------------------
  |  Branch (793:13): [True: 0, False: 0]
  ------------------
  794|      0|            goto overflow;
  795|      0|        }
  796|      0|        x = (x << PyLong_SHIFT) | v->long_value.ob_digit[i];
  ------------------
  |  |   47|      0|#define PyLong_SHIFT    30
  ------------------
  797|      0|    }
  798|      0|    return x;
  799|      0|overflow:
  800|      0|    PyErr_SetString(PyExc_OverflowError,
  801|      0|                    "Python int too large to convert "
  802|      0|                    "to C unsigned long");
  803|      0|    return (unsigned long) -1;
  804|      0|}
PyLong_GetSign:
  955|      3|{
  956|      3|    if (!PyLong_Check(vv)) {
  ------------------
  |  |   13|      3|        PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      3|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (956:9): [True: 0, False: 3]
  ------------------
  957|      0|        PyErr_Format(PyExc_TypeError, "expect int, got %T", vv);
  958|      0|        return -1;
  959|      0|    }
  960|       |
  961|      3|    *sign = long_sign(vv);
  962|      3|    return 0;
  963|      3|}
_PyLong_AsByteArray:
 1113|      1|{
 1114|      1|    Py_ssize_t i;               /* index into v->long_value.ob_digit */
 1115|      1|    Py_ssize_t ndigits;         /* number of digits */
 1116|      1|    twodigits accum;            /* sliding register */
 1117|      1|    unsigned int accumbits;     /* # bits in accum */
 1118|      1|    int do_twos_comp;           /* store 2's-comp?  is_signed and v < 0 */
 1119|      1|    digit carry;                /* for computing 2's-comp */
 1120|      1|    size_t j;                   /* # bytes filled */
 1121|      1|    unsigned char* p;           /* pointer to next byte in bytes */
 1122|      1|    int pincr;                  /* direction to move p */
 1123|       |
 1124|      1|    assert(v != NULL && PyLong_Check(v));
  ------------------
  |  Branch (1124:5): [True: 1, False: 0]
  |  Branch (1124:5): [True: 1, False: 0]
  ------------------
 1125|       |
 1126|      1|    ndigits = _PyLong_DigitCount(v);
 1127|      1|    if (_PyLong_IsNegative(v)) {
  ------------------
  |  Branch (1127:9): [True: 0, False: 1]
  ------------------
 1128|      0|        if (!is_signed) {
  ------------------
  |  Branch (1128:13): [True: 0, False: 0]
  ------------------
 1129|      0|            if (with_exceptions) {
  ------------------
  |  Branch (1129:17): [True: 0, False: 0]
  ------------------
 1130|      0|                PyErr_SetString(PyExc_OverflowError,
 1131|      0|                                "can't convert negative int to unsigned");
 1132|      0|            }
 1133|      0|            return -1;
 1134|      0|        }
 1135|      0|        do_twos_comp = 1;
 1136|      0|    }
 1137|      1|    else {
 1138|      1|        do_twos_comp = 0;
 1139|      1|    }
 1140|       |
 1141|      1|    if (little_endian) {
  ------------------
  |  Branch (1141:9): [True: 1, False: 0]
  ------------------
 1142|      1|        p = bytes;
 1143|      1|        pincr = 1;
 1144|      1|    }
 1145|      0|    else {
 1146|      0|        p = bytes + n - 1;
 1147|      0|        pincr = -1;
 1148|      0|    }
 1149|       |
 1150|       |    /* Copy over all the Python digits.
 1151|       |       It's crucial that every Python digit except for the MSD contribute
 1152|       |       exactly PyLong_SHIFT bits to the total, so first assert that the int is
 1153|       |       normalized.
 1154|       |       NOTE: PyLong_AsNativeBytes() assumes that this function will fill in 'n'
 1155|       |       bytes even if it eventually fails to convert the whole number. Make sure
 1156|       |       you account for that if you are changing this algorithm to return without
 1157|       |       doing that.
 1158|       |       */
 1159|      1|    assert(ndigits == 0 || v->long_value.ob_digit[ndigits - 1] != 0);
  ------------------
  |  Branch (1159:5): [True: 0, False: 1]
  |  Branch (1159:5): [True: 1, False: 0]
  ------------------
 1160|      1|    j = 0;
 1161|      1|    accum = 0;
 1162|      1|    accumbits = 0;
 1163|      1|    carry = do_twos_comp ? 1 : 0;
  ------------------
  |  Branch (1163:13): [True: 0, False: 1]
  ------------------
 1164|      2|    for (i = 0; i < ndigits; ++i) {
  ------------------
  |  Branch (1164:17): [True: 1, False: 1]
  ------------------
 1165|      1|        digit thisdigit = v->long_value.ob_digit[i];
 1166|      1|        if (do_twos_comp) {
  ------------------
  |  Branch (1166:13): [True: 0, False: 1]
  ------------------
 1167|      0|            thisdigit = (thisdigit ^ PyLong_MASK) + carry;
  ------------------
  |  |   62|      0|#define PyLong_MASK     ((digit)(PyLong_BASE - 1))
  |  |  ------------------
  |  |  |  |   61|      0|#define PyLong_BASE     ((digit)1 << PyLong_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define PyLong_SHIFT    30
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1168|      0|            carry = thisdigit >> PyLong_SHIFT;
  ------------------
  |  |   47|      0|#define PyLong_SHIFT    30
  ------------------
 1169|      0|            thisdigit &= PyLong_MASK;
  ------------------
  |  |   62|      0|#define PyLong_MASK     ((digit)(PyLong_BASE - 1))
  |  |  ------------------
  |  |  |  |   61|      0|#define PyLong_BASE     ((digit)1 << PyLong_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define PyLong_SHIFT    30
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1170|      0|        }
 1171|       |        /* Because we're going LSB to MSB, thisdigit is more
 1172|       |           significant than what's already in accum, so needs to be
 1173|       |           prepended to accum. */
 1174|      1|        accum |= (twodigits)thisdigit << accumbits;
 1175|       |
 1176|       |        /* The most-significant digit may be (probably is) at least
 1177|       |           partly empty. */
 1178|      1|        if (i == ndigits - 1) {
  ------------------
  |  Branch (1178:13): [True: 1, False: 0]
  ------------------
 1179|       |            /* Count # of sign bits -- they needn't be stored,
 1180|       |             * although for signed conversion we need later to
 1181|       |             * make sure at least one sign bit gets stored. */
 1182|      1|            digit s = do_twos_comp ? thisdigit ^ PyLong_MASK : thisdigit;
  ------------------
  |  |   62|      0|#define PyLong_MASK     ((digit)(PyLong_BASE - 1))
  |  |  ------------------
  |  |  |  |   61|      0|#define PyLong_BASE     ((digit)1 << PyLong_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      0|#define PyLong_SHIFT    30
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1182:23): [True: 0, False: 1]
  ------------------
 1183|     29|            while (s != 0) {
  ------------------
  |  Branch (1183:20): [True: 28, False: 1]
  ------------------
 1184|     28|                s >>= 1;
 1185|     28|                accumbits++;
 1186|     28|            }
 1187|      1|        }
 1188|      0|        else
 1189|      0|            accumbits += PyLong_SHIFT;
  ------------------
  |  |   47|      0|#define PyLong_SHIFT    30
  ------------------
 1190|       |
 1191|       |        /* Store as many bytes as possible. */
 1192|      4|        while (accumbits >= 8) {
  ------------------
  |  Branch (1192:16): [True: 3, False: 1]
  ------------------
 1193|      3|            if (j >= n)
  ------------------
  |  Branch (1193:17): [True: 0, False: 3]
  ------------------
 1194|      0|                goto Overflow;
 1195|      3|            ++j;
 1196|      3|            *p = (unsigned char)(accum & 0xff);
 1197|      3|            p += pincr;
 1198|      3|            accumbits -= 8;
 1199|      3|            accum >>= 8;
 1200|      3|        }
 1201|      1|    }
 1202|       |
 1203|       |    /* Store the straggler (if any). */
 1204|      1|    assert(accumbits < 8);
  ------------------
  |  Branch (1204:5): [True: 1, False: 0]
  ------------------
 1205|      1|    assert(carry == 0);  /* else do_twos_comp and *every* digit was 0 */
  ------------------
  |  Branch (1205:5): [True: 1, False: 0]
  ------------------
 1206|      1|    if (accumbits > 0) {
  ------------------
  |  Branch (1206:9): [True: 1, False: 0]
  ------------------
 1207|      1|        if (j >= n)
  ------------------
  |  Branch (1207:13): [True: 0, False: 1]
  ------------------
 1208|      0|            goto Overflow;
 1209|      1|        ++j;
 1210|      1|        if (do_twos_comp) {
  ------------------
  |  Branch (1210:13): [True: 0, False: 1]
  ------------------
 1211|       |            /* Fill leading bits of the byte with sign bits
 1212|       |               (appropriately pretending that the int had an
 1213|       |               infinite supply of sign bits). */
 1214|      0|            accum |= (~(twodigits)0) << accumbits;
 1215|      0|        }
 1216|      1|        *p = (unsigned char)(accum & 0xff);
 1217|      1|        p += pincr;
 1218|      1|    }
 1219|      0|    else if (j == n && is_signed) {
  ------------------
  |  Branch (1219:14): [True: 0, False: 0]
  |  Branch (1219:24): [True: 0, False: 0]
  ------------------
 1220|       |        /* The main loop filled the byte array exactly, so the code
 1221|       |           just above didn't get to ensure there's a sign bit, and the
 1222|       |           loop below wouldn't add one either.  Make sure a sign bit
 1223|       |           exists. */
 1224|      0|        int sign_bit_set;
 1225|      0|        if (n > 0) {
  ------------------
  |  Branch (1225:13): [True: 0, False: 0]
  ------------------
 1226|      0|            unsigned char msb = *(p - pincr);
 1227|      0|            sign_bit_set = msb >= 0x80;
 1228|      0|        }
 1229|      0|        else {
 1230|      0|            sign_bit_set = 0;
 1231|      0|        }
 1232|      0|        assert(accumbits == 0);
  ------------------
  |  Branch (1232:9): [True: 0, False: 0]
  ------------------
 1233|      0|        if (sign_bit_set == do_twos_comp)
  ------------------
  |  Branch (1233:13): [True: 0, False: 0]
  ------------------
 1234|      0|            return 0;
 1235|      0|        else
 1236|      0|            goto Overflow;
 1237|      0|    }
 1238|       |
 1239|       |    /* Fill remaining bytes with copies of the sign bit. */
 1240|      1|    {
 1241|      1|        unsigned char signbyte = do_twos_comp ? 0xffU : 0U;
  ------------------
  |  Branch (1241:34): [True: 0, False: 1]
  ------------------
 1242|      1|        for ( ; j < n; ++j, p += pincr)
  ------------------
  |  Branch (1242:17): [True: 0, False: 1]
  ------------------
 1243|      0|            *p = signbyte;
 1244|      1|    }
 1245|       |
 1246|      1|    return 0;
 1247|       |
 1248|      0|  Overflow:
 1249|      0|    if (with_exceptions) {
  ------------------
  |  Branch (1249:9): [True: 0, False: 0]
  ------------------
 1250|      0|        PyErr_SetString(PyExc_OverflowError, "int too big to convert");
 1251|      0|    }
 1252|      0|    return -1;
 1253|       |
 1254|      1|}
PyLong_AsNativeBytes:
 1283|      1|{
 1284|      1|    PyLongObject *v;
 1285|      1|    union {
 1286|      1|        Py_ssize_t v;
 1287|      1|        unsigned char b[sizeof(Py_ssize_t)];
 1288|      1|    } cv;
 1289|      1|    int do_decref = 0;
 1290|      1|    Py_ssize_t res = 0;
 1291|       |
 1292|      1|    if (vv == NULL || n < 0) {
  ------------------
  |  Branch (1292:9): [True: 0, False: 1]
  |  Branch (1292:23): [True: 0, False: 1]
  ------------------
 1293|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
 1294|      0|        return -1;
 1295|      0|    }
 1296|       |
 1297|      1|    int little_endian = flags;
 1298|      1|    if (_resolve_endianness(&little_endian) < 0) {
  ------------------
  |  Branch (1298:9): [True: 0, False: 1]
  ------------------
 1299|      0|        return -1;
 1300|      0|    }
 1301|       |
 1302|      1|    if (PyLong_Check(vv)) {
  ------------------
  |  |   13|      1|        PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      1|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1303|      1|        v = (PyLongObject *)vv;
 1304|      1|    }
 1305|      0|    else if (flags != -1 && (flags & Py_ASNATIVEBYTES_ALLOW_INDEX)) {
  ------------------
  |  |   50|      0|#define Py_ASNATIVEBYTES_ALLOW_INDEX 16
  ------------------
  |  Branch (1305:14): [True: 0, False: 0]
  |  Branch (1305:29): [True: 0, False: 0]
  ------------------
 1306|      0|        v = (PyLongObject *)_PyNumber_Index(vv);
 1307|      0|        if (v == NULL) {
  ------------------
  |  Branch (1307:13): [True: 0, False: 0]
  ------------------
 1308|      0|            return -1;
 1309|      0|        }
 1310|      0|        do_decref = 1;
 1311|      0|    }
 1312|      0|    else {
 1313|      0|        PyErr_Format(PyExc_TypeError, "expect int, got %T", vv);
 1314|      0|        return -1;
 1315|      0|    }
 1316|       |
 1317|      1|    if ((flags != -1 && (flags & Py_ASNATIVEBYTES_REJECT_NEGATIVE))
  ------------------
  |  |   49|      1|#define Py_ASNATIVEBYTES_REJECT_NEGATIVE 8
  ------------------
  |  Branch (1317:10): [True: 1, False: 0]
  |  Branch (1317:25): [True: 0, False: 1]
  ------------------
 1318|      0|        && _PyLong_IsNegative(v)) {
  ------------------
  |  Branch (1318:12): [True: 0, False: 0]
  ------------------
 1319|      0|        PyErr_SetString(PyExc_ValueError, "Cannot convert negative int");
 1320|      0|        if (do_decref) {
  ------------------
  |  Branch (1320:13): [True: 0, False: 0]
  ------------------
 1321|      0|            Py_DECREF(v);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1322|      0|        }
 1323|      0|        return -1;
 1324|      0|    }
 1325|       |
 1326|      1|    if (_PyLong_IsCompact(v)) {
  ------------------
  |  Branch (1326:9): [True: 1, False: 0]
  ------------------
 1327|      1|        res = 0;
 1328|      1|        cv.v = _PyLong_CompactValue(v);
 1329|       |        /* Most paths result in res = sizeof(compact value). Only the case
 1330|       |         * where 0 < n < sizeof(compact value) do we need to check and adjust
 1331|       |         * our return value. */
 1332|      1|        res = sizeof(cv.b);
 1333|      1|        if (n <= 0) {
  ------------------
  |  Branch (1333:13): [True: 0, False: 1]
  ------------------
 1334|       |            // nothing to do!
 1335|      0|        }
 1336|      1|        else if (n <= (Py_ssize_t)sizeof(cv.b)) {
  ------------------
  |  Branch (1336:18): [True: 1, False: 0]
  ------------------
 1337|      1|#if PY_LITTLE_ENDIAN
 1338|      1|            if (little_endian) {
  ------------------
  |  Branch (1338:17): [True: 1, False: 0]
  ------------------
 1339|      1|                memcpy(buffer, cv.b, n);
 1340|      1|            }
 1341|      0|            else {
 1342|      0|                for (Py_ssize_t i = 0; i < n; ++i) {
  ------------------
  |  Branch (1342:40): [True: 0, False: 0]
  ------------------
 1343|      0|                    ((unsigned char*)buffer)[n - i - 1] = cv.b[i];
 1344|      0|                }
 1345|      0|            }
 1346|       |#else
 1347|       |            if (little_endian) {
 1348|       |                for (Py_ssize_t i = 0; i < n; ++i) {
 1349|       |                    ((unsigned char*)buffer)[i] = cv.b[sizeof(cv.b) - i - 1];
 1350|       |                }
 1351|       |            }
 1352|       |            else {
 1353|       |                memcpy(buffer, &cv.b[sizeof(cv.b) - n], n);
 1354|       |            }
 1355|       |#endif
 1356|       |
 1357|       |            /* If we fit, return the requested number of bytes */
 1358|      1|            if (_fits_in_n_bits(cv.v, n * 8)) {
  ------------------
  |  Branch (1358:17): [True: 1, False: 0]
  ------------------
 1359|      1|                res = n;
 1360|      1|            } else if (cv.v > 0 && _fits_in_n_bits(cv.v, n * 8 + 1)) {
  ------------------
  |  Branch (1360:24): [True: 0, False: 0]
  |  Branch (1360:36): [True: 0, False: 0]
  ------------------
 1361|       |                /* Positive values with the MSB set do not require an
 1362|       |                 * additional bit when the caller's intent is to treat them
 1363|       |                 * as unsigned. */
 1364|      0|                if (flags == -1 || (flags & Py_ASNATIVEBYTES_UNSIGNED_BUFFER)) {
  ------------------
  |  |   48|      0|#define Py_ASNATIVEBYTES_UNSIGNED_BUFFER 4
  ------------------
  |  Branch (1364:21): [True: 0, False: 0]
  |  Branch (1364:36): [True: 0, False: 0]
  ------------------
 1365|      0|                    res = n;
 1366|      0|                } else {
 1367|      0|                    res = n + 1;
 1368|      0|                }
 1369|      0|            }
 1370|      1|        }
 1371|      0|        else {
 1372|      0|            unsigned char fill = cv.v < 0 ? 0xFF : 0x00;
  ------------------
  |  Branch (1372:34): [True: 0, False: 0]
  ------------------
 1373|      0|#if PY_LITTLE_ENDIAN
 1374|      0|            if (little_endian) {
  ------------------
  |  Branch (1374:17): [True: 0, False: 0]
  ------------------
 1375|      0|                memcpy(buffer, cv.b, sizeof(cv.b));
 1376|      0|                memset((char *)buffer + sizeof(cv.b), fill, n - sizeof(cv.b));
 1377|      0|            }
 1378|      0|            else {
 1379|      0|                unsigned char *b = (unsigned char *)buffer;
 1380|      0|                for (Py_ssize_t i = 0; i < n - (int)sizeof(cv.b); ++i) {
  ------------------
  |  Branch (1380:40): [True: 0, False: 0]
  ------------------
 1381|      0|                    *b++ = fill;
 1382|      0|                }
 1383|      0|                for (Py_ssize_t i = sizeof(cv.b); i > 0; --i) {
  ------------------
  |  Branch (1383:51): [True: 0, False: 0]
  ------------------
 1384|      0|                    *b++ = cv.b[i - 1];
 1385|      0|                }
 1386|      0|            }
 1387|       |#else
 1388|       |            if (little_endian) {
 1389|       |                unsigned char *b = (unsigned char *)buffer;
 1390|       |                for (Py_ssize_t i = sizeof(cv.b); i > 0; --i) {
 1391|       |                    *b++ = cv.b[i - 1];
 1392|       |                }
 1393|       |                for (Py_ssize_t i = 0; i < n - (int)sizeof(cv.b); ++i) {
 1394|       |                    *b++ = fill;
 1395|       |                }
 1396|       |            }
 1397|       |            else {
 1398|       |                memset(buffer, fill, n - sizeof(cv.b));
 1399|       |                memcpy((char *)buffer + n - sizeof(cv.b), cv.b, sizeof(cv.b));
 1400|       |            }
 1401|       |#endif
 1402|      0|        }
 1403|      1|    }
 1404|      0|    else {
 1405|      0|        if (n > 0) {
  ------------------
  |  Branch (1405:13): [True: 0, False: 0]
  ------------------
 1406|      0|            _PyLong_AsByteArray(v, buffer, (size_t)n, little_endian, 1, 0);
 1407|      0|        }
 1408|       |
 1409|       |        /* Calculates the number of bits required for the *absolute* value
 1410|       |         * of v. This does not take sign into account, only magnitude. */
 1411|      0|        int64_t nb = _PyLong_NumBits((PyObject *)v);
 1412|      0|        assert(nb >= 0);
  ------------------
  |  Branch (1412:9): [True: 0, False: 0]
  ------------------
 1413|       |        /* Normally this would be ((nb - 1) / 8) + 1 to avoid rounding up
 1414|       |         * multiples of 8 to the next byte, but we add an implied bit for
 1415|       |         * the sign and it cancels out. */
 1416|      0|        res = (Py_ssize_t)(nb / 8) + 1;
 1417|       |
 1418|       |        /* Two edge cases exist that are best handled after extracting the
 1419|       |         * bits. These may result in us reporting overflow when the value
 1420|       |         * actually fits.
 1421|       |         */
 1422|      0|        if (n > 0 && res == n + 1 && nb % 8 == 0) {
  ------------------
  |  Branch (1422:13): [True: 0, False: 0]
  |  Branch (1422:22): [True: 0, False: 0]
  |  Branch (1422:38): [True: 0, False: 0]
  ------------------
 1423|      0|            if (_PyLong_IsNegative(v)) {
  ------------------
  |  Branch (1423:17): [True: 0, False: 0]
  ------------------
 1424|       |                /* Values of 0x80...00 from negative values that use every
 1425|       |                 * available bit in the buffer do not require an additional
 1426|       |                 * bit to store the sign. */
 1427|      0|                int is_edge_case = 1;
 1428|      0|                unsigned char *b = (unsigned char *)buffer;
 1429|      0|                for (Py_ssize_t i = 0; i < n && is_edge_case; ++i, ++b) {
  ------------------
  |  Branch (1429:40): [True: 0, False: 0]
  |  Branch (1429:49): [True: 0, False: 0]
  ------------------
 1430|      0|                    if (i == 0) {
  ------------------
  |  Branch (1430:25): [True: 0, False: 0]
  ------------------
 1431|      0|                        is_edge_case = (*b == (little_endian ? 0 : 0x80));
  ------------------
  |  Branch (1431:48): [True: 0, False: 0]
  ------------------
 1432|      0|                    } else if (i < n - 1) {
  ------------------
  |  Branch (1432:32): [True: 0, False: 0]
  ------------------
 1433|      0|                        is_edge_case = (*b == 0);
 1434|      0|                    } else {
 1435|      0|                        is_edge_case = (*b == (little_endian ? 0x80 : 0));
  ------------------
  |  Branch (1435:48): [True: 0, False: 0]
  ------------------
 1436|      0|                    }
 1437|      0|                }
 1438|      0|                if (is_edge_case) {
  ------------------
  |  Branch (1438:21): [True: 0, False: 0]
  ------------------
 1439|      0|                    res = n;
 1440|      0|                }
 1441|      0|            }
 1442|      0|            else {
 1443|       |                /* Positive values with the MSB set do not require an
 1444|       |                 * additional bit when the caller's intent is to treat them
 1445|       |                 * as unsigned. */
 1446|      0|                unsigned char *b = (unsigned char *)buffer;
 1447|      0|                if (b[little_endian ? n - 1 : 0] & 0x80) {
  ------------------
  |  Branch (1447:21): [True: 0, False: 0]
  |  Branch (1447:23): [True: 0, False: 0]
  ------------------
 1448|      0|                    if (flags == -1 || (flags & Py_ASNATIVEBYTES_UNSIGNED_BUFFER)) {
  ------------------
  |  |   48|      0|#define Py_ASNATIVEBYTES_UNSIGNED_BUFFER 4
  ------------------
  |  Branch (1448:25): [True: 0, False: 0]
  |  Branch (1448:40): [True: 0, False: 0]
  ------------------
 1449|      0|                        res = n;
 1450|      0|                    } else {
 1451|      0|                        res = n + 1;
 1452|      0|                    }
 1453|      0|                }
 1454|      0|            }
 1455|      0|        }
 1456|      0|    }
 1457|       |
 1458|      1|    if (do_decref) {
  ------------------
  |  Branch (1458:9): [True: 0, False: 1]
  ------------------
 1459|      0|        Py_DECREF(v);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1460|      0|    }
 1461|       |
 1462|      1|    return res;
 1463|      1|}
PyLong_FromVoidPtr:
 1509|    346|{
 1510|    346|#if SIZEOF_VOID_P <= SIZEOF_LONG
 1511|    346|    return PyLong_FromUnsignedLong((unsigned long)(uintptr_t)p);
 1512|       |#else
 1513|       |
 1514|       |#if SIZEOF_LONG_LONG < SIZEOF_VOID_P
 1515|       |#   error "PyLong_FromVoidPtr: sizeof(long long) < sizeof(void*)"
 1516|       |#endif
 1517|       |    return PyLong_FromUnsignedLongLong((unsigned long long)(uintptr_t)p);
 1518|       |#endif /* SIZEOF_VOID_P <= SIZEOF_LONG */
 1519|       |
 1520|    346|}
PyLong_FromLongLong:
 1567|     99|{
 1568|       |    PYLONG_FROM_INT(unsigned long long, long long, ival);
  ------------------
  |  |  371|     99|    do {                                                                            \
  |  |  372|     99|        /* Handle small and medium cases. */                                        \
  |  |  373|     99|        if (IS_SMALL_INT(ival)) {                                                   \
  |  |  ------------------
  |  |  |  |   29|     99|#define IS_SMALL_INT(ival) _PY_IS_SMALL_INT(ival)
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|     99|    (-_PY_NSMALLNEGINTS <= (val) && (val) < _PY_NSMALLPOSINTS)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   98|     99|#define _PY_NSMALLNEGINTS           5
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   (-_PY_NSMALLNEGINTS <= (val) && (val) < _PY_NSMALLPOSINTS)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   97|     99|#define _PY_NSMALLPOSINTS           1025
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (68:6): [True: 99, False: 0]
  |  |  |  |  |  |  |  Branch (68:37): [True: 1, False: 98]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  374|      1|            return get_small_int((sdigit)(ival));                                   \
  |  |  375|      1|        }                                                                           \
  |  |  376|     99|        if (-(INT_TYPE)PyLong_MASK <= (ival) && (ival) <= (INT_TYPE)PyLong_MASK) {  \
  |  |  ------------------
  |  |  |  |   62|     98|#define PyLong_MASK     ((digit)(PyLong_BASE - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   61|     98|#define PyLong_BASE     ((digit)1 << PyLong_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   47|     98|#define PyLong_SHIFT    30
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       if (-(INT_TYPE)PyLong_MASK <= (ival) && (ival) <= (INT_TYPE)PyLong_MASK) {  \
  |  |  ------------------
  |  |  |  |   62|     98|#define PyLong_MASK     ((digit)(PyLong_BASE - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   61|     98|#define PyLong_BASE     ((digit)1 << PyLong_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   47|     98|#define PyLong_SHIFT    30
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (376:13): [True: 98, False: 0]
  |  |  |  Branch (376:49): [True: 14, False: 84]
  |  |  ------------------
  |  |  377|     14|            return _PyLong_FromMedium((sdigit)(ival));                              \
  |  |  378|     14|        }                                                                           \
  |  |  379|     98|        UINT_TYPE abs_ival = (ival) < 0 ? 0U-(UINT_TYPE)(ival) : (UINT_TYPE)(ival); \
  |  |  ------------------
  |  |  |  Branch (379:30): [True: 0, False: 84]
  |  |  ------------------
  |  |  380|     84|        /* Do shift in two steps to avoid possible undefined behavior. */           \
  |  |  381|     84|        UINT_TYPE t = abs_ival >> PyLong_SHIFT >> PyLong_SHIFT;                     \
  |  |  ------------------
  |  |  |  |   47|     84|#define PyLong_SHIFT    30
  |  |  ------------------
  |  |                       UINT_TYPE t = abs_ival >> PyLong_SHIFT >> PyLong_SHIFT;                     \
  |  |  ------------------
  |  |  |  |   47|     84|#define PyLong_SHIFT    30
  |  |  ------------------
  |  |  382|     84|        /* Count digits (at least two - smaller cases were handled above). */       \
  |  |  383|     84|        Py_ssize_t ndigits = 2;                                                     \
  |  |  384|    126|        while (t) {                                                                 \
  |  |  ------------------
  |  |  |  Branch (384:16): [True: 42, False: 84]
  |  |  ------------------
  |  |  385|     42|            ++ndigits;                                                              \
  |  |  386|     42|            t >>= PyLong_SHIFT;                                                     \
  |  |  ------------------
  |  |  |  |   47|     42|#define PyLong_SHIFT    30
  |  |  ------------------
  |  |  387|     42|        }                                                                           \
  |  |  388|     84|        /* Construct output value. */                                               \
  |  |  389|     84|        PyLongObject *v = long_alloc(ndigits);                                      \
  |  |  390|     84|        if (v == NULL) {                                                            \
  |  |  ------------------
  |  |  |  Branch (390:13): [True: 0, False: 84]
  |  |  ------------------
  |  |  391|      0|            return NULL;                                                            \
  |  |  392|      0|        }                                                                           \
  |  |  393|     84|        digit *p = v->long_value.ob_digit;                                          \
  |  |  394|     84|        _PyLong_SetSignAndDigitCount(v, (ival) < 0 ? -1 : 1, ndigits);              \
  |  |  ------------------
  |  |  |  Branch (394:41): [True: 0, False: 84]
  |  |  ------------------
  |  |  395|     84|        t = abs_ival;                                                               \
  |  |  396|    294|        while (t) {                                                                 \
  |  |  ------------------
  |  |  |  Branch (396:16): [True: 210, False: 84]
  |  |  ------------------
  |  |  397|    210|            *p++ = (digit)(t & PyLong_MASK);                                        \
  |  |  ------------------
  |  |  |  |   62|    210|#define PyLong_MASK     ((digit)(PyLong_BASE - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   61|    210|#define PyLong_BASE     ((digit)1 << PyLong_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   47|    210|#define PyLong_SHIFT    30
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  398|    210|            t >>= PyLong_SHIFT;                                                     \
  |  |  ------------------
  |  |  |  |   47|    210|#define PyLong_SHIFT    30
  |  |  ------------------
  |  |  399|    210|        }                                                                           \
  |  |  400|     84|        return (PyObject *)v;                                                       \
  |  |  401|     84|    } while(0)
  |  |  ------------------
  |  |  |  Branch (401:13): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1569|     99|}
PyLong_FromSsize_t:
 1575|    154|{
 1576|       |    PYLONG_FROM_INT(size_t, Py_ssize_t, ival);
  ------------------
  |  |  371|    154|    do {                                                                            \
  |  |  372|    154|        /* Handle small and medium cases. */                                        \
  |  |  373|    154|        if (IS_SMALL_INT(ival)) {                                                   \
  |  |  ------------------
  |  |  |  |   29|    154|#define IS_SMALL_INT(ival) _PY_IS_SMALL_INT(ival)
  |  |  |  |  ------------------
  |  |  |  |  |  |   68|    154|    (-_PY_NSMALLNEGINTS <= (val) && (val) < _PY_NSMALLPOSINTS)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   98|    154|#define _PY_NSMALLNEGINTS           5
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                   (-_PY_NSMALLNEGINTS <= (val) && (val) < _PY_NSMALLPOSINTS)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   97|    154|#define _PY_NSMALLPOSINTS           1025
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (68:6): [True: 154, False: 0]
  |  |  |  |  |  |  |  Branch (68:37): [True: 147, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  374|    147|            return get_small_int((sdigit)(ival));                                   \
  |  |  375|    147|        }                                                                           \
  |  |  376|    154|        if (-(INT_TYPE)PyLong_MASK <= (ival) && (ival) <= (INT_TYPE)PyLong_MASK) {  \
  |  |  ------------------
  |  |  |  |   62|      7|#define PyLong_MASK     ((digit)(PyLong_BASE - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   61|      7|#define PyLong_BASE     ((digit)1 << PyLong_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   47|      7|#define PyLong_SHIFT    30
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       if (-(INT_TYPE)PyLong_MASK <= (ival) && (ival) <= (INT_TYPE)PyLong_MASK) {  \
  |  |  ------------------
  |  |  |  |   62|      7|#define PyLong_MASK     ((digit)(PyLong_BASE - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   61|      7|#define PyLong_BASE     ((digit)1 << PyLong_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   47|      7|#define PyLong_SHIFT    30
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (376:13): [True: 7, False: 0]
  |  |  |  Branch (376:49): [True: 5, False: 2]
  |  |  ------------------
  |  |  377|      5|            return _PyLong_FromMedium((sdigit)(ival));                              \
  |  |  378|      5|        }                                                                           \
  |  |  379|      7|        UINT_TYPE abs_ival = (ival) < 0 ? 0U-(UINT_TYPE)(ival) : (UINT_TYPE)(ival); \
  |  |  ------------------
  |  |  |  Branch (379:30): [True: 0, False: 2]
  |  |  ------------------
  |  |  380|      2|        /* Do shift in two steps to avoid possible undefined behavior. */           \
  |  |  381|      2|        UINT_TYPE t = abs_ival >> PyLong_SHIFT >> PyLong_SHIFT;                     \
  |  |  ------------------
  |  |  |  |   47|      2|#define PyLong_SHIFT    30
  |  |  ------------------
  |  |                       UINT_TYPE t = abs_ival >> PyLong_SHIFT >> PyLong_SHIFT;                     \
  |  |  ------------------
  |  |  |  |   47|      2|#define PyLong_SHIFT    30
  |  |  ------------------
  |  |  382|      2|        /* Count digits (at least two - smaller cases were handled above). */       \
  |  |  383|      2|        Py_ssize_t ndigits = 2;                                                     \
  |  |  384|      4|        while (t) {                                                                 \
  |  |  ------------------
  |  |  |  Branch (384:16): [True: 2, False: 2]
  |  |  ------------------
  |  |  385|      2|            ++ndigits;                                                              \
  |  |  386|      2|            t >>= PyLong_SHIFT;                                                     \
  |  |  ------------------
  |  |  |  |   47|      2|#define PyLong_SHIFT    30
  |  |  ------------------
  |  |  387|      2|        }                                                                           \
  |  |  388|      2|        /* Construct output value. */                                               \
  |  |  389|      2|        PyLongObject *v = long_alloc(ndigits);                                      \
  |  |  390|      2|        if (v == NULL) {                                                            \
  |  |  ------------------
  |  |  |  Branch (390:13): [True: 0, False: 2]
  |  |  ------------------
  |  |  391|      0|            return NULL;                                                            \
  |  |  392|      0|        }                                                                           \
  |  |  393|      2|        digit *p = v->long_value.ob_digit;                                          \
  |  |  394|      2|        _PyLong_SetSignAndDigitCount(v, (ival) < 0 ? -1 : 1, ndigits);              \
  |  |  ------------------
  |  |  |  Branch (394:41): [True: 0, False: 2]
  |  |  ------------------
  |  |  395|      2|        t = abs_ival;                                                               \
  |  |  396|      8|        while (t) {                                                                 \
  |  |  ------------------
  |  |  |  Branch (396:16): [True: 6, False: 2]
  |  |  ------------------
  |  |  397|      6|            *p++ = (digit)(t & PyLong_MASK);                                        \
  |  |  ------------------
  |  |  |  |   62|      6|#define PyLong_MASK     ((digit)(PyLong_BASE - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   61|      6|#define PyLong_BASE     ((digit)1 << PyLong_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   47|      6|#define PyLong_SHIFT    30
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  398|      6|            t >>= PyLong_SHIFT;                                                     \
  |  |  ------------------
  |  |  |  |   47|      6|#define PyLong_SHIFT    30
  |  |  ------------------
  |  |  399|      6|        }                                                                           \
  |  |  400|      2|        return (PyObject *)v;                                                       \
  |  |  401|      2|    } while(0)
  |  |  ------------------
  |  |  |  Branch (401:13): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1577|    154|}
_PyLong_ExactDealloc:
 3636|     16|{
 3637|     16|    assert(PyLong_CheckExact(self));
  ------------------
  |  Branch (3637:5): [True: 16, False: 0]
  ------------------
 3638|     16|    if (_PyLong_IsSmallInt((PyLongObject *)self)) {
  ------------------
  |  Branch (3638:9): [True: 0, False: 16]
  ------------------
 3639|       |        // See PEP 683, section Accidental De-Immortalizing for details
 3640|      0|        _Py_SetImmortal(self);
 3641|      0|        return;
 3642|      0|    }
 3643|     16|    if (_PyLong_IsCompact((PyLongObject *)self)) {
  ------------------
  |  Branch (3643:9): [True: 5, False: 11]
  ------------------
 3644|      5|        _Py_FREELIST_FREE(ints, self, PyObject_Free);
  ------------------
  |  |   35|      5|    _PyFreeList_Free(&_Py_freelists_GET()->NAME, _PyObject_CAST(op), \
  |  |  ------------------
  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   36|      5|                     Py_ ## NAME ## _MAXFREELIST, freefunc)
  |  |  ------------------
  |  |  |  |   20|      5|#  define Py_ints_MAXFREELIST 100
  |  |  ------------------
  ------------------
 3645|      5|        return;
 3646|      5|    }
 3647|     11|    PyObject_Free(self);
 3648|     11|}
_PyCompactLong_Add:
 3868|      4|{
 3869|      4|    assert(_PyLong_BothAreCompact(a, b));
  ------------------
  |  Branch (3869:5): [True: 4, False: 0]
  ------------------
 3870|      4|    stwodigits v = medium_value(a) + medium_value(b);
  ------------------
  |  |   27|      4|#define medium_value(x) ((stwodigits)_PyLong_CompactValue(x))
  ------------------
                  stwodigits v = medium_value(a) + medium_value(b);
  ------------------
  |  |   27|      4|#define medium_value(x) ((stwodigits)_PyLong_CompactValue(x))
  ------------------
 3871|      4|    return medium_from_stwodigits(v);
 3872|      4|}
PyLong_GetInfo:
 6712|      1|{
 6713|      1|    PyObject* int_info;
 6714|      1|    int field = 0;
 6715|      1|    int_info = PyStructSequence_New(&Int_InfoType);
 6716|      1|    if (int_info == NULL)
  ------------------
  |  Branch (6716:9): [True: 0, False: 1]
  ------------------
 6717|      0|        return NULL;
 6718|      1|    PyStructSequence_SET_ITEM(int_info, field++,
  ------------------
  |  |   11|      1|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  ------------------
 6719|      1|                              PyLong_FromLong(PyLong_SHIFT));
  ------------------
  |  |   47|      1|#define PyLong_SHIFT    30
  ------------------
 6720|      1|    PyStructSequence_SET_ITEM(int_info, field++,
  ------------------
  |  |   11|      1|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  ------------------
 6721|      1|                              PyLong_FromLong(sizeof(digit)));
 6722|       |    /*
 6723|       |     * The following two fields were added after investigating uses of
 6724|       |     * sys.int_info in the wild: Exceedingly rarely used. The ONLY use found was
 6725|       |     * numba using sys.int_info.bits_per_digit as attribute access rather than
 6726|       |     * sequence unpacking. Cython and sympy also refer to sys.int_info but only
 6727|       |     * as info for debugging. No concern about adding these in a backport.
 6728|       |     */
 6729|      1|    PyStructSequence_SET_ITEM(int_info, field++,
  ------------------
  |  |   11|      1|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  ------------------
 6730|      1|                              PyLong_FromLong(_PY_LONG_DEFAULT_MAX_STR_DIGITS));
  ------------------
  |  |   29|      1|#define _PY_LONG_DEFAULT_MAX_STR_DIGITS 4300
  ------------------
 6731|      1|    PyStructSequence_SET_ITEM(int_info, field++,
  ------------------
  |  |   11|      1|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  ------------------
 6732|      1|                              PyLong_FromLong(_PY_LONG_MAX_STR_DIGITS_THRESHOLD));
  ------------------
  |  |   42|      1|#define _PY_LONG_MAX_STR_DIGITS_THRESHOLD 640
  ------------------
 6733|      1|    if (PyErr_Occurred()) {
  ------------------
  |  Branch (6733:9): [True: 0, False: 1]
  ------------------
 6734|      0|        Py_CLEAR(int_info);
  ------------------
  |  |  484|      0|    do { \
  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6735|      0|        return NULL;
 6736|      0|    }
 6737|      1|    return int_info;
 6738|      1|}
_PyLong_InitTypes:
 6745|      1|{
 6746|       |    /* initialize int_info */
 6747|      1|    if (_PyStructSequence_InitBuiltin(interp, &Int_InfoType,
  ------------------
  |  Branch (6747:9): [True: 0, False: 1]
  ------------------
 6748|      1|                                      &int_info_desc) < 0)
 6749|      0|    {
 6750|      0|        return _PyStatus_ERR("can't init int info type");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 6751|      0|    }
 6752|       |
 6753|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 6754|      1|}
PyLong_AsInt64:
 6820|      1|{
 6821|      1|    LONG_TO_INT(obj, value, "C int64_t");
  ------------------
  |  | 6799|      1|    do { \
  |  | 6800|      1|        int flags = (Py_ASNATIVEBYTES_NATIVE_ENDIAN \
  |  |  ------------------
  |  |  |  |   47|      1|#define Py_ASNATIVEBYTES_NATIVE_ENDIAN 3
  |  |  ------------------
  |  | 6801|      1|                     | Py_ASNATIVEBYTES_ALLOW_INDEX); \
  |  |  ------------------
  |  |  |  |   50|      1|#define Py_ASNATIVEBYTES_ALLOW_INDEX 16
  |  |  ------------------
  |  | 6802|      1|        Py_ssize_t bytes = PyLong_AsNativeBytes(obj, value, sizeof(*value), flags); \
  |  | 6803|      1|        if (bytes < 0) { \
  |  |  ------------------
  |  |  |  Branch (6803:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 6804|      0|            return -1; \
  |  | 6805|      0|        } \
  |  | 6806|      1|        if ((size_t)bytes > sizeof(*value)) { \
  |  |  ------------------
  |  |  |  Branch (6806:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 6807|      0|            PyErr_SetString(PyExc_OverflowError, \
  |  | 6808|      0|                            "Python int too large to convert to " type_name); \
  |  | 6809|      0|            return -1; \
  |  | 6810|      0|        } \
  |  | 6811|      1|        return 0; \
  |  | 6812|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (6812:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 6822|      1|}
PyLong_GetNativeLayout:
 6863|      4|{
 6864|      4|    return &PyLong_LAYOUT;
 6865|      4|}
PyLongWriter_Create:
 6926|      4|{
 6927|      4|    if (ndigits <= 0) {
  ------------------
  |  Branch (6927:9): [True: 0, False: 4]
  ------------------
 6928|      0|        PyErr_SetString(PyExc_ValueError, "ndigits must be positive");
 6929|      0|        goto error;
 6930|      0|    }
 6931|      4|    assert(digits != NULL);
  ------------------
  |  Branch (6931:5): [True: 4, False: 0]
  ------------------
 6932|       |
 6933|      4|    PyLongObject *obj = long_alloc(ndigits);
 6934|      4|    if (obj == NULL) {
  ------------------
  |  Branch (6934:9): [True: 0, False: 4]
  ------------------
 6935|      0|        goto error;
 6936|      0|    }
 6937|      4|    if (negative) {
  ------------------
  |  Branch (6937:9): [True: 0, False: 4]
  ------------------
 6938|      0|        _PyLong_FlipSign(obj);
 6939|      0|    }
 6940|       |
 6941|      4|    *digits = obj->long_value.ob_digit;
 6942|      4|    return (PyLongWriter*)obj;
 6943|       |
 6944|      0|error:
 6945|      0|    *digits = NULL;
 6946|       |    return NULL;
 6947|      4|}
PyLongWriter_Finish:
 6965|      4|{
 6966|      4|    PyLongObject *obj = (PyLongObject *)writer;
 6967|      4|    assert(Py_REFCNT(obj) == 1);
  ------------------
  |  Branch (6967:5): [True: 4, False: 0]
  ------------------
 6968|       |
 6969|       |#ifdef Py_DEBUG
 6970|       |    // gh-147988: Detect uninitialized digits: long_alloc() fills digits with
 6971|       |    // 0xFF byte pattern. It's posssible because PyLong_BASE is smaller than
 6972|       |    // the maximum value of the C digit type (uint32_t or unsigned short):
 6973|       |    // most significan bits are unused by the API.
 6974|       |    Py_ssize_t ndigits = _PyLong_DigitCount(obj);
 6975|       |    if (ndigits == 0) {
 6976|       |        // Check ob_digit[0] digit for the number zero
 6977|       |        ndigits = 1;
 6978|       |    }
 6979|       |    for (Py_ssize_t i = 0; i < ndigits; i++) {
 6980|       |        digit d = obj->long_value.ob_digit[i];
 6981|       |        if (d & ~(digit)PyLong_MASK) {
 6982|       |            Py_DECREF(obj);
 6983|       |            PyErr_Format(PyExc_SystemError,
 6984|       |                         "PyLongWriter_Finish: digit %zd is uninitialized",
 6985|       |                         i);
 6986|       |            return NULL;
 6987|       |        }
 6988|       |    }
 6989|       |#endif
 6990|       |
 6991|       |    // Normalize and get singleton if possible
 6992|      4|    obj = maybe_small_long(long_normalize(obj));
 6993|       |
 6994|      4|    return (PyObject*)obj;
 6995|      4|}
longobject.c:long_alloc:
  160|    528|{
  161|    528|    assert(size >= 0);
  ------------------
  |  Branch (161:5): [True: 528, False: 0]
  ------------------
  162|    528|    PyLongObject *result = NULL;
  163|    528|    if (size > (Py_ssize_t)MAX_LONG_DIGITS) {
  ------------------
  |  |  155|    528|# define MAX_LONG_DIGITS ((INT64_MAX-1) / PyLong_SHIFT)
  |  |  ------------------
  |  |  |  |   47|    528|#define PyLong_SHIFT    30
  |  |  ------------------
  ------------------
  |  Branch (163:9): [True: 0, False: 528]
  ------------------
  164|      0|        PyErr_SetString(PyExc_OverflowError,
  165|      0|                        "too many digits in integer");
  166|      0|        return NULL;
  167|      0|    }
  168|       |    /* Fast operations for single digit integers (including zero)
  169|       |     * assume that there is always at least one digit present. */
  170|    528|    Py_ssize_t ndigits = size ? size : 1;
  ------------------
  |  Branch (170:26): [True: 528, False: 0]
  ------------------
  171|       |
  172|    528|    if (ndigits == 1) {
  ------------------
  |  Branch (172:9): [True: 0, False: 528]
  ------------------
  173|      0|        result = (PyLongObject *)_Py_FREELIST_POP(PyLongObject, ints);
  ------------------
  |  |   43|      0|    _Py_CAST(TYPE*, _PyFreeList_Pop(&_Py_freelists_GET()->NAME))
  |  |  ------------------
  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  174|      0|    }
  175|    528|    if (result == NULL) {
  ------------------
  |  Branch (175:9): [True: 528, False: 0]
  ------------------
  176|       |        /* Number of bytes needed is: offsetof(PyLongObject, ob_digit) +
  177|       |        sizeof(digit)*size.  Previous incarnations of this code used
  178|       |        sizeof() instead of the offsetof, but this risks being
  179|       |        incorrect in the presence of padding between the header
  180|       |        and the digits. */
  181|    528|        result = PyObject_Malloc(offsetof(PyLongObject, long_value.ob_digit) +
  182|    528|                                ndigits*sizeof(digit));
  183|    528|        if (!result) {
  ------------------
  |  Branch (183:13): [True: 0, False: 528]
  ------------------
  184|      0|            PyErr_NoMemory();
  185|      0|            return NULL;
  186|      0|        }
  187|    528|        _PyObject_Init((PyObject*)result, &PyLong_Type);
  188|    528|        _PyLong_InitTag(result);
  189|    528|    }
  190|    528|    _PyLong_SetSignAndDigitCount(result, size != 0, size);
  191|       |#ifdef Py_DEBUG
  192|       |    // gh-147988: Fill digits with an invalid pattern to catch usage
  193|       |    // of uninitialized digits.
  194|       |    memset(result->long_value.ob_digit, 0xFF, ndigits * sizeof(digit));
  195|       |#endif
  196|    528|    return result;
  197|    528|}
longobject.c:get_small_int:
   62|  1.02k|{
   63|  1.02k|    assert(IS_SMALL_INT(ival));
  ------------------
  |  Branch (63:5): [True: 1.02k, False: 0]
  |  Branch (63:5): [True: 1.02k, False: 0]
  ------------------
   64|  1.02k|    return (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + ival];
  ------------------
  |  |   59|  1.02k|#define _PyLong_SMALL_INTS _Py_SINGLETON(small_ints)
  |  |  ------------------
  |  |  |  |   18|  1.02k|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|  1.02k|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  return (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + ival];
  ------------------
  |  |   98|  1.02k|#define _PY_NSMALLNEGINTS           5
  ------------------
   65|  1.02k|}
longobject.c:_PyLong_FromMedium:
  252|    223|{
  253|    223|    assert(!IS_SMALL_INT(x));
  ------------------
  |  Branch (253:5): [True: 220, False: 3]
  |  Branch (253:5): [True: 0, False: 220]
  ------------------
  254|    223|    assert(is_medium_int(x));
  ------------------
  |  Branch (254:5): [True: 223, False: 0]
  ------------------
  255|       |
  256|    223|    PyLongObject *v = (PyLongObject *)_Py_FREELIST_POP(PyLongObject, ints);
  ------------------
  |  |   43|    223|    _Py_CAST(TYPE*, _PyFreeList_Pop(&_Py_freelists_GET()->NAME))
  |  |  ------------------
  |  |  |  |   37|    223|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  257|    223|    if (v == NULL) {
  ------------------
  |  Branch (257:9): [True: 138, False: 85]
  ------------------
  258|    138|        v = PyObject_Malloc(sizeof(PyLongObject));
  259|    138|        if (v == NULL) {
  ------------------
  |  Branch (259:13): [True: 0, False: 138]
  ------------------
  260|      0|            PyErr_NoMemory();
  261|      0|            return NULL;
  262|      0|        }
  263|    138|        _PyObject_Init((PyObject*)v, &PyLong_Type);
  264|    138|        _PyLong_InitTag(v);
  265|    138|    }
  266|    223|    digit abs_x = x < 0 ? -x : x;
  ------------------
  |  Branch (266:19): [True: 3, False: 220]
  ------------------
  267|    223|    _PyLong_SetSignAndDigitCount(v, x<0?-1:1, 1);
  ------------------
  |  Branch (267:37): [True: 3, False: 220]
  ------------------
  268|    223|    v->long_value.ob_digit[0] = abs_x;
  269|    223|    return (PyObject*)v;
  270|    223|}
longobject.c:is_medium_int:
   54|    227|{
   55|       |    /* Take care that we are comparing unsigned values. */
   56|    227|    twodigits x_plus_mask = ((twodigits)x) + PyLong_MASK;
  ------------------
  |  |   62|    227|#define PyLong_MASK     ((digit)(PyLong_BASE - 1))
  |  |  ------------------
  |  |  |  |   61|    227|#define PyLong_BASE     ((digit)1 << PyLong_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|    227|#define PyLong_SHIFT    30
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   57|    227|    return x_plus_mask < ((twodigits)PyLong_MASK) + PyLong_BASE;
  ------------------
  |  |   62|    227|#define PyLong_MASK     ((digit)(PyLong_BASE - 1))
  |  |  ------------------
  |  |  |  |   61|    227|#define PyLong_BASE     ((digit)1 << PyLong_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|    227|#define PyLong_SHIFT    30
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  return x_plus_mask < ((twodigits)PyLong_MASK) + PyLong_BASE;
  ------------------
  |  |   61|    227|#define PyLong_BASE     ((digit)1 << PyLong_SHIFT)
  |  |  ------------------
  |  |  |  |   47|    227|#define PyLong_SHIFT    30
  |  |  ------------------
  ------------------
   58|    227|}
longobject.c:unroll_digits_ulong:
  537|      2|{
  538|      2|    assert(ULONG_MAX >= ((1UL << PyLong_SHIFT) - 1));
  ------------------
  |  Branch (538:5): [True: 2, Folded]
  ------------------
  539|       |
  540|      2|    Py_ssize_t i = *iptr;
  541|      2|    assert(i >= 2);
  ------------------
  |  Branch (541:5): [True: 2, False: 0]
  ------------------
  542|       |
  543|       |    /* unroll 1 digit */
  544|      2|    --i;
  545|      2|    digit *digits = v->long_value.ob_digit;
  546|      2|    unsigned long x = digits[i];
  547|       |
  548|      2|#if (ULONG_MAX >> PyLong_SHIFT) >= ((1UL << PyLong_SHIFT) - 1)
  549|       |    /* unroll another digit */
  550|      2|    x <<= PyLong_SHIFT;
  ------------------
  |  |   47|      2|#define PyLong_SHIFT    30
  ------------------
  551|      2|    --i;
  552|      2|    x |= digits[i];
  553|      2|#endif
  554|       |
  555|      2|    *iptr = i;
  556|      2|    return x;
  557|      2|}
longobject.c:long_sign:
  936|      3|{
  937|      3|    assert(vv != NULL);
  ------------------
  |  Branch (937:5): [True: 3, False: 0]
  ------------------
  938|      3|    assert(PyLong_Check(vv));
  ------------------
  |  Branch (938:5): [True: 3, False: 0]
  ------------------
  939|      3|    PyLongObject *v = (PyLongObject *)vv;
  940|       |
  941|      3|    if (_PyLong_IsCompact(v)) {
  ------------------
  |  Branch (941:9): [True: 3, False: 0]
  ------------------
  942|      3|        return _PyLong_CompactSign(v);
  943|      3|    }
  944|      0|    return _PyLong_NonCompactSign(v);
  945|      3|}
longobject.c:maybe_small_long:
   69|      8|{
   70|      8|    if (v && _PyLong_IsCompact(v)) {
  ------------------
  |  Branch (70:9): [True: 8, False: 0]
  |  Branch (70:14): [True: 0, False: 8]
  ------------------
   71|      0|        stwodigits ival = medium_value(v);
  ------------------
  |  |   27|      0|#define medium_value(x) ((stwodigits)_PyLong_CompactValue(x))
  ------------------
   72|      0|        if (IS_SMALL_INT(ival)) {
  ------------------
  |  |   29|      0|#define IS_SMALL_INT(ival) _PY_IS_SMALL_INT(ival)
  |  |  ------------------
  |  |  |  |   68|      0|    (-_PY_NSMALLNEGINTS <= (val) && (val) < _PY_NSMALLPOSINTS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   98|      0|#define _PY_NSMALLNEGINTS           5
  |  |  |  |  ------------------
  |  |  |  |                   (-_PY_NSMALLNEGINTS <= (val) && (val) < _PY_NSMALLPOSINTS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   97|      0|#define _PY_NSMALLPOSINTS           1025
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (68:6): [True: 0, False: 0]
  |  |  |  |  |  Branch (68:37): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   73|      0|            _Py_DECREF_INT(v);
   74|      0|            return (PyLongObject *)get_small_int((sdigit)ival);
   75|      0|        }
   76|      0|    }
   77|      8|    return v;
   78|      8|}
longobject.c:_Py_DECREF_INT:
   47|     11|{
   48|     11|    assert(PyLong_CheckExact(op));
  ------------------
  |  Branch (48:5): [True: 11, False: 0]
  ------------------
   49|     11|    _Py_DECREF_SPECIALIZED((PyObject *)op, _PyLong_ExactDealloc);
   50|     11|}
longobject.c:long_normalize:
  127|      9|{
  128|      9|    Py_ssize_t j = _PyLong_DigitCount(v);
  129|      9|    Py_ssize_t i = j;
  130|       |
  131|     11|    while (i > 0 && v->long_value.ob_digit[i-1] == 0)
  ------------------
  |  Branch (131:12): [True: 11, False: 0]
  |  Branch (131:21): [True: 2, False: 9]
  ------------------
  132|      2|        --i;
  133|      9|    if (i != j) {
  ------------------
  |  Branch (133:9): [True: 2, False: 7]
  ------------------
  134|      2|        if (i == 0) {
  ------------------
  |  Branch (134:13): [True: 0, False: 2]
  ------------------
  135|      0|            _PyLong_SetSignAndDigitCount(v, 0, 0);
  136|      0|        }
  137|      2|        else {
  138|      2|            _PyLong_SetDigitCount(v, i);
  139|      2|        }
  140|      2|    }
  141|      9|    return v;
  142|      9|}
longobject.c:_resolve_endianness:
 1271|      1|{
 1272|      1|    if (*endianness == -1 || (*endianness & 2)) {
  ------------------
  |  Branch (1272:9): [True: 0, False: 1]
  |  Branch (1272:30): [True: 1, False: 0]
  ------------------
 1273|      1|        *endianness = PY_LITTLE_ENDIAN;
  ------------------
  |  |  454|      1|#  define PY_LITTLE_ENDIAN 1
  ------------------
 1274|      1|    } else {
 1275|      0|        *endianness &= 1;
 1276|      0|    }
 1277|      1|    assert(*endianness == 0 || *endianness == 1);
  ------------------
  |  Branch (1277:5): [True: 0, False: 1]
  |  Branch (1277:5): [True: 1, False: 0]
  ------------------
 1278|      1|    return 0;
 1279|      1|}
longobject.c:_fits_in_n_bits:
 1259|      1|{
 1260|      1|    if (n >= (Py_ssize_t)sizeof(Py_ssize_t) * 8) {
  ------------------
  |  Branch (1260:9): [True: 1, False: 0]
  ------------------
 1261|      1|        return 1;
 1262|      1|    }
 1263|       |    // If all bits above n are the same, we fit.
 1264|       |    // (Use n-1 if we require the sign bit to be consistent.)
 1265|      0|    Py_ssize_t v_extended = v >> ((int)n - 1);
 1266|      0|    return v_extended == 0 || v_extended == -1;
  ------------------
  |  Branch (1266:12): [True: 0, False: 0]
  |  Branch (1266:31): [True: 0, False: 0]
  ------------------
 1267|      1|}
longobject.c:long_to_decimal_string_internal:
 2101|     11|{
 2102|     11|    PyLongObject *scratch, *a;
 2103|     11|    PyObject *str = NULL;
 2104|     11|    Py_ssize_t size, strlen, size_a, i, j;
 2105|     11|    digit *pout, *pin, rem, tenpow;
 2106|     11|    int negative;
 2107|     11|    int d;
 2108|       |
 2109|       |    // writer or bytes_writer can be used, but not both at the same time.
 2110|     11|    assert(writer == NULL || bytes_writer == NULL);
  ------------------
  |  Branch (2110:5): [True: 11, False: 0]
  |  Branch (2110:5): [True: 0, False: 0]
  ------------------
 2111|       |
 2112|     11|    a = (PyLongObject *)aa;
 2113|     11|    if (a == NULL || !PyLong_Check(a)) {
  ------------------
  |  |   13|     11|        PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     11|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (2113:9): [True: 0, False: 11]
  |  Branch (2113:22): [True: 0, False: 11]
  ------------------
 2114|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
 2115|      0|        return -1;
 2116|      0|    }
 2117|     11|    size_a = _PyLong_DigitCount(a);
 2118|     11|    negative = _PyLong_IsNegative(a);
 2119|       |
 2120|       |    /* quick and dirty pre-check for overflowing the decimal digit limit,
 2121|       |       based on the inequality 10/3 >= log2(10)
 2122|       |
 2123|       |       explanation in https://github.com/python/cpython/pull/96537
 2124|       |    */
 2125|     11|    if (size_a >= 10 * _PY_LONG_MAX_STR_DIGITS_THRESHOLD
  ------------------
  |  |   42|     11|#define _PY_LONG_MAX_STR_DIGITS_THRESHOLD 640
  ------------------
  |  Branch (2125:9): [True: 0, False: 11]
  ------------------
 2126|     11|                  / (3 * PyLong_SHIFT) + 2) {
  ------------------
  |  |   47|     11|#define PyLong_SHIFT    30
  ------------------
 2127|      0|        PyInterpreterState *interp = _PyInterpreterState_GET();
 2128|      0|        int max_str_digits = interp->long_state.max_str_digits;
 2129|      0|        if ((max_str_digits > 0) &&
  ------------------
  |  Branch (2129:13): [True: 0, False: 0]
  ------------------
 2130|      0|            (max_str_digits / (3 * PyLong_SHIFT) <= (size_a - 11) / 10)) {
  ------------------
  |  |   47|      0|#define PyLong_SHIFT    30
  ------------------
  |  Branch (2130:13): [True: 0, False: 0]
  ------------------
 2131|      0|            PyErr_Format(PyExc_ValueError, _MAX_STR_DIGITS_ERROR_FMT_TO_STR,
  ------------------
  |  |   33|      0|#define _MAX_STR_DIGITS_ERROR_FMT_TO_STR "Exceeds the limit (%d digits) for integer string conversion; use sys.set_int_max_str_digits() to increase the limit"
  ------------------
 2132|      0|                         max_str_digits);
 2133|      0|            return -1;
 2134|      0|        }
 2135|      0|    }
 2136|       |
 2137|     11|#if WITH_PYLONG_MODULE
 2138|     11|    if (size_a > 1000) {
  ------------------
  |  Branch (2138:9): [True: 0, False: 11]
  ------------------
 2139|       |        /* Switch to _pylong.int_to_decimal_string(). */
 2140|      0|        return pylong_int_to_decimal_string(aa,
 2141|      0|                                         p_output,
 2142|      0|                                         writer,
 2143|      0|                                         bytes_writer,
 2144|      0|                                         bytes_str);
 2145|      0|    }
 2146|     11|#endif
 2147|       |
 2148|       |    /* quick and dirty upper bound for the number of digits
 2149|       |       required to express a in base _PyLong_DECIMAL_BASE:
 2150|       |
 2151|       |         #digits = 1 + floor(log2(a) / log2(_PyLong_DECIMAL_BASE))
 2152|       |
 2153|       |       But log2(a) < size_a * PyLong_SHIFT, and
 2154|       |       log2(_PyLong_DECIMAL_BASE) = log2(10) * _PyLong_DECIMAL_SHIFT
 2155|       |                                  > 3.3 * _PyLong_DECIMAL_SHIFT
 2156|       |
 2157|       |         size_a * PyLong_SHIFT / (3.3 * _PyLong_DECIMAL_SHIFT) =
 2158|       |             size_a + size_a / d < size_a + size_a / floor(d),
 2159|       |       where d = (3.3 * _PyLong_DECIMAL_SHIFT) /
 2160|       |                 (PyLong_SHIFT - 3.3 * _PyLong_DECIMAL_SHIFT)
 2161|       |    */
 2162|     11|    d = (33 * _PyLong_DECIMAL_SHIFT) /
  ------------------
  |  |   48|     11|#define _PyLong_DECIMAL_SHIFT   9 /* max(e such that 10**e fits in a digit) */
  ------------------
 2163|     11|        (10 * PyLong_SHIFT - 33 * _PyLong_DECIMAL_SHIFT);
  ------------------
  |  |   47|     11|#define PyLong_SHIFT    30
  ------------------
                      (10 * PyLong_SHIFT - 33 * _PyLong_DECIMAL_SHIFT);
  ------------------
  |  |   48|     11|#define _PyLong_DECIMAL_SHIFT   9 /* max(e such that 10**e fits in a digit) */
  ------------------
 2164|     11|    assert(size_a < PY_SSIZE_T_MAX/2);
  ------------------
  |  Branch (2164:5): [True: 11, False: 0]
  ------------------
 2165|     11|    size = 1 + size_a + size_a / d;
 2166|     11|    scratch = long_alloc(size);
 2167|     11|    if (scratch == NULL)
  ------------------
  |  Branch (2167:9): [True: 0, False: 11]
  ------------------
 2168|      0|        return -1;
 2169|       |
 2170|       |    /* convert array of base _PyLong_BASE digits in pin to an array of
 2171|       |       base _PyLong_DECIMAL_BASE digits in pout, following Knuth (TAOCP,
 2172|       |       Volume 2 (3rd edn), section 4.4, Method 1b). */
 2173|     11|    pin = a->long_value.ob_digit;
 2174|     11|    pout = scratch->long_value.ob_digit;
 2175|     11|    size = 0;
 2176|     22|    for (i = size_a; --i >= 0; ) {
  ------------------
  |  Branch (2176:22): [True: 11, False: 11]
  ------------------
 2177|     11|        digit hi = pin[i];
 2178|     11|        for (j = 0; j < size; j++) {
  ------------------
  |  Branch (2178:21): [True: 0, False: 11]
  ------------------
 2179|      0|            twodigits z = (twodigits)pout[j] << PyLong_SHIFT | hi;
  ------------------
  |  |   47|      0|#define PyLong_SHIFT    30
  ------------------
 2180|      0|            hi = (digit)(z / _PyLong_DECIMAL_BASE);
  ------------------
  |  |   49|      0|#define _PyLong_DECIMAL_BASE    ((digit)1000000000) /* 10 ** DECIMAL_SHIFT */
  ------------------
 2181|      0|            pout[j] = (digit)(z - (twodigits)hi *
 2182|      0|                              _PyLong_DECIMAL_BASE);
  ------------------
  |  |   49|      0|#define _PyLong_DECIMAL_BASE    ((digit)1000000000) /* 10 ** DECIMAL_SHIFT */
  ------------------
 2183|      0|        }
 2184|     22|        while (hi) {
  ------------------
  |  Branch (2184:16): [True: 11, False: 11]
  ------------------
 2185|     11|            pout[size++] = hi % _PyLong_DECIMAL_BASE;
  ------------------
  |  |   49|     11|#define _PyLong_DECIMAL_BASE    ((digit)1000000000) /* 10 ** DECIMAL_SHIFT */
  ------------------
 2186|     11|            hi /= _PyLong_DECIMAL_BASE;
  ------------------
  |  |   49|     11|#define _PyLong_DECIMAL_BASE    ((digit)1000000000) /* 10 ** DECIMAL_SHIFT */
  ------------------
 2187|     11|        }
 2188|       |        /* check for keyboard interrupt */
 2189|     11|        SIGCHECK({
  ------------------
  |  |  117|     11|    do {                                        \
  |  |  118|     11|        if (PyErr_CheckSignals()) PyTryBlock    \
  |  |  ------------------
  |  |  |  Branch (118:13): [True: 0, False: 11]
  |  |  ------------------
  |  |  119|     11|    } while(0)
  |  |  ------------------
  |  |  |  Branch (119:13): [Folded, False: 11]
  |  |  ------------------
  ------------------
 2190|     11|                Py_DECREF(scratch);
 2191|     11|                return -1;
 2192|     11|            });
 2193|     11|    }
 2194|       |    /* pout should have at least one digit, so that the case when a = 0
 2195|       |       works correctly */
 2196|     11|    if (size == 0)
  ------------------
  |  Branch (2196:9): [True: 0, False: 11]
  ------------------
 2197|      0|        pout[size++] = 0;
 2198|       |
 2199|       |    /* calculate exact length of output string, and allocate */
 2200|     11|    strlen = negative + 1 + (size - 1) * _PyLong_DECIMAL_SHIFT;
  ------------------
  |  |   48|     11|#define _PyLong_DECIMAL_SHIFT   9 /* max(e such that 10**e fits in a digit) */
  ------------------
 2201|     11|    tenpow = 10;
 2202|     11|    rem = pout[size-1];
 2203|     16|    while (rem >= tenpow) {
  ------------------
  |  Branch (2203:12): [True: 5, False: 11]
  ------------------
 2204|      5|        tenpow *= 10;
 2205|      5|        strlen++;
 2206|      5|    }
 2207|     11|    if (strlen > _PY_LONG_MAX_STR_DIGITS_THRESHOLD) {
  ------------------
  |  |   42|     11|#define _PY_LONG_MAX_STR_DIGITS_THRESHOLD 640
  ------------------
  |  Branch (2207:9): [True: 0, False: 11]
  ------------------
 2208|      0|        PyInterpreterState *interp = _PyInterpreterState_GET();
 2209|      0|        int max_str_digits = interp->long_state.max_str_digits;
 2210|      0|        Py_ssize_t strlen_nosign = strlen - negative;
 2211|      0|        if ((max_str_digits > 0) && (strlen_nosign > max_str_digits)) {
  ------------------
  |  Branch (2211:13): [True: 0, False: 0]
  |  Branch (2211:37): [True: 0, False: 0]
  ------------------
 2212|      0|            Py_DECREF(scratch);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2213|      0|            PyErr_Format(PyExc_ValueError, _MAX_STR_DIGITS_ERROR_FMT_TO_STR,
  ------------------
  |  |   33|      0|#define _MAX_STR_DIGITS_ERROR_FMT_TO_STR "Exceeds the limit (%d digits) for integer string conversion; use sys.set_int_max_str_digits() to increase the limit"
  ------------------
 2214|      0|                         max_str_digits);
 2215|      0|            return -1;
 2216|      0|        }
 2217|      0|    }
 2218|     11|    if (writer) {
  ------------------
  |  Branch (2218:9): [True: 0, False: 11]
  ------------------
 2219|      0|        if (_PyUnicodeWriter_Prepare(writer, strlen, '9') == -1) {
  ------------------
  |  |  562|      0|    (((MAXCHAR) <= (WRITER)->maxchar                                  \
  |  |  ------------------
  |  |  |  Branch (562:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  563|      0|      && (LENGTH) <= (WRITER)->size - (WRITER)->pos)                  \
  |  |  ------------------
  |  |  |  Branch (563:10): [True: 0, False: 0]
  |  |  ------------------
  |  |  564|      0|     ? 0                                                              \
  |  |  565|      0|     : (((LENGTH) == 0)                                               \
  |  |  ------------------
  |  |  |  Branch (565:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  566|      0|        ? 0                                                           \
  |  |  567|      0|        : _PyUnicodeWriter_PrepareInternal((WRITER), (LENGTH), (MAXCHAR))))
  ------------------
  |  Branch (2219:13): [True: 0, False: 0]
  ------------------
 2220|      0|            Py_DECREF(scratch);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2221|      0|            return -1;
 2222|      0|        }
 2223|      0|    }
 2224|     11|    else if (bytes_writer) {
  ------------------
  |  Branch (2224:14): [True: 0, False: 11]
  ------------------
 2225|      0|        *bytes_str = PyBytesWriter_GrowAndUpdatePointer(bytes_writer, strlen,
 2226|      0|                                                        *bytes_str);
 2227|      0|        if (*bytes_str == NULL) {
  ------------------
  |  Branch (2227:13): [True: 0, False: 0]
  ------------------
 2228|      0|            Py_DECREF(scratch);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2229|      0|            return -1;
 2230|      0|        }
 2231|      0|    }
 2232|     11|    else {
 2233|     11|        str = PyUnicode_New(strlen, '9');
 2234|     11|        if (str == NULL) {
  ------------------
  |  Branch (2234:13): [True: 0, False: 11]
  ------------------
 2235|      0|            Py_DECREF(scratch);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2236|      0|            return -1;
 2237|      0|        }
 2238|     11|    }
 2239|       |
 2240|     11|#define WRITE_DIGITS(p)                                               \
 2241|     11|    do {                                                              \
 2242|       |        /* pout[0] through pout[size-2] contribute exactly            \
 2243|       |           _PyLong_DECIMAL_SHIFT digits each */                       \
 2244|     11|        for (i=0; i < size - 1; i++) {                                \
 2245|     11|            rem = pout[i];                                            \
 2246|     11|            for (j = 0; j < _PyLong_DECIMAL_SHIFT; j++) {             \
 2247|     11|                *--p = '0' + rem % 10;                                \
 2248|     11|                rem /= 10;                                            \
 2249|     11|            }                                                         \
 2250|     11|        }                                                             \
 2251|       |        /* pout[size-1]: always produce at least one decimal digit */ \
 2252|     11|        rem = pout[i];                                                \
 2253|     11|        do {                                                          \
 2254|     11|            *--p = '0' + rem % 10;                                    \
 2255|     11|            rem /= 10;                                                \
 2256|     11|        } while (rem != 0);                                           \
 2257|     11|                                                                      \
 2258|       |        /* and sign */                                                \
 2259|     11|        if (negative)                                                 \
 2260|     11|            *--p = '-';                                               \
 2261|     11|    } while (0)
 2262|       |
 2263|     11|#define WRITE_UNICODE_DIGITS(TYPE)                                    \
 2264|     11|    do {                                                              \
 2265|     11|        if (writer)                                                   \
 2266|     11|            p = (TYPE*)PyUnicode_DATA(writer->buffer) + writer->pos + strlen; \
 2267|     11|        else                                                          \
 2268|     11|            p = (TYPE*)PyUnicode_DATA(str) + strlen;                  \
 2269|     11|                                                                      \
 2270|     11|        WRITE_DIGITS(p);                                              \
 2271|     11|                                                                      \
 2272|       |        /* check we've counted correctly */                           \
 2273|     11|        if (writer)                                                   \
 2274|     11|            assert(p == ((TYPE*)PyUnicode_DATA(writer->buffer) + writer->pos)); \
 2275|     11|        else                                                          \
 2276|     11|            assert(p == (TYPE*)PyUnicode_DATA(str));                  \
 2277|     11|    } while (0)
 2278|       |
 2279|       |    /* fill the string right-to-left */
 2280|     11|    if (bytes_writer) {
  ------------------
  |  Branch (2280:9): [True: 0, False: 11]
  ------------------
 2281|      0|        char *p = *bytes_str + strlen;
 2282|      0|        WRITE_DIGITS(p);
  ------------------
  |  | 2241|      0|    do {                                                              \
  |  | 2242|      0|        /* pout[0] through pout[size-2] contribute exactly            \
  |  | 2243|      0|           _PyLong_DECIMAL_SHIFT digits each */                       \
  |  | 2244|      0|        for (i=0; i < size - 1; i++) {                                \
  |  |  ------------------
  |  |  |  Branch (2244:19): [True: 0, False: 0]
  |  |  ------------------
  |  | 2245|      0|            rem = pout[i];                                            \
  |  | 2246|      0|            for (j = 0; j < _PyLong_DECIMAL_SHIFT; j++) {             \
  |  |  ------------------
  |  |  |  |   48|      0|#define _PyLong_DECIMAL_SHIFT   9 /* max(e such that 10**e fits in a digit) */
  |  |  ------------------
  |  |  |  Branch (2246:25): [True: 0, False: 0]
  |  |  ------------------
  |  | 2247|      0|                *--p = '0' + rem % 10;                                \
  |  | 2248|      0|                rem /= 10;                                            \
  |  | 2249|      0|            }                                                         \
  |  | 2250|      0|        }                                                             \
  |  | 2251|      0|        /* pout[size-1]: always produce at least one decimal digit */ \
  |  | 2252|      0|        rem = pout[i];                                                \
  |  | 2253|      0|        do {                                                          \
  |  | 2254|      0|            *--p = '0' + rem % 10;                                    \
  |  | 2255|      0|            rem /= 10;                                                \
  |  | 2256|      0|        } while (rem != 0);                                           \
  |  |  ------------------
  |  |  |  Branch (2256:18): [True: 0, False: 0]
  |  |  ------------------
  |  | 2257|      0|                                                                      \
  |  | 2258|      0|        /* and sign */                                                \
  |  | 2259|      0|        if (negative)                                                 \
  |  |  ------------------
  |  |  |  Branch (2259:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 2260|      0|            *--p = '-';                                               \
  |  | 2261|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (2261:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2283|      0|        assert(p == *bytes_str);
  ------------------
  |  Branch (2283:9): [True: 0, False: 0]
  ------------------
 2284|      0|    }
 2285|     11|    else {
 2286|     11|        int kind = writer ? writer->kind : PyUnicode_KIND(str);
  ------------------
  |  |  258|     11|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|     22|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 11, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2286:20): [True: 0, False: 11]
  ------------------
 2287|     11|        if (kind == PyUnicode_1BYTE_KIND) {
  ------------------
  |  Branch (2287:13): [True: 11, False: 0]
  ------------------
 2288|     11|            Py_UCS1 *p;
 2289|     11|            WRITE_UNICODE_DIGITS(Py_UCS1);
  ------------------
  |  | 2264|     11|    do {                                                              \
  |  | 2265|     11|        if (writer)                                                   \
  |  |  ------------------
  |  |  |  Branch (2265:13): [True: 0, False: 11]
  |  |  ------------------
  |  | 2266|     11|            p = (TYPE*)PyUnicode_DATA(writer->buffer) + writer->pos + strlen; \
  |  |  ------------------
  |  |  |  |  284|      0|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2267|     11|        else                                                          \
  |  | 2268|     11|            p = (TYPE*)PyUnicode_DATA(str) + strlen;                  \
  |  |  ------------------
  |  |  |  |  284|     11|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     11|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     11|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2269|     11|                                                                      \
  |  | 2270|     11|        WRITE_DIGITS(p);                                              \
  |  |  ------------------
  |  |  |  | 2241|     11|    do {                                                              \
  |  |  |  | 2242|     11|        /* pout[0] through pout[size-2] contribute exactly            \
  |  |  |  | 2243|     11|           _PyLong_DECIMAL_SHIFT digits each */                       \
  |  |  |  | 2244|     11|        for (i=0; i < size - 1; i++) {                                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2244:19): [True: 0, False: 11]
  |  |  |  |  ------------------
  |  |  |  | 2245|      0|            rem = pout[i];                                            \
  |  |  |  | 2246|      0|            for (j = 0; j < _PyLong_DECIMAL_SHIFT; j++) {             \
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|      0|#define _PyLong_DECIMAL_SHIFT   9 /* max(e such that 10**e fits in a digit) */
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2246:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2247|      0|                *--p = '0' + rem % 10;                                \
  |  |  |  | 2248|      0|                rem /= 10;                                            \
  |  |  |  | 2249|      0|            }                                                         \
  |  |  |  | 2250|      0|        }                                                             \
  |  |  |  | 2251|     11|        /* pout[size-1]: always produce at least one decimal digit */ \
  |  |  |  | 2252|     11|        rem = pout[i];                                                \
  |  |  |  | 2253|     16|        do {                                                          \
  |  |  |  | 2254|     16|            *--p = '0' + rem % 10;                                    \
  |  |  |  | 2255|     16|            rem /= 10;                                                \
  |  |  |  | 2256|     16|        } while (rem != 0);                                           \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2256:18): [True: 5, False: 11]
  |  |  |  |  ------------------
  |  |  |  | 2257|     11|                                                                      \
  |  |  |  | 2258|     11|        /* and sign */                                                \
  |  |  |  | 2259|     11|        if (negative)                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2259:13): [True: 0, False: 11]
  |  |  |  |  ------------------
  |  |  |  | 2260|     11|            *--p = '-';                                               \
  |  |  |  | 2261|     11|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2261:14): [Folded, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2271|     11|                                                                      \
  |  | 2272|     11|        /* check we've counted correctly */                           \
  |  | 2273|     11|        if (writer)                                                   \
  |  |  ------------------
  |  |  |  Branch (2273:13): [True: 0, False: 11]
  |  |  ------------------
  |  | 2274|     11|            assert(p == ((TYPE*)PyUnicode_DATA(writer->buffer) + writer->pos)); \
  |  | 2275|     11|        else                                                          \
  |  | 2276|     11|            assert(p == (TYPE*)PyUnicode_DATA(str));                  \
  |  | 2277|     11|    } while (0)
  |  |  ------------------
  |  |  |  Branch (2277:14): [Folded, False: 11]
  |  |  ------------------
  ------------------
  |  Branch (2289:13): [True: 0, False: 0]
  |  Branch (2289:13): [True: 11, False: 0]
  ------------------
 2290|     11|        }
 2291|      0|        else if (kind == PyUnicode_2BYTE_KIND) {
  ------------------
  |  Branch (2291:18): [True: 0, False: 0]
  ------------------
 2292|      0|            Py_UCS2 *p;
 2293|      0|            WRITE_UNICODE_DIGITS(Py_UCS2);
  ------------------
  |  | 2264|      0|    do {                                                              \
  |  | 2265|      0|        if (writer)                                                   \
  |  |  ------------------
  |  |  |  Branch (2265:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 2266|      0|            p = (TYPE*)PyUnicode_DATA(writer->buffer) + writer->pos + strlen; \
  |  |  ------------------
  |  |  |  |  284|      0|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2267|      0|        else                                                          \
  |  | 2268|      0|            p = (TYPE*)PyUnicode_DATA(str) + strlen;                  \
  |  |  ------------------
  |  |  |  |  284|      0|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2269|      0|                                                                      \
  |  | 2270|      0|        WRITE_DIGITS(p);                                              \
  |  |  ------------------
  |  |  |  | 2241|      0|    do {                                                              \
  |  |  |  | 2242|      0|        /* pout[0] through pout[size-2] contribute exactly            \
  |  |  |  | 2243|      0|           _PyLong_DECIMAL_SHIFT digits each */                       \
  |  |  |  | 2244|      0|        for (i=0; i < size - 1; i++) {                                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2244:19): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2245|      0|            rem = pout[i];                                            \
  |  |  |  | 2246|      0|            for (j = 0; j < _PyLong_DECIMAL_SHIFT; j++) {             \
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|      0|#define _PyLong_DECIMAL_SHIFT   9 /* max(e such that 10**e fits in a digit) */
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2246:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2247|      0|                *--p = '0' + rem % 10;                                \
  |  |  |  | 2248|      0|                rem /= 10;                                            \
  |  |  |  | 2249|      0|            }                                                         \
  |  |  |  | 2250|      0|        }                                                             \
  |  |  |  | 2251|      0|        /* pout[size-1]: always produce at least one decimal digit */ \
  |  |  |  | 2252|      0|        rem = pout[i];                                                \
  |  |  |  | 2253|      0|        do {                                                          \
  |  |  |  | 2254|      0|            *--p = '0' + rem % 10;                                    \
  |  |  |  | 2255|      0|            rem /= 10;                                                \
  |  |  |  | 2256|      0|        } while (rem != 0);                                           \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2256:18): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2257|      0|                                                                      \
  |  |  |  | 2258|      0|        /* and sign */                                                \
  |  |  |  | 2259|      0|        if (negative)                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2259:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2260|      0|            *--p = '-';                                               \
  |  |  |  | 2261|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2261:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2271|      0|                                                                      \
  |  | 2272|      0|        /* check we've counted correctly */                           \
  |  | 2273|      0|        if (writer)                                                   \
  |  |  ------------------
  |  |  |  Branch (2273:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 2274|      0|            assert(p == ((TYPE*)PyUnicode_DATA(writer->buffer) + writer->pos)); \
  |  | 2275|      0|        else                                                          \
  |  | 2276|      0|            assert(p == (TYPE*)PyUnicode_DATA(str));                  \
  |  | 2277|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (2277:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2293:13): [True: 0, False: 0]
  |  Branch (2293:13): [True: 0, False: 0]
  ------------------
 2294|      0|        }
 2295|      0|        else {
 2296|      0|            assert (kind == PyUnicode_4BYTE_KIND);
  ------------------
  |  Branch (2296:13): [True: 0, False: 0]
  ------------------
 2297|      0|            Py_UCS4 *p;
 2298|      0|            WRITE_UNICODE_DIGITS(Py_UCS4);
  ------------------
  |  | 2264|      0|    do {                                                              \
  |  | 2265|      0|        if (writer)                                                   \
  |  |  ------------------
  |  |  |  Branch (2265:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 2266|      0|            p = (TYPE*)PyUnicode_DATA(writer->buffer) + writer->pos + strlen; \
  |  |  ------------------
  |  |  |  |  284|      0|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2267|      0|        else                                                          \
  |  | 2268|      0|            p = (TYPE*)PyUnicode_DATA(str) + strlen;                  \
  |  |  ------------------
  |  |  |  |  284|      0|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2269|      0|                                                                      \
  |  | 2270|      0|        WRITE_DIGITS(p);                                              \
  |  |  ------------------
  |  |  |  | 2241|      0|    do {                                                              \
  |  |  |  | 2242|      0|        /* pout[0] through pout[size-2] contribute exactly            \
  |  |  |  | 2243|      0|           _PyLong_DECIMAL_SHIFT digits each */                       \
  |  |  |  | 2244|      0|        for (i=0; i < size - 1; i++) {                                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2244:19): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2245|      0|            rem = pout[i];                                            \
  |  |  |  | 2246|      0|            for (j = 0; j < _PyLong_DECIMAL_SHIFT; j++) {             \
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|      0|#define _PyLong_DECIMAL_SHIFT   9 /* max(e such that 10**e fits in a digit) */
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2246:25): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2247|      0|                *--p = '0' + rem % 10;                                \
  |  |  |  | 2248|      0|                rem /= 10;                                            \
  |  |  |  | 2249|      0|            }                                                         \
  |  |  |  | 2250|      0|        }                                                             \
  |  |  |  | 2251|      0|        /* pout[size-1]: always produce at least one decimal digit */ \
  |  |  |  | 2252|      0|        rem = pout[i];                                                \
  |  |  |  | 2253|      0|        do {                                                          \
  |  |  |  | 2254|      0|            *--p = '0' + rem % 10;                                    \
  |  |  |  | 2255|      0|            rem /= 10;                                                \
  |  |  |  | 2256|      0|        } while (rem != 0);                                           \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2256:18): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2257|      0|                                                                      \
  |  |  |  | 2258|      0|        /* and sign */                                                \
  |  |  |  | 2259|      0|        if (negative)                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2259:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 2260|      0|            *--p = '-';                                               \
  |  |  |  | 2261|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2261:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2271|      0|                                                                      \
  |  | 2272|      0|        /* check we've counted correctly */                           \
  |  | 2273|      0|        if (writer)                                                   \
  |  |  ------------------
  |  |  |  Branch (2273:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 2274|      0|            assert(p == ((TYPE*)PyUnicode_DATA(writer->buffer) + writer->pos)); \
  |  | 2275|      0|        else                                                          \
  |  | 2276|      0|            assert(p == (TYPE*)PyUnicode_DATA(str));                  \
  |  | 2277|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (2277:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2298:13): [True: 0, False: 0]
  |  Branch (2298:13): [True: 0, False: 0]
  ------------------
 2299|      0|        }
 2300|     11|    }
 2301|       |
 2302|     11|#undef WRITE_DIGITS
 2303|     11|#undef WRITE_UNICODE_DIGITS
 2304|       |
 2305|     11|    _Py_DECREF_INT(scratch);
 2306|     11|    if (writer) {
  ------------------
  |  Branch (2306:9): [True: 0, False: 11]
  ------------------
 2307|      0|        writer->pos += strlen;
 2308|      0|    }
 2309|     11|    else if (bytes_writer) {
  ------------------
  |  Branch (2309:14): [True: 0, False: 11]
  ------------------
 2310|      0|        (*bytes_str) += strlen;
 2311|      0|    }
 2312|     11|    else {
 2313|     11|        assert(_PyUnicode_CheckConsistency(str, 1));
  ------------------
  |  Branch (2313:9): [True: 11, False: 0]
  ------------------
 2314|     11|        *p_output = (PyObject *)str;
 2315|     11|    }
 2316|     11|    return 0;
 2317|     11|}
longobject.c:_PyLong_FromSTwoDigits:
  314|      8|{
  315|      8|    if (IS_SMALL_INT(x)) {
  ------------------
  |  |   29|      8|#define IS_SMALL_INT(ival) _PY_IS_SMALL_INT(ival)
  |  |  ------------------
  |  |  |  |   68|      8|    (-_PY_NSMALLNEGINTS <= (val) && (val) < _PY_NSMALLPOSINTS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   98|      8|#define _PY_NSMALLNEGINTS           5
  |  |  |  |  ------------------
  |  |  |  |                   (-_PY_NSMALLNEGINTS <= (val) && (val) < _PY_NSMALLPOSINTS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   97|      8|#define _PY_NSMALLPOSINTS           1025
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (68:6): [True: 8, False: 0]
  |  |  |  |  |  Branch (68:37): [True: 4, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  316|      4|        return (PyLongObject*)get_small_int((sdigit)x);
  317|      4|    }
  318|      8|    assert(x != 0);
  ------------------
  |  Branch (318:5): [True: 4, False: 0]
  ------------------
  319|      4|    if (is_medium_int(x)) {
  ------------------
  |  Branch (319:9): [True: 4, False: 0]
  ------------------
  320|      4|        return (PyLongObject*)_PyLong_FromMedium((sdigit)x);
  321|      4|    }
  322|      0|    return (PyLongObject*)_PyLong_FromLarge(x);
  323|      4|}
longobject.c:medium_from_stwodigits:
  329|      4|{
  330|      4|    if (IS_SMALL_INT(x)) {
  ------------------
  |  |   29|      4|#define IS_SMALL_INT(ival) _PY_IS_SMALL_INT(ival)
  |  |  ------------------
  |  |  |  |   68|      4|    (-_PY_NSMALLNEGINTS <= (val) && (val) < _PY_NSMALLPOSINTS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   98|      4|#define _PY_NSMALLNEGINTS           5
  |  |  |  |  ------------------
  |  |  |  |                   (-_PY_NSMALLNEGINTS <= (val) && (val) < _PY_NSMALLPOSINTS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   97|      4|#define _PY_NSMALLPOSINTS           1025
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (68:6): [True: 4, False: 0]
  |  |  |  |  |  Branch (68:37): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  331|      4|        return PyStackRef_FromPyObjectBorrow(get_small_int((sdigit)x));
  332|      4|    }
  333|      4|    assert(x != 0);
  ------------------
  |  Branch (333:5): [True: 0, False: 0]
  ------------------
  334|      0|    if(!is_medium_int(x)) {
  ------------------
  |  Branch (334:8): [True: 0, False: 0]
  ------------------
  335|      0|        return PyStackRef_NULL;
  336|      0|    }
  337|      0|    PyLongObject *v = (PyLongObject *)_Py_FREELIST_POP(PyLongObject, ints);
  ------------------
  |  |   43|      0|    _Py_CAST(TYPE*, _PyFreeList_Pop(&_Py_freelists_GET()->NAME))
  |  |  ------------------
  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  338|      0|    if (v == NULL) {
  ------------------
  |  Branch (338:9): [True: 0, False: 0]
  ------------------
  339|      0|        v = PyObject_Malloc(sizeof(PyLongObject));
  340|      0|        if (v == NULL) {
  ------------------
  |  Branch (340:13): [True: 0, False: 0]
  ------------------
  341|      0|            return PyStackRef_NULL;
  342|      0|        }
  343|      0|        _PyObject_Init((PyObject*)v, &PyLong_Type);
  344|      0|        _PyLong_InitTag(v);
  345|      0|    }
  346|      0|    digit abs_x = x < 0 ? (digit)(-x) : (digit)x;
  ------------------
  |  Branch (346:19): [True: 0, False: 0]
  ------------------
  347|      0|    _PyLong_SetSignAndDigitCount(v, x<0?-1:1, 1);
  ------------------
  |  Branch (347:37): [True: 0, False: 0]
  ------------------
  348|      0|    v->long_value.ob_digit[0] = abs_x;
  349|      0|    return PyStackRef_FromPyObjectStealMortal((PyObject *)v);
  350|      0|}
longobject.c:long_lshift_int64:
 5523|      1|{
 5524|      1|    assert(shiftby >= 0);
  ------------------
  |  Branch (5524:5): [True: 1, False: 0]
  ------------------
 5525|       |
 5526|      1|    if (_PyLong_IsZero(a)) {
  ------------------
  |  Branch (5526:9): [True: 0, False: 1]
  ------------------
 5527|      0|        return PyLong_FromLong(0);
 5528|      0|    }
 5529|       |#if PY_SSIZE_T_MAX <= INT64_MAX / PyLong_SHIFT
 5530|       |    if (shiftby > (int64_t)PY_SSIZE_T_MAX * PyLong_SHIFT) {
 5531|       |        PyErr_SetString(PyExc_OverflowError,
 5532|       |                        "too many digits in integer");
 5533|       |        return NULL;
 5534|       |    }
 5535|       |#endif
 5536|      1|    Py_ssize_t wordshift = (Py_ssize_t)(shiftby / PyLong_SHIFT);
  ------------------
  |  |   47|      1|#define PyLong_SHIFT    30
  ------------------
 5537|      1|    digit remshift = (digit)(shiftby % PyLong_SHIFT);
  ------------------
  |  |   47|      1|#define PyLong_SHIFT    30
  ------------------
 5538|      1|    return long_lshift1(a, wordshift, remshift);
 5539|      1|}
longobject.c:long_lshift1:
 5454|      1|{
 5455|      1|    PyLongObject *z = NULL;
 5456|      1|    Py_ssize_t oldsize, newsize, i, j;
 5457|      1|    twodigits accum;
 5458|       |
 5459|      1|    if (wordshift == 0 && _PyLong_IsCompact(a)) {
  ------------------
  |  Branch (5459:9): [True: 0, False: 1]
  |  Branch (5459:27): [True: 0, False: 0]
  ------------------
 5460|      0|        stwodigits m = medium_value(a);
  ------------------
  |  |   27|      0|#define medium_value(x) ((stwodigits)_PyLong_CompactValue(x))
  ------------------
 5461|       |        // bypass undefined shift operator behavior
 5462|      0|        stwodigits x = m < 0 ? -(-m << remshift) : m << remshift;
  ------------------
  |  Branch (5462:24): [True: 0, False: 0]
  ------------------
 5463|      0|        return (PyObject*)_PyLong_FromSTwoDigits(x);
 5464|      0|    }
 5465|       |
 5466|      1|    oldsize = _PyLong_DigitCount(a);
 5467|      1|    newsize = oldsize + wordshift;
 5468|      1|    if (remshift)
  ------------------
  |  Branch (5468:9): [True: 1, False: 0]
  ------------------
 5469|      1|        ++newsize;
 5470|      1|    z = long_alloc(newsize);
 5471|      1|    if (z == NULL)
  ------------------
  |  Branch (5471:9): [True: 0, False: 1]
  ------------------
 5472|      0|        return NULL;
 5473|      1|    if (_PyLong_IsNegative(a)) {
  ------------------
  |  Branch (5473:9): [True: 0, False: 1]
  ------------------
 5474|      0|        assert(Py_REFCNT(z) == 1);
  ------------------
  |  Branch (5474:9): [True: 0, False: 0]
  ------------------
 5475|      0|        _PyLong_FlipSign(z);
 5476|      0|    }
 5477|     34|    for (i = 0; i < wordshift; i++)
  ------------------
  |  Branch (5477:17): [True: 33, False: 1]
  ------------------
 5478|     33|        z->long_value.ob_digit[i] = 0;
 5479|      1|    accum = 0;
 5480|      2|    for (j = 0; j < oldsize; i++, j++) {
  ------------------
  |  Branch (5480:17): [True: 1, False: 1]
  ------------------
 5481|      1|        accum |= (twodigits)a->long_value.ob_digit[j] << remshift;
 5482|      1|        z->long_value.ob_digit[i] = (digit)(accum & PyLong_MASK);
  ------------------
  |  |   62|      1|#define PyLong_MASK     ((digit)(PyLong_BASE - 1))
  |  |  ------------------
  |  |  |  |   61|      1|#define PyLong_BASE     ((digit)1 << PyLong_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      1|#define PyLong_SHIFT    30
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5483|      1|        accum >>= PyLong_SHIFT;
  ------------------
  |  |   47|      1|#define PyLong_SHIFT    30
  ------------------
 5484|      1|    }
 5485|      1|    if (remshift)
  ------------------
  |  Branch (5485:9): [True: 1, False: 0]
  ------------------
 5486|      1|        z->long_value.ob_digit[newsize-1] = (digit)accum;
 5487|      0|    else
 5488|      1|        assert(!accum);
  ------------------
  |  Branch (5488:9): [True: 0, False: 0]
  ------------------
 5489|      1|    z = long_normalize(z);
 5490|      1|    return (PyObject *) maybe_small_long(z);
 5491|      1|}
longobject.c:long_compare:
 3603|     46|{
 3604|     46|    if (_PyLong_BothAreCompact(a, b)) {
  ------------------
  |  Branch (3604:9): [True: 9, False: 37]
  ------------------
 3605|      9|        return _PyLong_CompactValue(a) - _PyLong_CompactValue(b);
 3606|      9|    }
 3607|     37|    Py_ssize_t sign = _PyLong_SignedDigitCount(a) - _PyLong_SignedDigitCount(b);
 3608|     37|    if (sign == 0) {
  ------------------
  |  Branch (3608:9): [True: 36, False: 1]
  ------------------
 3609|     36|        Py_ssize_t i = _PyLong_DigitCount(a);
 3610|     36|        sdigit diff = 0;
 3611|    108|        while (--i >= 0) {
  ------------------
  |  Branch (3611:16): [True: 72, False: 36]
  ------------------
 3612|     72|            diff = (sdigit) a->long_value.ob_digit[i] - (sdigit) b->long_value.ob_digit[i];
 3613|     72|            if (diff) {
  ------------------
  |  Branch (3613:17): [True: 0, False: 72]
  ------------------
 3614|      0|                break;
 3615|      0|            }
 3616|     72|        }
 3617|     36|        sign = _PyLong_IsNegative(a) ? -diff : diff;
  ------------------
  |  Branch (3617:16): [True: 0, False: 36]
  ------------------
 3618|     36|    }
 3619|     37|    return sign;
 3620|     46|}
longobject.c:long_divrem:
 3216|      1|{
 3217|      1|    Py_ssize_t size_a = _PyLong_DigitCount(a), size_b = _PyLong_DigitCount(b);
 3218|      1|    PyLongObject *z;
 3219|       |
 3220|      1|    if (size_b == 0) {
  ------------------
  |  Branch (3220:9): [True: 0, False: 1]
  ------------------
 3221|      0|        PyErr_SetString(PyExc_ZeroDivisionError, "division by zero");
 3222|      0|        return -1;
 3223|      0|    }
 3224|      1|    if (size_a < size_b ||
  ------------------
  |  Branch (3224:9): [True: 0, False: 1]
  ------------------
 3225|      1|        (size_a == size_b &&
  ------------------
  |  Branch (3225:10): [True: 0, False: 1]
  ------------------
 3226|      0|         a->long_value.ob_digit[size_a-1] < b->long_value.ob_digit[size_b-1])) {
  ------------------
  |  Branch (3226:10): [True: 0, False: 0]
  ------------------
 3227|       |        /* |a| < |b|. */
 3228|      0|        *prem = (PyLongObject *)long_long((PyObject *)a);
 3229|      0|        if (*prem == NULL) {
  ------------------
  |  Branch (3229:13): [True: 0, False: 0]
  ------------------
 3230|      0|            return -1;
 3231|      0|        }
 3232|      0|        *pdiv = (PyLongObject*)_PyLong_GetZero();
 3233|      0|        return 0;
 3234|      0|    }
 3235|      1|    if (size_b == 1) {
  ------------------
  |  Branch (3235:9): [True: 1, False: 0]
  ------------------
 3236|      1|        digit rem = 0;
 3237|      1|        z = divrem1(a, b->long_value.ob_digit[0], &rem);
 3238|      1|        if (z == NULL)
  ------------------
  |  Branch (3238:13): [True: 0, False: 1]
  ------------------
 3239|      0|            return -1;
 3240|      1|        *prem = (PyLongObject *) PyLong_FromLong((long)rem);
 3241|      1|        if (*prem == NULL) {
  ------------------
  |  Branch (3241:13): [True: 0, False: 1]
  ------------------
 3242|      0|            Py_DECREF(z);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3243|      0|            return -1;
 3244|      0|        }
 3245|      1|    }
 3246|      0|    else {
 3247|      0|        z = x_divrem(a, b, prem);
 3248|      0|        *prem = maybe_small_long(*prem);
 3249|      0|        if (z == NULL)
  ------------------
  |  Branch (3249:13): [True: 0, False: 0]
  ------------------
 3250|      0|            return -1;
 3251|      0|    }
 3252|       |    /* Set the signs.
 3253|       |       The quotient z has the sign of a*b;
 3254|       |       the remainder r has the sign of a,
 3255|       |       so a = b*z + r. */
 3256|      1|    if ((_PyLong_IsNegative(a)) != (_PyLong_IsNegative(b))) {
  ------------------
  |  Branch (3256:9): [True: 0, False: 1]
  ------------------
 3257|      0|        _PyLong_Negate(&z);
 3258|      0|        if (z == NULL) {
  ------------------
  |  Branch (3258:13): [True: 0, False: 0]
  ------------------
 3259|      0|            Py_CLEAR(*prem);
  ------------------
  |  |  484|      0|    do { \
  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3260|      0|            return -1;
 3261|      0|        }
 3262|      0|    }
 3263|      1|    if (_PyLong_IsNegative(a) && !_PyLong_IsZero(*prem)) {
  ------------------
  |  Branch (3263:9): [True: 0, False: 1]
  |  Branch (3263:34): [True: 0, False: 0]
  ------------------
 3264|      0|        _PyLong_Negate(prem);
 3265|      0|        if (*prem == NULL) {
  ------------------
  |  Branch (3265:13): [True: 0, False: 0]
  ------------------
 3266|      0|            Py_DECREF(z);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3267|      0|            Py_CLEAR(*prem);
  ------------------
  |  |  484|      0|    do { \
  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3268|      0|            return -1;
 3269|      0|        }
 3270|      0|    }
 3271|      1|    *pdiv = maybe_small_long(z);
 3272|      1|    return 0;
 3273|      1|}
longobject.c:divrem1:
 1983|      1|{
 1984|      1|    const Py_ssize_t size = _PyLong_DigitCount(a);
 1985|      1|    PyLongObject *z;
 1986|       |
 1987|      1|    assert(n > 0 && n <= PyLong_MASK);
  ------------------
  |  Branch (1987:5): [True: 1, False: 0]
  |  Branch (1987:5): [True: 1, False: 0]
  ------------------
 1988|      1|    z = long_alloc(size);
 1989|      1|    if (z == NULL)
  ------------------
  |  Branch (1989:9): [True: 0, False: 1]
  ------------------
 1990|      0|        return NULL;
 1991|      1|    *prem = inplace_divrem1(z->long_value.ob_digit, a->long_value.ob_digit, size, n);
 1992|      1|    return long_normalize(z);
 1993|      1|}
longobject.c:inplace_divrem1:
 1961|      1|{
 1962|      1|    digit remainder = 0;
 1963|       |
 1964|      1|    assert(n > 0 && n <= PyLong_MASK);
  ------------------
  |  Branch (1964:5): [True: 1, False: 0]
  |  Branch (1964:5): [True: 1, False: 0]
  ------------------
 1965|     35|    while (--size >= 0) {
  ------------------
  |  Branch (1965:12): [True: 34, False: 1]
  ------------------
 1966|     34|        twodigits dividend;
 1967|     34|        dividend = ((twodigits)remainder << PyLong_SHIFT) | pin[size];
  ------------------
  |  |   47|     34|#define PyLong_SHIFT    30
  ------------------
 1968|     34|        digit quotient;
 1969|     34|        quotient = (digit)(dividend / n);
 1970|     34|        remainder = dividend % n;
 1971|     34|        pout[size] = quotient;
 1972|     34|    }
 1973|      1|    return remainder;
 1974|      1|}
longobject.c:long_sub:
 3884|      2|{
 3885|      2|    if (_PyLong_BothAreCompact(a, b)) {
  ------------------
  |  Branch (3885:9): [True: 0, False: 2]
  ------------------
 3886|      0|        return _PyLong_FromSTwoDigits(medium_value(a) - medium_value(b));
  ------------------
  |  |   27|      0|#define medium_value(x) ((stwodigits)_PyLong_CompactValue(x))
  ------------------
                      return _PyLong_FromSTwoDigits(medium_value(a) - medium_value(b));
  ------------------
  |  |   27|      0|#define medium_value(x) ((stwodigits)_PyLong_CompactValue(x))
  ------------------
 3887|      0|    }
 3888|       |
 3889|      2|    PyLongObject *z;
 3890|      2|    if (_PyLong_IsNegative(a)) {
  ------------------
  |  Branch (3890:9): [True: 0, False: 2]
  ------------------
 3891|      0|        if (_PyLong_IsNegative(b)) {
  ------------------
  |  Branch (3891:13): [True: 0, False: 0]
  ------------------
 3892|      0|            z = x_sub(b, a);
 3893|      0|        }
 3894|      0|        else {
 3895|      0|            z = x_add(a, b);
 3896|      0|            if (z != NULL) {
  ------------------
  |  Branch (3896:17): [True: 0, False: 0]
  ------------------
 3897|      0|                assert(_PyLong_IsZero(z) || Py_REFCNT(z) == 1);
  ------------------
  |  Branch (3897:17): [True: 0, False: 0]
  |  Branch (3897:17): [True: 0, False: 0]
  ------------------
 3898|      0|                _PyLong_FlipSign(z);
 3899|      0|            }
 3900|      0|        }
 3901|      0|    }
 3902|      2|    else {
 3903|      2|        if (_PyLong_IsNegative(b))
  ------------------
  |  Branch (3903:13): [True: 0, False: 2]
  ------------------
 3904|      0|            z = x_add(a, b);
 3905|      2|        else
 3906|      2|            z = x_sub(a, b);
 3907|      2|    }
 3908|      2|    return z;
 3909|      2|}
longobject.c:x_sub:
 3781|      2|{
 3782|      2|    Py_ssize_t size_a = _PyLong_DigitCount(a), size_b = _PyLong_DigitCount(b);
 3783|      2|    PyLongObject *z;
 3784|      2|    Py_ssize_t i;
 3785|      2|    int sign = 1;
 3786|      2|    digit borrow = 0;
 3787|       |
 3788|       |    /* Ensure a is the larger of the two: */
 3789|      2|    if (size_a < size_b) {
  ------------------
  |  Branch (3789:9): [True: 0, False: 2]
  ------------------
 3790|      0|        sign = -1;
 3791|      0|        { PyLongObject *temp = a; a = b; b = temp; }
 3792|      0|        { Py_ssize_t size_temp = size_a;
 3793|      0|            size_a = size_b;
 3794|      0|            size_b = size_temp; }
 3795|      0|    }
 3796|      2|    else if (size_a == size_b) {
  ------------------
  |  Branch (3796:14): [True: 0, False: 2]
  ------------------
 3797|       |        /* Find highest digit where a and b differ: */
 3798|      0|        i = size_a;
 3799|      0|        while (--i >= 0 && a->long_value.ob_digit[i] == b->long_value.ob_digit[i])
  ------------------
  |  Branch (3799:16): [True: 0, False: 0]
  |  Branch (3799:28): [True: 0, False: 0]
  ------------------
 3800|      0|            ;
 3801|      0|        if (i < 0)
  ------------------
  |  Branch (3801:13): [True: 0, False: 0]
  ------------------
 3802|      0|            return (PyLongObject *)PyLong_FromLong(0);
 3803|      0|        if (a->long_value.ob_digit[i] < b->long_value.ob_digit[i]) {
  ------------------
  |  Branch (3803:13): [True: 0, False: 0]
  ------------------
 3804|      0|            sign = -1;
 3805|      0|            { PyLongObject *temp = a; a = b; b = temp; }
 3806|      0|        }
 3807|      0|        size_a = size_b = i+1;
 3808|      0|    }
 3809|      2|    z = long_alloc(size_a);
 3810|      2|    if (z == NULL)
  ------------------
  |  Branch (3810:9): [True: 0, False: 2]
  ------------------
 3811|      0|        return NULL;
 3812|      3|    for (i = 0; i < size_b; ++i) {
  ------------------
  |  Branch (3812:17): [True: 1, False: 2]
  ------------------
 3813|       |        /* The following assumes unsigned arithmetic
 3814|       |           works module 2**N for some N>PyLong_SHIFT. */
 3815|      1|        borrow = a->long_value.ob_digit[i] - b->long_value.ob_digit[i] - borrow;
 3816|      1|        z->long_value.ob_digit[i] = borrow & PyLong_MASK;
  ------------------
  |  |   62|      1|#define PyLong_MASK     ((digit)(PyLong_BASE - 1))
  |  |  ------------------
  |  |  |  |   61|      1|#define PyLong_BASE     ((digit)1 << PyLong_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      1|#define PyLong_SHIFT    30
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3817|      1|        borrow >>= PyLong_SHIFT;
  ------------------
  |  |   47|      1|#define PyLong_SHIFT    30
  ------------------
 3818|      1|        borrow &= 1; /* Keep only one sign bit */
 3819|      1|    }
 3820|     69|    for (; i < size_a; ++i) {
  ------------------
  |  Branch (3820:12): [True: 67, False: 2]
  ------------------
 3821|     67|        borrow = a->long_value.ob_digit[i] - borrow;
 3822|     67|        z->long_value.ob_digit[i] = borrow & PyLong_MASK;
  ------------------
  |  |   62|     67|#define PyLong_MASK     ((digit)(PyLong_BASE - 1))
  |  |  ------------------
  |  |  |  |   61|     67|#define PyLong_BASE     ((digit)1 << PyLong_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|     67|#define PyLong_SHIFT    30
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3823|     67|        borrow >>= PyLong_SHIFT;
  ------------------
  |  |   47|     67|#define PyLong_SHIFT    30
  ------------------
 3824|     67|        borrow &= 1; /* Keep only one sign bit */
 3825|     67|    }
 3826|      2|    assert(borrow == 0);
  ------------------
  |  Branch (3826:5): [True: 2, False: 0]
  ------------------
 3827|      2|    if (sign < 0) {
  ------------------
  |  Branch (3827:9): [True: 0, False: 2]
  ------------------
 3828|      0|        _PyLong_FlipSign(z);
 3829|      0|    }
 3830|      2|    return maybe_small_long(long_normalize(z));
 3831|      2|}
longobject.c:x_add:
 3747|      1|{
 3748|      1|    Py_ssize_t size_a = _PyLong_DigitCount(a), size_b = _PyLong_DigitCount(b);
 3749|      1|    PyLongObject *z;
 3750|      1|    Py_ssize_t i;
 3751|      1|    digit carry = 0;
 3752|       |
 3753|       |    /* Ensure a is the larger of the two: */
 3754|      1|    if (size_a < size_b) {
  ------------------
  |  Branch (3754:9): [True: 0, False: 1]
  ------------------
 3755|      0|        { PyLongObject *temp = a; a = b; b = temp; }
 3756|      0|        { Py_ssize_t size_temp = size_a;
 3757|      0|            size_a = size_b;
 3758|      0|            size_b = size_temp; }
 3759|      0|    }
 3760|      1|    z = long_alloc(size_a+1);
 3761|      1|    if (z == NULL)
  ------------------
  |  Branch (3761:9): [True: 0, False: 1]
  ------------------
 3762|      0|        return NULL;
 3763|      2|    for (i = 0; i < size_b; ++i) {
  ------------------
  |  Branch (3763:17): [True: 1, False: 1]
  ------------------
 3764|      1|        carry += a->long_value.ob_digit[i] + b->long_value.ob_digit[i];
 3765|      1|        z->long_value.ob_digit[i] = carry & PyLong_MASK;
  ------------------
  |  |   62|      1|#define PyLong_MASK     ((digit)(PyLong_BASE - 1))
  |  |  ------------------
  |  |  |  |   61|      1|#define PyLong_BASE     ((digit)1 << PyLong_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|      1|#define PyLong_SHIFT    30
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3766|      1|        carry >>= PyLong_SHIFT;
  ------------------
  |  |   47|      1|#define PyLong_SHIFT    30
  ------------------
 3767|      1|    }
 3768|     34|    for (; i < size_a; ++i) {
  ------------------
  |  Branch (3768:12): [True: 33, False: 1]
  ------------------
 3769|     33|        carry += a->long_value.ob_digit[i];
 3770|     33|        z->long_value.ob_digit[i] = carry & PyLong_MASK;
  ------------------
  |  |   62|     33|#define PyLong_MASK     ((digit)(PyLong_BASE - 1))
  |  |  ------------------
  |  |  |  |   61|     33|#define PyLong_BASE     ((digit)1 << PyLong_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|     33|#define PyLong_SHIFT    30
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3771|     33|        carry >>= PyLong_SHIFT;
  ------------------
  |  |   47|     33|#define PyLong_SHIFT    30
  ------------------
 3772|     33|    }
 3773|      1|    z->long_value.ob_digit[i] = carry;
 3774|      1|    return long_normalize(z);
 3775|      1|}
longobject.c:long_add:
 3835|      4|{
 3836|      4|    if (_PyLong_BothAreCompact(a, b)) {
  ------------------
  |  Branch (3836:9): [True: 3, False: 1]
  ------------------
 3837|      3|        stwodigits z = medium_value(a) + medium_value(b);
  ------------------
  |  |   27|      3|#define medium_value(x) ((stwodigits)_PyLong_CompactValue(x))
  ------------------
                      stwodigits z = medium_value(a) + medium_value(b);
  ------------------
  |  |   27|      3|#define medium_value(x) ((stwodigits)_PyLong_CompactValue(x))
  ------------------
 3838|      3|        return _PyLong_FromSTwoDigits(z);
 3839|      3|    }
 3840|       |
 3841|      1|    PyLongObject *z;
 3842|      1|    if (_PyLong_IsNegative(a)) {
  ------------------
  |  Branch (3842:9): [True: 0, False: 1]
  ------------------
 3843|      0|        if (_PyLong_IsNegative(b)) {
  ------------------
  |  Branch (3843:13): [True: 0, False: 0]
  ------------------
 3844|      0|            z = x_add(a, b);
 3845|      0|            if (z != NULL) {
  ------------------
  |  Branch (3845:17): [True: 0, False: 0]
  ------------------
 3846|       |                /* x_add received at least one multiple-digit int,
 3847|       |                   and thus z must be a multiple-digit int.
 3848|       |                   That also means z is not an element of
 3849|       |                   small_ints, so negating it in-place is safe. */
 3850|      0|                assert(Py_REFCNT(z) == 1);
  ------------------
  |  Branch (3850:17): [True: 0, False: 0]
  ------------------
 3851|      0|                _PyLong_FlipSign(z);
 3852|      0|            }
 3853|      0|        }
 3854|      0|        else
 3855|      0|            z = x_sub(b, a);
 3856|      0|    }
 3857|      1|    else {
 3858|      1|        if (_PyLong_IsNegative(b))
  ------------------
  |  Branch (3858:13): [True: 0, False: 1]
  ------------------
 3859|      0|            z = x_sub(a, b);
 3860|      1|        else
 3861|      1|            z = x_add(a, b);
 3862|      1|    }
 3863|      1|    return z;
 3864|      1|}
longobject.c:long_dealloc:
 3652|    237|{
 3653|    237|    if (_PyLong_IsSmallInt((PyLongObject *)self)) {
  ------------------
  |  Branch (3653:9): [True: 0, False: 237]
  ------------------
 3654|       |        /* This should never get called, but we also don't want to SEGV if
 3655|       |         * we accidentally decref small Ints out of existence. Instead,
 3656|       |         * since small Ints are immortal, re-set the reference count.
 3657|       |         *
 3658|       |         * See PEP 683, section Accidental De-Immortalizing for details
 3659|       |         */
 3660|      0|        _Py_SetImmortal(self);
 3661|      0|        return;
 3662|      0|    }
 3663|    237|    if (PyLong_CheckExact(self) && _PyLong_IsCompact((PyLongObject *)self)) {
  ------------------
  |  |   14|    237|#define PyLong_CheckExact(op) Py_IS_TYPE((op), &PyLong_Type)
  |  |  ------------------
  |  |  |  |  215|    474|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    237|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    237|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 237, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3663:36): [True: 86, False: 151]
  ------------------
 3664|     86|        _Py_FREELIST_FREE(ints, self, PyObject_Free);
  ------------------
  |  |   35|     86|    _PyFreeList_Free(&_Py_freelists_GET()->NAME, _PyObject_CAST(op), \
  |  |  ------------------
  |  |  |  |  171|     86|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     86|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   36|     86|                     Py_ ## NAME ## _MAXFREELIST, freefunc)
  |  |  ------------------
  |  |  |  |   20|     86|#  define Py_ints_MAXFREELIST 100
  |  |  ------------------
  ------------------
 3665|     86|        return;
 3666|     86|    }
 3667|    151|    Py_TYPE(self)->tp_free(self);
  ------------------
  |  |  213|    151|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    151|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    151|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3668|    151|}
longobject.c:long_to_decimal_string:
 2321|     11|{
 2322|     11|    PyObject *v;
 2323|     11|    if (long_to_decimal_string_internal(aa, &v, NULL, NULL, NULL) == -1)
  ------------------
  |  Branch (2323:9): [True: 0, False: 11]
  ------------------
 2324|      0|        return NULL;
 2325|     11|    return v;
 2326|     11|}
longobject.c:long_add_method:
 3876|      4|{
 3877|      4|    CHECK_BINOP(a, b);
  ------------------
  |  | 1844|      4|    do {                                                \
  |  | 1845|      4|        if (!PyLong_Check(v) || !PyLong_Check(w))       \
  |  |  ------------------
  |  |  |  |   13|      4|        PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      8|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       if (!PyLong_Check(v) || !PyLong_Check(w))       \
  |  |  ------------------
  |  |  |  |   13|      4|        PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      4|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1845:13): [True: 0, False: 4]
  |  |  |  Branch (1845:33): [True: 0, False: 4]
  |  |  ------------------
  |  | 1846|      4|            Py_RETURN_NOTIMPLEMENTED;                   \
  |  |  ------------------
  |  |  |  |  648|      0|#  define Py_RETURN_NOTIMPLEMENTED return Py_NotImplemented
  |  |  |  |  ------------------
  |  |  |  |  |  |  640|      0|#  define Py_NotImplemented (&_Py_NotImplementedStruct)
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1847|      4|    } while(0)
  |  |  ------------------
  |  |  |  Branch (1847:13): [Folded, False: 4]
  |  |  ------------------
  ------------------
 3878|      4|    return (PyObject*)long_add((PyLongObject*)a, (PyLongObject*)b);
 3879|      4|}
longobject.c:long_sub_method:
 3921|      2|{
 3922|      2|    CHECK_BINOP(a, b);
  ------------------
  |  | 1844|      2|    do {                                                \
  |  | 1845|      2|        if (!PyLong_Check(v) || !PyLong_Check(w))       \
  |  |  ------------------
  |  |  |  |   13|      2|        PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      4|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       if (!PyLong_Check(v) || !PyLong_Check(w))       \
  |  |  ------------------
  |  |  |  |   13|      2|        PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      2|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1845:13): [True: 0, False: 2]
  |  |  |  Branch (1845:33): [True: 0, False: 2]
  |  |  ------------------
  |  | 1846|      2|            Py_RETURN_NOTIMPLEMENTED;                   \
  |  |  ------------------
  |  |  |  |  648|      0|#  define Py_RETURN_NOTIMPLEMENTED return Py_NotImplemented
  |  |  |  |  ------------------
  |  |  |  |  |  |  640|      0|#  define Py_NotImplemented (&_Py_NotImplementedStruct)
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1847|      2|    } while(0)
  |  |  ------------------
  |  |  |  Branch (1847:13): [Folded, False: 2]
  |  |  ------------------
  ------------------
 3923|      2|    return (PyObject*)long_sub((PyLongObject*)a, (PyLongObject*)b);
 3924|      2|}
longobject.c:long_mul_method:
 4368|      1|{
 4369|      1|    CHECK_BINOP(a, b);
  ------------------
  |  | 1844|      1|    do {                                                \
  |  | 1845|      1|        if (!PyLong_Check(v) || !PyLong_Check(w))       \
  |  |  ------------------
  |  |  |  |   13|      1|        PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      2|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       if (!PyLong_Check(v) || !PyLong_Check(w))       \
  |  |  ------------------
  |  |  |  |   13|      0|        PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1845:13): [True: 1, False: 0]
  |  |  |  Branch (1845:33): [True: 0, False: 0]
  |  |  ------------------
  |  | 1846|      1|            Py_RETURN_NOTIMPLEMENTED;                   \
  |  |  ------------------
  |  |  |  |  648|      1|#  define Py_RETURN_NOTIMPLEMENTED return Py_NotImplemented
  |  |  |  |  ------------------
  |  |  |  |  |  |  640|      1|#  define Py_NotImplemented (&_Py_NotImplementedStruct)
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1847|      1|    } while(0)
  |  |  ------------------
  |  |  |  Branch (1847:13): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4370|      0|    return (PyObject*)long_mul((PyLongObject*)a, (PyLongObject*)b);
 4371|      1|}
longobject.c:l_divmod:
 4481|      1|{
 4482|      1|    PyLongObject *div, *mod;
 4483|       |
 4484|      1|    if (_PyLong_DigitCount(v) == 1 && _PyLong_DigitCount(w) == 1) {
  ------------------
  |  Branch (4484:9): [True: 0, False: 1]
  |  Branch (4484:39): [True: 0, False: 0]
  ------------------
 4485|       |        /* Fast path for single-digit longs */
 4486|      0|        div = NULL;
 4487|      0|        if (pdiv != NULL) {
  ------------------
  |  Branch (4487:13): [True: 0, False: 0]
  ------------------
 4488|      0|            div = (PyLongObject *)fast_floor_div(v, w);
 4489|      0|            if (div == NULL) {
  ------------------
  |  Branch (4489:17): [True: 0, False: 0]
  ------------------
 4490|      0|                return -1;
 4491|      0|            }
 4492|      0|        }
 4493|      0|        if (pmod != NULL) {
  ------------------
  |  Branch (4493:13): [True: 0, False: 0]
  ------------------
 4494|      0|            mod = (PyLongObject *)fast_mod(v, w);
 4495|      0|            if (mod == NULL) {
  ------------------
  |  Branch (4495:17): [True: 0, False: 0]
  ------------------
 4496|      0|                Py_XDECREF(div);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4497|      0|                return -1;
 4498|      0|            }
 4499|      0|            *pmod = mod;
 4500|      0|        }
 4501|      0|        if (pdiv != NULL) {
  ------------------
  |  Branch (4501:13): [True: 0, False: 0]
  ------------------
 4502|       |            /* We only want to set `*pdiv` when `*pmod` is
 4503|       |               set successfully. */
 4504|      0|            *pdiv = div;
 4505|      0|        }
 4506|      0|        return 0;
 4507|      0|    }
 4508|      1|#if WITH_PYLONG_MODULE
 4509|      1|    Py_ssize_t size_v = _PyLong_DigitCount(v); /* digits in numerator */
 4510|      1|    Py_ssize_t size_w = _PyLong_DigitCount(w); /* digits in denominator */
 4511|      1|    if (size_w > 300 && (size_v - size_w) > 150) {
  ------------------
  |  Branch (4511:9): [True: 0, False: 1]
  |  Branch (4511:25): [True: 0, False: 0]
  ------------------
 4512|       |        /* Switch to _pylong.int_divmod().  If the quotient is small then
 4513|       |          "schoolbook" division is linear-time so don't use in that case.
 4514|       |          These limits are empirically determined and should be slightly
 4515|       |          conservative so that _pylong is used in cases it is likely
 4516|       |          to be faster. See Tools/scripts/divmod_threshold.py. */
 4517|      0|        return pylong_int_divmod(v, w, pdiv, pmod);
 4518|      0|    }
 4519|      1|#endif
 4520|      1|    if (long_divrem(v, w, &div, &mod) < 0)
  ------------------
  |  Branch (4520:9): [True: 0, False: 1]
  ------------------
 4521|      0|        return -1;
 4522|      1|    if ((_PyLong_IsNegative(mod) && _PyLong_IsPositive(w)) ||
  ------------------
  |  Branch (4522:10): [True: 0, False: 1]
  |  Branch (4522:37): [True: 0, False: 0]
  ------------------
 4523|      1|        (_PyLong_IsPositive(mod) && _PyLong_IsNegative(w))) {
  ------------------
  |  Branch (4523:10): [True: 0, False: 1]
  |  Branch (4523:37): [True: 0, False: 0]
  ------------------
 4524|      0|        PyLongObject *temp;
 4525|      0|        temp = long_add(mod, w);
 4526|      0|        Py_SETREF(mod, temp);
  ------------------
  |  |  352|      0|    do { \
  |  |  353|      0|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  354|      0|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  355|      0|        *_tmp_dst_ptr = (src); \
  |  |  356|      0|        Py_DECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  357|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (357:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4527|      0|        if (mod == NULL) {
  ------------------
  |  Branch (4527:13): [True: 0, False: 0]
  ------------------
 4528|      0|            Py_DECREF(div);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4529|      0|            return -1;
 4530|      0|        }
 4531|      0|        temp = long_sub(div, (PyLongObject *)_PyLong_GetOne());
 4532|      0|        if (temp == NULL) {
  ------------------
  |  Branch (4532:13): [True: 0, False: 0]
  ------------------
 4533|      0|            Py_DECREF(mod);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4534|      0|            Py_DECREF(div);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4535|      0|            return -1;
 4536|      0|        }
 4537|      0|        Py_SETREF(div, temp);
  ------------------
  |  |  352|      0|    do { \
  |  |  353|      0|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  354|      0|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  355|      0|        *_tmp_dst_ptr = (src); \
  |  |  356|      0|        Py_DECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  357|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (357:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4538|      0|    }
 4539|      1|    if (pdiv != NULL)
  ------------------
  |  Branch (4539:9): [True: 1, False: 0]
  ------------------
 4540|      1|        *pdiv = div;
 4541|      0|    else
 4542|      0|        Py_DECREF(div);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4543|       |
 4544|      1|    if (pmod != NULL)
  ------------------
  |  Branch (4544:9): [True: 0, False: 1]
  ------------------
 4545|      0|        *pmod = mod;
 4546|      1|    else
 4547|      1|        Py_DECREF(mod);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4548|       |
 4549|      1|    return 0;
 4550|      1|}
longobject.c:long_bool:
 5302|      7|{
 5303|      7|    return !_PyLong_IsZero(_PyLong_CAST(v));
  ------------------
  |  |    6|      7|    (assert(PyLong_Check(op)), _Py_CAST(PyLongObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (5303:28): [True: 7, False: 0]
  ------------------
 5304|      7|}
longobject.c:long_lshift_method:
 5496|      1|{
 5497|      1|    CHECK_BINOP(aa, bb);
  ------------------
  |  | 1844|      1|    do {                                                \
  |  | 1845|      1|        if (!PyLong_Check(v) || !PyLong_Check(w))       \
  |  |  ------------------
  |  |  |  |   13|      1|        PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      2|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       if (!PyLong_Check(v) || !PyLong_Check(w))       \
  |  |  ------------------
  |  |  |  |   13|      1|        PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      1|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1845:13): [True: 0, False: 1]
  |  |  |  Branch (1845:33): [True: 0, False: 1]
  |  |  ------------------
  |  | 1846|      1|            Py_RETURN_NOTIMPLEMENTED;                   \
  |  |  ------------------
  |  |  |  |  648|      0|#  define Py_RETURN_NOTIMPLEMENTED return Py_NotImplemented
  |  |  |  |  ------------------
  |  |  |  |  |  |  640|      0|#  define Py_NotImplemented (&_Py_NotImplementedStruct)
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1847|      1|    } while(0)
  |  |  ------------------
  |  |  |  Branch (1847:13): [Folded, False: 1]
  |  |  ------------------
  ------------------
 5498|      1|    PyLongObject *a = (PyLongObject*)aa;
 5499|      1|    PyLongObject *b = (PyLongObject*)bb;
 5500|       |
 5501|      1|    if (_PyLong_IsNegative(b)) {
  ------------------
  |  Branch (5501:9): [True: 0, False: 1]
  ------------------
 5502|      0|        PyErr_SetString(PyExc_ValueError, "negative shift count");
 5503|      0|        return NULL;
 5504|      0|    }
 5505|      1|    if (_PyLong_IsZero(a)) {
  ------------------
  |  Branch (5505:9): [True: 0, False: 1]
  ------------------
 5506|      0|        return PyLong_FromLong(0);
 5507|      0|    }
 5508|       |
 5509|      1|    int64_t shiftby;
 5510|      1|    if (PyLong_AsInt64(bb, &shiftby) < 0) {
  ------------------
  |  Branch (5510:9): [True: 0, False: 1]
  ------------------
 5511|      0|        if (PyErr_ExceptionMatches(PyExc_OverflowError)) {
  ------------------
  |  Branch (5511:13): [True: 0, False: 0]
  ------------------
 5512|      0|            PyErr_SetString(PyExc_OverflowError,
 5513|      0|                            "too many digits in integer");
 5514|      0|        }
 5515|      0|        return NULL;
 5516|      0|    }
 5517|      1|    return long_lshift_int64(a, shiftby);
 5518|      1|}
longobject.c:long_and:
 5695|      2|{
 5696|      2|    CHECK_BINOP(a, b);
  ------------------
  |  | 1844|      2|    do {                                                \
  |  | 1845|      2|        if (!PyLong_Check(v) || !PyLong_Check(w))       \
  |  |  ------------------
  |  |  |  |   13|      2|        PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      4|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       if (!PyLong_Check(v) || !PyLong_Check(w))       \
  |  |  ------------------
  |  |  |  |   13|      2|        PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      2|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1845:13): [True: 0, False: 2]
  |  |  |  Branch (1845:33): [True: 0, False: 2]
  |  |  ------------------
  |  | 1846|      2|            Py_RETURN_NOTIMPLEMENTED;                   \
  |  |  ------------------
  |  |  |  |  648|      0|#  define Py_RETURN_NOTIMPLEMENTED return Py_NotImplemented
  |  |  |  |  ------------------
  |  |  |  |  |  |  640|      0|#  define Py_NotImplemented (&_Py_NotImplementedStruct)
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1847|      2|    } while(0)
  |  |  ------------------
  |  |  |  Branch (1847:13): [Folded, False: 2]
  |  |  ------------------
  ------------------
 5697|      2|    PyLongObject *x = (PyLongObject*)a;
 5698|      2|    PyLongObject *y = (PyLongObject*)b;
 5699|      2|    if (_PyLong_IsCompact(x) && _PyLong_IsCompact(y)) {
  ------------------
  |  Branch (5699:9): [True: 2, False: 0]
  |  Branch (5699:33): [True: 2, False: 0]
  ------------------
 5700|      2|        return (PyObject*)_PyLong_FromSTwoDigits(medium_value(x) & medium_value(y));
  ------------------
  |  |   27|      2|#define medium_value(x) ((stwodigits)_PyLong_CompactValue(x))
  ------------------
                      return (PyObject*)_PyLong_FromSTwoDigits(medium_value(x) & medium_value(y));
  ------------------
  |  |   27|      2|#define medium_value(x) ((stwodigits)_PyLong_CompactValue(x))
  ------------------
 5701|      2|    }
 5702|      0|    return long_bitwise(x, '&', y);
 5703|      2|}
longobject.c:long_or:
 5719|      3|{
 5720|      3|    CHECK_BINOP(a, b);
  ------------------
  |  | 1844|      3|    do {                                                \
  |  | 1845|      3|        if (!PyLong_Check(v) || !PyLong_Check(w))       \
  |  |  ------------------
  |  |  |  |   13|      3|        PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      6|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       if (!PyLong_Check(v) || !PyLong_Check(w))       \
  |  |  ------------------
  |  |  |  |   13|      3|        PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      3|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1845:13): [True: 0, False: 3]
  |  |  |  Branch (1845:33): [True: 0, False: 3]
  |  |  ------------------
  |  | 1846|      3|            Py_RETURN_NOTIMPLEMENTED;                   \
  |  |  ------------------
  |  |  |  |  648|      0|#  define Py_RETURN_NOTIMPLEMENTED return Py_NotImplemented
  |  |  |  |  ------------------
  |  |  |  |  |  |  640|      0|#  define Py_NotImplemented (&_Py_NotImplementedStruct)
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1847|      3|    } while(0)
  |  |  ------------------
  |  |  |  Branch (1847:13): [Folded, False: 3]
  |  |  ------------------
  ------------------
 5721|      3|    PyLongObject *x = (PyLongObject*)a;
 5722|      3|    PyLongObject *y = (PyLongObject*)b;
 5723|      3|    if (_PyLong_IsCompact(x) && _PyLong_IsCompact(y)) {
  ------------------
  |  Branch (5723:9): [True: 3, False: 0]
  |  Branch (5723:33): [True: 3, False: 0]
  ------------------
 5724|      3|        return (PyObject*)_PyLong_FromSTwoDigits(medium_value(x) | medium_value(y));
  ------------------
  |  |   27|      3|#define medium_value(x) ((stwodigits)_PyLong_CompactValue(x))
  ------------------
                      return (PyObject*)_PyLong_FromSTwoDigits(medium_value(x) | medium_value(y));
  ------------------
  |  |   27|      3|#define medium_value(x) ((stwodigits)_PyLong_CompactValue(x))
  ------------------
 5725|      3|    }
 5726|      0|    return long_bitwise(x, '|', y);
 5727|      3|}
longobject.c:long_div:
 4584|      1|{
 4585|      1|    PyLongObject *div;
 4586|       |
 4587|      1|    CHECK_BINOP(a, b);
  ------------------
  |  | 1844|      1|    do {                                                \
  |  | 1845|      1|        if (!PyLong_Check(v) || !PyLong_Check(w))       \
  |  |  ------------------
  |  |  |  |   13|      1|        PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      2|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       if (!PyLong_Check(v) || !PyLong_Check(w))       \
  |  |  ------------------
  |  |  |  |   13|      1|        PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      1|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1845:13): [True: 0, False: 1]
  |  |  |  Branch (1845:33): [True: 0, False: 1]
  |  |  ------------------
  |  | 1846|      1|            Py_RETURN_NOTIMPLEMENTED;                   \
  |  |  ------------------
  |  |  |  |  648|      0|#  define Py_RETURN_NOTIMPLEMENTED return Py_NotImplemented
  |  |  |  |  ------------------
  |  |  |  |  |  |  640|      0|#  define Py_NotImplemented (&_Py_NotImplementedStruct)
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1847|      1|    } while(0)
  |  |  ------------------
  |  |  |  Branch (1847:13): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4588|       |
 4589|      1|    if (_PyLong_DigitCount((PyLongObject*)a) == 1 && _PyLong_DigitCount((PyLongObject*)b) == 1) {
  ------------------
  |  Branch (4589:9): [True: 0, False: 1]
  |  Branch (4589:54): [True: 0, False: 0]
  ------------------
 4590|      0|        return fast_floor_div((PyLongObject*)a, (PyLongObject*)b);
 4591|      0|    }
 4592|       |
 4593|      1|    if (l_divmod((PyLongObject*)a, (PyLongObject*)b, &div, NULL) < 0)
  ------------------
  |  Branch (4593:9): [True: 0, False: 1]
  ------------------
 4594|      0|        div = NULL;
 4595|      1|    return (PyObject *)div;
 4596|      1|}
longobject.c:long_hash:
 3672|    602|{
 3673|    602|    PyLongObject *v = (PyLongObject *)obj;
 3674|    602|    Py_uhash_t x;
 3675|    602|    Py_ssize_t i;
 3676|    602|    int sign;
 3677|       |
 3678|    602|    if (_PyLong_IsCompact(v)) {
  ------------------
  |  Branch (3678:9): [True: 168, False: 434]
  ------------------
 3679|    168|        x = (Py_uhash_t)_PyLong_CompactValue(v);
 3680|    168|        if (x == (Py_uhash_t)-1) {
  ------------------
  |  Branch (3680:13): [True: 0, False: 168]
  ------------------
 3681|      0|            x = (Py_uhash_t)-2;
 3682|      0|        }
 3683|    168|        return x;
 3684|    168|    }
 3685|    434|    i = _PyLong_DigitCount(v);
 3686|    434|    sign = _PyLong_NonCompactSign(v);
 3687|       |
 3688|       |    // unroll first digit
 3689|    434|    Py_BUILD_ASSERT(PyHASH_BITS > PyLong_SHIFT);
  ------------------
  |  |  167|    434|        do { \
  |  |  168|    434|            static_assert((cond), #cond); \
  |  |  169|    434|        } while (0)
  |  |  ------------------
  |  |  |  Branch (169:18): [Folded, False: 434]
  |  |  ------------------
  ------------------
 3690|    434|    assert(i >= 1);
  ------------------
  |  Branch (3690:5): [True: 434, False: 0]
  ------------------
 3691|    434|    --i;
 3692|    434|    x = v->long_value.ob_digit[i];
 3693|    434|    assert(x < PyHASH_MODULUS);
  ------------------
  |  Branch (3693:5): [True: 434, False: 0]
  ------------------
 3694|       |
 3695|    434|#if PyHASH_BITS >= 2 * PyLong_SHIFT
 3696|       |    // unroll second digit
 3697|    434|    assert(i >= 1);
  ------------------
  |  Branch (3697:5): [True: 434, False: 0]
  ------------------
 3698|    434|    --i;
 3699|    434|    x <<= PyLong_SHIFT;
  ------------------
  |  |   47|    434|#define PyLong_SHIFT    30
  ------------------
 3700|    434|    x += v->long_value.ob_digit[i];
 3701|    434|    assert(x < PyHASH_MODULUS);
  ------------------
  |  Branch (3701:5): [True: 434, False: 0]
  ------------------
 3702|    434|#endif
 3703|       |
 3704|    434|    while (--i >= 0) {
  ------------------
  |  Branch (3704:12): [True: 0, False: 434]
  ------------------
 3705|       |        /* Here x is a quantity in the range [0, PyHASH_MODULUS); we
 3706|       |           want to compute x * 2**PyLong_SHIFT + v->long_value.ob_digit[i] modulo
 3707|       |           PyHASH_MODULUS.
 3708|       |
 3709|       |           The computation of x * 2**PyLong_SHIFT % PyHASH_MODULUS
 3710|       |           amounts to a rotation of the bits of x.  To see this, write
 3711|       |
 3712|       |             x * 2**PyLong_SHIFT = y * 2**PyHASH_BITS + z
 3713|       |
 3714|       |           where y = x >> (PyHASH_BITS - PyLong_SHIFT) gives the top
 3715|       |           PyLong_SHIFT bits of x (those that are shifted out of the
 3716|       |           original PyHASH_BITS bits, and z = (x << PyLong_SHIFT) &
 3717|       |           PyHASH_MODULUS gives the bottom PyHASH_BITS - PyLong_SHIFT
 3718|       |           bits of x, shifted up.  Then since 2**PyHASH_BITS is
 3719|       |           congruent to 1 modulo PyHASH_MODULUS, y*2**PyHASH_BITS is
 3720|       |           congruent to y modulo PyHASH_MODULUS.  So
 3721|       |
 3722|       |             x * 2**PyLong_SHIFT = y + z (mod PyHASH_MODULUS).
 3723|       |
 3724|       |           The right-hand side is just the result of rotating the
 3725|       |           PyHASH_BITS bits of x left by PyLong_SHIFT places; since
 3726|       |           not all PyHASH_BITS bits of x are 1s, the same is true
 3727|       |           after rotation, so 0 <= y+z < PyHASH_MODULUS and y + z is
 3728|       |           the reduction of x*2**PyLong_SHIFT modulo
 3729|       |           PyHASH_MODULUS. */
 3730|      0|        x = ((x << PyLong_SHIFT) & PyHASH_MODULUS) |
  ------------------
  |  |   47|      0|#define PyLong_SHIFT    30
  ------------------
                      x = ((x << PyLong_SHIFT) & PyHASH_MODULUS) |
  ------------------
  |  |   18|      0|#define PyHASH_MODULUS (((size_t)1 << PyHASH_BITS) - 1)
  |  |  ------------------
  |  |  |  |   13|      0|#  define PyHASH_BITS 61
  |  |  ------------------
  ------------------
 3731|      0|            (x >> (PyHASH_BITS - PyLong_SHIFT));
  ------------------
  |  |   13|      0|#  define PyHASH_BITS 61
  ------------------
                          (x >> (PyHASH_BITS - PyLong_SHIFT));
  ------------------
  |  |   47|      0|#define PyLong_SHIFT    30
  ------------------
 3732|      0|        x += v->long_value.ob_digit[i];
 3733|      0|        if (x >= PyHASH_MODULUS)
  ------------------
  |  |   18|      0|#define PyHASH_MODULUS (((size_t)1 << PyHASH_BITS) - 1)
  |  |  ------------------
  |  |  |  |   13|      0|#  define PyHASH_BITS 61
  |  |  ------------------
  ------------------
  |  Branch (3733:13): [True: 0, False: 0]
  ------------------
 3734|      0|            x -= PyHASH_MODULUS;
  ------------------
  |  |   18|      0|#define PyHASH_MODULUS (((size_t)1 << PyHASH_BITS) - 1)
  |  |  ------------------
  |  |  |  |   13|      0|#  define PyHASH_BITS 61
  |  |  ------------------
  ------------------
 3735|      0|    }
 3736|    434|    x = x * sign;
 3737|    434|    if (x == (Py_uhash_t)-1)
  ------------------
  |  Branch (3737:9): [True: 0, False: 434]
  ------------------
 3738|      0|        x = (Py_uhash_t)-2;
 3739|    434|    return (Py_hash_t)x;
 3740|    434|}
longobject.c:long_richcompare:
 3624|     52|{
 3625|     52|    Py_ssize_t result;
 3626|     52|    CHECK_BINOP(self, other);
  ------------------
  |  | 1844|     52|    do {                                                \
  |  | 1845|     52|        if (!PyLong_Check(v) || !PyLong_Check(w))       \
  |  |  ------------------
  |  |  |  |   13|     52|        PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|    104|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       if (!PyLong_Check(v) || !PyLong_Check(w))       \
  |  |  ------------------
  |  |  |  |   13|     52|        PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|     52|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1845:13): [True: 0, False: 52]
  |  |  |  Branch (1845:33): [True: 0, False: 52]
  |  |  ------------------
  |  | 1846|     52|            Py_RETURN_NOTIMPLEMENTED;                   \
  |  |  ------------------
  |  |  |  |  648|      0|#  define Py_RETURN_NOTIMPLEMENTED return Py_NotImplemented
  |  |  |  |  ------------------
  |  |  |  |  |  |  640|      0|#  define Py_NotImplemented (&_Py_NotImplementedStruct)
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1847|     52|    } while(0)
  |  |  ------------------
  |  |  |  Branch (1847:13): [Folded, False: 52]
  |  |  ------------------
  ------------------
 3627|     52|    if (self == other)
  ------------------
  |  Branch (3627:9): [True: 6, False: 46]
  ------------------
 3628|      6|        result = 0;
 3629|     46|    else
 3630|     46|        result = long_compare((PyLongObject*)self, (PyLongObject*)other);
 3631|     52|    Py_RETURN_RICHCOMPARE(result, 0, op);
  ------------------
  |  |  674|     52|    do {                                                                    \
  |  |  675|     52|        switch (op) {                                                       \
  |  |  676|     10|        case Py_EQ: if ((val1) == (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |  654|     10|#define Py_EQ 2
  |  |  ------------------
  |  |                       case Py_EQ: if ((val1) == (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |   44|     10|#  define Py_RETURN_TRUE return Py_True
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|     10|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|     10|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       case Py_EQ: if ((val1) == (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |   45|      0|#  define Py_RETURN_FALSE return Py_False
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (676:9): [True: 10, False: 42]
  |  |  |  Branch (676:25): [True: 10, False: 0]
  |  |  ------------------
  |  |  677|     33|        case Py_NE: if ((val1) != (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |  655|     33|#define Py_NE 3
  |  |  ------------------
  |  |                       case Py_NE: if ((val1) != (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |   44|      1|#  define Py_RETURN_TRUE return Py_True
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      1|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       case Py_NE: if ((val1) != (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |   45|     32|#  define Py_RETURN_FALSE return Py_False
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|     32|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|     32|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     32|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (677:9): [True: 33, False: 19]
  |  |  |  Branch (677:25): [True: 1, False: 32]
  |  |  ------------------
  |  |  678|     33|        case Py_LT: if ((val1) < (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;   \
  |  |  ------------------
  |  |  |  |  652|      3|#define Py_LT 0
  |  |  ------------------
  |  |                       case Py_LT: if ((val1) < (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;   \
  |  |  ------------------
  |  |  |  |   44|      1|#  define Py_RETURN_TRUE return Py_True
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      1|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       case Py_LT: if ((val1) < (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;   \
  |  |  ------------------
  |  |  |  |   45|      2|#  define Py_RETURN_FALSE return Py_False
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      2|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (678:9): [True: 3, False: 49]
  |  |  |  Branch (678:25): [True: 1, False: 2]
  |  |  ------------------
  |  |  679|      3|        case Py_GT: if ((val1) > (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;   \
  |  |  ------------------
  |  |  |  |  656|      3|#define Py_GT 4
  |  |  ------------------
  |  |                       case Py_GT: if ((val1) > (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;   \
  |  |  ------------------
  |  |  |  |   44|      2|#  define Py_RETURN_TRUE return Py_True
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      2|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       case Py_GT: if ((val1) > (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;   \
  |  |  ------------------
  |  |  |  |   45|      1|#  define Py_RETURN_FALSE return Py_False
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      1|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (679:9): [True: 3, False: 49]
  |  |  |  Branch (679:25): [True: 2, False: 1]
  |  |  ------------------
  |  |  680|      3|        case Py_LE: if ((val1) <= (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |  653|      0|#define Py_LE 1
  |  |  ------------------
  |  |                       case Py_LE: if ((val1) <= (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |   44|      0|#  define Py_RETURN_TRUE return Py_True
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       case Py_LE: if ((val1) <= (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |   45|      0|#  define Py_RETURN_FALSE return Py_False
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (680:9): [True: 0, False: 52]
  |  |  |  Branch (680:25): [True: 0, False: 0]
  |  |  ------------------
  |  |  681|      3|        case Py_GE: if ((val1) >= (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |  657|      3|#define Py_GE 5
  |  |  ------------------
  |  |                       case Py_GE: if ((val1) >= (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |   44|      0|#  define Py_RETURN_TRUE return Py_True
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       case Py_GE: if ((val1) >= (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |   45|      3|#  define Py_RETURN_FALSE return Py_False
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      3|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (681:9): [True: 3, False: 49]
  |  |  |  Branch (681:25): [True: 0, False: 3]
  |  |  ------------------
  |  |  682|      3|        default:                                                            \
  |  |  ------------------
  |  |  |  Branch (682:9): [True: 0, False: 52]
  |  |  ------------------
  |  |  683|      0|            Py_UNREACHABLE();                                               \
  |  |  ------------------
  |  |  |  |  264|      0|#  define Py_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  684|     52|        }                                                                   \
  |  |  685|     52|    } while (0)
  |  |  ------------------
  |  |  |  Branch (685:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3632|     52|}
longobject.c:int_to_bytes_impl:
 6392|      1|{
 6393|      1|    int little_endian;
 6394|      1|    if (byteorder == NULL)
  ------------------
  |  Branch (6394:9): [True: 0, False: 1]
  ------------------
 6395|      0|        little_endian = 0;
 6396|      1|    else if (_PyUnicode_Equal(byteorder, &_Py_ID(little)))
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6396:14): [True: 1, False: 0]
  ------------------
 6397|      1|        little_endian = 1;
 6398|      0|    else if (_PyUnicode_Equal(byteorder, &_Py_ID(big)))
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6398:14): [True: 0, False: 0]
  ------------------
 6399|      0|        little_endian = 0;
 6400|      0|    else {
 6401|      0|        PyErr_SetString(PyExc_ValueError,
 6402|      0|            "byteorder must be either 'little' or 'big'");
 6403|      0|        return NULL;
 6404|      0|    }
 6405|       |
 6406|      1|    PyBytesWriter *writer = PyBytesWriter_Create(length);
 6407|      1|    if (writer == NULL) {
  ------------------
  |  Branch (6407:9): [True: 0, False: 1]
  ------------------
 6408|      0|        return NULL;
 6409|      0|    }
 6410|       |
 6411|      1|    if (_PyLong_AsByteArray((PyLongObject *)self,
  ------------------
  |  Branch (6411:9): [True: 0, False: 1]
  ------------------
 6412|      1|                            PyBytesWriter_GetData(writer),
 6413|      1|                            length, little_endian, is_signed, 1) < 0) {
 6414|      0|        PyBytesWriter_Discard(writer);
 6415|      0|        return NULL;
 6416|      0|    }
 6417|       |
 6418|      1|    return PyBytesWriter_Finish(writer);
 6419|      1|}

PyCMethod_New:
   48|    881|{
   49|       |    /* Figure out correct vectorcall function to use */
   50|    881|    vectorcallfunc vectorcall;
   51|    881|    switch (ml->ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS |
  ------------------
  |  |   95|    881|#define METH_VARARGS  0x0001
  ------------------
                  switch (ml->ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS |
  ------------------
  |  |  115|    881|#  define METH_FASTCALL  0x0080
  ------------------
                  switch (ml->ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS |
  ------------------
  |  |   98|    881|#define METH_NOARGS   0x0004
  ------------------
   52|    881|                            METH_O | METH_KEYWORDS | METH_METHOD))
  ------------------
  |  |   99|    881|#define METH_O        0x0008
  ------------------
                                          METH_O | METH_KEYWORDS | METH_METHOD))
  ------------------
  |  |   96|    881|#define METH_KEYWORDS 0x0002
  ------------------
                                          METH_O | METH_KEYWORDS | METH_METHOD))
  ------------------
  |  |  133|    881|#define METH_METHOD 0x0200
  ------------------
   53|    881|    {
   54|     32|        case METH_VARARGS:
  ------------------
  |  |   95|     32|#define METH_VARARGS  0x0001
  ------------------
  |  Branch (54:9): [True: 32, False: 849]
  ------------------
   55|     35|        case METH_VARARGS | METH_KEYWORDS:
  ------------------
  |  |   95|     35|#define METH_VARARGS  0x0001
  ------------------
                      case METH_VARARGS | METH_KEYWORDS:
  ------------------
  |  |   96|     35|#define METH_KEYWORDS 0x0002
  ------------------
  |  Branch (55:9): [True: 3, False: 878]
  ------------------
   56|       |            /* For METH_VARARGS functions, it's more efficient to use tp_call
   57|       |             * instead of vectorcall. */
   58|     35|            vectorcall = NULL;
   59|     35|            break;
   60|    105|        case METH_FASTCALL:
  ------------------
  |  |  115|    105|#  define METH_FASTCALL  0x0080
  ------------------
  |  Branch (60:9): [True: 105, False: 776]
  ------------------
   61|    105|            vectorcall = cfunction_vectorcall_FASTCALL;
   62|    105|            break;
   63|    329|        case METH_FASTCALL | METH_KEYWORDS:
  ------------------
  |  |  115|    329|#  define METH_FASTCALL  0x0080
  ------------------
                      case METH_FASTCALL | METH_KEYWORDS:
  ------------------
  |  |   96|    329|#define METH_KEYWORDS 0x0002
  ------------------
  |  Branch (63:9): [True: 329, False: 552]
  ------------------
   64|    329|            vectorcall = cfunction_vectorcall_FASTCALL_KEYWORDS;
   65|    329|            break;
   66|    237|        case METH_NOARGS:
  ------------------
  |  |   98|    237|#define METH_NOARGS   0x0004
  ------------------
  |  Branch (66:9): [True: 237, False: 644]
  ------------------
   67|    237|            vectorcall = cfunction_vectorcall_NOARGS;
   68|    237|            break;
   69|    173|        case METH_O:
  ------------------
  |  |   99|    173|#define METH_O        0x0008
  ------------------
  |  Branch (69:9): [True: 173, False: 708]
  ------------------
   70|    173|            vectorcall = cfunction_vectorcall_O;
   71|    173|            break;
   72|      2|        case METH_METHOD | METH_FASTCALL | METH_KEYWORDS:
  ------------------
  |  |  133|      2|#define METH_METHOD 0x0200
  ------------------
                      case METH_METHOD | METH_FASTCALL | METH_KEYWORDS:
  ------------------
  |  |  115|      2|#  define METH_FASTCALL  0x0080
  ------------------
                      case METH_METHOD | METH_FASTCALL | METH_KEYWORDS:
  ------------------
  |  |   96|      2|#define METH_KEYWORDS 0x0002
  ------------------
  |  Branch (72:9): [True: 2, False: 879]
  ------------------
   73|      2|            vectorcall = cfunction_vectorcall_FASTCALL_KEYWORDS_METHOD;
   74|      2|            break;
   75|      0|        default:
  ------------------
  |  Branch (75:9): [True: 0, False: 881]
  ------------------
   76|      0|            PyErr_Format(PyExc_SystemError,
   77|      0|                         "%s() method: bad call flags", ml->ml_name);
   78|      0|            return NULL;
   79|    881|    }
   80|       |
   81|    881|    PyCFunctionObject *op = NULL;
   82|       |
   83|    881|    if (ml->ml_flags & METH_METHOD) {
  ------------------
  |  |  133|    881|#define METH_METHOD 0x0200
  ------------------
  |  Branch (83:9): [True: 2, False: 879]
  ------------------
   84|      2|        if (!cls) {
  ------------------
  |  Branch (84:13): [True: 0, False: 2]
  ------------------
   85|      0|            PyErr_SetString(PyExc_SystemError,
   86|      0|                            "attempting to create PyCMethod with a METH_METHOD "
   87|      0|                            "flag but no class");
   88|      0|            return NULL;
   89|      0|        }
   90|      2|        PyCMethodObject *om = _Py_FREELIST_POP(PyCMethodObject, pycmethodobject);
  ------------------
  |  |   43|      2|    _Py_CAST(TYPE*, _PyFreeList_Pop(&_Py_freelists_GET()->NAME))
  |  |  ------------------
  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
   91|      2|        if (om == NULL) {
  ------------------
  |  Branch (91:13): [True: 1, False: 1]
  ------------------
   92|      1|            om = PyObject_GC_New(PyCMethodObject, &PyCMethod_Type);
  ------------------
  |  |  181|      1|    _Py_CAST(type*, _PyObject_GC_New(typeobj))
  |  |  ------------------
  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
   93|      1|            if (om == NULL) {
  ------------------
  |  Branch (93:17): [True: 0, False: 1]
  ------------------
   94|      0|                return NULL;
   95|      0|            }
   96|      1|        }
   97|      2|        om->mm_class = (PyTypeObject*)Py_NewRef(cls);
  ------------------
  |  |  550|      2|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   98|      2|        op = (PyCFunctionObject *)om;
   99|    879|    } else {
  100|    879|        if (cls) {
  ------------------
  |  Branch (100:13): [True: 0, False: 879]
  ------------------
  101|      0|            PyErr_SetString(PyExc_SystemError,
  102|      0|                            "attempting to create PyCFunction with class "
  103|      0|                            "but no METH_METHOD flag");
  104|      0|            return NULL;
  105|      0|        }
  106|    879|        op = _Py_FREELIST_POP(PyCFunctionObject, pycfunctionobject);
  ------------------
  |  |   43|    879|    _Py_CAST(TYPE*, _PyFreeList_Pop(&_Py_freelists_GET()->NAME))
  |  |  ------------------
  |  |  |  |   37|    879|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  107|    879|        if (op == NULL) {
  ------------------
  |  Branch (107:13): [True: 628, False: 251]
  ------------------
  108|    628|            op = PyObject_GC_New(PyCFunctionObject, &PyCFunction_Type);
  ------------------
  |  |  181|    628|    _Py_CAST(type*, _PyObject_GC_New(typeobj))
  |  |  ------------------
  |  |  |  |   37|    628|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  109|    628|            if (op == NULL) {
  ------------------
  |  Branch (109:17): [True: 0, False: 628]
  ------------------
  110|      0|                return NULL;
  111|      0|            }
  112|    628|        }
  113|    879|    }
  114|       |
  115|    881|    op->m_weakreflist = NULL;
  116|    881|    op->m_ml = ml;
  117|    881|    op->m_self = Py_XNewRef(self);
  ------------------
  |  |  551|    881|#  define Py_XNewRef(obj) _Py_XNewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    881|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    881|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  118|    881|    op->m_module = Py_XNewRef(module);
  ------------------
  |  |  551|    881|#  define Py_XNewRef(obj) _Py_XNewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    881|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    881|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  119|    881|    op->vectorcall = vectorcall;
  120|    881|    _PyObject_GC_TRACK(op);
  ------------------
  |  |  513|    881|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    881|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    881|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  121|    881|    return (PyObject *)op;
  122|    881|}
methodobject.c:meth_dealloc:
  168|    254|{
  169|    254|    PyCFunctionObject *m = _PyCFunctionObject_CAST(self);
  ------------------
  |  |   17|    254|    (assert(PyCFunction_Check(func)), \
  |  |   18|    254|     _Py_CAST(PyCFunctionObject*, (func)))
  |  |  ------------------
  |  |  |  |   37|    254|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (169:28): [True: 254, False: 0]
  ------------------
  170|      0|    PyObject_GC_UnTrack(m);
  171|    254|    FT_CLEAR_WEAKREFS(self, m->m_weakreflist);
  ------------------
  |  |   47|    254|    do {                                            \
  |  |   48|    254|        assert(Py_REFCNT(obj) == 0);                \
  |  |   49|    254|        if (weakref_list != NULL) {                 \
  |  |  ------------------
  |  |  |  Branch (49:13): [True: 0, False: 254]
  |  |  ------------------
  |  |   50|      0|            PyObject_ClearWeakRefs(obj);            \
  |  |   51|      0|        }                                           \
  |  |   52|    254|    } while (0)
  |  |  ------------------
  |  |  |  Branch (52:14): [Folded, False: 254]
  |  |  ------------------
  ------------------
  |  Branch (171:5): [True: 254, False: 0]
  ------------------
  172|       |    // We need to access ml_flags here rather than later.
  173|       |    // `m->m_ml` might have the same lifetime
  174|       |    // as `m_self` when it's dynamically allocated.
  175|    254|    int ml_flags = m->m_ml->ml_flags;
  176|       |    // Dereference class before m_self: PyCFunction_GET_CLASS accesses
  177|       |    // PyMethodDef m_ml, which could be kept alive by m_self
  178|    254|    Py_XDECREF(PyCFunction_GET_CLASS(m));
  ------------------
  |  |  524|    254|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    254|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    254|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  179|    254|    Py_XDECREF(m->m_self);
  ------------------
  |  |  524|    254|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    254|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    254|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  180|    254|    Py_XDECREF(m->m_module);
  ------------------
  |  |  524|    254|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    254|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    254|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  181|    254|    if (ml_flags & METH_METHOD) {
  ------------------
  |  |  133|    254|#define METH_METHOD 0x0200
  ------------------
  |  Branch (181:9): [True: 2, False: 252]
  ------------------
  182|      2|        assert(Py_IS_TYPE(self, &PyCMethod_Type));
  ------------------
  |  Branch (182:9): [True: 2, False: 0]
  ------------------
  183|      2|        _Py_FREELIST_FREE(pycmethodobject, m, PyObject_GC_Del);
  ------------------
  |  |   35|      2|    _PyFreeList_Free(&_Py_freelists_GET()->NAME, _PyObject_CAST(op), \
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   36|      2|                     Py_ ## NAME ## _MAXFREELIST, freefunc)
  |  |  ------------------
  |  |  |  |   32|      2|#  define Py_pycmethodobject_MAXFREELIST 16
  |  |  ------------------
  ------------------
  184|      2|    }
  185|    252|    else {
  186|    252|        assert(Py_IS_TYPE(self, &PyCFunction_Type));
  ------------------
  |  Branch (186:9): [True: 252, False: 0]
  ------------------
  187|    252|        _Py_FREELIST_FREE(pycfunctionobject, m, PyObject_GC_Del);
  ------------------
  |  |   35|    252|    _PyFreeList_Free(&_Py_freelists_GET()->NAME, _PyObject_CAST(op), \
  |  |  ------------------
  |  |  |  |  171|    252|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    252|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   36|    252|                     Py_ ## NAME ## _MAXFREELIST, freefunc)
  |  |  ------------------
  |  |  |  |   31|    252|#  define Py_pycfunctionobject_MAXFREELIST 16
  |  |  ------------------
  ------------------
  188|    252|    }
  189|    254|}
methodobject.c:meth_hash:
  344|     46|{
  345|     46|    PyCFunctionObject *a = _PyCFunctionObject_CAST(self);
  ------------------
  |  |   17|     46|    (assert(PyCFunction_Check(func)), \
  |  |   18|     46|     _Py_CAST(PyCFunctionObject*, (func)))
  |  |  ------------------
  |  |  |  |   37|     46|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (345:28): [True: 46, False: 0]
  ------------------
  346|      0|    Py_hash_t x = PyObject_GenericHash(a->m_self);
  347|     46|    Py_hash_t y = Py_HashPointer((void*)(a->m_ml->ml_meth));
  348|     46|    x ^= y;
  349|     46|    if (x == -1) {
  ------------------
  |  Branch (349:9): [True: 0, False: 46]
  ------------------
  350|      0|        x = -2;
  351|      0|    }
  352|     46|    return x;
  353|     46|}
methodobject.c:meth_traverse:
  267|  1.06k|{
  268|  1.06k|    PyCFunctionObject *m = _PyCFunctionObject_CAST(self);
  ------------------
  |  |   17|  1.06k|    (assert(PyCFunction_Check(func)), \
  |  |   18|  1.06k|     _Py_CAST(PyCFunctionObject*, (func)))
  |  |  ------------------
  |  |  |  |   37|  1.06k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (268:28): [True: 1.06k, False: 0]
  ------------------
  269|  1.06k|    Py_VISIT(PyCFunction_GET_CLASS(m));
  ------------------
  |  |  194|  1.06k|    do {                                                                \
  |  |  195|  1.06k|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 0, False: 1.06k]
  |  |  ------------------
  |  |  196|      0|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      0|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 0]
  |  |  ------------------
  |  |  198|      0|                return vret;                                            \
  |  |  199|      0|        }                                                               \
  |  |  200|  1.06k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 1.06k]
  |  |  ------------------
  ------------------
  270|  1.06k|    Py_VISIT(m->m_self);
  ------------------
  |  |  194|  1.06k|    do {                                                                \
  |  |  195|  1.06k|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 1.02k, False: 40]
  |  |  ------------------
  |  |  196|  1.02k|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|  1.02k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.02k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|  1.02k|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 1.02k]
  |  |  ------------------
  |  |  198|  1.02k|                return vret;                                            \
  |  |  199|  1.02k|        }                                                               \
  |  |  200|  1.06k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 1.06k]
  |  |  ------------------
  ------------------
  271|  1.06k|    Py_VISIT(m->m_module);
  ------------------
  |  |  194|  1.06k|    do {                                                                \
  |  |  195|  1.06k|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 770, False: 294]
  |  |  ------------------
  |  |  196|    770|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|    770|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    770|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|    770|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 770]
  |  |  ------------------
  |  |  198|    770|                return vret;                                            \
  |  |  199|    770|        }                                                               \
  |  |  200|  1.06k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 1.06k]
  |  |  ------------------
  ------------------
  272|  1.06k|    return 0;
  273|  1.06k|}
methodobject.c:meth_get__doc__:
  218|      3|{
  219|      3|    PyCFunctionObject *m = _PyCFunctionObject_CAST(self);
  ------------------
  |  |   17|      3|    (assert(PyCFunction_Check(func)), \
  |  |   18|      3|     _Py_CAST(PyCFunctionObject*, (func)))
  |  |  ------------------
  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (219:28): [True: 3, False: 0]
  ------------------
  220|      0|    return _PyType_GetDocFromInternalDoc(m->m_ml->ml_name, m->m_ml->ml_doc);
  221|      3|}
methodobject.c:meth_get__name__:
  225|      3|{
  226|      3|    PyCFunctionObject *m = _PyCFunctionObject_CAST(self);
  ------------------
  |  |   17|      3|    (assert(PyCFunction_Check(func)), \
  |  |   18|      3|     _Py_CAST(PyCFunctionObject*, (func)))
  |  |  ------------------
  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (226:28): [True: 3, False: 0]
  ------------------
  227|      0|    return PyUnicode_FromString(m->m_ml->ml_name);
  228|      3|}
methodobject.c:meth_get__qualname__:
  232|      3|{
  233|       |    /* If __self__ is a module or NULL, return m.__name__
  234|       |       (e.g. len.__qualname__ == 'len')
  235|       |
  236|       |       If __self__ is a type, return m.__self__.__qualname__ + '.' + m.__name__
  237|       |       (e.g. dict.fromkeys.__qualname__ == 'dict.fromkeys')
  238|       |
  239|       |       Otherwise return type(m.__self__).__qualname__ + '.' + m.__name__
  240|       |       (e.g. [].append.__qualname__ == 'list.append') */
  241|       |
  242|      3|    PyCFunctionObject *m = _PyCFunctionObject_CAST(self);
  ------------------
  |  |   17|      3|    (assert(PyCFunction_Check(func)), \
  |  |   18|      3|     _Py_CAST(PyCFunctionObject*, (func)))
  |  |  ------------------
  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (242:28): [True: 3, False: 0]
  ------------------
  243|      3|    if (m->m_self == NULL || PyModule_Check(m->m_self)) {
  ------------------
  |  |   12|      3|#define PyModule_Check(op) PyObject_TypeCheck((op), &PyModule_Type)
  |  |  ------------------
  |  |  |  |  378|      3|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (378:40): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (243:9): [True: 0, False: 3]
  ------------------
  244|      0|        return PyUnicode_FromString(m->m_ml->ml_name);
  245|      0|    }
  246|       |
  247|      3|    PyObject *type = PyType_Check(m->m_self) ? m->m_self : (PyObject*)Py_TYPE(m->m_self);
  ------------------
  |  |  766|      3|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (766:28): [True: 3, False: 0]
  |  |  ------------------
  ------------------
                  PyObject *type = PyType_Check(m->m_self) ? m->m_self : (PyObject*)Py_TYPE(m->m_self);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  248|       |
  249|      3|    PyObject *type_qualname = PyObject_GetAttr(type, &_Py_ID(__qualname__));
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  250|      3|    if (type_qualname == NULL)
  ------------------
  |  Branch (250:9): [True: 0, False: 3]
  ------------------
  251|      0|        return NULL;
  252|       |
  253|      3|    if (!PyUnicode_Check(type_qualname)) {
  ------------------
  |  |  103|      3|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      3|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (253:9): [True: 0, False: 3]
  ------------------
  254|      0|        PyErr_SetString(PyExc_TypeError, "<method>.__class__."
  255|      0|                        "__qualname__ is not a unicode object");
  256|      0|        Py_XDECREF(type_qualname);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  257|      0|        return NULL;
  258|      0|    }
  259|       |
  260|      3|    PyObject *res = PyUnicode_FromFormat("%S.%s", type_qualname, m->m_ml->ml_name);
  261|      3|    Py_DECREF(type_qualname);
  ------------------
  |  |  430|      3|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  262|      3|    return res;
  263|      3|}
methodobject.c:cfunction_vectorcall_FASTCALL:
  438|     78|{
  439|     78|    PyThreadState *tstate = _PyThreadState_GET();
  440|     78|    if (cfunction_check_kwargs(tstate, func, kwnames)) {
  ------------------
  |  Branch (440:9): [True: 0, False: 78]
  ------------------
  441|      0|        return NULL;
  442|      0|    }
  443|     78|    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
  ------------------
  |  |   37|     78|#define PyVectorcall_NARGS(n) _PyVectorcall_NARGS(n)
  ------------------
  444|     78|    PyCFunctionFast meth = (PyCFunctionFast)
  445|     78|                            cfunction_enter_call(tstate, func);
  446|     78|    if (meth == NULL) {
  ------------------
  |  Branch (446:9): [True: 0, False: 78]
  ------------------
  447|      0|        return NULL;
  448|      0|    }
  449|     78|    PyObject *result = meth(PyCFunction_GET_SELF(func), args, nargs);
  ------------------
  |  |   52|     78|#define PyCFunction_GET_SELF(func) PyCFunction_GET_SELF(_PyObject_CAST(func))
  |  |  ------------------
  |  |  |  |  171|     78|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     78|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  450|     78|    _Py_LeaveRecursiveCallTstate(tstate);
  451|     78|    return result;
  452|     78|}
methodobject.c:cfunction_check_kwargs:
  408|    565|{
  409|    565|    assert(!_PyErr_Occurred(tstate));
  ------------------
  |  Branch (409:5): [True: 565, False: 0]
  ------------------
  410|    565|    assert(PyCFunction_Check(func));
  ------------------
  |  Branch (410:5): [True: 565, False: 0]
  ------------------
  411|    565|    if (kwnames && PyTuple_GET_SIZE(kwnames)) {
  ------------------
  |  |   27|      0|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (27:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (411:9): [True: 0, False: 565]
  ------------------
  412|      0|        PyObject *funcstr = _PyObject_FunctionStr(func);
  413|      0|        if (funcstr != NULL) {
  ------------------
  |  Branch (413:13): [True: 0, False: 0]
  ------------------
  414|      0|            _PyErr_Format(tstate, PyExc_TypeError,
  415|      0|                         "%U takes no keyword arguments", funcstr);
  416|      0|            Py_DECREF(funcstr);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  417|      0|        }
  418|      0|        return -1;
  419|      0|    }
  420|    565|    return 0;
  421|    565|}
methodobject.c:cfunction_enter_call:
  427|    814|{
  428|    814|    if (_Py_EnterRecursiveCallTstate(tstate, " while calling a Python object")) {
  ------------------
  |  Branch (428:9): [True: 0, False: 814]
  ------------------
  429|      0|        return NULL;
  430|      0|    }
  431|    814|    return (funcptr)PyCFunction_GET_FUNCTION(func);
  ------------------
  |  |   43|    814|#define PyCFunction_GET_FUNCTION(func) PyCFunction_GET_FUNCTION(_PyObject_CAST(func))
  |  |  ------------------
  |  |  |  |  171|    814|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    814|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  432|    814|}
methodobject.c:cfunction_vectorcall_FASTCALL_KEYWORDS:
  457|    249|{
  458|    249|    PyThreadState *tstate = _PyThreadState_GET();
  459|    249|    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
  ------------------
  |  |   37|    249|#define PyVectorcall_NARGS(n) _PyVectorcall_NARGS(n)
  ------------------
  460|    249|    PyCFunctionFastWithKeywords meth = (PyCFunctionFastWithKeywords)
  461|    249|                                        cfunction_enter_call(tstate, func);
  462|    249|    if (meth == NULL) {
  ------------------
  |  Branch (462:9): [True: 0, False: 249]
  ------------------
  463|      0|        return NULL;
  464|      0|    }
  465|    249|    PyObject *result = meth(PyCFunction_GET_SELF(func), args, nargs, kwnames);
  ------------------
  |  |   52|    249|#define PyCFunction_GET_SELF(func) PyCFunction_GET_SELF(_PyObject_CAST(func))
  |  |  ------------------
  |  |  |  |  171|    249|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    249|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  466|    249|    _Py_LeaveRecursiveCallTstate(tstate);
  467|    249|    return result;
  468|    249|}
methodobject.c:cfunction_vectorcall_NOARGS:
  489|    442|{
  490|    442|    PyThreadState *tstate = _PyThreadState_GET();
  491|    442|    if (cfunction_check_kwargs(tstate, func, kwnames)) {
  ------------------
  |  Branch (491:9): [True: 0, False: 442]
  ------------------
  492|      0|        return NULL;
  493|      0|    }
  494|    442|    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
  ------------------
  |  |   37|    442|#define PyVectorcall_NARGS(n) _PyVectorcall_NARGS(n)
  ------------------
  495|    442|    if (nargs != 0) {
  ------------------
  |  Branch (495:9): [True: 0, False: 442]
  ------------------
  496|      0|        PyObject *funcstr = _PyObject_FunctionStr(func);
  497|      0|        if (funcstr != NULL) {
  ------------------
  |  Branch (497:13): [True: 0, False: 0]
  ------------------
  498|      0|            _PyErr_Format(tstate, PyExc_TypeError,
  499|      0|                "%U takes no arguments (%zd given)", funcstr, nargs);
  500|      0|            Py_DECREF(funcstr);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  501|      0|        }
  502|      0|        return NULL;
  503|      0|    }
  504|    442|    PyCFunction meth = (PyCFunction)cfunction_enter_call(tstate, func);
  505|    442|    if (meth == NULL) {
  ------------------
  |  Branch (505:9): [True: 0, False: 442]
  ------------------
  506|      0|        return NULL;
  507|      0|    }
  508|    442|    PyObject *result = _PyCFunction_TrampolineCall(
  ------------------
  |  |  997|    442|    (meth)((self), (args))
  ------------------
  509|    442|        meth, PyCFunction_GET_SELF(func), NULL);
  510|    442|    _Py_LeaveRecursiveCallTstate(tstate);
  511|    442|    return result;
  512|    442|}
methodobject.c:cfunction_vectorcall_O:
  517|     45|{
  518|     45|    PyThreadState *tstate = _PyThreadState_GET();
  519|     45|    if (cfunction_check_kwargs(tstate, func, kwnames)) {
  ------------------
  |  Branch (519:9): [True: 0, False: 45]
  ------------------
  520|      0|        return NULL;
  521|      0|    }
  522|     45|    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
  ------------------
  |  |   37|     45|#define PyVectorcall_NARGS(n) _PyVectorcall_NARGS(n)
  ------------------
  523|     45|    if (nargs != 1) {
  ------------------
  |  Branch (523:9): [True: 0, False: 45]
  ------------------
  524|      0|        PyObject *funcstr = _PyObject_FunctionStr(func);
  525|      0|        if (funcstr != NULL) {
  ------------------
  |  Branch (525:13): [True: 0, False: 0]
  ------------------
  526|      0|            _PyErr_Format(tstate, PyExc_TypeError,
  527|      0|                "%U takes exactly one argument (%zd given)", funcstr, nargs);
  528|      0|            Py_DECREF(funcstr);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  529|      0|        }
  530|      0|        return NULL;
  531|      0|    }
  532|     45|    PyCFunction meth = (PyCFunction)cfunction_enter_call(tstate, func);
  533|     45|    if (meth == NULL) {
  ------------------
  |  Branch (533:9): [True: 0, False: 45]
  ------------------
  534|      0|        return NULL;
  535|      0|    }
  536|     45|    PyObject *result = _PyCFunction_TrampolineCall(
  ------------------
  |  |  997|     45|    (meth)((self), (args))
  ------------------
  537|     45|        meth, PyCFunction_GET_SELF(func), args[0]);
  538|     45|    _Py_LeaveRecursiveCallTstate(tstate);
  539|     45|    return result;
  540|     45|}
methodobject.c:cfunction_call:
  545|     41|{
  546|     41|    assert(kwargs == NULL || PyDict_Check(kwargs));
  ------------------
  |  Branch (546:5): [True: 41, False: 0]
  |  Branch (546:5): [True: 0, False: 0]
  ------------------
  547|       |
  548|     41|    PyThreadState *tstate = _PyThreadState_GET();
  549|     41|    assert(!_PyErr_Occurred(tstate));
  ------------------
  |  Branch (549:5): [True: 41, False: 0]
  ------------------
  550|       |
  551|     41|    int flags = PyCFunction_GET_FLAGS(func);
  ------------------
  |  |   57|     41|#define PyCFunction_GET_FLAGS(func) PyCFunction_GET_FLAGS(_PyObject_CAST(func))
  |  |  ------------------
  |  |  |  |  171|     41|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     41|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  552|     41|    if (!(flags & METH_VARARGS)) {
  ------------------
  |  |   95|     41|#define METH_VARARGS  0x0001
  ------------------
  |  Branch (552:9): [True: 0, False: 41]
  ------------------
  553|       |        /* If this is not a METH_VARARGS function, delegate to vectorcall */
  554|      0|        return PyVectorcall_Call(func, args, kwargs);
  555|      0|    }
  556|       |
  557|       |    /* For METH_VARARGS, we cannot use vectorcall as the vectorcall pointer
  558|       |     * is NULL. This is intentional, since vectorcall would be slower. */
  559|     41|    PyCFunction meth = PyCFunction_GET_FUNCTION(func);
  ------------------
  |  |   43|     41|#define PyCFunction_GET_FUNCTION(func) PyCFunction_GET_FUNCTION(_PyObject_CAST(func))
  |  |  ------------------
  |  |  |  |  171|     41|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     41|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  560|     41|    PyObject *self = PyCFunction_GET_SELF(func);
  ------------------
  |  |   52|     41|#define PyCFunction_GET_SELF(func) PyCFunction_GET_SELF(_PyObject_CAST(func))
  |  |  ------------------
  |  |  |  |  171|     41|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     41|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  561|       |
  562|     41|    PyObject *result;
  563|     41|    if (flags & METH_KEYWORDS) {
  ------------------
  |  |   96|     41|#define METH_KEYWORDS 0x0002
  ------------------
  |  Branch (563:9): [True: 0, False: 41]
  ------------------
  564|      0|        result = _PyCFunctionWithKeywords_TrampolineCall(
  ------------------
  |  |  999|      0|    (meth)((self), (args), (kw))
  ------------------
  565|      0|            *_PyCFunctionWithKeywords_CAST(meth),
  566|      0|            self, args, kwargs);
  567|      0|    }
  568|     41|    else {
  569|     41|        if (kwargs != NULL && PyDict_GET_SIZE(kwargs) != 0) {
  ------------------
  |  |   63|      0|#define PyDict_GET_SIZE(op) PyDict_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (569:13): [True: 0, False: 41]
  |  Branch (569:31): [True: 0, False: 0]
  ------------------
  570|      0|            _PyErr_Format(tstate, PyExc_TypeError,
  571|      0|                          "%.200s() takes no keyword arguments",
  572|      0|                          ((PyCFunctionObject*)func)->m_ml->ml_name);
  573|      0|            return NULL;
  574|      0|        }
  575|     41|        result = _PyCFunction_TrampolineCall(meth, self, args);
  ------------------
  |  |  997|     41|    (meth)((self), (args))
  ------------------
  576|     41|    }
  577|     41|    return _Py_CheckFunctionResult(tstate, func, result, NULL);
  578|     41|}

mi_heap_get_default:
  202|      1|mi_heap_t* mi_heap_get_default(void) {
  203|      1|  mi_thread_init();
  204|      1|  return mi_prim_get_default_heap();
  205|      1|}
_mi_heap_random_next:
  260|      3|uintptr_t _mi_heap_random_next(mi_heap_t* heap) {
  261|      3|  return _mi_random_next(&heap->random);
  262|      3|}

_mi_thread_id:
  121|      2|mi_threadid_t _mi_thread_id(void) mi_attr_noexcept {
  122|      2|  return _mi_prim_thread_id();
  123|      2|}
mi_thread_init:
  389|      2|{
  390|       |  // ensure our process has started already
  391|      2|  mi_process_init();
  392|       |
  393|       |  // initialize the thread local default heap
  394|       |  // (this will call `_mi_heap_set_default_direct` and thus set the
  395|       |  //  fiber/pthread key to a non-zero value, ensuring `_mi_thread_done` is called)
  396|      2|  if (_mi_heap_init()) return;  // returns true if already initialized
  ------------------
  |  Branch (396:7): [True: 2, False: 0]
  ------------------
  397|       |
  398|      0|  _mi_stat_increase(&_mi_stats_main.threads, 1);
  399|      0|  mi_atomic_increment_relaxed(&thread_count);
  ------------------
  |  |   78|      0|#define mi_atomic_increment_relaxed(p)           mi_atomic_add_relaxed(p,(uintptr_t)1)
  |  |  ------------------
  |  |  |  |   71|      0|#define mi_atomic_add_relaxed(p,x)               mi_atomic(fetch_add_explicit)(p,x,mi_memory_order(relaxed))
  |  |  |  |  ------------------
  |  |  |  |  |  |   42|      0|#define  mi_atomic(name)        atomic_##name
  |  |  |  |  ------------------
  |  |  |  |               #define mi_atomic_add_relaxed(p,x)               mi_atomic(fetch_add_explicit)(p,x,mi_memory_order(relaxed))
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|#define  mi_memory_order(name)  memory_order_##name
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  400|       |  //_mi_verbose_message("thread init: 0x%zx\n", _mi_thread_id());
  401|      0|}
_mi_heap_set_default_direct:
  431|      1|void _mi_heap_set_default_direct(mi_heap_t* heap)  {
  432|      1|  mi_assert_internal(heap != NULL);
  433|       |  #if defined(MI_TLS_SLOT)
  434|       |  mi_prim_tls_slot_set(MI_TLS_SLOT,heap);
  435|       |  #elif defined(MI_TLS_PTHREAD_SLOT_OFS)
  436|       |  *mi_tls_pthread_heap_slot() = heap;
  437|       |  #elif defined(MI_TLS_PTHREAD)
  438|       |  // we use _mi_heap_default_key
  439|       |  #else
  440|      1|  _mi_heap_default = heap;
  441|      1|  #endif
  442|       |
  443|       |  // ensure the default heap is passed to `_mi_thread_done`
  444|       |  // setting to a non-NULL value also ensures `mi_thread_done` is called.
  445|      1|  _mi_prim_thread_associate_default_heap(heap);
  446|      1|}
_mi_preloading:
  458|     26|bool mi_decl_noinline _mi_preloading(void) {
  459|     26|  return os_preloading;
  460|     26|}
mi_process_init:
  543|      3|void mi_process_init(void) mi_attr_noexcept {
  544|       |  // ensure we are called once
  545|      3|  static mi_atomic_once_t process_init;
  546|      3|        #if _MSC_VER < 1920
  547|      3|        mi_heap_main_init(); // vs2017 can dynamically re-initialize _mi_heap_main
  548|      3|        #endif
  549|      3|  if (!mi_atomic_once(&process_init)) return;
  ------------------
  |  Branch (549:7): [True: 2, False: 1]
  ------------------
  550|      1|  _mi_process_is_initialized = true;
  551|      1|  _mi_verbose_message("process init: 0x%zx\n", _mi_thread_id());
  552|      1|  mi_process_setup_auto_thread_done();
  553|       |
  554|      1|  mi_detect_cpu_features();
  555|      1|  _mi_os_init();
  556|      1|  mi_heap_main_init();
  557|       |  #if MI_DEBUG
  558|       |  _mi_verbose_message("debug level : %d\n", MI_DEBUG);
  559|       |  #endif
  560|      1|  _mi_verbose_message("secure level: %d\n", MI_SECURE);
  ------------------
  |  |  101|      1|#define MI_SECURE 0
  ------------------
  561|      1|  _mi_verbose_message("mem tracking: %s\n", MI_TRACK_TOOL);
  ------------------
  |  |   98|      1|#define MI_TRACK_TOOL         "none"
  ------------------
  562|       |  #if MI_TSAN
  563|       |  _mi_verbose_message("thread sanitizer enabled\n");
  564|       |  #endif
  565|      1|  mi_thread_init();
  566|       |
  567|       |  #if defined(_WIN32)
  568|       |  // On windows, when building as a static lib the FLS cleanup happens to early for the main thread.
  569|       |  // To avoid this, set the FLS value for the main thread to NULL so the fls cleanup
  570|       |  // will not call _mi_thread_done on the (still executing) main thread. See issue #508.
  571|       |  _mi_prim_thread_associate_default_heap(NULL);
  572|       |  #endif
  573|       |
  574|      1|  mi_stats_reset();  // only call stat reset *after* thread init (or the heap tld == NULL)
  575|      1|  mi_track_init();
  576|       |
  577|      1|  if (mi_option_is_enabled(mi_option_reserve_huge_os_pages)) {
  ------------------
  |  Branch (577:7): [True: 0, False: 1]
  ------------------
  578|      0|    size_t pages = mi_option_get_clamp(mi_option_reserve_huge_os_pages, 0, 128*1024);
  579|      0|    long reserve_at = mi_option_get(mi_option_reserve_huge_os_pages_at);
  580|      0|    if (reserve_at != -1) {
  ------------------
  |  Branch (580:9): [True: 0, False: 0]
  ------------------
  581|      0|      mi_reserve_huge_os_pages_at(pages, reserve_at, pages*500);
  582|      0|    } else {
  583|      0|      mi_reserve_huge_os_pages_interleave(pages, 0, pages*500);
  584|      0|    }
  585|      0|  }
  586|      1|  if (mi_option_is_enabled(mi_option_reserve_os_memory)) {
  ------------------
  |  Branch (586:7): [True: 0, False: 1]
  ------------------
  587|      0|    long ksize = mi_option_get(mi_option_reserve_os_memory);
  588|      0|    if (ksize > 0) {
  ------------------
  |  Branch (588:9): [True: 0, False: 0]
  ------------------
  589|      0|      mi_reserve_os_memory((size_t)ksize*MI_KiB, true /* commit? */, true /* allow large pages? */);
  ------------------
  |  |  192|      0|#define MI_KiB     (MI_ZU(1024))
  |  |  ------------------
  |  |  |  |  182|      0|# define MI_ZU(x)  x##UL
  |  |  ------------------
  ------------------
  590|      0|    }
  591|      0|  }
  592|      1|}
obmalloc.c:_mi_process_init:
  681|      1|  static void __attribute__((constructor)) _mi_process_init(void) {
  682|      1|    mi_process_load();
  683|      1|  }
obmalloc.c:mi_heap_main_init:
  159|      5|static void mi_heap_main_init(void) {
  160|      5|  if (_mi_heap_main.cookie == 0) {
  ------------------
  |  Branch (160:7): [True: 1, False: 4]
  ------------------
  161|      1|    _mi_heap_main.thread_id = _mi_thread_id();
  162|      1|    _mi_heap_main.cookie = 1;
  163|       |    #if defined(_WIN32) && !defined(MI_SHARED_LIB)
  164|       |      _mi_random_init_weak(&_mi_heap_main.random);    // prevent allocation failure during bcrypt dll initialization with static linking
  165|       |    #else
  166|      1|      _mi_random_init(&_mi_heap_main.random);
  167|      1|    #endif
  168|      1|    _mi_heap_main.cookie  = _mi_heap_random_next(&_mi_heap_main);
  169|      1|    _mi_heap_main.keys[0] = _mi_heap_random_next(&_mi_heap_main);
  170|      1|    _mi_heap_main.keys[1] = _mi_heap_random_next(&_mi_heap_main);
  171|      1|  }
  172|      5|}
obmalloc.c:_mi_heap_init:
  268|      2|static bool _mi_heap_init(void) {
  269|      2|  if (mi_heap_is_initialized(mi_prim_get_default_heap())) return true;
  ------------------
  |  Branch (269:7): [True: 2, False: 0]
  ------------------
  270|      0|  if (_mi_is_main_thread()) {
  ------------------
  |  Branch (270:7): [True: 0, False: 0]
  ------------------
  271|       |    // mi_assert_internal(_mi_heap_main.thread_id != 0);  // can happen on freeBSD where alloc is called before any initialization
  272|       |    // the main heap is statically allocated
  273|      0|    mi_heap_main_init();
  274|      0|    _mi_heap_set_default_direct(&_mi_heap_main);
  275|       |    //mi_assert_internal(_mi_heap_default->tld->heap_backing == mi_prim_get_default_heap());
  276|      0|  }
  277|      0|  else {
  278|       |    // use `_mi_os_alloc` to allocate directly from the OS
  279|      0|    mi_thread_data_t* td = mi_thread_data_zalloc();
  280|      0|    if (td == NULL) return false;
  ------------------
  |  Branch (280:9): [True: 0, False: 0]
  ------------------
  281|       |
  282|      0|    _mi_tld_init(&td->tld, &td->heap);
  283|      0|    _mi_heap_init_ex(&td->heap, &td->tld, _mi_arena_id_none(), false, 0);
  284|      0|    _mi_heap_set_default_direct(&td->heap);
  285|      0|  }
  286|      0|  return false;
  287|      0|}
obmalloc.c:mi_process_setup_auto_thread_done:
  368|      2|static void mi_process_setup_auto_thread_done(void) {
  369|      2|  static bool tls_initialized = false; // fine if it races
  370|      2|  if (tls_initialized) return;
  ------------------
  |  Branch (370:7): [True: 1, False: 1]
  ------------------
  371|      1|  tls_initialized = true;
  372|      1|  _mi_prim_thread_init_auto_done();
  373|      1|  _mi_heap_set_default_direct(&_mi_heap_main);
  374|      1|}
obmalloc.c:mi_detect_cpu_features:
  537|      1|static void mi_detect_cpu_features(void) {
  538|       |  // nothing
  539|      1|}
obmalloc.c:mi_process_load:
  499|      1|static void mi_process_load(void) {
  500|      1|  mi_heap_main_init();
  501|       |  #if defined(__APPLE__) || defined(MI_TLS_RECURSE_GUARD)
  502|       |  volatile mi_heap_t* dummy = _mi_heap_default; // access TLS to allocate it before setting tls_initialized to true;
  503|       |  if (dummy == NULL) return;                    // use dummy or otherwise the access may get optimized away (issue #697)
  504|       |  #endif
  505|      1|  os_preloading = false;
  506|      1|  mi_assert_internal(_mi_is_main_thread());
  507|      1|  #if !(defined(_WIN32) && defined(MI_SHARED_LIB))  // use Dll process detach (see below) instead of atexit (issue #521)
  508|      1|  atexit(&mi_process_done);
  509|      1|  #endif
  510|      1|  _mi_options_init();
  511|      1|  mi_process_setup_auto_thread_done();
  512|      1|  mi_process_init();
  513|      1|  if (mi_redirected) _mi_verbose_message("malloc is redirected.\n");
  ------------------
  |  Branch (513:7): [True: 0, False: 1]
  ------------------
  514|       |
  515|       |  // show message from the redirector (if present)
  516|      1|  const char* msg = NULL;
  517|      1|  mi_allocator_init(&msg);
  518|      1|  if (msg != NULL && (mi_option_is_enabled(mi_option_verbose) || mi_option_is_enabled(mi_option_show_errors))) {
  ------------------
  |  Branch (518:7): [True: 0, False: 1]
  |  Branch (518:23): [True: 0, False: 0]
  |  Branch (518:66): [True: 0, False: 0]
  ------------------
  519|      0|    _mi_fputs(NULL,NULL,NULL,msg);
  520|      0|  }
  521|       |
  522|       |  // reseed random
  523|      1|  _mi_random_reinit_if_weak(&_mi_heap_main.random);
  524|      1|}
obmalloc.c:mi_allocator_init:
  489|      1|static bool mi_allocator_init(const char** message) {
  490|      1|  if (message != NULL) *message = NULL;
  ------------------
  |  Branch (490:7): [True: 1, False: 0]
  ------------------
  491|       |  return true;
  492|      1|}

_mi_options_init:
   97|      1|void _mi_options_init(void) {
   98|       |  // called on process load; should not be called before the CRT is initialized!
   99|       |  // (e.g. do not call this from process_init as that may run before CRT initialization)
  100|      1|  mi_add_stderr_output(); // now it safe to use stderr for output
  101|     27|  for(int i = 0; i < _mi_option_last; i++ ) {
  ------------------
  |  Branch (101:18): [True: 26, False: 1]
  ------------------
  102|     26|    mi_option_t option = (mi_option_t)i;
  103|     26|    long l = mi_option_get(option); MI_UNUSED(l); // initialize
  ------------------
  |  |  246|     26|#define MI_UNUSED(x)     (void)(x)
  ------------------
  104|       |    // if (option != mi_option_verbose)
  105|     26|    {
  106|     26|      mi_option_desc_t* desc = &options[option];
  107|     26|      _mi_verbose_message("option '%s': %ld\n", desc->name, desc->value);
  108|     26|    }
  109|     26|  }
  110|      1|  mi_max_error_count = mi_option_get(mi_option_max_errors);
  111|      1|  mi_max_warning_count = mi_option_get(mi_option_max_warnings);
  112|      1|}
mi_option_get:
  114|     59|mi_decl_nodiscard long mi_option_get(mi_option_t option) {
  115|     59|  mi_assert(option >= 0 && option < _mi_option_last);
  116|     59|  if (option < 0 || option >= _mi_option_last) return 0;
  ------------------
  |  Branch (116:7): [True: 0, False: 59]
  |  Branch (116:21): [True: 0, False: 59]
  ------------------
  117|     59|  mi_option_desc_t* desc = &options[option];
  118|     59|  mi_assert(desc->option == option);  // index should match the option
  119|     59|  if mi_unlikely(desc->init == UNINIT) {
  ------------------
  |  |  204|     59|#define mi_unlikely(x)     (__builtin_expect(!!(x),false))
  |  |  ------------------
  |  |  |  Branch (204:29): [True: 26, False: 33]
  |  |  ------------------
  ------------------
  120|     26|    mi_option_init(desc);
  121|     26|  }
  122|     59|  return desc->value;
  123|     59|}
mi_option_is_enabled:
  154|     31|mi_decl_nodiscard bool mi_option_is_enabled(mi_option_t option) {
  155|     31|  return (mi_option_get(option) != 0);
  156|     31|}
_mi_verbose_message:
  350|     29|void _mi_verbose_message(const char* fmt, ...) {
  351|     29|  if (!mi_option_is_enabled(mi_option_verbose)) return;
  ------------------
  |  Branch (351:7): [True: 29, False: 0]
  ------------------
  352|      0|  va_list args;
  353|      0|  va_start(args,fmt);
  354|      0|  mi_vfprintf(NULL, NULL, "mimalloc: ", fmt, args);
  355|       |  va_end(args);
  356|      0|}
_mi_toupper:
  437|  2.11k|char _mi_toupper(char c) {
  438|  2.11k|  if (c >= 'a' && c <= 'z') return (c - 'a' + 'A');
  ------------------
  |  Branch (438:7): [True: 1.05k, False: 1.05k]
  |  Branch (438:19): [True: 1.05k, False: 0]
  ------------------
  439|  1.05k|                       else return c;
  440|  2.11k|}
_mi_strnicmp:
  442|  1.02k|int _mi_strnicmp(const char* s, const char* t, size_t n) {
  443|  1.02k|  if (n == 0) return 0;
  ------------------
  |  Branch (443:7): [True: 0, False: 1.02k]
  ------------------
  444|  1.05k|  for (; *s != 0 && *t != 0 && n > 0; s++, t++, n--) {
  ------------------
  |  Branch (444:10): [True: 1.05k, False: 0]
  |  Branch (444:21): [True: 1.05k, False: 0]
  |  Branch (444:32): [True: 1.05k, False: 0]
  ------------------
  445|  1.05k|    if (_mi_toupper(*s) != _mi_toupper(*t)) break;
  ------------------
  |  Branch (445:9): [True: 1.02k, False: 32]
  ------------------
  446|  1.05k|  }
  447|  1.02k|  return (n == 0 ? 0 : *s - *t);
  ------------------
  |  Branch (447:11): [True: 0, False: 1.02k]
  ------------------
  448|  1.02k|}
_mi_strlcpy:
  450|     64|void _mi_strlcpy(char* dest, const char* src, size_t dest_size) {
  451|     64|  if (dest==NULL || src==NULL || dest_size == 0) return;
  ------------------
  |  Branch (451:7): [True: 0, False: 64]
  |  Branch (451:21): [True: 0, False: 64]
  |  Branch (451:34): [True: 0, False: 64]
  ------------------
  452|       |  // copy until end of src, or when dest is (almost) full
  453|    862|  while (*src != 0 && dest_size > 1) {
  ------------------
  |  Branch (453:10): [True: 798, False: 64]
  |  Branch (453:23): [True: 798, False: 0]
  ------------------
  454|    798|    *dest++ = *src++;
  455|    798|    dest_size--;
  456|    798|  }
  457|       |  // always zero terminate
  458|     64|  *dest = 0;
  459|     64|}
_mi_strlcat:
  461|     32|void _mi_strlcat(char* dest, const char* src, size_t dest_size) {
  462|     32|  if (dest==NULL || src==NULL || dest_size == 0) return;
  ------------------
  |  Branch (462:7): [True: 0, False: 32]
  |  Branch (462:21): [True: 0, False: 32]
  |  Branch (462:34): [True: 0, False: 32]
  ------------------
  463|       |  // find end of string in the dest buffer
  464|    320|  while (*dest != 0 && dest_size > 1) {
  ------------------
  |  Branch (464:10): [True: 288, False: 32]
  |  Branch (464:24): [True: 288, False: 0]
  ------------------
  465|    288|    dest++;
  466|    288|    dest_size--;
  467|    288|  }
  468|       |  // and catenate
  469|     32|  _mi_strlcpy(dest, src, dest_size);
  470|     32|}
_mi_strlen:
  472|     32|size_t _mi_strlen(const char* s) {
  473|     32|  if (s==NULL) return 0;
  ------------------
  |  Branch (473:7): [True: 0, False: 32]
  ------------------
  474|     32|  size_t len = 0;
  475|    830|  while(s[len] != 0) { len++; }
  ------------------
  |  Branch (475:9): [True: 798, False: 32]
  ------------------
  476|     32|  return len;
  477|     32|}
obmalloc.c:mi_out_stderr:
  174|      1|static void mi_cdecl mi_out_stderr(const char* msg, void* arg) {
  175|      1|  MI_UNUSED(arg);
  ------------------
  |  |  246|      1|#define MI_UNUSED(x)     (void)(x)
  ------------------
  176|      1|  if (msg != NULL && msg[0] != 0) {
  ------------------
  |  Branch (176:7): [True: 1, False: 0]
  |  Branch (176:22): [True: 0, False: 1]
  ------------------
  177|      0|    _mi_prim_out_stderr(msg);
  178|      0|  }
  179|      1|}
obmalloc.c:mi_out_buf_flush:
  207|      1|static void mi_out_buf_flush(mi_output_fun* out, bool no_more_buf, void* arg) {
  208|      1|  if (out==NULL) return;
  ------------------
  |  Branch (208:7): [True: 0, False: 1]
  ------------------
  209|       |  // claim (if `no_more_buf == true`, no more output will be added after this point)
  210|      1|  size_t count = mi_atomic_add_acq_rel(&out_len, (no_more_buf ? MI_MAX_DELAY_OUTPUT : 1));
  ------------------
  |  |   73|      2|#define mi_atomic_add_acq_rel(p,x)               mi_atomic(fetch_add_explicit)(p,x,mi_memory_order(acq_rel))
  |  |  ------------------
  |  |  |  |   42|      1|#define  mi_atomic(name)        atomic_##name
  |  |  ------------------
  |  |               #define mi_atomic_add_acq_rel(p,x)               mi_atomic(fetch_add_explicit)(p,x,mi_memory_order(acq_rel))
  |  |  ------------------
  |  |  |  |   43|      1|#define  mi_memory_order(name)  memory_order_##name
  |  |  ------------------
  |  |  |  Branch (73:82): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  211|       |  // and output the current contents
  212|      1|  if (count>MI_MAX_DELAY_OUTPUT) count = MI_MAX_DELAY_OUTPUT;
  ------------------
  |  |  186|      1|#define MI_MAX_DELAY_OUTPUT ((size_t)(32*1024))
  ------------------
                if (count>MI_MAX_DELAY_OUTPUT) count = MI_MAX_DELAY_OUTPUT;
  ------------------
  |  |  186|      0|#define MI_MAX_DELAY_OUTPUT ((size_t)(32*1024))
  ------------------
  |  Branch (212:7): [True: 0, False: 1]
  ------------------
  213|      1|  out_buf[count] = 0;
  214|      1|  out(out_buf,arg);
  215|      1|  if (!no_more_buf) {
  ------------------
  |  Branch (215:7): [True: 1, False: 0]
  ------------------
  216|      1|    out_buf[count] = '\n'; // if continue with the buffer, insert a newline
  217|      1|  }
  218|      1|}
obmalloc.c:mi_add_stderr_output:
  252|      1|static void mi_add_stderr_output(void) {
  253|      1|  mi_assert_internal(mi_out_default == NULL);
  254|      1|  mi_out_buf_flush(&mi_out_stderr, false, NULL); // flush current contents to stderr
  255|      1|  mi_out_default = &mi_out_buf_stderr;           // and add stderr to the delayed output
  256|      1|}
obmalloc.c:mi_option_init:
  505|     26|static void mi_option_init(mi_option_desc_t* desc) {
  506|       |  // Read option value from the environment
  507|     26|  char s[64 + 1];
  508|     26|  char buf[64+1];
  509|     26|  _mi_strlcpy(buf, "mimalloc_", sizeof(buf));
  510|     26|  _mi_strlcat(buf, desc->name, sizeof(buf));
  511|     26|  bool found = mi_getenv(buf, s, sizeof(s));
  512|     26|  if (!found && desc->legacy_name != NULL) {
  ------------------
  |  Branch (512:7): [True: 26, False: 0]
  |  Branch (512:17): [True: 6, False: 20]
  ------------------
  513|      6|    _mi_strlcpy(buf, "mimalloc_", sizeof(buf));
  514|      6|    _mi_strlcat(buf, desc->legacy_name, sizeof(buf));
  515|      6|    found = mi_getenv(buf, s, sizeof(s));
  516|      6|    if (found) {
  ------------------
  |  Branch (516:9): [True: 0, False: 6]
  ------------------
  517|      0|      _mi_warning_message("environment option \"mimalloc_%s\" is deprecated -- use \"mimalloc_%s\" instead.\n", desc->legacy_name, desc->name);
  518|      0|    }
  519|      6|  }
  520|       |
  521|     26|  if (found) {
  ------------------
  |  Branch (521:7): [True: 0, False: 26]
  ------------------
  522|      0|    size_t len = _mi_strnlen(s, sizeof(buf) - 1);
  523|      0|    for (size_t i = 0; i < len; i++) {
  ------------------
  |  Branch (523:24): [True: 0, False: 0]
  ------------------
  524|      0|      buf[i] = _mi_toupper(s[i]);
  525|      0|    }
  526|      0|    buf[len] = 0;
  527|      0|    if (buf[0] == 0 || strstr("1;TRUE;YES;ON", buf) != NULL) {
  ------------------
  |  Branch (527:9): [True: 0, False: 0]
  |  Branch (527:24): [True: 0, False: 0]
  ------------------
  528|      0|      desc->value = 1;
  529|      0|      desc->init = INITIALIZED;
  530|      0|    }
  531|      0|    else if (strstr("0;FALSE;NO;OFF", buf) != NULL) {
  ------------------
  |  Branch (531:14): [True: 0, False: 0]
  ------------------
  532|      0|      desc->value = 0;
  533|      0|      desc->init = INITIALIZED;
  534|      0|    }
  535|      0|    else {
  536|      0|      char* end = buf;
  537|      0|      long value = strtol(buf, &end, 10);
  538|      0|      if (desc->option == mi_option_reserve_os_memory || desc->option == mi_option_arena_reserve) {
  ------------------
  |  Branch (538:11): [True: 0, False: 0]
  |  Branch (538:58): [True: 0, False: 0]
  ------------------
  539|       |        // this option is interpreted in KiB to prevent overflow of `long`
  540|      0|        if (*end == 'K') { end++; }
  ------------------
  |  Branch (540:13): [True: 0, False: 0]
  ------------------
  541|      0|        else if (*end == 'M') { value *= MI_KiB; end++; }
  ------------------
  |  |  192|      0|#define MI_KiB     (MI_ZU(1024))
  |  |  ------------------
  |  |  |  |  182|      0|# define MI_ZU(x)  x##UL
  |  |  ------------------
  ------------------
  |  Branch (541:18): [True: 0, False: 0]
  ------------------
  542|      0|        else if (*end == 'G') { value *= MI_MiB; end++; }
  ------------------
  |  |  193|      0|#define MI_MiB     (MI_KiB*MI_KiB)
  |  |  ------------------
  |  |  |  |  192|      0|#define MI_KiB     (MI_ZU(1024))
  |  |  |  |  ------------------
  |  |  |  |  |  |  182|      0|# define MI_ZU(x)  x##UL
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MI_MiB     (MI_KiB*MI_KiB)
  |  |  ------------------
  |  |  |  |  192|      0|#define MI_KiB     (MI_ZU(1024))
  |  |  |  |  ------------------
  |  |  |  |  |  |  182|      0|# define MI_ZU(x)  x##UL
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (542:18): [True: 0, False: 0]
  ------------------
  543|      0|        else { value = (value + MI_KiB - 1) / MI_KiB; }
  ------------------
  |  |  192|      0|#define MI_KiB     (MI_ZU(1024))
  |  |  ------------------
  |  |  |  |  182|      0|# define MI_ZU(x)  x##UL
  |  |  ------------------
  ------------------
                      else { value = (value + MI_KiB - 1) / MI_KiB; }
  ------------------
  |  |  192|      0|#define MI_KiB     (MI_ZU(1024))
  |  |  ------------------
  |  |  |  |  182|      0|# define MI_ZU(x)  x##UL
  |  |  ------------------
  ------------------
  544|      0|        if (end[0] == 'I' && end[1] == 'B') { end += 2; }
  ------------------
  |  Branch (544:13): [True: 0, False: 0]
  |  Branch (544:30): [True: 0, False: 0]
  ------------------
  545|      0|        else if (*end == 'B') { end++; }
  ------------------
  |  Branch (545:18): [True: 0, False: 0]
  ------------------
  546|      0|      }
  547|      0|      if (*end == 0) {
  ------------------
  |  Branch (547:11): [True: 0, False: 0]
  ------------------
  548|      0|        desc->value = value;
  549|      0|        desc->init = INITIALIZED;
  550|      0|      }
  551|      0|      else {
  552|       |        // set `init` first to avoid recursion through _mi_warning_message on mimalloc_verbose.
  553|      0|        desc->init = DEFAULTED;
  554|      0|        if (desc->option == mi_option_verbose && desc->value == 0) {
  ------------------
  |  Branch (554:13): [True: 0, False: 0]
  |  Branch (554:50): [True: 0, False: 0]
  ------------------
  555|       |          // if the 'mimalloc_verbose' env var has a bogus value we'd never know
  556|       |          // (since the value defaults to 'off') so in that case briefly enable verbose
  557|      0|          desc->value = 1;
  558|      0|          _mi_warning_message("environment option mimalloc_%s has an invalid value.\n", desc->name);
  559|      0|          desc->value = 0;
  560|      0|        }
  561|      0|        else {
  562|      0|          _mi_warning_message("environment option mimalloc_%s has an invalid value.\n", desc->name);
  563|      0|        }
  564|      0|      }
  565|      0|    }
  566|      0|    mi_assert_internal(desc->init != UNINIT);
  567|      0|  }
  568|     26|  else if (!_mi_preloading()) {
  ------------------
  |  Branch (568:12): [True: 26, False: 0]
  ------------------
  569|     26|    desc->init = DEFAULTED;
  570|     26|  }
  571|     26|}
obmalloc.c:mi_getenv:
  494|     32|static bool mi_getenv(const char* name, char* result, size_t result_size) {
  495|     32|  if (name==NULL || result == NULL || result_size < 64) return false;
  ------------------
  |  Branch (495:7): [True: 0, False: 32]
  |  Branch (495:21): [True: 0, False: 32]
  |  Branch (495:39): [True: 0, False: 32]
  ------------------
  496|     32|  return _mi_prim_getenv(name,result,result_size);
  497|     32|}

_mi_os_init:
   65|      1|void _mi_os_init(void) {
   66|      1|  _mi_prim_mem_init(&mi_os_mem_config);
   67|      1|}

_mi_prim_mem_init:
  129|      1|void _mi_prim_mem_init( mi_os_mem_config_t* config ) {
  130|      1|  long psize = sysconf(_SC_PAGESIZE);
  131|      1|  if (psize > 0) {
  ------------------
  |  Branch (131:7): [True: 1, False: 0]
  ------------------
  132|      1|    config->page_size = (size_t)psize;
  133|      1|    config->alloc_granularity = (size_t)psize;
  134|      1|  }
  135|      1|  config->large_page_size = 2*MI_MiB; // TODO: can we query the OS for this?
  ------------------
  |  |  193|      1|#define MI_MiB     (MI_KiB*MI_KiB)
  |  |  ------------------
  |  |  |  |  192|      1|#define MI_KiB     (MI_ZU(1024))
  |  |  |  |  ------------------
  |  |  |  |  |  |  182|      1|# define MI_ZU(x)  x##UL
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MI_MiB     (MI_KiB*MI_KiB)
  |  |  ------------------
  |  |  |  |  192|      1|#define MI_KiB     (MI_ZU(1024))
  |  |  |  |  ------------------
  |  |  |  |  |  |  182|      1|# define MI_ZU(x)  x##UL
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  136|      1|  config->has_overcommit = unix_detect_overcommit();
  137|      1|  config->must_free_whole = false;    // mmap can free in parts
  138|       |  config->has_virtual_reserve = true; // todo: check if this true for NetBSD?  (for anonymous mmap with PROT_NONE)
  139|      1|}
_mi_prim_clock_now:
  556|      3|mi_msecs_t _mi_prim_clock_now(void) {
  557|      3|  struct timespec t;
  558|      3|  #ifdef CLOCK_MONOTONIC
  559|      3|  clock_gettime(CLOCK_MONOTONIC, &t);
  560|       |  #else
  561|       |  clock_gettime(CLOCK_REALTIME, &t);
  562|       |  #endif
  563|      3|  return ((mi_msecs_t)t.tv_sec * 1000) + ((mi_msecs_t)t.tv_nsec / 1000000);
  564|      3|}
_mi_prim_getenv:
  689|     32|bool _mi_prim_getenv(const char* name, char* result, size_t result_size) {
  690|     32|  if (name==NULL) return false;
  ------------------
  |  Branch (690:7): [True: 0, False: 32]
  ------------------
  691|     32|  const size_t len = _mi_strlen(name);
  692|     32|  if (len == 0) return false;
  ------------------
  |  Branch (692:7): [True: 0, False: 32]
  ------------------
  693|     32|  char** env = mi_get_environ();
  694|     32|  if (env == NULL) return false;
  ------------------
  |  Branch (694:7): [True: 0, False: 32]
  ------------------
  695|       |  // compare up to 10000 entries
  696|  1.05k|  for (int i = 0; i < 10000 && env[i] != NULL; i++) {
  ------------------
  |  Branch (696:19): [True: 1.05k, False: 0]
  |  Branch (696:32): [True: 1.02k, False: 32]
  ------------------
  697|  1.02k|    const char* s = env[i];
  698|  1.02k|    if (_mi_strnicmp(name, s, len) == 0 && s[len] == '=') { // case insensitive
  ------------------
  |  Branch (698:9): [True: 0, False: 1.02k]
  |  Branch (698:44): [True: 0, False: 0]
  ------------------
  699|       |      // found it
  700|      0|      _mi_strlcpy(result, s + len + 1, result_size);
  701|      0|      return true;
  702|      0|    }
  703|  1.02k|  }
  704|     32|  return false;
  705|     32|}
_mi_prim_random_buf:
  769|      1|bool _mi_prim_random_buf(void* buf, size_t buf_len) {
  770|       |  // Modern Linux provides `getrandom` but different distributions either use `sys/random.h` or `linux/random.h`
  771|       |  // and for the latter the actual `getrandom` call is not always defined.
  772|       |  // (see <https://stackoverflow.com/questions/45237324/why-doesnt-getrandom-compile>)
  773|       |  // We therefore use a syscall directly and fall back dynamically to /dev/urandom when needed.
  774|      1|  #if defined(MI_HAS_SYSCALL_H) && defined(SYS_getrandom)
  775|      1|    #ifndef GRND_NONBLOCK
  776|      1|    #define GRND_NONBLOCK (1)
  777|      1|    #endif
  778|      1|    static _Atomic(uintptr_t) no_getrandom; // = 0
  779|      1|    if (mi_atomic_load_acquire(&no_getrandom)==0) {
  ------------------
  |  |   60|      1|#define mi_atomic_load_acquire(p)                mi_atomic(load_explicit)(p,mi_memory_order(acquire))
  |  |  ------------------
  |  |  |  |   42|      1|#define  mi_atomic(name)        atomic_##name
  |  |  ------------------
  |  |               #define mi_atomic_load_acquire(p)                mi_atomic(load_explicit)(p,mi_memory_order(acquire))
  |  |  ------------------
  |  |  |  |   43|      1|#define  mi_memory_order(name)  memory_order_##name
  |  |  ------------------
  ------------------
  |  Branch (779:9): [True: 1, False: 0]
  ------------------
  780|      1|      ssize_t ret = syscall(SYS_getrandom, buf, buf_len, GRND_NONBLOCK);
  ------------------
  |  |  776|      1|    #define GRND_NONBLOCK (1)
  ------------------
  781|      1|      if (ret >= 0) return (buf_len == (size_t)ret);
  ------------------
  |  Branch (781:11): [True: 1, False: 0]
  ------------------
  782|      0|      if (errno != ENOSYS) return false;
  ------------------
  |  Branch (782:11): [True: 0, False: 0]
  ------------------
  783|      0|      mi_atomic_store_release(&no_getrandom, (uintptr_t)1); // don't call again, and fall back to /dev/urandom
  ------------------
  |  |   62|      0|#define mi_atomic_store_release(p,x)             mi_atomic(store_explicit)(p,x,mi_memory_order(release))
  |  |  ------------------
  |  |  |  |   42|      0|#define  mi_atomic(name)        atomic_##name
  |  |  ------------------
  |  |               #define mi_atomic_store_release(p,x)             mi_atomic(store_explicit)(p,x,mi_memory_order(release))
  |  |  ------------------
  |  |  |  |   43|      0|#define  mi_memory_order(name)  memory_order_##name
  |  |  ------------------
  ------------------
  784|      0|    }
  785|      0|  #endif
  786|      0|  int flags = O_RDONLY;
  787|      0|  #if defined(O_CLOEXEC)
  788|      0|  flags |= O_CLOEXEC;
  789|      0|  #endif
  790|      0|  int fd = mi_prim_open("/dev/urandom", flags);
  791|      0|  if (fd < 0) return false;
  ------------------
  |  Branch (791:7): [True: 0, False: 0]
  ------------------
  792|      0|  size_t count = 0;
  793|      0|  while(count < buf_len) {
  ------------------
  |  Branch (793:9): [True: 0, False: 0]
  ------------------
  794|      0|    ssize_t ret = mi_prim_read(fd, (char*)buf + count, buf_len - count);
  795|      0|    if (ret<=0) {
  ------------------
  |  Branch (795:9): [True: 0, False: 0]
  ------------------
  796|      0|      if (errno!=EAGAIN && errno!=EINTR) break;
  ------------------
  |  Branch (796:11): [True: 0, False: 0]
  |  Branch (796:28): [True: 0, False: 0]
  ------------------
  797|      0|    }
  798|      0|    else {
  799|      0|      count += ret;
  800|      0|    }
  801|      0|  }
  802|      0|  mi_prim_close(fd);
  803|      0|  return (count==buf_len);
  804|      0|}
_mi_prim_thread_init_auto_done:
  831|      1|void _mi_prim_thread_init_auto_done(void) {
  832|      1|  mi_assert_internal(_mi_heap_default_key == (pthread_key_t)(-1));
  833|      1|  pthread_key_create(&_mi_heap_default_key, &mi_pthread_done);
  834|      1|}
_mi_prim_thread_associate_default_heap:
  840|      1|void _mi_prim_thread_associate_default_heap(mi_heap_t* heap) {
  841|      1|  if (_mi_heap_default_key != (pthread_key_t)(-1)) {  // can happen during recursive invocation on freeBSD
  ------------------
  |  Branch (841:7): [True: 1, False: 0]
  ------------------
  842|      1|    pthread_setspecific(_mi_heap_default_key, heap);
  843|      1|  }
  844|      1|}
obmalloc.c:unix_detect_overcommit:
  103|      1|static bool unix_detect_overcommit(void) {
  104|      1|  bool os_overcommit = true;
  105|      1|#if defined(__linux__)
  106|      1|  int fd = mi_prim_open("/proc/sys/vm/overcommit_memory", O_RDONLY);
  107|      1|        if (fd >= 0) {
  ------------------
  |  Branch (107:13): [True: 1, False: 0]
  ------------------
  108|      1|    char buf[32] = {0};
  109|      1|    ssize_t nread = mi_prim_read(fd, &buf, sizeof(buf));
  110|      1|    mi_prim_close(fd);
  111|       |    // <https://www.kernel.org/doc/Documentation/vm/overcommit-accounting>
  112|       |    // 0: heuristic overcommit, 1: always overcommit, 2: never overcommit (ignore NORESERVE)
  113|      1|    if (nread >= 1) {
  ------------------
  |  Branch (113:9): [True: 1, False: 0]
  ------------------
  114|      1|      os_overcommit = (buf[0] == '0' || buf[0] == '1');
  ------------------
  |  Branch (114:24): [True: 0, False: 1]
  |  Branch (114:41): [True: 1, False: 0]
  ------------------
  115|      1|    }
  116|      1|  }
  117|       |#elif defined(__FreeBSD__)
  118|       |  int val = 0;
  119|       |  size_t olen = sizeof(val);
  120|       |  if (sysctlbyname("vm.overcommit", &val, &olen, NULL, 0) == 0) {
  121|       |    os_overcommit = (val != 0);
  122|       |  }
  123|       |#else
  124|       |  // default: overcommit is true
  125|       |#endif
  126|      1|  return os_overcommit;
  127|      1|}
obmalloc.c:mi_get_environ:
  685|     32|static char** mi_get_environ(void) {
  686|     32|  return environ;
  687|     32|}
obmalloc.c:mi_prim_open:
   67|      1|static int mi_prim_open(const char* fpath, int open_flags) {
   68|       |  return syscall(SYS_open,fpath,open_flags,0);
   69|      1|}
obmalloc.c:mi_prim_read:
   70|      1|static ssize_t mi_prim_read(int fd, void* buf, size_t bufsize) {
   71|       |  return syscall(SYS_read,fd,buf,bufsize);
   72|      1|}
obmalloc.c:mi_prim_close:
   73|      1|static int mi_prim_close(int fd) {
   74|       |  return syscall(SYS_close,fd);
   75|      1|}

_mi_random_next:
  144|      3|uintptr_t _mi_random_next(mi_random_ctx_t* ctx) {
  145|      3|  mi_assert_internal(mi_random_is_initialized(ctx));
  146|       |  #if MI_INTPTR_SIZE <= 4
  147|       |    return chacha_next32(ctx);
  148|       |  #elif MI_INTPTR_SIZE == 8
  149|       |    return (((uintptr_t)chacha_next32(ctx) << 32) | chacha_next32(ctx));
  150|       |  #else
  151|       |  # error "define mi_random_next for this platform"
  152|       |  #endif
  153|      3|}
_mi_random_init:
  194|      1|void _mi_random_init(mi_random_ctx_t* ctx) {
  195|       |  mi_random_init_ex(ctx, false);
  196|      1|}
_mi_random_reinit_if_weak:
  202|      1|void _mi_random_reinit_if_weak(mi_random_ctx_t * ctx) {
  203|      1|  if (ctx->weak) {
  ------------------
  |  Branch (203:7): [True: 0, False: 1]
  ------------------
  204|      0|    _mi_random_init(ctx);
  205|      0|  }
  206|      1|}
obmalloc.c:chacha_block:
   48|      1|{
   49|       |  // scramble into `x`
   50|      1|  uint32_t x[16];
   51|     17|  for (size_t i = 0; i < 16; i++) {
  ------------------
  |  Branch (51:22): [True: 16, False: 1]
  ------------------
   52|     16|    x[i] = ctx->input[i];
   53|     16|  }
   54|     11|  for (size_t i = 0; i < MI_CHACHA_ROUNDS; i += 2) {
  ------------------
  |  |   20|     11|#define MI_CHACHA_ROUNDS (20)   // perhaps use 12 for better performance?
  ------------------
  |  Branch (54:22): [True: 10, False: 1]
  ------------------
   55|     10|    qround(x, 0, 4,  8, 12);
   56|     10|    qround(x, 1, 5,  9, 13);
   57|     10|    qround(x, 2, 6, 10, 14);
   58|     10|    qround(x, 3, 7, 11, 15);
   59|     10|    qround(x, 0, 5, 10, 15);
   60|     10|    qround(x, 1, 6, 11, 12);
   61|     10|    qround(x, 2, 7,  8, 13);
   62|     10|    qround(x, 3, 4,  9, 14);
   63|     10|  }
   64|       |
   65|       |  // add scrambled data to the initial state
   66|     17|  for (size_t i = 0; i < 16; i++) {
  ------------------
  |  Branch (66:22): [True: 16, False: 1]
  ------------------
   67|     16|    ctx->output[i] = x[i] + ctx->input[i];
   68|     16|  }
   69|      1|  ctx->output_available = 16;
   70|       |
   71|       |  // increment the counter for the next round
   72|      1|  ctx->input[12] += 1;
   73|      1|  if (ctx->input[12] == 0) {
  ------------------
  |  Branch (73:7): [True: 0, False: 1]
  ------------------
   74|      0|    ctx->input[13] += 1;
   75|      0|    if (ctx->input[13] == 0) {  // and keep increasing into the nonce
  ------------------
  |  Branch (75:9): [True: 0, False: 0]
  ------------------
   76|      0|      ctx->input[14] += 1;
   77|      0|    }
   78|      0|  }
   79|      1|}
obmalloc.c:qround:
   40|     80|static inline void qround(uint32_t x[16], size_t a, size_t b, size_t c, size_t d) {
   41|     80|  x[a] += x[b]; x[d] = rotl(x[d] ^ x[a], 16);
   42|     80|  x[c] += x[d]; x[b] = rotl(x[b] ^ x[c], 12);
   43|     80|  x[a] += x[b]; x[d] = rotl(x[d] ^ x[a], 8);
   44|     80|  x[c] += x[d]; x[b] = rotl(x[b] ^ x[c], 7);
   45|     80|}
obmalloc.c:rotl:
   36|    320|static inline uint32_t rotl(uint32_t x, uint32_t shift) {
   37|    320|  return (x << shift) | (x >> (32 - shift));
   38|    320|}
obmalloc.c:chacha_next32:
   81|      6|static uint32_t chacha_next32(mi_random_ctx_t* ctx) {
   82|      6|  if (ctx->output_available <= 0) {
  ------------------
  |  Branch (82:7): [True: 1, False: 5]
  ------------------
   83|      1|    chacha_block(ctx);
   84|      1|    ctx->output_available = 16; // (assign again to suppress static analysis warning)
   85|      1|  }
   86|      6|  const uint32_t x = ctx->output[16 - ctx->output_available];
   87|      6|  ctx->output[16 - ctx->output_available] = 0; // reset once the data is handed out
   88|      6|  ctx->output_available--;
   89|      6|  return x;
   90|      6|}
obmalloc.c:mi_random_init_ex:
  173|      1|static void mi_random_init_ex(mi_random_ctx_t* ctx, bool use_weak) {
  174|      1|  uint8_t key[32] = {0};
  175|      1|  if (use_weak || !_mi_prim_random_buf(key, sizeof(key))) {
  ------------------
  |  Branch (175:7): [True: 0, False: 1]
  |  Branch (175:19): [True: 0, False: 1]
  ------------------
  176|       |    // if we fail to get random data from the OS, we fall back to a
  177|       |    // weak random source based on the current time
  178|      0|    #if !defined(__wasi__)
  179|      0|    if (!use_weak) { _mi_warning_message("unable to use secure randomness\n"); }
  ------------------
  |  Branch (179:9): [True: 0, False: 0]
  ------------------
  180|      0|    #endif
  181|      0|    uintptr_t x = _mi_os_random_weak(0);
  182|      0|    for (size_t i = 0; i < 8; i++) {  // key is eight 32-bit words.
  ------------------
  |  Branch (182:24): [True: 0, False: 0]
  ------------------
  183|      0|      x = _mi_random_shuffle(x);
  184|      0|      ((uint32_t*)key)[i] = (uint32_t)x;
  185|      0|    }
  186|      0|    ctx->weak = true;
  187|      0|  }
  188|      1|  else {
  189|       |    ctx->weak = false;
  190|      1|  }
  191|      1|  chacha_init(ctx, key, (uintptr_t)ctx /*nonce*/ );
  192|      1|}
obmalloc.c:chacha_init:
   98|      1|{
   99|       |  // since we only use chacha for randomness (and not encryption) we
  100|       |  // do not _need_ to read 32-bit values as little endian but we do anyways
  101|       |  // just for being compatible :-)
  102|      1|  memset(ctx, 0, sizeof(*ctx));
  103|      5|  for (size_t i = 0; i < 4; i++) {
  ------------------
  |  Branch (103:22): [True: 4, False: 1]
  ------------------
  104|      4|    const uint8_t* sigma = (uint8_t*)"expand 32-byte k";
  105|      4|    ctx->input[i] = read32(sigma,i);
  106|      4|  }
  107|      9|  for (size_t i = 0; i < 8; i++) {
  ------------------
  |  Branch (107:22): [True: 8, False: 1]
  ------------------
  108|      8|    ctx->input[i + 4] = read32(key,i);
  109|      8|  }
  110|      1|  ctx->input[12] = 0;
  111|      1|  ctx->input[13] = 0;
  112|      1|  ctx->input[14] = (uint32_t)nonce;
  113|      1|  ctx->input[15] = (uint32_t)(nonce >> 32);
  114|      1|}
obmalloc.c:read32:
   92|     12|static inline uint32_t read32(const uint8_t* p, size_t idx32) {
   93|     12|  const size_t i = 4*idx32;
   94|     12|  return ((uint32_t)p[i+0] | (uint32_t)p[i+1] << 8 | (uint32_t)p[i+2] << 16 | (uint32_t)p[i+3] << 24);
   95|     12|}

mi_stats_reset:
  386|      1|void mi_stats_reset(void) mi_attr_noexcept {
  387|      1|  mi_stats_t* stats = mi_stats_get_default();
  388|      1|  if (stats != &_mi_stats_main) { memset(stats, 0, sizeof(mi_stats_t)); }
  ------------------
  |  Branch (388:7): [True: 1, False: 0]
  ------------------
  389|      1|  memset(&_mi_stats_main, 0, sizeof(mi_stats_t));
  390|      1|  if (mi_process_start == 0) { mi_process_start = _mi_clock_start(); };
  ------------------
  |  Branch (390:7): [True: 1, False: 0]
  ------------------
  391|      1|}
_mi_clock_now:
  422|      3|mi_msecs_t _mi_clock_now(void) {
  423|      3|  return _mi_prim_clock_now();
  424|      3|}
_mi_clock_start:
  426|      1|mi_msecs_t _mi_clock_start(void) {
  427|      1|  if (mi_clock_diff == 0.0) {
  ------------------
  |  Branch (427:7): [True: 1, False: 0]
  ------------------
  428|      1|    mi_msecs_t t0 = _mi_clock_now();
  429|      1|    mi_clock_diff = _mi_clock_now() - t0;
  430|      1|  }
  431|      1|  return _mi_clock_now();
  432|      1|}
obmalloc.c:mi_stats_get_default:
  374|      1|static mi_stats_t* mi_stats_get_default(void) {
  375|      1|  mi_heap_t* heap = mi_heap_get_default();
  376|      1|  return &heap->tld->stats;
  377|      1|}

PyModuleDef_Init:
   83|     28|{
   84|       |#ifdef Py_GIL_DISABLED
   85|       |    // Check that this def does not come from a non-free-threading ABI.
   86|       |    //
   87|       |    // This is meant as a "sanity check"; users should never rely on it.
   88|       |    // In particular, if we run out of ob_flags bits, or otherwise need to
   89|       |    // change some of the internals, this check can go away. Still, it
   90|       |    // would be nice to keep it for the free-threading transition.
   91|       |    //
   92|       |    // A PyModuleDef must be initialized with PyModuleDef_HEAD_INIT,
   93|       |    // which (via PyObject_HEAD_INIT) sets _Py_STATICALLY_ALLOCATED_FLAG
   94|       |    // and not _Py_LEGACY_ABI_CHECK_FLAG. For PyModuleDef, these flags never
   95|       |    // change.
   96|       |    // This means that the lower nibble of a valid PyModuleDef's ob_flags is
   97|       |    // always `_10_` (in binary; `_` is don't care).
   98|       |    //
   99|       |    // So, a check for these bits won't reject valid PyModuleDef.
  100|       |    // Rejecting incompatible extensions is slightly less important; here's
  101|       |    // how that works:
  102|       |    //
  103|       |    // In the pre-free-threading stable ABI, PyModuleDef_HEAD_INIT is big
  104|       |    // enough to overlap with free-threading ABI's ob_flags, is all zeros
  105|       |    // except for the refcount field.
  106|       |    // The refcount field can be:
  107|       |    // - 1 (3.11 and below)
  108|       |    // - UINT_MAX >> 2 (32-bit 3.12 & 3.13)
  109|       |    // - UINT_MAX (64-bit 3.12 & 3.13)
  110|       |    // - 7L << 28 (3.14)
  111|       |    //
  112|       |    // This means that the lower nibble of *any byte* in PyModuleDef_HEAD_INIT
  113|       |    // is not `_10_` -- it can be:
  114|       |    // - 0b0000
  115|       |    // - 0b0001
  116|       |    // - 0b0011 (from UINT_MAX >> 2)
  117|       |    // - 0b0111 (from 7L << 28)
  118|       |    // - 0b1111 (e.g. from UINT_MAX)
  119|       |    // (The values may change at runtime as the PyModuleDef is used, but
  120|       |    // PyModuleDef_Init is required before using the def as a Python object,
  121|       |    // so we check at least once with the initial values.
  122|       |    uint16_t flags = ((PyObject*)def)->ob_flags;
  123|       |    uint16_t bits = _Py_STATICALLY_ALLOCATED_FLAG | _Py_LEGACY_ABI_CHECK_FLAG;
  124|       |    if ((flags & bits) != _Py_STATICALLY_ALLOCATED_FLAG) {
  125|       |        const char *message = "invalid PyModuleDef, extension possibly "
  126|       |            "compiled for non-free-threaded Python";
  127|       |        // Write the error as unraisable: if the extension tries calling
  128|       |        // any API, it's likely to segfault and lose the exception.
  129|       |        PyErr_SetString(PyExc_SystemError, message);
  130|       |        PyErr_WriteUnraisable(NULL);
  131|       |        // But also raise the exception normally -- this is technically
  132|       |        // a recoverable state.
  133|       |        PyErr_SetString(PyExc_SystemError, message);
  134|       |        return NULL;
  135|       |    }
  136|       |#endif
  137|     28|    assert(PyModuleDef_Type.tp_flags & Py_TPFLAGS_READY);
  ------------------
  |  Branch (137:5): [True: 28, False: 0]
  ------------------
  138|     28|    if (def->m_base.m_index == 0) {
  ------------------
  |  Branch (138:9): [True: 16, False: 12]
  ------------------
  139|     16|        Py_SET_REFCNT(def, 1);
  ------------------
  |  |  201|     16|#  define Py_SET_REFCNT(ob, refcnt) Py_SET_REFCNT(_PyObject_CAST(ob), (refcnt))
  |  |  ------------------
  |  |  |  |  171|     16|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     16|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  140|     16|        Py_SET_TYPE(def, &PyModuleDef_Type);
  ------------------
  |  |  217|     16|#  define Py_SET_TYPE(ob, type) Py_SET_TYPE(_PyObject_CAST(ob), type)
  |  |  ------------------
  |  |  |  |  171|     16|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     16|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  141|     16|        def->m_base.m_index = _PyImport_GetNextModuleIndex();
  142|     16|    }
  143|     28|    return (PyObject*)def;
  144|     28|}
_PyModule_InitModuleDictWatcher:
  220|      1|{
  221|       |    // This is a reserved watcher for CPython so there's no need to check for non-NULL.
  222|      1|    assert(interp->dict_state.watchers[MODULE_WATCHER_ID] == NULL);
  ------------------
  |  Branch (222:5): [True: 1, False: 0]
  ------------------
  223|      1|    interp->dict_state.watchers[MODULE_WATCHER_ID] = &module_dict_watcher;
  ------------------
  |  |  294|      1|#define MODULE_WATCHER_ID       2
  ------------------
  224|      1|    return 0;
  225|      1|}
PyModule_NewObject:
  248|     18|{
  249|     18|    PyModuleObject *m = new_module_notrack(&PyModule_Type);
  250|     18|    if (m == NULL)
  ------------------
  |  Branch (250:9): [True: 0, False: 18]
  ------------------
  251|      0|        return NULL;
  252|     18|    if (module_init_dict(m, m->md_dict, name, NULL) != 0)
  ------------------
  |  Branch (252:9): [True: 0, False: 18]
  ------------------
  253|      0|        goto fail;
  254|     18|    track_module(m);
  255|     18|    return (PyObject *)m;
  256|       |
  257|      0| fail:
  258|      0|    Py_DECREF(m);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  259|       |    return NULL;
  260|     18|}
PyModule_New:
  264|      4|{
  265|      4|    PyObject *nameobj, *module;
  266|      4|    nameobj = PyUnicode_FromString(name);
  267|      4|    if (nameobj == NULL)
  ------------------
  |  Branch (267:9): [True: 0, False: 4]
  ------------------
  268|      0|        return NULL;
  269|      4|    module = PyModule_NewObject(nameobj);
  270|      4|    Py_DECREF(nameobj);
  ------------------
  |  |  430|      4|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  271|      4|    return module;
  272|      4|}
_PyModule_CreateInitialized:
  347|      4|{
  348|      4|    const char* name;
  349|      4|    PyModuleObject *m;
  350|       |
  351|      4|    if (!PyModuleDef_Init(module))
  ------------------
  |  Branch (351:9): [True: 0, False: 4]
  ------------------
  352|      0|        return NULL;
  353|      4|    name = module->m_name;
  354|      4|    if (!check_api_version(name, module_api_version)) {
  ------------------
  |  Branch (354:9): [True: 0, False: 4]
  ------------------
  355|      0|        return NULL;
  356|      0|    }
  357|      4|    if (module->m_slots) {
  ------------------
  |  Branch (357:9): [True: 0, False: 4]
  ------------------
  358|      0|        PyErr_Format(
  359|      0|            PyExc_SystemError,
  360|      0|            "module %s: PyModule_Create is incompatible with m_slots", name);
  361|      0|        return NULL;
  362|      0|    }
  363|      4|    name = _PyImport_ResolveNameWithPackageContext(name);
  364|       |
  365|      4|    m = (PyModuleObject*)PyModule_New(name);
  366|      4|    if (m == NULL)
  ------------------
  |  Branch (366:9): [True: 0, False: 4]
  ------------------
  367|      0|        return NULL;
  368|       |
  369|      4|    if (module->m_size > 0) {
  ------------------
  |  Branch (369:9): [True: 0, False: 4]
  ------------------
  370|      0|        m->md_state = PyMem_Malloc(module->m_size);
  371|      0|        if (!m->md_state) {
  ------------------
  |  Branch (371:13): [True: 0, False: 0]
  ------------------
  372|      0|            PyErr_NoMemory();
  373|      0|            Py_DECREF(m);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  374|      0|            return NULL;
  375|      0|        }
  376|      0|        memset(m->md_state, 0, module->m_size);
  377|      0|    }
  378|       |
  379|      4|    if (module->m_methods != NULL) {
  ------------------
  |  Branch (379:9): [True: 4, False: 0]
  ------------------
  380|      4|        if (PyModule_AddFunctions((PyObject *) m, module->m_methods) != 0) {
  ------------------
  |  Branch (380:13): [True: 0, False: 4]
  ------------------
  381|      0|            Py_DECREF(m);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  382|      0|            return NULL;
  383|      0|        }
  384|      4|    }
  385|      4|    if (module->m_doc != NULL) {
  ------------------
  |  Branch (385:9): [True: 3, False: 1]
  ------------------
  386|      3|        if (PyModule_SetDocString((PyObject *) m, module->m_doc) != 0) {
  ------------------
  |  Branch (386:13): [True: 0, False: 3]
  ------------------
  387|      0|            Py_DECREF(m);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  388|      0|            return NULL;
  389|      0|        }
  390|      3|    }
  391|      4|    m->md_token = module;
  392|      4|    m->md_token_is_def = true;
  393|      4|    module_copy_members_from_deflike(m, module);
  394|       |#ifdef Py_GIL_DISABLED
  395|       |    m->md_requires_gil = true;
  396|       |#endif
  397|      4|    return (PyObject*)m;
  398|      4|}
PyModule_FromDefAndSpec2:
  671|     12|{
  672|     12|    PyModuleDef_Init(def);
  673|       |    return module_from_slots_and_spec(NULL, spec, module_api_version, def);
  674|     12|}
PyModule_Exec:
  753|     12|{
  754|     12|    if (alloc_state(module) < 0) {
  ------------------
  |  Branch (754:9): [True: 0, False: 12]
  ------------------
  755|      0|        return -1;
  756|      0|    }
  757|     12|    PyModuleObject *md = (PyModuleObject*)module;
  758|     12|    if (md->md_exec) {
  ------------------
  |  Branch (758:9): [True: 0, False: 12]
  ------------------
  759|      0|        assert(!md->md_token_is_def);
  ------------------
  |  Branch (759:9): [True: 0, False: 0]
  ------------------
  760|      0|        return run_exec_func(module, md->md_exec);
  761|      0|    }
  762|       |
  763|     12|    PyModuleDef *def = _PyModule_GetDefOrNull(module);
  764|     12|    if (def) {
  ------------------
  |  Branch (764:9): [True: 12, False: 0]
  ------------------
  765|     12|        return PyModule_ExecDef(module, def);
  766|     12|    }
  767|      0|    return 0;
  768|     12|}
PyModule_ExecDef:
  772|     12|{
  773|     12|    if (alloc_state(module) < 0) {
  ------------------
  |  Branch (773:9): [True: 0, False: 12]
  ------------------
  774|      0|        return -1;
  775|      0|    }
  776|       |
  777|     12|    assert(PyModule_Check(module));
  ------------------
  |  Branch (777:5): [True: 12, False: 0]
  ------------------
  778|       |
  779|     12|    if (def->m_slots == NULL) {
  ------------------
  |  Branch (779:9): [True: 0, False: 12]
  ------------------
  780|      0|        return 0;
  781|      0|    }
  782|       |
  783|     12|    _PySlotIterator it;
  784|     12|    _PySlotIterator_InitLegacy(&it, def->m_slots, _PySlot_KIND_MOD);
  785|     57|    while (_PySlotIterator_Next(&it)) {
  ------------------
  |  Branch (785:12): [True: 45, False: 12]
  ------------------
  786|     45|        _Py_modexecfunc func;
  787|     45|        switch (it.current.sl_id) {
  ------------------
  |  Branch (787:17): [True: 11, False: 34]
  ------------------
  788|      0|            case Py_slot_invalid:
  ------------------
  |  |   25|      0|#define Py_slot_invalid 0xffff
  ------------------
  |  Branch (788:13): [True: 0, False: 45]
  ------------------
  789|      0|                return -1;
  790|     11|            case Py_mod_exec:
  ------------------
  |  |   93|     11|#define Py_mod_exec _Py_SLOT_COMPAT_VALUE(2, 85)
  |  |  ------------------
  |  |  |  |    7|     11|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  |  Branch (790:13): [True: 11, False: 34]
  ------------------
  791|     11|                func = (_Py_modexecfunc)it.current.sl_func;
  792|     11|                if (run_exec_func(module, func) < 0) {
  ------------------
  |  Branch (792:21): [True: 0, False: 11]
  ------------------
  793|      0|                    return -1;
  794|      0|                }
  795|     11|                break;
  796|     45|        }
  797|     45|    }
  798|     12|    return 0;
  799|     12|}
PyModule_AddFunctions:
  803|      4|{
  804|      4|    int res;
  805|      4|    PyObject *name = PyModule_GetNameObject(m);
  806|      4|    if (name == NULL) {
  ------------------
  |  Branch (806:9): [True: 0, False: 4]
  ------------------
  807|      0|        return -1;
  808|      0|    }
  809|       |
  810|      4|    res = _add_methods_to_object(m, name, functions);
  811|      4|    Py_DECREF(name);
  ------------------
  |  |  430|      4|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  812|      4|    return res;
  813|      4|}
PyModule_SetDocString:
  817|     14|{
  818|     14|    PyObject *v;
  819|       |
  820|     14|    v = PyUnicode_FromString(doc);
  821|     14|    if (v == NULL || PyObject_SetAttr(m, &_Py_ID(__doc__), v) != 0) {
  ------------------
  |  |  917|     14|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     14|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     14|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (821:9): [True: 0, False: 14]
  |  Branch (821:22): [True: 0, False: 14]
  ------------------
  822|      0|        Py_XDECREF(v);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  823|      0|        return -1;
  824|      0|    }
  825|     14|    Py_DECREF(v);
  ------------------
  |  |  430|     14|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     14|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     14|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  826|     14|    return 0;
  827|     14|}
PyModule_GetDict:
  831|    301|{
  832|    301|    if (!PyModule_Check(m)) {
  ------------------
  |  |   12|    301|#define PyModule_Check(op) PyObject_TypeCheck((op), &PyModule_Type)
  |  |  ------------------
  |  |  |  |  378|    301|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    301|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    301|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (832:9): [True: 0, False: 301]
  ------------------
  833|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
  834|      0|        return NULL;
  835|      0|    }
  836|    301|    return _PyModule_GetDict(m);  // borrowed reference
  837|    301|}
PyModule_GetNameObject:
  877|      4|{
  878|      4|    if (!PyModule_Check(mod)) {
  ------------------
  |  |   12|      4|#define PyModule_Check(op) PyObject_TypeCheck((op), &PyModule_Type)
  |  |  ------------------
  |  |  |  |  378|      4|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (878:9): [True: 0, False: 4]
  ------------------
  879|      0|        PyErr_BadArgument();
  880|      0|        return NULL;
  881|      0|    }
  882|      4|    PyObject *dict = ((PyModuleObject *)mod)->md_dict;  // borrowed reference
  883|      4|    if (dict == NULL || !PyDict_Check(dict)) {
  ------------------
  |  |   18|      4|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      4|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (883:9): [True: 0, False: 4]
  |  Branch (883:25): [True: 0, False: 4]
  ------------------
  884|      0|        goto error;
  885|      0|    }
  886|      4|    PyObject *name;
  887|      4|    if (PyDict_GetItemRef(dict, &_Py_ID(__name__), &name) <= 0) {
  ------------------
  |  |  917|      4|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      4|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      4|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (887:9): [True: 0, False: 4]
  ------------------
  888|       |        // error or not found
  889|      0|        goto error;
  890|      0|    }
  891|      4|    if (!PyUnicode_Check(name)) {
  ------------------
  |  |  103|      4|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      4|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (891:9): [True: 0, False: 4]
  ------------------
  892|      0|        Py_DECREF(name);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  893|      0|        goto error;
  894|      0|    }
  895|      4|    return name;
  896|       |
  897|      0|error:
  898|      0|    if (!PyErr_Occurred()) {
  ------------------
  |  Branch (898:9): [True: 0, False: 0]
  ------------------
  899|      0|        PyErr_SetString(PyExc_SystemError, "nameless module");
  900|      0|    }
  901|       |    return NULL;
  902|      4|}
PyModule_GetState:
 1029|     12|{
 1030|     12|    if (!PyModule_Check(m)) {
  ------------------
  |  |   12|     12|#define PyModule_Check(op) PyObject_TypeCheck((op), &PyModule_Type)
  |  |  ------------------
  |  |  |  |  378|     12|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     12|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     12|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1030:9): [True: 0, False: 12]
  ------------------
 1031|      0|        PyErr_BadArgument();
 1032|      0|        return NULL;
 1033|      0|    }
 1034|     12|    return _PyModule_GetState(m);
 1035|     12|}
_PyModuleSpec_IsInitializing:
 1175|     66|{
 1176|     66|    if (spec == NULL) {
  ------------------
  |  Branch (1176:9): [True: 0, False: 66]
  ------------------
 1177|      0|        return 0;
 1178|      0|    }
 1179|     66|    PyObject *value;
 1180|     66|    int rc = PyObject_GetOptionalAttr(spec, &_Py_ID(_initializing), &value);
  ------------------
  |  |  917|     66|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     66|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     66|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1181|     66|    if (rc > 0) {
  ------------------
  |  Branch (1181:9): [True: 36, False: 30]
  ------------------
 1182|     36|        rc = PyObject_IsTrue(value);
 1183|     36|        Py_DECREF(value);
  ------------------
  |  |  430|     36|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     36|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     36|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1184|     36|    }
 1185|     66|    return rc;
 1186|     66|}
_PyModuleSpec_IsUninitializedSubmodule:
 1193|     10|{
 1194|     10|    if (spec == NULL) {
  ------------------
  |  Branch (1194:9): [True: 0, False: 10]
  ------------------
 1195|      0|         return 0;
 1196|      0|    }
 1197|       |
 1198|     10|    PyObject *value;
 1199|     10|    int rc = PyObject_GetOptionalAttr(spec, &_Py_ID(_uninitialized_submodules), &value);
  ------------------
  |  |  917|     10|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     10|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     10|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1200|     10|    if (rc > 0) {
  ------------------
  |  Branch (1200:9): [True: 2, False: 8]
  ------------------
 1201|      2|        rc = PySequence_Contains(value, name);
 1202|      2|        Py_DECREF(value);
  ------------------
  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1203|      2|    }
 1204|     10|    return rc;
 1205|     10|}
_PyModuleSpec_GetFileOrigin:
 1209|     10|{
 1210|     10|    PyObject *has_location = NULL;
 1211|     10|    int rc = PyObject_GetOptionalAttr(spec, &_Py_ID(has_location), &has_location);
  ------------------
  |  |  917|     10|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     10|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     10|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1212|     10|    if (rc <= 0) {
  ------------------
  |  Branch (1212:9): [True: 8, False: 2]
  ------------------
 1213|      8|        return rc;
 1214|      8|    }
 1215|       |    // If origin is not a location, or doesn't exist, or is not a str, we could consider falling
 1216|       |    // back to module.__file__. But the cases in which module.__file__ is not __spec__.origin
 1217|       |    // are cases in which we probably shouldn't be guessing.
 1218|      2|    rc = PyObject_IsTrue(has_location);
 1219|      2|    Py_DECREF(has_location);
  ------------------
  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1220|      2|    if (rc <= 0) {
  ------------------
  |  Branch (1220:9): [True: 2, False: 0]
  ------------------
 1221|      2|        return rc;
 1222|      2|    }
 1223|       |    // has_location is true, so origin is a location
 1224|      0|    PyObject *origin = NULL;
 1225|      0|    rc = PyObject_GetOptionalAttr(spec, &_Py_ID(origin), &origin);
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1226|      0|    if (rc <= 0) {
  ------------------
  |  Branch (1226:9): [True: 0, False: 0]
  ------------------
 1227|      0|        return rc;
 1228|      0|    }
 1229|      0|    assert(origin != NULL);
  ------------------
  |  Branch (1229:5): [True: 0, False: 0]
  ------------------
 1230|      0|    if (!PyUnicode_Check(origin)) {
  ------------------
  |  |  103|      0|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (1230:9): [True: 0, False: 0]
  ------------------
 1231|      0|        Py_DECREF(origin);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1232|      0|        return 0;
 1233|      0|    }
 1234|      0|    *p_origin = origin;
 1235|      0|    return 1;
 1236|      0|}
_PyModule_IsPossiblyShadowing:
 1240|     10|{
 1241|       |    // origin must be a unicode subtype
 1242|       |    // Returns 1 if the module at origin could be shadowing a module of the
 1243|       |    // same name later in the module search path. The condition we check is basically:
 1244|       |    // root = os.path.dirname(origin.removesuffix(os.sep + "__init__.py"))
 1245|       |    // return not sys.flags.safe_path and root == (sys.path[0] or os.getcwd())
 1246|       |    // Returns 0 otherwise (or if we aren't sure)
 1247|       |    // Returns -1 if an error occurred that should be propagated
 1248|     10|    if (origin == NULL) {
  ------------------
  |  Branch (1248:9): [True: 10, False: 0]
  ------------------
 1249|     10|        return 0;
 1250|     10|    }
 1251|       |
 1252|       |    // not sys.flags.safe_path
 1253|      0|    const PyConfig *config = _Py_GetConfig();
 1254|      0|    if (config->safe_path) {
  ------------------
  |  Branch (1254:9): [True: 0, False: 0]
  ------------------
 1255|      0|        return 0;
 1256|      0|    }
 1257|       |
 1258|       |    // root = os.path.dirname(origin.removesuffix(os.sep + "__init__.py"))
 1259|      0|    wchar_t root[MAXPATHLEN + 1];
 1260|      0|    Py_ssize_t size = PyUnicode_AsWideChar(origin, root, MAXPATHLEN);
  ------------------
  |  |   43|      0|#    define MAXPATHLEN PATH_MAX
  ------------------
 1261|      0|    if (size < 0) {
  ------------------
  |  Branch (1261:9): [True: 0, False: 0]
  ------------------
 1262|      0|        return -1;
 1263|      0|    }
 1264|      0|    assert(size <= MAXPATHLEN);
  ------------------
  |  Branch (1264:5): [True: 0, False: 0]
  ------------------
 1265|      0|    root[size] = L'\0';
 1266|       |
 1267|      0|    wchar_t *sep = wcsrchr(root, SEP);
  ------------------
  |  |   29|      0|#  define SEP L'/'
  ------------------
 1268|      0|    if (sep == NULL) {
  ------------------
  |  Branch (1268:9): [True: 0, False: 0]
  ------------------
 1269|      0|        return 0;
 1270|      0|    }
 1271|       |    // If it's a package then we need to look one directory further up
 1272|      0|    if (wcscmp(sep + 1, L"__init__.py") == 0) {
  ------------------
  |  Branch (1272:9): [True: 0, False: 0]
  ------------------
 1273|      0|        *sep = L'\0';
 1274|      0|        sep = wcsrchr(root, SEP);
  ------------------
  |  |   29|      0|#  define SEP L'/'
  ------------------
 1275|      0|        if (sep == NULL) {
  ------------------
  |  Branch (1275:13): [True: 0, False: 0]
  ------------------
 1276|      0|            return 0;
 1277|      0|        }
 1278|      0|    }
 1279|      0|    *sep = L'\0';
 1280|       |
 1281|       |    // sys.path[0] or os.getcwd()
 1282|      0|    wchar_t *sys_path_0 = config->sys_path_0;
 1283|      0|    if (!sys_path_0) {
  ------------------
  |  Branch (1283:9): [True: 0, False: 0]
  ------------------
 1284|      0|        return 0;
 1285|      0|    }
 1286|       |
 1287|      0|    wchar_t sys_path_0_buf[MAXPATHLEN];
 1288|      0|    if (sys_path_0[0] == L'\0') {
  ------------------
  |  Branch (1288:9): [True: 0, False: 0]
  ------------------
 1289|       |        // if sys.path[0] == "", treat it as if it were the current directory
 1290|      0|        if (!_Py_wgetcwd(sys_path_0_buf, MAXPATHLEN)) {
  ------------------
  |  |   43|      0|#    define MAXPATHLEN PATH_MAX
  ------------------
  |  Branch (1290:13): [True: 0, False: 0]
  ------------------
 1291|       |            // If we failed to getcwd, don't raise an exception and instead
 1292|       |            // let the caller proceed assuming no shadowing
 1293|      0|            return 0;
 1294|      0|        }
 1295|      0|        sys_path_0 = sys_path_0_buf;
 1296|      0|    }
 1297|       |
 1298|      0|    int result = wcscmp(sys_path_0, root) == 0;
 1299|      0|    return result;
 1300|      0|}
_Py_module_getattro_impl:
 1304|  1.33k|{
 1305|       |    // When suppress=1, this function suppresses AttributeError.
 1306|  1.33k|    PyObject *attr, *mod_name, *getattr;
 1307|  1.33k|    attr = _PyObject_GenericGetAttrWithDict((PyObject *)m, name, NULL, suppress);
 1308|  1.33k|    if (attr) {
  ------------------
  |  Branch (1308:9): [True: 1.26k, False: 64]
  ------------------
 1309|  1.26k|        if (PyLazyImport_CheckExact(attr)) {
  ------------------
  |  |   15|  1.26k|#define PyLazyImport_CheckExact(op) Py_IS_TYPE((op), &PyLazyImport_Type)
  |  |  ------------------
  |  |  |  |  215|  1.26k|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|  1.26k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|  1.26k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 1.26k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1310|       |            // gh-144957: Module __getattr__ should get a chance to provide
 1311|       |            // the attribute before resolving a lazy import placeholder.
 1312|      0|            if (PyDict_GetItemRef(m->md_dict, &_Py_ID(__getattr__), &getattr) < 0) {
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1312:17): [True: 0, False: 0]
  ------------------
 1313|      0|                Py_DECREF(attr);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1314|      0|                return NULL;
 1315|      0|            }
 1316|      0|            if (getattr) {
  ------------------
  |  Branch (1316:17): [True: 0, False: 0]
  ------------------
 1317|      0|                PyObject *result = PyObject_CallOneArg(getattr, name);
 1318|      0|                Py_DECREF(getattr);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1319|      0|                if (result != NULL) {
  ------------------
  |  Branch (1319:21): [True: 0, False: 0]
  ------------------
 1320|      0|                    Py_DECREF(attr);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1321|      0|                    return result;
 1322|      0|                }
 1323|      0|                if (!PyErr_ExceptionMatches(PyExc_AttributeError)) {
  ------------------
  |  Branch (1323:21): [True: 0, False: 0]
  ------------------
 1324|      0|                    Py_DECREF(attr);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1325|      0|                    return NULL;
 1326|      0|                }
 1327|      0|                PyErr_Clear();
 1328|      0|            }
 1329|      0|            PyObject *new_value = _PyImport_LoadLazyImportTstate(
 1330|      0|                PyThreadState_GET(), attr);
  ------------------
  |  |   63|      0|#define PyThreadState_GET() PyThreadState_Get()
  ------------------
 1331|      0|            if (new_value == NULL) {
  ------------------
  |  Branch (1331:17): [True: 0, False: 0]
  ------------------
 1332|      0|                if (suppress &&
  ------------------
  |  Branch (1332:21): [True: 0, False: 0]
  ------------------
 1333|      0|                    PyErr_ExceptionMatches(PyExc_ImportCycleError)) {
  ------------------
  |  Branch (1333:21): [True: 0, False: 0]
  ------------------
 1334|       |                    // ImportCycleError is raised when a lazy object tries
 1335|       |                    // to import itself. In this case, the error should not
 1336|       |                    // propagate to the caller and instead treated as if the
 1337|       |                    // attribute doesn't exist.
 1338|      0|                    PyErr_Clear();
 1339|      0|                }
 1340|      0|                Py_DECREF(attr);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1341|      0|                return NULL;
 1342|      0|            }
 1343|       |
 1344|      0|            if (PyDict_SetItem(m->md_dict, name, new_value) < 0) {
  ------------------
  |  Branch (1344:17): [True: 0, False: 0]
  ------------------
 1345|      0|                Py_CLEAR(new_value);
  ------------------
  |  |  484|      0|    do { \
  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1346|      0|            }
 1347|      0|            Py_DECREF(attr);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1348|      0|            return new_value;
 1349|      0|        }
 1350|  1.26k|        return attr;
 1351|  1.26k|    }
 1352|     64|    if (suppress == 1) {
  ------------------
  |  Branch (1352:9): [True: 54, False: 10]
  ------------------
 1353|     54|        if (PyErr_Occurred()) {
  ------------------
  |  Branch (1353:13): [True: 0, False: 54]
  ------------------
 1354|       |            // pass up non-AttributeError exception
 1355|      0|            return NULL;
 1356|      0|        }
 1357|     54|    }
 1358|     10|    else {
 1359|     10|        if (!PyErr_ExceptionMatches(PyExc_AttributeError)) {
  ------------------
  |  Branch (1359:13): [True: 0, False: 10]
  ------------------
 1360|       |            // pass up non-AttributeError exception
 1361|      0|            return NULL;
 1362|      0|        }
 1363|     10|        PyErr_Clear();
 1364|     10|    }
 1365|     64|    assert(m->md_dict != NULL);
  ------------------
  |  Branch (1365:5): [True: 64, False: 0]
  ------------------
 1366|     64|    if (PyDict_GetItemRef(m->md_dict, &_Py_ID(__getattr__), &getattr) < 0) {
  ------------------
  |  |  917|     64|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     64|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     64|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1366:9): [True: 0, False: 64]
  ------------------
 1367|      0|        return NULL;
 1368|      0|    }
 1369|     64|    if (getattr) {
  ------------------
  |  Branch (1369:9): [True: 2, False: 62]
  ------------------
 1370|      2|        PyObject *result = PyObject_CallOneArg(getattr, name);
 1371|      2|        if (result == NULL && suppress == 1 && PyErr_ExceptionMatches(PyExc_AttributeError)) {
  ------------------
  |  Branch (1371:13): [True: 2, False: 0]
  |  Branch (1371:31): [True: 2, False: 0]
  |  Branch (1371:48): [True: 2, False: 0]
  ------------------
 1372|       |            // suppress AttributeError
 1373|      2|            PyErr_Clear();
 1374|      2|        }
 1375|      2|        Py_DECREF(getattr);
  ------------------
  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1376|      2|        return result;
 1377|      2|    }
 1378|       |
 1379|       |    // The attribute was not found.  We make a best effort attempt at a useful error message,
 1380|       |    // but only if we're not suppressing AttributeError.
 1381|     62|    if (suppress == 1) {
  ------------------
  |  Branch (1381:9): [True: 52, False: 10]
  ------------------
 1382|     52|        return NULL;
 1383|     52|    }
 1384|     10|    if (PyDict_GetItemRef(m->md_dict, &_Py_ID(__name__), &mod_name) < 0) {
  ------------------
  |  |  917|     10|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     10|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     10|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1384:9): [True: 0, False: 10]
  ------------------
 1385|      0|        return NULL;
 1386|      0|    }
 1387|     10|    if (!mod_name || !PyUnicode_Check(mod_name)) {
  ------------------
  |  |  103|     10|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     10|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (1387:9): [True: 0, False: 10]
  |  Branch (1387:22): [True: 0, False: 10]
  ------------------
 1388|      0|        Py_XDECREF(mod_name);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1389|      0|        PyErr_Format(PyExc_AttributeError,
 1390|      0|                    "module has no attribute '%U'", name);
 1391|      0|        return NULL;
 1392|      0|    }
 1393|     10|    PyObject *spec;
 1394|     10|    if (PyDict_GetItemRef(m->md_dict, &_Py_ID(__spec__), &spec) < 0) {
  ------------------
  |  |  917|     10|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     10|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     10|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1394:9): [True: 0, False: 10]
  ------------------
 1395|      0|        Py_DECREF(mod_name);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1396|      0|        return NULL;
 1397|      0|    }
 1398|     10|    if (spec == NULL) {
  ------------------
  |  Branch (1398:9): [True: 0, False: 10]
  ------------------
 1399|      0|        PyErr_Format(PyExc_AttributeError,
 1400|      0|                     "module '%U' has no attribute '%U'",
 1401|      0|                     mod_name, name);
 1402|      0|        Py_DECREF(mod_name);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1403|      0|        return NULL;
 1404|      0|    }
 1405|       |
 1406|     10|    PyObject *origin = NULL;
 1407|     10|    if (_PyModuleSpec_GetFileOrigin(spec, &origin) < 0) {
  ------------------
  |  Branch (1407:9): [True: 0, False: 10]
  ------------------
 1408|      0|        goto done;
 1409|      0|    }
 1410|       |
 1411|     10|    int is_possibly_shadowing = _PyModule_IsPossiblyShadowing(origin);
 1412|     10|    if (is_possibly_shadowing < 0) {
  ------------------
  |  Branch (1412:9): [True: 0, False: 10]
  ------------------
 1413|      0|        goto done;
 1414|      0|    }
 1415|     10|    int is_possibly_shadowing_stdlib = 0;
 1416|     10|    if (is_possibly_shadowing) {
  ------------------
  |  Branch (1416:9): [True: 0, False: 10]
  ------------------
 1417|      0|        PyObject *stdlib_modules;
 1418|      0|        if (PySys_GetOptionalAttrString("stdlib_module_names", &stdlib_modules) < 0) {
  ------------------
  |  Branch (1418:13): [True: 0, False: 0]
  ------------------
 1419|      0|            goto done;
 1420|      0|        }
 1421|      0|        if (stdlib_modules && PyAnySet_Check(stdlib_modules)) {
  ------------------
  |  |   31|      0|    (Py_IS_TYPE((ob), &PySet_Type) || Py_IS_TYPE((ob), &PyFrozenSet_Type) || \
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (Py_IS_TYPE((ob), &PySet_Type) || Py_IS_TYPE((ob), &PyFrozenSet_Type) || \
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   32|      0|      PyType_IsSubtype(Py_TYPE(ob), &PySet_Type) || \
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (32:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   33|      0|      PyType_IsSubtype(Py_TYPE(ob), &PyFrozenSet_Type))
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (33:7): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1421:13): [True: 0, False: 0]
  ------------------
 1422|      0|            is_possibly_shadowing_stdlib = PySet_Contains(stdlib_modules, mod_name);
 1423|      0|            if (is_possibly_shadowing_stdlib < 0) {
  ------------------
  |  Branch (1423:17): [True: 0, False: 0]
  ------------------
 1424|      0|                Py_DECREF(stdlib_modules);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1425|      0|                goto done;
 1426|      0|            }
 1427|      0|        }
 1428|      0|        Py_XDECREF(stdlib_modules);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1429|      0|    }
 1430|       |
 1431|     10|    if (is_possibly_shadowing_stdlib) {
  ------------------
  |  Branch (1431:9): [True: 0, False: 10]
  ------------------
 1432|      0|        assert(origin);
  ------------------
  |  Branch (1432:9): [True: 0, False: 0]
  ------------------
 1433|      0|        PyErr_Format(PyExc_AttributeError,
 1434|      0|                    "module '%U' has no attribute '%U' "
 1435|      0|                    "(consider renaming '%U' since it has the same "
 1436|      0|                    "name as the standard library module named '%U' "
 1437|      0|                    "and prevents importing that standard library module)",
 1438|      0|                    mod_name, name, origin, mod_name);
 1439|      0|    }
 1440|     10|    else {
 1441|     10|        int rc = _PyModuleSpec_IsInitializing(spec);
 1442|     10|        if (rc < 0) {
  ------------------
  |  Branch (1442:13): [True: 0, False: 10]
  ------------------
 1443|      0|            goto done;
 1444|      0|        }
 1445|     10|        else if (rc > 0) {
  ------------------
  |  Branch (1445:18): [True: 0, False: 10]
  ------------------
 1446|      0|            if (is_possibly_shadowing) {
  ------------------
  |  Branch (1446:17): [True: 0, False: 0]
  ------------------
 1447|      0|                assert(origin);
  ------------------
  |  Branch (1447:17): [True: 0, False: 0]
  ------------------
 1448|       |                // For non-stdlib modules, only mention the possibility of
 1449|       |                // shadowing if the module is being initialized.
 1450|      0|                PyErr_Format(PyExc_AttributeError,
 1451|      0|                            "module '%U' has no attribute '%U' "
 1452|      0|                            "(consider renaming '%U' if it has the same name "
 1453|      0|                            "as a library you intended to import)",
 1454|      0|                            mod_name, name, origin);
 1455|      0|            }
 1456|      0|            else if (origin) {
  ------------------
  |  Branch (1456:22): [True: 0, False: 0]
  ------------------
 1457|      0|                PyErr_Format(PyExc_AttributeError,
 1458|      0|                            "partially initialized "
 1459|      0|                            "module '%U' from '%U' has no attribute '%U' "
 1460|      0|                            "(most likely due to a circular import)",
 1461|      0|                            mod_name, origin, name);
 1462|      0|            }
 1463|      0|            else {
 1464|      0|                PyErr_Format(PyExc_AttributeError,
 1465|      0|                            "partially initialized "
 1466|      0|                            "module '%U' has no attribute '%U' "
 1467|      0|                            "(most likely due to a circular import)",
 1468|      0|                            mod_name, name);
 1469|      0|            }
 1470|      0|        }
 1471|     10|        else {
 1472|     10|            assert(rc == 0);
  ------------------
  |  Branch (1472:13): [True: 10, False: 0]
  ------------------
 1473|     10|            rc = _PyModuleSpec_IsUninitializedSubmodule(spec, name);
 1474|     10|            if (rc > 0) {
  ------------------
  |  Branch (1474:17): [True: 0, False: 10]
  ------------------
 1475|      0|                PyErr_Format(PyExc_AttributeError,
 1476|      0|                            "cannot access submodule '%U' of module '%U' "
 1477|      0|                            "(most likely due to a circular import)",
 1478|      0|                            name, mod_name);
 1479|      0|            }
 1480|     10|            else if (rc == 0) {
  ------------------
  |  Branch (1480:22): [True: 10, False: 0]
  ------------------
 1481|     10|                PyErr_Format(PyExc_AttributeError,
 1482|     10|                            "module '%U' has no attribute '%U'",
 1483|     10|                            mod_name, name);
 1484|     10|            }
 1485|     10|        }
 1486|     10|    }
 1487|       |
 1488|     10|done:
 1489|     10|    Py_XDECREF(origin);
  ------------------
  |  |  524|     10|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     10|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1490|     10|    Py_DECREF(spec);
  ------------------
  |  |  430|     10|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     10|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1491|     10|    Py_DECREF(mod_name);
  ------------------
  |  |  430|     10|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     10|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1492|       |    return NULL;
 1493|     10|}
_Py_module_getattro:
 1498|  1.00k|{
 1499|  1.00k|    PyModuleObject *m = _PyModule_CAST(self);
  ------------------
  |  |   24|  1.00k|    (assert(PyModule_Check(op)), _Py_CAST(PyModuleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|  1.00k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (1499:25): [True: 1.00k, False: 0]
  ------------------
 1500|      0|    return _Py_module_getattro_impl(m, name, 0);
 1501|  1.00k|}
moduleobject.c:module_dict_watcher:
  206|  2.37k|{
  207|  2.37k|    assert(PyDict_Check(dict));
  ------------------
  |  Branch (207:5): [True: 2.37k, False: 0]
  ------------------
  208|       |    // Only if a new lazy object shows up do we need to clear the dictionary. If
  209|       |    // this is adding a new key then the version will be reset anyway.
  210|  2.37k|    if (event == PyDict_EVENT_MODIFIED &&
  ------------------
  |  Branch (210:9): [True: 169, False: 2.20k]
  ------------------
  211|    169|        new_value != NULL &&
  ------------------
  |  Branch (211:9): [True: 169, False: 0]
  ------------------
  212|    169|        PyLazyImport_CheckExact(new_value)) {
  ------------------
  |  |   15|    169|#define PyLazyImport_CheckExact(op) Py_IS_TYPE((op), &PyLazyImport_Type)
  |  |  ------------------
  |  |  |  |  215|    169|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    169|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    169|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 169]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  213|      0|        _PyDict_ClearKeysVersionLockHeld(dict);
  214|      0|    }
  215|  2.37k|    return 0;
  216|  2.37k|}
moduleobject.c:new_module_notrack:
  173|     32|{
  174|     32|    PyModuleObject *m;
  175|     32|    m = (PyModuleObject *)_PyType_AllocNoTrack(mt, 0);
  176|     32|    if (m == NULL)
  ------------------
  |  Branch (176:9): [True: 0, False: 32]
  ------------------
  177|      0|        return NULL;
  178|     32|    m->md_state = NULL;
  179|     32|    m->md_weaklist = NULL;
  180|     32|    m->md_name = NULL;
  181|     32|    m->md_token_is_def = false;
  182|       |#ifdef Py_GIL_DISABLED
  183|       |    m->md_requires_gil = true;
  184|       |#endif
  185|     32|    m->md_state_size = 0;
  186|     32|    m->md_state_traverse = NULL;
  187|     32|    m->md_state_clear = NULL;
  188|     32|    m->md_state_free = NULL;
  189|     32|    m->md_exec = NULL;
  190|     32|    m->md_token = NULL;
  191|     32|    m->md_dict = PyDict_New();
  192|     32|    if (m->md_dict == NULL) {
  ------------------
  |  Branch (192:9): [True: 0, False: 32]
  ------------------
  193|      0|        Py_DECREF(m);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  194|      0|        return NULL;
  195|      0|    }
  196|     32|    return m;
  197|     32|}
moduleobject.c:module_init_dict:
  149|     32|{
  150|     32|    assert(md_dict != NULL);
  ------------------
  |  Branch (150:5): [True: 32, False: 0]
  ------------------
  151|     32|    if (doc == NULL)
  ------------------
  |  Branch (151:9): [True: 18, False: 14]
  ------------------
  152|     18|        doc = Py_None;
  ------------------
  |  |  616|     18|#  define Py_None (&_Py_NoneStruct)
  ------------------
  153|       |
  154|     32|    if (PyDict_SetItem(md_dict, &_Py_ID(__name__), name) != 0)
  ------------------
  |  |  917|     32|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     32|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     32|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (154:9): [True: 0, False: 32]
  ------------------
  155|      0|        return -1;
  156|     32|    if (PyDict_SetItem(md_dict, &_Py_ID(__doc__), doc) != 0)
  ------------------
  |  |  917|     32|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     32|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     32|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (156:9): [True: 0, False: 32]
  ------------------
  157|      0|        return -1;
  158|     32|    if (PyDict_SetItem(md_dict, &_Py_ID(__package__), Py_None) != 0)
  ------------------
  |  |  917|     32|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     32|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     32|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  if (PyDict_SetItem(md_dict, &_Py_ID(__package__), Py_None) != 0)
  ------------------
  |  |  616|     32|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (158:9): [True: 0, False: 32]
  ------------------
  159|      0|        return -1;
  160|     32|    if (PyDict_SetItem(md_dict, &_Py_ID(__loader__), Py_None) != 0)
  ------------------
  |  |  917|     32|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     32|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     32|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  if (PyDict_SetItem(md_dict, &_Py_ID(__loader__), Py_None) != 0)
  ------------------
  |  |  616|     32|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (160:9): [True: 0, False: 32]
  ------------------
  161|      0|        return -1;
  162|     32|    if (PyDict_SetItem(md_dict, &_Py_ID(__spec__), Py_None) != 0)
  ------------------
  |  |  917|     32|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     32|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     32|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  if (PyDict_SetItem(md_dict, &_Py_ID(__spec__), Py_None) != 0)
  ------------------
  |  |  616|     32|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (162:9): [True: 0, False: 32]
  ------------------
  163|      0|        return -1;
  164|     32|    if (PyUnicode_CheckExact(name)) {
  ------------------
  |  |  104|     32|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  ------------------
  |  |  |  |  215|     32|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     32|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     32|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 32, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  165|     32|        Py_XSETREF(mod->md_name, Py_NewRef(name));
  ------------------
  |  |  374|     32|    do { \
  |  |  375|     32|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|     32|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  376|     32|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|     32|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  377|     32|        *_tmp_dst_ptr = (src); \
  |  |  378|     32|        Py_XDECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  524|     32|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     32|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     32|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  379|     32|    } while (0)
  |  |  ------------------
  |  |  |  Branch (379:14): [Folded, False: 32]
  |  |  ------------------
  ------------------
  166|     32|    }
  167|       |
  168|     32|    return 0;
  169|     32|}
moduleobject.c:track_module:
  229|     32|{
  230|     32|    _PyDict_EnablePerThreadRefcounting(m->md_dict);
  231|     32|    _PyObject_SetDeferredRefcount((PyObject *)m);
  232|     32|    PyDict_Watch(MODULE_WATCHER_ID, m->md_dict);
  ------------------
  |  |  294|     32|#define MODULE_WATCHER_ID       2
  ------------------
  233|     32|    PyObject_GC_Track(m);
  234|     32|}
moduleobject.c:check_api_version:
  280|     16|{
  281|     16|    if (module_api_version != PYTHON_API_VERSION && module_api_version != PYTHON_ABI_VERSION) {
  ------------------
  |  |   59|     32|#define PYTHON_API_VERSION 1013
  ------------------
                  if (module_api_version != PYTHON_API_VERSION && module_api_version != PYTHON_ABI_VERSION) {
  ------------------
  |  |   61|      0|#define PYTHON_ABI_VERSION 3
  ------------------
  |  Branch (281:9): [True: 0, False: 16]
  |  Branch (281:53): [True: 0, False: 0]
  ------------------
  282|      0|        int err;
  283|      0|        err = PyErr_WarnFormat(PyExc_RuntimeWarning, 1,
  284|      0|            "Python C API version mismatch for module %.100s: "
  285|      0|            "This Python has API version %d, module %.100s has version %d.",
  286|      0|             name,
  287|      0|             PYTHON_API_VERSION, name, module_api_version);
  ------------------
  |  |   59|      0|#define PYTHON_API_VERSION 1013
  ------------------
  288|      0|        if (err)
  ------------------
  |  Branch (288:13): [True: 0, False: 0]
  ------------------
  289|      0|            return 0;
  290|      0|    }
  291|     16|    return 1;
  292|     16|}
moduleobject.c:module_copy_members_from_deflike:
  338|     16|{
  339|     16|    md->md_state_size = def_like->m_size;
  340|     16|    md->md_state_traverse = def_like->m_traverse;
  341|     16|    md->md_state_clear = def_like->m_clear;
  342|     16|    md->md_state_free = def_like->m_free;
  343|     16|}
moduleobject.c:module_from_slots_and_spec:
  408|     12|{
  409|     12|    createfunc_t create = NULL;
  410|     12|    PyObject *nameobj;
  411|     12|    PyObject *m = NULL;
  412|     12|    uint64_t multiple_interpreters = (uint64_t)Py_MOD_MULTIPLE_INTERPRETERS_SUPPORTED;
  ------------------
  |  |   81|     12|#  define Py_MOD_MULTIPLE_INTERPRETERS_SUPPORTED ((void *)1)
  ------------------
  413|     12|    bool requires_gil = true;
  414|     12|    const char *name;
  415|     12|    int ret;
  416|     12|    void *token = NULL;
  417|     12|    _Py_modexecfunc m_exec = NULL;
  418|     12|    PyInterpreterState *interp = _PyInterpreterState_GET();
  419|       |
  420|     12|    nameobj = PyObject_GetAttrString(spec, "name");
  421|     12|    if (nameobj == NULL) {
  ------------------
  |  Branch (421:9): [True: 0, False: 12]
  ------------------
  422|      0|        return NULL;
  423|      0|    }
  424|     12|    name = PyUnicode_AsUTF8(nameobj);
  425|     12|    if (name == NULL) {
  ------------------
  |  Branch (425:9): [True: 0, False: 12]
  ------------------
  426|      0|        goto error;
  427|      0|    }
  428|       |
  429|     12|    if (!check_api_version(name, module_api_version)) {
  ------------------
  |  Branch (429:9): [True: 0, False: 12]
  ------------------
  430|      0|        goto error;
  431|      0|    }
  432|       |
  433|     12|    _PySlotIterator it;
  434|       |
  435|     12|    PyModuleDef _dummy_def = {0};
  436|     12|    PyModuleDef *def_like;
  437|     12|    if (slots) {
  ------------------
  |  Branch (437:9): [True: 0, False: 12]
  ------------------
  438|      0|        assert(!original_def);
  ------------------
  |  Branch (438:9): [True: 0, False: 0]
  ------------------
  439|      0|        def_like = &_dummy_def;
  440|      0|         _PySlotIterator_Init(&it, slots, _PySlot_KIND_MOD);
  441|      0|    }
  442|     12|    else {
  443|     12|        assert(original_def);
  ------------------
  |  Branch (443:9): [True: 12, False: 0]
  ------------------
  444|     12|        def_like = original_def;
  445|     12|         _PySlotIterator_InitLegacy(&it, def_like->m_slots, _PySlot_KIND_MOD);
  446|     12|    }
  447|     12|    it.name = name;
  448|       |
  449|     57|    while (_PySlotIterator_Next(&it)) {
  ------------------
  |  Branch (449:12): [True: 45, False: 12]
  ------------------
  450|     45|        switch (it.current.sl_id) {
  ------------------
  |  Branch (450:17): [True: 45, False: 0]
  ------------------
  451|      0|            case Py_slot_invalid:
  ------------------
  |  |   25|      0|#define Py_slot_invalid 0xffff
  ------------------
  |  Branch (451:13): [True: 0, False: 45]
  ------------------
  452|      0|                goto error;
  453|      0|            case Py_mod_create:
  ------------------
  |  |   92|      0|#define Py_mod_create _Py_SLOT_COMPAT_VALUE(1, 84)
  |  |  ------------------
  |  |  |  |    7|      0|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  |  Branch (453:13): [True: 0, False: 45]
  ------------------
  454|      0|                create = (createfunc_t)it.current.sl_func;
  455|      0|                break;
  456|     11|            case Py_mod_exec:
  ------------------
  |  |   93|     11|#define Py_mod_exec _Py_SLOT_COMPAT_VALUE(2, 85)
  |  |  ------------------
  |  |  |  |    7|     11|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  |  Branch (456:13): [True: 11, False: 34]
  ------------------
  457|     11|                if (!original_def) {
  ------------------
  |  Branch (457:21): [True: 0, False: 11]
  ------------------
  458|      0|                    if (m_exec) {
  ------------------
  |  Branch (458:25): [True: 0, False: 0]
  ------------------
  459|      0|                        PyErr_Format(
  460|      0|                            PyExc_SystemError,
  461|      0|                            "module %s has multiple Py_mod_exec slots",
  462|      0|                            name);
  463|      0|                        goto error;
  464|      0|                    }
  465|      0|                    m_exec = (_Py_modexecfunc)it.current.sl_func;
  466|      0|                }
  467|     11|                break;
  468|     12|            case Py_mod_multiple_interpreters:
  ------------------
  |  |   94|     12|#define Py_mod_multiple_interpreters _Py_SLOT_COMPAT_VALUE(3, 86)
  |  |  ------------------
  |  |  |  |    7|     12|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  |  Branch (468:13): [True: 12, False: 33]
  ------------------
  469|     12|                multiple_interpreters = it.current.sl_uint64;
  470|     12|                break;
  471|     12|            case Py_mod_gil:
  ------------------
  |  |   95|     12|#define Py_mod_gil _Py_SLOT_COMPAT_VALUE(4, 87)
  |  |  ------------------
  |  |  |  |    7|     12|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  |  Branch (471:13): [True: 12, False: 33]
  ------------------
  472|     12|                {
  473|     12|                    uint64_t val = it.current.sl_uint64;
  474|     12|                    requires_gil = (val != (uint64_t)Py_MOD_GIL_NOT_USED);
  ------------------
  |  |   88|     12|#  define Py_MOD_GIL_NOT_USED ((void *)1)
  ------------------
  475|     12|                }
  476|     12|                break;
  477|     10|            case Py_mod_abi:
  ------------------
  |  |  117|     10|#define Py_mod_abi 109
  ------------------
  |  Branch (477:13): [True: 10, False: 35]
  ------------------
  478|     10|                if (PyABIInfo_Check(it.current.sl_ptr, name) < 0) {
  ------------------
  |  Branch (478:21): [True: 0, False: 10]
  ------------------
  479|      0|                    goto error;
  480|      0|                }
  481|     10|                break;
  482|     10|            case Py_mod_token:
  ------------------
  |  |  118|      0|#define Py_mod_token 110
  ------------------
  |  Branch (482:13): [True: 0, False: 45]
  ------------------
  483|      0|                if (original_def && original_def != it.current.sl_ptr) {
  ------------------
  |  Branch (483:21): [True: 0, False: 0]
  |  Branch (483:37): [True: 0, False: 0]
  ------------------
  484|      0|                    PyErr_Format(
  485|      0|                        PyExc_SystemError,
  486|      0|                        "module %s: arbitrary Py_mod_token not "
  487|      0|                        "allowed with PyModuleDef",
  488|      0|                        name);
  489|      0|                    goto error;
  490|      0|                }
  491|      0|                token = it.current.sl_ptr;
  492|      0|                break;
  493|       |            // Common case: Copy a PEP 793 slot to def_like
  494|      0|#define DEF_SLOT_CASE(SLOT, TYPE, SL_MEMBER, MEMBER)                        \
  495|      0|            case SLOT:                                                      \
  496|      0|                do {                                                        \
  497|      0|                    if (original_def) {                                     \
  498|      0|                        TYPE orig_value = (TYPE)original_def->MEMBER;       \
  499|      0|                        TYPE new_value = (TYPE)it.current.SL_MEMBER;        \
  500|      0|                        if (orig_value != new_value) {                      \
  501|      0|                            PyErr_Format(                                   \
  502|      0|                                PyExc_SystemError,                          \
  503|      0|                                "module %s: %s conflicts with "             \
  504|      0|                                "PyModuleDef." #MEMBER,                     \
  505|      0|                                name, _PySlot_GetName(it.current.sl_id));   \
  506|      0|                            goto error;                                     \
  507|      0|                        }                                                   \
  508|      0|                    }                                                       \
  509|      0|                    (def_like->MEMBER) = (TYPE)it.current.SL_MEMBER;        \
  510|      0|                } while (0);                                                \
  511|      0|                break;                                                      \
  512|       |            /////////////////////////////////////////////////////////////////
  513|      0|            DEF_SLOT_CASE(Py_mod_name, char*, sl_ptr, m_name)
  ------------------
  |  |  495|      0|            case SLOT:                                                      \
  |  |  ------------------
  |  |  |  Branch (495:13): [True: 0, False: 45]
  |  |  ------------------
  |  |  496|      0|                do {                                                        \
  |  |  497|      0|                    if (original_def) {                                     \
  |  |  ------------------
  |  |  |  Branch (497:25): [True: 0, False: 0]
  |  |  ------------------
  |  |  498|      0|                        TYPE orig_value = (TYPE)original_def->MEMBER;       \
  |  |  499|      0|                        TYPE new_value = (TYPE)it.current.SL_MEMBER;        \
  |  |  500|      0|                        if (orig_value != new_value) {                      \
  |  |  ------------------
  |  |  |  Branch (500:29): [True: 0, False: 0]
  |  |  ------------------
  |  |  501|      0|                            PyErr_Format(                                   \
  |  |  502|      0|                                PyExc_SystemError,                          \
  |  |  503|      0|                                "module %s: %s conflicts with "             \
  |  |  504|      0|                                "PyModuleDef." #MEMBER,                     \
  |  |  505|      0|                                name, _PySlot_GetName(it.current.sl_id));   \
  |  |  506|      0|                            goto error;                                     \
  |  |  507|      0|                        }                                                   \
  |  |  508|      0|                    }                                                       \
  |  |  509|      0|                    (def_like->MEMBER) = (TYPE)it.current.SL_MEMBER;        \
  |  |  510|      0|                } while (0);                                                \
  |  |  ------------------
  |  |  |  Branch (510:26): [Folded, False: 0]
  |  |  ------------------
  |  |  511|      0|                break;                                                      \
  ------------------
  514|      0|            DEF_SLOT_CASE(Py_mod_doc, char*, sl_ptr, m_doc)
  ------------------
  |  |  495|      0|            case SLOT:                                                      \
  |  |  ------------------
  |  |  |  Branch (495:13): [True: 0, False: 45]
  |  |  ------------------
  |  |  496|      0|                do {                                                        \
  |  |  497|      0|                    if (original_def) {                                     \
  |  |  ------------------
  |  |  |  Branch (497:25): [True: 0, False: 0]
  |  |  ------------------
  |  |  498|      0|                        TYPE orig_value = (TYPE)original_def->MEMBER;       \
  |  |  499|      0|                        TYPE new_value = (TYPE)it.current.SL_MEMBER;        \
  |  |  500|      0|                        if (orig_value != new_value) {                      \
  |  |  ------------------
  |  |  |  Branch (500:29): [True: 0, False: 0]
  |  |  ------------------
  |  |  501|      0|                            PyErr_Format(                                   \
  |  |  502|      0|                                PyExc_SystemError,                          \
  |  |  503|      0|                                "module %s: %s conflicts with "             \
  |  |  504|      0|                                "PyModuleDef." #MEMBER,                     \
  |  |  505|      0|                                name, _PySlot_GetName(it.current.sl_id));   \
  |  |  506|      0|                            goto error;                                     \
  |  |  507|      0|                        }                                                   \
  |  |  508|      0|                    }                                                       \
  |  |  509|      0|                    (def_like->MEMBER) = (TYPE)it.current.SL_MEMBER;        \
  |  |  510|      0|                } while (0);                                                \
  |  |  ------------------
  |  |  |  Branch (510:26): [Folded, False: 0]
  |  |  ------------------
  |  |  511|      0|                break;                                                      \
  ------------------
  515|      0|            DEF_SLOT_CASE(Py_mod_state_size, Py_ssize_t, sl_size, m_size)
  ------------------
  |  |  495|      0|            case SLOT:                                                      \
  |  |  ------------------
  |  |  |  Branch (495:13): [True: 0, False: 45]
  |  |  ------------------
  |  |  496|      0|                do {                                                        \
  |  |  497|      0|                    if (original_def) {                                     \
  |  |  ------------------
  |  |  |  Branch (497:25): [True: 0, False: 0]
  |  |  ------------------
  |  |  498|      0|                        TYPE orig_value = (TYPE)original_def->MEMBER;       \
  |  |  499|      0|                        TYPE new_value = (TYPE)it.current.SL_MEMBER;        \
  |  |  500|      0|                        if (orig_value != new_value) {                      \
  |  |  ------------------
  |  |  |  Branch (500:29): [True: 0, False: 0]
  |  |  ------------------
  |  |  501|      0|                            PyErr_Format(                                   \
  |  |  502|      0|                                PyExc_SystemError,                          \
  |  |  503|      0|                                "module %s: %s conflicts with "             \
  |  |  504|      0|                                "PyModuleDef." #MEMBER,                     \
  |  |  505|      0|                                name, _PySlot_GetName(it.current.sl_id));   \
  |  |  506|      0|                            goto error;                                     \
  |  |  507|      0|                        }                                                   \
  |  |  508|      0|                    }                                                       \
  |  |  509|      0|                    (def_like->MEMBER) = (TYPE)it.current.SL_MEMBER;        \
  |  |  510|      0|                } while (0);                                                \
  |  |  ------------------
  |  |  |  Branch (510:26): [Folded, False: 0]
  |  |  ------------------
  |  |  511|      0|                break;                                                      \
  ------------------
  516|      0|            DEF_SLOT_CASE(Py_mod_methods, PyMethodDef*, sl_ptr, m_methods)
  ------------------
  |  |  495|      0|            case SLOT:                                                      \
  |  |  ------------------
  |  |  |  Branch (495:13): [True: 0, False: 45]
  |  |  ------------------
  |  |  496|      0|                do {                                                        \
  |  |  497|      0|                    if (original_def) {                                     \
  |  |  ------------------
  |  |  |  Branch (497:25): [True: 0, False: 0]
  |  |  ------------------
  |  |  498|      0|                        TYPE orig_value = (TYPE)original_def->MEMBER;       \
  |  |  499|      0|                        TYPE new_value = (TYPE)it.current.SL_MEMBER;        \
  |  |  500|      0|                        if (orig_value != new_value) {                      \
  |  |  ------------------
  |  |  |  Branch (500:29): [True: 0, False: 0]
  |  |  ------------------
  |  |  501|      0|                            PyErr_Format(                                   \
  |  |  502|      0|                                PyExc_SystemError,                          \
  |  |  503|      0|                                "module %s: %s conflicts with "             \
  |  |  504|      0|                                "PyModuleDef." #MEMBER,                     \
  |  |  505|      0|                                name, _PySlot_GetName(it.current.sl_id));   \
  |  |  506|      0|                            goto error;                                     \
  |  |  507|      0|                        }                                                   \
  |  |  508|      0|                    }                                                       \
  |  |  509|      0|                    (def_like->MEMBER) = (TYPE)it.current.SL_MEMBER;        \
  |  |  510|      0|                } while (0);                                                \
  |  |  ------------------
  |  |  |  Branch (510:26): [Folded, False: 0]
  |  |  ------------------
  |  |  511|      0|                break;                                                      \
  ------------------
  517|      0|            DEF_SLOT_CASE(Py_mod_state_traverse,
  ------------------
  |  |  495|      0|            case SLOT:                                                      \
  |  |  ------------------
  |  |  |  Branch (495:13): [True: 0, False: 45]
  |  |  ------------------
  |  |  496|      0|                do {                                                        \
  |  |  497|      0|                    if (original_def) {                                     \
  |  |  ------------------
  |  |  |  Branch (497:25): [True: 0, False: 0]
  |  |  ------------------
  |  |  498|      0|                        TYPE orig_value = (TYPE)original_def->MEMBER;       \
  |  |  499|      0|                        TYPE new_value = (TYPE)it.current.SL_MEMBER;        \
  |  |  500|      0|                        if (orig_value != new_value) {                      \
  |  |  ------------------
  |  |  |  Branch (500:29): [True: 0, False: 0]
  |  |  ------------------
  |  |  501|      0|                            PyErr_Format(                                   \
  |  |  502|      0|                                PyExc_SystemError,                          \
  |  |  503|      0|                                "module %s: %s conflicts with "             \
  |  |  504|      0|                                "PyModuleDef." #MEMBER,                     \
  |  |  505|      0|                                name, _PySlot_GetName(it.current.sl_id));   \
  |  |  506|      0|                            goto error;                                     \
  |  |  507|      0|                        }                                                   \
  |  |  508|      0|                    }                                                       \
  |  |  509|      0|                    (def_like->MEMBER) = (TYPE)it.current.SL_MEMBER;        \
  |  |  510|      0|                } while (0);                                                \
  |  |  ------------------
  |  |  |  Branch (510:26): [Folded, False: 0]
  |  |  ------------------
  |  |  511|      0|                break;                                                      \
  ------------------
  518|      0|                          traverseproc, sl_func, m_traverse)
  519|      0|            DEF_SLOT_CASE(Py_mod_state_clear, inquiry, sl_func, m_clear)
  ------------------
  |  |  495|      0|            case SLOT:                                                      \
  |  |  ------------------
  |  |  |  Branch (495:13): [True: 0, False: 45]
  |  |  ------------------
  |  |  496|      0|                do {                                                        \
  |  |  497|      0|                    if (original_def) {                                     \
  |  |  ------------------
  |  |  |  Branch (497:25): [True: 0, False: 0]
  |  |  ------------------
  |  |  498|      0|                        TYPE orig_value = (TYPE)original_def->MEMBER;       \
  |  |  499|      0|                        TYPE new_value = (TYPE)it.current.SL_MEMBER;        \
  |  |  500|      0|                        if (orig_value != new_value) {                      \
  |  |  ------------------
  |  |  |  Branch (500:29): [True: 0, False: 0]
  |  |  ------------------
  |  |  501|      0|                            PyErr_Format(                                   \
  |  |  502|      0|                                PyExc_SystemError,                          \
  |  |  503|      0|                                "module %s: %s conflicts with "             \
  |  |  504|      0|                                "PyModuleDef." #MEMBER,                     \
  |  |  505|      0|                                name, _PySlot_GetName(it.current.sl_id));   \
  |  |  506|      0|                            goto error;                                     \
  |  |  507|      0|                        }                                                   \
  |  |  508|      0|                    }                                                       \
  |  |  509|      0|                    (def_like->MEMBER) = (TYPE)it.current.SL_MEMBER;        \
  |  |  510|      0|                } while (0);                                                \
  |  |  ------------------
  |  |  |  Branch (510:26): [Folded, False: 0]
  |  |  ------------------
  |  |  511|      0|                break;                                                      \
  ------------------
  520|     45|            DEF_SLOT_CASE(Py_mod_state_free, freefunc, sl_func, m_free)
  ------------------
  |  |  495|      0|            case SLOT:                                                      \
  |  |  ------------------
  |  |  |  Branch (495:13): [True: 0, False: 45]
  |  |  ------------------
  |  |  496|      0|                do {                                                        \
  |  |  497|      0|                    if (original_def) {                                     \
  |  |  ------------------
  |  |  |  Branch (497:25): [True: 0, False: 0]
  |  |  ------------------
  |  |  498|      0|                        TYPE orig_value = (TYPE)original_def->MEMBER;       \
  |  |  499|      0|                        TYPE new_value = (TYPE)it.current.SL_MEMBER;        \
  |  |  500|      0|                        if (orig_value != new_value) {                      \
  |  |  ------------------
  |  |  |  Branch (500:29): [True: 0, False: 0]
  |  |  ------------------
  |  |  501|      0|                            PyErr_Format(                                   \
  |  |  502|      0|                                PyExc_SystemError,                          \
  |  |  503|      0|                                "module %s: %s conflicts with "             \
  |  |  504|      0|                                "PyModuleDef." #MEMBER,                     \
  |  |  505|      0|                                name, _PySlot_GetName(it.current.sl_id));   \
  |  |  506|      0|                            goto error;                                     \
  |  |  507|      0|                        }                                                   \
  |  |  508|      0|                    }                                                       \
  |  |  509|      0|                    (def_like->MEMBER) = (TYPE)it.current.SL_MEMBER;        \
  |  |  510|      0|                } while (0);                                                \
  |  |  ------------------
  |  |  |  Branch (510:26): [Folded, False: 0]
  |  |  ------------------
  |  |  511|      0|                break;                                                      \
  ------------------
  521|     45|#undef DEF_SLOT_CASE
  522|     45|        }
  523|     45|    }
  524|     12|    if (!original_def && !_PySlotIterator_SawSlot(&it, Py_mod_abi)) {
  ------------------
  |  |  117|      0|#define Py_mod_abi 109
  ------------------
  |  Branch (524:9): [True: 0, False: 12]
  |  Branch (524:26): [True: 0, False: 0]
  ------------------
  525|      0|        PyErr_Format(
  526|      0|            PyExc_SystemError,
  527|      0|            "module %s does not define Py_mod_abi,"
  528|      0|            " which is mandatory for modules defined from slots only.",
  529|      0|            name);
  530|      0|        goto error;
  531|      0|    }
  532|       |
  533|       |#ifdef Py_GIL_DISABLED
  534|       |    // For modules created directly from slots (not from a def), we enable
  535|       |    // the GIL here (pairing `_PyEval_EnableGILTransient` with
  536|       |    // an immediate `_PyImport_EnableGILAndWarn`).
  537|       |    // For modules created from a def, the caller is responsible for this.
  538|       |    if (!original_def && requires_gil) {
  539|       |        PyThreadState *tstate = _PyThreadState_GET();
  540|       |        if (_PyEval_EnableGILTransient(tstate) < 0) {
  541|       |            goto error;
  542|       |        }
  543|       |        if (_PyImport_EnableGILAndWarn(tstate, nameobj) < 0) {
  544|       |            goto error;
  545|       |        }
  546|       |    }
  547|       |#endif
  548|       |
  549|     12|    if (def_like->m_size < 0) {
  ------------------
  |  Branch (549:9): [True: 0, False: 12]
  ------------------
  550|      0|        PyErr_Format(
  551|      0|            PyExc_SystemError,
  552|      0|            "module %s: m_size may not be negative for multi-phase initialization",
  553|      0|            name);
  554|      0|        goto error;
  555|      0|    }
  556|       |
  557|       |    /* By default, multi-phase init modules are expected
  558|       |       to work under multiple interpreters. */
  559|     12|    if (multiple_interpreters == (int64_t)(intptr_t)Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED) {
  ------------------
  |  |   80|     12|#  define Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED ((void *)0)
  ------------------
  |  Branch (559:9): [True: 0, False: 12]
  ------------------
  560|      0|        if (!_Py_IsMainInterpreter(interp)
  ------------------
  |  Branch (560:13): [True: 0, False: 0]
  ------------------
  561|      0|            && _PyImport_CheckSubinterpIncompatibleExtensionAllowed(name) < 0)
  ------------------
  |  Branch (561:16): [True: 0, False: 0]
  ------------------
  562|      0|        {
  563|      0|            goto error;
  564|      0|        }
  565|      0|    }
  566|     12|    else if (multiple_interpreters != (int64_t)(intptr_t)Py_MOD_PER_INTERPRETER_GIL_SUPPORTED
  ------------------
  |  |   82|     24|#  define Py_MOD_PER_INTERPRETER_GIL_SUPPORTED ((void *)2)
  ------------------
  |  Branch (566:14): [True: 0, False: 12]
  ------------------
  567|      0|             && interp->ceval.own_gil
  ------------------
  |  Branch (567:17): [True: 0, False: 0]
  ------------------
  568|      0|             && !_Py_IsMainInterpreter(interp)
  ------------------
  |  Branch (568:17): [True: 0, False: 0]
  ------------------
  569|      0|             && _PyImport_CheckSubinterpIncompatibleExtensionAllowed(name) < 0)
  ------------------
  |  Branch (569:17): [True: 0, False: 0]
  ------------------
  570|      0|    {
  571|      0|        goto error;
  572|      0|    }
  573|       |
  574|     12|    if (create) {
  ------------------
  |  Branch (574:9): [True: 0, False: 12]
  ------------------
  575|      0|        m = create(spec, original_def);
  576|      0|        if (m == NULL) {
  ------------------
  |  Branch (576:13): [True: 0, False: 0]
  ------------------
  577|      0|            if (!PyErr_Occurred()) {
  ------------------
  |  Branch (577:17): [True: 0, False: 0]
  ------------------
  578|      0|                PyErr_Format(
  579|      0|                    PyExc_SystemError,
  580|      0|                    "creation of module %s failed without setting an exception",
  581|      0|                    name);
  582|      0|            }
  583|      0|            goto error;
  584|      0|        } else {
  585|      0|            if (PyErr_Occurred()) {
  ------------------
  |  Branch (585:17): [True: 0, False: 0]
  ------------------
  586|      0|                _PyErr_FormatFromCause(
  587|      0|                    PyExc_SystemError,
  588|      0|                    "creation of module %s raised unreported exception",
  589|      0|                    name);
  590|      0|                goto error;
  591|      0|            }
  592|      0|        }
  593|     12|    } else {
  594|     12|        m = PyModule_NewObject(nameobj);
  595|     12|        if (m == NULL) {
  ------------------
  |  Branch (595:13): [True: 0, False: 12]
  ------------------
  596|      0|            goto error;
  597|      0|        }
  598|     12|    }
  599|       |
  600|     12|    if (PyModule_Check(m)) {
  ------------------
  |  |   12|     12|#define PyModule_Check(op) PyObject_TypeCheck((op), &PyModule_Type)
  |  |  ------------------
  |  |  |  |  378|     12|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     12|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     12|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (378:40): [True: 12, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  601|     12|        PyModuleObject *mod = (PyModuleObject*)m;
  602|     12|        mod->md_state = NULL;
  603|     12|        module_copy_members_from_deflike(mod, def_like);
  604|     12|        if (original_def) {
  ------------------
  |  Branch (604:13): [True: 12, False: 0]
  ------------------
  605|     12|            assert (!token || token == original_def);
  ------------------
  |  Branch (605:13): [True: 12, False: 0]
  |  Branch (605:13): [True: 0, False: 0]
  ------------------
  606|     12|            mod->md_token = original_def;
  607|     12|            mod->md_token_is_def = 1;
  608|     12|        }
  609|      0|        else {
  610|      0|            mod->md_token = token;
  611|      0|        }
  612|       |#ifdef Py_GIL_DISABLED
  613|       |        mod->md_requires_gil = requires_gil;
  614|       |#else
  615|     12|        (void)requires_gil;
  616|     12|#endif
  617|     12|        mod->md_exec = m_exec;
  618|     12|    } else {
  619|      0|        if (def_like->m_size > 0 || def_like->m_traverse || def_like->m_clear
  ------------------
  |  Branch (619:13): [True: 0, False: 0]
  |  Branch (619:37): [True: 0, False: 0]
  |  Branch (619:61): [True: 0, False: 0]
  ------------------
  620|      0|            || def_like->m_free)
  ------------------
  |  Branch (620:16): [True: 0, False: 0]
  ------------------
  621|      0|        {
  622|      0|            PyErr_Format(
  623|      0|                PyExc_SystemError,
  624|      0|                "module %s is not a module object, but requests module state",
  625|      0|                name);
  626|      0|            goto error;
  627|      0|        }
  628|      0|        if (_PySlotIterator_SawSlot(&it, Py_mod_exec)) {
  ------------------
  |  |   93|      0|#define Py_mod_exec _Py_SLOT_COMPAT_VALUE(2, 85)
  |  |  ------------------
  |  |  |  |    7|      0|#define _Py_SLOT_COMPAT_VALUE(OLD, NEW) NEW
  |  |  ------------------
  ------------------
  |  Branch (628:13): [True: 0, False: 0]
  ------------------
  629|      0|            PyErr_Format(
  630|      0|                PyExc_SystemError,
  631|      0|                "module %s specifies execution slots, but did not create "
  632|      0|                    "a ModuleType instance",
  633|      0|                name);
  634|      0|            goto error;
  635|      0|        }
  636|      0|        if (token) {
  ------------------
  |  Branch (636:13): [True: 0, False: 0]
  ------------------
  637|      0|            PyErr_Format(
  638|      0|                PyExc_SystemError,
  639|      0|                "module %s specifies a token, but did not create "
  640|      0|                    "a ModuleType instance",
  641|      0|                name);
  642|      0|            goto error;
  643|      0|        }
  644|      0|    }
  645|       |
  646|     12|    if (def_like->m_methods != NULL) {
  ------------------
  |  Branch (646:9): [True: 12, False: 0]
  ------------------
  647|     12|        ret = _add_methods_to_object(m, nameobj, def_like->m_methods);
  648|     12|        if (ret != 0) {
  ------------------
  |  Branch (648:13): [True: 0, False: 12]
  ------------------
  649|      0|            goto error;
  650|      0|        }
  651|     12|    }
  652|       |
  653|     12|    if (def_like->m_doc != NULL) {
  ------------------
  |  Branch (653:9): [True: 11, False: 1]
  ------------------
  654|     11|        ret = PyModule_SetDocString(m, def_like->m_doc);
  655|     11|        if (ret != 0) {
  ------------------
  |  Branch (655:13): [True: 0, False: 11]
  ------------------
  656|      0|            goto error;
  657|      0|        }
  658|     11|    }
  659|       |
  660|     12|    Py_DECREF(nameobj);
  ------------------
  |  |  430|     12|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     12|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     12|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  661|     12|    return m;
  662|       |
  663|      0|error:
  664|      0|    Py_DECREF(nameobj);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  665|      0|    Py_XDECREF(m);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  666|       |    return NULL;
  667|     12|}
moduleobject.c:alloc_state:
  729|     24|{
  730|     24|    if (!PyModule_Check(module)) {
  ------------------
  |  |   12|     24|#define PyModule_Check(op) PyObject_TypeCheck((op), &PyModule_Type)
  |  |  ------------------
  |  |  |  |  378|     24|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     24|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     24|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (730:9): [True: 0, False: 24]
  ------------------
  731|      0|        PyErr_Format(PyExc_TypeError, "expected module, got %T", module);
  732|      0|        return -1;
  733|      0|    }
  734|     24|    PyModuleObject *md = (PyModuleObject*)module;
  735|       |
  736|     24|    if (md->md_state_size >= 0) {
  ------------------
  |  Branch (736:9): [True: 24, False: 0]
  ------------------
  737|     24|        if (md->md_state == NULL) {
  ------------------
  |  Branch (737:13): [True: 12, False: 12]
  ------------------
  738|       |            /* Always set a state pointer; this serves as a marker to skip
  739|       |             * multiple initialization (importlib.reload() is no-op) */
  740|     12|            md->md_state = PyMem_Malloc(md->md_state_size);
  741|     12|            if (!md->md_state) {
  ------------------
  |  Branch (741:17): [True: 0, False: 12]
  ------------------
  742|      0|                PyErr_NoMemory();
  743|      0|                return -1;
  744|      0|            }
  745|     12|            memset(md->md_state, 0, md->md_state_size);
  746|     12|        }
  747|     24|    }
  748|     24|    return 0;
  749|     24|}
moduleobject.c:run_exec_func:
  706|     11|{
  707|     11|    int ret = exec(module);
  708|     11|    if (ret != 0) {
  ------------------
  |  Branch (708:9): [True: 0, False: 11]
  ------------------
  709|      0|        if (!PyErr_Occurred()) {
  ------------------
  |  Branch (709:13): [True: 0, False: 0]
  ------------------
  710|      0|            PyErr_Format(
  711|      0|                PyExc_SystemError,
  712|      0|                "execution of %R failed without setting an exception",
  713|      0|                module);
  714|      0|        }
  715|      0|        return -1;
  716|      0|    }
  717|     11|    if (PyErr_Occurred()) {
  ------------------
  |  Branch (717:9): [True: 0, False: 11]
  ------------------
  718|      0|        _PyErr_FormatFromCause(
  719|      0|            PyExc_SystemError,
  720|      0|            "execution of module %R raised unreported exception",
  721|      0|            module);
  722|      0|        return -1;
  723|      0|    }
  724|     11|    return 0;
  725|     11|}
moduleobject.c:_add_methods_to_object:
  296|     16|{
  297|     16|    PyObject *func;
  298|     16|    PyMethodDef *fdef;
  299|       |
  300|    460|    for (fdef = functions; fdef->ml_name != NULL; fdef++) {
  ------------------
  |  Branch (300:28): [True: 444, False: 16]
  ------------------
  301|    444|        if ((fdef->ml_flags & METH_CLASS) ||
  ------------------
  |  |  104|    444|#define METH_CLASS    0x0010
  ------------------
  |  Branch (301:13): [True: 0, False: 444]
  ------------------
  302|    444|            (fdef->ml_flags & METH_STATIC)) {
  ------------------
  |  |  105|    444|#define METH_STATIC   0x0020
  ------------------
  |  Branch (302:13): [True: 0, False: 444]
  ------------------
  303|      0|            PyErr_SetString(PyExc_ValueError,
  304|      0|                            "module functions cannot set"
  305|      0|                            " METH_CLASS or METH_STATIC");
  306|      0|            return -1;
  307|      0|        }
  308|    444|        func = PyCFunction_NewEx(fdef, (PyObject*)module, name);
  ------------------
  |  |   87|    444|#define PyCFunction_NewEx(ML, SELF, MOD) PyCMethod_New((ML), (SELF), (MOD), NULL)
  ------------------
  309|    444|        if (func == NULL) {
  ------------------
  |  Branch (309:13): [True: 0, False: 444]
  ------------------
  310|      0|            return -1;
  311|      0|        }
  312|    444|        _PyObject_SetDeferredRefcount(func);
  313|    444|        if (PyObject_SetAttrString(module, fdef->ml_name, func) != 0) {
  ------------------
  |  Branch (313:13): [True: 0, False: 444]
  ------------------
  314|      0|            Py_DECREF(func);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  315|      0|            return -1;
  316|      0|        }
  317|    444|        Py_DECREF(func);
  ------------------
  |  |  430|    444|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    444|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    444|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  318|    444|    }
  319|       |
  320|     16|    return 0;
  321|     16|}
moduleobject.c:assert_def_missing_or_redundant:
   34|     34|{
   35|       |    /* We copy all relevant info into the module object.
   36|       |     * Modules created using a def keep a reference to that (statically
   37|       |     * allocated) def; the info there should match what we have in the module.
   38|       |     */
   39|     34|#ifndef NDEBUG
   40|     34|    if (m->md_token_is_def) {
  ------------------
  |  Branch (40:9): [True: 24, False: 10]
  ------------------
   41|     24|        PyModuleDef *def = (PyModuleDef *)m->md_token;
   42|     24|        assert(def);
  ------------------
  |  Branch (42:9): [True: 24, False: 0]
  ------------------
   43|     24|#define DO_ASSERT(F) assert (def->m_ ## F == m->md_state_ ## F);
   44|     24|        DO_ASSERT(size);
  ------------------
  |  |   43|     24|#define DO_ASSERT(F) assert (def->m_ ## F == m->md_state_ ## F);
  ------------------
  |  Branch (44:9): [True: 24, False: 0]
  ------------------
   45|     24|        DO_ASSERT(traverse);
  ------------------
  |  |   43|     24|#define DO_ASSERT(F) assert (def->m_ ## F == m->md_state_ ## F);
  ------------------
  |  Branch (45:9): [True: 24, False: 0]
  ------------------
   46|     24|        DO_ASSERT(clear);
  ------------------
  |  |   43|     24|#define DO_ASSERT(F) assert (def->m_ ## F == m->md_state_ ## F);
  ------------------
  |  Branch (46:9): [True: 24, False: 0]
  ------------------
   47|     24|        DO_ASSERT(free);
  ------------------
  |  |   43|     24|#define DO_ASSERT(F) assert (def->m_ ## F == m->md_state_ ## F);
  ------------------
  |  Branch (47:9): [True: 24, False: 0]
  ------------------
   48|     24|#undef DO_ASSERT
   49|     24|    }
   50|     34|#endif // NDEBUG
   51|     34|}
moduleobject.c:module_traverse:
 1505|     34|{
 1506|     34|    PyModuleObject *m = _PyModule_CAST(self);
  ------------------
  |  |   24|     34|    (assert(PyModule_Check(op)), _Py_CAST(PyModuleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|     34|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (1506:25): [True: 34, False: 0]
  ------------------
 1507|       |
 1508|      0|    assert_def_missing_or_redundant(m);
 1509|       |    /* bpo-39824: Don't call m_traverse() if m_size > 0 and md_state=NULL */
 1510|     34|    if (m->md_state_traverse && (m->md_state_size <= 0 || m->md_state != NULL))
  ------------------
  |  Branch (1510:9): [True: 8, False: 26]
  |  Branch (1510:34): [True: 0, False: 8]
  |  Branch (1510:59): [True: 8, False: 0]
  ------------------
 1511|      8|    {
 1512|      8|        int res = m->md_state_traverse((PyObject*)m, visit, arg);
 1513|      8|        if (res)
  ------------------
  |  Branch (1513:13): [True: 0, False: 8]
  ------------------
 1514|      0|            return res;
 1515|      8|    }
 1516|       |
 1517|     34|    Py_VISIT(m->md_dict);
  ------------------
  |  |  194|     34|    do {                                                                \
  |  |  195|     34|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 34, False: 0]
  |  |  ------------------
  |  |  196|     34|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|     34|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     34|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|     34|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 34]
  |  |  ------------------
  |  |  198|     34|                return vret;                                            \
  |  |  199|     34|        }                                                               \
  |  |  200|     34|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 34]
  |  |  ------------------
  ------------------
 1518|     34|    return 0;
 1519|     34|}
moduleobject.c:module_dir:
 1546|      1|{
 1547|      1|    PyObject *result = NULL;
 1548|      1|    PyObject *dict;
 1549|      1|    if (PyModule_CheckExact(self)) {
  ------------------
  |  |   13|      1|#define PyModule_CheckExact(op) Py_IS_TYPE((op), &PyModule_Type)
  |  |  ------------------
  |  |  |  |  215|      1|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1550|      1|        dict = Py_NewRef(((PyModuleObject *)self)->md_dict);
  ------------------
  |  |  550|      1|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1551|      1|    } else {
 1552|      0|        dict = PyObject_GetAttr(self, &_Py_ID(__dict__));
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1553|      0|    }
 1554|       |
 1555|      1|    if (dict != NULL) {
  ------------------
  |  Branch (1555:9): [True: 1, False: 0]
  ------------------
 1556|      1|        if (PyDict_Check(dict)) {
  ------------------
  |  |   18|      1|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      1|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1557|      1|            PyObject *dirfunc = PyDict_GetItemWithError(dict, &_Py_ID(__dir__));
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1558|      1|            if (dirfunc) {
  ------------------
  |  Branch (1558:17): [True: 0, False: 1]
  ------------------
 1559|      0|                result = _PyObject_CallNoArgs(dirfunc);
 1560|      0|            }
 1561|      1|            else if (!PyErr_Occurred()) {
  ------------------
  |  Branch (1561:22): [True: 1, False: 0]
  ------------------
 1562|      1|                result = PyDict_Keys(dict);
 1563|      1|            }
 1564|      1|        }
 1565|      0|        else {
 1566|      0|            PyErr_Format(PyExc_TypeError, "<module>.__dict__ is not a dictionary");
 1567|      0|        }
 1568|      1|    }
 1569|       |
 1570|      1|    Py_XDECREF(dict);
  ------------------
  |  |  524|      1|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1571|      1|    return result;
 1572|      1|}
moduleobject.c:module___init___impl:
 1131|     14|{
 1132|     14|    return module_init_dict(self, self->md_dict, name, doc);
 1133|     14|}
moduleobject.c:new_module:
  238|     14|{
  239|     14|    PyModuleObject *m = new_module_notrack(mt);
  240|     14|    if (m != NULL) {
  ------------------
  |  Branch (240:9): [True: 14, False: 0]
  ------------------
  241|     14|        track_module(m);
  242|     14|    }
  243|     14|    return (PyObject *)m;
  244|     14|}

_PyNamespace_New:
  323|      4|{
  324|      4|    PyObject *ns = namespace_new(&_PyNamespace_Type, NULL, NULL);
  325|      4|    if (ns == NULL)
  ------------------
  |  Branch (325:9): [True: 0, False: 4]
  ------------------
  326|      0|        return NULL;
  327|       |
  328|      4|    if (kwds == NULL)
  ------------------
  |  Branch (328:9): [True: 1, False: 3]
  ------------------
  329|      1|        return ns;
  330|      3|    if (PyDict_Update(((_PyNamespaceObject *)ns)->ns_dict, kwds) != 0) {
  ------------------
  |  Branch (330:9): [True: 0, False: 3]
  ------------------
  331|      0|        Py_DECREF(ns);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  332|      0|        return NULL;
  333|      0|    }
  334|       |
  335|      3|    return (PyObject *)ns;
  336|      3|}
namespaceobject.c:namespace_dealloc:
   84|      1|{
   85|      1|    _PyNamespaceObject *ns = _PyNamespace_CAST(op);
  ------------------
  |  |   15|      1|#define _PyNamespace_CAST(op) _Py_CAST(_PyNamespaceObject*, (op))
  |  |  ------------------
  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
   86|      1|    PyObject_GC_UnTrack(ns);
   87|      1|    Py_CLEAR(ns->ns_dict);
  ------------------
  |  |  484|      1|    do { \
  |  |  485|      1|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      1|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      1|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      1|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      1|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 1, False: 0]
  |  |  ------------------
  |  |  488|      1|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      1|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      1|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      1|        } \
  |  |  491|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
   88|      1|    Py_TYPE(ns)->tp_free((PyObject *)ns);
  ------------------
  |  |  213|      1|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   89|      1|}
namespaceobject.c:namespace_traverse:
  179|     16|{
  180|     16|    _PyNamespaceObject *ns = _PyNamespace_CAST(op);
  ------------------
  |  |   15|     16|#define _PyNamespace_CAST(op) _Py_CAST(_PyNamespaceObject*, (op))
  |  |  ------------------
  |  |  |  |   37|     16|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  181|     16|    Py_VISIT(ns->ns_dict);
  ------------------
  |  |  194|     16|    do {                                                                \
  |  |  195|     16|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 16, False: 0]
  |  |  ------------------
  |  |  196|     16|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|     16|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     16|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|     16|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 16]
  |  |  ------------------
  |  |  198|     16|                return vret;                                            \
  |  |  199|     16|        }                                                               \
  |  |  200|     16|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 16]
  |  |  ------------------
  ------------------
  182|     16|    return 0;
  183|     16|}
namespaceobject.c:namespace_init:
   48|     15|{
   49|     15|    _PyNamespaceObject *ns = _PyNamespace_CAST(op);
  ------------------
  |  |   15|     15|#define _PyNamespace_CAST(op) _Py_CAST(_PyNamespaceObject*, (op))
  |  |  ------------------
  |  |  |  |   37|     15|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
   50|     15|    PyObject *arg = NULL;
   51|     15|    if (!PyArg_UnpackTuple(args, _PyType_Name(Py_TYPE(ns)), 0, 1, &arg)) {
  ------------------
  |  |  213|     15|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     15|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     15|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (51:9): [True: 0, False: 15]
  ------------------
   52|      0|        return -1;
   53|      0|    }
   54|     15|    if (arg != NULL) {
  ------------------
  |  Branch (54:9): [True: 0, False: 15]
  ------------------
   55|      0|        PyObject *dict;
   56|      0|        if (PyDict_CheckExact(arg)) {
  ------------------
  |  |   19|      0|#define PyDict_CheckExact(op) Py_IS_TYPE((op), &PyDict_Type)
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   57|      0|            dict = Py_NewRef(arg);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   58|      0|        }
   59|      0|        else {
   60|      0|            dict = PyObject_CallOneArg((PyObject *)&PyDict_Type, arg);
   61|      0|            if (dict == NULL) {
  ------------------
  |  Branch (61:17): [True: 0, False: 0]
  ------------------
   62|      0|                return -1;
   63|      0|            }
   64|      0|        }
   65|      0|        int err = (!PyArg_ValidateKeywordArguments(dict) ||
  ------------------
  |  Branch (65:20): [True: 0, False: 0]
  ------------------
   66|      0|                   PyDict_Update(ns->ns_dict, dict) < 0);
  ------------------
  |  Branch (66:20): [True: 0, False: 0]
  ------------------
   67|      0|        Py_DECREF(dict);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   68|      0|        if (err) {
  ------------------
  |  Branch (68:13): [True: 0, False: 0]
  ------------------
   69|      0|            return -1;
   70|      0|        }
   71|      0|    }
   72|     15|    if (kwds == NULL) {
  ------------------
  |  Branch (72:9): [True: 0, False: 15]
  ------------------
   73|      0|        return 0;
   74|      0|    }
   75|     15|    if (!PyArg_ValidateKeywordArguments(kwds)) {
  ------------------
  |  Branch (75:9): [True: 0, False: 15]
  ------------------
   76|      0|        return -1;
   77|      0|    }
   78|     15|    return PyDict_Update(ns->ns_dict, kwds);
   79|     15|}
namespaceobject.c:namespace_new:
   29|     19|{
   30|     19|    PyObject *self;
   31|       |
   32|     19|    assert(type != NULL && type->tp_alloc != NULL);
  ------------------
  |  Branch (32:5): [True: 19, False: 0]
  |  Branch (32:5): [True: 19, False: 0]
  ------------------
   33|     19|    self = type->tp_alloc(type, 0);
   34|     19|    if (self != NULL) {
  ------------------
  |  Branch (34:9): [True: 19, False: 0]
  ------------------
   35|     19|        _PyNamespaceObject *ns = (_PyNamespaceObject *)self;
   36|     19|        ns->ns_dict = PyDict_New();
   37|     19|        if (ns->ns_dict == NULL) {
  ------------------
  |  Branch (37:13): [True: 0, False: 19]
  ------------------
   38|      0|            Py_DECREF(ns);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   39|      0|            return NULL;
   40|      0|        }
   41|     19|    }
   42|     19|    return self;
   43|     19|}

_Py_DecRef:
  356|    275|{
  357|    275|    Py_DECREF(o);
  ------------------
  |  |  430|    275|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    275|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    275|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  358|    275|}
_PyObject_New:
  555|     85|{
  556|     85|    PyObject *op = (PyObject *) PyObject_Malloc(_PyObject_SIZE(tp));
  557|     85|    if (op == NULL) {
  ------------------
  |  Branch (557:9): [True: 0, False: 85]
  ------------------
  558|      0|        return PyErr_NoMemory();
  559|      0|    }
  560|     85|    _PyObject_Init(op, tp);
  561|     85|    return op;
  562|     85|}
_PyObject_NewVar:
  566|    743|{
  567|    743|    PyVarObject *op;
  568|    743|    const size_t size = _PyObject_VAR_SIZE(tp, nitems);
  569|    743|    op = (PyVarObject *) PyObject_Malloc(size);
  570|    743|    if (op == NULL) {
  ------------------
  |  Branch (570:9): [True: 0, False: 743]
  ------------------
  571|      0|        return (PyVarObject *)PyErr_NoMemory();
  572|      0|    }
  573|    743|    _PyObject_InitVar(op, tp, nitems);
  574|    743|    return op;
  575|    743|}
PyObject_CallFinalizer:
  579|     21|{
  580|     21|    PyTypeObject *tp = Py_TYPE(self);
  ------------------
  |  |  213|     21|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     21|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     21|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  581|       |
  582|     21|    if (tp->tp_finalize == NULL)
  ------------------
  |  Branch (582:9): [True: 0, False: 21]
  ------------------
  583|      0|        return;
  584|       |    /* tp_finalize should only be called once. */
  585|     21|    if (_PyType_IS_GC(tp) && _PyGC_FINALIZED(self))
  ------------------
  |  |  828|     42|#define _PyType_IS_GC(t) _PyType_HasFeature((t), Py_TPFLAGS_HAVE_GC)
  |  |  ------------------
  |  |  |  |  524|     21|#define Py_TPFLAGS_HAVE_GC (1UL << 14)
  |  |  ------------------
  |  |  |  Branch (828:26): [True: 21, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (585:30): [True: 0, False: 21]
  ------------------
  586|      0|        return;
  587|       |
  588|     21|    tp->tp_finalize(self);
  589|     21|    if (_PyType_IS_GC(tp)) {
  ------------------
  |  |  828|     21|#define _PyType_IS_GC(t) _PyType_HasFeature((t), Py_TPFLAGS_HAVE_GC)
  |  |  ------------------
  |  |  |  |  524|     21|#define Py_TPFLAGS_HAVE_GC (1UL << 14)
  |  |  ------------------
  |  |  |  Branch (828:26): [True: 21, False: 0]
  |  |  ------------------
  ------------------
  590|     21|        _PyGC_SET_FINALIZED(self);
  591|     21|    }
  592|     21|}
PyObject_CallFinalizerFromDealloc:
  596|     21|{
  597|     21|    if (Py_REFCNT(self) != 0) {
  ------------------
  |  |  119|     21|    #  define Py_REFCNT(ob) _Py_REFCNT(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     21|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     21|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (597:9): [True: 0, False: 21]
  ------------------
  598|      0|        _PyObject_ASSERT_FAILED_MSG(self,
  ------------------
  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  ------------------
  599|      0|                                    "PyObject_CallFinalizerFromDealloc called "
  600|      0|                                    "on object with a non-zero refcount");
  601|      0|    }
  602|       |
  603|       |    /* Temporarily resurrect the object. */
  604|     21|    _PyObject_ResurrectStart(self);
  605|       |
  606|     21|    PyObject_CallFinalizer(self);
  607|       |
  608|     21|    _PyObject_ASSERT_WITH_MSG(self,
  ------------------
  |  |  421|     21|    _PyObject_ASSERT_FROM((obj), expr, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  |  414|     21|    ((expr) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (414:6): [True: 21, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  415|     21|      ? (void)(0) \
  |  |  |  |  416|     21|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  |  |  ------------------
  ------------------
  609|     21|                              Py_REFCNT(self) > 0,
  610|     21|                              "refcount is too small");
  611|       |
  612|     21|    _PyObject_ASSERT(self,
  ------------------
  |  |  423|     21|    _PyObject_ASSERT_WITH_MSG((obj), expr, NULL)
  |  |  ------------------
  |  |  |  |  421|     21|    _PyObject_ASSERT_FROM((obj), expr, (msg), __FILE__, __LINE__, __func__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  414|     42|    ((expr) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (414:7): [True: 0, False: 21]
  |  |  |  |  |  |  |  Branch (414:7): [True: 21, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  415|     21|      ? (void)(0) \
  |  |  |  |  |  |  416|     21|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  613|     21|                    (!_PyType_IS_GC(Py_TYPE(self))
  614|     21|                    || _PyObject_GC_IS_TRACKED(self)));
  615|       |
  616|       |    /* Undo the temporary resurrection; can't use DECREF here, it would
  617|       |     * cause a recursive call. */
  618|     21|    if (_PyObject_ResurrectEnd(self)) {
  ------------------
  |  Branch (618:9): [True: 0, False: 21]
  ------------------
  619|       |        /* tp_finalize resurrected it!
  620|       |           gh-130202: Note that the object may still be dead in the free
  621|       |           threaded build in some circumstances, so it's not safe to access
  622|       |           `self` after this point. For example, the last reference to the
  623|       |           resurrected `self` may be held by another thread, which can
  624|       |           concurrently deallocate it. */
  625|      0|        return -1;
  626|      0|    }
  627|       |
  628|       |    /* this is the normal path out, the caller continues with deallocation. */
  629|     21|    return 0;
  630|     21|}
_PyObject_IsFreed:
  711|  17.0k|{
  712|  17.0k|    if (_PyMem_IsPtrFreed(op) || _PyMem_IsPtrFreed(Py_TYPE(op))) {
  ------------------
  |  |  213|  17.0k|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  17.0k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  17.0k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (712:9): [True: 0, False: 17.0k]
  |  Branch (712:34): [True: 0, False: 17.0k]
  ------------------
  713|      0|        return 1;
  714|      0|    }
  715|  17.0k|    return 0;
  716|  17.0k|}
PyObject_Repr:
  760|      6|{
  761|      6|    PyObject *res;
  762|      6|    if (PyErr_CheckSignals())
  ------------------
  |  Branch (762:9): [True: 0, False: 6]
  ------------------
  763|      0|        return NULL;
  764|      6|    if (v == NULL)
  ------------------
  |  Branch (764:9): [True: 0, False: 6]
  ------------------
  765|      0|        return PyUnicode_FromString("<NULL>");
  766|      6|    if (Py_TYPE(v)->tp_repr == NULL)
  ------------------
  |  |  213|      6|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      6|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (766:9): [True: 0, False: 6]
  ------------------
  767|      0|        return PyUnicode_FromFormat("<%s object at %p>",
  768|      0|                                    Py_TYPE(v)->tp_name, v);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  769|       |
  770|      6|    PyThreadState *tstate = _PyThreadState_GET();
  771|       |#ifdef Py_DEBUG
  772|       |    /* PyObject_Repr() must not be called with an exception set,
  773|       |       because it can clear it (directly or indirectly) and so the
  774|       |       caller loses its exception */
  775|       |    assert(!_PyErr_Occurred(tstate));
  776|       |#endif
  777|       |
  778|       |    /* It is possible for a type to have a tp_repr representation that loops
  779|       |       infinitely. */
  780|      6|    if (_Py_EnterRecursiveCallTstate(tstate,
  ------------------
  |  Branch (780:9): [True: 0, False: 6]
  ------------------
  781|      6|                                     " while getting the repr of an object")) {
  782|      0|        return NULL;
  783|      0|    }
  784|      6|    res = (*Py_TYPE(v)->tp_repr)(v);
  ------------------
  |  |  213|      6|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      6|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  785|      6|    _Py_LeaveRecursiveCallTstate(tstate);
  786|       |
  787|      6|    if (res == NULL) {
  ------------------
  |  Branch (787:9): [True: 0, False: 6]
  ------------------
  788|      0|        return NULL;
  789|      0|    }
  790|      6|    if (!PyUnicode_Check(res)) {
  ------------------
  |  |  103|      6|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      6|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (790:9): [True: 0, False: 6]
  ------------------
  791|      0|        _PyErr_Format(tstate, PyExc_TypeError,
  792|      0|                      "%T.__repr__() must return a str, not %T", v, res);
  793|      0|        Py_DECREF(res);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  794|      0|        return NULL;
  795|      0|    }
  796|      6|    return res;
  797|      6|}
PyObject_Str:
  801|     14|{
  802|     14|    PyObject *res;
  803|     14|    if (PyErr_CheckSignals())
  ------------------
  |  Branch (803:9): [True: 0, False: 14]
  ------------------
  804|      0|        return NULL;
  805|     14|    if (v == NULL)
  ------------------
  |  Branch (805:9): [True: 0, False: 14]
  ------------------
  806|      0|        return PyUnicode_FromString("<NULL>");
  807|     14|    if (PyUnicode_CheckExact(v)) {
  ------------------
  |  |  104|     14|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  ------------------
  |  |  |  |  215|     14|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     14|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     14|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 3, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  808|      3|        return Py_NewRef(v);
  ------------------
  |  |  550|      3|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  809|      3|    }
  810|     11|    if (Py_TYPE(v)->tp_str == NULL)
  ------------------
  |  |  213|     11|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     11|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     11|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (810:9): [True: 0, False: 11]
  ------------------
  811|      0|        return PyObject_Repr(v);
  812|       |
  813|     11|    PyThreadState *tstate = _PyThreadState_GET();
  814|       |#ifdef Py_DEBUG
  815|       |    /* PyObject_Str() must not be called with an exception set,
  816|       |       because it can clear it (directly or indirectly) and so the
  817|       |       caller loses its exception */
  818|       |    assert(!_PyErr_Occurred(tstate));
  819|       |#endif
  820|       |
  821|       |    /* It is possible for a type to have a tp_str representation that loops
  822|       |       infinitely. */
  823|     11|    if (_Py_EnterRecursiveCallTstate(tstate, " while getting the str of an object")) {
  ------------------
  |  Branch (823:9): [True: 0, False: 11]
  ------------------
  824|      0|        return NULL;
  825|      0|    }
  826|     11|    res = (*Py_TYPE(v)->tp_str)(v);
  ------------------
  |  |  213|     11|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     11|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     11|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  827|     11|    _Py_LeaveRecursiveCallTstate(tstate);
  828|       |
  829|     11|    if (res == NULL) {
  ------------------
  |  Branch (829:9): [True: 0, False: 11]
  ------------------
  830|      0|        return NULL;
  831|      0|    }
  832|     11|    if (!PyUnicode_Check(res)) {
  ------------------
  |  |  103|     11|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     11|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (832:9): [True: 0, False: 11]
  ------------------
  833|      0|        _PyErr_Format(tstate, PyExc_TypeError,
  834|      0|                      "%T.__str__() must return a str, not %T", v, res);
  835|      0|        Py_DECREF(res);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  836|      0|        return NULL;
  837|      0|    }
  838|     11|    assert(_PyUnicode_CheckConsistency(res, 1));
  ------------------
  |  Branch (838:5): [True: 11, False: 0]
  ------------------
  839|     11|    return res;
  840|     11|}
PyObject_RichCompare:
 1100|  4.06k|{
 1101|  4.06k|    PyThreadState *tstate = _PyThreadState_GET();
 1102|       |
 1103|  4.06k|    assert(Py_LT <= op && op <= Py_GE);
  ------------------
  |  Branch (1103:5): [True: 4.06k, False: 0]
  |  Branch (1103:5): [True: 4.06k, False: 0]
  ------------------
 1104|  4.06k|    if (v == NULL || w == NULL) {
  ------------------
  |  Branch (1104:9): [True: 0, False: 4.06k]
  |  Branch (1104:22): [True: 0, False: 4.06k]
  ------------------
 1105|      0|        if (!_PyErr_Occurred(tstate)) {
  ------------------
  |  Branch (1105:13): [True: 0, False: 0]
  ------------------
 1106|      0|            PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
 1107|      0|        }
 1108|      0|        return NULL;
 1109|      0|    }
 1110|  4.06k|    if (_Py_EnterRecursiveCallTstate(tstate, " in comparison")) {
  ------------------
  |  Branch (1110:9): [True: 0, False: 4.06k]
  ------------------
 1111|      0|        return NULL;
 1112|      0|    }
 1113|  4.06k|    PyObject *res = do_richcompare(tstate, v, w, op);
 1114|  4.06k|    _Py_LeaveRecursiveCallTstate(tstate);
 1115|  4.06k|    return res;
 1116|  4.06k|}
PyObject_RichCompareBool:
 1122|  3.97k|{
 1123|  3.97k|    PyObject *res;
 1124|  3.97k|    int ok;
 1125|       |
 1126|       |    /* Quick result when objects are the same.
 1127|       |       Guarantees that identity implies equality. */
 1128|  3.97k|    if (v == w) {
  ------------------
  |  Branch (1128:9): [True: 33, False: 3.94k]
  ------------------
 1129|     33|        if (op == Py_EQ)
  ------------------
  |  |  654|     33|#define Py_EQ 2
  ------------------
  |  Branch (1129:13): [True: 33, False: 0]
  ------------------
 1130|     33|            return 1;
 1131|      0|        else if (op == Py_NE)
  ------------------
  |  |  655|      0|#define Py_NE 3
  ------------------
  |  Branch (1131:18): [True: 0, False: 0]
  ------------------
 1132|      0|            return 0;
 1133|     33|    }
 1134|       |
 1135|  3.94k|    res = PyObject_RichCompare(v, w, op);
 1136|  3.94k|    if (res == NULL)
  ------------------
  |  Branch (1136:9): [True: 0, False: 3.94k]
  ------------------
 1137|      0|        return -1;
 1138|  3.94k|    if (PyBool_Check(res)) {
  ------------------
  |  |   12|  3.94k|#define PyBool_Check(x) Py_IS_TYPE((x), &PyBool_Type)
  |  |  ------------------
  |  |  |  |  215|  3.94k|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|  3.94k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|  3.94k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 3.94k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1139|  3.94k|        ok = (res == Py_True);
  ------------------
  |  |   26|  3.94k|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  ------------------
  |  |  |  |  171|  3.94k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  3.94k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1140|  3.94k|        assert(_Py_IsImmortal(res));
  ------------------
  |  Branch (1140:9): [True: 3.94k, False: 0]
  ------------------
 1141|  3.94k|    }
 1142|      0|    else {
 1143|      0|        ok = PyObject_IsTrue(res);
 1144|      0|        Py_DECREF(res);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1145|      0|    }
 1146|  3.94k|    return ok;
 1147|  3.94k|}
PyObject_Hash:
 1159|  1.76k|{
 1160|  1.76k|    PyTypeObject *tp = Py_TYPE(v);
  ------------------
  |  |  213|  1.76k|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  1.76k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.76k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1161|  1.76k|    if (tp->tp_hash != NULL)
  ------------------
  |  Branch (1161:9): [True: 1.76k, False: 0]
  ------------------
 1162|  1.76k|        return (*tp->tp_hash)(v);
 1163|       |    /* To keep to the general practice that inheriting
 1164|       |     * solely from object in C code should work without
 1165|       |     * an explicit call to PyType_Ready, we implicitly call
 1166|       |     * PyType_Ready here and then check the tp_hash slot again
 1167|       |     */
 1168|      0|    if (!_PyType_IsReady(tp)) {
  ------------------
  |  Branch (1168:9): [True: 0, False: 0]
  ------------------
 1169|      0|        if (PyType_Ready(tp) < 0)
  ------------------
  |  Branch (1169:13): [True: 0, False: 0]
  ------------------
 1170|      0|            return -1;
 1171|      0|        if (tp->tp_hash != NULL)
  ------------------
  |  Branch (1171:13): [True: 0, False: 0]
  ------------------
 1172|      0|            return (*tp->tp_hash)(v);
 1173|      0|    }
 1174|       |    /* Otherwise, the object can't be hashed */
 1175|      0|    return PyObject_HashNotImplemented(v);
 1176|      0|}
PyObject_GetAttrString:
 1180|     50|{
 1181|     50|    PyObject *w, *res;
 1182|       |
 1183|     50|    if (Py_TYPE(v)->tp_getattr != NULL)
  ------------------
  |  |  213|     50|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     50|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     50|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1183:9): [True: 0, False: 50]
  ------------------
 1184|      0|        return (*Py_TYPE(v)->tp_getattr)(v, (char*)name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1185|     50|    w = PyUnicode_FromString(name);
 1186|     50|    if (w == NULL)
  ------------------
  |  Branch (1186:9): [True: 0, False: 50]
  ------------------
 1187|      0|        return NULL;
 1188|     50|    res = PyObject_GetAttr(v, w);
 1189|     50|    Py_DECREF(w);
  ------------------
  |  |  430|     50|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     50|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     50|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1190|     50|    return res;
 1191|     50|}
PyObject_SetAttrString:
 1219|    473|{
 1220|    473|    PyThreadState *tstate = _PyThreadState_GET();
 1221|    473|    if (w == NULL && _PyErr_Occurred(tstate)) {
  ------------------
  |  Branch (1221:9): [True: 0, False: 473]
  |  Branch (1221:22): [True: 0, False: 0]
  ------------------
 1222|      0|        PyObject *exc = _PyErr_GetRaisedException(tstate);
 1223|      0|        _PyErr_SetString(tstate, PyExc_SystemError,
 1224|      0|            "PyObject_SetAttrString() must not be called with NULL value "
 1225|      0|            "and an exception set");
 1226|      0|        _PyErr_ChainExceptions1Tstate(tstate, exc);
 1227|      0|        return -1;
 1228|      0|    }
 1229|       |
 1230|    473|    if (Py_TYPE(v)->tp_setattr != NULL) {
  ------------------
  |  |  213|    473|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    473|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    473|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1230:9): [True: 0, False: 473]
  ------------------
 1231|      0|        return (*Py_TYPE(v)->tp_setattr)(v, (char*)name, w);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1232|      0|    }
 1233|       |
 1234|    473|    PyObject *s = PyUnicode_InternFromString(name);
 1235|    473|    if (s == NULL) {
  ------------------
  |  Branch (1235:9): [True: 0, False: 473]
  ------------------
 1236|      0|        return -1;
 1237|      0|    }
 1238|       |
 1239|    473|    int res = PyObject_SetAttr(v, s, w);
 1240|    473|    Py_DECREF(s);
  ------------------
  |  |  430|    473|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    473|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    473|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1241|    473|    return res;
 1242|    473|}
_PyObject_IsAbstract:
 1252|    351|{
 1253|    351|    int res;
 1254|    351|    PyObject* isabstract;
 1255|       |
 1256|    351|    if (obj == NULL)
  ------------------
  |  Branch (1256:9): [True: 0, False: 351]
  ------------------
 1257|      0|        return 0;
 1258|       |
 1259|    351|    res = PyObject_GetOptionalAttr(obj, &_Py_ID(__isabstractmethod__), &isabstract);
  ------------------
  |  |  917|    351|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|    351|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|    351|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1260|    351|    if (res > 0) {
  ------------------
  |  Branch (1260:9): [True: 74, False: 277]
  ------------------
 1261|     74|        res = PyObject_IsTrue(isabstract);
 1262|     74|        Py_DECREF(isabstract);
  ------------------
  |  |  430|     74|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     74|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     74|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1263|     74|    }
 1264|    351|    return res;
 1265|    351|}
_PyObject_SetAttributeErrorContext:
 1283|     21|{
 1284|     21|    assert(PyErr_Occurred());
  ------------------
  |  Branch (1284:5): [True: 21, False: 0]
  ------------------
 1285|     21|    if (!PyErr_ExceptionMatches(PyExc_AttributeError)){
  ------------------
  |  Branch (1285:9): [True: 0, False: 21]
  ------------------
 1286|      0|        return 0;
 1287|      0|    }
 1288|       |    // Intercept AttributeError exceptions and augment them to offer suggestions later.
 1289|     21|    PyObject *exc = PyErr_GetRaisedException();
 1290|     21|    if (!PyErr_GivenExceptionMatches(exc, PyExc_AttributeError)) {
  ------------------
  |  Branch (1290:9): [True: 0, False: 21]
  ------------------
 1291|      0|        goto restore;
 1292|      0|    }
 1293|     21|    PyAttributeErrorObject* the_exc = (PyAttributeErrorObject*) exc;
 1294|       |    // Check if this exception was already augmented
 1295|     21|    if (the_exc->name || the_exc->obj) {
  ------------------
  |  Branch (1295:9): [True: 0, False: 21]
  |  Branch (1295:26): [True: 0, False: 21]
  ------------------
 1296|      0|        goto restore;
 1297|      0|    }
 1298|       |    // Augment the exception with the name and object
 1299|     21|    if (PyObject_SetAttr(exc, &_Py_ID(name), name) ||
  ------------------
  |  |  917|     21|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     21|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     21|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1299:9): [True: 0, False: 21]
  ------------------
 1300|     21|        PyObject_SetAttr(exc, &_Py_ID(obj), v)) {
  ------------------
  |  |  917|     21|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     21|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     21|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1300:9): [True: 0, False: 21]
  ------------------
 1301|      0|        Py_DECREF(exc);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1302|      0|        return 1;
 1303|      0|    }
 1304|     21|restore:
 1305|     21|    PyErr_SetRaisedException(exc);
 1306|     21|    return 0;
 1307|     21|}
PyObject_GetAttr:
 1311|  1.04k|{
 1312|  1.04k|    PyTypeObject *tp = Py_TYPE(v);
  ------------------
  |  |  213|  1.04k|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  1.04k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.04k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1313|  1.04k|    if (!PyUnicode_Check(name)) {
  ------------------
  |  |  103|  1.04k|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|  1.04k|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (1313:9): [True: 0, False: 1.04k]
  ------------------
 1314|      0|        PyErr_Format(PyExc_TypeError,
 1315|      0|                     "attribute name must be string, not '%.200s'",
 1316|      0|                     Py_TYPE(name)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1317|      0|        return NULL;
 1318|      0|    }
 1319|       |
 1320|  1.04k|    PyObject* result = NULL;
 1321|  1.04k|    if (tp->tp_getattro != NULL) {
  ------------------
  |  Branch (1321:9): [True: 1.04k, False: 0]
  ------------------
 1322|  1.04k|        result = (*tp->tp_getattro)(v, name);
 1323|  1.04k|    }
 1324|      0|    else if (tp->tp_getattr != NULL) {
  ------------------
  |  Branch (1324:14): [True: 0, False: 0]
  ------------------
 1325|      0|        const char *name_str = PyUnicode_AsUTF8(name);
 1326|      0|        if (name_str == NULL) {
  ------------------
  |  Branch (1326:13): [True: 0, False: 0]
  ------------------
 1327|      0|            return NULL;
 1328|      0|        }
 1329|      0|        result = (*tp->tp_getattr)(v, (char *)name_str);
 1330|      0|    }
 1331|      0|    else {
 1332|      0|        PyErr_Format(PyExc_AttributeError,
 1333|      0|                    "'%.100s' object has no attribute '%U'",
 1334|      0|                    tp->tp_name, name);
 1335|      0|    }
 1336|       |
 1337|  1.04k|    if (result == NULL) {
  ------------------
  |  Branch (1337:9): [True: 1, False: 1.04k]
  ------------------
 1338|      1|        _PyObject_SetAttributeErrorContext(v, name);
 1339|      1|    }
 1340|  1.04k|    return result;
 1341|  1.04k|}
_PyObject_GetAttrStackRef:
 1348|    799|{
 1349|    799|    PyTypeObject *tp = Py_TYPE(v);
  ------------------
  |  |  213|    799|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    799|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    799|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1350|    799|    if (!PyUnicode_Check(name)) {
  ------------------
  |  |  103|    799|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|    799|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (1350:9): [True: 0, False: 799]
  ------------------
 1351|      0|        PyErr_Format(PyExc_TypeError,
 1352|      0|                     "attribute name must be string, not '%.200s'",
 1353|      0|                     Py_TYPE(name)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1354|      0|        return PyStackRef_NULL;
 1355|      0|    }
 1356|       |
 1357|       |    /* Fast path for types - can return deferred references */
 1358|    799|    if (tp->tp_getattro == _Py_type_getattro) {
  ------------------
  |  Branch (1358:9): [True: 235, False: 564]
  ------------------
 1359|    235|        _PyStackRef result = _Py_type_getattro_stackref((PyTypeObject *)v, name, NULL);
 1360|    235|        if (PyStackRef_IsNull(result)) {
  ------------------
  |  |  470|    235|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  ------------------
  |  |  |  |  467|    235|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    235|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (470:32): [True: 1, False: 234]
  |  |  ------------------
  ------------------
 1361|      1|            _PyObject_SetAttributeErrorContext(v, name);
 1362|      1|        }
 1363|    235|        return result;
 1364|    235|    }
 1365|       |
 1366|       |    /* Fall back to regular PyObject_GetAttr and convert to stackref */
 1367|    564|    PyObject *result = NULL;
 1368|    564|    if (tp->tp_getattro != NULL) {
  ------------------
  |  Branch (1368:9): [True: 564, False: 0]
  ------------------
 1369|    564|        result = (*tp->tp_getattro)(v, name);
 1370|    564|    }
 1371|      0|    else if (tp->tp_getattr != NULL) {
  ------------------
  |  Branch (1371:14): [True: 0, False: 0]
  ------------------
 1372|      0|        const char *name_str = PyUnicode_AsUTF8(name);
 1373|      0|        if (name_str == NULL) {
  ------------------
  |  Branch (1373:13): [True: 0, False: 0]
  ------------------
 1374|      0|            return PyStackRef_NULL;
 1375|      0|        }
 1376|      0|        result = (*tp->tp_getattr)(v, (char *)name_str);
 1377|      0|    }
 1378|      0|    else {
 1379|      0|        PyErr_Format(PyExc_AttributeError,
 1380|      0|                    "'%.100s' object has no attribute '%U'",
 1381|      0|                    tp->tp_name, name);
 1382|      0|    }
 1383|       |
 1384|    564|    if (result == NULL) {
  ------------------
  |  Branch (1384:9): [True: 9, False: 555]
  ------------------
 1385|      9|        _PyObject_SetAttributeErrorContext(v, name);
 1386|      9|        return PyStackRef_NULL;
 1387|      9|    }
 1388|    555|    return PyStackRef_FromPyObjectSteal(result);
 1389|    564|}
PyObject_GetOptionalAttr:
 1393|  1.29k|{
 1394|  1.29k|    PyTypeObject *tp = Py_TYPE(v);
  ------------------
  |  |  213|  1.29k|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  1.29k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.29k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1395|       |
 1396|  1.29k|    if (!PyUnicode_Check(name)) {
  ------------------
  |  |  103|  1.29k|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|  1.29k|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (1396:9): [True: 0, False: 1.29k]
  ------------------
 1397|      0|        PyErr_Format(PyExc_TypeError,
 1398|      0|                     "attribute name must be string, not '%.200s'",
 1399|      0|                     Py_TYPE(name)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1400|      0|        *result = NULL;
 1401|      0|        return -1;
 1402|      0|    }
 1403|       |
 1404|  1.29k|    if (tp->tp_getattro == PyObject_GenericGetAttr) {
  ------------------
  |  Branch (1404:9): [True: 724, False: 572]
  ------------------
 1405|    724|        *result = _PyObject_GenericGetAttrWithDict(v, name, NULL, 1);
 1406|    724|        if (*result != NULL) {
  ------------------
  |  Branch (1406:13): [True: 408, False: 316]
  ------------------
 1407|    408|            return 1;
 1408|    408|        }
 1409|    316|        if (PyErr_Occurred()) {
  ------------------
  |  Branch (1409:13): [True: 0, False: 316]
  ------------------
 1410|      0|            return -1;
 1411|      0|        }
 1412|    316|        return 0;
 1413|    316|    }
 1414|    572|    if (tp->tp_getattro == _Py_type_getattro) {
  ------------------
  |  Branch (1414:9): [True: 241, False: 331]
  ------------------
 1415|    241|        int suppress_missing_attribute_exception = 0;
 1416|    241|        *result = _Py_type_getattro_impl((PyTypeObject*)v, name, &suppress_missing_attribute_exception);
 1417|    241|        if (suppress_missing_attribute_exception) {
  ------------------
  |  Branch (1417:13): [True: 7, False: 234]
  ------------------
 1418|       |            // return 0 without having to clear the exception
 1419|      7|            return 0;
 1420|      7|        }
 1421|    241|    }
 1422|    331|    else if (tp->tp_getattro == (getattrofunc)_Py_module_getattro) {
  ------------------
  |  Branch (1422:14): [True: 331, False: 0]
  ------------------
 1423|       |        // optimization: suppress attribute error from module getattro method
 1424|    331|        *result = _Py_module_getattro_impl((PyModuleObject*)v, name, 1);
 1425|    331|        if (*result != NULL) {
  ------------------
  |  Branch (1425:13): [True: 277, False: 54]
  ------------------
 1426|    277|            return 1;
 1427|    277|        }
 1428|     54|        if (PyErr_Occurred()) {
  ------------------
  |  Branch (1428:13): [True: 0, False: 54]
  ------------------
 1429|      0|            return -1;
 1430|      0|        }
 1431|     54|        return 0;
 1432|     54|    }
 1433|      0|    else if (tp->tp_getattro != NULL) {
  ------------------
  |  Branch (1433:14): [True: 0, False: 0]
  ------------------
 1434|      0|        *result = (*tp->tp_getattro)(v, name);
 1435|      0|    }
 1436|      0|    else if (tp->tp_getattr != NULL) {
  ------------------
  |  Branch (1436:14): [True: 0, False: 0]
  ------------------
 1437|      0|        const char *name_str = PyUnicode_AsUTF8(name);
 1438|      0|        if (name_str == NULL) {
  ------------------
  |  Branch (1438:13): [True: 0, False: 0]
  ------------------
 1439|      0|            *result = NULL;
 1440|      0|            return -1;
 1441|      0|        }
 1442|      0|        *result = (*tp->tp_getattr)(v, (char *)name_str);
 1443|      0|    }
 1444|      0|    else {
 1445|      0|        *result = NULL;
 1446|      0|        return 0;
 1447|      0|    }
 1448|       |
 1449|    234|    if (*result != NULL) {
  ------------------
  |  Branch (1449:9): [True: 225, False: 9]
  ------------------
 1450|    225|        return 1;
 1451|    225|    }
 1452|      9|    if (!PyErr_ExceptionMatches(PyExc_AttributeError)) {
  ------------------
  |  Branch (1452:9): [True: 0, False: 9]
  ------------------
 1453|      0|        return -1;
 1454|      0|    }
 1455|      9|    PyErr_Clear();
 1456|      9|    return 0;
 1457|      9|}
PyObject_HasAttrWithError:
 1486|     22|{
 1487|     22|    PyObject *res;
 1488|     22|    int rc = PyObject_GetOptionalAttr(obj, name, &res);
 1489|     22|    Py_XDECREF(res);
  ------------------
  |  |  524|     22|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     22|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     22|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1490|     22|    return rc;
 1491|     22|}
PyObject_SetAttr:
 1509|  1.09k|{
 1510|  1.09k|    PyThreadState *tstate = _PyThreadState_GET();
 1511|  1.09k|    if (value == NULL && _PyErr_Occurred(tstate)) {
  ------------------
  |  Branch (1511:9): [True: 0, False: 1.09k]
  |  Branch (1511:26): [True: 0, False: 0]
  ------------------
 1512|      0|        PyObject *exc = _PyErr_GetRaisedException(tstate);
 1513|      0|        _PyErr_SetString(tstate, PyExc_SystemError,
 1514|      0|            "PyObject_SetAttr() must not be called with NULL value "
 1515|      0|            "and an exception set");
 1516|      0|        _PyErr_ChainExceptions1Tstate(tstate, exc);
 1517|      0|        return -1;
 1518|      0|    }
 1519|       |
 1520|  1.09k|    PyTypeObject *tp = Py_TYPE(v);
  ------------------
  |  |  213|  1.09k|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  1.09k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.09k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1521|  1.09k|    int err;
 1522|       |
 1523|  1.09k|    if (!PyUnicode_Check(name)) {
  ------------------
  |  |  103|  1.09k|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|  1.09k|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (1523:9): [True: 0, False: 1.09k]
  ------------------
 1524|      0|        PyErr_Format(PyExc_TypeError,
 1525|      0|                     "attribute name must be string, not '%.200s'",
 1526|      0|                     Py_TYPE(name)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1527|      0|        return -1;
 1528|      0|    }
 1529|  1.09k|    Py_INCREF(name);
  ------------------
  |  |  310|  1.09k|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  1.09k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.09k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1530|       |
 1531|  1.09k|    _PyUnicode_InternMortal(tstate->interp, &name);
 1532|  1.09k|    if (tp->tp_setattro != NULL) {
  ------------------
  |  Branch (1532:9): [True: 1.09k, False: 0]
  ------------------
 1533|  1.09k|        err = (*tp->tp_setattro)(v, name, value);
 1534|  1.09k|        Py_DECREF(name);
  ------------------
  |  |  430|  1.09k|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  1.09k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.09k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1535|  1.09k|        return err;
 1536|  1.09k|    }
 1537|      0|    if (tp->tp_setattr != NULL) {
  ------------------
  |  Branch (1537:9): [True: 0, False: 0]
  ------------------
 1538|      0|        const char *name_str = PyUnicode_AsUTF8(name);
 1539|      0|        if (name_str == NULL) {
  ------------------
  |  Branch (1539:13): [True: 0, False: 0]
  ------------------
 1540|      0|            Py_DECREF(name);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1541|      0|            return -1;
 1542|      0|        }
 1543|      0|        err = (*tp->tp_setattr)(v, (char *)name_str, value);
 1544|      0|        Py_DECREF(name);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1545|      0|        return err;
 1546|      0|    }
 1547|      0|    Py_DECREF(name);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1548|      0|    _PyObject_ASSERT(name, Py_REFCNT(name) >= 1);
  ------------------
  |  |  423|      0|    _PyObject_ASSERT_WITH_MSG((obj), expr, NULL)
  |  |  ------------------
  |  |  |  |  421|      0|    _PyObject_ASSERT_FROM((obj), expr, (msg), __FILE__, __LINE__, __func__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  414|      0|    ((expr) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (414:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  415|      0|      ? (void)(0) \
  |  |  |  |  |  |  416|      0|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1549|      0|    if (tp->tp_getattr == NULL && tp->tp_getattro == NULL)
  ------------------
  |  Branch (1549:9): [True: 0, False: 0]
  |  Branch (1549:35): [True: 0, False: 0]
  ------------------
 1550|      0|        PyErr_Format(PyExc_TypeError,
 1551|      0|                     "'%.100s' object has no attributes "
 1552|      0|                     "(%s .%U)",
 1553|      0|                     tp->tp_name,
 1554|      0|                     value==NULL ? "del" : "assign to",
  ------------------
  |  Branch (1554:22): [True: 0, False: 0]
  ------------------
 1555|      0|                     name);
 1556|      0|    else
 1557|      0|        PyErr_Format(PyExc_TypeError,
 1558|      0|                     "'%.100s' object has only read-only attributes "
 1559|      0|                     "(%s .%U)",
 1560|      0|                     tp->tp_name,
 1561|      0|                     value==NULL ? "del" : "assign to",
  ------------------
  |  Branch (1561:22): [True: 0, False: 0]
  ------------------
 1562|      0|                     name);
 1563|      0|    return -1;
 1564|      0|}
_PyObject_ComputedDictPointer:
 1574|  2.81k|{
 1575|  2.81k|    PyTypeObject *tp = Py_TYPE(obj);
  ------------------
  |  |  213|  2.81k|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  2.81k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.81k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1576|  2.81k|    assert((tp->tp_flags & Py_TPFLAGS_MANAGED_DICT) == 0);
  ------------------
  |  Branch (1576:5): [True: 2.81k, False: 0]
  ------------------
 1577|       |
 1578|  2.81k|    Py_ssize_t dictoffset = tp->tp_dictoffset;
 1579|  2.81k|    if (dictoffset == 0) {
  ------------------
  |  Branch (1579:9): [True: 391, False: 2.42k]
  ------------------
 1580|    391|        return NULL;
 1581|    391|    }
 1582|       |
 1583|  2.42k|    if (dictoffset < 0) {
  ------------------
  |  Branch (1583:9): [True: 0, False: 2.42k]
  ------------------
 1584|      0|        assert(dictoffset != -1);
  ------------------
  |  Branch (1584:9): [True: 0, False: 0]
  ------------------
 1585|       |
 1586|      0|        Py_ssize_t tsize = Py_SIZE(obj);
  ------------------
  |  |  214|      0|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1587|      0|        if (tsize < 0) {
  ------------------
  |  Branch (1587:13): [True: 0, False: 0]
  ------------------
 1588|      0|            tsize = -tsize;
 1589|      0|        }
 1590|      0|        size_t size = _PyObject_VAR_SIZE(tp, tsize);
 1591|      0|        assert(size <= (size_t)PY_SSIZE_T_MAX);
  ------------------
  |  Branch (1591:9): [True: 0, False: 0]
  ------------------
 1592|      0|        dictoffset += (Py_ssize_t)size;
 1593|       |
 1594|      0|        _PyObject_ASSERT(obj, dictoffset > 0);
  ------------------
  |  |  423|      0|    _PyObject_ASSERT_WITH_MSG((obj), expr, NULL)
  |  |  ------------------
  |  |  |  |  421|      0|    _PyObject_ASSERT_FROM((obj), expr, (msg), __FILE__, __LINE__, __func__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  414|      0|    ((expr) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (414:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  415|      0|      ? (void)(0) \
  |  |  |  |  |  |  416|      0|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1595|      0|        _PyObject_ASSERT(obj, dictoffset % SIZEOF_VOID_P == 0);
  ------------------
  |  |  423|      0|    _PyObject_ASSERT_WITH_MSG((obj), expr, NULL)
  |  |  ------------------
  |  |  |  |  421|      0|    _PyObject_ASSERT_FROM((obj), expr, (msg), __FILE__, __LINE__, __func__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  414|      0|    ((expr) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (414:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  415|      0|      ? (void)(0) \
  |  |  |  |  |  |  416|      0|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1596|      0|    }
 1597|  2.42k|    return (PyObject **) ((char *)obj + dictoffset);
 1598|  2.42k|}
PyObject_SelfIter:
 1626|     43|{
 1627|     43|    return Py_NewRef(obj);
  ------------------
  |  |  550|     43|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     43|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     43|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1628|     43|}
_PyObject_GetMethodStackRef:
 1758|    468|{
 1759|    468|    int meth_found = 0;
 1760|    468|    PyObject *obj = PyStackRef_AsPyObjectBorrow(*self);
 1761|       |
 1762|    468|    assert(PyStackRef_IsNull(*method));
  ------------------
  |  Branch (1762:5): [True: 468, False: 0]
  ------------------
 1763|       |
 1764|    468|    PyTypeObject *tp = Py_TYPE(obj);
  ------------------
  |  |  213|    468|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    468|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    468|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1765|    468|    if (!_PyType_IsReady(tp)) {
  ------------------
  |  Branch (1765:9): [True: 0, False: 468]
  ------------------
 1766|      0|        if (PyType_Ready(tp) < 0) {
  ------------------
  |  Branch (1766:13): [True: 0, False: 0]
  ------------------
 1767|      0|            PyStackRef_CLEAR(*self);
  ------------------
  |  |  711|      0|    do { \
  |  |  712|      0|        _PyStackRef *_tmp_op_ptr = &(REF); \
  |  |  713|      0|        _PyStackRef _tmp_old_op = (*_tmp_op_ptr); \
  |  |  714|      0|        *_tmp_op_ptr = PyStackRef_NULL; \
  |  |  715|      0|        PyStackRef_XCLOSE(_tmp_old_op); \
  |  |  716|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (716:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1768|      0|            return -1;
 1769|      0|        }
 1770|      0|    }
 1771|       |
 1772|    468|    if (tp->tp_getattro != PyObject_GenericGetAttr || !PyUnicode_CheckExact(name)) {
  ------------------
  |  |  104|    225|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  ------------------
  |  |  |  |  215|    225|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    225|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    225|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1772:9): [True: 243, False: 225]
  |  Branch (1772:55): [True: 0, False: 225]
  ------------------
 1773|    243|        PyObject *res = PyObject_GetAttr(obj, name);
 1774|    243|        PyStackRef_CLEAR(*self);
  ------------------
  |  |  711|    243|    do { \
  |  |  712|    243|        _PyStackRef *_tmp_op_ptr = &(REF); \
  |  |  713|    243|        _PyStackRef _tmp_old_op = (*_tmp_op_ptr); \
  |  |  714|    243|        *_tmp_op_ptr = PyStackRef_NULL; \
  |  |  715|    243|        PyStackRef_XCLOSE(_tmp_old_op); \
  |  |  716|    243|    } while (0)
  |  |  ------------------
  |  |  |  Branch (716:14): [Folded, False: 243]
  |  |  ------------------
  ------------------
 1775|    243|        if (res != NULL) {
  ------------------
  |  Branch (1775:13): [True: 242, False: 1]
  ------------------
 1776|    242|            *method = PyStackRef_FromPyObjectSteal(res);
 1777|    242|            return 0;
 1778|    242|        }
 1779|      1|        return -1;
 1780|    243|    }
 1781|       |
 1782|    225|    _PyType_LookupStackRefAndVersion(tp, name, method);
 1783|    225|    PyObject *descr = PyStackRef_AsPyObjectBorrow(*method);
 1784|    225|    descrgetfunc f = NULL;
 1785|    225|    if (descr != NULL) {
  ------------------
  |  Branch (1785:9): [True: 222, False: 3]
  ------------------
 1786|    222|        if (_PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_METHOD_DESCRIPTOR)) {
  ------------------
  |  |  213|    222|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    222|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    222|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      if (_PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_METHOD_DESCRIPTOR)) {
  ------------------
  |  |  534|    222|#define Py_TPFLAGS_METHOD_DESCRIPTOR (1UL << 17)
  ------------------
  |  Branch (1786:13): [True: 222, False: 0]
  ------------------
 1787|    222|            meth_found = 1;
 1788|    222|        }
 1789|      0|        else {
 1790|      0|            f = Py_TYPE(descr)->tp_descr_get;
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1791|      0|            if (f != NULL && PyDescr_IsData(descr)) {
  ------------------
  |  Branch (1791:17): [True: 0, False: 0]
  |  Branch (1791:30): [True: 0, False: 0]
  ------------------
 1792|      0|                PyObject *value = f(descr, obj, (PyObject *)Py_TYPE(obj));
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1793|      0|                PyStackRef_CLEAR(*method);
  ------------------
  |  |  711|      0|    do { \
  |  |  712|      0|        _PyStackRef *_tmp_op_ptr = &(REF); \
  |  |  713|      0|        _PyStackRef _tmp_old_op = (*_tmp_op_ptr); \
  |  |  714|      0|        *_tmp_op_ptr = PyStackRef_NULL; \
  |  |  715|      0|        PyStackRef_XCLOSE(_tmp_old_op); \
  |  |  716|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (716:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1794|      0|                PyStackRef_CLEAR(*self);
  ------------------
  |  |  711|      0|    do { \
  |  |  712|      0|        _PyStackRef *_tmp_op_ptr = &(REF); \
  |  |  713|      0|        _PyStackRef _tmp_old_op = (*_tmp_op_ptr); \
  |  |  714|      0|        *_tmp_op_ptr = PyStackRef_NULL; \
  |  |  715|      0|        PyStackRef_XCLOSE(_tmp_old_op); \
  |  |  716|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (716:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1795|      0|                if (value != NULL) {
  ------------------
  |  Branch (1795:21): [True: 0, False: 0]
  ------------------
 1796|      0|                    *method = PyStackRef_FromPyObjectSteal(value);
 1797|      0|                    return 0;
 1798|      0|                }
 1799|      0|                return -1;
 1800|      0|            }
 1801|      0|        }
 1802|    222|    }
 1803|    225|    PyObject *dict, *attr;
 1804|    225|    if ((tp->tp_flags & Py_TPFLAGS_INLINE_VALUES) &&
  ------------------
  |  |  472|    225|#define Py_TPFLAGS_INLINE_VALUES (1 << 2)
  ------------------
  |  Branch (1804:9): [True: 14, False: 211]
  ------------------
 1805|     14|         _PyObject_TryGetInstanceAttribute(obj, name, &attr)) {
  ------------------
  |  Branch (1805:10): [True: 14, False: 0]
  ------------------
 1806|     14|        if (attr != NULL) {
  ------------------
  |  Branch (1806:13): [True: 3, False: 11]
  ------------------
 1807|      3|            PyStackRef_XSETREF(*method, PyStackRef_FromPyObjectSteal(attr));
  ------------------
  |  |  834|      3|    do { \
  |  |  835|      3|        _PyStackRef _tmp_dst_ref = (dst); \
  |  |  836|      3|        (dst) = (src); \
  |  |  837|      3|        PyStackRef_XCLOSE(_tmp_dst_ref); \
  |  |  838|      3|    } while(0)
  |  |  ------------------
  |  |  |  Branch (838:13): [Folded, False: 3]
  |  |  ------------------
  ------------------
 1808|      3|            PyStackRef_CLEAR(*self);
  ------------------
  |  |  711|      3|    do { \
  |  |  712|      3|        _PyStackRef *_tmp_op_ptr = &(REF); \
  |  |  713|      3|        _PyStackRef _tmp_old_op = (*_tmp_op_ptr); \
  |  |  714|      3|        *_tmp_op_ptr = PyStackRef_NULL; \
  |  |  715|      3|        PyStackRef_XCLOSE(_tmp_old_op); \
  |  |  716|      3|    } while (0)
  |  |  ------------------
  |  |  |  Branch (716:14): [Folded, False: 3]
  |  |  ------------------
  ------------------
 1809|      3|            return 0;
 1810|      3|        }
 1811|     11|        dict = NULL;
 1812|     11|    }
 1813|    211|    else if ((tp->tp_flags & Py_TPFLAGS_MANAGED_DICT)) {
  ------------------
  |  |  482|    211|#define Py_TPFLAGS_MANAGED_DICT (1 << 4)
  ------------------
  |  Branch (1813:14): [True: 0, False: 211]
  ------------------
 1814|      0|        dict = (PyObject *)_PyObject_GetManagedDict(obj);
 1815|      0|    }
 1816|    211|    else {
 1817|    211|        PyObject **dictptr = _PyObject_ComputedDictPointer(obj);
 1818|    211|        if (dictptr != NULL) {
  ------------------
  |  Branch (1818:13): [True: 31, False: 180]
  ------------------
 1819|     31|            dict = FT_ATOMIC_LOAD_PTR_ACQUIRE(*dictptr);
  ------------------
  |  |  150|     31|#define FT_ATOMIC_LOAD_PTR_ACQUIRE(value) value
  ------------------
 1820|     31|        }
 1821|    180|        else {
 1822|    180|            dict = NULL;
 1823|    180|        }
 1824|    211|    }
 1825|    222|    if (dict != NULL) {
  ------------------
  |  Branch (1825:9): [True: 20, False: 202]
  ------------------
 1826|     20|        assert(PyUnicode_CheckExact(name));
  ------------------
  |  Branch (1826:9): [True: 20, False: 0]
  ------------------
 1827|     20|        int found = _PyDict_GetMethodStackRef((PyDictObject *)dict, name, method);
 1828|     20|        if (found < 0) {
  ------------------
  |  Branch (1828:13): [True: 0, False: 20]
  ------------------
 1829|      0|            assert(PyStackRef_IsNull(*method));
  ------------------
  |  Branch (1829:13): [True: 0, False: 0]
  ------------------
 1830|      0|            PyStackRef_CLEAR(*self);
  ------------------
  |  |  711|      0|    do { \
  |  |  712|      0|        _PyStackRef *_tmp_op_ptr = &(REF); \
  |  |  713|      0|        _PyStackRef _tmp_old_op = (*_tmp_op_ptr); \
  |  |  714|      0|        *_tmp_op_ptr = PyStackRef_NULL; \
  |  |  715|      0|        PyStackRef_XCLOSE(_tmp_old_op); \
  |  |  716|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (716:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1831|      0|            return -1;
 1832|      0|        }
 1833|     20|        else if (found) {
  ------------------
  |  Branch (1833:18): [True: 0, False: 20]
  ------------------
 1834|      0|            PyStackRef_CLEAR(*self);
  ------------------
  |  |  711|      0|    do { \
  |  |  712|      0|        _PyStackRef *_tmp_op_ptr = &(REF); \
  |  |  713|      0|        _PyStackRef _tmp_old_op = (*_tmp_op_ptr); \
  |  |  714|      0|        *_tmp_op_ptr = PyStackRef_NULL; \
  |  |  715|      0|        PyStackRef_XCLOSE(_tmp_old_op); \
  |  |  716|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (716:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1835|      0|            return 0;
 1836|      0|        }
 1837|     20|    }
 1838|       |
 1839|    222|    if (meth_found) {
  ------------------
  |  Branch (1839:9): [True: 222, False: 0]
  ------------------
 1840|    222|        assert(!PyStackRef_IsNull(*method));
  ------------------
  |  Branch (1840:9): [True: 222, False: 0]
  ------------------
 1841|    222|        return 1;
 1842|    222|    }
 1843|       |
 1844|      0|    if (f != NULL) {
  ------------------
  |  Branch (1844:9): [True: 0, False: 0]
  ------------------
 1845|      0|        if (Py_IS_TYPE(descr, &PyClassMethod_Type)) {
  ------------------
  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1846|      0|            PyObject *callable = _PyClassMethod_GetFunc(descr);
 1847|      0|            PyStackRef_XSETREF(*method, PyStackRef_FromPyObjectNew(callable));
  ------------------
  |  |  834|      0|    do { \
  |  |  835|      0|        _PyStackRef _tmp_dst_ref = (dst); \
  |  |  836|      0|        (dst) = (src); \
  |  |  837|      0|        PyStackRef_XCLOSE(_tmp_dst_ref); \
  |  |  838|      0|    } while(0)
  |  |  ------------------
  |  |  |  Branch (838:13): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1848|      0|            PyStackRef_XSETREF(*self, PyStackRef_FromPyObjectNew((PyObject *)tp));
  ------------------
  |  |  834|      0|    do { \
  |  |  835|      0|        _PyStackRef _tmp_dst_ref = (dst); \
  |  |  836|      0|        (dst) = (src); \
  |  |  837|      0|        PyStackRef_XCLOSE(_tmp_dst_ref); \
  |  |  838|      0|    } while(0)
  |  |  ------------------
  |  |  |  Branch (838:13): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1849|      0|            return 1;
 1850|      0|        }
 1851|      0|        else if (Py_IS_TYPE(descr, &PyStaticMethod_Type)) {
  ------------------
  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1852|      0|            PyObject *callable = _PyStaticMethod_GetFunc(descr);
 1853|      0|            PyStackRef_XSETREF(*method, PyStackRef_FromPyObjectNew(callable));
  ------------------
  |  |  834|      0|    do { \
  |  |  835|      0|        _PyStackRef _tmp_dst_ref = (dst); \
  |  |  836|      0|        (dst) = (src); \
  |  |  837|      0|        PyStackRef_XCLOSE(_tmp_dst_ref); \
  |  |  838|      0|    } while(0)
  |  |  ------------------
  |  |  |  Branch (838:13): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1854|      0|            PyStackRef_CLEAR(*self);
  ------------------
  |  |  711|      0|    do { \
  |  |  712|      0|        _PyStackRef *_tmp_op_ptr = &(REF); \
  |  |  713|      0|        _PyStackRef _tmp_old_op = (*_tmp_op_ptr); \
  |  |  714|      0|        *_tmp_op_ptr = PyStackRef_NULL; \
  |  |  715|      0|        PyStackRef_XCLOSE(_tmp_old_op); \
  |  |  716|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (716:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1855|      0|            return 0;
 1856|      0|        }
 1857|      0|        PyObject *value = f(descr, obj, (PyObject *)tp);
 1858|      0|        PyStackRef_CLEAR(*method);
  ------------------
  |  |  711|      0|    do { \
  |  |  712|      0|        _PyStackRef *_tmp_op_ptr = &(REF); \
  |  |  713|      0|        _PyStackRef _tmp_old_op = (*_tmp_op_ptr); \
  |  |  714|      0|        *_tmp_op_ptr = PyStackRef_NULL; \
  |  |  715|      0|        PyStackRef_XCLOSE(_tmp_old_op); \
  |  |  716|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (716:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1859|      0|        PyStackRef_CLEAR(*self);
  ------------------
  |  |  711|      0|    do { \
  |  |  712|      0|        _PyStackRef *_tmp_op_ptr = &(REF); \
  |  |  713|      0|        _PyStackRef _tmp_old_op = (*_tmp_op_ptr); \
  |  |  714|      0|        *_tmp_op_ptr = PyStackRef_NULL; \
  |  |  715|      0|        PyStackRef_XCLOSE(_tmp_old_op); \
  |  |  716|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (716:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1860|      0|        if (value) {
  ------------------
  |  Branch (1860:13): [True: 0, False: 0]
  ------------------
 1861|      0|            *method = PyStackRef_FromPyObjectSteal(value);
 1862|      0|            return 0;
 1863|      0|        }
 1864|      0|        return -1;
 1865|      0|    }
 1866|       |
 1867|      0|    if (descr != NULL) {
  ------------------
  |  Branch (1867:9): [True: 0, False: 0]
  ------------------
 1868|      0|        assert(!PyStackRef_IsNull(*method));
  ------------------
  |  Branch (1868:9): [True: 0, False: 0]
  ------------------
 1869|      0|        PyStackRef_CLEAR(*self);
  ------------------
  |  |  711|      0|    do { \
  |  |  712|      0|        _PyStackRef *_tmp_op_ptr = &(REF); \
  |  |  713|      0|        _PyStackRef _tmp_old_op = (*_tmp_op_ptr); \
  |  |  714|      0|        *_tmp_op_ptr = PyStackRef_NULL; \
  |  |  715|      0|        PyStackRef_XCLOSE(_tmp_old_op); \
  |  |  716|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (716:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1870|      0|        return 0;
 1871|      0|    }
 1872|       |
 1873|      0|    PyErr_Format(PyExc_AttributeError,
 1874|      0|                 "'%.100s' object has no attribute '%U'",
 1875|      0|                 tp->tp_name, name);
 1876|       |
 1877|      0|    _PyObject_SetAttributeErrorContext(obj, name);
 1878|      0|    assert(PyStackRef_IsNull(*method));
  ------------------
  |  Branch (1878:5): [True: 0, False: 0]
  ------------------
 1879|      0|    PyStackRef_CLEAR(*self);
  ------------------
  |  |  711|      0|    do { \
  |  |  712|      0|        _PyStackRef *_tmp_op_ptr = &(REF); \
  |  |  713|      0|        _PyStackRef _tmp_old_op = (*_tmp_op_ptr); \
  |  |  714|      0|        *_tmp_op_ptr = PyStackRef_NULL; \
  |  |  715|      0|        PyStackRef_XCLOSE(_tmp_old_op); \
  |  |  716|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (716:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1880|      0|    return -1;
 1881|      0|}
_PyObject_GenericGetAttrWithDict:
 1889|  2.27k|{
 1890|       |    /* Make sure the logic of _PyObject_GetMethod is in sync with
 1891|       |       this method.
 1892|       |
 1893|       |       When suppress=1, this function suppresses AttributeError.
 1894|       |    */
 1895|       |
 1896|  2.27k|    PyTypeObject *tp = Py_TYPE(obj);
  ------------------
  |  |  213|  2.27k|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  2.27k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.27k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1897|  2.27k|    PyObject *descr = NULL;
 1898|  2.27k|    PyObject *res = NULL;
 1899|  2.27k|    descrgetfunc f;
 1900|       |
 1901|  2.27k|    if (!PyUnicode_Check(name)){
  ------------------
  |  |  103|  2.27k|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|  2.27k|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (1901:9): [True: 0, False: 2.27k]
  ------------------
 1902|      0|        PyErr_Format(PyExc_TypeError,
 1903|      0|                     "attribute name must be string, not '%.200s'",
 1904|      0|                     Py_TYPE(name)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1905|      0|        return NULL;
 1906|      0|    }
 1907|       |
 1908|  2.27k|    if (!_PyType_IsReady(tp)) {
  ------------------
  |  Branch (1908:9): [True: 0, False: 2.27k]
  ------------------
 1909|      0|        if (PyType_Ready(tp) < 0)
  ------------------
  |  Branch (1909:13): [True: 0, False: 0]
  ------------------
 1910|      0|            return NULL;
 1911|      0|    }
 1912|       |
 1913|  2.27k|    Py_INCREF(name);
  ------------------
  |  |  310|  2.27k|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  2.27k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.27k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1914|       |
 1915|  2.27k|    PyThreadState *tstate = _PyThreadState_GET();
 1916|  2.27k|    _PyCStackRef cref;
 1917|  2.27k|    _PyThreadState_PushCStackRef(tstate, &cref);
 1918|       |
 1919|  2.27k|    _PyType_LookupStackRefAndVersion(tp, name, &cref.ref);
 1920|  2.27k|    descr = PyStackRef_AsPyObjectBorrow(cref.ref);
 1921|       |
 1922|  2.27k|    f = NULL;
 1923|  2.27k|    if (descr != NULL) {
  ------------------
  |  Branch (1923:9): [True: 452, False: 1.82k]
  ------------------
 1924|    452|        f = Py_TYPE(descr)->tp_descr_get;
  ------------------
  |  |  213|    452|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    452|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    452|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1925|    452|        if (f != NULL && PyDescr_IsData(descr)) {
  ------------------
  |  Branch (1925:13): [True: 449, False: 3]
  |  Branch (1925:26): [True: 412, False: 37]
  ------------------
 1926|    412|            res = f(descr, obj, (PyObject *)Py_TYPE(obj));
  ------------------
  |  |  213|    412|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    412|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    412|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1927|    412|            if (res == NULL && suppress &&
  ------------------
  |  Branch (1927:17): [True: 0, False: 412]
  |  Branch (1927:32): [True: 0, False: 0]
  ------------------
 1928|      0|                    PyErr_ExceptionMatches(PyExc_AttributeError)) {
  ------------------
  |  Branch (1928:21): [True: 0, False: 0]
  ------------------
 1929|      0|                PyErr_Clear();
 1930|      0|            }
 1931|    412|            goto done;
 1932|    412|        }
 1933|    452|    }
 1934|  1.86k|    if (dict == NULL) {
  ------------------
  |  Branch (1934:9): [True: 1.86k, False: 0]
  ------------------
 1935|  1.86k|        if ((tp->tp_flags & Py_TPFLAGS_INLINE_VALUES)) {
  ------------------
  |  |  472|  1.86k|#define Py_TPFLAGS_INLINE_VALUES (1 << 2)
  ------------------
  |  Branch (1935:13): [True: 149, False: 1.71k]
  ------------------
 1936|    149|            if (PyUnicode_CheckExact(name) &&
  ------------------
  |  |  104|    149|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  ------------------
  |  |  |  |  215|    298|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    149|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    149|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 149, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1937|    149|                _PyObject_TryGetInstanceAttribute(obj, name, &res)) {
  ------------------
  |  Branch (1937:17): [True: 149, False: 0]
  ------------------
 1938|    149|                if (res != NULL) {
  ------------------
  |  Branch (1938:21): [True: 127, False: 22]
  ------------------
 1939|    127|                    goto done;
 1940|    127|                }
 1941|    149|            }
 1942|      0|            else {
 1943|      0|                dict = (PyObject *)_PyObject_MaterializeManagedDict(obj);
 1944|      0|                if (dict == NULL) {
  ------------------
  |  Branch (1944:21): [True: 0, False: 0]
  ------------------
 1945|      0|                    res = NULL;
 1946|      0|                    goto done;
 1947|      0|                }
 1948|      0|            }
 1949|    149|        }
 1950|  1.71k|        else if ((tp->tp_flags & Py_TPFLAGS_MANAGED_DICT)) {
  ------------------
  |  |  482|  1.71k|#define Py_TPFLAGS_MANAGED_DICT (1 << 4)
  ------------------
  |  Branch (1950:18): [True: 10, False: 1.70k]
  ------------------
 1951|     10|            dict = (PyObject *)_PyObject_GetManagedDict(obj);
 1952|     10|        }
 1953|  1.70k|        else {
 1954|  1.70k|            PyObject **dictptr = _PyObject_ComputedDictPointer(obj);
 1955|  1.70k|            if (dictptr) {
  ------------------
  |  Branch (1955:17): [True: 1.49k, False: 211]
  ------------------
 1956|       |#ifdef Py_GIL_DISABLED
 1957|       |                dict = _Py_atomic_load_ptr_acquire(dictptr);
 1958|       |#else
 1959|  1.49k|                dict = *dictptr;
 1960|  1.49k|#endif
 1961|  1.49k|            }
 1962|  1.70k|        }
 1963|  1.86k|    }
 1964|  1.74k|    if (dict != NULL) {
  ------------------
  |  Branch (1964:9): [True: 1.38k, False: 353]
  ------------------
 1965|  1.38k|        Py_INCREF(dict);
  ------------------
  |  |  310|  1.38k|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  1.38k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.38k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1966|  1.38k|        int rc = PyDict_GetItemRef(dict, name, &res);
 1967|  1.38k|        Py_DECREF(dict);
  ------------------
  |  |  430|  1.38k|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  1.38k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.38k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1968|  1.38k|        if (res != NULL) {
  ------------------
  |  Branch (1968:13): [True: 1.32k, False: 67]
  ------------------
 1969|  1.32k|            goto done;
 1970|  1.32k|        }
 1971|     67|        else if (rc < 0) {
  ------------------
  |  Branch (1971:18): [True: 0, False: 67]
  ------------------
 1972|      0|            if (suppress && PyErr_ExceptionMatches(PyExc_AttributeError)) {
  ------------------
  |  Branch (1972:17): [True: 0, False: 0]
  |  Branch (1972:29): [True: 0, False: 0]
  ------------------
 1973|      0|                PyErr_Clear();
 1974|      0|            }
 1975|      0|            else {
 1976|      0|                goto done;
 1977|      0|            }
 1978|      0|        }
 1979|  1.38k|    }
 1980|       |
 1981|    420|    if (f != NULL) {
  ------------------
  |  Branch (1981:9): [True: 37, False: 383]
  ------------------
 1982|     37|        res = f(descr, obj, (PyObject *)Py_TYPE(obj));
  ------------------
  |  |  213|     37|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     37|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     37|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1983|     37|        if (res == NULL && suppress &&
  ------------------
  |  Branch (1983:13): [True: 0, False: 37]
  |  Branch (1983:28): [True: 0, False: 0]
  ------------------
 1984|      0|                PyErr_ExceptionMatches(PyExc_AttributeError)) {
  ------------------
  |  Branch (1984:17): [True: 0, False: 0]
  ------------------
 1985|      0|            PyErr_Clear();
 1986|      0|        }
 1987|     37|        goto done;
 1988|     37|    }
 1989|       |
 1990|    383|    if (descr != NULL) {
  ------------------
  |  Branch (1990:9): [True: 3, False: 380]
  ------------------
 1991|      3|        res = PyStackRef_AsPyObjectSteal(cref.ref);
 1992|      3|        cref.ref = PyStackRef_NULL;
 1993|      3|        goto done;
 1994|      3|    }
 1995|       |
 1996|    380|    if (!suppress) {
  ------------------
  |  Branch (1996:9): [True: 10, False: 370]
  ------------------
 1997|     10|        PyErr_Format(PyExc_AttributeError,
 1998|     10|                     "'%.100s' object has no attribute '%U'",
 1999|     10|                     tp->tp_name, name);
 2000|       |
 2001|     10|        _PyObject_SetAttributeErrorContext(obj, name);
 2002|     10|    }
 2003|  2.27k|  done:
 2004|  2.27k|    _PyThreadState_PopCStackRef(tstate, &cref);
 2005|  2.27k|    Py_DECREF(name);
  ------------------
  |  |  430|  2.27k|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  2.27k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.27k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2006|  2.27k|    return res;
 2007|    380|}
PyObject_GenericGetAttr:
 2011|    223|{
 2012|       |    return _PyObject_GenericGetAttrWithDict(obj, name, NULL, 0);
 2013|    223|}
_PyObject_GenericSetAttrWithDict:
 2018|  1.03k|{
 2019|  1.03k|    PyTypeObject *tp = Py_TYPE(obj);
  ------------------
  |  |  213|  1.03k|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  1.03k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.03k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2020|  1.03k|    PyObject *descr;
 2021|  1.03k|    descrsetfunc f;
 2022|  1.03k|    int res = -1;
 2023|       |
 2024|  1.03k|    assert(!PyType_IsSubtype(tp, &PyType_Type));
  ------------------
  |  Branch (2024:5): [True: 1.03k, False: 0]
  ------------------
 2025|  1.03k|    if (!PyUnicode_Check(name)){
  ------------------
  |  |  103|  1.03k|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|  1.03k|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (2025:9): [True: 0, False: 1.03k]
  ------------------
 2026|      0|        PyErr_Format(PyExc_TypeError,
 2027|      0|                     "attribute name must be string, not '%.200s'",
 2028|      0|                     Py_TYPE(name)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2029|      0|        return -1;
 2030|      0|    }
 2031|       |
 2032|  1.03k|    if (!_PyType_IsReady(tp) && PyType_Ready(tp) < 0) {
  ------------------
  |  Branch (2032:9): [True: 0, False: 1.03k]
  |  Branch (2032:33): [True: 0, False: 0]
  ------------------
 2033|      0|        return -1;
 2034|      0|    }
 2035|       |
 2036|  1.03k|    Py_INCREF(name);
  ------------------
  |  |  310|  1.03k|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  1.03k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.03k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2037|  1.03k|    _Py_INCREF_TYPE(tp);
  ------------------
  |  |  315|  1.03k|#  define _Py_INCREF_TYPE Py_INCREF
  |  |  ------------------
  |  |  |  |  310|  1.03k|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|  1.03k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|  1.03k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2038|       |
 2039|  1.03k|    PyThreadState *tstate = _PyThreadState_GET();
 2040|  1.03k|    _PyCStackRef cref;
 2041|  1.03k|    _PyThreadState_PushCStackRef(tstate, &cref);
 2042|       |
 2043|  1.03k|    _PyType_LookupStackRefAndVersion(tp, name, &cref.ref);
 2044|  1.03k|    descr = PyStackRef_AsPyObjectBorrow(cref.ref);
 2045|       |
 2046|  1.03k|    if (descr != NULL) {
  ------------------
  |  Branch (2046:9): [True: 161, False: 869]
  ------------------
 2047|    161|        f = Py_TYPE(descr)->tp_descr_set;
  ------------------
  |  |  213|    161|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    161|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    161|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2048|    161|        if (f != NULL) {
  ------------------
  |  Branch (2048:13): [True: 87, False: 74]
  ------------------
 2049|     87|            res = f(descr, obj, value);
 2050|     87|            goto done;
 2051|     87|        }
 2052|    161|    }
 2053|       |
 2054|    943|    if (dict == NULL) {
  ------------------
  |  Branch (2054:9): [True: 943, False: 0]
  ------------------
 2055|    943|        PyObject **dictptr;
 2056|       |
 2057|    943|        if ((tp->tp_flags & Py_TPFLAGS_INLINE_VALUES)) {
  ------------------
  |  |  472|    943|#define Py_TPFLAGS_INLINE_VALUES (1 << 2)
  ------------------
  |  Branch (2057:13): [True: 59, False: 884]
  ------------------
 2058|     59|            res = _PyObject_StoreInstanceAttribute(obj, name, value);
 2059|     59|            goto error_check;
 2060|     59|        }
 2061|       |
 2062|    884|        if ((tp->tp_flags & Py_TPFLAGS_MANAGED_DICT)) {
  ------------------
  |  |  482|    884|#define Py_TPFLAGS_MANAGED_DICT (1 << 4)
  ------------------
  |  Branch (2062:13): [True: 7, False: 877]
  ------------------
 2063|      7|            PyManagedDictPointer *managed_dict = _PyObject_ManagedDictPointer(obj);
 2064|      7|            dictptr = (PyObject **)&managed_dict->dict;
 2065|      7|        }
 2066|    877|        else {
 2067|    877|            dictptr = _PyObject_ComputedDictPointer(obj);
 2068|    877|        }
 2069|    884|        if (dictptr == NULL) {
  ------------------
  |  Branch (2069:13): [True: 0, False: 884]
  ------------------
 2070|      0|            if (descr == NULL) {
  ------------------
  |  Branch (2070:17): [True: 0, False: 0]
  ------------------
 2071|      0|                if (tp->tp_setattro == PyObject_GenericSetAttr) {
  ------------------
  |  Branch (2071:21): [True: 0, False: 0]
  ------------------
 2072|      0|                    PyErr_Format(PyExc_AttributeError,
 2073|      0|                                "'%.100s' object has no attribute '%U' and no "
 2074|      0|                                "__dict__ for setting new attributes",
 2075|      0|                                tp->tp_name, name);
 2076|      0|                }
 2077|      0|                else {
 2078|      0|                    PyErr_Format(PyExc_AttributeError,
 2079|      0|                                "'%.100s' object has no attribute '%U'",
 2080|      0|                                tp->tp_name, name);
 2081|      0|                }
 2082|      0|                _PyObject_SetAttributeErrorContext(obj, name);
 2083|      0|            }
 2084|      0|            else {
 2085|      0|                PyErr_Format(PyExc_AttributeError,
 2086|      0|                            "'%.100s' object attribute '%U' is read-only",
 2087|      0|                            tp->tp_name, name);
 2088|      0|            }
 2089|      0|            goto done;
 2090|      0|        }
 2091|    884|        else {
 2092|    884|            res = _PyObjectDict_SetItem(tp, obj, dictptr, name, value);
 2093|    884|        }
 2094|    884|    }
 2095|      0|    else {
 2096|      0|        Py_INCREF(dict);
  ------------------
  |  |  310|      0|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2097|      0|        if (value == NULL)
  ------------------
  |  Branch (2097:13): [True: 0, False: 0]
  ------------------
 2098|      0|            res = PyDict_DelItem(dict, name);
 2099|      0|        else
 2100|      0|            res = PyDict_SetItem(dict, name, value);
 2101|      0|        Py_DECREF(dict);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2102|      0|    }
 2103|    943|  error_check:
 2104|    943|    if (res < 0 && PyErr_ExceptionMatches(PyExc_KeyError)) {
  ------------------
  |  Branch (2104:9): [True: 0, False: 943]
  |  Branch (2104:20): [True: 0, False: 0]
  ------------------
 2105|      0|        PyErr_Format(PyExc_AttributeError,
 2106|      0|                        "'%.100s' object has no attribute '%U'",
 2107|      0|                        tp->tp_name, name);
 2108|      0|        _PyObject_SetAttributeErrorContext(obj, name);
 2109|      0|    }
 2110|  1.03k|  done:
 2111|  1.03k|    _PyThreadState_PopCStackRef(tstate, &cref);
 2112|  1.03k|    _Py_DECREF_TYPE(tp);
  ------------------
  |  |  316|  1.03k|#  define _Py_DECREF_TYPE Py_DECREF
  |  |  ------------------
  |  |  |  |  430|  1.03k|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|  1.03k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|  1.03k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2113|  1.03k|    Py_DECREF(name);
  ------------------
  |  |  430|  1.03k|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  1.03k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.03k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2114|  1.03k|    return res;
 2115|    943|}
PyObject_GenericSetAttr:
 2119|  1.03k|{
 2120|       |    return _PyObject_GenericSetAttrWithDict(obj, name, value, NULL);
 2121|  1.03k|}
PyObject_IsTrue:
 2139|    634|{
 2140|    634|    Py_ssize_t res;
 2141|    634|    if (v == Py_True)
  ------------------
  |  |   26|    634|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  ------------------
  |  |  |  |  171|    634|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    634|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2141:9): [True: 183, False: 451]
  ------------------
 2142|    183|        return 1;
 2143|    451|    if (v == Py_False)
  ------------------
  |  |   25|    451|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  ------------------
  |  |  |  |  171|    451|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    451|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2143:9): [True: 241, False: 210]
  ------------------
 2144|    241|        return 0;
 2145|    210|    if (v == Py_None)
  ------------------
  |  |  616|    210|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (2145:9): [True: 51, False: 159]
  ------------------
 2146|     51|        return 0;
 2147|    159|    else if (Py_TYPE(v)->tp_as_number != NULL &&
  ------------------
  |  |  213|    159|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    159|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    159|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2147:14): [True: 128, False: 31]
  ------------------
 2148|    128|             Py_TYPE(v)->tp_as_number->nb_bool != NULL)
  ------------------
  |  |  213|    128|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    128|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    128|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2148:14): [True: 7, False: 121]
  ------------------
 2149|      7|        res = (*Py_TYPE(v)->tp_as_number->nb_bool)(v);
  ------------------
  |  |  213|      7|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      7|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2150|    152|    else if (Py_TYPE(v)->tp_as_mapping != NULL &&
  ------------------
  |  |  213|    152|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    152|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    152|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2150:14): [True: 93, False: 59]
  ------------------
 2151|     93|             Py_TYPE(v)->tp_as_mapping->mp_length != NULL)
  ------------------
  |  |  213|     93|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     93|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     93|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2151:14): [True: 89, False: 4]
  ------------------
 2152|     89|        res = (*Py_TYPE(v)->tp_as_mapping->mp_length)(v);
  ------------------
  |  |  213|     89|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     89|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     89|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2153|     63|    else if (Py_TYPE(v)->tp_as_sequence != NULL &&
  ------------------
  |  |  213|     63|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     63|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     63|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2153:14): [True: 63, False: 0]
  ------------------
 2154|     63|             Py_TYPE(v)->tp_as_sequence->sq_length != NULL)
  ------------------
  |  |  213|     63|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     63|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     63|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2154:14): [True: 59, False: 4]
  ------------------
 2155|     59|        res = (*Py_TYPE(v)->tp_as_sequence->sq_length)(v);
  ------------------
  |  |  213|     59|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     59|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     59|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2156|      4|    else
 2157|      4|        return 1;
 2158|       |    /* if it is negative, it should be either -1 or -2 */
 2159|    155|    return (res > 0) ? 1 : Py_SAFE_DOWNCAST(res, Py_ssize_t, int);
  ------------------
  |  |  247|     54|#  define Py_SAFE_DOWNCAST(VALUE, WIDE, NARROW) _Py_STATIC_CAST(NARROW, (VALUE))
  |  |  ------------------
  |  |  |  |   34|     54|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (2159:12): [True: 101, False: 54]
  ------------------
 2160|    210|}
PyCallable_Check:
 2179|  2.26k|{
 2180|  2.26k|    if (x == NULL)
  ------------------
  |  Branch (2180:9): [True: 0, False: 2.26k]
  ------------------
 2181|      0|        return 0;
 2182|  2.26k|    return Py_TYPE(x)->tp_call != NULL;
  ------------------
  |  |  213|  2.26k|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  2.26k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.26k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2183|  2.26k|}
PyObject_Dir:
 2268|      1|{
 2269|      1|    return (obj == NULL) ? _dir_locals() : _dir_object(obj);
  ------------------
  |  Branch (2269:12): [True: 0, False: 1]
  ------------------
 2270|      1|}
_PyObject_InitState:
 2504|      1|{
 2505|       |#ifdef Py_TRACE_REFS
 2506|       |    if (refchain_init(interp) < 0) {
 2507|       |        return _PyStatus_NO_MEMORY();
 2508|       |    }
 2509|       |#endif
 2510|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 2511|      1|}
_PyTypes_InitTypes:
 2670|      1|{
 2671|       |    // All other static types (unless initialized elsewhere)
 2672|    121|    for (size_t i=0; i < Py_ARRAY_LENGTH(static_types); i++) {
  ------------------
  |  |  196|    121|    (sizeof(array) / sizeof((array)[0]))
  ------------------
  |  Branch (2672:22): [True: 120, False: 1]
  ------------------
 2673|    120|        PyTypeObject *type = static_types[i];
 2674|    120|        if (type == NULL) {
  ------------------
  |  Branch (2674:13): [True: 1, False: 119]
  ------------------
 2675|      1|            continue;
 2676|      1|        }
 2677|    119|        if (_PyStaticType_InitBuiltin(interp, type) < 0) {
  ------------------
  |  Branch (2677:13): [True: 0, False: 119]
  ------------------
 2678|      0|            return _PyStatus_ERR("Can't initialize builtin type");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 2679|      0|        }
 2680|    119|        if (type == &PyType_Type) {
  ------------------
  |  Branch (2680:13): [True: 1, False: 118]
  ------------------
 2681|       |            // Sanitify checks of the two most important types
 2682|      1|            assert(PyBaseObject_Type.tp_base == NULL);
  ------------------
  |  Branch (2682:13): [True: 1, False: 0]
  ------------------
 2683|      1|            assert(PyType_Type.tp_base == &PyBaseObject_Type);
  ------------------
  |  Branch (2683:13): [True: 1, False: 0]
  ------------------
 2684|      1|        }
 2685|    119|    }
 2686|       |
 2687|       |    // Cache __reduce__ from PyBaseObject_Type object
 2688|      1|    PyObject *baseobj_dict = _PyType_GetDict(&PyBaseObject_Type);
 2689|      1|    PyObject *baseobj_reduce = PyDict_GetItemWithError(baseobj_dict, &_Py_ID(__reduce__));
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2690|      1|    if (baseobj_reduce == NULL && PyErr_Occurred()) {
  ------------------
  |  Branch (2690:9): [True: 0, False: 1]
  |  Branch (2690:35): [True: 0, False: 0]
  ------------------
 2691|      0|        return _PyStatus_ERR("Can't get __reduce__ from base object");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 2692|      0|    }
 2693|      1|    _Py_INTERP_CACHED_OBJECT(interp, objreduce) = baseobj_reduce;
  ------------------
  |  |   22|      1|    (interp)->cached_objects.NAME
  ------------------
 2694|       |
 2695|       |    // Must be after static types are initialized
 2696|      1|    if (_Py_initialize_generic(interp) < 0) {
  ------------------
  |  Branch (2696:9): [True: 0, False: 1]
  ------------------
 2697|      0|        return _PyStatus_ERR("Can't initialize generic types");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 2698|      0|    }
 2699|       |
 2700|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 2701|      1|}
_Py_NewReference:
 2760|  25.5k|{
 2761|       |#ifdef Py_REF_DEBUG
 2762|       |    _Py_IncRefTotal(_PyThreadState_GET());
 2763|       |#endif
 2764|  25.5k|    new_reference(op);
 2765|  25.5k|}
_Py_NewReferenceNoTotal:
 2769|     28|{
 2770|     28|    new_reference(op);
 2771|     28|}
_Py_SetImmortalUntracked:
 2775|  3.30k|{
 2776|       |    // Check if already immortal to avoid degrading from static immortal to plain immortal
 2777|  3.30k|    if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|  3.30k|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  3.30k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  3.30k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 3, False: 3.30k]
  |  |  ------------------
  ------------------
 2778|      3|        return;
 2779|      3|    }
 2780|       |#ifdef Py_GIL_DISABLED
 2781|       |    _Py_atomic_store_uintptr_relaxed(&op->ob_tid, _Py_UNOWNED_TID);
 2782|       |    _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, _Py_IMMORTAL_REFCNT_LOCAL);
 2783|       |    _Py_atomic_store_ssize_relaxed(&op->ob_ref_shared, 0);
 2784|       |    _Py_atomic_or_uint8(&op->ob_gc_bits, _PyGC_BITS_DEFERRED);
 2785|       |#elif SIZEOF_VOID_P > 4
 2786|  3.30k|    op->ob_flags = _Py_IMMORTAL_FLAGS;
  ------------------
  |  |  581|  3.30k|#define _Py_IMMORTAL_FLAGS (1 << 0)
  ------------------
 2787|  3.30k|    op->ob_refcnt = _Py_IMMORTAL_INITIAL_REFCNT;
  ------------------
  |  |   47|  3.30k|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  ------------------
 2788|       |#else
 2789|       |    op->ob_refcnt = _Py_IMMORTAL_INITIAL_REFCNT;
 2790|       |#endif
 2791|  3.30k|}
_Py_SetImmortal:
 2795|  3.30k|{
 2796|  3.30k|    if (PyObject_IS_GC(op) && _PyObject_GC_IS_TRACKED(op)) {
  ------------------
  |  |   81|    414|#define _PyObject_GC_IS_TRACKED(op) _PyObject_GC_IS_TRACKED(_Py_CAST(PyObject*, op))
  |  |  ------------------
  |  |  |  |   37|    414|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  |  Branch (81:37): [True: 413, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (2796:9): [True: 414, False: 2.89k]
  ------------------
 2797|    413|        _PyObject_GC_UNTRACK(op);
  ------------------
  |  |  515|    413|        _PyObject_GC_UNTRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    413|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    413|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2798|    413|    }
 2799|  3.30k|    _Py_SetImmortalUntracked(op);
 2800|  3.30k|}
_PyObject_SetDeferredRefcount:
 2804|  3.72k|{
 2805|       |#ifdef Py_GIL_DISABLED
 2806|       |    assert(PyType_IS_GC(Py_TYPE(op)));
 2807|       |    assert(_Py_IsOwnedByCurrentThread(op));
 2808|       |    assert(op->ob_ref_shared == 0);
 2809|       |    _PyObject_SET_GC_BITS(op, _PyGC_BITS_DEFERRED);
 2810|       |    op->ob_ref_shared = _Py_REF_SHARED(_Py_REF_DEFERRED, 0);
 2811|       |#endif
 2812|  3.72k|}
PyUnstable_Object_EnableDeferredRefcount:
 2816|    126|{
 2817|       |#ifdef Py_GIL_DISABLED
 2818|       |    if (!PyType_IS_GC(Py_TYPE(op))) {
 2819|       |        // Deferred reference counting doesn't work
 2820|       |        // on untracked types.
 2821|       |        return 0;
 2822|       |    }
 2823|       |
 2824|       |    uint8_t bits = _Py_atomic_load_uint8(&op->ob_gc_bits);
 2825|       |    if ((bits & _PyGC_BITS_DEFERRED) != 0)
 2826|       |    {
 2827|       |        // Nothing to do.
 2828|       |        return 0;
 2829|       |    }
 2830|       |
 2831|       |    if (_Py_atomic_compare_exchange_uint8(&op->ob_gc_bits, &bits, bits | _PyGC_BITS_DEFERRED) == 0)
 2832|       |    {
 2833|       |        // Someone beat us to it!
 2834|       |        return 0;
 2835|       |    }
 2836|       |    _Py_atomic_add_ssize(&op->ob_ref_shared, _Py_REF_SHARED(_Py_REF_DEFERRED, 0));
 2837|       |    return 1;
 2838|       |#else
 2839|    126|    return 0;
 2840|    126|#endif
 2841|    126|}
_Py_Dealloc:
 3284|  10.1k|{
 3285|  10.1k|    PyTypeObject *type = Py_TYPE(op);
  ------------------
  |  |  213|  10.1k|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  10.1k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  10.1k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3286|  10.1k|    unsigned long gc_flag = type->tp_flags & Py_TPFLAGS_HAVE_GC;
  ------------------
  |  |  524|  10.1k|#define Py_TPFLAGS_HAVE_GC (1UL << 14)
  ------------------
 3287|  10.1k|    destructor dealloc = type->tp_dealloc;
 3288|  10.1k|    PyThreadState *tstate = _PyThreadState_GET();
 3289|  10.1k|    intptr_t margin = _Py_RecursionLimit_GetMargin(tstate);
 3290|  10.1k|    if (margin < 2 && gc_flag) {
  ------------------
  |  Branch (3290:9): [True: 0, False: 10.1k]
  |  Branch (3290:23): [True: 0, False: 0]
  ------------------
 3291|      0|        _PyTrash_thread_deposit_object(tstate, (PyObject *)op);
 3292|      0|        return;
 3293|      0|    }
 3294|       |#ifdef Py_DEBUG
 3295|       |#if !defined(Py_GIL_DISABLED) && !defined(Py_STACKREF_DEBUG)
 3296|       |    /* This assertion doesn't hold for the free-threading build, as
 3297|       |     * PyStackRef_CLOSE_SPECIALIZED is not implemented */
 3298|       |    assert(tstate->current_frame == NULL || tstate->current_frame->stackpointer != NULL);
 3299|       |#endif
 3300|       |    PyObject *old_exc = tstate != NULL ? tstate->current_exception : NULL;
 3301|       |    // Keep the old exception type alive to prevent undefined behavior
 3302|       |    // on (tstate->curexc_type != old_exc_type) below
 3303|       |    Py_XINCREF(old_exc);
 3304|       |    // Make sure that type->tp_name remains valid
 3305|       |    Py_INCREF(type);
 3306|       |#endif
 3307|       |
 3308|       |#ifdef Py_TRACE_REFS
 3309|       |    _Py_ForgetReference(op);
 3310|       |#endif
 3311|  10.1k|    _PyReftracerTrack(op, PyRefTracer_DESTROY);
  ------------------
  |  |  112|  10.1k|    do { \
  |  |  113|  10.1k|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  114|  10.1k|        if (tracer->tracer_func != NULL) { \
  |  |  ------------------
  |  |  |  Branch (114:13): [True: 0, False: 10.1k]
  |  |  ------------------
  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  117|      0|        } \
  |  |  118|  10.1k|    } while(0)
  |  |  ------------------
  |  |  |  Branch (118:13): [Folded, False: 10.1k]
  |  |  ------------------
  ------------------
 3312|  10.1k|    (*dealloc)(op);
 3313|       |
 3314|       |#ifdef Py_DEBUG
 3315|       |    // gh-89373: The tp_dealloc function must leave the current exception
 3316|       |    // unchanged.
 3317|       |    if (tstate != NULL && tstate->current_exception != old_exc) {
 3318|       |        const char *err;
 3319|       |        if (old_exc == NULL) {
 3320|       |            err = "Deallocator of type '%s' raised an exception";
 3321|       |        }
 3322|       |        else if (tstate->current_exception == NULL) {
 3323|       |            err = "Deallocator of type '%s' cleared the current exception";
 3324|       |        }
 3325|       |        else {
 3326|       |            // It can happen if dealloc() normalized the current exception.
 3327|       |            // A deallocator function must not change the current exception,
 3328|       |            // not even normalize it.
 3329|       |            err = "Deallocator of type '%s' overrode the current exception";
 3330|       |        }
 3331|       |        _Py_FatalErrorFormat(__func__, err, type->tp_name);
 3332|       |    }
 3333|       |    Py_XDECREF(old_exc);
 3334|       |    Py_DECREF(type);
 3335|       |#endif
 3336|  10.1k|    if (tstate->delete_later && margin >= 4 && gc_flag) {
  ------------------
  |  Branch (3336:9): [True: 0, False: 10.1k]
  |  Branch (3336:33): [True: 0, False: 0]
  |  Branch (3336:48): [True: 0, False: 0]
  ------------------
 3337|      0|        _PyTrash_thread_destroy_chain(tstate);
 3338|      0|    }
 3339|  10.1k|}
_Py_GetConstant_Init:
 3442|      1|{
 3443|      1|    constants[Py_CONSTANT_ZERO] = _PyLong_GetZero();
  ------------------
  |  |  595|      1|#define Py_CONSTANT_ZERO 5
  ------------------
 3444|      1|    constants[Py_CONSTANT_ONE] = _PyLong_GetOne();
  ------------------
  |  |  596|      1|#define Py_CONSTANT_ONE 6
  ------------------
 3445|      1|    constants[Py_CONSTANT_EMPTY_STR] = PyUnicode_New(0, 0);
  ------------------
  |  |  597|      1|#define Py_CONSTANT_EMPTY_STR 7
  ------------------
 3446|      1|    constants[Py_CONSTANT_EMPTY_BYTES] = PyBytes_FromStringAndSize(NULL, 0);
  ------------------
  |  |  598|      1|#define Py_CONSTANT_EMPTY_BYTES 8
  ------------------
 3447|      1|    constants[Py_CONSTANT_EMPTY_TUPLE] = PyTuple_New(0);
  ------------------
  |  |  599|      1|#define Py_CONSTANT_EMPTY_TUPLE 9
  ------------------
 3448|      1|#ifndef NDEBUG
 3449|     11|    for (size_t i=0; i < Py_ARRAY_LENGTH(constants); i++) {
  ------------------
  |  |  196|     11|    (sizeof(array) / sizeof((array)[0]))
  ------------------
  |  Branch (3449:22): [True: 10, False: 1]
  ------------------
 3450|     10|        assert(constants[i] != NULL);
  ------------------
  |  Branch (3450:9): [True: 10, False: 0]
  ------------------
 3451|     10|        assert(_Py_IsImmortal(constants[i]));
  ------------------
  |  Branch (3451:9): [True: 10, False: 0]
  ------------------
 3452|     10|    }
 3453|      1|#endif
 3454|      1|}
Py_GetConstant:
 3458|      3|{
 3459|      3|    if (constant_id < Py_ARRAY_LENGTH(constants)) {
  ------------------
  |  |  196|      3|    (sizeof(array) / sizeof((array)[0]))
  ------------------
  |  Branch (3459:9): [True: 3, False: 0]
  ------------------
 3460|      3|        return constants[constant_id];
 3461|      3|    }
 3462|      0|    else {
 3463|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
 3464|       |        return NULL;
 3465|      0|    }
 3466|      3|}
Py_GetConstantBorrowed:
 3471|      2|{
 3472|       |    // All constants are immortal
 3473|      2|    return Py_GetConstant(constant_id);
 3474|      2|}
PyUnstable_IsImmortal:
 3478|      1|{
 3479|       |    /* Checking a reference count requires a thread state */
 3480|      1|    _Py_AssertHoldsTstate();
  ------------------
  |  |  306|      1|#define _Py_AssertHoldsTstate() _Py_AssertHoldsTstateFunc(__func__)
  ------------------
 3481|      1|    assert(op != NULL);
  ------------------
  |  Branch (3481:5): [True: 1, False: 0]
  ------------------
 3482|      1|    return _Py_IsImmortal(op);
  ------------------
  |  |  137|      1|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3483|      1|}
_PyObject_VisitType:
 3495|      8|{
 3496|      8|    assert(op != NULL);
  ------------------
  |  Branch (3496:5): [True: 8, False: 0]
  ------------------
 3497|      8|    PyTypeObject *tp = Py_TYPE(op);
  ------------------
  |  |  213|      8|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      8|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3498|      8|    _PyObject_ASSERT((PyObject *)tp, PyType_HasFeature(tp, Py_TPFLAGS_HEAPTYPE));
  ------------------
  |  |  423|      8|    _PyObject_ASSERT_WITH_MSG((obj), expr, NULL)
  |  |  ------------------
  |  |  |  |  421|      8|    _PyObject_ASSERT_FROM((obj), expr, (msg), __FILE__, __LINE__, __func__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  414|      8|    ((expr) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (414:6): [True: 8, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  415|      8|      ? (void)(0) \
  |  |  |  |  |  |  416|      8|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3499|      8|    Py_VISIT(tp);
  ------------------
  |  |  194|      8|    do {                                                                \
  |  |  195|      8|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 8, False: 0]
  |  |  ------------------
  |  |  196|      8|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      8|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      8|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 8]
  |  |  ------------------
  |  |  198|      8|                return vret;                                            \
  |  |  199|      8|        }                                                               \
  |  |  200|      8|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 8]
  |  |  ------------------
  ------------------
 3500|      8|    return 0;
 3501|      8|}
object.c:do_richcompare:
 1049|  4.06k|{
 1050|  4.06k|    richcmpfunc f;
 1051|  4.06k|    PyObject *res;
 1052|  4.06k|    int checked_reverse_op = 0;
 1053|       |
 1054|  4.06k|    if (!Py_IS_TYPE(v, Py_TYPE(w)) &&
  ------------------
  |  |  215|  8.13k|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|  4.06k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  4.06k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1054:9): [True: 3, False: 4.06k]
  ------------------
 1055|      3|        PyType_IsSubtype(Py_TYPE(w), Py_TYPE(v)) &&
  ------------------
  |  |  213|      3|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      PyType_IsSubtype(Py_TYPE(w), Py_TYPE(v)) &&
  ------------------
  |  |  213|      3|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1055:9): [True: 0, False: 3]
  ------------------
 1056|      0|        (f = Py_TYPE(w)->tp_richcompare) != NULL) {
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1056:9): [True: 0, False: 0]
  ------------------
 1057|      0|        checked_reverse_op = 1;
 1058|      0|        res = (*f)(w, v, _Py_SwappedOp[op]);
 1059|      0|        if (res != Py_NotImplemented)
  ------------------
  |  |  640|      0|#  define Py_NotImplemented (&_Py_NotImplementedStruct)
  ------------------
  |  Branch (1059:13): [True: 0, False: 0]
  ------------------
 1060|      0|            return res;
 1061|      0|        Py_DECREF(res);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1062|      0|    }
 1063|  4.06k|    if ((f = Py_TYPE(v)->tp_richcompare) != NULL) {
  ------------------
  |  |  213|  4.06k|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  4.06k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  4.06k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1063:9): [True: 4.06k, False: 0]
  ------------------
 1064|  4.06k|        res = (*f)(v, w, op);
 1065|  4.06k|        if (res != Py_NotImplemented)
  ------------------
  |  |  640|  4.06k|#  define Py_NotImplemented (&_Py_NotImplementedStruct)
  ------------------
  |  Branch (1065:13): [True: 4.06k, False: 0]
  ------------------
 1066|  4.06k|            return res;
 1067|      0|        Py_DECREF(res);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1068|      0|    }
 1069|      0|    if (!checked_reverse_op && (f = Py_TYPE(w)->tp_richcompare) != NULL) {
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1069:9): [True: 0, False: 0]
  |  Branch (1069:32): [True: 0, False: 0]
  ------------------
 1070|      0|        res = (*f)(w, v, _Py_SwappedOp[op]);
 1071|      0|        if (res != Py_NotImplemented)
  ------------------
  |  |  640|      0|#  define Py_NotImplemented (&_Py_NotImplementedStruct)
  ------------------
  |  Branch (1071:13): [True: 0, False: 0]
  ------------------
 1072|      0|            return res;
 1073|      0|        Py_DECREF(res);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1074|      0|    }
 1075|       |    /* If neither object implements it, provide a sensible default
 1076|       |       for == and !=, but raise an exception for ordering. */
 1077|      0|    switch (op) {
 1078|      0|    case Py_EQ:
  ------------------
  |  |  654|      0|#define Py_EQ 2
  ------------------
  |  Branch (1078:5): [True: 0, False: 0]
  ------------------
 1079|      0|        res = (v == w) ? Py_True : Py_False;
  ------------------
  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      res = (v == w) ? Py_True : Py_False;
  ------------------
  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1079:15): [True: 0, False: 0]
  ------------------
 1080|      0|        break;
 1081|      0|    case Py_NE:
  ------------------
  |  |  655|      0|#define Py_NE 3
  ------------------
  |  Branch (1081:5): [True: 0, False: 0]
  ------------------
 1082|      0|        res = (v != w) ? Py_True : Py_False;
  ------------------
  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      res = (v != w) ? Py_True : Py_False;
  ------------------
  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1082:15): [True: 0, False: 0]
  ------------------
 1083|      0|        break;
 1084|      0|    default:
  ------------------
  |  Branch (1084:5): [True: 0, False: 0]
  ------------------
 1085|      0|        _PyErr_Format(tstate, PyExc_TypeError,
 1086|      0|                      "'%s' not supported between instances of '%.100s' and '%.100s'",
 1087|      0|                      opstrings[op],
 1088|      0|                      Py_TYPE(v)->tp_name,
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1089|      0|                      Py_TYPE(w)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1090|      0|        return NULL;
 1091|      0|    }
 1092|      0|    return Py_NewRef(res);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1093|      0|}
object.c:_dir_object:
 2235|      1|{
 2236|      1|    PyObject *result, *sorted;
 2237|      1|    PyObject *dirfunc = _PyObject_LookupSpecial(obj, &_Py_ID(__dir__));
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2238|       |
 2239|      1|    assert(obj != NULL);
  ------------------
  |  Branch (2239:5): [True: 1, False: 0]
  ------------------
 2240|      1|    if (dirfunc == NULL) {
  ------------------
  |  Branch (2240:9): [True: 0, False: 1]
  ------------------
 2241|      0|        if (!PyErr_Occurred())
  ------------------
  |  Branch (2241:13): [True: 0, False: 0]
  ------------------
 2242|      0|            PyErr_SetString(PyExc_TypeError, "object does not provide __dir__");
 2243|      0|        return NULL;
 2244|      0|    }
 2245|       |    /* use __dir__ */
 2246|      1|    result = _PyObject_CallNoArgs(dirfunc);
 2247|      1|    Py_DECREF(dirfunc);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2248|      1|    if (result == NULL)
  ------------------
  |  Branch (2248:9): [True: 0, False: 1]
  ------------------
 2249|      0|        return NULL;
 2250|       |    /* return sorted(result) */
 2251|      1|    sorted = PySequence_List(result);
 2252|      1|    Py_DECREF(result);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2253|      1|    if (sorted == NULL)
  ------------------
  |  Branch (2253:9): [True: 0, False: 1]
  ------------------
 2254|      0|        return NULL;
 2255|      1|    if (PyList_Sort(sorted)) {
  ------------------
  |  Branch (2255:9): [True: 0, False: 1]
  ------------------
 2256|      0|        Py_DECREF(sorted);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2257|      0|        return NULL;
 2258|      0|    }
 2259|      1|    return sorted;
 2260|      1|}
object.c:none_repr:
 2281|      1|{
 2282|      1|    return PyUnicode_FromString("None");
 2283|      1|}
object.c:new_reference:
 2727|  25.5k|{
 2728|       |    // Skip the immortal object check in Py_SET_REFCNT; always set refcnt to 1
 2729|  25.5k|#if !defined(Py_GIL_DISABLED)
 2730|  25.5k|#if SIZEOF_VOID_P > 4
 2731|  25.5k|    op->ob_refcnt_full = 1;
 2732|  25.5k|    assert(op->ob_refcnt == 1);
  ------------------
  |  Branch (2732:5): [True: 25.5k, False: 0]
  ------------------
 2733|  25.5k|    assert(op->ob_flags == 0);
  ------------------
  |  Branch (2733:5): [True: 25.5k, False: 0]
  ------------------
 2734|       |#else
 2735|       |    op->ob_refcnt = 1;
 2736|       |#endif
 2737|       |#else
 2738|       |    op->ob_flags = 0;
 2739|       |    op->ob_mutex = (PyMutex){ 0 };
 2740|       |#ifdef _Py_THREAD_SANITIZER
 2741|       |    _Py_atomic_store_uintptr_relaxed(&op->ob_tid, _Py_ThreadId());
 2742|       |    _Py_atomic_store_uint8_relaxed(&op->ob_gc_bits, 0);
 2743|       |    _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, 1);
 2744|       |    _Py_atomic_store_ssize_relaxed(&op->ob_ref_shared, 0);
 2745|       |#else
 2746|       |    op->ob_tid = _Py_ThreadId();
 2747|       |    op->ob_gc_bits = 0;
 2748|       |    op->ob_ref_local = 1;
 2749|       |    op->ob_ref_shared = 0;
 2750|       |#endif
 2751|       |#endif
 2752|       |#ifdef Py_TRACE_REFS
 2753|       |    _Py_AddToAllObjects(op);
 2754|       |#endif
 2755|  25.5k|    _PyReftracerTrack(op, PyRefTracer_CREATE);
  ------------------
  |  |  112|  25.5k|    do { \
  |  |  113|  25.5k|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  114|  25.5k|        if (tracer->tracer_func != NULL) { \
  |  |  ------------------
  |  |  |  Branch (114:13): [True: 0, False: 25.5k]
  |  |  ------------------
  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  117|      0|        } \
  |  |  118|  25.5k|    } while(0)
  |  |  ------------------
  |  |  |  Branch (118:13): [Folded, False: 25.5k]
  |  |  ------------------
  ------------------
 2756|  25.5k|}

_PyMem_RawMalloc:
   59|  1.89k|{
   60|       |    /* PyMem_RawMalloc(0) means malloc(1). Some systems would return NULL
   61|       |       for malloc(0), which would be treated as an error. Some platforms would
   62|       |       return a pointer with no memory behind it, which would break pymalloc.
   63|       |       To solve these problems, allocate an extra byte. */
   64|  1.89k|    if (size == 0)
  ------------------
  |  Branch (64:9): [True: 9, False: 1.89k]
  ------------------
   65|      9|        size = 1;
   66|  1.89k|    return malloc(size);
   67|  1.89k|}
_PyMem_RawCalloc:
   71|      6|{
   72|       |    /* PyMem_RawCalloc(0, 0) means calloc(1, 1). Some systems would return NULL
   73|       |       for calloc(0, 0), which would be treated as an error. Some platforms
   74|       |       would return a pointer with no memory behind it, which would break
   75|       |       pymalloc.  To solve these problems, allocate an extra byte. */
   76|      6|    if (nelem == 0 || elsize == 0) {
  ------------------
  |  Branch (76:9): [True: 0, False: 6]
  |  Branch (76:23): [True: 0, False: 6]
  ------------------
   77|      0|        nelem = 1;
   78|      0|        elsize = 1;
   79|      0|    }
   80|      6|    return calloc(nelem, elsize);
   81|      6|}
_PyMem_RawRealloc:
   85|    174|{
   86|    174|    if (size == 0)
  ------------------
  |  Branch (86:9): [True: 0, False: 174]
  ------------------
   87|      0|        size = 1;
   88|    174|    return realloc(ptr, size);
   89|    174|}
_PyMem_RawFree:
   93|    492|{
   94|    492|    free(ptr);
   95|    492|}
_PyMem_DefaultRawMalloc:
  469|      7|{
  470|       |#ifdef Py_DEBUG
  471|       |    return _PyMem_DebugRawMalloc(&_PyRuntime.allocators.debug.raw, size);
  472|       |#else
  473|       |    return _PyMem_RawMalloc(NULL, size);
  474|      7|#endif
  475|      7|}
_PyMem_DefaultRawFree:
  499|      8|{
  500|       |#ifdef Py_DEBUG
  501|       |    _PyMem_DebugRawFree(&_PyRuntime.allocators.debug.raw, ptr);
  502|       |#else
  503|       |    _PyMem_RawFree(NULL, ptr);
  504|      8|#endif
  505|      8|}
_PyMem_DefaultRawWcsdup:
  509|      5|{
  510|      5|    assert(str != NULL);
  ------------------
  |  Branch (510:5): [True: 5, False: 0]
  ------------------
  511|       |
  512|      5|    size_t len = wcslen(str);
  513|      5|    if (len > (size_t)PY_SSIZE_T_MAX / sizeof(wchar_t) - 1) {
  ------------------
  |  |  137|      5|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (513:9): [True: 0, False: 5]
  ------------------
  514|      0|        return NULL;
  515|      0|    }
  516|       |
  517|      5|    size_t size = (len + 1) * sizeof(wchar_t);
  518|      5|    wchar_t *str2 = _PyMem_DefaultRawMalloc(size);
  519|      5|    if (str2 == NULL) {
  ------------------
  |  Branch (519:9): [True: 0, False: 5]
  ------------------
  520|      0|        return NULL;
  521|      0|    }
  522|       |
  523|      5|    memcpy(str2, str, size);
  524|      5|    return str2;
  525|      5|}
_PyMem_ArenaAlloc:
  621|      3|{
  622|       |#ifdef MS_WINDOWS
  623|       |#  ifdef PYMALLOC_USE_HUGEPAGES
  624|       |    if (_PyRuntime.allocators.use_hugepages) {
  625|       |        SIZE_T lp_size = GetLargePageMinimum();
  626|       |        if (lp_size > 0 && size % lp_size == 0) {
  627|       |            void *ptr = VirtualAlloc(NULL, size,
  628|       |                            MEM_COMMIT | MEM_RESERVE | MEM_LARGE_PAGES,
  629|       |                            PAGE_READWRITE);
  630|       |            if (ptr != NULL)
  631|       |                return ptr;
  632|       |        }
  633|       |    }
  634|       |    /* Fall back to regular pages */
  635|       |#  endif
  636|       |    return VirtualAlloc(NULL, size,
  637|       |                        MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
  638|       |#elif defined(ARENAS_USE_MMAP)
  639|       |    void *ptr;
  640|       |#  ifdef PYMALLOC_USE_HUGEPAGES
  641|       |#    ifdef MAP_HUGETLB
  642|       |    if (_PyRuntime.allocators.use_hugepages) {
  643|       |        size_t hp_size = _pymalloc_system_hugepage_size();
  644|       |        /* Only use huge pages if the arena size is a multiple of the
  645|       |         * system's default huge page size.  When the arena is smaller
  646|       |         * than the huge page, mmap still succeeds but silently
  647|       |         * allocates an entire huge page; the subsequent munmap with
  648|       |         * the smaller arena size then fails with EINVAL, leaking
  649|       |         * all of that memory. */
  650|       |        if (hp_size > 0 && size % hp_size == 0) {
  651|       |            ptr = mmap(NULL, size, PROT_READ|PROT_WRITE,
  652|       |                       MAP_PRIVATE|MAP_ANONYMOUS|MAP_HUGETLB, -1, 0);
  653|       |            if (ptr != MAP_FAILED) {
  654|       |                assert(ptr != NULL);
  655|       |                (void)_PyAnnotateMemoryMap(ptr, size, "cpython:pymalloc:hugepage");
  656|       |                return ptr;
  657|       |            }
  658|       |        }
  659|       |    }
  660|       |    /* Fall back to regular pages */
  661|       |#    endif
  662|       |#  endif
  663|      3|    ptr = mmap(NULL, size, PROT_READ|PROT_WRITE,
  664|      3|               MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
  665|      3|    if (ptr == MAP_FAILED)
  ------------------
  |  Branch (665:9): [True: 0, False: 3]
  ------------------
  666|      0|        return NULL;
  667|      3|    assert(ptr != NULL);
  ------------------
  |  Branch (667:5): [True: 3, False: 0]
  ------------------
  668|      3|#ifdef MADV_HUGEPAGE
  669|      3|    (void)madvise(ptr, size, MADV_HUGEPAGE);
  670|      3|#endif
  671|      3|    (void)_PyAnnotateMemoryMap(ptr, size, "cpython:pymalloc");
  672|      3|    return ptr;
  673|       |#else
  674|       |    return malloc(size);
  675|       |#endif
  676|      3|}
PyMem_GetAllocator:
 1130|      1|{
 1131|      1|    PyMutex_Lock(&ALLOCATORS_MUTEX);
  ------------------
  |  |   59|      1|#define PyMutex_Lock _PyMutex_Lock
  ------------------
                  PyMutex_Lock(&ALLOCATORS_MUTEX);
  ------------------
  |  |  713|      1|#define ALLOCATORS_MUTEX (_PyRuntime.allocators.mutex)
  ------------------
 1132|      1|    get_allocator_unlocked(domain, allocator);
 1133|      1|    PyMutex_Unlock(&ALLOCATORS_MUTEX);
  ------------------
  |  |   70|      1|#define PyMutex_Unlock _PyMutex_Unlock
  ------------------
                  PyMutex_Unlock(&ALLOCATORS_MUTEX);
  ------------------
  |  |  713|      1|#define ALLOCATORS_MUTEX (_PyRuntime.allocators.mutex)
  ------------------
 1134|      1|}
_PyObject_VirtualAlloc:
 1181|      1|{
 1182|      1|    size_t alloc_size = _pymalloc_virtual_alloc_size(size);
 1183|      1|    if (alloc_size == 0 && size != 0) {
  ------------------
  |  Branch (1183:9): [True: 0, False: 1]
  |  Branch (1183:28): [True: 0, False: 0]
  ------------------
 1184|      0|        return NULL;
 1185|      0|    }
 1186|      1|    return _PyObject_Arena.alloc(_PyObject_Arena.ctx, alloc_size);
  ------------------
  |  |  718|      1|#define _PyObject_Arena (_PyRuntime.allocators.obj_arena)
  ------------------
                  return _PyObject_Arena.alloc(_PyObject_Arena.ctx, alloc_size);
  ------------------
  |  |  718|      1|#define _PyObject_Arena (_PyRuntime.allocators.obj_arena)
  ------------------
 1187|      1|}
PyMem_RawMalloc:
 1204|  1.89k|{
 1205|       |    /*
 1206|       |     * Limit ourselves to PY_SSIZE_T_MAX bytes to prevent security holes.
 1207|       |     * Most python internals blindly use a signed Py_ssize_t to track
 1208|       |     * things without checking for overflows or negatives.
 1209|       |     * As size_t is unsigned, checking for size < 0 is not required.
 1210|       |     */
 1211|  1.89k|    if (size > (size_t)PY_SSIZE_T_MAX)
  ------------------
  |  |  137|  1.89k|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (1211:9): [True: 0, False: 1.89k]
  ------------------
 1212|      0|        return NULL;
 1213|  1.89k|    return _PyMem_Raw.malloc(_PyMem_Raw.ctx, size);
  ------------------
  |  |  714|  1.89k|#define _PyMem_Raw (_PyRuntime.allocators.standard.raw)
  ------------------
                  return _PyMem_Raw.malloc(_PyMem_Raw.ctx, size);
  ------------------
  |  |  714|  1.89k|#define _PyMem_Raw (_PyRuntime.allocators.standard.raw)
  ------------------
 1214|  1.89k|}
PyMem_RawCalloc:
 1218|      6|{
 1219|       |    /* see PyMem_RawMalloc() */
 1220|      6|    if (elsize != 0 && nelem > (size_t)PY_SSIZE_T_MAX / elsize)
  ------------------
  |  |  137|      6|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (1220:9): [True: 6, False: 0]
  |  Branch (1220:24): [True: 0, False: 6]
  ------------------
 1221|      0|        return NULL;
 1222|      6|    return _PyMem_Raw.calloc(_PyMem_Raw.ctx, nelem, elsize);
  ------------------
  |  |  714|      6|#define _PyMem_Raw (_PyRuntime.allocators.standard.raw)
  ------------------
                  return _PyMem_Raw.calloc(_PyMem_Raw.ctx, nelem, elsize);
  ------------------
  |  |  714|      6|#define _PyMem_Raw (_PyRuntime.allocators.standard.raw)
  ------------------
 1223|      6|}
PyMem_RawRealloc:
 1227|    174|{
 1228|       |    /* see PyMem_RawMalloc() */
 1229|    174|    if (new_size > (size_t)PY_SSIZE_T_MAX)
  ------------------
  |  |  137|    174|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (1229:9): [True: 0, False: 174]
  ------------------
 1230|      0|        return NULL;
 1231|    174|    return _PyMem_Raw.realloc(_PyMem_Raw.ctx, ptr, new_size);
  ------------------
  |  |  714|    174|#define _PyMem_Raw (_PyRuntime.allocators.standard.raw)
  ------------------
                  return _PyMem_Raw.realloc(_PyMem_Raw.ctx, ptr, new_size);
  ------------------
  |  |  714|    174|#define _PyMem_Raw (_PyRuntime.allocators.standard.raw)
  ------------------
 1232|    174|}
PyMem_RawFree:
 1235|    484|{
 1236|    484|    _PyMem_Raw.free(_PyMem_Raw.ctx, ptr);
  ------------------
  |  |  714|    484|#define _PyMem_Raw (_PyRuntime.allocators.standard.raw)
  ------------------
                  _PyMem_Raw.free(_PyMem_Raw.ctx, ptr);
  ------------------
  |  |  714|    484|#define _PyMem_Raw (_PyRuntime.allocators.standard.raw)
  ------------------
 1237|    484|}
PyMem_Malloc:
 1246|  1.61k|{
 1247|       |    /* see PyMem_RawMalloc() */
 1248|  1.61k|    if (size > (size_t)PY_SSIZE_T_MAX)
  ------------------
  |  |  137|  1.61k|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (1248:9): [True: 0, False: 1.61k]
  ------------------
 1249|      0|        return NULL;
 1250|  1.61k|    OBJECT_STAT_INC_COND(allocations512, size < 512);
  ------------------
  |  |   78|  1.61k|#define OBJECT_STAT_INC_COND(name, cond) ((void)0)
  ------------------
 1251|  1.61k|    OBJECT_STAT_INC_COND(allocations4k, size >= 512 && size < 4094);
  ------------------
  |  |   78|  1.61k|#define OBJECT_STAT_INC_COND(name, cond) ((void)0)
  ------------------
 1252|  1.61k|    OBJECT_STAT_INC_COND(allocations_big, size >= 4094);
  ------------------
  |  |   78|  1.61k|#define OBJECT_STAT_INC_COND(name, cond) ((void)0)
  ------------------
 1253|  1.61k|    OBJECT_STAT_INC(allocations);
  ------------------
  |  |   77|  1.61k|#define OBJECT_STAT_INC(name) ((void)0)
  ------------------
 1254|  1.61k|    return _PyMem.malloc(_PyMem.ctx, size);
  ------------------
  |  |  715|  1.61k|#define _PyMem (_PyRuntime.allocators.standard.mem)
  ------------------
                  return _PyMem.malloc(_PyMem.ctx, size);
  ------------------
  |  |  715|  1.61k|#define _PyMem (_PyRuntime.allocators.standard.mem)
  ------------------
 1255|  1.61k|}
PyMem_Calloc:
 1259|     44|{
 1260|       |    /* see PyMem_RawMalloc() */
 1261|     44|    if (elsize != 0 && nelem > (size_t)PY_SSIZE_T_MAX / elsize)
  ------------------
  |  |  137|     44|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (1261:9): [True: 44, False: 0]
  |  Branch (1261:24): [True: 0, False: 44]
  ------------------
 1262|      0|        return NULL;
 1263|     44|    OBJECT_STAT_INC_COND(allocations512, elsize < 512);
  ------------------
  |  |   78|     44|#define OBJECT_STAT_INC_COND(name, cond) ((void)0)
  ------------------
 1264|     44|    OBJECT_STAT_INC_COND(allocations4k, elsize >= 512 && elsize < 4094);
  ------------------
  |  |   78|     44|#define OBJECT_STAT_INC_COND(name, cond) ((void)0)
  ------------------
 1265|     44|    OBJECT_STAT_INC_COND(allocations_big, elsize >= 4094);
  ------------------
  |  |   78|     44|#define OBJECT_STAT_INC_COND(name, cond) ((void)0)
  ------------------
 1266|     44|    OBJECT_STAT_INC(allocations);
  ------------------
  |  |   77|     44|#define OBJECT_STAT_INC(name) ((void)0)
  ------------------
 1267|     44|    return _PyMem.calloc(_PyMem.ctx, nelem, elsize);
  ------------------
  |  |  715|     44|#define _PyMem (_PyRuntime.allocators.standard.mem)
  ------------------
                  return _PyMem.calloc(_PyMem.ctx, nelem, elsize);
  ------------------
  |  |  715|     44|#define _PyMem (_PyRuntime.allocators.standard.mem)
  ------------------
 1268|     44|}
PyMem_Realloc:
 1272|    490|{
 1273|       |    /* see PyMem_RawMalloc() */
 1274|    490|    if (new_size > (size_t)PY_SSIZE_T_MAX)
  ------------------
  |  |  137|    490|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (1274:9): [True: 0, False: 490]
  ------------------
 1275|      0|        return NULL;
 1276|    490|    return _PyMem.realloc(_PyMem.ctx, ptr, new_size);
  ------------------
  |  |  715|    490|#define _PyMem (_PyRuntime.allocators.standard.mem)
  ------------------
                  return _PyMem.realloc(_PyMem.ctx, ptr, new_size);
  ------------------
  |  |  715|    490|#define _PyMem (_PyRuntime.allocators.standard.mem)
  ------------------
 1277|    490|}
PyMem_Free:
 1281|  1.08k|{
 1282|  1.08k|    OBJECT_STAT_INC(frees);
  ------------------
  |  |   77|  1.08k|#define OBJECT_STAT_INC(name) ((void)0)
  ------------------
 1283|  1.08k|    _PyMem.free(_PyMem.ctx, ptr);
  ------------------
  |  |  715|  1.08k|#define _PyMem (_PyRuntime.allocators.standard.mem)
  ------------------
                  _PyMem.free(_PyMem.ctx, ptr);
  ------------------
  |  |  715|  1.08k|#define _PyMem (_PyRuntime.allocators.standard.mem)
  ------------------
 1284|  1.08k|}
_PyMem_RawWcsdup:
 1293|     41|{
 1294|     41|    assert(str != NULL);
  ------------------
  |  Branch (1294:5): [True: 41, False: 0]
  ------------------
 1295|       |
 1296|     41|    size_t len = wcslen(str);
 1297|     41|    if (len > (size_t)PY_SSIZE_T_MAX / sizeof(wchar_t) - 1) {
  ------------------
  |  |  137|     41|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (1297:9): [True: 0, False: 41]
  ------------------
 1298|      0|        return NULL;
 1299|      0|    }
 1300|       |
 1301|     41|    size_t size = (len + 1) * sizeof(wchar_t);
 1302|     41|    wchar_t *str2 = PyMem_RawMalloc(size);
 1303|     41|    if (str2 == NULL) {
  ------------------
  |  Branch (1303:9): [True: 0, False: 41]
  ------------------
 1304|      0|        return NULL;
 1305|      0|    }
 1306|       |
 1307|     41|    memcpy(str2, str, size);
 1308|     41|    return str2;
 1309|     41|}
_PyMem_RawStrdup:
 1313|      5|{
 1314|      5|    assert(str != NULL);
  ------------------
  |  Branch (1314:5): [True: 5, False: 0]
  ------------------
 1315|      5|    size_t size = strlen(str) + 1;
 1316|      5|    char *copy = PyMem_RawMalloc(size);
 1317|      5|    if (copy == NULL) {
  ------------------
  |  Branch (1317:9): [True: 0, False: 5]
  ------------------
 1318|      0|        return NULL;
 1319|      0|    }
 1320|      5|    memcpy(copy, str, size);
 1321|      5|    return copy;
 1322|      5|}
PyObject_Malloc:
 1698|  22.5k|{
 1699|       |    /* see PyMem_RawMalloc() */
 1700|  22.5k|    if (size > (size_t)PY_SSIZE_T_MAX)
  ------------------
  |  |  137|  22.5k|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (1700:9): [True: 0, False: 22.5k]
  ------------------
 1701|      0|        return NULL;
 1702|  22.5k|    OBJECT_STAT_INC_COND(allocations512, size < 512);
  ------------------
  |  |   78|  22.5k|#define OBJECT_STAT_INC_COND(name, cond) ((void)0)
  ------------------
 1703|  22.5k|    OBJECT_STAT_INC_COND(allocations4k, size >= 512 && size < 4094);
  ------------------
  |  |   78|  22.5k|#define OBJECT_STAT_INC_COND(name, cond) ((void)0)
  ------------------
 1704|  22.5k|    OBJECT_STAT_INC_COND(allocations_big, size >= 4094);
  ------------------
  |  |   78|  22.5k|#define OBJECT_STAT_INC_COND(name, cond) ((void)0)
  ------------------
 1705|  22.5k|    OBJECT_STAT_INC(allocations);
  ------------------
  |  |   77|  22.5k|#define OBJECT_STAT_INC(name) ((void)0)
  ------------------
 1706|  22.5k|    return _PyObject.malloc(_PyObject.ctx, size);
  ------------------
  |  |  716|  22.5k|#define _PyObject (_PyRuntime.allocators.standard.obj)
  ------------------
                  return _PyObject.malloc(_PyObject.ctx, size);
  ------------------
  |  |  716|  22.5k|#define _PyObject (_PyRuntime.allocators.standard.obj)
  ------------------
 1707|  22.5k|}
PyObject_Realloc:
 1724|     28|{
 1725|       |    /* see PyMem_RawMalloc() */
 1726|     28|    if (new_size > (size_t)PY_SSIZE_T_MAX)
  ------------------
  |  |  137|     28|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (1726:9): [True: 0, False: 28]
  ------------------
 1727|      0|        return NULL;
 1728|     28|    return _PyObject.realloc(_PyObject.ctx, ptr, new_size);
  ------------------
  |  |  716|     28|#define _PyObject (_PyRuntime.allocators.standard.obj)
  ------------------
                  return _PyObject.realloc(_PyObject.ctx, ptr, new_size);
  ------------------
  |  |  716|     28|#define _PyObject (_PyRuntime.allocators.standard.obj)
  ------------------
 1729|     28|}
PyObject_Free:
 1733|  7.15k|{
 1734|  7.15k|    OBJECT_STAT_INC(frees);
  ------------------
  |  |   77|  7.15k|#define OBJECT_STAT_INC(name) ((void)0)
  ------------------
 1735|  7.15k|    _PyObject.free(_PyObject.ctx, ptr);
  ------------------
  |  |  716|  7.15k|#define _PyObject (_PyRuntime.allocators.standard.obj)
  ------------------
                  _PyObject.free(_PyObject.ctx, ptr);
  ------------------
  |  |  716|  7.15k|#define _PyObject (_PyRuntime.allocators.standard.obj)
  ------------------
 1736|  7.15k|}
_PyObject_Malloc:
 2539|  24.4k|{
 2540|  24.4k|    OMState *state = get_state();
 2541|  24.4k|    void* ptr = pymalloc_alloc(state, ctx, nbytes);
 2542|  24.4k|    if (LIKELY(ptr != NULL)) {
  ------------------
  |  | 1743|  24.4k|#  define LIKELY(value) __builtin_expect((value), 1)
  |  |  ------------------
  |  |  |  Branch (1743:25): [True: 23.8k, False: 643]
  |  |  ------------------
  ------------------
 2543|  23.8k|        return ptr;
 2544|  23.8k|    }
 2545|       |
 2546|    643|    ptr = PyMem_RawMalloc(nbytes);
 2547|    643|    if (ptr != NULL) {
  ------------------
  |  Branch (2547:9): [True: 643, False: 0]
  ------------------
 2548|    643|        raw_allocated_blocks++;
  ------------------
  |  | 1793|    643|#define raw_allocated_blocks (state->mgmt.raw_allocated_blocks)
  ------------------
 2549|    643|    }
 2550|    643|    return ptr;
 2551|  24.4k|}
_PyObject_Calloc:
 2556|     44|{
 2557|     44|    assert(elsize == 0 || nelem <= (size_t)PY_SSIZE_T_MAX / elsize);
  ------------------
  |  Branch (2557:5): [True: 0, False: 44]
  |  Branch (2557:5): [True: 44, False: 0]
  ------------------
 2558|     44|    size_t nbytes = nelem * elsize;
 2559|       |
 2560|     44|    OMState *state = get_state();
 2561|     44|    void* ptr = pymalloc_alloc(state, ctx, nbytes);
 2562|     44|    if (LIKELY(ptr != NULL)) {
  ------------------
  |  | 1743|     44|#  define LIKELY(value) __builtin_expect((value), 1)
  |  |  ------------------
  |  |  |  Branch (1743:25): [True: 41, False: 3]
  |  |  ------------------
  ------------------
 2563|     41|        memset(ptr, 0, nbytes);
 2564|     41|        return ptr;
 2565|     41|    }
 2566|       |
 2567|      3|    ptr = PyMem_RawCalloc(nelem, elsize);
 2568|      3|    if (ptr != NULL) {
  ------------------
  |  Branch (2568:9): [True: 3, False: 0]
  ------------------
 2569|      3|        raw_allocated_blocks++;
  ------------------
  |  | 1793|      3|#define raw_allocated_blocks (state->mgmt.raw_allocated_blocks)
  ------------------
 2570|      3|    }
 2571|      3|    return ptr;
 2572|     44|}
_PyObject_Free:
 2821|  8.46k|{
 2822|       |    /* PyObject_Free(NULL) has no effect */
 2823|  8.46k|    if (p == NULL) {
  ------------------
  |  Branch (2823:9): [True: 104, False: 8.36k]
  ------------------
 2824|    104|        return;
 2825|    104|    }
 2826|       |
 2827|  8.36k|    OMState *state = get_state();
 2828|  8.36k|    if (UNLIKELY(!pymalloc_free(state, ctx, p))) {
  ------------------
  |  | 1742|  8.36k|#  define UNLIKELY(value) __builtin_expect((value), 0)
  |  |  ------------------
  |  |  |  Branch (1742:27): [True: 203, False: 8.16k]
  |  |  ------------------
  ------------------
 2829|       |        /* pymalloc didn't allocate this address */
 2830|    203|        PyMem_RawFree(p);
 2831|    203|        raw_allocated_blocks--;
  ------------------
  |  | 1793|    203|#define raw_allocated_blocks (state->mgmt.raw_allocated_blocks)
  ------------------
 2832|    203|    }
 2833|  8.36k|}
_PyObject_Realloc:
 2909|    518|{
 2910|    518|    void *ptr2;
 2911|       |
 2912|    518|    if (ptr == NULL) {
  ------------------
  |  Branch (2912:9): [True: 133, False: 385]
  ------------------
 2913|    133|        return _PyObject_Malloc(ctx, nbytes);
 2914|    133|    }
 2915|       |
 2916|    385|    OMState *state = get_state();
 2917|    385|    if (pymalloc_realloc(state, ctx, &ptr2, ptr, nbytes)) {
  ------------------
  |  Branch (2917:9): [True: 237, False: 148]
  ------------------
 2918|    237|        return ptr2;
 2919|    237|    }
 2920|       |
 2921|    148|    return PyMem_RawRealloc(ptr, nbytes);
 2922|    385|}
_PyMem_init_obmalloc:
 3561|      1|{
 3562|      1|#ifdef WITH_PYMALLOC
 3563|       |    /* Initialize obmalloc, but only for subinterpreters,
 3564|       |       since the main interpreter is initialized statically. */
 3565|      1|    if (_Py_IsMainInterpreter(interp)
  ------------------
  |  Branch (3565:9): [True: 1, False: 0]
  ------------------
 3566|      0|            || _PyInterpreterState_HasFeature(interp,
  ------------------
  |  Branch (3566:16): [True: 0, False: 0]
  ------------------
 3567|      1|                                              Py_RTFLAGS_USE_MAIN_OBMALLOC)) {
  ------------------
  |  |   79|      0|#define Py_RTFLAGS_USE_MAIN_OBMALLOC (1UL << 5)
  ------------------
 3568|      1|        interp->obmalloc = &obmalloc_state_main;
 3569|      1|        if (!obmalloc_state_initialized) {
  ------------------
  |  Branch (3569:13): [True: 1, False: 0]
  ------------------
 3570|      1|            init_obmalloc_pools(interp);
 3571|      1|            obmalloc_state_initialized = true;
 3572|      1|        }
 3573|      1|    } else {
 3574|      0|        interp->obmalloc = PyMem_RawCalloc(1, sizeof(struct _obmalloc_state));
 3575|      0|        if (interp->obmalloc == NULL) {
  ------------------
  |  Branch (3575:13): [True: 0, False: 0]
  ------------------
 3576|      0|            return -1;
 3577|      0|        }
 3578|      0|        init_obmalloc_pools(interp);
 3579|      0|    }
 3580|      1|#endif /* WITH_PYMALLOC */
 3581|      1|    return 0; // success
 3582|      1|}
obmalloc.c:get_allocator_unlocked:
 1100|      1|{
 1101|      1|    switch(domain)
 1102|      1|    {
 1103|      1|    case PYMEM_DOMAIN_RAW: *allocator = _PyMem_Raw; break;
  ------------------
  |  |  714|      1|#define _PyMem_Raw (_PyRuntime.allocators.standard.raw)
  ------------------
  |  Branch (1103:5): [True: 1, False: 0]
  ------------------
 1104|      0|    case PYMEM_DOMAIN_MEM: *allocator = _PyMem; break;
  ------------------
  |  |  715|      0|#define _PyMem (_PyRuntime.allocators.standard.mem)
  ------------------
  |  Branch (1104:5): [True: 0, False: 1]
  ------------------
 1105|      0|    case PYMEM_DOMAIN_OBJ: *allocator = _PyObject; break;
  ------------------
  |  |  716|      0|#define _PyObject (_PyRuntime.allocators.standard.obj)
  ------------------
  |  Branch (1105:5): [True: 0, False: 1]
  ------------------
 1106|      0|    default:
  ------------------
  |  Branch (1106:5): [True: 0, False: 1]
  ------------------
 1107|       |        /* unknown domain: set all attributes to NULL */
 1108|      0|        allocator->ctx = NULL;
 1109|      0|        allocator->malloc = NULL;
 1110|      0|        allocator->calloc = NULL;
 1111|      0|        allocator->realloc = NULL;
 1112|       |        allocator->free = NULL;
 1113|      1|    }
 1114|      1|}
obmalloc.c:_pymalloc_virtual_alloc_size:
  600|      1|{
  601|       |#if defined(MS_WINDOWS) && defined(PYMALLOC_USE_HUGEPAGES)
  602|       |    if (_PyRuntime.allocators.use_hugepages) {
  603|       |        SIZE_T large_page_size = GetLargePageMinimum();
  604|       |        if (large_page_size > 0) {
  605|       |            return _pymalloc_round_up_to_multiple(size, (size_t)large_page_size);
  606|       |        }
  607|       |    }
  608|       |#elif defined(PYMALLOC_USE_HUGEPAGES) && defined(ARENAS_USE_MMAP) && defined(MAP_HUGETLB)
  609|       |    if (_PyRuntime.allocators.use_hugepages) {
  610|       |        size_t hp_size = _pymalloc_system_hugepage_size();
  611|       |        if (hp_size > 0) {
  612|       |            return _pymalloc_round_up_to_multiple(size, hp_size);
  613|       |        }
  614|       |    }
  615|       |#endif
  616|      1|    return size;
  617|      1|}
obmalloc.c:get_state:
 1777|  33.2k|{
 1778|  33.2k|    PyInterpreterState *interp = _PyInterpreterState_GET();
 1779|  33.2k|    assert(interp->obmalloc != NULL); // otherwise not initialized or freed
  ------------------
  |  Branch (1779:5): [True: 33.2k, False: 0]
  ------------------
 1780|  33.2k|    return interp->obmalloc;
 1781|  33.2k|}
obmalloc.c:pymalloc_alloc:
 2491|  24.5k|{
 2492|       |#ifdef WITH_VALGRIND
 2493|       |    if (UNLIKELY(running_on_valgrind == -1)) {
 2494|       |        running_on_valgrind = RUNNING_ON_VALGRIND;
 2495|       |    }
 2496|       |    if (UNLIKELY(running_on_valgrind)) {
 2497|       |        return NULL;
 2498|       |    }
 2499|       |#endif
 2500|       |
 2501|  24.5k|    if (UNLIKELY(nbytes == 0)) {
  ------------------
  |  | 1742|  24.5k|#  define UNLIKELY(value) __builtin_expect((value), 0)
  |  |  ------------------
  |  |  |  Branch (1742:27): [True: 9, False: 24.5k]
  |  |  ------------------
  ------------------
 2502|      9|        return NULL;
 2503|      9|    }
 2504|  24.5k|    if (UNLIKELY(nbytes > SMALL_REQUEST_THRESHOLD)) {
  ------------------
  |  | 1742|  24.5k|#  define UNLIKELY(value) __builtin_expect((value), 0)
  |  |  ------------------
  |  |  |  Branch (1742:27): [True: 637, False: 23.8k]
  |  |  ------------------
  ------------------
 2505|    637|        return NULL;
 2506|    637|    }
 2507|       |
 2508|  23.8k|    uint size = (uint)(nbytes - 1) >> ALIGNMENT_SHIFT;
  ------------------
  |  |   35|  23.8k|#define uint pymem_uint
  ------------------
                  uint size = (uint)(nbytes - 1) >> ALIGNMENT_SHIFT;
  ------------------
  |  |  139|  23.8k|#define ALIGNMENT_SHIFT         4
  ------------------
 2509|  23.8k|    poolp pool = usedpools[size + size];
  ------------------
  |  | 1784|  23.8k|#define usedpools (state->pools.used)
  ------------------
 2510|  23.8k|    pymem_block *bp;
 2511|       |
 2512|  23.8k|    if (LIKELY(pool != pool->nextpool)) {
  ------------------
  |  | 1743|  23.8k|#  define LIKELY(value) __builtin_expect((value), 1)
  |  |  ------------------
  |  |  |  Branch (1743:25): [True: 23.7k, False: 141]
  |  |  ------------------
  ------------------
 2513|       |        /*
 2514|       |         * There is a used pool for this size class.
 2515|       |         * Pick up the head block of its free list.
 2516|       |         */
 2517|  23.7k|        ++pool->ref.count;
 2518|  23.7k|        bp = pool->freeblock;
 2519|  23.7k|        assert(bp != NULL);
  ------------------
  |  Branch (2519:9): [True: 23.7k, False: 0]
  ------------------
 2520|       |
 2521|  23.7k|        if (UNLIKELY((pool->freeblock = *(pymem_block **)bp) == NULL)) {
  ------------------
  |  | 1742|  23.7k|#  define UNLIKELY(value) __builtin_expect((value), 0)
  |  |  ------------------
  |  |  |  Branch (1742:27): [True: 16.1k, False: 7.61k]
  |  |  ------------------
  ------------------
 2522|       |            // Reached the end of the free list, try to extend it.
 2523|  16.1k|            pymalloc_pool_extend(pool, size);
 2524|  16.1k|        }
 2525|  23.7k|    }
 2526|    141|    else {
 2527|       |        /* There isn't a pool of the right size class immediately
 2528|       |         * available:  use a free pool.
 2529|       |         */
 2530|    141|        bp = allocate_from_new_pool(state, size);
 2531|    141|    }
 2532|       |
 2533|  23.8k|    return (void *)bp;
 2534|  23.8k|}
obmalloc.c:pymalloc_pool_extend:
 2333|  16.1k|{
 2334|  16.1k|    if (UNLIKELY(pool->nextoffset <= pool->maxnextoffset)) {
  ------------------
  |  | 1742|  16.1k|#  define UNLIKELY(value) __builtin_expect((value), 0)
  |  |  ------------------
  |  |  |  Branch (1742:27): [True: 15.6k, False: 494]
  |  |  ------------------
  ------------------
 2335|       |        /* There is room for another block. */
 2336|  15.6k|        pool->freeblock = (pymem_block*)pool + pool->nextoffset;
 2337|  15.6k|        pool->nextoffset += INDEX2SIZE(size);
  ------------------
  |  |  146|  15.6k|#define INDEX2SIZE(I) (((pymem_uint)(I) + 1) << ALIGNMENT_SHIFT)
  |  |  ------------------
  |  |  |  |  139|  15.6k|#define ALIGNMENT_SHIFT         4
  |  |  ------------------
  ------------------
 2338|  15.6k|        *(pymem_block **)(pool->freeblock) = NULL;
 2339|  15.6k|        return;
 2340|  15.6k|    }
 2341|       |
 2342|       |    /* Pool is full, unlink from used pools. */
 2343|    494|    poolp next;
 2344|    494|    next = pool->nextpool;
 2345|    494|    pool = pool->prevpool;
 2346|    494|    next->prevpool = pool;
 2347|    494|    pool->nextpool = next;
 2348|    494|}
obmalloc.c:allocate_from_new_pool:
 2355|    141|{
 2356|       |    /* There isn't a pool of the right size class immediately
 2357|       |     * available:  use a free pool.
 2358|       |     */
 2359|    141|    if (UNLIKELY(usable_arenas == NULL)) {
  ------------------
  |  | 1742|    141|#  define UNLIKELY(value) __builtin_expect((value), 0)
  |  |  ------------------
  |  |  |  Branch (1742:27): [True: 2, False: 139]
  |  |  ------------------
  ------------------
 2360|       |        /* No arena has a free pool:  allocate a new arena. */
 2361|       |#ifdef WITH_MEMORY_LIMITS
 2362|       |        if (narenas_currently_allocated >= MAX_ARENAS) {
 2363|       |            return NULL;
 2364|       |        }
 2365|       |#endif
 2366|      2|        usable_arenas = new_arena(state);
  ------------------
  |  | 1788|      2|#define usable_arenas (state->mgmt.usable_arenas)
  ------------------
 2367|      2|        if (usable_arenas == NULL) {
  ------------------
  |  | 1788|      2|#define usable_arenas (state->mgmt.usable_arenas)
  ------------------
  |  Branch (2367:13): [True: 0, False: 2]
  ------------------
 2368|      0|            return NULL;
 2369|      0|        }
 2370|      2|        usable_arenas->nextarena = usable_arenas->prevarena = NULL;
  ------------------
  |  | 1788|      2|#define usable_arenas (state->mgmt.usable_arenas)
  ------------------
                      usable_arenas->nextarena = usable_arenas->prevarena = NULL;
  ------------------
  |  | 1788|      2|#define usable_arenas (state->mgmt.usable_arenas)
  ------------------
 2371|      2|        assert(nfp2lasta[usable_arenas->nfreepools] == NULL);
  ------------------
  |  Branch (2371:9): [True: 2, False: 0]
  ------------------
 2372|      2|        nfp2lasta[usable_arenas->nfreepools] = usable_arenas;
  ------------------
  |  | 1789|      2|#define nfp2lasta (state->mgmt.nfp2lasta)
  ------------------
                      nfp2lasta[usable_arenas->nfreepools] = usable_arenas;
  ------------------
  |  | 1788|      2|#define usable_arenas (state->mgmt.usable_arenas)
  ------------------
                      nfp2lasta[usable_arenas->nfreepools] = usable_arenas;
  ------------------
  |  | 1788|      2|#define usable_arenas (state->mgmt.usable_arenas)
  ------------------
 2373|      2|    }
 2374|    141|    assert(usable_arenas->address != 0);
  ------------------
  |  Branch (2374:5): [True: 141, False: 0]
  ------------------
 2375|       |
 2376|       |    /* This arena already had the smallest nfreepools value, so decreasing
 2377|       |     * nfreepools doesn't change that, and we don't need to rearrange the
 2378|       |     * usable_arenas list.  However, if the arena becomes wholly allocated,
 2379|       |     * we need to remove its arena_object from usable_arenas.
 2380|       |     */
 2381|    141|    assert(usable_arenas->nfreepools > 0);
  ------------------
  |  Branch (2381:5): [True: 141, False: 0]
  ------------------
 2382|    141|    if (nfp2lasta[usable_arenas->nfreepools] == usable_arenas) {
  ------------------
  |  | 1789|    141|#define nfp2lasta (state->mgmt.nfp2lasta)
  ------------------
                  if (nfp2lasta[usable_arenas->nfreepools] == usable_arenas) {
  ------------------
  |  | 1788|    141|#define usable_arenas (state->mgmt.usable_arenas)
  ------------------
                  if (nfp2lasta[usable_arenas->nfreepools] == usable_arenas) {
  ------------------
  |  | 1788|    141|#define usable_arenas (state->mgmt.usable_arenas)
  ------------------
  |  Branch (2382:9): [True: 141, False: 0]
  ------------------
 2383|       |        /* It's the last of this size, so there won't be any. */
 2384|    141|        nfp2lasta[usable_arenas->nfreepools] = NULL;
  ------------------
  |  | 1789|    141|#define nfp2lasta (state->mgmt.nfp2lasta)
  ------------------
                      nfp2lasta[usable_arenas->nfreepools] = NULL;
  ------------------
  |  | 1788|    141|#define usable_arenas (state->mgmt.usable_arenas)
  ------------------
 2385|    141|    }
 2386|       |    /* If any free pools will remain, it will be the new smallest. */
 2387|    141|    if (usable_arenas->nfreepools > 1) {
  ------------------
  |  | 1788|    141|#define usable_arenas (state->mgmt.usable_arenas)
  ------------------
  |  Branch (2387:9): [True: 140, False: 1]
  ------------------
 2388|    140|        assert(nfp2lasta[usable_arenas->nfreepools - 1] == NULL);
  ------------------
  |  Branch (2388:9): [True: 140, False: 0]
  ------------------
 2389|    140|        nfp2lasta[usable_arenas->nfreepools - 1] = usable_arenas;
  ------------------
  |  | 1789|    140|#define nfp2lasta (state->mgmt.nfp2lasta)
  ------------------
                      nfp2lasta[usable_arenas->nfreepools - 1] = usable_arenas;
  ------------------
  |  | 1788|    140|#define usable_arenas (state->mgmt.usable_arenas)
  ------------------
                      nfp2lasta[usable_arenas->nfreepools - 1] = usable_arenas;
  ------------------
  |  | 1788|    140|#define usable_arenas (state->mgmt.usable_arenas)
  ------------------
 2390|    140|    }
 2391|       |
 2392|       |    /* Try to get a cached free pool. */
 2393|    141|    poolp pool = usable_arenas->freepools;
  ------------------
  |  | 1788|    141|#define usable_arenas (state->mgmt.usable_arenas)
  ------------------
 2394|    141|    if (LIKELY(pool != NULL)) {
  ------------------
  |  | 1743|    141|#  define LIKELY(value) __builtin_expect((value), 1)
  |  |  ------------------
  |  |  |  Branch (1743:25): [True: 36, False: 105]
  |  |  ------------------
  ------------------
 2395|       |        /* Unlink from cached pools. */
 2396|     36|        usable_arenas->freepools = pool->nextpool;
  ------------------
  |  | 1788|     36|#define usable_arenas (state->mgmt.usable_arenas)
  ------------------
 2397|     36|        usable_arenas->nfreepools--;
  ------------------
  |  | 1788|     36|#define usable_arenas (state->mgmt.usable_arenas)
  ------------------
 2398|     36|        if (UNLIKELY(usable_arenas->nfreepools == 0)) {
  ------------------
  |  | 1742|     36|#  define UNLIKELY(value) __builtin_expect((value), 0)
  |  |  ------------------
  |  |  |  Branch (1742:27): [True: 0, False: 36]
  |  |  ------------------
  ------------------
 2399|       |            /* Wholly allocated:  remove. */
 2400|      0|            assert(usable_arenas->freepools == NULL);
  ------------------
  |  Branch (2400:13): [True: 0, False: 0]
  ------------------
 2401|      0|            assert(usable_arenas->nextarena == NULL ||
  ------------------
  |  Branch (2401:13): [True: 0, False: 0]
  |  Branch (2401:13): [True: 0, False: 0]
  ------------------
 2402|      0|                   usable_arenas->nextarena->prevarena ==
 2403|      0|                   usable_arenas);
 2404|      0|            usable_arenas = usable_arenas->nextarena;
  ------------------
  |  | 1788|      0|#define usable_arenas (state->mgmt.usable_arenas)
  ------------------
                          usable_arenas = usable_arenas->nextarena;
  ------------------
  |  | 1788|      0|#define usable_arenas (state->mgmt.usable_arenas)
  ------------------
 2405|      0|            if (usable_arenas != NULL) {
  ------------------
  |  | 1788|      0|#define usable_arenas (state->mgmt.usable_arenas)
  ------------------
  |  Branch (2405:17): [True: 0, False: 0]
  ------------------
 2406|      0|                usable_arenas->prevarena = NULL;
  ------------------
  |  | 1788|      0|#define usable_arenas (state->mgmt.usable_arenas)
  ------------------
 2407|      0|                assert(usable_arenas->address != 0);
  ------------------
  |  Branch (2407:17): [True: 0, False: 0]
  ------------------
 2408|      0|            }
 2409|      0|        }
 2410|     36|        else {
 2411|       |            /* nfreepools > 0:  it must be that freepools
 2412|       |             * isn't NULL, or that we haven't yet carved
 2413|       |             * off all the arena's pools for the first
 2414|       |             * time.
 2415|       |             */
 2416|     36|            assert(usable_arenas->freepools != NULL ||
  ------------------
  |  Branch (2416:13): [True: 1, False: 35]
  |  Branch (2416:13): [True: 35, False: 0]
  ------------------
 2417|     36|                   usable_arenas->pool_address <=
 2418|     36|                   (pymem_block*)usable_arenas->address +
 2419|     36|                       ARENA_SIZE - POOL_SIZE);
 2420|     36|        }
 2421|     36|    }
 2422|    105|    else {
 2423|       |        /* Carve off a new pool. */
 2424|    105|        assert(usable_arenas->nfreepools > 0);
  ------------------
  |  Branch (2424:9): [True: 105, False: 0]
  ------------------
 2425|    105|        assert(usable_arenas->freepools == NULL);
  ------------------
  |  Branch (2425:9): [True: 105, False: 0]
  ------------------
 2426|    105|        pool = (poolp)usable_arenas->pool_address;
  ------------------
  |  | 1788|    105|#define usable_arenas (state->mgmt.usable_arenas)
  ------------------
 2427|    105|        assert((pymem_block*)pool <= (pymem_block*)usable_arenas->address +
  ------------------
  |  Branch (2427:9): [True: 105, False: 0]
  ------------------
 2428|    105|                                 ARENA_SIZE - POOL_SIZE);
 2429|    105|        pool->arenaindex = (uint)(usable_arenas - allarenas);
  ------------------
  |  | 1788|    105|#define usable_arenas (state->mgmt.usable_arenas)
  ------------------
                      pool->arenaindex = (uint)(usable_arenas - allarenas);
  ------------------
  |  | 1785|    105|#define allarenas (state->mgmt.arenas)
  ------------------
 2430|    105|        assert(&allarenas[pool->arenaindex] == usable_arenas);
  ------------------
  |  Branch (2430:9): [True: 105, False: 0]
  ------------------
 2431|    105|        pool->szidx = DUMMY_SIZE_IDX;
  ------------------
  |  |  321|    105|#define DUMMY_SIZE_IDX          0xffff  /* size class of newly cached pools */
  ------------------
 2432|    105|        usable_arenas->pool_address += POOL_SIZE;
  ------------------
  |  | 1788|    105|#define usable_arenas (state->mgmt.usable_arenas)
  ------------------
                      usable_arenas->pool_address += POOL_SIZE;
  ------------------
  |  |  240|    105|#define POOL_SIZE               (1 << POOL_BITS)
  |  |  ------------------
  |  |  |  |  236|    105|#define POOL_BITS               14                  /* 16 KiB */
  |  |  ------------------
  ------------------
 2433|    105|        --usable_arenas->nfreepools;
  ------------------
  |  | 1788|    105|#define usable_arenas (state->mgmt.usable_arenas)
  ------------------
 2434|       |
 2435|    105|        if (usable_arenas->nfreepools == 0) {
  ------------------
  |  | 1788|    105|#define usable_arenas (state->mgmt.usable_arenas)
  ------------------
  |  Branch (2435:13): [True: 1, False: 104]
  ------------------
 2436|      1|            assert(usable_arenas->nextarena == NULL ||
  ------------------
  |  Branch (2436:13): [True: 1, False: 0]
  |  Branch (2436:13): [True: 0, False: 0]
  ------------------
 2437|      1|                   usable_arenas->nextarena->prevarena ==
 2438|      1|                   usable_arenas);
 2439|       |            /* Unlink the arena:  it is completely allocated. */
 2440|      1|            usable_arenas = usable_arenas->nextarena;
  ------------------
  |  | 1788|      1|#define usable_arenas (state->mgmt.usable_arenas)
  ------------------
                          usable_arenas = usable_arenas->nextarena;
  ------------------
  |  | 1788|      1|#define usable_arenas (state->mgmt.usable_arenas)
  ------------------
 2441|      1|            if (usable_arenas != NULL) {
  ------------------
  |  | 1788|      1|#define usable_arenas (state->mgmt.usable_arenas)
  ------------------
  |  Branch (2441:17): [True: 0, False: 1]
  ------------------
 2442|      0|                usable_arenas->prevarena = NULL;
  ------------------
  |  | 1788|      0|#define usable_arenas (state->mgmt.usable_arenas)
  ------------------
 2443|      0|                assert(usable_arenas->address != 0);
  ------------------
  |  Branch (2443:17): [True: 0, False: 0]
  ------------------
 2444|      0|            }
 2445|      1|        }
 2446|    105|    }
 2447|       |
 2448|       |    /* Frontlink to used pools. */
 2449|    141|    pymem_block *bp;
 2450|    141|    poolp next = usedpools[size + size]; /* == prev */
  ------------------
  |  | 1784|    141|#define usedpools (state->pools.used)
  ------------------
 2451|    141|    pool->nextpool = next;
 2452|    141|    pool->prevpool = next;
 2453|    141|    next->nextpool = pool;
 2454|    141|    next->prevpool = pool;
 2455|    141|    pool->ref.count = 1;
 2456|    141|    if (pool->szidx == size) {
  ------------------
  |  Branch (2456:9): [True: 20, False: 121]
  ------------------
 2457|       |        /* Luckily, this pool last contained blocks
 2458|       |         * of the same size class, so its header
 2459|       |         * and free list are already initialized.
 2460|       |         */
 2461|     20|        bp = pool->freeblock;
 2462|     20|        assert(bp != NULL);
  ------------------
  |  Branch (2462:9): [True: 20, False: 0]
  ------------------
 2463|     20|        pool->freeblock = *(pymem_block **)bp;
 2464|     20|        return bp;
 2465|     20|    }
 2466|       |    /*
 2467|       |     * Initialize the pool header, set up the free list to
 2468|       |     * contain just the second block, and return the first
 2469|       |     * block.
 2470|       |     */
 2471|    121|    pool->szidx = size;
 2472|    121|    size = INDEX2SIZE(size);
  ------------------
  |  |  146|    121|#define INDEX2SIZE(I) (((pymem_uint)(I) + 1) << ALIGNMENT_SHIFT)
  |  |  ------------------
  |  |  |  |  139|    121|#define ALIGNMENT_SHIFT         4
  |  |  ------------------
  ------------------
 2473|    121|    bp = (pymem_block *)pool + POOL_OVERHEAD;
  ------------------
  |  |  319|    121|#define POOL_OVERHEAD   _Py_SIZE_ROUND_UP(sizeof(struct pool_header), ALIGNMENT)
  |  |  ------------------
  |  |  |  |  213|    121|#define _Py_SIZE_ROUND_UP(n, a) (((size_t)(n) + \
  |  |  |  |  214|    121|        (size_t)((a) - 1)) & ~(size_t)((a) - 1))
  |  |  ------------------
  ------------------
 2474|    121|    pool->nextoffset = POOL_OVERHEAD + (size << 1);
  ------------------
  |  |  319|    121|#define POOL_OVERHEAD   _Py_SIZE_ROUND_UP(sizeof(struct pool_header), ALIGNMENT)
  |  |  ------------------
  |  |  |  |  213|    121|#define _Py_SIZE_ROUND_UP(n, a) (((size_t)(n) + \
  |  |  |  |  214|    121|        (size_t)((a) - 1)) & ~(size_t)((a) - 1))
  |  |  ------------------
  ------------------
 2475|    121|    pool->maxnextoffset = POOL_SIZE - size;
  ------------------
  |  |  240|    121|#define POOL_SIZE               (1 << POOL_BITS)
  |  |  ------------------
  |  |  |  |  236|    121|#define POOL_BITS               14                  /* 16 KiB */
  |  |  ------------------
  ------------------
 2476|    121|    pool->freeblock = bp + size;
 2477|       |    *(pymem_block **)(pool->freeblock) = NULL;
 2478|    121|    return bp;
 2479|    141|}
obmalloc.c:new_arena:
 2121|      2|{
 2122|      2|    struct arena_object* arenaobj;
 2123|      2|    uint excess;        /* number of bytes above pool alignment */
  ------------------
  |  |   35|      2|#define uint pymem_uint
  ------------------
 2124|      2|    void *address;
 2125|       |
 2126|      2|    int debug_stats = _PyRuntime.obmalloc.dump_debug_stats;
 2127|      2|    if (debug_stats == -1) {
  ------------------
  |  Branch (2127:9): [True: 1, False: 1]
  ------------------
 2128|      1|        const char *opt = Py_GETENV("PYTHONMALLOCSTATS");
 2129|      1|        debug_stats = (opt != NULL && *opt != '\0');
  ------------------
  |  Branch (2129:24): [True: 0, False: 1]
  |  Branch (2129:39): [True: 0, False: 0]
  ------------------
 2130|      1|        _PyRuntime.obmalloc.dump_debug_stats = debug_stats;
 2131|      1|    }
 2132|      2|    if (debug_stats) {
  ------------------
  |  Branch (2132:9): [True: 0, False: 2]
  ------------------
 2133|      0|        _PyObject_DebugMallocStats(stderr);
 2134|      0|    }
 2135|       |
 2136|      2|    if (unused_arena_objects == NULL) {
  ------------------
  |  | 1787|      2|#define unused_arena_objects (state->mgmt.unused_arena_objects)
  ------------------
  |  Branch (2136:9): [True: 1, False: 1]
  ------------------
 2137|      1|        uint i;
  ------------------
  |  |   35|      1|#define uint pymem_uint
  ------------------
 2138|      1|        uint numarenas;
  ------------------
  |  |   35|      1|#define uint pymem_uint
  ------------------
 2139|      1|        size_t nbytes;
 2140|       |
 2141|       |        /* Double the number of arena objects on each allocation.
 2142|       |         * Note that it's possible for `numarenas` to overflow.
 2143|       |         */
 2144|      1|        numarenas = maxarenas ? maxarenas << 1 : INITIAL_ARENA_OBJECTS;
  ------------------
  |  | 1786|      1|#define maxarenas (state->mgmt.maxarenas)
  |  |  ------------------
  |  |  |  Branch (1786:19): [True: 0, False: 1]
  |  |  ------------------
  ------------------
                      numarenas = maxarenas ? maxarenas << 1 : INITIAL_ARENA_OBJECTS;
  ------------------
  |  | 1786|      0|#define maxarenas (state->mgmt.maxarenas)
  ------------------
                      numarenas = maxarenas ? maxarenas << 1 : INITIAL_ARENA_OBJECTS;
  ------------------
  |  |  485|      2|#define INITIAL_ARENA_OBJECTS 16
  ------------------
 2145|      1|        if (numarenas <= maxarenas)
  ------------------
  |  | 1786|      1|#define maxarenas (state->mgmt.maxarenas)
  ------------------
  |  Branch (2145:13): [True: 0, False: 1]
  ------------------
 2146|      0|            return NULL;                /* overflow */
 2147|       |#if SIZEOF_SIZE_T <= SIZEOF_INT
 2148|       |        if (numarenas > SIZE_MAX / sizeof(*allarenas))
 2149|       |            return NULL;                /* overflow */
 2150|       |#endif
 2151|      1|        nbytes = numarenas * sizeof(*allarenas);
  ------------------
  |  | 1785|      1|#define allarenas (state->mgmt.arenas)
  ------------------
 2152|      1|        arenaobj = (struct arena_object *)PyMem_RawRealloc(allarenas, nbytes);
  ------------------
  |  | 1785|      1|#define allarenas (state->mgmt.arenas)
  ------------------
 2153|      1|        if (arenaobj == NULL)
  ------------------
  |  Branch (2153:13): [True: 0, False: 1]
  ------------------
 2154|      0|            return NULL;
 2155|      1|        allarenas = arenaobj;
  ------------------
  |  | 1785|      1|#define allarenas (state->mgmt.arenas)
  ------------------
 2156|       |
 2157|       |        /* We might need to fix pointers that were copied.  However,
 2158|       |         * new_arena only gets called when all the pages in the
 2159|       |         * previous arenas are full.  Thus, there are *no* pointers
 2160|       |         * into the old array. Thus, we don't have to worry about
 2161|       |         * invalid pointers.  Just to be sure, some asserts:
 2162|       |         */
 2163|      1|        assert(usable_arenas == NULL);
  ------------------
  |  Branch (2163:9): [True: 1, False: 0]
  ------------------
 2164|      1|        assert(unused_arena_objects == NULL);
  ------------------
  |  Branch (2164:9): [True: 1, False: 0]
  ------------------
 2165|       |
 2166|       |        /* Put the new arenas on the unused_arena_objects list. */
 2167|     17|        for (i = maxarenas; i < numarenas; ++i) {
  ------------------
  |  | 1786|      1|#define maxarenas (state->mgmt.maxarenas)
  ------------------
  |  Branch (2167:29): [True: 16, False: 1]
  ------------------
 2168|     16|            allarenas[i].address = 0;              /* mark as unassociated */
  ------------------
  |  | 1785|     16|#define allarenas (state->mgmt.arenas)
  ------------------
 2169|     16|            allarenas[i].nextarena = i < numarenas - 1 ?
  ------------------
  |  | 1785|     16|#define allarenas (state->mgmt.arenas)
  ------------------
  |  Branch (2169:38): [True: 15, False: 1]
  ------------------
 2170|     16|                                        &allarenas[i+1] : NULL;
  ------------------
  |  | 1785|     15|#define allarenas (state->mgmt.arenas)
  ------------------
 2171|     16|        }
 2172|       |
 2173|       |        /* Update globals. */
 2174|      1|        unused_arena_objects = &allarenas[maxarenas];
  ------------------
  |  | 1787|      1|#define unused_arena_objects (state->mgmt.unused_arena_objects)
  ------------------
                      unused_arena_objects = &allarenas[maxarenas];
  ------------------
  |  | 1785|      1|#define allarenas (state->mgmt.arenas)
  ------------------
                      unused_arena_objects = &allarenas[maxarenas];
  ------------------
  |  | 1786|      1|#define maxarenas (state->mgmt.maxarenas)
  ------------------
 2175|      1|        maxarenas = numarenas;
  ------------------
  |  | 1786|      1|#define maxarenas (state->mgmt.maxarenas)
  ------------------
 2176|      1|    }
 2177|       |
 2178|       |    /* Take the next available arena object off the head of the list. */
 2179|      2|    assert(unused_arena_objects != NULL);
  ------------------
  |  Branch (2179:5): [True: 2, False: 0]
  ------------------
 2180|      2|    arenaobj = unused_arena_objects;
  ------------------
  |  | 1787|      2|#define unused_arena_objects (state->mgmt.unused_arena_objects)
  ------------------
 2181|      2|    unused_arena_objects = arenaobj->nextarena;
  ------------------
  |  | 1787|      2|#define unused_arena_objects (state->mgmt.unused_arena_objects)
  ------------------
 2182|      2|    assert(arenaobj->address == 0);
  ------------------
  |  Branch (2182:5): [True: 2, False: 0]
  ------------------
 2183|      2|    address = _PyObject_Arena.alloc(_PyObject_Arena.ctx, ARENA_SIZE);
  ------------------
  |  |  718|      2|#define _PyObject_Arena (_PyRuntime.allocators.obj_arena)
  ------------------
                  address = _PyObject_Arena.alloc(_PyObject_Arena.ctx, ARENA_SIZE);
  ------------------
  |  |  718|      2|#define _PyObject_Arena (_PyRuntime.allocators.obj_arena)
  ------------------
                  address = _PyObject_Arena.alloc(_PyObject_Arena.ctx, ARENA_SIZE);
  ------------------
  |  |  225|      2|#define ARENA_SIZE              (1 << ARENA_BITS)
  |  |  ------------------
  |  |  |  |  220|      2|#    define ARENA_BITS            20                    /* 1 MiB */
  |  |  ------------------
  ------------------
 2184|      2|#if WITH_PYMALLOC_RADIX_TREE
 2185|      2|    if (address != NULL) {
  ------------------
  |  Branch (2185:9): [True: 2, False: 0]
  ------------------
 2186|      2|        if (!arena_map_mark_used(state, (uintptr_t)address, 1)) {
  ------------------
  |  Branch (2186:13): [True: 0, False: 2]
  ------------------
 2187|       |            /* marking arena in radix tree failed, abort */
 2188|      0|            _PyObject_Arena.free(_PyObject_Arena.ctx, address, ARENA_SIZE);
  ------------------
  |  |  718|      0|#define _PyObject_Arena (_PyRuntime.allocators.obj_arena)
  ------------------
                          _PyObject_Arena.free(_PyObject_Arena.ctx, address, ARENA_SIZE);
  ------------------
  |  |  718|      0|#define _PyObject_Arena (_PyRuntime.allocators.obj_arena)
  ------------------
                          _PyObject_Arena.free(_PyObject_Arena.ctx, address, ARENA_SIZE);
  ------------------
  |  |  225|      0|#define ARENA_SIZE              (1 << ARENA_BITS)
  |  |  ------------------
  |  |  |  |  220|      0|#    define ARENA_BITS            20                    /* 1 MiB */
  |  |  ------------------
  ------------------
 2189|      0|            address = NULL;
 2190|      0|        }
 2191|      2|    }
 2192|      2|#endif
 2193|      2|    if (address == NULL) {
  ------------------
  |  Branch (2193:9): [True: 0, False: 2]
  ------------------
 2194|       |        /* The allocation failed: return NULL after putting the
 2195|       |         * arenaobj back.
 2196|       |         */
 2197|      0|        arenaobj->nextarena = unused_arena_objects;
  ------------------
  |  | 1787|      0|#define unused_arena_objects (state->mgmt.unused_arena_objects)
  ------------------
 2198|      0|        unused_arena_objects = arenaobj;
  ------------------
  |  | 1787|      0|#define unused_arena_objects (state->mgmt.unused_arena_objects)
  ------------------
 2199|      0|        return NULL;
 2200|      0|    }
 2201|      2|    arenaobj->address = (uintptr_t)address;
 2202|       |
 2203|      2|    ++narenas_currently_allocated;
  ------------------
  |  | 1790|      2|#define narenas_currently_allocated (state->mgmt.narenas_currently_allocated)
  ------------------
 2204|      2|    ++ntimes_arena_allocated;
  ------------------
  |  | 1791|      2|#define ntimes_arena_allocated (state->mgmt.ntimes_arena_allocated)
  ------------------
 2205|      2|    if (narenas_currently_allocated > narenas_highwater)
  ------------------
  |  | 1790|      2|#define narenas_currently_allocated (state->mgmt.narenas_currently_allocated)
  ------------------
                  if (narenas_currently_allocated > narenas_highwater)
  ------------------
  |  | 1792|      2|#define narenas_highwater (state->mgmt.narenas_highwater)
  ------------------
  |  Branch (2205:9): [True: 2, False: 0]
  ------------------
 2206|      2|        narenas_highwater = narenas_currently_allocated;
  ------------------
  |  | 1792|      2|#define narenas_highwater (state->mgmt.narenas_highwater)
  ------------------
                      narenas_highwater = narenas_currently_allocated;
  ------------------
  |  | 1790|      2|#define narenas_currently_allocated (state->mgmt.narenas_currently_allocated)
  ------------------
 2207|      2|    arenaobj->freepools = NULL;
 2208|       |    /* pool_address <- first pool-aligned address in the arena
 2209|       |       nfreepools <- number of whole pools that fit after alignment */
 2210|      2|    arenaobj->pool_address = (pymem_block*)arenaobj->address;
 2211|      2|    arenaobj->nfreepools = MAX_POOLS_IN_ARENA;
  ------------------
  |  |  249|      2|#define MAX_POOLS_IN_ARENA  (ARENA_SIZE / POOL_SIZE)
  |  |  ------------------
  |  |  |  |  225|      2|#define ARENA_SIZE              (1 << ARENA_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  220|      2|#    define ARENA_BITS            20                    /* 1 MiB */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAX_POOLS_IN_ARENA  (ARENA_SIZE / POOL_SIZE)
  |  |  ------------------
  |  |  |  |  240|      2|#define POOL_SIZE               (1 << POOL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  236|      2|#define POOL_BITS               14                  /* 16 KiB */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2212|      2|    excess = (uint)(arenaobj->address & POOL_SIZE_MASK);
  ------------------
  |  |  241|      2|#define POOL_SIZE_MASK          (POOL_SIZE - 1)
  |  |  ------------------
  |  |  |  |  240|      2|#define POOL_SIZE               (1 << POOL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  236|      2|#define POOL_BITS               14                  /* 16 KiB */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2213|      2|    if (excess != 0) {
  ------------------
  |  Branch (2213:9): [True: 0, False: 2]
  ------------------
 2214|      0|        --arenaobj->nfreepools;
 2215|      0|        arenaobj->pool_address += POOL_SIZE - excess;
  ------------------
  |  |  240|      0|#define POOL_SIZE               (1 << POOL_BITS)
  |  |  ------------------
  |  |  |  |  236|      0|#define POOL_BITS               14                  /* 16 KiB */
  |  |  ------------------
  ------------------
 2216|      0|    }
 2217|      2|    arenaobj->ntotalpools = arenaobj->nfreepools;
 2218|       |
 2219|      2|    return arenaobj;
 2220|      2|}
obmalloc.c:arena_map_mark_used:
 2050|      2|{
 2051|       |    /* sanity check that IGNORE_BITS is correct */
 2052|      2|    assert(HIGH_BITS(arena_base) == HIGH_BITS(&arena_map_root));
  ------------------
  |  Branch (2052:5): [True: 2, Folded]
  ------------------
 2053|      2|    arena_map_bot_t *n_hi = arena_map_get(
 2054|      2|            state, (pymem_block *)arena_base, is_used);
 2055|      2|    if (n_hi == NULL) {
  ------------------
  |  Branch (2055:9): [True: 0, False: 2]
  ------------------
 2056|      0|        assert(is_used); /* otherwise node should already exist */
  ------------------
  |  Branch (2056:9): [True: 0, False: 0]
  ------------------
 2057|      0|        return 0; /* failed to allocate space for node */
 2058|      0|    }
 2059|      2|    int i3 = MAP_BOT_INDEX((pymem_block *)arena_base);
  ------------------
  |  |  625|      2|#define MAP_BOT_INDEX(p) ((AS_UINT(p) >> MAP_BOT_SHIFT) & MAP_BOT_MASK)
  |  |  ------------------
  |  |  |  |  624|      2|#define AS_UINT(p) ((uintptr_t)(p))
  |  |  ------------------
  |  |               #define MAP_BOT_INDEX(p) ((AS_UINT(p) >> MAP_BOT_SHIFT) & MAP_BOT_MASK)
  |  |  ------------------
  |  |  |  |  620|      2|#define MAP_BOT_SHIFT ARENA_BITS
  |  |  |  |  ------------------
  |  |  |  |  |  |  220|      2|#    define ARENA_BITS            20                    /* 1 MiB */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAP_BOT_INDEX(p) ((AS_UINT(p) >> MAP_BOT_SHIFT) & MAP_BOT_MASK)
  |  |  ------------------
  |  |  |  |  618|      2|#define MAP_BOT_MASK (MAP_BOT_LENGTH - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |  617|      2|#define MAP_BOT_LENGTH (1 << MAP_BOT_BITS)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  616|      2|#define MAP_BOT_BITS (ADDRESS_BITS - ARENA_BITS - 2*INTERIOR_BITS)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  599|      2|#define ADDRESS_BITS (POINTER_BITS - IGNORE_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  565|      2|#define POINTER_BITS 64
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               #define ADDRESS_BITS (POINTER_BITS - IGNORE_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  576|      2|#define IGNORE_BITS 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define MAP_BOT_BITS (ADDRESS_BITS - ARENA_BITS - 2*INTERIOR_BITS)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  220|      2|#    define ARENA_BITS            20                    /* 1 MiB */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define MAP_BOT_BITS (ADDRESS_BITS - ARENA_BITS - 2*INTERIOR_BITS)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  603|      2|#define INTERIOR_BITS ((ADDRESS_BITS - ARENA_BITS + 2) / 3)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  599|      2|#define ADDRESS_BITS (POINTER_BITS - IGNORE_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  565|      2|#define POINTER_BITS 64
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               #define ADDRESS_BITS (POINTER_BITS - IGNORE_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  576|      2|#define IGNORE_BITS 0
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               #define INTERIOR_BITS ((ADDRESS_BITS - ARENA_BITS + 2) / 3)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  220|      2|#    define ARENA_BITS            20                    /* 1 MiB */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2060|      2|    int32_t tail = (int32_t)(arena_base & ARENA_SIZE_MASK);
  ------------------
  |  |  226|      2|#define ARENA_SIZE_MASK         (ARENA_SIZE - 1)
  |  |  ------------------
  |  |  |  |  225|      2|#define ARENA_SIZE              (1 << ARENA_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  220|      2|#    define ARENA_BITS            20                    /* 1 MiB */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2061|      2|    if (tail == 0) {
  ------------------
  |  Branch (2061:9): [True: 2, False: 0]
  ------------------
 2062|       |        /* is ideal arena address */
 2063|      2|        n_hi->arenas[i3].tail_hi = is_used ? -1 : 0;
  ------------------
  |  Branch (2063:36): [True: 2, False: 0]
  ------------------
 2064|      2|    }
 2065|      0|    else {
 2066|       |        /* arena_base address is not ideal (aligned to arena size) and
 2067|       |         * so it potentially covers two MAP_BOT nodes.  Get the MAP_BOT node
 2068|       |         * for the next arena.  Note that it might be in different MAP_TOP
 2069|       |         * and MAP_MID nodes as well so we need to call arena_map_get()
 2070|       |         * again (do the full tree traversal).
 2071|       |         */
 2072|      0|        n_hi->arenas[i3].tail_hi = is_used ? tail : 0;
  ------------------
  |  Branch (2072:36): [True: 0, False: 0]
  ------------------
 2073|      0|        uintptr_t arena_base_next = arena_base + ARENA_SIZE;
  ------------------
  |  |  225|      0|#define ARENA_SIZE              (1 << ARENA_BITS)
  |  |  ------------------
  |  |  |  |  220|      0|#    define ARENA_BITS            20                    /* 1 MiB */
  |  |  ------------------
  ------------------
 2074|       |        /* If arena_base is a legit arena address, so is arena_base_next - 1
 2075|       |         * (last address in arena).  If arena_base_next overflows then it
 2076|       |         * must overflow to 0.  However, that would mean arena_base was
 2077|       |         * "ideal" and we should not be in this case. */
 2078|      0|        assert(arena_base < arena_base_next);
  ------------------
  |  Branch (2078:9): [True: 0, False: 0]
  ------------------
 2079|      0|        arena_map_bot_t *n_lo = arena_map_get(
 2080|      0|                state, (pymem_block *)arena_base_next, is_used);
 2081|      0|        if (n_lo == NULL) {
  ------------------
  |  Branch (2081:13): [True: 0, False: 0]
  ------------------
 2082|      0|            assert(is_used); /* otherwise should already exist */
  ------------------
  |  Branch (2082:13): [True: 0, False: 0]
  ------------------
 2083|      0|            n_hi->arenas[i3].tail_hi = 0;
 2084|      0|            return 0; /* failed to allocate space for node */
 2085|      0|        }
 2086|      0|        int i3_next = MAP_BOT_INDEX(arena_base_next);
  ------------------
  |  |  625|      0|#define MAP_BOT_INDEX(p) ((AS_UINT(p) >> MAP_BOT_SHIFT) & MAP_BOT_MASK)
  |  |  ------------------
  |  |  |  |  624|      0|#define AS_UINT(p) ((uintptr_t)(p))
  |  |  ------------------
  |  |               #define MAP_BOT_INDEX(p) ((AS_UINT(p) >> MAP_BOT_SHIFT) & MAP_BOT_MASK)
  |  |  ------------------
  |  |  |  |  620|      0|#define MAP_BOT_SHIFT ARENA_BITS
  |  |  |  |  ------------------
  |  |  |  |  |  |  220|      0|#    define ARENA_BITS            20                    /* 1 MiB */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAP_BOT_INDEX(p) ((AS_UINT(p) >> MAP_BOT_SHIFT) & MAP_BOT_MASK)
  |  |  ------------------
  |  |  |  |  618|      0|#define MAP_BOT_MASK (MAP_BOT_LENGTH - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |  617|      0|#define MAP_BOT_LENGTH (1 << MAP_BOT_BITS)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  616|      0|#define MAP_BOT_BITS (ADDRESS_BITS - ARENA_BITS - 2*INTERIOR_BITS)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  599|      0|#define ADDRESS_BITS (POINTER_BITS - IGNORE_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  565|      0|#define POINTER_BITS 64
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               #define ADDRESS_BITS (POINTER_BITS - IGNORE_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  576|      0|#define IGNORE_BITS 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define MAP_BOT_BITS (ADDRESS_BITS - ARENA_BITS - 2*INTERIOR_BITS)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  220|      0|#    define ARENA_BITS            20                    /* 1 MiB */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define MAP_BOT_BITS (ADDRESS_BITS - ARENA_BITS - 2*INTERIOR_BITS)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  603|      0|#define INTERIOR_BITS ((ADDRESS_BITS - ARENA_BITS + 2) / 3)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  599|      0|#define ADDRESS_BITS (POINTER_BITS - IGNORE_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  565|      0|#define POINTER_BITS 64
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               #define ADDRESS_BITS (POINTER_BITS - IGNORE_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  576|      0|#define IGNORE_BITS 0
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               #define INTERIOR_BITS ((ADDRESS_BITS - ARENA_BITS + 2) / 3)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  220|      0|#    define ARENA_BITS            20                    /* 1 MiB */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2087|      0|        n_lo->arenas[i3_next].tail_lo = is_used ? tail : 0;
  ------------------
  |  Branch (2087:41): [True: 0, False: 0]
  ------------------
 2088|      0|    }
 2089|      2|    return 1;
 2090|      2|}
obmalloc.c:arena_map_get:
 1989|  8.75k|{
 1990|  8.75k|#ifdef USE_INTERIOR_NODES
 1991|       |    /* sanity check that IGNORE_BITS is correct */
 1992|  8.75k|    assert(HIGH_BITS(p) == HIGH_BITS(&arena_map_root));
  ------------------
  |  Branch (1992:5): [True: 8.75k, Folded]
  ------------------
 1993|  8.75k|    int i1 = MAP_TOP_INDEX(p);
  ------------------
  |  |  627|  8.75k|#define MAP_TOP_INDEX(p) ((AS_UINT(p) >> MAP_TOP_SHIFT) & MAP_TOP_MASK)
  |  |  ------------------
  |  |  |  |  624|  8.75k|#define AS_UINT(p) ((uintptr_t)(p))
  |  |  ------------------
  |  |               #define MAP_TOP_INDEX(p) ((AS_UINT(p) >> MAP_TOP_SHIFT) & MAP_TOP_MASK)
  |  |  ------------------
  |  |  |  |  622|  8.75k|#define MAP_TOP_SHIFT (MAP_MID_BITS + MAP_MID_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  612|  8.75k|#define MAP_MID_BITS INTERIOR_BITS
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  603|  8.75k|#define INTERIOR_BITS ((ADDRESS_BITS - ARENA_BITS + 2) / 3)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  599|  8.75k|#define ADDRESS_BITS (POINTER_BITS - IGNORE_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  565|  8.75k|#define POINTER_BITS 64
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               #define ADDRESS_BITS (POINTER_BITS - IGNORE_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  576|  8.75k|#define IGNORE_BITS 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define INTERIOR_BITS ((ADDRESS_BITS - ARENA_BITS + 2) / 3)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  220|  8.75k|#    define ARENA_BITS            20                    /* 1 MiB */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAP_TOP_SHIFT (MAP_MID_BITS + MAP_MID_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  621|  8.75k|#define MAP_MID_SHIFT (MAP_BOT_BITS + MAP_BOT_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  616|  8.75k|#define MAP_BOT_BITS (ADDRESS_BITS - ARENA_BITS - 2*INTERIOR_BITS)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  599|  8.75k|#define ADDRESS_BITS (POINTER_BITS - IGNORE_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  565|  8.75k|#define POINTER_BITS 64
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               #define ADDRESS_BITS (POINTER_BITS - IGNORE_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  576|  8.75k|#define IGNORE_BITS 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define MAP_BOT_BITS (ADDRESS_BITS - ARENA_BITS - 2*INTERIOR_BITS)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  220|  8.75k|#    define ARENA_BITS            20                    /* 1 MiB */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define MAP_BOT_BITS (ADDRESS_BITS - ARENA_BITS - 2*INTERIOR_BITS)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  603|  8.75k|#define INTERIOR_BITS ((ADDRESS_BITS - ARENA_BITS + 2) / 3)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  599|  8.75k|#define ADDRESS_BITS (POINTER_BITS - IGNORE_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  565|  8.75k|#define POINTER_BITS 64
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               #define ADDRESS_BITS (POINTER_BITS - IGNORE_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  576|  8.75k|#define IGNORE_BITS 0
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               #define INTERIOR_BITS ((ADDRESS_BITS - ARENA_BITS + 2) / 3)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  220|  8.75k|#    define ARENA_BITS            20                    /* 1 MiB */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define MAP_MID_SHIFT (MAP_BOT_BITS + MAP_BOT_SHIFT)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  620|  8.75k|#define MAP_BOT_SHIFT ARENA_BITS
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  220|  8.75k|#    define ARENA_BITS            20                    /* 1 MiB */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAP_TOP_INDEX(p) ((AS_UINT(p) >> MAP_TOP_SHIFT) & MAP_TOP_MASK)
  |  |  ------------------
  |  |  |  |  610|  8.75k|#define MAP_TOP_MASK (MAP_TOP_LENGTH - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |  609|  8.75k|#define MAP_TOP_LENGTH (1 << MAP_TOP_BITS)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  608|  8.75k|#define MAP_TOP_BITS INTERIOR_BITS
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  603|  8.75k|#define INTERIOR_BITS ((ADDRESS_BITS - ARENA_BITS + 2) / 3)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  599|  8.75k|#define ADDRESS_BITS (POINTER_BITS - IGNORE_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  565|  8.75k|#define POINTER_BITS 64
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               #define ADDRESS_BITS (POINTER_BITS - IGNORE_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  576|  8.75k|#define IGNORE_BITS 0
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               #define INTERIOR_BITS ((ADDRESS_BITS - ARENA_BITS + 2) / 3)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  220|  8.75k|#    define ARENA_BITS            20                    /* 1 MiB */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1994|  8.75k|    if (arena_map_root.ptrs[i1] == NULL) {
  ------------------
  |  | 1979|  8.75k|#define arena_map_root (state->usage.arena_map_root)
  ------------------
  |  Branch (1994:9): [True: 1, False: 8.75k]
  ------------------
 1995|      1|        if (!create) {
  ------------------
  |  Branch (1995:13): [True: 0, False: 1]
  ------------------
 1996|      0|            return NULL;
 1997|      0|        }
 1998|      1|        arena_map_mid_t *n = PyMem_RawCalloc(1, sizeof(arena_map_mid_t));
 1999|      1|        if (n == NULL) {
  ------------------
  |  Branch (1999:13): [True: 0, False: 1]
  ------------------
 2000|      0|            return NULL;
 2001|      0|        }
 2002|      1|        arena_map_root.ptrs[i1] = n;
  ------------------
  |  | 1979|      1|#define arena_map_root (state->usage.arena_map_root)
  ------------------
 2003|      1|        arena_map_mid_count++;
  ------------------
  |  | 1981|      1|#define arena_map_mid_count (state->usage.arena_map_mid_count)
  ------------------
 2004|      1|    }
 2005|  8.75k|    int i2 = MAP_MID_INDEX(p);
  ------------------
  |  |  626|  8.75k|#define MAP_MID_INDEX(p) ((AS_UINT(p) >> MAP_MID_SHIFT) & MAP_MID_MASK)
  |  |  ------------------
  |  |  |  |  624|  8.75k|#define AS_UINT(p) ((uintptr_t)(p))
  |  |  ------------------
  |  |               #define MAP_MID_INDEX(p) ((AS_UINT(p) >> MAP_MID_SHIFT) & MAP_MID_MASK)
  |  |  ------------------
  |  |  |  |  621|  8.75k|#define MAP_MID_SHIFT (MAP_BOT_BITS + MAP_BOT_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  616|  8.75k|#define MAP_BOT_BITS (ADDRESS_BITS - ARENA_BITS - 2*INTERIOR_BITS)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  599|  8.75k|#define ADDRESS_BITS (POINTER_BITS - IGNORE_BITS)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  565|  8.75k|#define POINTER_BITS 64
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define ADDRESS_BITS (POINTER_BITS - IGNORE_BITS)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  576|  8.75k|#define IGNORE_BITS 0
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define MAP_BOT_BITS (ADDRESS_BITS - ARENA_BITS - 2*INTERIOR_BITS)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  220|  8.75k|#    define ARENA_BITS            20                    /* 1 MiB */
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define MAP_BOT_BITS (ADDRESS_BITS - ARENA_BITS - 2*INTERIOR_BITS)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  603|  8.75k|#define INTERIOR_BITS ((ADDRESS_BITS - ARENA_BITS + 2) / 3)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  599|  8.75k|#define ADDRESS_BITS (POINTER_BITS - IGNORE_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  565|  8.75k|#define POINTER_BITS 64
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               #define ADDRESS_BITS (POINTER_BITS - IGNORE_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  576|  8.75k|#define IGNORE_BITS 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define INTERIOR_BITS ((ADDRESS_BITS - ARENA_BITS + 2) / 3)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  220|  8.75k|#    define ARENA_BITS            20                    /* 1 MiB */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define MAP_MID_SHIFT (MAP_BOT_BITS + MAP_BOT_SHIFT)
  |  |  |  |  ------------------
  |  |  |  |  |  |  620|  8.75k|#define MAP_BOT_SHIFT ARENA_BITS
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  220|  8.75k|#    define ARENA_BITS            20                    /* 1 MiB */
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAP_MID_INDEX(p) ((AS_UINT(p) >> MAP_MID_SHIFT) & MAP_MID_MASK)
  |  |  ------------------
  |  |  |  |  614|  8.75k|#define MAP_MID_MASK (MAP_MID_LENGTH - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |  613|  8.75k|#define MAP_MID_LENGTH (1 << MAP_MID_BITS)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  612|  8.75k|#define MAP_MID_BITS INTERIOR_BITS
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  603|  8.75k|#define INTERIOR_BITS ((ADDRESS_BITS - ARENA_BITS + 2) / 3)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  599|  8.75k|#define ADDRESS_BITS (POINTER_BITS - IGNORE_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  565|  8.75k|#define POINTER_BITS 64
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               #define ADDRESS_BITS (POINTER_BITS - IGNORE_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  576|  8.75k|#define IGNORE_BITS 0
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               #define INTERIOR_BITS ((ADDRESS_BITS - ARENA_BITS + 2) / 3)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  220|  8.75k|#    define ARENA_BITS            20                    /* 1 MiB */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2006|  8.75k|    if (arena_map_root.ptrs[i1]->ptrs[i2] == NULL) {
  ------------------
  |  | 1979|  8.75k|#define arena_map_root (state->usage.arena_map_root)
  ------------------
  |  Branch (2006:9): [True: 352, False: 8.40k]
  ------------------
 2007|    352|        if (!create) {
  ------------------
  |  Branch (2007:13): [True: 351, False: 1]
  ------------------
 2008|    351|            return NULL;
 2009|    351|        }
 2010|      1|        arena_map_bot_t *n = PyMem_RawCalloc(1, sizeof(arena_map_bot_t));
 2011|      1|        if (n == NULL) {
  ------------------
  |  Branch (2011:13): [True: 0, False: 1]
  ------------------
 2012|      0|            return NULL;
 2013|      0|        }
 2014|      1|        arena_map_root.ptrs[i1]->ptrs[i2] = n;
  ------------------
  |  | 1979|      1|#define arena_map_root (state->usage.arena_map_root)
  ------------------
 2015|      1|        arena_map_bot_count++;
  ------------------
  |  | 1982|      1|#define arena_map_bot_count (state->usage.arena_map_bot_count)
  ------------------
 2016|      1|    }
 2017|  8.40k|    return arena_map_root.ptrs[i1]->ptrs[i2];
  ------------------
  |  | 1979|  8.40k|#define arena_map_root (state->usage.arena_map_root)
  ------------------
 2018|       |#else
 2019|       |    return &arena_map_root;
 2020|       |#endif
 2021|  8.75k|}
obmalloc.c:pymalloc_free:
 2763|  8.36k|{
 2764|  8.36k|    assert(p != NULL);
  ------------------
  |  Branch (2764:5): [True: 8.36k, False: 0]
  ------------------
 2765|       |
 2766|       |#ifdef WITH_VALGRIND
 2767|       |    if (UNLIKELY(running_on_valgrind > 0)) {
 2768|       |        return 0;
 2769|       |    }
 2770|       |#endif
 2771|       |
 2772|  8.36k|    poolp pool = POOL_ADDR(p);
  ------------------
  |  |  324|  8.36k|#define POOL_ADDR(P) ((poolp)_Py_ALIGN_DOWN((P), POOL_SIZE))
  |  |  ------------------
  |  |  |  |  216|  8.36k|#define _Py_ALIGN_DOWN(p, a) ((void *)((uintptr_t)(p) & ~(uintptr_t)((a) - 1)))
  |  |  ------------------
  ------------------
 2773|  8.36k|    if (UNLIKELY(!address_in_range(state, p, pool))) {
  ------------------
  |  | 1742|  8.36k|#  define UNLIKELY(value) __builtin_expect((value), 0)
  |  |  ------------------
  |  |  |  Branch (1742:27): [True: 203, False: 8.16k]
  |  |  ------------------
  ------------------
 2774|    203|        return 0;
 2775|    203|    }
 2776|       |    /* We allocated this address. */
 2777|       |
 2778|       |    /* Link p to the start of the pool's freeblock list.  Since
 2779|       |     * the pool had at least the p block outstanding, the pool
 2780|       |     * wasn't empty (so it's already in a usedpools[] list, or
 2781|       |     * was full and is in no list -- it's not in the freeblocks
 2782|       |     * list in any case).
 2783|       |     */
 2784|  8.36k|    assert(pool->ref.count > 0);            /* else it was empty */
  ------------------
  |  Branch (2784:5): [True: 8.16k, False: 0]
  ------------------
 2785|  8.16k|    pymem_block *lastfree = pool->freeblock;
 2786|  8.16k|    *(pymem_block **)p = lastfree;
 2787|  8.16k|    pool->freeblock = (pymem_block *)p;
 2788|  8.16k|    pool->ref.count--;
 2789|       |
 2790|  8.16k|    if (UNLIKELY(lastfree == NULL)) {
  ------------------
  |  | 1742|  8.16k|#  define UNLIKELY(value) __builtin_expect((value), 0)
  |  |  ------------------
  |  |  |  Branch (1742:27): [True: 433, False: 7.72k]
  |  |  ------------------
  ------------------
 2791|       |        /* Pool was full, so doesn't currently live in any list:
 2792|       |         * link it to the front of the appropriate usedpools[] list.
 2793|       |         * This mimics LRU pool usage for new allocations and
 2794|       |         * targets optimal filling when several pools contain
 2795|       |         * blocks of the same size class.
 2796|       |         */
 2797|    433|        insert_to_usedpool(state, pool);
 2798|    433|        return 1;
 2799|    433|    }
 2800|       |
 2801|       |    /* freeblock wasn't NULL, so the pool wasn't full,
 2802|       |     * and the pool is in a usedpools[] list.
 2803|       |     */
 2804|  7.72k|    if (LIKELY(pool->ref.count != 0)) {
  ------------------
  |  | 1743|  7.72k|#  define LIKELY(value) __builtin_expect((value), 1)
  |  |  ------------------
  |  |  |  Branch (1743:25): [True: 7.69k, False: 36]
  |  |  ------------------
  ------------------
 2805|       |        /* pool isn't empty:  leave it in usedpools */
 2806|  7.69k|        return 1;
 2807|  7.69k|    }
 2808|       |
 2809|       |    /* Pool is now empty:  unlink from usedpools, and
 2810|       |     * link to the front of freepools.  This ensures that
 2811|       |     * previously freed pools will be allocated later
 2812|       |     * (being not referenced, they are perhaps paged out).
 2813|       |     */
 2814|     36|    insert_to_freepool(state, pool);
 2815|     36|    return 1;
 2816|  7.72k|}
obmalloc.c:address_in_range:
 2230|  8.75k|{
 2231|  8.75k|    return arena_map_is_used(state, p);
 2232|  8.75k|}
obmalloc.c:arena_map_is_used:
 2096|  8.75k|{
 2097|  8.75k|    arena_map_bot_t *n = arena_map_get(state, p, 0);
 2098|  8.75k|    if (n == NULL) {
  ------------------
  |  Branch (2098:9): [True: 351, False: 8.39k]
  ------------------
 2099|    351|        return 0;
 2100|    351|    }
 2101|  8.39k|    int i3 = MAP_BOT_INDEX(p);
  ------------------
  |  |  625|  8.39k|#define MAP_BOT_INDEX(p) ((AS_UINT(p) >> MAP_BOT_SHIFT) & MAP_BOT_MASK)
  |  |  ------------------
  |  |  |  |  624|  8.39k|#define AS_UINT(p) ((uintptr_t)(p))
  |  |  ------------------
  |  |               #define MAP_BOT_INDEX(p) ((AS_UINT(p) >> MAP_BOT_SHIFT) & MAP_BOT_MASK)
  |  |  ------------------
  |  |  |  |  620|  8.39k|#define MAP_BOT_SHIFT ARENA_BITS
  |  |  |  |  ------------------
  |  |  |  |  |  |  220|  8.39k|#    define ARENA_BITS            20                    /* 1 MiB */
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define MAP_BOT_INDEX(p) ((AS_UINT(p) >> MAP_BOT_SHIFT) & MAP_BOT_MASK)
  |  |  ------------------
  |  |  |  |  618|  8.39k|#define MAP_BOT_MASK (MAP_BOT_LENGTH - 1)
  |  |  |  |  ------------------
  |  |  |  |  |  |  617|  8.39k|#define MAP_BOT_LENGTH (1 << MAP_BOT_BITS)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  616|  8.39k|#define MAP_BOT_BITS (ADDRESS_BITS - ARENA_BITS - 2*INTERIOR_BITS)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  599|  8.39k|#define ADDRESS_BITS (POINTER_BITS - IGNORE_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  565|  8.39k|#define POINTER_BITS 64
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               #define ADDRESS_BITS (POINTER_BITS - IGNORE_BITS)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  576|  8.39k|#define IGNORE_BITS 0
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define MAP_BOT_BITS (ADDRESS_BITS - ARENA_BITS - 2*INTERIOR_BITS)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  220|  8.39k|#    define ARENA_BITS            20                    /* 1 MiB */
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define MAP_BOT_BITS (ADDRESS_BITS - ARENA_BITS - 2*INTERIOR_BITS)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  603|  8.39k|#define INTERIOR_BITS ((ADDRESS_BITS - ARENA_BITS + 2) / 3)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  599|  8.39k|#define ADDRESS_BITS (POINTER_BITS - IGNORE_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  565|  8.39k|#define POINTER_BITS 64
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |               #define ADDRESS_BITS (POINTER_BITS - IGNORE_BITS)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  576|  8.39k|#define IGNORE_BITS 0
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |               #define INTERIOR_BITS ((ADDRESS_BITS - ARENA_BITS + 2) / 3)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  220|  8.39k|#    define ARENA_BITS            20                    /* 1 MiB */
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2102|       |    /* ARENA_BITS must be < 32 so that the tail is a non-negative int32_t. */
 2103|  8.39k|    int32_t hi = n->arenas[i3].tail_hi;
 2104|  8.39k|    int32_t lo = n->arenas[i3].tail_lo;
 2105|  8.39k|    int32_t tail = (int32_t)(AS_UINT(p) & ARENA_SIZE_MASK);
  ------------------
  |  |  624|  8.39k|#define AS_UINT(p) ((uintptr_t)(p))
  ------------------
                  int32_t tail = (int32_t)(AS_UINT(p) & ARENA_SIZE_MASK);
  ------------------
  |  |  226|  8.39k|#define ARENA_SIZE_MASK         (ARENA_SIZE - 1)
  |  |  ------------------
  |  |  |  |  225|  8.39k|#define ARENA_SIZE              (1 << ARENA_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  220|  8.39k|#    define ARENA_BITS            20                    /* 1 MiB */
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2106|  8.39k|    return (tail < lo) || (tail >= hi && hi != 0);
  ------------------
  |  Branch (2106:12): [True: 0, False: 8.39k]
  |  Branch (2106:28): [True: 8.39k, False: 0]
  |  Branch (2106:42): [True: 8.39k, False: 0]
  ------------------
 2107|  8.75k|}
obmalloc.c:insert_to_usedpool:
 2577|    433|{
 2578|    433|    assert(pool->ref.count > 0);            /* else the pool is empty */
  ------------------
  |  Branch (2578:5): [True: 433, False: 0]
  ------------------
 2579|       |
 2580|    433|    uint size = pool->szidx;
  ------------------
  |  |   35|    433|#define uint pymem_uint
  ------------------
 2581|    433|    poolp next = usedpools[size + size];
  ------------------
  |  | 1784|    433|#define usedpools (state->pools.used)
  ------------------
 2582|    433|    poolp prev = next->prevpool;
 2583|       |
 2584|       |    /* insert pool before next:   prev <-> pool <-> next */
 2585|    433|    pool->nextpool = next;
 2586|    433|    pool->prevpool = prev;
 2587|    433|    next->prevpool = pool;
 2588|    433|    prev->nextpool = pool;
 2589|    433|}
obmalloc.c:insert_to_freepool:
 2593|     36|{
 2594|     36|    poolp next = pool->nextpool;
 2595|     36|    poolp prev = pool->prevpool;
 2596|     36|    next->prevpool = prev;
 2597|     36|    prev->nextpool = next;
 2598|       |
 2599|       |    /* Link the pool to freepools.  This is a singly-linked
 2600|       |     * list, and pool->prevpool isn't used there.
 2601|       |     */
 2602|     36|    struct arena_object *ao = &allarenas[pool->arenaindex];
  ------------------
  |  | 1785|     36|#define allarenas (state->mgmt.arenas)
  ------------------
 2603|     36|    pool->nextpool = ao->freepools;
 2604|     36|    ao->freepools = pool;
 2605|     36|    uint nf = ao->nfreepools;
  ------------------
  |  |   35|     36|#define uint pymem_uint
  ------------------
 2606|       |    /* If this is the rightmost arena with this number of free pools,
 2607|       |     * nfp2lasta[nf] needs to change.  Caution:  if nf is 0, there
 2608|       |     * are no arenas in usable_arenas with that value.
 2609|       |     */
 2610|     36|    struct arena_object* lastnf = nfp2lasta[nf];
  ------------------
  |  | 1789|     36|#define nfp2lasta (state->mgmt.nfp2lasta)
  ------------------
 2611|     36|    assert((nf == 0 && lastnf == NULL) ||
  ------------------
  |  Branch (2611:5): [True: 0, False: 36]
  |  Branch (2611:5): [True: 0, False: 0]
  |  Branch (2611:5): [True: 36, False: 0]
  |  Branch (2611:5): [True: 36, False: 0]
  |  Branch (2611:5): [True: 36, False: 0]
  |  Branch (2611:5): [True: 36, False: 0]
  |  Branch (2611:5): [True: 0, False: 0]
  ------------------
 2612|     36|           (nf > 0 &&
 2613|     36|            lastnf != NULL &&
 2614|     36|            lastnf->nfreepools == nf &&
 2615|     36|            (lastnf->nextarena == NULL ||
 2616|     36|             nf < lastnf->nextarena->nfreepools)));
 2617|     36|    if (lastnf == ao) {  /* it is the rightmost */
  ------------------
  |  Branch (2617:9): [True: 36, False: 0]
  ------------------
 2618|     36|        struct arena_object* p = ao->prevarena;
 2619|     36|        nfp2lasta[nf] = (p != NULL && p->nfreepools == nf) ? p : NULL;
  ------------------
  |  | 1789|     36|#define nfp2lasta (state->mgmt.nfp2lasta)
  ------------------
  |  Branch (2619:26): [True: 0, False: 36]
  |  Branch (2619:39): [True: 0, False: 0]
  ------------------
 2620|     36|    }
 2621|     36|    ao->nfreepools = ++nf;
 2622|       |
 2623|       |    /* All the rest is arena management.  We just freed
 2624|       |     * a pool, and there are 4 cases for arena mgmt:
 2625|       |     * 1. If all the pools are free, return the arena to
 2626|       |     *    the system free().  Except if this is the last
 2627|       |     *    arena in the list, keep it to avoid thrashing:
 2628|       |     *    keeping one wholly free arena in the list avoids
 2629|       |     *    pathological cases where a simple loop would
 2630|       |     *    otherwise provoke needing to allocate and free an
 2631|       |     *    arena on every iteration.  See bpo-37257.
 2632|       |     * 2. If this is the only free pool in the arena,
 2633|       |     *    add the arena back to the `usable_arenas` list.
 2634|       |     * 3. If the "next" arena has a smaller count of free
 2635|       |     *    pools, we have to "slide this arena right" to
 2636|       |     *    restore that usable_arenas is sorted in order of
 2637|       |     *    nfreepools.
 2638|       |     * 4. Else there's nothing more to do.
 2639|       |     */
 2640|     36|    if (nf == ao->ntotalpools && ao->nextarena != NULL) {
  ------------------
  |  Branch (2640:9): [True: 0, False: 36]
  |  Branch (2640:34): [True: 0, False: 0]
  ------------------
 2641|       |        /* Case 1.  First unlink ao from usable_arenas.
 2642|       |         */
 2643|      0|        assert(ao->prevarena == NULL ||
  ------------------
  |  Branch (2643:9): [True: 0, False: 0]
  |  Branch (2643:9): [True: 0, False: 0]
  ------------------
 2644|      0|               ao->prevarena->address != 0);
 2645|      0|        assert(ao ->nextarena == NULL ||
  ------------------
  |  Branch (2645:9): [True: 0, False: 0]
  |  Branch (2645:9): [True: 0, False: 0]
  ------------------
 2646|      0|               ao->nextarena->address != 0);
 2647|       |
 2648|       |        /* Fix the pointer in the prevarena, or the
 2649|       |         * usable_arenas pointer.
 2650|       |         */
 2651|      0|        if (ao->prevarena == NULL) {
  ------------------
  |  Branch (2651:13): [True: 0, False: 0]
  ------------------
 2652|      0|            usable_arenas = ao->nextarena;
  ------------------
  |  | 1788|      0|#define usable_arenas (state->mgmt.usable_arenas)
  ------------------
 2653|      0|            assert(usable_arenas == NULL ||
  ------------------
  |  Branch (2653:13): [True: 0, False: 0]
  |  Branch (2653:13): [True: 0, False: 0]
  ------------------
 2654|      0|                   usable_arenas->address != 0);
 2655|      0|        }
 2656|      0|        else {
 2657|      0|            assert(ao->prevarena->nextarena == ao);
  ------------------
  |  Branch (2657:13): [True: 0, False: 0]
  ------------------
 2658|      0|            ao->prevarena->nextarena =
 2659|      0|                ao->nextarena;
 2660|      0|        }
 2661|       |        /* Fix the pointer in the nextarena. */
 2662|      0|        if (ao->nextarena != NULL) {
  ------------------
  |  Branch (2662:13): [True: 0, False: 0]
  ------------------
 2663|      0|            assert(ao->nextarena->prevarena == ao);
  ------------------
  |  Branch (2663:13): [True: 0, False: 0]
  ------------------
 2664|      0|            ao->nextarena->prevarena =
 2665|      0|                ao->prevarena;
 2666|      0|        }
 2667|       |        /* Record that this arena_object slot is
 2668|       |         * available to be reused.
 2669|       |         */
 2670|      0|        ao->nextarena = unused_arena_objects;
  ------------------
  |  | 1787|      0|#define unused_arena_objects (state->mgmt.unused_arena_objects)
  ------------------
 2671|      0|        unused_arena_objects = ao;
  ------------------
  |  | 1787|      0|#define unused_arena_objects (state->mgmt.unused_arena_objects)
  ------------------
 2672|       |
 2673|      0|#if WITH_PYMALLOC_RADIX_TREE
 2674|       |        /* mark arena region as not under control of obmalloc */
 2675|      0|        arena_map_mark_used(state, ao->address, 0);
 2676|      0|#endif
 2677|       |
 2678|       |        /* Free the entire arena. */
 2679|      0|        _PyObject_Arena.free(_PyObject_Arena.ctx,
  ------------------
  |  |  718|      0|#define _PyObject_Arena (_PyRuntime.allocators.obj_arena)
  ------------------
                      _PyObject_Arena.free(_PyObject_Arena.ctx,
  ------------------
  |  |  718|      0|#define _PyObject_Arena (_PyRuntime.allocators.obj_arena)
  ------------------
 2680|      0|                             (void *)ao->address, ARENA_SIZE);
  ------------------
  |  |  225|      0|#define ARENA_SIZE              (1 << ARENA_BITS)
  |  |  ------------------
  |  |  |  |  220|      0|#    define ARENA_BITS            20                    /* 1 MiB */
  |  |  ------------------
  ------------------
 2681|      0|        ao->address = 0;                        /* mark unassociated */
 2682|      0|        --narenas_currently_allocated;
  ------------------
  |  | 1790|      0|#define narenas_currently_allocated (state->mgmt.narenas_currently_allocated)
  ------------------
 2683|       |
 2684|      0|        return;
 2685|      0|    }
 2686|       |
 2687|     36|    if (nf == 1) {
  ------------------
  |  Branch (2687:9): [True: 0, False: 36]
  ------------------
 2688|       |        /* Case 2.  Put ao at the head of
 2689|       |         * usable_arenas.  Note that because
 2690|       |         * ao->nfreepools was 0 before, ao isn't
 2691|       |         * currently on the usable_arenas list.
 2692|       |         */
 2693|      0|        ao->nextarena = usable_arenas;
  ------------------
  |  | 1788|      0|#define usable_arenas (state->mgmt.usable_arenas)
  ------------------
 2694|      0|        ao->prevarena = NULL;
 2695|      0|        if (usable_arenas)
  ------------------
  |  | 1788|      0|#define usable_arenas (state->mgmt.usable_arenas)
  |  |  ------------------
  |  |  |  Branch (1788:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2696|      0|            usable_arenas->prevarena = ao;
  ------------------
  |  | 1788|      0|#define usable_arenas (state->mgmt.usable_arenas)
  ------------------
 2697|      0|        usable_arenas = ao;
  ------------------
  |  | 1788|      0|#define usable_arenas (state->mgmt.usable_arenas)
  ------------------
 2698|      0|        assert(usable_arenas->address != 0);
  ------------------
  |  Branch (2698:9): [True: 0, False: 0]
  ------------------
 2699|      0|        if (nfp2lasta[1] == NULL) {
  ------------------
  |  | 1789|      0|#define nfp2lasta (state->mgmt.nfp2lasta)
  ------------------
  |  Branch (2699:13): [True: 0, False: 0]
  ------------------
 2700|      0|            nfp2lasta[1] = ao;
  ------------------
  |  | 1789|      0|#define nfp2lasta (state->mgmt.nfp2lasta)
  ------------------
 2701|      0|        }
 2702|       |
 2703|      0|        return;
 2704|      0|    }
 2705|       |
 2706|       |    /* If this arena is now out of order, we need to keep
 2707|       |     * the list sorted.  The list is kept sorted so that
 2708|       |     * the "most full" arenas are used first, which allows
 2709|       |     * the nearly empty arenas to be completely freed.  In
 2710|       |     * a few un-scientific tests, it seems like this
 2711|       |     * approach allowed a lot more memory to be freed.
 2712|       |     */
 2713|       |    /* If this is the only arena with nf, record that. */
 2714|     36|    if (nfp2lasta[nf] == NULL) {
  ------------------
  |  | 1789|     36|#define nfp2lasta (state->mgmt.nfp2lasta)
  ------------------
  |  Branch (2714:9): [True: 36, False: 0]
  ------------------
 2715|     36|        nfp2lasta[nf] = ao;
  ------------------
  |  | 1789|     36|#define nfp2lasta (state->mgmt.nfp2lasta)
  ------------------
 2716|     36|    } /* else the rightmost with nf doesn't change */
 2717|       |    /* If this was the rightmost of the old size, it remains in place. */
 2718|     36|    if (ao == lastnf) {
  ------------------
  |  Branch (2718:9): [True: 36, False: 0]
  ------------------
 2719|       |        /* Case 4.  Nothing to do. */
 2720|     36|        return;
 2721|     36|    }
 2722|       |    /* If ao were the only arena in the list, the last block would have
 2723|       |     * gotten us out.
 2724|       |     */
 2725|     36|    assert(ao->nextarena != NULL);
  ------------------
  |  Branch (2725:5): [True: 0, False: 0]
  ------------------
 2726|       |
 2727|       |    /* Case 3:  We have to move the arena towards the end of the list,
 2728|       |     * because it has more free pools than the arena to its right.  It needs
 2729|       |     * to move to follow lastnf.
 2730|       |     * First unlink ao from usable_arenas.
 2731|       |     */
 2732|      0|    if (ao->prevarena != NULL) {
  ------------------
  |  Branch (2732:9): [True: 0, False: 0]
  ------------------
 2733|       |        /* ao isn't at the head of the list */
 2734|      0|        assert(ao->prevarena->nextarena == ao);
  ------------------
  |  Branch (2734:9): [True: 0, False: 0]
  ------------------
 2735|      0|        ao->prevarena->nextarena = ao->nextarena;
 2736|      0|    }
 2737|      0|    else {
 2738|       |        /* ao is at the head of the list */
 2739|      0|        assert(usable_arenas == ao);
  ------------------
  |  Branch (2739:9): [True: 0, False: 0]
  ------------------
 2740|      0|        usable_arenas = ao->nextarena;
  ------------------
  |  | 1788|      0|#define usable_arenas (state->mgmt.usable_arenas)
  ------------------
 2741|      0|    }
 2742|      0|    ao->nextarena->prevarena = ao->prevarena;
 2743|       |    /* And insert after lastnf. */
 2744|      0|    ao->prevarena = lastnf;
 2745|      0|    ao->nextarena = lastnf->nextarena;
 2746|      0|    if (ao->nextarena != NULL) {
  ------------------
  |  Branch (2746:9): [True: 0, False: 0]
  ------------------
 2747|      0|        ao->nextarena->prevarena = ao;
 2748|      0|    }
 2749|      0|    lastnf->nextarena = ao;
 2750|       |    /* Verify that the swaps worked. */
 2751|      0|    assert(ao->nextarena == NULL || nf <= ao->nextarena->nfreepools);
  ------------------
  |  Branch (2751:5): [True: 0, False: 0]
  |  Branch (2751:5): [True: 0, False: 0]
  ------------------
 2752|      0|    assert(ao->prevarena == NULL || nf > ao->prevarena->nfreepools);
  ------------------
  |  Branch (2752:5): [True: 0, False: 0]
  |  Branch (2752:5): [True: 0, False: 0]
  ------------------
 2753|      0|    assert(ao->nextarena == NULL || ao->nextarena->prevarena == ao);
  ------------------
  |  Branch (2753:5): [True: 0, False: 0]
  |  Branch (2753:5): [True: 0, False: 0]
  ------------------
 2754|      0|    assert((usable_arenas == ao && ao->prevarena == NULL)
  ------------------
  |  Branch (2754:5): [True: 0, False: 0]
  |  Branch (2754:5): [True: 0, False: 0]
  |  Branch (2754:5): [True: 0, False: 0]
  ------------------
 2755|      0|           || ao->prevarena->nextarena == ao);
 2756|      0|}
obmalloc.c:pymalloc_realloc:
 2848|    385|{
 2849|    385|    void *bp;
 2850|    385|    poolp pool;
 2851|    385|    size_t size;
 2852|       |
 2853|    385|    assert(p != NULL);
  ------------------
  |  Branch (2853:5): [True: 385, False: 0]
  ------------------
 2854|       |
 2855|       |#ifdef WITH_VALGRIND
 2856|       |    /* Treat running_on_valgrind == -1 the same as 0 */
 2857|       |    if (UNLIKELY(running_on_valgrind > 0)) {
 2858|       |        return 0;
 2859|       |    }
 2860|       |#endif
 2861|       |
 2862|    385|    pool = POOL_ADDR(p);
  ------------------
  |  |  324|    385|#define POOL_ADDR(P) ((poolp)_Py_ALIGN_DOWN((P), POOL_SIZE))
  |  |  ------------------
  |  |  |  |  216|    385|#define _Py_ALIGN_DOWN(p, a) ((void *)((uintptr_t)(p) & ~(uintptr_t)((a) - 1)))
  |  |  ------------------
  ------------------
 2863|    385|    if (!address_in_range(state, p, pool)) {
  ------------------
  |  Branch (2863:9): [True: 148, False: 237]
  ------------------
 2864|       |        /* pymalloc is not managing this block.
 2865|       |
 2866|       |           If nbytes <= SMALL_REQUEST_THRESHOLD, it's tempting to try to take
 2867|       |           over this block.  However, if we do, we need to copy the valid data
 2868|       |           from the C-managed block to one of our blocks, and there's no
 2869|       |           portable way to know how much of the memory space starting at p is
 2870|       |           valid.
 2871|       |
 2872|       |           As bug 1185883 pointed out the hard way, it's possible that the
 2873|       |           C-managed block is "at the end" of allocated VM space, so that a
 2874|       |           memory fault can occur if we try to copy nbytes bytes starting at p.
 2875|       |           Instead we punt: let C continue to manage this block. */
 2876|    148|        return 0;
 2877|    148|    }
 2878|       |
 2879|       |    /* pymalloc is in charge of this block */
 2880|    237|    size = INDEX2SIZE(pool->szidx);
  ------------------
  |  |  146|    237|#define INDEX2SIZE(I) (((pymem_uint)(I) + 1) << ALIGNMENT_SHIFT)
  |  |  ------------------
  |  |  |  |  139|    237|#define ALIGNMENT_SHIFT         4
  |  |  ------------------
  ------------------
 2881|    237|    if (nbytes <= size) {
  ------------------
  |  Branch (2881:9): [True: 39, False: 198]
  ------------------
 2882|       |        /* The block is staying the same or shrinking.
 2883|       |
 2884|       |           If it's shrinking, there's a tradeoff: it costs cycles to copy the
 2885|       |           block to a smaller size class, but it wastes memory not to copy it.
 2886|       |
 2887|       |           The compromise here is to copy on shrink only if at least 25% of
 2888|       |           size can be shaved off. */
 2889|     39|        if (4 * nbytes > 3 * size) {
  ------------------
  |  Branch (2889:13): [True: 7, False: 32]
  ------------------
 2890|       |            /* It's the same, or shrinking and new/old > 3/4. */
 2891|      7|            *newptr_p = p;
 2892|      7|            return 1;
 2893|      7|        }
 2894|     32|        size = nbytes;
 2895|     32|    }
 2896|       |
 2897|    230|    bp = _PyObject_Malloc(ctx, nbytes);
 2898|    230|    if (bp != NULL) {
  ------------------
  |  Branch (2898:9): [True: 230, False: 0]
  ------------------
 2899|    230|        memcpy(bp, p, size);
 2900|    230|        _PyObject_Free(ctx, p);
 2901|    230|    }
 2902|    230|    *newptr_p = bp;
 2903|    230|    return 1;
 2904|    237|}
obmalloc.c:init_obmalloc_pools:
 3551|      1|{
 3552|       |    // initialize the obmalloc->pools structure.  This must be done
 3553|       |    // before the obmalloc alloc/free functions can be called.
 3554|      1|    poolp temp[OBMALLOC_USED_POOLS_SIZE] =
 3555|      1|        _obmalloc_pools_INIT(interp->obmalloc->pools);
  ------------------
  |  |   40|      1|    { PT_8(p, 0), PT_8(p, 8), PT_8(p, 16), PT_8(p, 24) }
  |  |  ------------------
  |  |  |  |   20|      1|    PT(p, start), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|      1|#define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   21|      1|    PT(p, start+1), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|      1|#define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   22|      1|    PT(p, start+2), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|      1|#define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   23|      1|    PT(p, start+3), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|      1|#define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   24|      1|    PT(p, start+4), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|      1|#define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   25|      1|    PT(p, start+5), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|      1|#define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   26|      1|    PT(p, start+6), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|      1|#define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   27|      1|    PT(p, start+7)
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|      1|#define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   { PT_8(p, 0), PT_8(p, 8), PT_8(p, 16), PT_8(p, 24) }
  |  |  ------------------
  |  |  |  |   20|      1|    PT(p, start), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|      1|#define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   21|      1|    PT(p, start+1), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|      1|#define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   22|      1|    PT(p, start+2), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|      1|#define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   23|      1|    PT(p, start+3), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|      1|#define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   24|      1|    PT(p, start+4), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|      1|#define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   25|      1|    PT(p, start+5), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|      1|#define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   26|      1|    PT(p, start+6), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|      1|#define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   27|      1|    PT(p, start+7)
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|      1|#define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   { PT_8(p, 0), PT_8(p, 8), PT_8(p, 16), PT_8(p, 24) }
  |  |  ------------------
  |  |  |  |   20|      1|    PT(p, start), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|      1|#define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   21|      1|    PT(p, start+1), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|      1|#define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   22|      1|    PT(p, start+2), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|      1|#define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   23|      1|    PT(p, start+3), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|      1|#define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   24|      1|    PT(p, start+4), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|      1|#define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   25|      1|    PT(p, start+5), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|      1|#define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   26|      1|    PT(p, start+6), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|      1|#define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   27|      1|    PT(p, start+7)
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|      1|#define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   { PT_8(p, 0), PT_8(p, 8), PT_8(p, 16), PT_8(p, 24) }
  |  |  ------------------
  |  |  |  |   20|      1|    PT(p, start), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|      1|#define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   21|      1|    PT(p, start+1), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|      1|#define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   22|      1|    PT(p, start+2), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|      1|#define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   23|      1|    PT(p, start+3), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|      1|#define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   24|      1|    PT(p, start+4), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|      1|#define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   25|      1|    PT(p, start+5), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|      1|#define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   26|      1|    PT(p, start+6), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|      1|#define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   27|      1|    PT(p, start+7)
  |  |  |  |  ------------------
  |  |  |  |  |  |   17|      1|#define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define PT(p, x)   PTA(p, x), PTA(p, x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      1|    ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3556|      1|    memcpy(&interp->obmalloc->pools.used, temp, sizeof(temp));
 3557|      1|}

rangeobject.c:range_dealloc:
  186|      4|{
  187|      4|    rangeobject *r = (rangeobject*)op;
  188|      4|    Py_DECREF(r->start);
  ------------------
  |  |  430|      4|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  189|      4|    Py_DECREF(r->stop);
  ------------------
  |  |  430|      4|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  190|      4|    Py_DECREF(r->step);
  ------------------
  |  |  430|      4|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  191|      4|    Py_DECREF(r->length);
  ------------------
  |  |  430|      4|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  192|      4|    _Py_FREELIST_FREE(ranges, r, PyObject_Free);
  ------------------
  |  |   35|      4|    _PyFreeList_Free(&_Py_freelists_GET()->NAME, _PyObject_CAST(op), \
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   36|      4|                     Py_ ## NAME ## _MAXFREELIST, freefunc)
  |  |  ------------------
  |  |  |  |   22|      4|#  define Py_ranges_MAXFREELIST 6
  |  |  ------------------
  ------------------
  193|      4|}
rangeobject.c:make_range_object:
   69|      4|{
   70|      4|    PyObject *length;
   71|      4|    length = compute_range_length(start, stop, step);
   72|      4|    if (length == NULL) {
  ------------------
  |  Branch (72:9): [True: 0, False: 4]
  ------------------
   73|      0|        return NULL;
   74|      0|    }
   75|      4|    rangeobject *obj = _Py_FREELIST_POP(rangeobject, ranges);
  ------------------
  |  |   43|      4|    _Py_CAST(TYPE*, _PyFreeList_Pop(&_Py_freelists_GET()->NAME))
  |  |  ------------------
  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
   76|      4|    if (obj == NULL) {
  ------------------
  |  Branch (76:9): [True: 1, False: 3]
  ------------------
   77|      1|        obj = PyObject_New(rangeobject, type);
  ------------------
  |  |  130|      1|#define PyObject_New(type, typeobj) ((type *)_PyObject_New(typeobj))
  ------------------
   78|      1|        if (obj == NULL) {
  ------------------
  |  Branch (78:13): [True: 0, False: 1]
  ------------------
   79|      0|            Py_DECREF(length);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   80|      0|            return NULL;
   81|      0|        }
   82|      1|    }
   83|      4|    obj->start = start;
   84|      4|    obj->stop = stop;
   85|      4|    obj->step = step;
   86|      4|    obj->length = length;
   87|      4|    return obj;
   88|      4|}
rangeobject.c:compute_range_length:
  244|      4|{
  245|       |    /* -------------------------------------------------------------
  246|       |    Algorithm is equal to that of get_len_of_range(), but it operates
  247|       |    on PyObjects (which are assumed to be PyLong objects).
  248|       |    ---------------------------------------------------------------*/
  249|      4|    int cmp_result;
  250|      4|    PyObject *lo, *hi;
  251|      4|    PyObject *diff = NULL;
  252|      4|    PyObject *tmp1 = NULL, *tmp2 = NULL, *result;
  253|       |                /* holds sub-expression evaluations */
  254|       |
  255|      4|    PyObject *zero = _PyLong_GetZero();  // borrowed reference
  256|      4|    PyObject *one = _PyLong_GetOne();  // borrowed reference
  257|       |
  258|      4|    assert(PyLong_Check(start));
  ------------------
  |  Branch (258:5): [True: 4, False: 0]
  ------------------
  259|      4|    assert(PyLong_Check(stop));
  ------------------
  |  Branch (259:5): [True: 4, False: 0]
  ------------------
  260|      4|    assert(PyLong_Check(step));
  ------------------
  |  Branch (260:5): [True: 4, False: 0]
  ------------------
  261|       |
  262|       |    /* fast path when all arguments fit into a long integer */
  263|      4|    long len = compute_range_length_long(start, stop, step);
  264|      4|    if (len >= 0) {
  ------------------
  |  Branch (264:9): [True: 3, False: 1]
  ------------------
  265|      3|        return PyLong_FromLong(len);
  266|      3|    }
  267|      1|    else if (len == -1) {
  ------------------
  |  Branch (267:14): [True: 0, False: 1]
  ------------------
  268|       |        /* unexpected error from compute_range_length_long, we propagate to the caller */
  269|      0|        return NULL;
  270|      0|    }
  271|      4|    assert(len == -2);
  ------------------
  |  Branch (271:5): [True: 1, False: 0]
  ------------------
  272|       |
  273|      1|    cmp_result = PyObject_RichCompareBool(step, zero, Py_GT);
  ------------------
  |  |  656|      1|#define Py_GT 4
  ------------------
  274|      1|    if (cmp_result == -1)
  ------------------
  |  Branch (274:9): [True: 0, False: 1]
  ------------------
  275|      0|        return NULL;
  276|       |
  277|      1|    if (cmp_result == 1) {
  ------------------
  |  Branch (277:9): [True: 1, False: 0]
  ------------------
  278|      1|        lo = start;
  279|      1|        hi = stop;
  280|      1|        Py_INCREF(step);
  ------------------
  |  |  310|      1|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  281|      1|    } else {
  282|      0|        lo = stop;
  283|      0|        hi = start;
  284|      0|        step = PyNumber_Negative(step);
  285|      0|        if (!step)
  ------------------
  |  Branch (285:13): [True: 0, False: 0]
  ------------------
  286|      0|            return NULL;
  287|      0|    }
  288|       |
  289|       |    /* if (lo >= hi), return length of 0. */
  290|      1|    cmp_result = PyObject_RichCompareBool(lo, hi, Py_GE);
  ------------------
  |  |  657|      1|#define Py_GE 5
  ------------------
  291|      1|    if (cmp_result != 0) {
  ------------------
  |  Branch (291:9): [True: 0, False: 1]
  ------------------
  292|      0|        Py_DECREF(step);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  293|      0|        if (cmp_result < 0)
  ------------------
  |  Branch (293:13): [True: 0, False: 0]
  ------------------
  294|      0|            return NULL;
  295|      0|        result = zero;
  296|      0|        return Py_NewRef(result);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  297|      0|    }
  298|       |
  299|      1|    if ((tmp1 = PyNumber_Subtract(hi, lo)) == NULL)
  ------------------
  |  Branch (299:9): [True: 0, False: 1]
  ------------------
  300|      0|        goto Fail;
  301|       |
  302|      1|    if ((diff = PyNumber_Subtract(tmp1, one)) == NULL)
  ------------------
  |  Branch (302:9): [True: 0, False: 1]
  ------------------
  303|      0|        goto Fail;
  304|       |
  305|      1|    if ((tmp2 = PyNumber_FloorDivide(diff, step)) == NULL)
  ------------------
  |  Branch (305:9): [True: 0, False: 1]
  ------------------
  306|      0|        goto Fail;
  307|       |
  308|      1|    if ((result = PyNumber_Add(tmp2, one)) == NULL)
  ------------------
  |  Branch (308:9): [True: 0, False: 1]
  ------------------
  309|      0|        goto Fail;
  310|       |
  311|      1|    Py_DECREF(tmp2);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  312|      1|    Py_DECREF(diff);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  313|      1|    Py_DECREF(step);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  314|      1|    Py_DECREF(tmp1);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  315|      1|    return result;
  316|       |
  317|      0|  Fail:
  318|      0|    Py_DECREF(step);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  319|      0|    Py_XDECREF(tmp2);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  320|      0|    Py_XDECREF(diff);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  321|      0|    Py_XDECREF(tmp1);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  322|       |    return NULL;
  323|      1|}
rangeobject.c:compute_range_length_long:
  203|      4|                PyObject *stop, PyObject *step) {
  204|      4|    int overflow = 0;
  205|       |
  206|      4|    long long_start = PyLong_AsLongAndOverflow(start, &overflow);
  207|      4|    if (overflow) {
  ------------------
  |  Branch (207:9): [True: 0, False: 4]
  ------------------
  208|      0|        return -2;
  209|      0|    }
  210|      4|    if (long_start == -1 && PyErr_Occurred()) {
  ------------------
  |  Branch (210:9): [True: 0, False: 4]
  |  Branch (210:29): [True: 0, False: 0]
  ------------------
  211|      0|        return -1;
  212|      0|    }
  213|      4|    long long_stop = PyLong_AsLongAndOverflow(stop, &overflow);
  214|      4|    if (overflow) {
  ------------------
  |  Branch (214:9): [True: 1, False: 3]
  ------------------
  215|      1|        return -2;
  216|      1|    }
  217|      3|    if (long_stop == -1 && PyErr_Occurred()) {
  ------------------
  |  Branch (217:9): [True: 0, False: 3]
  |  Branch (217:28): [True: 0, False: 0]
  ------------------
  218|      0|        return -1;
  219|      0|    }
  220|      3|    long long_step = PyLong_AsLongAndOverflow(step, &overflow);
  221|      3|    if (overflow) {
  ------------------
  |  Branch (221:9): [True: 0, False: 3]
  ------------------
  222|      0|        return -2;
  223|      0|    }
  224|      3|    if (long_step == -1 && PyErr_Occurred()) {
  ------------------
  |  Branch (224:9): [True: 0, False: 3]
  |  Branch (224:28): [True: 0, False: 0]
  ------------------
  225|      0|        return -1;
  226|      0|    }
  227|       |
  228|      3|    unsigned long ulen = get_len_of_range(long_start, long_stop, long_step);
  229|      3|    if (ulen > (unsigned long)LONG_MAX) {
  ------------------
  |  Branch (229:9): [True: 0, False: 3]
  ------------------
  230|       |        /* length too large for a long */
  231|      0|        return -2;
  232|      0|    }
  233|      3|    else {
  234|      3|        return (long)ulen;
  235|      3|    }
  236|      3|}
rangeobject.c:get_len_of_range:
  993|      6|{
  994|       |    /* -------------------------------------------------------------
  995|       |    If step > 0 and lo >= hi, or step < 0 and lo <= hi, the range is empty.
  996|       |    Else for step > 0, if n values are in the range, the last one is
  997|       |    lo + (n-1)*step, which must be <= hi-1.  Rearranging,
  998|       |    n <= (hi - lo - 1)/step + 1, so taking the floor of the RHS gives
  999|       |    the proper value.  Since lo < hi in this case, hi-lo-1 >= 0, so
 1000|       |    the RHS is non-negative and so truncation is the same as the
 1001|       |    floor.  Letting M be the largest positive long, the worst case
 1002|       |    for the RHS numerator is hi=M, lo=-M-1, and then
 1003|       |    hi-lo-1 = M-(-M-1)-1 = 2*M.  Therefore unsigned long has enough
 1004|       |    precision to compute the RHS exactly.  The analysis for step < 0
 1005|       |    is similar.
 1006|       |    ---------------------------------------------------------------*/
 1007|      6|    assert(step != 0);
  ------------------
  |  Branch (1007:5): [True: 6, False: 0]
  ------------------
 1008|      6|    if (step > 0 && lo < hi)
  ------------------
  |  Branch (1008:9): [True: 6, False: 0]
  |  Branch (1008:21): [True: 4, False: 2]
  ------------------
 1009|      4|        return 1UL + (hi - 1UL - lo) / step;
 1010|      2|    else if (step < 0 && lo > hi)
  ------------------
  |  Branch (1010:14): [True: 0, False: 2]
  |  Branch (1010:26): [True: 0, False: 0]
  ------------------
 1011|      0|        return 1UL + (lo - 1UL - hi) / (0UL - step);
 1012|      2|    else
 1013|      2|        return 0UL;
 1014|      6|}
rangeobject.c:fast_range_iter:
 1021|      3|{
 1022|      3|    _PyRangeIterObject *it = _Py_FREELIST_POP(_PyRangeIterObject, range_iters);
  ------------------
  |  |   43|      3|    _Py_CAST(TYPE*, _PyFreeList_Pop(&_Py_freelists_GET()->NAME))
  |  |  ------------------
  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
 1023|      3|    if (it == NULL) {
  ------------------
  |  Branch (1023:9): [True: 1, False: 2]
  ------------------
 1024|      1|        it = PyObject_New(_PyRangeIterObject, &PyRangeIter_Type);
  ------------------
  |  |  130|      1|#define PyObject_New(type, typeobj) ((type *)_PyObject_New(typeobj))
  ------------------
 1025|      1|        if (it == NULL) {
  ------------------
  |  Branch (1025:13): [True: 0, False: 1]
  ------------------
 1026|      0|            return NULL;
 1027|      0|        }
 1028|      1|    }
 1029|      3|    assert(Py_IS_TYPE(it, &PyRangeIter_Type));
  ------------------
  |  Branch (1029:5): [True: 3, False: 0]
  ------------------
 1030|      3|    it->start = start;
 1031|      3|    it->step = step;
 1032|      3|    it->len = len;
 1033|      3|    return (PyObject *)it;
 1034|      3|}
rangeobject.c:range_from_array:
   97|      4|{
   98|      4|    rangeobject *obj;
   99|      4|    PyObject *start = NULL, *stop = NULL, *step = NULL;
  100|       |
  101|      4|    switch (num_args) {
  102|      0|        case 3:
  ------------------
  |  Branch (102:9): [True: 0, False: 4]
  ------------------
  103|      0|            step = args[2];
  104|      0|            _Py_FALLTHROUGH;
  ------------------
  |  |  644|      0|#  define _Py_FALLTHROUGH __attribute__((fallthrough))
  ------------------
  105|      0|        case 2:
  ------------------
  |  Branch (105:9): [True: 0, False: 4]
  ------------------
  106|       |            /* Convert borrowed refs to owned refs */
  107|      0|            start = PyNumber_Index(args[0]);
  108|      0|            if (!start) {
  ------------------
  |  Branch (108:17): [True: 0, False: 0]
  ------------------
  109|      0|                return NULL;
  110|      0|            }
  111|      0|            stop = PyNumber_Index(args[1]);
  112|      0|            if (!stop) {
  ------------------
  |  Branch (112:17): [True: 0, False: 0]
  ------------------
  113|      0|                Py_DECREF(start);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  114|      0|                return NULL;
  115|      0|            }
  116|      0|            step = validate_step(step);  /* Caution, this can clear exceptions */
  117|      0|            if (!step) {
  ------------------
  |  Branch (117:17): [True: 0, False: 0]
  ------------------
  118|      0|                Py_DECREF(start);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  119|      0|                Py_DECREF(stop);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  120|      0|                return NULL;
  121|      0|            }
  122|      0|            break;
  123|      4|        case 1:
  ------------------
  |  Branch (123:9): [True: 4, False: 0]
  ------------------
  124|      4|            stop = PyNumber_Index(args[0]);
  125|      4|            if (!stop) {
  ------------------
  |  Branch (125:17): [True: 0, False: 4]
  ------------------
  126|      0|                return NULL;
  127|      0|            }
  128|      4|            start = _PyLong_GetZero();
  129|      4|            step = _PyLong_GetOne();
  130|      4|            break;
  131|      0|        case 0:
  ------------------
  |  Branch (131:9): [True: 0, False: 4]
  ------------------
  132|      0|            PyErr_SetString(PyExc_TypeError,
  133|      0|                            "range expected at least 1 argument, got 0");
  134|      0|            return NULL;
  135|      0|        default:
  ------------------
  |  Branch (135:9): [True: 0, False: 4]
  ------------------
  136|      0|            PyErr_Format(PyExc_TypeError,
  137|      0|                         "range expected at most 3 arguments, got %zd",
  138|      0|                         num_args);
  139|      0|            return NULL;
  140|      4|    }
  141|      4|    obj = make_range_object(type, start, stop, step);
  142|      4|    if (obj != NULL) {
  ------------------
  |  Branch (142:9): [True: 4, False: 0]
  ------------------
  143|      4|        return (PyObject *) obj;
  144|      4|    }
  145|       |
  146|       |    /* Failed to create object, release attributes */
  147|      0|    Py_DECREF(start);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  148|      0|    Py_DECREF(stop);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  149|      0|    Py_DECREF(step);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  150|       |    return NULL;
  151|      4|}
rangeobject.c:range_vectorcall:
  166|      4|{
  167|      4|    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
  ------------------
  |  |   37|      4|#define PyVectorcall_NARGS(n) _PyVectorcall_NARGS(n)
  ------------------
  168|      4|    if (!_PyArg_NoKwnames("range", kwnames)) {
  ------------------
  |  |   15|      4|    ((kwnames) == NULL || _PyArg_NoKwnames((funcname), (kwnames)))
  |  |  ------------------
  |  |  |  Branch (15:6): [True: 4, False: 0]
  |  |  |  Branch (15:27): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  169|      0|        return NULL;
  170|      0|    }
  171|      4|    return range_from_array((PyTypeObject *)rangetype, args, nargs);
  172|      4|}
rangeobject.c:rangeiter_dealloc:
  944|      3|{
  945|      3|    _Py_FREELIST_FREE(range_iters, (_PyRangeIterObject *)self, PyObject_Free);
  ------------------
  |  |   35|      3|    _PyFreeList_Free(&_Py_freelists_GET()->NAME, _PyObject_CAST(op), \
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   36|      3|                     Py_ ## NAME ## _MAXFREELIST, freefunc)
  |  |  ------------------
  |  |  |  |   23|      3|#  define Py_range_iters_MAXFREELIST 6
  |  |  ------------------
  ------------------
  946|      3|}
rangeobject.c:rangeiter_next:
  847|      1|{
  848|      1|    PyObject *ret = NULL;
  849|      1|    Py_BEGIN_CRITICAL_SECTION(op);
  ------------------
  |  |   51|      1|    {
  ------------------
  850|      1|    _PyRangeIterObject *r = (_PyRangeIterObject*)op;
  851|      1|    if (r->len > 0) {
  ------------------
  |  Branch (851:9): [True: 1, False: 0]
  ------------------
  852|      1|        long result = r->start;
  853|      1|        r->start = result + r->step;
  854|      1|        r->len--;
  855|      1|        ret = PyLong_FromLong(result);
  856|      1|    }
  857|      1|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|      1|    }
  ------------------
  858|      1|    return ret;
  859|      1|}
rangeobject.c:longrangeiter_dealloc:
 1153|      1|{
 1154|      1|    longrangeiterobject *r = (longrangeiterobject*)op;
 1155|      1|    Py_XDECREF(r->start);
  ------------------
  |  |  524|      1|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1156|      1|    Py_XDECREF(r->step);
  ------------------
  |  |  524|      1|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1157|      1|    Py_XDECREF(r->len);
  ------------------
  |  |  524|      1|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1158|      1|    PyObject_Free(r);
 1159|      1|}
rangeobject.c:range_iter:
 1228|      4|{
 1229|      4|    rangeobject *r = (rangeobject *)seq;
 1230|      4|    longrangeiterobject *it;
 1231|      4|    long lstart, lstop, lstep;
 1232|      4|    unsigned long ulen;
 1233|       |
 1234|      4|    assert(PyRange_Check(seq));
  ------------------
  |  Branch (1234:5): [True: 4, False: 0]
  ------------------
 1235|       |
 1236|       |    /* If all three fields and the length convert to long, use the int
 1237|       |     * version */
 1238|      4|    lstart = PyLong_AsLong(r->start);
 1239|      4|    if (lstart == -1 && PyErr_Occurred()) {
  ------------------
  |  Branch (1239:9): [True: 0, False: 4]
  |  Branch (1239:25): [True: 0, False: 0]
  ------------------
 1240|      0|        PyErr_Clear();
 1241|      0|        goto long_range;
 1242|      0|    }
 1243|      4|    lstop = PyLong_AsLong(r->stop);
 1244|      4|    if (lstop == -1 && PyErr_Occurred()) {
  ------------------
  |  Branch (1244:9): [True: 1, False: 3]
  |  Branch (1244:24): [True: 1, False: 0]
  ------------------
 1245|      1|        PyErr_Clear();
 1246|      1|        goto long_range;
 1247|      1|    }
 1248|      3|    lstep = PyLong_AsLong(r->step);
 1249|      3|    if (lstep == -1 && PyErr_Occurred()) {
  ------------------
  |  Branch (1249:9): [True: 0, False: 3]
  |  Branch (1249:24): [True: 0, False: 0]
  ------------------
 1250|      0|        PyErr_Clear();
 1251|      0|        goto long_range;
 1252|      0|    }
 1253|      3|    ulen = get_len_of_range(lstart, lstop, lstep);
 1254|      3|    if (ulen > (unsigned long)LONG_MAX) {
  ------------------
  |  Branch (1254:9): [True: 0, False: 3]
  ------------------
 1255|      0|        goto long_range;
 1256|      0|    }
 1257|       |    /* check for potential overflow of lstart + ulen * lstep */
 1258|      3|    if (ulen) {
  ------------------
  |  Branch (1258:9): [True: 2, False: 1]
  ------------------
 1259|      2|        if (lstep > 0) {
  ------------------
  |  Branch (1259:13): [True: 2, False: 0]
  ------------------
 1260|      2|            if (lstop > LONG_MAX - (lstep - 1))
  ------------------
  |  Branch (1260:17): [True: 0, False: 2]
  ------------------
 1261|      0|                goto long_range;
 1262|      2|        }
 1263|      0|        else {
 1264|      0|            if (lstop < LONG_MIN + (-1 - lstep))
  ------------------
  |  Branch (1264:17): [True: 0, False: 0]
  ------------------
 1265|      0|                goto long_range;
 1266|      0|        }
 1267|      2|    }
 1268|      3|    return fast_range_iter(lstart, lstop, lstep, (long)ulen);
 1269|       |
 1270|      1|  long_range:
 1271|      1|    it = PyObject_New(longrangeiterobject, &PyLongRangeIter_Type);
  ------------------
  |  |  130|      1|#define PyObject_New(type, typeobj) ((type *)_PyObject_New(typeobj))
  ------------------
 1272|      1|    if (it == NULL)
  ------------------
  |  Branch (1272:9): [True: 0, False: 1]
  ------------------
 1273|      0|        return NULL;
 1274|       |
 1275|      1|    it->start = Py_NewRef(r->start);
  ------------------
  |  |  550|      1|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1276|      1|    it->step = Py_NewRef(r->step);
  ------------------
  |  |  550|      1|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1277|      1|    it->len = Py_NewRef(r->length);
  ------------------
  |  |  550|      1|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1278|      1|    return (PyObject *)it;
 1279|      1|}

_PySet_AddTakeRef:
  363|      5|{
  364|      5|    Py_hash_t hash = _PyObject_HashFast(key);
  365|      5|    if (hash == -1) {
  ------------------
  |  Branch (365:9): [True: 0, False: 5]
  ------------------
  366|      0|        set_unhashable_type(key);
  367|      0|        Py_DECREF(key);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  368|      0|        return -1;
  369|      0|    }
  370|       |    // We don't pre-increment here, the caller holds a strong
  371|       |    // reference to the object which we are stealing.
  372|      5|    return set_add_entry_takeref(so, key, hash);
  373|      5|}
_PySet_Contains:
 2502|     50|{
 2503|     50|    assert(so);
  ------------------
  |  Branch (2503:5): [True: 50, False: 0]
  ------------------
 2504|       |
 2505|     50|    Py_hash_t hash = _PyObject_HashFast(key);
 2506|     50|    if (hash == -1) {
  ------------------
  |  Branch (2506:9): [True: 0, False: 50]
  ------------------
 2507|      0|        if (!PySet_Check(key) || !PyErr_ExceptionMatches(PyExc_TypeError)) {
  ------------------
  |  |   37|      0|    (Py_IS_TYPE((ob), &PySet_Type) || \
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   38|      0|    PyType_IsSubtype(Py_TYPE(ob), &PySet_Type))
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (38:5): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2507:34): [True: 0, False: 0]
  ------------------
 2508|      0|            set_unhashable_type(key);
 2509|      0|            return -1;
 2510|      0|        }
 2511|      0|        PyErr_Clear();
 2512|       |        // Note that 'key' could be a set() or frozenset() object.  Unlike most
 2513|       |        // container types, set allows membership testing with a set key, even
 2514|       |        // though it is not hashable.
 2515|      0|        Py_BEGIN_CRITICAL_SECTION(key);
  ------------------
  |  |   51|      0|    {
  ------------------
 2516|      0|        hash = frozenset_hash_impl(key);
 2517|      0|        Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|      0|    }
  ------------------
 2518|      0|    }
 2519|     50|    return set_contains_entry(so, key, hash);
 2520|     50|}
PySet_New:
 2978|     31|{
 2979|     31|    return make_new_set(&PySet_Type, iterable);
 2980|     31|}
PyFrozenSet_New:
 2984|     41|{
 2985|     41|    PyObject *result = make_new_set(&PyFrozenSet_Type, iterable);
 2986|     41|    if (result != NULL) {
  ------------------
  |  Branch (2986:9): [True: 41, False: 0]
  ------------------
 2987|     41|        _PyFrozenSet_MaybeUntrack(result);
 2988|     41|    }
 2989|     41|    return result;
 2990|     41|}
PySet_Clear:
 3004|      8|{
 3005|      8|    if (!PySet_Check(set)) {
  ------------------
  |  |   37|      8|    (Py_IS_TYPE((ob), &PySet_Type) || \
  |  |  ------------------
  |  |  |  |  215|     16|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      8|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 8, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   38|      8|    PyType_IsSubtype(Py_TYPE(ob), &PySet_Type))
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (38:5): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3006|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
 3007|      0|        return -1;
 3008|      0|    }
 3009|      8|    (void)set_clear(set, NULL);
 3010|      8|    return 0;
 3011|      8|}
PySet_Contains:
 3021|     20|{
 3022|     20|    if (!PyAnySet_Check(anyset)) {
  ------------------
  |  |   31|     20|    (Py_IS_TYPE((ob), &PySet_Type) || Py_IS_TYPE((ob), &PyFrozenSet_Type) || \
  |  |  ------------------
  |  |  |  |  215|     40|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     20|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     20|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 20, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (Py_IS_TYPE((ob), &PySet_Type) || Py_IS_TYPE((ob), &PyFrozenSet_Type) || \
  |  |  ------------------
  |  |  |  |  215|     20|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   32|     20|      PyType_IsSubtype(Py_TYPE(ob), &PySet_Type) || \
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (32:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   33|     20|      PyType_IsSubtype(Py_TYPE(ob), &PyFrozenSet_Type))
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (33:7): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3023|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
 3024|      0|        return -1;
 3025|      0|    }
 3026|       |
 3027|     20|    PySetObject *so = (PySetObject *)anyset;
 3028|     20|    Py_hash_t hash = _PyObject_HashFast(key);
 3029|     20|    if (hash == -1) {
  ------------------
  |  Branch (3029:9): [True: 0, False: 20]
  ------------------
 3030|      0|        set_unhashable_type(key);
 3031|      0|        return -1;
 3032|      0|    }
 3033|     20|    return set_contains_entry(so, key, hash);
 3034|     20|}
PySet_Add:
 3053|    113|{
 3054|    113|    if (PySet_Check(anyset)) {
  ------------------
  |  |   37|    113|    (Py_IS_TYPE((ob), &PySet_Type) || \
  |  |  ------------------
  |  |  |  |  215|    226|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    113|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    113|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 52, False: 61]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   38|    113|    PyType_IsSubtype(Py_TYPE(ob), &PySet_Type))
  |  |  ------------------
  |  |  |  |  213|     61|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     61|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     61|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (38:5): [True: 0, False: 61]
  |  |  ------------------
  ------------------
 3055|     52|        int rv;
 3056|     52|        Py_BEGIN_CRITICAL_SECTION(anyset);
  ------------------
  |  |   51|     52|    {
  ------------------
 3057|     52|        rv = set_add_key((PySetObject *)anyset, key);
 3058|     52|        Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|     52|    }
  ------------------
 3059|     52|        return rv;
 3060|     52|    }
 3061|       |
 3062|     61|    if (PyFrozenSet_Check(anyset) && _PyObject_IsUniquelyReferenced(anyset)) {
  ------------------
  |  |   25|    122|    (Py_IS_TYPE((ob), &PyFrozenSet_Type) || \
  |  |  ------------------
  |  |  |  |  215|    122|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     61|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     61|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 61, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   26|    122|      PyType_IsSubtype(Py_TYPE(ob), &PyFrozenSet_Type))
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (26:7): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3062:38): [True: 61, False: 0]
  ------------------
 3063|       |        // We can only change frozensets if they are uniquely referenced. The
 3064|       |        // API limits the usage of `PySet_Add` to "fill in the values of brand
 3065|       |        // new frozensets before they are exposed to other code". In this case,
 3066|       |        // this can be done without a lock.
 3067|       |        // Since another key is added to the set, we must track the frozenset
 3068|       |        // if needed.
 3069|     61|        if (PyFrozenSet_CheckExact(anyset) && !PyObject_GC_IsTracked(anyset) && PyObject_GC_IsTracked(key)) {
  ------------------
  |  |   23|     61|#define PyFrozenSet_CheckExact(ob) Py_IS_TYPE((ob), &PyFrozenSet_Type)
  |  |  ------------------
  |  |  |  |  215|    122|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     61|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     61|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 61, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3069:47): [True: 61, False: 0]
  |  Branch (3069:81): [True: 0, False: 61]
  ------------------
 3070|      0|            _PyObject_GC_TRACK(anyset);
  ------------------
  |  |  513|      0|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3071|      0|        }
 3072|     61|        return set_add_key((PySetObject *)anyset, key);
 3073|     61|    }
 3074|       |
 3075|      0|    PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
 3076|      0|    return -1;
 3077|     61|}
_PySet_NextEntry:
 3081|     23|{
 3082|     23|    setentry *entry;
 3083|       |
 3084|     23|    if (!PyAnySet_Check(set)) {
  ------------------
  |  |   31|     23|    (Py_IS_TYPE((ob), &PySet_Type) || Py_IS_TYPE((ob), &PyFrozenSet_Type) || \
  |  |  ------------------
  |  |  |  |  215|     46|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     23|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     23|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 23]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (Py_IS_TYPE((ob), &PySet_Type) || Py_IS_TYPE((ob), &PyFrozenSet_Type) || \
  |  |  ------------------
  |  |  |  |  215|     46|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     23|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     23|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 23, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   32|     23|      PyType_IsSubtype(Py_TYPE(ob), &PySet_Type) || \
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (32:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   33|     23|      PyType_IsSubtype(Py_TYPE(ob), &PyFrozenSet_Type))
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (33:7): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3085|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
 3086|      0|        return -1;
 3087|      0|    }
 3088|     23|    if (set_next((PySetObject *)set, pos, &entry) == 0)
  ------------------
  |  Branch (3088:9): [True: 8, False: 15]
  ------------------
 3089|      8|        return 0;
 3090|     15|    *key = entry->key;
 3091|     15|    *hash = entry->hash;
 3092|     15|    return 1;
 3093|     23|}
setobject.c:set_add_entry_takeref:
  254|    734|{
  255|    734|    setentry *table;
  256|    734|    setentry *freeslot;
  257|    734|    setentry *entry;
  258|    734|    size_t perturb;
  259|    734|    size_t mask;
  260|    734|    size_t i;                       /* Unsigned for defined overflow behavior */
  261|    734|    int probes;
  262|    734|    int cmp;
  263|       |
  264|    734|  restart:
  265|       |
  266|    734|    mask = so->mask;
  267|    734|    i = (size_t)hash & mask;
  268|    734|    freeslot = NULL;
  269|    734|    perturb = hash;
  270|       |
  271|    760|    while (1) {
  ------------------
  |  Branch (271:12): [True: 760, Folded]
  ------------------
  272|    760|        entry = &so->table[i];
  273|    760|        probes = (i + LINEAR_PROBES <= mask) ? LINEAR_PROBES: 0;
  ------------------
  |  |  214|    760|#define LINEAR_PROBES 9
  ------------------
                      probes = (i + LINEAR_PROBES <= mask) ? LINEAR_PROBES: 0;
  ------------------
  |  |  214|    552|#define LINEAR_PROBES 9
  ------------------
  |  Branch (273:18): [True: 552, False: 208]
  ------------------
  274|  1.11k|        do {
  275|  1.11k|            if (entry->hash == 0 && entry->key == NULL)
  ------------------
  |  Branch (275:17): [True: 728, False: 389]
  |  Branch (275:37): [True: 728, False: 0]
  ------------------
  276|    728|                goto found_unused_or_dummy;
  277|    389|            if (entry->hash == hash) {
  ------------------
  |  Branch (277:17): [True: 6, False: 383]
  ------------------
  278|      6|                PyObject *startkey = entry->key;
  279|      6|                assert(startkey != dummy);
  ------------------
  |  Branch (279:17): [True: 6, False: 0]
  ------------------
  280|      6|                if (startkey == key)
  ------------------
  |  Branch (280:21): [True: 6, False: 0]
  ------------------
  281|      6|                    goto found_active;
  282|      0|                if (PyUnicode_CheckExact(startkey)
  ------------------
  |  |  104|      0|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  283|      0|                    && PyUnicode_CheckExact(key)
  ------------------
  |  |  104|      0|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  284|      0|                    && unicode_eq(startkey, key))
  ------------------
  |  Branch (284:24): [True: 0, False: 0]
  ------------------
  285|      0|                    goto found_active;
  286|      0|                table = so->table;
  287|      0|                Py_INCREF(startkey);
  ------------------
  |  |  310|      0|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  288|      0|                cmp = PyObject_RichCompareBool(startkey, key, Py_EQ);
  ------------------
  |  |  654|      0|#define Py_EQ 2
  ------------------
  289|      0|                Py_DECREF(startkey);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  290|      0|                if (cmp > 0)
  ------------------
  |  Branch (290:21): [True: 0, False: 0]
  ------------------
  291|      0|                    goto found_active;
  292|      0|                if (cmp < 0)
  ------------------
  |  Branch (292:21): [True: 0, False: 0]
  ------------------
  293|      0|                    goto comparison_error;
  294|      0|                if (table != so->table || entry->key != startkey)
  ------------------
  |  Branch (294:21): [True: 0, False: 0]
  |  Branch (294:43): [True: 0, False: 0]
  ------------------
  295|      0|                    goto restart;
  296|      0|                mask = so->mask;
  297|      0|            }
  298|    383|            else if (entry->hash == -1) {
  ------------------
  |  Branch (298:22): [True: 0, False: 383]
  ------------------
  299|      0|                assert (entry->key == dummy);
  ------------------
  |  Branch (299:17): [True: 0, False: 0]
  ------------------
  300|      0|                freeslot = entry;
  301|      0|            }
  302|    383|            entry++;
  303|    383|        } while (probes--);
  ------------------
  |  Branch (303:18): [True: 357, False: 26]
  ------------------
  304|     26|        perturb >>= PERTURB_SHIFT;
  ------------------
  |  |  218|     26|#define PERTURB_SHIFT 5
  ------------------
  305|     26|        i = (i * 5 + 1 + perturb) & mask;
  306|     26|    }
  307|       |
  308|    728|  found_unused_or_dummy:
  309|    728|    if (freeslot == NULL)
  ------------------
  |  Branch (309:9): [True: 728, False: 0]
  ------------------
  310|    728|        goto found_unused;
  311|      0|    if (freeslot->hash != -1) {
  ------------------
  |  Branch (311:9): [True: 0, False: 0]
  ------------------
  312|      0|        goto restart;
  313|      0|    }
  314|      0|    FT_ATOMIC_STORE_SSIZE_RELAXED(so->used, so->used + 1);
  ------------------
  |  |  194|      0|#define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) value = new_value
  ------------------
  315|      0|    FT_ATOMIC_STORE_SSIZE_RELAXED(freeslot->hash, hash);
  ------------------
  |  |  194|      0|#define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) value = new_value
  ------------------
  316|      0|    FT_ATOMIC_STORE_PTR_RELEASE(freeslot->key, key);
  ------------------
  |  |  164|      0|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  ------------------
  317|      0|    return 0;
  318|       |
  319|    728|  found_unused:
  320|    728|    so->fill++;
  321|    728|    FT_ATOMIC_STORE_SSIZE_RELAXED(so->used, so->used + 1);
  ------------------
  |  |  194|    728|#define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) value = new_value
  ------------------
  322|    728|    FT_ATOMIC_STORE_SSIZE_RELAXED(entry->hash, hash);
  ------------------
  |  |  194|    728|#define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) value = new_value
  ------------------
  323|    728|    FT_ATOMIC_STORE_PTR_RELEASE(entry->key, key);
  ------------------
  |  |  164|    728|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  ------------------
  324|    728|    if ((size_t)so->fill*5 < mask*3)
  ------------------
  |  Branch (324:9): [True: 711, False: 17]
  ------------------
  325|    711|        return 0;
  326|     17|    return set_table_resize(so, so->used>50000 ? so->used*2 : so->used*4);
  ------------------
  |  Branch (326:33): [True: 0, False: 17]
  ------------------
  327|       |
  328|      6|  found_active:
  329|      6|    Py_DECREF(key);
  ------------------
  |  |  430|      6|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      6|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  330|      6|    return 0;
  331|       |
  332|      0|  comparison_error:
  333|      0|    Py_DECREF(key);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  334|      0|    return -1;
  335|    728|}
setobject.c:set_table_resize:
  485|     17|{
  486|     17|    setentry *oldtable, *newtable, *entry;
  487|     17|    Py_ssize_t oldmask = so->mask;
  488|     17|    Py_ssize_t oldsize = (size_t)oldmask + 1;
  489|     17|    size_t newmask;
  490|     17|    int is_oldtable_malloced;
  491|     17|    setentry small_copy[PySet_MINSIZE];
  492|       |
  493|     17|    assert(minused >= 0);
  ------------------
  |  Branch (493:5): [True: 17, False: 0]
  ------------------
  494|       |
  495|       |    /* Find the smallest table size > minused. */
  496|       |    /* XXX speed-up with intrinsics */
  497|     17|    size_t newsize = PySet_MINSIZE;
  ------------------
  |  |   18|     17|#define PySet_MINSIZE 8
  ------------------
  498|     65|    while (newsize <= (size_t)minused) {
  ------------------
  |  Branch (498:12): [True: 48, False: 17]
  ------------------
  499|     48|        newsize <<= 1; // The largest possible value is PY_SSIZE_T_MAX + 1.
  500|     48|    }
  501|       |
  502|       |    /* Get space for a new table. */
  503|     17|    oldtable = so->table;
  504|     17|    assert(oldtable != NULL);
  ------------------
  |  Branch (504:5): [True: 17, False: 0]
  ------------------
  505|     17|    is_oldtable_malloced = oldtable != so->smalltable;
  506|       |
  507|     17|    if (newsize == PySet_MINSIZE) {
  ------------------
  |  |   18|     17|#define PySet_MINSIZE 8
  ------------------
  |  Branch (507:9): [True: 0, False: 17]
  ------------------
  508|       |        /* A large table is shrinking, or we can't get any smaller. */
  509|      0|        newtable = so->smalltable;
  510|      0|        if (newtable == oldtable) {
  ------------------
  |  Branch (510:13): [True: 0, False: 0]
  ------------------
  511|      0|            if (so->fill == so->used) {
  ------------------
  |  Branch (511:17): [True: 0, False: 0]
  ------------------
  512|       |                /* No dummies, so no point doing anything. */
  513|      0|                return 0;
  514|      0|            }
  515|       |            /* We're not going to resize it, but rebuild the
  516|       |               table anyway to purge old dummy entries.
  517|       |               Subtle:  This is *necessary* if fill==size,
  518|       |               as set_lookkey needs at least one virgin slot to
  519|       |               terminate failing searches.  If fill < size, it's
  520|       |               merely desirable, as dummies slow searches. */
  521|      0|            assert(so->fill > so->used);
  ------------------
  |  Branch (521:13): [True: 0, False: 0]
  ------------------
  522|      0|            memcpy(small_copy, oldtable, sizeof(small_copy));
  523|      0|            oldtable = small_copy;
  524|      0|        }
  525|      0|    }
  526|     17|    else {
  527|     17|        newtable = PyMem_NEW(setentry, newsize);
  ------------------
  |  |   82|     17|#define PyMem_NEW(type, n)        PyMem_New(type, (n))
  |  |  ------------------
  |  |  |  |   64|     17|  ( ((size_t)(n) > PY_SSIZE_T_MAX / sizeof(type)) ? NULL :      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|     17|#   define PY_SSIZE_T_MAX SSIZE_MAX
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (64:5): [True: 0, False: 17]
  |  |  |  |  ------------------
  |  |  |  |   65|     17|        ( (type *) PyMem_Malloc((n) * sizeof(type)) ) )
  |  |  ------------------
  ------------------
  528|     17|        if (newtable == NULL) {
  ------------------
  |  Branch (528:13): [True: 0, False: 17]
  ------------------
  529|      0|            PyErr_NoMemory();
  530|      0|            return -1;
  531|      0|        }
  532|     17|    }
  533|       |
  534|       |    /* Make the set empty, using the new table. */
  535|     17|    assert(newtable != oldtable);
  ------------------
  |  Branch (535:5): [True: 17, False: 0]
  ------------------
  536|     17|    set_zero_table(newtable, newsize);
  537|     17|    FT_ATOMIC_STORE_PTR_RELEASE(so->table, NULL);
  ------------------
  |  |  164|     17|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  ------------------
  538|     17|    FT_ATOMIC_STORE_SSIZE_RELEASE(so->mask, newsize - 1);
  ------------------
  |  |  169|     17|#define FT_ATOMIC_STORE_SSIZE_RELEASE(value, new_value) value = new_value
  ------------------
  539|       |
  540|       |    /* Copy the data over; this is refcount-neutral for active entries;
  541|       |       dummy entries aren't copied over, of course */
  542|     17|    newmask = (size_t)so->mask;
  543|     17|    if (so->fill == so->used) {
  ------------------
  |  Branch (543:9): [True: 17, False: 0]
  ------------------
  544|    465|        for (entry = oldtable; entry <= oldtable + oldmask; entry++) {
  ------------------
  |  Branch (544:32): [True: 448, False: 17]
  ------------------
  545|    448|            if (entry->key != NULL) {
  ------------------
  |  Branch (545:17): [True: 271, False: 177]
  ------------------
  546|    271|                set_insert_clean(newtable, newmask, entry->key, entry->hash);
  547|    271|            }
  548|    448|        }
  549|     17|    } else {
  550|      0|        so->fill = so->used;
  551|      0|        for (entry = oldtable; entry <= oldtable + oldmask; entry++) {
  ------------------
  |  Branch (551:32): [True: 0, False: 0]
  ------------------
  552|      0|            if (entry->key != NULL && entry->key != dummy) {
  ------------------
  |  |   64|      0|#define dummy (&_dummy_struct)
  ------------------
  |  Branch (552:17): [True: 0, False: 0]
  |  Branch (552:39): [True: 0, False: 0]
  ------------------
  553|      0|                set_insert_clean(newtable, newmask, entry->key, entry->hash);
  554|      0|            }
  555|      0|        }
  556|      0|    }
  557|       |
  558|     17|    FT_ATOMIC_STORE_PTR_RELEASE(so->table, newtable);
  ------------------
  |  |  164|     17|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  ------------------
  559|       |
  560|     17|    if (is_oldtable_malloced)
  ------------------
  |  Branch (560:9): [True: 5, False: 12]
  ------------------
  561|      5|        free_entries(oldtable, oldsize, SET_IS_SHARED(so));
  ------------------
  |  |  132|      5|#define SET_IS_SHARED(so) 0
  ------------------
  562|     17|    return 0;
  563|     17|}
setobject.c:set_zero_table:
  197|     25|{
  198|       |#ifdef Py_GIL_DISABLED
  199|       |    for (size_t i = 0; i < size; i++) {
  200|       |        setentry *entry = &table[i];
  201|       |        FT_ATOMIC_STORE_SSIZE_RELAXED(entry->hash, 0);
  202|       |        FT_ATOMIC_STORE_PTR_RELEASE(entry->key, NULL);
  203|       |    }
  204|       |#else
  205|     25|    memset(table, 0, sizeof(setentry)*size);
  206|     25|#endif
  207|     25|}
setobject.c:set_insert_clean:
  385|    271|{
  386|    271|    setentry *entry;
  387|    271|    size_t perturb = hash;
  388|    271|    size_t i = (size_t)hash & mask;
  389|    271|    size_t j;
  390|       |
  391|    271|    while (1) {
  ------------------
  |  Branch (391:12): [True: 271, Folded]
  ------------------
  392|    271|        entry = &table[i];
  393|    271|        if (entry->key == NULL)
  ------------------
  |  Branch (393:13): [True: 251, False: 20]
  ------------------
  394|    251|            goto found_null;
  395|     20|        if (i + LINEAR_PROBES <= mask) {
  ------------------
  |  |  214|     20|#define LINEAR_PROBES 9
  ------------------
  |  Branch (395:13): [True: 20, False: 0]
  ------------------
  396|     23|            for (j = 0; j < LINEAR_PROBES; j++) {
  ------------------
  |  |  214|     23|#define LINEAR_PROBES 9
  ------------------
  |  Branch (396:25): [True: 23, False: 0]
  ------------------
  397|     23|                entry++;
  398|     23|                if (entry->key == NULL)
  ------------------
  |  Branch (398:21): [True: 20, False: 3]
  ------------------
  399|     20|                    goto found_null;
  400|     23|            }
  401|     20|        }
  402|      0|        perturb >>= PERTURB_SHIFT;
  ------------------
  |  |  218|      0|#define PERTURB_SHIFT 5
  ------------------
  403|      0|        i = (i * 5 + 1 + perturb) & mask;
  404|      0|    }
  405|    271|  found_null:
  406|    271|    FT_ATOMIC_STORE_SSIZE_RELAXED(entry->hash, hash);
  ------------------
  |  |  194|    271|#define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) value = new_value
  ------------------
  407|    271|    FT_ATOMIC_STORE_PTR_RELEASE(entry->key, key);
  ------------------
  |  |  164|    271|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  ------------------
  408|    271|}
setobject.c:free_entries:
  468|      5|{
  469|       |#ifdef Py_GIL_DISABLED
  470|       |    if (use_qsbr) {
  471|       |        _PyMem_FreeDelayed(entries, size * sizeof(setentry));
  472|       |        return;
  473|       |    }
  474|       |#endif
  475|      5|    PyMem_Free(entries);
  476|      5|}
setobject.c:setiter_dealloc:
 1041|     31|{
 1042|     31|    setiterobject *si = (setiterobject*)self;
 1043|       |    /* bpo-31095: UnTrack is needed before calling any callbacks */
 1044|     31|    _PyObject_GC_UNTRACK(si);
  ------------------
  |  |  515|     31|        _PyObject_GC_UNTRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     31|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     31|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1045|     31|    Py_XDECREF(si->si_set);
  ------------------
  |  |  524|     31|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     31|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     31|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1046|     31|    PyObject_GC_Del(si);
 1047|     31|}
setobject.c:setiter_iternext:
 1096|     88|{
 1097|     88|    setiterobject *si = (setiterobject*)self;
 1098|     88|    PyObject *key = NULL;
 1099|     88|    Py_ssize_t i, mask;
 1100|     88|    setentry *entry;
 1101|     88|    PySetObject *so = si->si_set;
 1102|       |
 1103|     88|    if (so == NULL)
  ------------------
  |  Branch (1103:9): [True: 0, False: 88]
  ------------------
 1104|      0|        return NULL;
 1105|     88|    assert (PyAnySet_Check(so));
  ------------------
  |  Branch (1105:5): [True: 0, False: 88]
  |  Branch (1105:5): [True: 88, False: 0]
  |  Branch (1105:5): [True: 0, False: 0]
  |  Branch (1105:5): [True: 0, False: 0]
  ------------------
 1106|       |
 1107|     88|    Py_ssize_t so_used = FT_ATOMIC_LOAD_SSIZE_RELAXED(so->used);
  ------------------
  |  |  149|     88|#define FT_ATOMIC_LOAD_SSIZE_RELAXED(value) value
  ------------------
 1108|     88|    Py_ssize_t si_used = FT_ATOMIC_LOAD_SSIZE_RELAXED(si->si_used);
  ------------------
  |  |  149|     88|#define FT_ATOMIC_LOAD_SSIZE_RELAXED(value) value
  ------------------
 1109|     88|    if (si_used != so_used) {
  ------------------
  |  Branch (1109:9): [True: 0, False: 88]
  ------------------
 1110|      0|        PyErr_SetString(PyExc_RuntimeError,
 1111|      0|                        "Set changed size during iteration");
 1112|      0|        si->si_used = -1; /* Make this state sticky */
 1113|      0|        return NULL;
 1114|      0|    }
 1115|       |
 1116|     88|    Py_BEGIN_CRITICAL_SECTION(so);
  ------------------
  |  |   51|     88|    {
  ------------------
 1117|     88|    i = si->si_pos;
 1118|     88|    assert(i>=0);
  ------------------
  |  Branch (1118:5): [True: 88, False: 0]
  ------------------
 1119|     88|    entry = so->table;
 1120|     88|    mask = so->mask;
 1121|    318|    while (i <= mask && (entry[i].key == NULL || entry[i].key == dummy)) {
  ------------------
  |  |   64|     58|#define dummy (&_dummy_struct)
  ------------------
  |  Branch (1121:12): [True: 288, False: 30]
  |  Branch (1121:26): [True: 230, False: 58]
  |  Branch (1121:50): [True: 0, False: 58]
  ------------------
 1122|    230|        i++;
 1123|    230|    }
 1124|     88|    if (i <= mask) {
  ------------------
  |  Branch (1124:9): [True: 58, False: 30]
  ------------------
 1125|     58|        key = Py_NewRef(entry[i].key);
  ------------------
  |  |  550|     58|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     58|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     58|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1126|     58|    }
 1127|     88|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|     88|    }
  ------------------
 1128|     88|    si->si_pos = i+1;
 1129|     88|    if (key == NULL) {
  ------------------
  |  Branch (1129:9): [True: 30, False: 58]
  ------------------
 1130|     30|        si->si_set = NULL;
 1131|     30|        Py_DECREF(so);
  ------------------
  |  |  430|     30|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     30|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     30|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1132|     30|        return NULL;
 1133|     30|    }
 1134|     58|    si->len--;
 1135|     58|    return key;
 1136|     88|}
setobject.c:set_contains_entry:
  567|     74|{
  568|       |#ifdef Py_GIL_DISABLED
  569|       |    return set_lookkey_threadsafe(so, key, hash);
  570|       |#else
  571|     74|    setentry *entry; // unused
  572|     74|    return set_lookkey(so, key, hash, &entry);
  573|     74|#endif
  574|     74|}
setobject.c:set_lookkey:
  415|     74|{
  416|     74|    int status;
  417|     74|    if (PyFrozenSet_CheckExact(so)) {
  ------------------
  |  |   23|     74|#define PyFrozenSet_CheckExact(ob) Py_IS_TYPE((ob), &PyFrozenSet_Type)
  |  |  ------------------
  |  |  |  |  215|     74|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     74|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     74|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 2, False: 72]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  418|      2|        status = set_do_lookup(so, so->table, so->mask, key, hash, epp,
  419|      2|                               set_compare_frozenset);
  420|      2|    }
  421|     72|    else {
  422|     72|        Py_BEGIN_CRITICAL_SECTION(so);
  ------------------
  |  |   51|     72|    {
  ------------------
  423|     72|        do {
  424|     72|            status = set_do_lookup(so, so->table, so->mask, key, hash, epp,
  425|     72|                                   set_compare_entry_lock_held);
  426|     72|        } while (status == SET_LOOKKEY_CHANGED);
  ------------------
  |  |   69|     72|#define SET_LOOKKEY_CHANGED (-2)
  ------------------
  |  Branch (426:18): [True: 0, False: 72]
  ------------------
  427|     72|        Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|     72|    }
  ------------------
  428|     72|    }
  429|     74|    assert(status == SET_LOOKKEY_FOUND ||
  ------------------
  |  Branch (429:5): [True: 5, False: 69]
  |  Branch (429:5): [True: 69, False: 0]
  |  Branch (429:5): [True: 0, False: 0]
  ------------------
  430|     74|           status == SET_LOOKKEY_NO_MATCH ||
  431|     74|           status == SET_LOOKKEY_ERROR);
  432|     74|    return status;
  433|     74|}
setobject.c:set_do_lookup:
  223|     74|{
  224|     74|    setentry *entry;
  225|     74|    size_t perturb = hash;
  226|     74|    size_t i = (size_t)hash & mask; /* Unsigned for defined overflow behavior */
  227|     74|    int probes;
  228|     74|    int status;
  229|       |
  230|     90|    while (1) {
  ------------------
  |  Branch (230:12): [True: 90, Folded]
  ------------------
  231|     90|        entry = &table[i];
  232|     90|        probes = (i + LINEAR_PROBES <= mask) ? LINEAR_PROBES: 0;
  ------------------
  |  |  214|     90|#define LINEAR_PROBES 9
  ------------------
                      probes = (i + LINEAR_PROBES <= mask) ? LINEAR_PROBES: 0;
  ------------------
  |  |  214|     34|#define LINEAR_PROBES 9
  ------------------
  |  Branch (232:18): [True: 34, False: 56]
  ------------------
  233|    126|        do {
  234|    126|            status = compare_entry(so, table, entry, key, hash);
  235|    126|            if (status != SET_LOOKKEY_NO_MATCH) {
  ------------------
  |  |   67|    126|#define SET_LOOKKEY_NO_MATCH 0
  ------------------
  |  Branch (235:17): [True: 74, False: 52]
  ------------------
  236|     74|                if (status == SET_LOOKKEY_EMPTY) {
  ------------------
  |  |   70|     74|#define SET_LOOKKEY_EMPTY (-3)
  ------------------
  |  Branch (236:21): [True: 69, False: 5]
  ------------------
  237|     69|                    return SET_LOOKKEY_NO_MATCH;
  ------------------
  |  |   67|     69|#define SET_LOOKKEY_NO_MATCH 0
  ------------------
  238|     69|                }
  239|      5|                *epp = entry;
  240|      5|                return status;
  241|     74|            }
  242|     52|            entry++;
  243|     52|        } while (probes--);
  ------------------
  |  Branch (243:18): [True: 36, False: 16]
  ------------------
  244|     16|        perturb >>= PERTURB_SHIFT;
  ------------------
  |  |  218|     16|#define PERTURB_SHIFT 5
  ------------------
  245|     16|        i = (i * 5 + 1 + perturb) & mask;
  246|     16|    }
  247|      0|    Py_UNREACHABLE();
  ------------------
  |  |  264|      0|#  define Py_UNREACHABLE() __builtin_unreachable()
  ------------------
  248|     74|}
setobject.c:set_compare_frozenset:
  174|      2|{
  175|      2|    assert(PyFrozenSet_Check(so));
  ------------------
  |  Branch (175:5): [True: 2, False: 0]
  |  Branch (175:5): [True: 0, False: 0]
  ------------------
  176|      2|    PyObject *startkey = ep->key;
  177|      2|    if (startkey == NULL) {
  ------------------
  |  Branch (177:9): [True: 2, False: 0]
  ------------------
  178|      2|        return SET_LOOKKEY_EMPTY;
  ------------------
  |  |   70|      2|#define SET_LOOKKEY_EMPTY (-3)
  ------------------
  179|      2|    }
  180|      0|    if (startkey == key) {
  ------------------
  |  Branch (180:9): [True: 0, False: 0]
  ------------------
  181|      0|        return SET_LOOKKEY_FOUND;
  ------------------
  |  |   66|      0|#define SET_LOOKKEY_FOUND 1
  ------------------
  182|      0|    }
  183|      0|    Py_ssize_t ep_hash = ep->hash;
  184|      0|    if (ep_hash == hash) {
  ------------------
  |  Branch (184:9): [True: 0, False: 0]
  ------------------
  185|      0|        int cmp = PyObject_RichCompareBool(startkey, key, Py_EQ);
  ------------------
  |  |  654|      0|#define Py_EQ 2
  ------------------
  186|      0|        if (cmp < 0) {
  ------------------
  |  Branch (186:13): [True: 0, False: 0]
  ------------------
  187|      0|            return SET_LOOKKEY_ERROR;
  ------------------
  |  |   68|      0|#define SET_LOOKKEY_ERROR (-1)
  ------------------
  188|      0|        }
  189|      0|        assert(cmp == SET_LOOKKEY_FOUND || cmp == SET_LOOKKEY_NO_MATCH);
  ------------------
  |  Branch (189:9): [True: 0, False: 0]
  |  Branch (189:9): [True: 0, False: 0]
  ------------------
  190|      0|        return cmp;
  191|      0|    }
  192|      0|    return SET_LOOKKEY_NO_MATCH;
  ------------------
  |  |   67|      0|#define SET_LOOKKEY_NO_MATCH 0
  ------------------
  193|      0|}
setobject.c:set_compare_entry_lock_held:
  140|    124|{
  141|    124|    _Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED(so);
  142|    124|    if (entry->hash == 0 && entry->key == NULL)
  ------------------
  |  Branch (142:9): [True: 67, False: 57]
  |  Branch (142:29): [True: 67, False: 0]
  ------------------
  143|     67|        return SET_LOOKKEY_EMPTY;
  ------------------
  |  |   70|     67|#define SET_LOOKKEY_EMPTY (-3)
  ------------------
  144|     57|    if (entry->hash == hash) {
  ------------------
  |  Branch (144:9): [True: 5, False: 52]
  ------------------
  145|      5|        PyObject *startkey = entry->key;
  146|      5|        assert(startkey != dummy);
  ------------------
  |  Branch (146:9): [True: 5, False: 0]
  ------------------
  147|      5|        if (startkey == key)
  ------------------
  |  Branch (147:13): [True: 4, False: 1]
  ------------------
  148|      4|            return SET_LOOKKEY_FOUND;
  ------------------
  |  |   66|      4|#define SET_LOOKKEY_FOUND 1
  ------------------
  149|      1|        if (PyUnicode_CheckExact(startkey)
  ------------------
  |  |  104|      1|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  ------------------
  |  |  |  |  215|      2|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  150|      1|            && PyUnicode_CheckExact(key)
  ------------------
  |  |  104|      1|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  ------------------
  |  |  |  |  215|      2|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  151|      1|            && unicode_eq(startkey, key))
  ------------------
  |  Branch (151:16): [True: 1, False: 0]
  ------------------
  152|      1|            return SET_LOOKKEY_FOUND;
  ------------------
  |  |   66|      1|#define SET_LOOKKEY_FOUND 1
  ------------------
  153|      0|        table = so->table;
  154|      0|        Py_INCREF(startkey);
  ------------------
  |  |  310|      0|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  155|      0|        int cmp = PyObject_RichCompareBool(startkey, key, Py_EQ);
  ------------------
  |  |  654|      0|#define Py_EQ 2
  ------------------
  156|      0|        Py_DECREF(startkey);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  157|      0|        if (cmp < 0)
  ------------------
  |  Branch (157:13): [True: 0, False: 0]
  ------------------
  158|      0|            return SET_LOOKKEY_ERROR;
  ------------------
  |  |   68|      0|#define SET_LOOKKEY_ERROR (-1)
  ------------------
  159|      0|        if (table != so->table || entry->key != startkey)
  ------------------
  |  Branch (159:13): [True: 0, False: 0]
  |  Branch (159:35): [True: 0, False: 0]
  ------------------
  160|      0|            return SET_LOOKKEY_CHANGED;
  ------------------
  |  |   69|      0|#define SET_LOOKKEY_CHANGED (-2)
  ------------------
  161|      0|        if (cmp > 0)
  ------------------
  |  Branch (161:13): [True: 0, False: 0]
  ------------------
  162|      0|            return SET_LOOKKEY_FOUND;
  ------------------
  |  |   66|      0|#define SET_LOOKKEY_FOUND 1
  ------------------
  163|      0|    }
  164|     52|    return SET_LOOKKEY_NO_MATCH;
  ------------------
  |  |   67|     52|#define SET_LOOKKEY_NO_MATCH 0
  ------------------
  165|     57|}
setobject.c:set_dealloc:
  735|     16|{
  736|     16|    PySetObject *so = _PySet_CAST(self);
  ------------------
  |  |   62|     16|    (assert(PyAnySet_Check(so)), _Py_CAST(PySetObject*, so))
  |  |  ------------------
  |  |  |  |   37|     16|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (736:23): [True: 8, False: 8]
  |  Branch (736:23): [True: 8, False: 0]
  |  Branch (736:23): [True: 0, False: 0]
  |  Branch (736:23): [True: 0, False: 0]
  ------------------
  737|      0|    setentry *entry;
  738|     16|    Py_ssize_t used = so->used;
  739|     16|    Py_ssize_t oldsize = (size_t)so->mask + 1;
  740|       |
  741|       |    /* bpo-31095: UnTrack is needed before calling any callbacks */
  742|     16|    PyObject_GC_UnTrack(so);
  743|     16|    FT_CLEAR_WEAKREFS(self, so->weakreflist);
  ------------------
  |  |   47|     16|    do {                                            \
  |  |   48|     16|        assert(Py_REFCNT(obj) == 0);                \
  |  |   49|     16|        if (weakref_list != NULL) {                 \
  |  |  ------------------
  |  |  |  Branch (49:13): [True: 0, False: 16]
  |  |  ------------------
  |  |   50|      0|            PyObject_ClearWeakRefs(obj);            \
  |  |   51|      0|        }                                           \
  |  |   52|     16|    } while (0)
  |  |  ------------------
  |  |  |  Branch (52:14): [Folded, False: 16]
  |  |  ------------------
  ------------------
  |  Branch (743:5): [True: 16, False: 0]
  ------------------
  744|       |
  745|     95|    for (entry = so->table; used > 0; entry++) {
  ------------------
  |  Branch (745:29): [True: 79, False: 16]
  ------------------
  746|     79|        if (entry->key && entry->key != dummy) {
  ------------------
  |  |   64|     24|#define dummy (&_dummy_struct)
  ------------------
  |  Branch (746:13): [True: 24, False: 55]
  |  Branch (746:27): [True: 24, False: 0]
  ------------------
  747|     24|                used--;
  748|     24|                Py_DECREF(entry->key);
  ------------------
  |  |  430|     24|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     24|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     24|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  749|     24|        }
  750|     79|    }
  751|     16|    if (so->table != so->smalltable)
  ------------------
  |  Branch (751:9): [True: 0, False: 16]
  ------------------
  752|      0|        free_entries(so->table, oldsize, SET_IS_SHARED(so));
  ------------------
  |  |  132|      0|#define SET_IS_SHARED(so) 0
  ------------------
  753|     16|    Py_TYPE(so)->tp_free(so);
  ------------------
  |  |  213|     16|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     16|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     16|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  754|     16|}
setobject.c:set_merge_lock_held:
  830|      8|{
  831|      8|    PySetObject *other;
  832|      8|    PyObject *key;
  833|      8|    Py_ssize_t i;
  834|      8|    setentry *so_entry;
  835|      8|    setentry *other_entry;
  836|       |
  837|      8|    assert (PyAnySet_Check(so));
  ------------------
  |  Branch (837:5): [True: 0, False: 8]
  |  Branch (837:5): [True: 8, False: 0]
  |  Branch (837:5): [True: 0, False: 0]
  |  Branch (837:5): [True: 0, False: 0]
  ------------------
  838|      8|    _Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED(so);
  839|      8|    _Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED(otherset);
  840|       |
  841|      8|    other = _PySet_CAST(otherset);
  ------------------
  |  |   62|      8|    (assert(PyAnySet_Check(so)), _Py_CAST(PySetObject*, so))
  |  |  ------------------
  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (841:13): [True: 8, False: 0]
  |  Branch (841:13): [True: 0, False: 0]
  |  Branch (841:13): [True: 0, False: 0]
  |  Branch (841:13): [True: 0, False: 0]
  ------------------
  842|      8|    if (other == so || other->used == 0)
  ------------------
  |  Branch (842:9): [True: 0, False: 8]
  |  Branch (842:24): [True: 0, False: 8]
  ------------------
  843|       |        /* a.update(a) or a.update(set()); nothing to do */
  844|      0|        return 0;
  845|       |    /* Do one big resize at the start, rather than
  846|       |     * incrementally resizing as we insert new keys.  Expect
  847|       |     * that there will be no (or few) overlapping keys.
  848|       |     */
  849|      8|    if ((so->fill + other->used)*5 >= so->mask*3) {
  ------------------
  |  Branch (849:9): [True: 0, False: 8]
  ------------------
  850|      0|        if (set_table_resize(so, (so->used + other->used)*2) != 0)
  ------------------
  |  Branch (850:13): [True: 0, False: 0]
  ------------------
  851|      0|            return -1;
  852|      0|    }
  853|      8|    so_entry = so->table;
  854|      8|    other_entry = other->table;
  855|       |
  856|       |    /* If our table is empty, and both tables have the same size, and
  857|       |       there are no dummies to eliminate, then just copy the pointers. */
  858|      8|    if (so->fill == 0 && so->mask == other->mask && other->fill == other->used) {
  ------------------
  |  Branch (858:9): [True: 8, False: 0]
  |  Branch (858:26): [True: 8, False: 0]
  |  Branch (858:53): [True: 8, False: 0]
  ------------------
  859|     72|        for (i = 0; i <= other->mask; i++, so_entry++, other_entry++) {
  ------------------
  |  Branch (859:21): [True: 64, False: 8]
  ------------------
  860|     64|            key = other_entry->key;
  861|     64|            if (key != NULL) {
  ------------------
  |  Branch (861:17): [True: 15, False: 49]
  ------------------
  862|     15|                assert(so_entry->key == NULL);
  ------------------
  |  Branch (862:17): [True: 15, False: 0]
  ------------------
  863|     15|                FT_ATOMIC_STORE_SSIZE_RELAXED(so_entry->hash, other_entry->hash);
  ------------------
  |  |  194|     15|#define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) value = new_value
  ------------------
  864|     15|                FT_ATOMIC_STORE_PTR_RELEASE(so_entry->key, Py_NewRef(key));
  ------------------
  |  |  164|     15|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  ------------------
  865|     15|            }
  866|     64|        }
  867|      8|        so->fill = other->fill;
  868|      8|        FT_ATOMIC_STORE_SSIZE_RELAXED(so->used, other->used);
  ------------------
  |  |  194|      8|#define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) value = new_value
  ------------------
  869|      8|        return 0;
  870|      8|    }
  871|       |
  872|       |    /* If our table is empty, we can use set_insert_clean() */
  873|      0|    if (so->fill == 0) {
  ------------------
  |  Branch (873:9): [True: 0, False: 0]
  ------------------
  874|      0|        setentry *newtable = so->table;
  875|      0|        size_t newmask = (size_t)so->mask;
  876|      0|        so->fill = other->used;
  877|      0|        FT_ATOMIC_STORE_SSIZE_RELAXED(so->used, other->used);
  ------------------
  |  |  194|      0|#define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) value = new_value
  ------------------
  878|      0|        for (i = other->mask + 1; i > 0 ; i--, other_entry++) {
  ------------------
  |  Branch (878:35): [True: 0, False: 0]
  ------------------
  879|      0|            key = other_entry->key;
  880|      0|            if (key != NULL && key != dummy) {
  ------------------
  |  |   64|      0|#define dummy (&_dummy_struct)
  ------------------
  |  Branch (880:17): [True: 0, False: 0]
  |  Branch (880:32): [True: 0, False: 0]
  ------------------
  881|      0|                set_insert_clean(newtable, newmask, Py_NewRef(key),
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  882|      0|                                 other_entry->hash);
  883|      0|            }
  884|      0|        }
  885|      0|        return 0;
  886|      0|    }
  887|       |
  888|       |    /* We can't assure there are no duplicates, so do normal insertions */
  889|      0|    for (i = 0; i <= other->mask; i++) {
  ------------------
  |  Branch (889:17): [True: 0, False: 0]
  ------------------
  890|      0|        other_entry = &other->table[i];
  891|      0|        key = other_entry->key;
  892|      0|        if (key != NULL && key != dummy) {
  ------------------
  |  |   64|      0|#define dummy (&_dummy_struct)
  ------------------
  |  Branch (892:13): [True: 0, False: 0]
  |  Branch (892:28): [True: 0, False: 0]
  ------------------
  893|      0|            if (set_add_entry(so, key, other_entry->hash))
  ------------------
  |  Branch (893:17): [True: 0, False: 0]
  ------------------
  894|      0|                return -1;
  895|      0|        }
  896|      0|    }
  897|      0|    return 0;
  898|      0|}
setobject.c:set_add_entry:
  339|    729|{
  340|    729|    _Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED(so);
  341|       |
  342|    729|    return set_add_entry_takeref(so, Py_NewRef(key), hash);
  ------------------
  |  |  550|    729|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    729|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    729|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  343|    729|}
setobject.c:set_update_iterable_lock_held:
 1223|      4|{
 1224|      4|    _Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED(so);
 1225|       |
 1226|      4|    PyObject *it = PyObject_GetIter(other);
 1227|      4|    if (it == NULL) {
  ------------------
  |  Branch (1227:9): [True: 0, False: 4]
  ------------------
 1228|      0|        return -1;
 1229|      0|    }
 1230|       |
 1231|      4|    PyObject *key;
 1232|    573|    while ((key = PyIter_Next(it)) != NULL) {
  ------------------
  |  Branch (1232:12): [True: 569, False: 4]
  ------------------
 1233|    569|        if (set_add_key(so, key)) {
  ------------------
  |  Branch (1233:13): [True: 0, False: 569]
  ------------------
 1234|      0|            Py_DECREF(it);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1235|      0|            Py_DECREF(key);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1236|      0|            return -1;
 1237|      0|        }
 1238|    569|        Py_DECREF(key);
  ------------------
  |  |  430|    569|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    569|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    569|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1239|    569|    }
 1240|      4|    Py_DECREF(it);
  ------------------
  |  |  430|      4|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1241|      4|    if (PyErr_Occurred())
  ------------------
  |  Branch (1241:9): [True: 0, False: 4]
  ------------------
 1242|      0|        return -1;
 1243|      4|    return 0;
 1244|      4|}
setobject.c:set_update_local:
 1261|     12|{
 1262|     12|    assert(Py_REFCNT(so) == 1);
  ------------------
  |  Branch (1262:5): [True: 12, False: 0]
  ------------------
 1263|     12|    if (PyAnySet_Check(other)) {
  ------------------
  |  |   31|     12|    (Py_IS_TYPE((ob), &PySet_Type) || Py_IS_TYPE((ob), &PyFrozenSet_Type) || \
  |  |  ------------------
  |  |  |  |  215|     24|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     12|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     12|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 8, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (Py_IS_TYPE((ob), &PySet_Type) || Py_IS_TYPE((ob), &PyFrozenSet_Type) || \
  |  |  ------------------
  |  |  |  |  215|     16|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   32|     12|      PyType_IsSubtype(Py_TYPE(ob), &PySet_Type) || \
  |  |  ------------------
  |  |  |  |  213|      4|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (32:7): [True: 0, False: 4]
  |  |  ------------------
  |  |   33|     12|      PyType_IsSubtype(Py_TYPE(ob), &PyFrozenSet_Type))
  |  |  ------------------
  |  |  |  |  213|      4|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (33:7): [True: 0, False: 4]
  |  |  ------------------
  ------------------
 1264|      8|        int rv;
 1265|      8|        Py_BEGIN_CRITICAL_SECTION(other);
  ------------------
  |  |   51|      8|    {
  ------------------
 1266|      8|        rv = set_merge_lock_held(so, other);
 1267|      8|        Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|      8|    }
  ------------------
 1268|      8|        return rv;
 1269|      8|    }
 1270|      4|    else if (PyDict_CheckExact(other)) {
  ------------------
  |  |   19|      4|#define PyDict_CheckExact(op) Py_IS_TYPE((op), &PyDict_Type)
  |  |  ------------------
  |  |  |  |  215|      4|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1271|      0|        int rv;
 1272|      0|        Py_BEGIN_CRITICAL_SECTION(other);
  ------------------
  |  |   51|      0|    {
  ------------------
 1273|      0|        rv = set_update_dict_lock_held(so, other);
 1274|      0|        Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|      0|    }
  ------------------
 1275|      0|        return rv;
 1276|      0|    }
 1277|      4|    else if (PyFrozenDict_CheckExact(other)) {
  ------------------
  |  |   38|      4|#define PyFrozenDict_CheckExact(op) Py_IS_TYPE((op), &PyFrozenDict_Type)
  |  |  ------------------
  |  |  |  |  215|      4|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1278|      0|        return set_update_dict_lock_held(so, other);
 1279|      0|    }
 1280|      4|    return set_update_iterable_lock_held(so, other);
 1281|     12|}
setobject.c:set_contains:
 2524|      7|{
 2525|      7|    PySetObject *so = _PySet_CAST(self);
  ------------------
  |  |   62|      7|    (assert(PyAnySet_Check(so)), _Py_CAST(PySetObject*, so))
  |  |  ------------------
  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (2525:23): [True: 5, False: 2]
  |  Branch (2525:23): [True: 2, False: 0]
  |  Branch (2525:23): [True: 0, False: 0]
  |  Branch (2525:23): [True: 0, False: 0]
  ------------------
 2526|      0|    return _PySet_Contains(so, key);
 2527|      7|}
setobject.c:set_traverse:
  938|      4|{
  939|      4|    PySetObject *so = _PySet_CAST(self);
  ------------------
  |  |   62|      4|    (assert(PyAnySet_Check(so)), _Py_CAST(PySetObject*, so))
  |  |  ------------------
  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (939:23): [True: 4, False: 0]
  |  Branch (939:23): [True: 0, False: 0]
  |  Branch (939:23): [True: 0, False: 0]
  |  Branch (939:23): [True: 0, False: 0]
  ------------------
  940|      0|    Py_ssize_t pos = 0;
  941|      4|    setentry *entry;
  942|       |
  943|      6|    while (set_next(so, &pos, &entry))
  ------------------
  |  Branch (943:12): [True: 2, False: 4]
  ------------------
  944|      2|        Py_VISIT(entry->key);
  ------------------
  |  |  194|      6|    do {                                                                \
  |  |  195|      2|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 2, False: 0]
  |  |  ------------------
  |  |  196|      2|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      2|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 2]
  |  |  ------------------
  |  |  198|      2|                return vret;                                            \
  |  |  199|      2|        }                                                               \
  |  |  200|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
  945|      4|    return 0;
  946|      4|}
setobject.c:set_clear_internal:
  647|      8|{
  648|      8|    PySetObject *so = _PySet_CAST(self);
  ------------------
  |  |   62|      8|    (assert(PyAnySet_Check(so)), _Py_CAST(PySetObject*, so))
  |  |  ------------------
  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (648:23): [True: 8, False: 0]
  |  Branch (648:23): [True: 0, False: 0]
  |  Branch (648:23): [True: 0, False: 0]
  |  Branch (648:23): [True: 0, False: 0]
  ------------------
  649|      0|    setentry *entry;
  650|      8|    setentry *table = so->table;
  651|      8|    Py_ssize_t fill = so->fill;
  652|      8|    Py_ssize_t used = so->used;
  653|      8|    Py_ssize_t oldsize = (size_t)so->mask + 1;
  654|      8|    int table_is_malloced = table != so->smalltable;
  655|      8|    setentry small_copy[PySet_MINSIZE];
  656|       |
  657|      8|    assert (PyAnySet_Check(so));
  ------------------
  |  Branch (657:5): [True: 8, False: 0]
  |  Branch (657:5): [True: 0, False: 0]
  |  Branch (657:5): [True: 0, False: 0]
  |  Branch (657:5): [True: 0, False: 0]
  ------------------
  658|      8|    assert(table != NULL);
  ------------------
  |  Branch (658:5): [True: 8, False: 0]
  ------------------
  659|       |
  660|       |    /* This is delicate.  During the process of clearing the set,
  661|       |     * decrefs can cause the set to mutate.  To avoid fatal confusion
  662|       |     * (voice of experience), we have to make the set empty before
  663|       |     * clearing the slots, and never refer to anything via so->ref while
  664|       |     * clearing.
  665|       |     */
  666|      8|    if (table_is_malloced)
  ------------------
  |  Branch (666:9): [True: 0, False: 8]
  ------------------
  667|      0|        set_empty_to_minsize(so);
  668|       |
  669|      8|    else if (fill > 0) {
  ------------------
  |  Branch (669:14): [True: 8, False: 0]
  ------------------
  670|       |        /* It's a small table with something that needs to be cleared.
  671|       |         * Afraid the only safe way is to copy the set entries into
  672|       |         * another small table first.
  673|       |         */
  674|      8|        memcpy(small_copy, table, sizeof(small_copy));
  675|      8|        table = small_copy;
  676|      8|        set_empty_to_minsize(so);
  677|      8|    }
  678|       |    /* else it's a small table that's already empty */
  679|       |
  680|       |    /* Now we can finally clear things.  If C had refcounts, we could
  681|       |     * assert that the refcount on table is 1 now, i.e. that this function
  682|       |     * has unique access to it, so decref side-effects can't alter it.
  683|       |     */
  684|     55|    for (entry = table; used > 0; entry++) {
  ------------------
  |  Branch (684:25): [True: 47, False: 8]
  ------------------
  685|     47|        if (entry->key && entry->key != dummy) {
  ------------------
  |  |   64|      8|#define dummy (&_dummy_struct)
  ------------------
  |  Branch (685:13): [True: 8, False: 39]
  |  Branch (685:27): [True: 8, False: 0]
  ------------------
  686|      8|            used--;
  687|      8|            Py_DECREF(entry->key);
  ------------------
  |  |  430|      8|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      8|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  688|      8|        }
  689|     47|    }
  690|       |
  691|      8|    if (table_is_malloced)
  ------------------
  |  Branch (691:9): [True: 0, False: 8]
  ------------------
  692|      0|        free_entries(table, oldsize, SET_IS_SHARED(so));
  ------------------
  |  |  132|      0|#define SET_IS_SHARED(so) 0
  ------------------
  693|      8|    return 0;
  694|      8|}
setobject.c:set_empty_to_minsize:
  635|      8|{
  636|      8|    FT_ATOMIC_STORE_PTR_RELEASE(so->table, NULL);
  ------------------
  |  |  164|      8|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  ------------------
  637|      8|    set_zero_table(so->smalltable, PySet_MINSIZE);
  ------------------
  |  |   18|      8|#define PySet_MINSIZE 8
  ------------------
  638|      8|    so->fill = 0;
  639|      8|    FT_ATOMIC_STORE_SSIZE_RELAXED(so->used, 0);
  ------------------
  |  |  194|      8|#define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) value = new_value
  ------------------
  640|      8|    FT_ATOMIC_STORE_SSIZE_RELEASE(so->mask, PySet_MINSIZE - 1);
  ------------------
  |  |  169|      8|#define FT_ATOMIC_STORE_SSIZE_RELEASE(value, new_value) value = new_value
  ------------------
  641|      8|    FT_ATOMIC_STORE_SSIZE_RELAXED(so->hash, -1);
  ------------------
  |  |  194|      8|#define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) value = new_value
  ------------------
  642|      8|    FT_ATOMIC_STORE_PTR_RELEASE(so->table, so->smalltable);
  ------------------
  |  |  164|      8|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  ------------------
  643|      8|}
setobject.c:set_richcompare:
 2437|      2|{
 2438|      2|    PySetObject *v = _PySet_CAST(self);
  ------------------
  |  |   62|      2|    (assert(PyAnySet_Check(so)), _Py_CAST(PySetObject*, so))
  |  |  ------------------
  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (2438:22): [True: 2, False: 0]
  |  Branch (2438:22): [True: 0, False: 0]
  |  Branch (2438:22): [True: 0, False: 0]
  |  Branch (2438:22): [True: 0, False: 0]
  ------------------
 2439|      0|    PyObject *r1;
 2440|      2|    int r2;
 2441|       |
 2442|      2|    if(!PyAnySet_Check(w))
  ------------------
  |  |   31|      2|    (Py_IS_TYPE((ob), &PySet_Type) || Py_IS_TYPE((ob), &PyFrozenSet_Type) || \
  |  |  ------------------
  |  |  |  |  215|      4|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (Py_IS_TYPE((ob), &PySet_Type) || Py_IS_TYPE((ob), &PyFrozenSet_Type) || \
  |  |  ------------------
  |  |  |  |  215|      2|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   32|      2|      PyType_IsSubtype(Py_TYPE(ob), &PySet_Type) || \
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (32:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   33|      2|      PyType_IsSubtype(Py_TYPE(ob), &PyFrozenSet_Type))
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (33:7): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2443|      0|        Py_RETURN_NOTIMPLEMENTED;
  ------------------
  |  |  648|      0|#  define Py_RETURN_NOTIMPLEMENTED return Py_NotImplemented
  |  |  ------------------
  |  |  |  |  640|      0|#  define Py_NotImplemented (&_Py_NotImplementedStruct)
  |  |  ------------------
  ------------------
 2444|       |
 2445|      2|    switch (op) {
  ------------------
  |  Branch (2445:13): [True: 2, False: 0]
  ------------------
 2446|      0|    case Py_EQ:
  ------------------
  |  |  654|      0|#define Py_EQ 2
  ------------------
  |  Branch (2446:5): [True: 0, False: 2]
  ------------------
 2447|      0|        if (PySet_GET_SIZE(v) != PySet_GET_SIZE(w))
  ------------------
  |  |   71|      0|#define PySet_GET_SIZE(so) PySet_GET_SIZE(_PyObject_CAST(so))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      if (PySet_GET_SIZE(v) != PySet_GET_SIZE(w))
  ------------------
  |  |   71|      0|#define PySet_GET_SIZE(so) PySet_GET_SIZE(_PyObject_CAST(so))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2447:13): [True: 0, False: 0]
  ------------------
 2448|      0|            Py_RETURN_FALSE;
  ------------------
  |  |   45|      0|#  define Py_RETURN_FALSE return Py_False
  |  |  ------------------
  |  |  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2449|      0|        Py_hash_t v_hash = FT_ATOMIC_LOAD_SSIZE_RELAXED(v->hash);
  ------------------
  |  |  149|      0|#define FT_ATOMIC_LOAD_SSIZE_RELAXED(value) value
  ------------------
 2450|      0|        Py_hash_t w_hash = FT_ATOMIC_LOAD_SSIZE_RELAXED(((PySetObject *)w)->hash);
  ------------------
  |  |  149|      0|#define FT_ATOMIC_LOAD_SSIZE_RELAXED(value) value
  ------------------
 2451|      0|        if (v_hash != -1 && w_hash != -1 && v_hash != w_hash)
  ------------------
  |  Branch (2451:13): [True: 0, False: 0]
  |  Branch (2451:29): [True: 0, False: 0]
  |  Branch (2451:45): [True: 0, False: 0]
  ------------------
 2452|      0|            Py_RETURN_FALSE;
  ------------------
  |  |   45|      0|#  define Py_RETURN_FALSE return Py_False
  |  |  ------------------
  |  |  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2453|      0|        return set_issubset((PyObject*)v, w);
 2454|      0|    case Py_NE:
  ------------------
  |  |  655|      0|#define Py_NE 3
  ------------------
  |  Branch (2454:5): [True: 0, False: 2]
  ------------------
 2455|      0|        r1 = set_richcompare((PyObject*)v, w, Py_EQ);
  ------------------
  |  |  654|      0|#define Py_EQ 2
  ------------------
 2456|      0|        if (r1 == NULL)
  ------------------
  |  Branch (2456:13): [True: 0, False: 0]
  ------------------
 2457|      0|            return NULL;
 2458|      0|        r2 = PyObject_IsTrue(r1);
 2459|      0|        Py_DECREF(r1);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2460|      0|        if (r2 < 0)
  ------------------
  |  Branch (2460:13): [True: 0, False: 0]
  ------------------
 2461|      0|            return NULL;
 2462|      0|        return PyBool_FromLong(!r2);
 2463|      2|    case Py_LE:
  ------------------
  |  |  653|      2|#define Py_LE 1
  ------------------
  |  Branch (2463:5): [True: 2, False: 0]
  ------------------
 2464|      2|        return set_issubset((PyObject*)v, w);
 2465|      0|    case Py_GE:
  ------------------
  |  |  657|      0|#define Py_GE 5
  ------------------
  |  Branch (2465:5): [True: 0, False: 2]
  ------------------
 2466|      0|        return set_issuperset((PyObject*)v, w);
 2467|      0|    case Py_LT:
  ------------------
  |  |  652|      0|#define Py_LT 0
  ------------------
  |  Branch (2467:5): [True: 0, False: 2]
  ------------------
 2468|      0|        if (PySet_GET_SIZE(v) >= PySet_GET_SIZE(w))
  ------------------
  |  |   71|      0|#define PySet_GET_SIZE(so) PySet_GET_SIZE(_PyObject_CAST(so))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      if (PySet_GET_SIZE(v) >= PySet_GET_SIZE(w))
  ------------------
  |  |   71|      0|#define PySet_GET_SIZE(so) PySet_GET_SIZE(_PyObject_CAST(so))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2468:13): [True: 0, False: 0]
  ------------------
 2469|      0|            Py_RETURN_FALSE;
  ------------------
  |  |   45|      0|#  define Py_RETURN_FALSE return Py_False
  |  |  ------------------
  |  |  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2470|      0|        return set_issubset((PyObject*)v, w);
 2471|      0|    case Py_GT:
  ------------------
  |  |  656|      0|#define Py_GT 4
  ------------------
  |  Branch (2471:5): [True: 0, False: 2]
  ------------------
 2472|      0|        if (PySet_GET_SIZE(v) <= PySet_GET_SIZE(w))
  ------------------
  |  |   71|      0|#define PySet_GET_SIZE(so) PySet_GET_SIZE(_PyObject_CAST(so))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      if (PySet_GET_SIZE(v) <= PySet_GET_SIZE(w))
  ------------------
  |  |   71|      0|#define PySet_GET_SIZE(so) PySet_GET_SIZE(_PyObject_CAST(so))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2472:13): [True: 0, False: 0]
  ------------------
 2473|      0|            Py_RETURN_FALSE;
  ------------------
  |  |   45|      0|#  define Py_RETURN_FALSE return Py_False
  |  |  ------------------
  |  |  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2474|      0|        return set_issuperset((PyObject*)v, w);
 2475|      2|    }
 2476|      0|    Py_RETURN_NOTIMPLEMENTED;
  ------------------
  |  |  648|      0|#  define Py_RETURN_NOTIMPLEMENTED return Py_NotImplemented
  |  |  ------------------
  |  |  |  |  640|      0|#  define Py_NotImplemented (&_Py_NotImplementedStruct)
  |  |  ------------------
  ------------------
 2477|      2|}
setobject.c:set_issubset_impl:
 2362|      2|{
 2363|      2|    setentry *entry;
 2364|      2|    Py_ssize_t pos = 0;
 2365|      2|    int rv;
 2366|       |
 2367|      2|    if (!PyAnySet_Check(other)) {
  ------------------
  |  |   31|      2|    (Py_IS_TYPE((ob), &PySet_Type) || Py_IS_TYPE((ob), &PyFrozenSet_Type) || \
  |  |  ------------------
  |  |  |  |  215|      4|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (Py_IS_TYPE((ob), &PySet_Type) || Py_IS_TYPE((ob), &PyFrozenSet_Type) || \
  |  |  ------------------
  |  |  |  |  215|      2|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   32|      2|      PyType_IsSubtype(Py_TYPE(ob), &PySet_Type) || \
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (32:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   33|      2|      PyType_IsSubtype(Py_TYPE(ob), &PyFrozenSet_Type))
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (33:7): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2368|      0|        PyObject *tmp = set_intersection(so, other);
 2369|      0|        if (tmp == NULL) {
  ------------------
  |  Branch (2369:13): [True: 0, False: 0]
  ------------------
 2370|      0|            return NULL;
 2371|      0|        }
 2372|      0|        int result = (PySet_GET_SIZE(tmp) == PySet_GET_SIZE(so));
  ------------------
  |  |   71|      0|#define PySet_GET_SIZE(so) PySet_GET_SIZE(_PyObject_CAST(so))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      int result = (PySet_GET_SIZE(tmp) == PySet_GET_SIZE(so));
  ------------------
  |  |   71|      0|#define PySet_GET_SIZE(so) PySet_GET_SIZE(_PyObject_CAST(so))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2373|      0|        Py_DECREF(tmp);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2374|      0|        return PyBool_FromLong(result);
 2375|      0|    }
 2376|      2|    if (PySet_GET_SIZE(so) > PySet_GET_SIZE(other))
  ------------------
  |  |   71|      2|#define PySet_GET_SIZE(so) PySet_GET_SIZE(_PyObject_CAST(so))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  if (PySet_GET_SIZE(so) > PySet_GET_SIZE(other))
  ------------------
  |  |   71|      2|#define PySet_GET_SIZE(so) PySet_GET_SIZE(_PyObject_CAST(so))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2376:9): [True: 0, False: 2]
  ------------------
 2377|      0|        Py_RETURN_FALSE;
  ------------------
  |  |   45|      0|#  define Py_RETURN_FALSE return Py_False
  |  |  ------------------
  |  |  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2378|       |
 2379|      6|    while (set_next(so, &pos, &entry)) {
  ------------------
  |  Branch (2379:12): [True: 4, False: 2]
  ------------------
 2380|      4|        PyObject *key = entry->key;
 2381|      4|        Py_INCREF(key);
  ------------------
  |  |  310|      4|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2382|      4|        rv = set_contains_entry((PySetObject *)other, key, entry->hash);
 2383|      4|        Py_DECREF(key);
  ------------------
  |  |  430|      4|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2384|      4|        if (rv < 0) {
  ------------------
  |  Branch (2384:13): [True: 0, False: 4]
  ------------------
 2385|      0|            return NULL;
 2386|      0|        }
 2387|      4|        if (!rv) {
  ------------------
  |  Branch (2387:13): [True: 0, False: 4]
  ------------------
 2388|      0|            Py_RETURN_FALSE;
  ------------------
  |  |   45|      0|#  define Py_RETURN_FALSE return Py_False
  |  |  ------------------
  |  |  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2389|      0|        }
 2390|      4|    }
 2391|      2|    Py_RETURN_TRUE;
  ------------------
  |  |   44|      2|#  define Py_RETURN_TRUE return Py_True
  |  |  ------------------
  |  |  |  |   26|      2|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2392|      2|}
setobject.c:set_iter:
 1173|     31|{
 1174|     31|    Py_ssize_t size = set_len(so);
 1175|     31|    setiterobject *si = PyObject_GC_New(setiterobject, &PySetIter_Type);
  ------------------
  |  |  181|     31|    _Py_CAST(type*, _PyObject_GC_New(typeobj))
  |  |  ------------------
  |  |  |  |   37|     31|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
 1176|     31|    if (si == NULL)
  ------------------
  |  Branch (1176:9): [True: 0, False: 31]
  ------------------
 1177|      0|        return NULL;
 1178|     31|    si->si_set = (PySetObject*)Py_NewRef(so);
  ------------------
  |  |  550|     31|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     31|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     31|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1179|     31|    si->si_used = size;
 1180|     31|    si->si_pos = 0;
 1181|     31|    si->len = size;
 1182|     31|    _PyObject_GC_TRACK(si);
  ------------------
  |  |  513|     31|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     31|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     31|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1183|     31|    return (PyObject *)si;
 1184|     31|}
setobject.c:set_add_impl:
 2494|     47|{
 2495|     47|    if (set_add_key(so, key))
  ------------------
  |  Branch (2495:9): [True: 0, False: 47]
  ------------------
 2496|      0|        return NULL;
 2497|     47|    Py_RETURN_NONE;
  ------------------
  |  |  628|     47|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|     47|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
 2498|     47|}
setobject.c:set_vectorcall:
 2740|     17|{
 2741|     17|    assert(PyType_Check(type));
  ------------------
  |  Branch (2741:5): [True: 17, False: 0]
  ------------------
 2742|       |
 2743|     17|    if (!_PyArg_NoKwnames("set", kwnames)) {
  ------------------
  |  |   15|     17|    ((kwnames) == NULL || _PyArg_NoKwnames((funcname), (kwnames)))
  |  |  ------------------
  |  |  |  Branch (15:6): [True: 17, False: 0]
  |  |  |  Branch (15:27): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2744|      0|        return NULL;
 2745|      0|    }
 2746|       |
 2747|     17|    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
  ------------------
  |  |   37|     17|#define PyVectorcall_NARGS(n) _PyVectorcall_NARGS(n)
  ------------------
 2748|     17|    if (!_PyArg_CheckPositional("set", nargs, 0, 1)) {
  ------------------
  |  |   31|     17|    (((min) <= (nargs) && (nargs) <= (max)) \
  |  |  ------------------
  |  |  |  Branch (31:7): [True: 17, False: 0]
  |  |  |  Branch (31:27): [True: 17, False: 0]
  |  |  ------------------
  |  |   32|     17|     || _PyArg_CheckPositional((funcname), (nargs), (min), (max)))
  |  |  ------------------
  |  |  |  Branch (32:9): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2749|      0|        return NULL;
 2750|      0|    }
 2751|       |
 2752|     17|    if (nargs) {
  ------------------
  |  Branch (2752:9): [True: 3, False: 14]
  ------------------
 2753|      3|        return make_new_set(_PyType_CAST(type), args[0]);
  ------------------
  |  |  770|      3|    (assert(PyType_Check(op)), _Py_CAST(PyTypeObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (2753:29): [True: 3, False: 0]
  ------------------
 2754|      3|    }
 2755|       |
 2756|     14|    return make_new_set(_PyType_CAST(type), NULL);
  ------------------
  |  |  770|     14|    (assert(PyType_Check(op)), _Py_CAST(PyTypeObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|     14|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (2756:25): [True: 14, False: 0]
  ------------------
 2757|     14|}
setobject.c:make_new_frozenset:
 1410|      1|{
 1411|      1|    if (type != &PyFrozenSet_Type) {
  ------------------
  |  Branch (1411:9): [True: 0, False: 1]
  ------------------
 1412|      0|        return make_new_set(type, iterable);
 1413|      0|    }
 1414|       |
 1415|      1|    if (iterable != NULL && PyFrozenSet_CheckExact(iterable)) {
  ------------------
  |  |   23|      1|#define PyFrozenSet_CheckExact(ob) Py_IS_TYPE((ob), &PyFrozenSet_Type)
  |  |  ------------------
  |  |  |  |  215|      1|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1415:9): [True: 1, False: 0]
  ------------------
 1416|       |        /* frozenset(f) is idempotent */
 1417|      0|        return Py_NewRef(iterable);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1418|      0|    }
 1419|      1|    PyObject *obj = make_new_set(type, iterable);
 1420|      1|    if (obj != NULL) {
  ------------------
  |  Branch (1420:9): [True: 1, False: 0]
  ------------------
 1421|      1|        _PyFrozenSet_MaybeUntrack(obj);
 1422|      1|    }
 1423|      1|    return obj;
 1424|      1|}
setobject.c:frozenset_vectorcall:
 1447|      1|{
 1448|      1|    if (!_PyArg_NoKwnames("frozenset", kwnames)) {
  ------------------
  |  |   15|      1|    ((kwnames) == NULL || _PyArg_NoKwnames((funcname), (kwnames)))
  |  |  ------------------
  |  |  |  Branch (15:6): [True: 1, False: 0]
  |  |  |  Branch (15:27): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1449|      0|        return NULL;
 1450|      0|    }
 1451|       |
 1452|      1|    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
  ------------------
  |  |   37|      1|#define PyVectorcall_NARGS(n) _PyVectorcall_NARGS(n)
  ------------------
 1453|      1|    if (!_PyArg_CheckPositional("frozenset", nargs, 0, 1)) {
  ------------------
  |  |   31|      1|    (((min) <= (nargs) && (nargs) <= (max)) \
  |  |  ------------------
  |  |  |  Branch (31:7): [True: 1, False: 0]
  |  |  |  Branch (31:27): [True: 1, False: 0]
  |  |  ------------------
  |  |   32|      1|     || _PyArg_CheckPositional((funcname), (nargs), (min), (max)))
  |  |  ------------------
  |  |  |  Branch (32:9): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1454|      0|        return NULL;
 1455|      0|    }
 1456|       |
 1457|      1|    PyObject *iterable = (nargs ? args[0] : NULL);
  ------------------
  |  Branch (1457:27): [True: 1, False: 0]
  ------------------
 1458|      1|    return make_new_frozenset(_PyType_CAST(type), iterable);
  ------------------
  |  |  770|      1|    (assert(PyType_Check(op)), _Py_CAST(PyTypeObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (1458:31): [True: 1, False: 0]
  ------------------
 1459|      1|}
setobject.c:make_new_set:
 1350|     90|{
 1351|     90|    assert(PyType_Check(type));
  ------------------
  |  Branch (1351:5): [True: 90, False: 0]
  ------------------
 1352|     90|    PySetObject *so;
 1353|       |
 1354|     90|    so = (PySetObject *)type->tp_alloc(type, 0);
 1355|     90|    if (so == NULL)
  ------------------
  |  Branch (1355:9): [True: 0, False: 90]
  ------------------
 1356|      0|        return NULL;
 1357|       |
 1358|     90|    so->fill = 0;
 1359|     90|    so->used = 0;
 1360|     90|    so->mask = PySet_MINSIZE - 1;
  ------------------
  |  |   18|     90|#define PySet_MINSIZE 8
  ------------------
 1361|     90|    so->table = so->smalltable;
 1362|     90|    so->hash = -1;
 1363|     90|    so->finger = 0;
 1364|     90|    so->weakreflist = NULL;
 1365|       |
 1366|     90|    if (iterable != NULL) {
  ------------------
  |  Branch (1366:9): [True: 12, False: 78]
  ------------------
 1367|     12|        if (set_update_local(so, iterable)) {
  ------------------
  |  Branch (1367:13): [True: 0, False: 12]
  ------------------
 1368|      0|            Py_DECREF(so);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1369|      0|            return NULL;
 1370|      0|        }
 1371|     12|    }
 1372|       |
 1373|     90|    return (PyObject *)so;
 1374|     90|}
setobject.c:_PyFrozenSet_MaybeUntrack:
 1391|     42|{
 1392|     42|    assert(op != NULL);
  ------------------
  |  Branch (1392:5): [True: 42, False: 0]
  ------------------
 1393|       |    // subclasses of a frozenset can generate reference cycles, so do not untrack
 1394|     42|    if (!PyFrozenSet_CheckExact(op)) {
  ------------------
  |  |   23|     42|#define PyFrozenSet_CheckExact(ob) Py_IS_TYPE((ob), &PyFrozenSet_Type)
  |  |  ------------------
  |  |  |  |  215|     42|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     42|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     42|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1394:9): [True: 0, False: 42]
  ------------------
 1395|      0|        return;
 1396|      0|    }
 1397|       |    // if no elements of a frozenset are tracked by the GC, we untrack the object
 1398|     42|    Py_ssize_t pos = 0;
 1399|     42|    setentry *entry;
 1400|    338|    while (set_next((PySetObject *)op, &pos, &entry)) {
  ------------------
  |  Branch (1400:12): [True: 304, False: 34]
  ------------------
 1401|    304|        if (_PyObject_GC_MAY_BE_TRACKED(entry->key)) {
  ------------------
  |  Branch (1401:13): [True: 8, False: 296]
  ------------------
 1402|      8|            return;
 1403|      8|        }
 1404|    304|    }
 1405|     34|    _PyObject_GC_UNTRACK(op);
  ------------------
  |  |  515|     34|        _PyObject_GC_UNTRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     34|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     34|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1406|     34|}
setobject.c:set_len:
  823|     90|{
  824|     90|    PySetObject *so = _PySet_CAST(self);
  ------------------
  |  |   62|     90|    (assert(PyAnySet_Check(so)), _Py_CAST(PySetObject*, so))
  |  |  ------------------
  |  |  |  |   37|     90|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (824:23): [True: 31, False: 59]
  |  Branch (824:23): [True: 59, False: 0]
  |  Branch (824:23): [True: 0, False: 0]
  |  Branch (824:23): [True: 0, False: 0]
  ------------------
  825|     90|    return FT_ATOMIC_LOAD_SSIZE_RELAXED(so->used);
  ------------------
  |  |  149|     90|#define FT_ATOMIC_LOAD_SSIZE_RELAXED(value) value
  ------------------
  826|     90|}
setobject.c:set_clear_impl:
 1601|      8|{
 1602|      8|    set_clear_internal((PyObject*)so);
 1603|      8|    Py_RETURN_NONE;
  ------------------
  |  |  628|      8|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|      8|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
 1604|      8|}
setobject.c:set_add_key:
  602|    729|{
  603|    729|    Py_hash_t hash = _PyObject_HashFast(key);
  604|    729|    if (hash == -1) {
  ------------------
  |  Branch (604:9): [True: 0, False: 729]
  ------------------
  605|      0|        set_unhashable_type(key);
  606|      0|        return -1;
  607|      0|    }
  608|    729|    return set_add_entry(so, key, hash);
  609|    729|}
setobject.c:set_next:
  711|    373|{
  712|    373|    Py_ssize_t i;
  713|    373|    Py_ssize_t mask;
  714|    373|    setentry *entry;
  715|       |
  716|    373|    assert (PyAnySet_Check(so));
  ------------------
  |  Branch (716:5): [True: 12, False: 361]
  |  Branch (716:5): [True: 361, False: 0]
  |  Branch (716:5): [True: 0, False: 0]
  |  Branch (716:5): [True: 0, False: 0]
  ------------------
  717|    373|    i = *pos_ptr;
  718|    373|    assert(i >= 0);
  ------------------
  |  Branch (718:5): [True: 373, False: 0]
  ------------------
  719|    373|    mask = so->mask;
  720|    373|    entry = &so->table[i];
  721|    972|    while (i <= mask && (entry->key == NULL || entry->key == dummy)) {
  ------------------
  |  |   64|    325|#define dummy (&_dummy_struct)
  ------------------
  |  Branch (721:12): [True: 924, False: 48]
  |  Branch (721:26): [True: 599, False: 325]
  |  Branch (721:48): [True: 0, False: 325]
  ------------------
  722|    599|        i++;
  723|    599|        entry++;
  724|    599|    }
  725|    373|    *pos_ptr = i+1;
  726|    373|    if (i > mask)
  ------------------
  |  Branch (726:9): [True: 48, False: 325]
  ------------------
  727|     48|        return 0;
  728|    373|    assert(entry != NULL);
  ------------------
  |  Branch (728:5): [True: 325, False: 0]
  ------------------
  729|    325|    *entry_ptr = entry;
  730|    325|    return 1;
  731|    325|}

PySlice_New:
  146|     47|{
  147|     47|    if (step == NULL) {
  ------------------
  |  Branch (147:9): [True: 0, False: 47]
  ------------------
  148|      0|        step = Py_None;
  ------------------
  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  ------------------
  149|      0|    }
  150|     47|    if (start == NULL) {
  ------------------
  |  Branch (150:9): [True: 0, False: 47]
  ------------------
  151|      0|        start = Py_None;
  ------------------
  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  ------------------
  152|      0|    }
  153|     47|    if (stop == NULL) {
  ------------------
  |  Branch (153:9): [True: 0, False: 47]
  ------------------
  154|      0|        stop = Py_None;
  ------------------
  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  ------------------
  155|      0|    }
  156|     47|    return (PyObject *)_PyBuildSlice_Consume2(Py_NewRef(start),
  ------------------
  |  |  550|     47|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     47|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     47|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  157|     47|                                              Py_NewRef(stop), step);
  ------------------
  |  |  550|     47|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     47|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     47|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  158|     47|}
PySlice_Unpack:
  221|      3|{
  222|      3|    PySliceObject *r = (PySliceObject*)_r;
  223|       |    /* this is harder to get right than you might think */
  224|       |
  225|      3|    static_assert(PY_SSIZE_T_MIN + 1 <= -PY_SSIZE_T_MAX,
  226|      3|                  "-PY_SSIZE_T_MAX < PY_SSIZE_T_MIN + 1");
  227|       |
  228|      3|    if (r->step == Py_None) {
  ------------------
  |  |  616|      3|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (228:9): [True: 3, False: 0]
  ------------------
  229|      3|        *step = 1;
  230|      3|    }
  231|      0|    else {
  232|      0|        if (!_PyEval_SliceIndex(r->step, step)) return -1;
  ------------------
  |  Branch (232:13): [True: 0, False: 0]
  ------------------
  233|      0|        if (*step == 0) {
  ------------------
  |  Branch (233:13): [True: 0, False: 0]
  ------------------
  234|      0|            PyErr_SetString(PyExc_ValueError,
  235|      0|                            "slice step cannot be zero");
  236|      0|            return -1;
  237|      0|        }
  238|       |        /* Here *step might be -PY_SSIZE_T_MAX-1; in this case we replace it
  239|       |         * with -PY_SSIZE_T_MAX.  This doesn't affect the semantics, and it
  240|       |         * guards against later undefined behaviour resulting from code that
  241|       |         * does "step = -step" as part of a slice reversal.
  242|       |         */
  243|      0|        if (*step < -PY_SSIZE_T_MAX)
  ------------------
  |  |  137|      0|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (243:13): [True: 0, False: 0]
  ------------------
  244|      0|            *step = -PY_SSIZE_T_MAX;
  ------------------
  |  |  137|      0|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  245|      0|    }
  246|       |
  247|      3|    if (r->start == Py_None) {
  ------------------
  |  |  616|      3|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (247:9): [True: 2, False: 1]
  ------------------
  248|      2|        *start = *step < 0 ? PY_SSIZE_T_MAX : 0;
  ------------------
  |  |  137|      2|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (248:18): [True: 0, False: 2]
  ------------------
  249|      2|    }
  250|      1|    else {
  251|      1|        if (!_PyEval_SliceIndex(r->start, start)) return -1;
  ------------------
  |  Branch (251:13): [True: 0, False: 1]
  ------------------
  252|      1|    }
  253|       |
  254|      3|    if (r->stop == Py_None) {
  ------------------
  |  |  616|      3|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (254:9): [True: 3, False: 0]
  ------------------
  255|      3|        *stop = *step < 0 ? PY_SSIZE_T_MIN : PY_SSIZE_T_MAX;
  ------------------
  |  |  146|      0|#define PY_SSIZE_T_MIN (-PY_SSIZE_T_MAX-1)
  |  |  ------------------
  |  |  |  |  137|      0|#   define PY_SSIZE_T_MAX SSIZE_MAX
  |  |  ------------------
  ------------------
                      *stop = *step < 0 ? PY_SSIZE_T_MIN : PY_SSIZE_T_MAX;
  ------------------
  |  |  137|      3|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (255:17): [True: 0, False: 3]
  ------------------
  256|      3|    }
  257|      0|    else {
  258|      0|        if (!_PyEval_SliceIndex(r->stop, stop)) return -1;
  ------------------
  |  Branch (258:13): [True: 0, False: 0]
  ------------------
  259|      0|    }
  260|       |
  261|      3|    return 0;
  262|      3|}
PySlice_AdjustIndices:
  267|     12|{
  268|       |    /* this is harder to get right than you might think */
  269|       |
  270|     12|    assert(step != 0);
  ------------------
  |  Branch (270:5): [True: 12, False: 0]
  ------------------
  271|     12|    assert(step >= -PY_SSIZE_T_MAX);
  ------------------
  |  Branch (271:5): [True: 12, False: 0]
  ------------------
  272|       |
  273|     12|    if (*start < 0) {
  ------------------
  |  Branch (273:9): [True: 0, False: 12]
  ------------------
  274|      0|        *start += length;
  275|      0|        if (*start < 0) {
  ------------------
  |  Branch (275:13): [True: 0, False: 0]
  ------------------
  276|      0|            *start = (step < 0) ? -1 : 0;
  ------------------
  |  Branch (276:22): [True: 0, False: 0]
  ------------------
  277|      0|        }
  278|      0|    }
  279|     12|    else if (*start >= length) {
  ------------------
  |  Branch (279:14): [True: 1, False: 11]
  ------------------
  280|      1|        *start = (step < 0) ? length - 1 : length;
  ------------------
  |  Branch (280:18): [True: 0, False: 1]
  ------------------
  281|      1|    }
  282|       |
  283|     12|    if (*stop < 0) {
  ------------------
  |  Branch (283:9): [True: 0, False: 12]
  ------------------
  284|      0|        *stop += length;
  285|      0|        if (*stop < 0) {
  ------------------
  |  Branch (285:13): [True: 0, False: 0]
  ------------------
  286|      0|            *stop = (step < 0) ? -1 : 0;
  ------------------
  |  Branch (286:21): [True: 0, False: 0]
  ------------------
  287|      0|        }
  288|      0|    }
  289|     12|    else if (*stop >= length) {
  ------------------
  |  Branch (289:14): [True: 7, False: 5]
  ------------------
  290|      7|        *stop = (step < 0) ? length - 1 : length;
  ------------------
  |  Branch (290:17): [True: 0, False: 7]
  ------------------
  291|      7|    }
  292|       |
  293|     12|    if (step < 0) {
  ------------------
  |  Branch (293:9): [True: 0, False: 12]
  ------------------
  294|      0|        if (*stop < *start) {
  ------------------
  |  Branch (294:13): [True: 0, False: 0]
  ------------------
  295|      0|            return (*start - *stop - 1) / (-step) + 1;
  296|      0|        }
  297|      0|    }
  298|     12|    else {
  299|     12|        if (*start < *stop) {
  ------------------
  |  Branch (299:13): [True: 11, False: 1]
  ------------------
  300|     11|            return (*stop - *start - 1) / step + 1;
  301|     11|        }
  302|     12|    }
  303|      1|    return 0;
  304|     12|}
sliceobject.c:_PyBuildSlice_Consume2:
  122|     47|{
  123|     47|    assert(start != NULL && stop != NULL && step != NULL);
  ------------------
  |  Branch (123:5): [True: 47, False: 0]
  |  Branch (123:5): [True: 47, False: 0]
  |  Branch (123:5): [True: 47, False: 0]
  ------------------
  124|     47|    PySliceObject *obj = _Py_FREELIST_POP(PySliceObject, slices);
  ------------------
  |  |   43|     47|    _Py_CAST(TYPE*, _PyFreeList_Pop(&_Py_freelists_GET()->NAME))
  |  |  ------------------
  |  |  |  |   37|     47|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  125|     47|    if (obj == NULL) {
  ------------------
  |  Branch (125:9): [True: 45, False: 2]
  ------------------
  126|     45|        obj = PyObject_GC_New(PySliceObject, &PySlice_Type);
  ------------------
  |  |  181|     45|    _Py_CAST(type*, _PyObject_GC_New(typeobj))
  |  |  ------------------
  |  |  |  |   37|     45|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  127|     45|        if (obj == NULL) {
  ------------------
  |  Branch (127:13): [True: 0, False: 45]
  ------------------
  128|      0|            goto error;
  129|      0|        }
  130|     45|    }
  131|       |
  132|     47|    obj->start = start;
  133|     47|    obj->stop = stop;
  134|     47|    obj->step = Py_NewRef(step);
  ------------------
  |  |  550|     47|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     47|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     47|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  135|       |
  136|     47|    _PyObject_GC_TRACK(obj);
  ------------------
  |  |  513|     47|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     47|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     47|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  137|     47|    return obj;
  138|      0|error:
  139|      0|    Py_DECREF(start);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  140|      0|    Py_DECREF(stop);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  141|       |    return NULL;
  142|     47|}
sliceobject.c:slice_dealloc:
  349|      8|{
  350|      8|    PySliceObject *r = _PySlice_CAST(op);
  ------------------
  |  |   25|      8|#define _PySlice_CAST(op) _Py_CAST(PySliceObject*, (op))
  |  |  ------------------
  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  351|      8|    PyObject_GC_UnTrack(r);
  352|      8|    Py_DECREF(r->step);
  ------------------
  |  |  430|      8|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      8|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  353|      8|    Py_DECREF(r->start);
  ------------------
  |  |  430|      8|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      8|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  354|      8|    Py_DECREF(r->stop);
  ------------------
  |  |  430|      8|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      8|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  355|      8|    _Py_FREELIST_FREE(slices, r, PyObject_GC_Del);
  ------------------
  |  |   35|      8|    _PyFreeList_Free(&_Py_freelists_GET()->NAME, _PyObject_CAST(op), \
  |  |  ------------------
  |  |  |  |  171|      8|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   36|      8|                     Py_ ## NAME ## _MAXFREELIST, freefunc)
  |  |  ------------------
  |  |  |  |   21|      8|#  define Py_slices_MAXFREELIST 1
  |  |  ------------------
  ------------------
  356|      8|}
sliceobject.c:slice_traverse:
  626|     68|{
  627|     68|    PySliceObject *v = _PySlice_CAST(op);
  ------------------
  |  |   25|     68|#define _PySlice_CAST(op) _Py_CAST(PySliceObject*, (op))
  |  |  ------------------
  |  |  |  |   37|     68|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  628|     68|    Py_VISIT(v->start);
  ------------------
  |  |  194|     68|    do {                                                                \
  |  |  195|     68|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 68, False: 0]
  |  |  ------------------
  |  |  196|     68|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|     68|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     68|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|     68|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 68]
  |  |  ------------------
  |  |  198|     68|                return vret;                                            \
  |  |  199|     68|        }                                                               \
  |  |  200|     68|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 68]
  |  |  ------------------
  ------------------
  629|     68|    Py_VISIT(v->stop);
  ------------------
  |  |  194|     68|    do {                                                                \
  |  |  195|     68|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 68, False: 0]
  |  |  ------------------
  |  |  196|     68|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|     68|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     68|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|     68|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 68]
  |  |  ------------------
  |  |  198|     68|                return vret;                                            \
  |  |  199|     68|        }                                                               \
  |  |  200|     68|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 68]
  |  |  ------------------
  ------------------
  630|     68|    Py_VISIT(v->step);
  ------------------
  |  |  194|     68|    do {                                                                \
  |  |  195|     68|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 68, False: 0]
  |  |  ------------------
  |  |  196|     68|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|     68|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     68|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|     68|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 68]
  |  |  ------------------
  |  |  198|     68|                return vret;                                            \
  |  |  199|     68|        }                                                               \
  |  |  200|     68|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 68]
  |  |  ------------------
  ------------------
  631|     68|    return 0;
  632|     68|}

unicodeobject.c:asciilib_utf8_decode:
   26|      1|{
   27|      1|    Py_UCS4 ch;
   28|      1|    const char *s = *inptr;
   29|      1|    STRINGLIB_CHAR *p = dest + *outpos;
  ------------------
  |  |   11|      1|#define STRINGLIB_CHAR           Py_UCS1
  ------------------
   30|       |
   31|      1|    while (s < end) {
  ------------------
  |  Branch (31:12): [True: 1, False: 0]
  ------------------
   32|      1|        ch = (unsigned char)*s;
   33|       |
   34|      1|        if (ch < 0x80) {
  ------------------
  |  Branch (34:13): [True: 0, False: 1]
  ------------------
   35|       |            /* Fast path for runs of ASCII characters. Given that common UTF-8
   36|       |               input will consist of an overwhelming majority of ASCII
   37|       |               characters, we try to optimize for this case by checking
   38|       |               as many characters as a C 'size_t' can contain.
   39|       |               First, check if we can do an aligned read, as most CPUs have
   40|       |               a penalty for unaligned reads.
   41|       |            */
   42|      0|            if (_Py_IS_ALIGNED(s, ALIGNOF_SIZE_T)) {
  ------------------
  |  |  221|      0|#define _Py_IS_ALIGNED(p, a) (!((uintptr_t)(p) & (uintptr_t)((a) - 1)))
  |  |  ------------------
  |  |  |  Branch (221:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   43|       |                /* Help register allocation */
   44|      0|                const char *_s = s;
   45|      0|                STRINGLIB_CHAR *_p = p;
  ------------------
  |  |   11|      0|#define STRINGLIB_CHAR           Py_UCS1
  ------------------
   46|      0|                while (_s + SIZEOF_SIZE_T <= end) {
  ------------------
  |  | 1838|      0|#define SIZEOF_SIZE_T 8
  ------------------
  |  Branch (46:24): [True: 0, False: 0]
  ------------------
   47|       |                    /* Read a whole size_t at a time (either 4 or 8 bytes),
   48|       |                       and do a fast unrolled copy if it only contains ASCII
   49|       |                       characters. */
   50|      0|                    size_t value = *(const size_t *) _s;
   51|      0|                    if (value & ASCII_CHAR_MASK)
  ------------------
  |  |   12|      0|# define ASCII_CHAR_MASK 0x8080808080808080ULL
  ------------------
  |  Branch (51:25): [True: 0, False: 0]
  ------------------
   52|      0|                        break;
   53|      0|#if PY_LITTLE_ENDIAN
   54|      0|                    _p[0] = (STRINGLIB_CHAR)(value & 0xFFu);
   55|      0|                    _p[1] = (STRINGLIB_CHAR)((value >> 8) & 0xFFu);
   56|      0|                    _p[2] = (STRINGLIB_CHAR)((value >> 16) & 0xFFu);
   57|      0|                    _p[3] = (STRINGLIB_CHAR)((value >> 24) & 0xFFu);
   58|      0|# if SIZEOF_SIZE_T == 8
   59|      0|                    _p[4] = (STRINGLIB_CHAR)((value >> 32) & 0xFFu);
   60|      0|                    _p[5] = (STRINGLIB_CHAR)((value >> 40) & 0xFFu);
   61|      0|                    _p[6] = (STRINGLIB_CHAR)((value >> 48) & 0xFFu);
   62|      0|                    _p[7] = (STRINGLIB_CHAR)((value >> 56) & 0xFFu);
   63|      0|# endif
   64|       |#else
   65|       |# if SIZEOF_SIZE_T == 8
   66|       |                    _p[0] = (STRINGLIB_CHAR)((value >> 56) & 0xFFu);
   67|       |                    _p[1] = (STRINGLIB_CHAR)((value >> 48) & 0xFFu);
   68|       |                    _p[2] = (STRINGLIB_CHAR)((value >> 40) & 0xFFu);
   69|       |                    _p[3] = (STRINGLIB_CHAR)((value >> 32) & 0xFFu);
   70|       |                    _p[4] = (STRINGLIB_CHAR)((value >> 24) & 0xFFu);
   71|       |                    _p[5] = (STRINGLIB_CHAR)((value >> 16) & 0xFFu);
   72|       |                    _p[6] = (STRINGLIB_CHAR)((value >> 8) & 0xFFu);
   73|       |                    _p[7] = (STRINGLIB_CHAR)(value & 0xFFu);
   74|       |# else
   75|       |                    _p[0] = (STRINGLIB_CHAR)((value >> 24) & 0xFFu);
   76|       |                    _p[1] = (STRINGLIB_CHAR)((value >> 16) & 0xFFu);
   77|       |                    _p[2] = (STRINGLIB_CHAR)((value >> 8) & 0xFFu);
   78|       |                    _p[3] = (STRINGLIB_CHAR)(value & 0xFFu);
   79|       |# endif
   80|       |#endif
   81|      0|                    _s += SIZEOF_SIZE_T;
  ------------------
  |  | 1838|      0|#define SIZEOF_SIZE_T 8
  ------------------
   82|      0|                    _p += SIZEOF_SIZE_T;
  ------------------
  |  | 1838|      0|#define SIZEOF_SIZE_T 8
  ------------------
   83|      0|                }
   84|      0|                s = _s;
   85|      0|                p = _p;
   86|      0|                if (s == end)
  ------------------
  |  Branch (86:21): [True: 0, False: 0]
  ------------------
   87|      0|                    break;
   88|      0|                ch = (unsigned char)*s;
   89|      0|            }
   90|      0|            if (ch < 0x80) {
  ------------------
  |  Branch (90:17): [True: 0, False: 0]
  ------------------
   91|      0|                s++;
   92|      0|                *p++ = ch;
   93|      0|                continue;
   94|      0|            }
   95|      0|        }
   96|       |
   97|      1|        if (ch < 0xE0) {
  ------------------
  |  Branch (97:13): [True: 1, False: 0]
  ------------------
   98|       |            /* \xC2\x80-\xDF\xBF -- 0080-07FF */
   99|      1|            Py_UCS4 ch2;
  100|      1|            if (ch < 0xC2) {
  ------------------
  |  Branch (100:17): [True: 0, False: 1]
  ------------------
  101|       |                /* invalid sequence
  102|       |                \x80-\xBF -- continuation byte
  103|       |                \xC0-\xC1 -- fake 0000-007F */
  104|      0|                goto InvalidStart;
  105|      0|            }
  106|      1|            if (end - s < 2) {
  ------------------
  |  Branch (106:17): [True: 0, False: 1]
  ------------------
  107|       |                /* unexpected end of data: the caller will decide whether
  108|       |                   it's an error or not */
  109|      0|                break;
  110|      0|            }
  111|      1|            ch2 = (unsigned char)s[1];
  112|      1|            if (!IS_CONTINUATION_BYTE(ch2))
  ------------------
  |  |   20|      1|#define IS_CONTINUATION_BYTE(ch) ((ch) >= 0x80 && (ch) < 0xC0)
  |  |  ------------------
  |  |  |  Branch (20:35): [True: 1, False: 0]
  |  |  |  Branch (20:51): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  113|       |                /* invalid continuation byte */
  114|      0|                goto InvalidContinuation1;
  115|      1|            ch = (ch << 6) + ch2 -
  116|      1|                 ((0xC0 << 6) + 0x80);
  117|      1|            assert ((ch > 0x007F) && (ch <= 0x07FF));
  ------------------
  |  Branch (117:13): [True: 1, False: 0]
  |  Branch (117:13): [True: 1, False: 0]
  ------------------
  118|      1|            s += 2;
  119|      1|            if (STRINGLIB_MAX_CHAR <= 0x007F ||
  ------------------
  |  |   10|      1|#define STRINGLIB_MAX_CHAR       0x7Fu
  ------------------
  |  Branch (119:17): [True: 1, Folded]
  ------------------
  120|      0|                (STRINGLIB_MAX_CHAR < 0x07FF && ch > STRINGLIB_MAX_CHAR))
  ------------------
  |  |   10|      0|#define STRINGLIB_MAX_CHAR       0x7Fu
  ------------------
                              (STRINGLIB_MAX_CHAR < 0x07FF && ch > STRINGLIB_MAX_CHAR))
  ------------------
  |  |   10|      0|#define STRINGLIB_MAX_CHAR       0x7Fu
  ------------------
  |  Branch (120:18): [True: 0, Folded]
  |  Branch (120:49): [True: 0, False: 0]
  ------------------
  121|       |                /* Out-of-range */
  122|      1|                goto Return;
  123|      0|            *p++ = ch;
  124|      0|            continue;
  125|      1|        }
  126|       |
  127|      0|        if (ch < 0xF0) {
  ------------------
  |  Branch (127:13): [True: 0, False: 0]
  ------------------
  128|       |            /* \xE0\xA0\x80-\xEF\xBF\xBF -- 0800-FFFF */
  129|      0|            Py_UCS4 ch2, ch3;
  130|      0|            if (end - s < 3) {
  ------------------
  |  Branch (130:17): [True: 0, False: 0]
  ------------------
  131|       |                /* unexpected end of data: the caller will decide whether
  132|       |                   it's an error or not */
  133|      0|                if (end - s < 2)
  ------------------
  |  Branch (133:21): [True: 0, False: 0]
  ------------------
  134|      0|                    break;
  135|      0|                ch2 = (unsigned char)s[1];
  136|      0|                if (!IS_CONTINUATION_BYTE(ch2) ||
  ------------------
  |  |   20|      0|#define IS_CONTINUATION_BYTE(ch) ((ch) >= 0x80 && (ch) < 0xC0)
  |  |  ------------------
  |  |  |  Branch (20:35): [True: 0, False: 0]
  |  |  |  Branch (20:51): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  137|      0|                    (ch2 < 0xA0 ? ch == 0xE0 : ch == 0xED))
  ------------------
  |  Branch (137:21): [True: 0, False: 0]
  |  Branch (137:22): [True: 0, False: 0]
  ------------------
  138|       |                    /* for clarification see comments below */
  139|      0|                    goto InvalidContinuation1;
  140|      0|                break;
  141|      0|            }
  142|      0|            ch2 = (unsigned char)s[1];
  143|      0|            ch3 = (unsigned char)s[2];
  144|      0|            if (!IS_CONTINUATION_BYTE(ch2)) {
  ------------------
  |  |   20|      0|#define IS_CONTINUATION_BYTE(ch) ((ch) >= 0x80 && (ch) < 0xC0)
  |  |  ------------------
  |  |  |  Branch (20:35): [True: 0, False: 0]
  |  |  |  Branch (20:51): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  145|       |                /* invalid continuation byte */
  146|      0|                goto InvalidContinuation1;
  147|      0|            }
  148|      0|            if (ch == 0xE0) {
  ------------------
  |  Branch (148:17): [True: 0, False: 0]
  ------------------
  149|      0|                if (ch2 < 0xA0)
  ------------------
  |  Branch (149:21): [True: 0, False: 0]
  ------------------
  150|       |                    /* invalid sequence
  151|       |                       \xE0\x80\x80-\xE0\x9F\xBF -- fake 0000-0800 */
  152|      0|                    goto InvalidContinuation1;
  153|      0|            } else if (ch == 0xED && ch2 >= 0xA0) {
  ------------------
  |  Branch (153:24): [True: 0, False: 0]
  |  Branch (153:38): [True: 0, False: 0]
  ------------------
  154|       |                /* Decoding UTF-8 sequences in range \xED\xA0\x80-\xED\xBF\xBF
  155|       |                   will result in surrogates in range D800-DFFF. Surrogates are
  156|       |                   not valid UTF-8 so they are rejected.
  157|       |                   See https://www.unicode.org/versions/Unicode5.2.0/ch03.pdf
  158|       |                   (table 3-7) and http://www.rfc-editor.org/rfc/rfc3629.txt */
  159|      0|                goto InvalidContinuation1;
  160|      0|            }
  161|      0|            if (!IS_CONTINUATION_BYTE(ch3)) {
  ------------------
  |  |   20|      0|#define IS_CONTINUATION_BYTE(ch) ((ch) >= 0x80 && (ch) < 0xC0)
  |  |  ------------------
  |  |  |  Branch (20:35): [True: 0, False: 0]
  |  |  |  Branch (20:51): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  162|       |                /* invalid continuation byte */
  163|      0|                goto InvalidContinuation2;
  164|      0|            }
  165|      0|            ch = (ch << 12) + (ch2 << 6) + ch3 -
  166|      0|                 ((0xE0 << 12) + (0x80 << 6) + 0x80);
  167|      0|            assert ((ch > 0x07FF) && (ch <= 0xFFFF));
  ------------------
  |  Branch (167:13): [True: 0, False: 0]
  |  Branch (167:13): [True: 0, False: 0]
  ------------------
  168|      0|            s += 3;
  169|      0|            if (STRINGLIB_MAX_CHAR <= 0x07FF ||
  ------------------
  |  |   10|      0|#define STRINGLIB_MAX_CHAR       0x7Fu
  ------------------
  |  Branch (169:17): [True: 0, Folded]
  ------------------
  170|      0|                (STRINGLIB_MAX_CHAR < 0xFFFF && ch > STRINGLIB_MAX_CHAR))
  ------------------
  |  |   10|      0|#define STRINGLIB_MAX_CHAR       0x7Fu
  ------------------
                              (STRINGLIB_MAX_CHAR < 0xFFFF && ch > STRINGLIB_MAX_CHAR))
  ------------------
  |  |   10|      0|#define STRINGLIB_MAX_CHAR       0x7Fu
  ------------------
  |  Branch (170:18): [True: 0, Folded]
  |  Branch (170:49): [True: 0, False: 0]
  ------------------
  171|       |                /* Out-of-range */
  172|      0|                goto Return;
  173|      0|            *p++ = ch;
  174|      0|            continue;
  175|      0|        }
  176|       |
  177|      0|        if (ch < 0xF5) {
  ------------------
  |  Branch (177:13): [True: 0, False: 0]
  ------------------
  178|       |            /* \xF0\x90\x80\x80-\xF4\x8F\xBF\xBF -- 10000-10FFFF */
  179|      0|            Py_UCS4 ch2, ch3, ch4;
  180|      0|            if (end - s < 4) {
  ------------------
  |  Branch (180:17): [True: 0, False: 0]
  ------------------
  181|       |                /* unexpected end of data: the caller will decide whether
  182|       |                   it's an error or not */
  183|      0|                if (end - s < 2)
  ------------------
  |  Branch (183:21): [True: 0, False: 0]
  ------------------
  184|      0|                    break;
  185|      0|                ch2 = (unsigned char)s[1];
  186|      0|                if (!IS_CONTINUATION_BYTE(ch2) ||
  ------------------
  |  |   20|      0|#define IS_CONTINUATION_BYTE(ch) ((ch) >= 0x80 && (ch) < 0xC0)
  |  |  ------------------
  |  |  |  Branch (20:35): [True: 0, False: 0]
  |  |  |  Branch (20:51): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  187|      0|                    (ch2 < 0x90 ? ch == 0xF0 : ch == 0xF4))
  ------------------
  |  Branch (187:21): [True: 0, False: 0]
  |  Branch (187:22): [True: 0, False: 0]
  ------------------
  188|       |                    /* for clarification see comments below */
  189|      0|                    goto InvalidContinuation1;
  190|      0|                if (end - s < 3)
  ------------------
  |  Branch (190:21): [True: 0, False: 0]
  ------------------
  191|      0|                    break;
  192|      0|                ch3 = (unsigned char)s[2];
  193|      0|                if (!IS_CONTINUATION_BYTE(ch3))
  ------------------
  |  |   20|      0|#define IS_CONTINUATION_BYTE(ch) ((ch) >= 0x80 && (ch) < 0xC0)
  |  |  ------------------
  |  |  |  Branch (20:35): [True: 0, False: 0]
  |  |  |  Branch (20:51): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  194|      0|                    goto InvalidContinuation2;
  195|      0|                break;
  196|      0|            }
  197|      0|            ch2 = (unsigned char)s[1];
  198|      0|            ch3 = (unsigned char)s[2];
  199|      0|            ch4 = (unsigned char)s[3];
  200|      0|            if (!IS_CONTINUATION_BYTE(ch2)) {
  ------------------
  |  |   20|      0|#define IS_CONTINUATION_BYTE(ch) ((ch) >= 0x80 && (ch) < 0xC0)
  |  |  ------------------
  |  |  |  Branch (20:35): [True: 0, False: 0]
  |  |  |  Branch (20:51): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  201|       |                /* invalid continuation byte */
  202|      0|                goto InvalidContinuation1;
  203|      0|            }
  204|      0|            if (ch == 0xF0) {
  ------------------
  |  Branch (204:17): [True: 0, False: 0]
  ------------------
  205|      0|                if (ch2 < 0x90)
  ------------------
  |  Branch (205:21): [True: 0, False: 0]
  ------------------
  206|       |                    /* invalid sequence
  207|       |                       \xF0\x80\x80\x80-\xF0\x8F\xBF\xBF -- fake 0000-FFFF */
  208|      0|                    goto InvalidContinuation1;
  209|      0|            } else if (ch == 0xF4 && ch2 >= 0x90) {
  ------------------
  |  Branch (209:24): [True: 0, False: 0]
  |  Branch (209:38): [True: 0, False: 0]
  ------------------
  210|       |                /* invalid sequence
  211|       |                   \xF4\x90\x80\x80- -- 110000- overflow */
  212|      0|                goto InvalidContinuation1;
  213|      0|            }
  214|      0|            if (!IS_CONTINUATION_BYTE(ch3)) {
  ------------------
  |  |   20|      0|#define IS_CONTINUATION_BYTE(ch) ((ch) >= 0x80 && (ch) < 0xC0)
  |  |  ------------------
  |  |  |  Branch (20:35): [True: 0, False: 0]
  |  |  |  Branch (20:51): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  215|       |                /* invalid continuation byte */
  216|      0|                goto InvalidContinuation2;
  217|      0|            }
  218|      0|            if (!IS_CONTINUATION_BYTE(ch4)) {
  ------------------
  |  |   20|      0|#define IS_CONTINUATION_BYTE(ch) ((ch) >= 0x80 && (ch) < 0xC0)
  |  |  ------------------
  |  |  |  Branch (20:35): [True: 0, False: 0]
  |  |  |  Branch (20:51): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  219|       |                /* invalid continuation byte */
  220|      0|                goto InvalidContinuation3;
  221|      0|            }
  222|      0|            ch = (ch << 18) + (ch2 << 12) + (ch3 << 6) + ch4 -
  223|      0|                 ((0xF0 << 18) + (0x80 << 12) + (0x80 << 6) + 0x80);
  224|      0|            assert ((ch > 0xFFFF) && (ch <= 0x10FFFF));
  ------------------
  |  Branch (224:13): [True: 0, False: 0]
  |  Branch (224:13): [True: 0, False: 0]
  ------------------
  225|      0|            s += 4;
  226|      0|            if (STRINGLIB_MAX_CHAR <= 0xFFFF ||
  ------------------
  |  |   10|      0|#define STRINGLIB_MAX_CHAR       0x7Fu
  ------------------
  |  Branch (226:17): [True: 0, Folded]
  ------------------
  227|      0|                (STRINGLIB_MAX_CHAR < 0x10FFFF && ch > STRINGLIB_MAX_CHAR))
  ------------------
  |  |   10|      0|#define STRINGLIB_MAX_CHAR       0x7Fu
  ------------------
                              (STRINGLIB_MAX_CHAR < 0x10FFFF && ch > STRINGLIB_MAX_CHAR))
  ------------------
  |  |   10|      0|#define STRINGLIB_MAX_CHAR       0x7Fu
  ------------------
  |  Branch (227:18): [True: 0, Folded]
  |  Branch (227:51): [True: 0, False: 0]
  ------------------
  228|       |                /* Out-of-range */
  229|      0|                goto Return;
  230|      0|            *p++ = ch;
  231|      0|            continue;
  232|      0|        }
  233|      0|        goto InvalidStart;
  234|      0|    }
  235|      0|    ch = 0;
  236|      1|Return:
  237|      1|    *inptr = s;
  238|      1|    *outpos = p - dest;
  239|      1|    return ch;
  240|      0|InvalidStart:
  241|      0|    ch = 1;
  242|      0|    goto Return;
  243|      0|InvalidContinuation1:
  244|      0|    ch = 2;
  245|      0|    goto Return;
  246|      0|InvalidContinuation2:
  247|      0|    ch = 3;
  248|      0|    goto Return;
  249|      0|InvalidContinuation3:
  250|      0|    ch = 4;
  251|      0|    goto Return;
  252|      0|}
unicodeobject.c:ucs1lib_utf8_decode:
   26|      1|{
   27|      1|    Py_UCS4 ch;
   28|      1|    const char *s = *inptr;
   29|      1|    STRINGLIB_CHAR *p = dest + *outpos;
  ------------------
  |  |   11|      1|#define STRINGLIB_CHAR           Py_UCS1
  ------------------
   30|       |
   31|     30|    while (s < end) {
  ------------------
  |  Branch (31:12): [True: 30, False: 0]
  ------------------
   32|     30|        ch = (unsigned char)*s;
   33|       |
   34|     30|        if (ch < 0x80) {
  ------------------
  |  Branch (34:13): [True: 0, False: 30]
  ------------------
   35|       |            /* Fast path for runs of ASCII characters. Given that common UTF-8
   36|       |               input will consist of an overwhelming majority of ASCII
   37|       |               characters, we try to optimize for this case by checking
   38|       |               as many characters as a C 'size_t' can contain.
   39|       |               First, check if we can do an aligned read, as most CPUs have
   40|       |               a penalty for unaligned reads.
   41|       |            */
   42|      0|            if (_Py_IS_ALIGNED(s, ALIGNOF_SIZE_T)) {
  ------------------
  |  |  221|      0|#define _Py_IS_ALIGNED(p, a) (!((uintptr_t)(p) & (uintptr_t)((a) - 1)))
  |  |  ------------------
  |  |  |  Branch (221:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   43|       |                /* Help register allocation */
   44|      0|                const char *_s = s;
   45|      0|                STRINGLIB_CHAR *_p = p;
  ------------------
  |  |   11|      0|#define STRINGLIB_CHAR           Py_UCS1
  ------------------
   46|      0|                while (_s + SIZEOF_SIZE_T <= end) {
  ------------------
  |  | 1838|      0|#define SIZEOF_SIZE_T 8
  ------------------
  |  Branch (46:24): [True: 0, False: 0]
  ------------------
   47|       |                    /* Read a whole size_t at a time (either 4 or 8 bytes),
   48|       |                       and do a fast unrolled copy if it only contains ASCII
   49|       |                       characters. */
   50|      0|                    size_t value = *(const size_t *) _s;
   51|      0|                    if (value & ASCII_CHAR_MASK)
  ------------------
  |  |   12|      0|# define ASCII_CHAR_MASK 0x8080808080808080ULL
  ------------------
  |  Branch (51:25): [True: 0, False: 0]
  ------------------
   52|      0|                        break;
   53|      0|#if PY_LITTLE_ENDIAN
   54|      0|                    _p[0] = (STRINGLIB_CHAR)(value & 0xFFu);
   55|      0|                    _p[1] = (STRINGLIB_CHAR)((value >> 8) & 0xFFu);
   56|      0|                    _p[2] = (STRINGLIB_CHAR)((value >> 16) & 0xFFu);
   57|      0|                    _p[3] = (STRINGLIB_CHAR)((value >> 24) & 0xFFu);
   58|      0|# if SIZEOF_SIZE_T == 8
   59|      0|                    _p[4] = (STRINGLIB_CHAR)((value >> 32) & 0xFFu);
   60|      0|                    _p[5] = (STRINGLIB_CHAR)((value >> 40) & 0xFFu);
   61|      0|                    _p[6] = (STRINGLIB_CHAR)((value >> 48) & 0xFFu);
   62|      0|                    _p[7] = (STRINGLIB_CHAR)((value >> 56) & 0xFFu);
   63|      0|# endif
   64|       |#else
   65|       |# if SIZEOF_SIZE_T == 8
   66|       |                    _p[0] = (STRINGLIB_CHAR)((value >> 56) & 0xFFu);
   67|       |                    _p[1] = (STRINGLIB_CHAR)((value >> 48) & 0xFFu);
   68|       |                    _p[2] = (STRINGLIB_CHAR)((value >> 40) & 0xFFu);
   69|       |                    _p[3] = (STRINGLIB_CHAR)((value >> 32) & 0xFFu);
   70|       |                    _p[4] = (STRINGLIB_CHAR)((value >> 24) & 0xFFu);
   71|       |                    _p[5] = (STRINGLIB_CHAR)((value >> 16) & 0xFFu);
   72|       |                    _p[6] = (STRINGLIB_CHAR)((value >> 8) & 0xFFu);
   73|       |                    _p[7] = (STRINGLIB_CHAR)(value & 0xFFu);
   74|       |# else
   75|       |                    _p[0] = (STRINGLIB_CHAR)((value >> 24) & 0xFFu);
   76|       |                    _p[1] = (STRINGLIB_CHAR)((value >> 16) & 0xFFu);
   77|       |                    _p[2] = (STRINGLIB_CHAR)((value >> 8) & 0xFFu);
   78|       |                    _p[3] = (STRINGLIB_CHAR)(value & 0xFFu);
   79|       |# endif
   80|       |#endif
   81|      0|                    _s += SIZEOF_SIZE_T;
  ------------------
  |  | 1838|      0|#define SIZEOF_SIZE_T 8
  ------------------
   82|      0|                    _p += SIZEOF_SIZE_T;
  ------------------
  |  | 1838|      0|#define SIZEOF_SIZE_T 8
  ------------------
   83|      0|                }
   84|      0|                s = _s;
   85|      0|                p = _p;
   86|      0|                if (s == end)
  ------------------
  |  Branch (86:21): [True: 0, False: 0]
  ------------------
   87|      0|                    break;
   88|      0|                ch = (unsigned char)*s;
   89|      0|            }
   90|      0|            if (ch < 0x80) {
  ------------------
  |  Branch (90:17): [True: 0, False: 0]
  ------------------
   91|      0|                s++;
   92|      0|                *p++ = ch;
   93|      0|                continue;
   94|      0|            }
   95|      0|        }
   96|       |
   97|     30|        if (ch < 0xE0) {
  ------------------
  |  Branch (97:13): [True: 29, False: 1]
  ------------------
   98|       |            /* \xC2\x80-\xDF\xBF -- 0080-07FF */
   99|     29|            Py_UCS4 ch2;
  100|     29|            if (ch < 0xC2) {
  ------------------
  |  Branch (100:17): [True: 0, False: 29]
  ------------------
  101|       |                /* invalid sequence
  102|       |                \x80-\xBF -- continuation byte
  103|       |                \xC0-\xC1 -- fake 0000-007F */
  104|      0|                goto InvalidStart;
  105|      0|            }
  106|     29|            if (end - s < 2) {
  ------------------
  |  Branch (106:17): [True: 0, False: 29]
  ------------------
  107|       |                /* unexpected end of data: the caller will decide whether
  108|       |                   it's an error or not */
  109|      0|                break;
  110|      0|            }
  111|     29|            ch2 = (unsigned char)s[1];
  112|     29|            if (!IS_CONTINUATION_BYTE(ch2))
  ------------------
  |  |   20|     29|#define IS_CONTINUATION_BYTE(ch) ((ch) >= 0x80 && (ch) < 0xC0)
  |  |  ------------------
  |  |  |  Branch (20:35): [True: 29, False: 0]
  |  |  |  Branch (20:51): [True: 29, False: 0]
  |  |  ------------------
  ------------------
  113|       |                /* invalid continuation byte */
  114|      0|                goto InvalidContinuation1;
  115|     29|            ch = (ch << 6) + ch2 -
  116|     29|                 ((0xC0 << 6) + 0x80);
  117|     29|            assert ((ch > 0x007F) && (ch <= 0x07FF));
  ------------------
  |  Branch (117:13): [True: 29, False: 0]
  |  Branch (117:13): [True: 29, False: 0]
  ------------------
  118|     29|            s += 2;
  119|     29|            if (STRINGLIB_MAX_CHAR <= 0x007F ||
  ------------------
  |  |   10|     29|#define STRINGLIB_MAX_CHAR       0xFFu
  ------------------
  |  Branch (119:17): [Folded, False: 29]
  ------------------
  120|     29|                (STRINGLIB_MAX_CHAR < 0x07FF && ch > STRINGLIB_MAX_CHAR))
  ------------------
  |  |   10|     29|#define STRINGLIB_MAX_CHAR       0xFFu
  ------------------
                              (STRINGLIB_MAX_CHAR < 0x07FF && ch > STRINGLIB_MAX_CHAR))
  ------------------
  |  |   10|     29|#define STRINGLIB_MAX_CHAR       0xFFu
  ------------------
  |  Branch (120:18): [True: 29, Folded]
  |  Branch (120:49): [True: 0, False: 29]
  ------------------
  121|       |                /* Out-of-range */
  122|      0|                goto Return;
  123|     29|            *p++ = ch;
  124|     29|            continue;
  125|     29|        }
  126|       |
  127|      1|        if (ch < 0xF0) {
  ------------------
  |  Branch (127:13): [True: 1, False: 0]
  ------------------
  128|       |            /* \xE0\xA0\x80-\xEF\xBF\xBF -- 0800-FFFF */
  129|      1|            Py_UCS4 ch2, ch3;
  130|      1|            if (end - s < 3) {
  ------------------
  |  Branch (130:17): [True: 0, False: 1]
  ------------------
  131|       |                /* unexpected end of data: the caller will decide whether
  132|       |                   it's an error or not */
  133|      0|                if (end - s < 2)
  ------------------
  |  Branch (133:21): [True: 0, False: 0]
  ------------------
  134|      0|                    break;
  135|      0|                ch2 = (unsigned char)s[1];
  136|      0|                if (!IS_CONTINUATION_BYTE(ch2) ||
  ------------------
  |  |   20|      0|#define IS_CONTINUATION_BYTE(ch) ((ch) >= 0x80 && (ch) < 0xC0)
  |  |  ------------------
  |  |  |  Branch (20:35): [True: 0, False: 0]
  |  |  |  Branch (20:51): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  137|      0|                    (ch2 < 0xA0 ? ch == 0xE0 : ch == 0xED))
  ------------------
  |  Branch (137:21): [True: 0, False: 0]
  |  Branch (137:22): [True: 0, False: 0]
  ------------------
  138|       |                    /* for clarification see comments below */
  139|      0|                    goto InvalidContinuation1;
  140|      0|                break;
  141|      0|            }
  142|      1|            ch2 = (unsigned char)s[1];
  143|      1|            ch3 = (unsigned char)s[2];
  144|      1|            if (!IS_CONTINUATION_BYTE(ch2)) {
  ------------------
  |  |   20|      1|#define IS_CONTINUATION_BYTE(ch) ((ch) >= 0x80 && (ch) < 0xC0)
  |  |  ------------------
  |  |  |  Branch (20:35): [True: 1, False: 0]
  |  |  |  Branch (20:51): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  145|       |                /* invalid continuation byte */
  146|      0|                goto InvalidContinuation1;
  147|      0|            }
  148|      1|            if (ch == 0xE0) {
  ------------------
  |  Branch (148:17): [True: 0, False: 1]
  ------------------
  149|      0|                if (ch2 < 0xA0)
  ------------------
  |  Branch (149:21): [True: 0, False: 0]
  ------------------
  150|       |                    /* invalid sequence
  151|       |                       \xE0\x80\x80-\xE0\x9F\xBF -- fake 0000-0800 */
  152|      0|                    goto InvalidContinuation1;
  153|      1|            } else if (ch == 0xED && ch2 >= 0xA0) {
  ------------------
  |  Branch (153:24): [True: 0, False: 1]
  |  Branch (153:38): [True: 0, False: 0]
  ------------------
  154|       |                /* Decoding UTF-8 sequences in range \xED\xA0\x80-\xED\xBF\xBF
  155|       |                   will result in surrogates in range D800-DFFF. Surrogates are
  156|       |                   not valid UTF-8 so they are rejected.
  157|       |                   See https://www.unicode.org/versions/Unicode5.2.0/ch03.pdf
  158|       |                   (table 3-7) and http://www.rfc-editor.org/rfc/rfc3629.txt */
  159|      0|                goto InvalidContinuation1;
  160|      0|            }
  161|      1|            if (!IS_CONTINUATION_BYTE(ch3)) {
  ------------------
  |  |   20|      1|#define IS_CONTINUATION_BYTE(ch) ((ch) >= 0x80 && (ch) < 0xC0)
  |  |  ------------------
  |  |  |  Branch (20:35): [True: 1, False: 0]
  |  |  |  Branch (20:51): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  162|       |                /* invalid continuation byte */
  163|      0|                goto InvalidContinuation2;
  164|      0|            }
  165|      1|            ch = (ch << 12) + (ch2 << 6) + ch3 -
  166|      1|                 ((0xE0 << 12) + (0x80 << 6) + 0x80);
  167|      1|            assert ((ch > 0x07FF) && (ch <= 0xFFFF));
  ------------------
  |  Branch (167:13): [True: 1, False: 0]
  |  Branch (167:13): [True: 1, False: 0]
  ------------------
  168|      1|            s += 3;
  169|      1|            if (STRINGLIB_MAX_CHAR <= 0x07FF ||
  ------------------
  |  |   10|      1|#define STRINGLIB_MAX_CHAR       0xFFu
  ------------------
  |  Branch (169:17): [True: 1, Folded]
  ------------------
  170|      0|                (STRINGLIB_MAX_CHAR < 0xFFFF && ch > STRINGLIB_MAX_CHAR))
  ------------------
  |  |   10|      0|#define STRINGLIB_MAX_CHAR       0xFFu
  ------------------
                              (STRINGLIB_MAX_CHAR < 0xFFFF && ch > STRINGLIB_MAX_CHAR))
  ------------------
  |  |   10|      0|#define STRINGLIB_MAX_CHAR       0xFFu
  ------------------
  |  Branch (170:18): [True: 0, Folded]
  |  Branch (170:49): [True: 0, False: 0]
  ------------------
  171|       |                /* Out-of-range */
  172|      1|                goto Return;
  173|      0|            *p++ = ch;
  174|      0|            continue;
  175|      1|        }
  176|       |
  177|      0|        if (ch < 0xF5) {
  ------------------
  |  Branch (177:13): [True: 0, False: 0]
  ------------------
  178|       |            /* \xF0\x90\x80\x80-\xF4\x8F\xBF\xBF -- 10000-10FFFF */
  179|      0|            Py_UCS4 ch2, ch3, ch4;
  180|      0|            if (end - s < 4) {
  ------------------
  |  Branch (180:17): [True: 0, False: 0]
  ------------------
  181|       |                /* unexpected end of data: the caller will decide whether
  182|       |                   it's an error or not */
  183|      0|                if (end - s < 2)
  ------------------
  |  Branch (183:21): [True: 0, False: 0]
  ------------------
  184|      0|                    break;
  185|      0|                ch2 = (unsigned char)s[1];
  186|      0|                if (!IS_CONTINUATION_BYTE(ch2) ||
  ------------------
  |  |   20|      0|#define IS_CONTINUATION_BYTE(ch) ((ch) >= 0x80 && (ch) < 0xC0)
  |  |  ------------------
  |  |  |  Branch (20:35): [True: 0, False: 0]
  |  |  |  Branch (20:51): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  187|      0|                    (ch2 < 0x90 ? ch == 0xF0 : ch == 0xF4))
  ------------------
  |  Branch (187:21): [True: 0, False: 0]
  |  Branch (187:22): [True: 0, False: 0]
  ------------------
  188|       |                    /* for clarification see comments below */
  189|      0|                    goto InvalidContinuation1;
  190|      0|                if (end - s < 3)
  ------------------
  |  Branch (190:21): [True: 0, False: 0]
  ------------------
  191|      0|                    break;
  192|      0|                ch3 = (unsigned char)s[2];
  193|      0|                if (!IS_CONTINUATION_BYTE(ch3))
  ------------------
  |  |   20|      0|#define IS_CONTINUATION_BYTE(ch) ((ch) >= 0x80 && (ch) < 0xC0)
  |  |  ------------------
  |  |  |  Branch (20:35): [True: 0, False: 0]
  |  |  |  Branch (20:51): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  194|      0|                    goto InvalidContinuation2;
  195|      0|                break;
  196|      0|            }
  197|      0|            ch2 = (unsigned char)s[1];
  198|      0|            ch3 = (unsigned char)s[2];
  199|      0|            ch4 = (unsigned char)s[3];
  200|      0|            if (!IS_CONTINUATION_BYTE(ch2)) {
  ------------------
  |  |   20|      0|#define IS_CONTINUATION_BYTE(ch) ((ch) >= 0x80 && (ch) < 0xC0)
  |  |  ------------------
  |  |  |  Branch (20:35): [True: 0, False: 0]
  |  |  |  Branch (20:51): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  201|       |                /* invalid continuation byte */
  202|      0|                goto InvalidContinuation1;
  203|      0|            }
  204|      0|            if (ch == 0xF0) {
  ------------------
  |  Branch (204:17): [True: 0, False: 0]
  ------------------
  205|      0|                if (ch2 < 0x90)
  ------------------
  |  Branch (205:21): [True: 0, False: 0]
  ------------------
  206|       |                    /* invalid sequence
  207|       |                       \xF0\x80\x80\x80-\xF0\x8F\xBF\xBF -- fake 0000-FFFF */
  208|      0|                    goto InvalidContinuation1;
  209|      0|            } else if (ch == 0xF4 && ch2 >= 0x90) {
  ------------------
  |  Branch (209:24): [True: 0, False: 0]
  |  Branch (209:38): [True: 0, False: 0]
  ------------------
  210|       |                /* invalid sequence
  211|       |                   \xF4\x90\x80\x80- -- 110000- overflow */
  212|      0|                goto InvalidContinuation1;
  213|      0|            }
  214|      0|            if (!IS_CONTINUATION_BYTE(ch3)) {
  ------------------
  |  |   20|      0|#define IS_CONTINUATION_BYTE(ch) ((ch) >= 0x80 && (ch) < 0xC0)
  |  |  ------------------
  |  |  |  Branch (20:35): [True: 0, False: 0]
  |  |  |  Branch (20:51): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  215|       |                /* invalid continuation byte */
  216|      0|                goto InvalidContinuation2;
  217|      0|            }
  218|      0|            if (!IS_CONTINUATION_BYTE(ch4)) {
  ------------------
  |  |   20|      0|#define IS_CONTINUATION_BYTE(ch) ((ch) >= 0x80 && (ch) < 0xC0)
  |  |  ------------------
  |  |  |  Branch (20:35): [True: 0, False: 0]
  |  |  |  Branch (20:51): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  219|       |                /* invalid continuation byte */
  220|      0|                goto InvalidContinuation3;
  221|      0|            }
  222|      0|            ch = (ch << 18) + (ch2 << 12) + (ch3 << 6) + ch4 -
  223|      0|                 ((0xF0 << 18) + (0x80 << 12) + (0x80 << 6) + 0x80);
  224|      0|            assert ((ch > 0xFFFF) && (ch <= 0x10FFFF));
  ------------------
  |  Branch (224:13): [True: 0, False: 0]
  |  Branch (224:13): [True: 0, False: 0]
  ------------------
  225|      0|            s += 4;
  226|      0|            if (STRINGLIB_MAX_CHAR <= 0xFFFF ||
  ------------------
  |  |   10|      0|#define STRINGLIB_MAX_CHAR       0xFFu
  ------------------
  |  Branch (226:17): [True: 0, Folded]
  ------------------
  227|      0|                (STRINGLIB_MAX_CHAR < 0x10FFFF && ch > STRINGLIB_MAX_CHAR))
  ------------------
  |  |   10|      0|#define STRINGLIB_MAX_CHAR       0xFFu
  ------------------
                              (STRINGLIB_MAX_CHAR < 0x10FFFF && ch > STRINGLIB_MAX_CHAR))
  ------------------
  |  |   10|      0|#define STRINGLIB_MAX_CHAR       0xFFu
  ------------------
  |  Branch (227:18): [True: 0, Folded]
  |  Branch (227:51): [True: 0, False: 0]
  ------------------
  228|       |                /* Out-of-range */
  229|      0|                goto Return;
  230|      0|            *p++ = ch;
  231|      0|            continue;
  232|      0|        }
  233|      0|        goto InvalidStart;
  234|      0|    }
  235|      0|    ch = 0;
  236|      1|Return:
  237|      1|    *inptr = s;
  238|      1|    *outpos = p - dest;
  239|      1|    return ch;
  240|      0|InvalidStart:
  241|      0|    ch = 1;
  242|      0|    goto Return;
  243|      0|InvalidContinuation1:
  244|      0|    ch = 2;
  245|      0|    goto Return;
  246|      0|InvalidContinuation2:
  247|      0|    ch = 3;
  248|      0|    goto Return;
  249|      0|InvalidContinuation3:
  250|      0|    ch = 4;
  251|      0|    goto Return;
  252|      0|}
unicodeobject.c:ucs2lib_utf8_decode:
   26|      1|{
   27|      1|    Py_UCS4 ch;
   28|      1|    const char *s = *inptr;
   29|      1|    STRINGLIB_CHAR *p = dest + *outpos;
  ------------------
  |  |   11|      1|#define STRINGLIB_CHAR           Py_UCS2
  ------------------
   30|       |
   31|     98|    while (s < end) {
  ------------------
  |  Branch (31:12): [True: 97, False: 1]
  ------------------
   32|     97|        ch = (unsigned char)*s;
   33|       |
   34|     97|        if (ch < 0x80) {
  ------------------
  |  Branch (34:13): [True: 0, False: 97]
  ------------------
   35|       |            /* Fast path for runs of ASCII characters. Given that common UTF-8
   36|       |               input will consist of an overwhelming majority of ASCII
   37|       |               characters, we try to optimize for this case by checking
   38|       |               as many characters as a C 'size_t' can contain.
   39|       |               First, check if we can do an aligned read, as most CPUs have
   40|       |               a penalty for unaligned reads.
   41|       |            */
   42|      0|            if (_Py_IS_ALIGNED(s, ALIGNOF_SIZE_T)) {
  ------------------
  |  |  221|      0|#define _Py_IS_ALIGNED(p, a) (!((uintptr_t)(p) & (uintptr_t)((a) - 1)))
  |  |  ------------------
  |  |  |  Branch (221:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   43|       |                /* Help register allocation */
   44|      0|                const char *_s = s;
   45|      0|                STRINGLIB_CHAR *_p = p;
  ------------------
  |  |   11|      0|#define STRINGLIB_CHAR           Py_UCS2
  ------------------
   46|      0|                while (_s + SIZEOF_SIZE_T <= end) {
  ------------------
  |  | 1838|      0|#define SIZEOF_SIZE_T 8
  ------------------
  |  Branch (46:24): [True: 0, False: 0]
  ------------------
   47|       |                    /* Read a whole size_t at a time (either 4 or 8 bytes),
   48|       |                       and do a fast unrolled copy if it only contains ASCII
   49|       |                       characters. */
   50|      0|                    size_t value = *(const size_t *) _s;
   51|      0|                    if (value & ASCII_CHAR_MASK)
  ------------------
  |  |   12|      0|# define ASCII_CHAR_MASK 0x8080808080808080ULL
  ------------------
  |  Branch (51:25): [True: 0, False: 0]
  ------------------
   52|      0|                        break;
   53|      0|#if PY_LITTLE_ENDIAN
   54|      0|                    _p[0] = (STRINGLIB_CHAR)(value & 0xFFu);
   55|      0|                    _p[1] = (STRINGLIB_CHAR)((value >> 8) & 0xFFu);
   56|      0|                    _p[2] = (STRINGLIB_CHAR)((value >> 16) & 0xFFu);
   57|      0|                    _p[3] = (STRINGLIB_CHAR)((value >> 24) & 0xFFu);
   58|      0|# if SIZEOF_SIZE_T == 8
   59|      0|                    _p[4] = (STRINGLIB_CHAR)((value >> 32) & 0xFFu);
   60|      0|                    _p[5] = (STRINGLIB_CHAR)((value >> 40) & 0xFFu);
   61|      0|                    _p[6] = (STRINGLIB_CHAR)((value >> 48) & 0xFFu);
   62|      0|                    _p[7] = (STRINGLIB_CHAR)((value >> 56) & 0xFFu);
   63|      0|# endif
   64|       |#else
   65|       |# if SIZEOF_SIZE_T == 8
   66|       |                    _p[0] = (STRINGLIB_CHAR)((value >> 56) & 0xFFu);
   67|       |                    _p[1] = (STRINGLIB_CHAR)((value >> 48) & 0xFFu);
   68|       |                    _p[2] = (STRINGLIB_CHAR)((value >> 40) & 0xFFu);
   69|       |                    _p[3] = (STRINGLIB_CHAR)((value >> 32) & 0xFFu);
   70|       |                    _p[4] = (STRINGLIB_CHAR)((value >> 24) & 0xFFu);
   71|       |                    _p[5] = (STRINGLIB_CHAR)((value >> 16) & 0xFFu);
   72|       |                    _p[6] = (STRINGLIB_CHAR)((value >> 8) & 0xFFu);
   73|       |                    _p[7] = (STRINGLIB_CHAR)(value & 0xFFu);
   74|       |# else
   75|       |                    _p[0] = (STRINGLIB_CHAR)((value >> 24) & 0xFFu);
   76|       |                    _p[1] = (STRINGLIB_CHAR)((value >> 16) & 0xFFu);
   77|       |                    _p[2] = (STRINGLIB_CHAR)((value >> 8) & 0xFFu);
   78|       |                    _p[3] = (STRINGLIB_CHAR)(value & 0xFFu);
   79|       |# endif
   80|       |#endif
   81|      0|                    _s += SIZEOF_SIZE_T;
  ------------------
  |  | 1838|      0|#define SIZEOF_SIZE_T 8
  ------------------
   82|      0|                    _p += SIZEOF_SIZE_T;
  ------------------
  |  | 1838|      0|#define SIZEOF_SIZE_T 8
  ------------------
   83|      0|                }
   84|      0|                s = _s;
   85|      0|                p = _p;
   86|      0|                if (s == end)
  ------------------
  |  Branch (86:21): [True: 0, False: 0]
  ------------------
   87|      0|                    break;
   88|      0|                ch = (unsigned char)*s;
   89|      0|            }
   90|      0|            if (ch < 0x80) {
  ------------------
  |  Branch (90:17): [True: 0, False: 0]
  ------------------
   91|      0|                s++;
   92|      0|                *p++ = ch;
   93|      0|                continue;
   94|      0|            }
   95|      0|        }
   96|       |
   97|     97|        if (ch < 0xE0) {
  ------------------
  |  Branch (97:13): [True: 36, False: 61]
  ------------------
   98|       |            /* \xC2\x80-\xDF\xBF -- 0080-07FF */
   99|     36|            Py_UCS4 ch2;
  100|     36|            if (ch < 0xC2) {
  ------------------
  |  Branch (100:17): [True: 0, False: 36]
  ------------------
  101|       |                /* invalid sequence
  102|       |                \x80-\xBF -- continuation byte
  103|       |                \xC0-\xC1 -- fake 0000-007F */
  104|      0|                goto InvalidStart;
  105|      0|            }
  106|     36|            if (end - s < 2) {
  ------------------
  |  Branch (106:17): [True: 0, False: 36]
  ------------------
  107|       |                /* unexpected end of data: the caller will decide whether
  108|       |                   it's an error or not */
  109|      0|                break;
  110|      0|            }
  111|     36|            ch2 = (unsigned char)s[1];
  112|     36|            if (!IS_CONTINUATION_BYTE(ch2))
  ------------------
  |  |   20|     36|#define IS_CONTINUATION_BYTE(ch) ((ch) >= 0x80 && (ch) < 0xC0)
  |  |  ------------------
  |  |  |  Branch (20:35): [True: 36, False: 0]
  |  |  |  Branch (20:51): [True: 36, False: 0]
  |  |  ------------------
  ------------------
  113|       |                /* invalid continuation byte */
  114|      0|                goto InvalidContinuation1;
  115|     36|            ch = (ch << 6) + ch2 -
  116|     36|                 ((0xC0 << 6) + 0x80);
  117|     36|            assert ((ch > 0x007F) && (ch <= 0x07FF));
  ------------------
  |  Branch (117:13): [True: 36, False: 0]
  |  Branch (117:13): [True: 36, False: 0]
  ------------------
  118|     36|            s += 2;
  119|     36|            if (STRINGLIB_MAX_CHAR <= 0x007F ||
  ------------------
  |  |   10|     36|#define STRINGLIB_MAX_CHAR       0xFFFFu
  ------------------
  |  Branch (119:17): [Folded, False: 0]
  ------------------
  120|      0|                (STRINGLIB_MAX_CHAR < 0x07FF && ch > STRINGLIB_MAX_CHAR))
  ------------------
  |  |   10|      0|#define STRINGLIB_MAX_CHAR       0xFFFFu
  ------------------
                              (STRINGLIB_MAX_CHAR < 0x07FF && ch > STRINGLIB_MAX_CHAR))
  ------------------
  |  |   10|      0|#define STRINGLIB_MAX_CHAR       0xFFFFu
  ------------------
  |  Branch (120:18): [Folded, False: 0]
  |  Branch (120:49): [True: 0, False: 0]
  ------------------
  121|       |                /* Out-of-range */
  122|      0|                goto Return;
  123|     36|            *p++ = ch;
  124|     36|            continue;
  125|     36|        }
  126|       |
  127|     61|        if (ch < 0xF0) {
  ------------------
  |  Branch (127:13): [True: 61, False: 0]
  ------------------
  128|       |            /* \xE0\xA0\x80-\xEF\xBF\xBF -- 0800-FFFF */
  129|     61|            Py_UCS4 ch2, ch3;
  130|     61|            if (end - s < 3) {
  ------------------
  |  Branch (130:17): [True: 0, False: 61]
  ------------------
  131|       |                /* unexpected end of data: the caller will decide whether
  132|       |                   it's an error or not */
  133|      0|                if (end - s < 2)
  ------------------
  |  Branch (133:21): [True: 0, False: 0]
  ------------------
  134|      0|                    break;
  135|      0|                ch2 = (unsigned char)s[1];
  136|      0|                if (!IS_CONTINUATION_BYTE(ch2) ||
  ------------------
  |  |   20|      0|#define IS_CONTINUATION_BYTE(ch) ((ch) >= 0x80 && (ch) < 0xC0)
  |  |  ------------------
  |  |  |  Branch (20:35): [True: 0, False: 0]
  |  |  |  Branch (20:51): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  137|      0|                    (ch2 < 0xA0 ? ch == 0xE0 : ch == 0xED))
  ------------------
  |  Branch (137:21): [True: 0, False: 0]
  |  Branch (137:22): [True: 0, False: 0]
  ------------------
  138|       |                    /* for clarification see comments below */
  139|      0|                    goto InvalidContinuation1;
  140|      0|                break;
  141|      0|            }
  142|     61|            ch2 = (unsigned char)s[1];
  143|     61|            ch3 = (unsigned char)s[2];
  144|     61|            if (!IS_CONTINUATION_BYTE(ch2)) {
  ------------------
  |  |   20|     61|#define IS_CONTINUATION_BYTE(ch) ((ch) >= 0x80 && (ch) < 0xC0)
  |  |  ------------------
  |  |  |  Branch (20:35): [True: 61, False: 0]
  |  |  |  Branch (20:51): [True: 61, False: 0]
  |  |  ------------------
  ------------------
  145|       |                /* invalid continuation byte */
  146|      0|                goto InvalidContinuation1;
  147|      0|            }
  148|     61|            if (ch == 0xE0) {
  ------------------
  |  Branch (148:17): [True: 0, False: 61]
  ------------------
  149|      0|                if (ch2 < 0xA0)
  ------------------
  |  Branch (149:21): [True: 0, False: 0]
  ------------------
  150|       |                    /* invalid sequence
  151|       |                       \xE0\x80\x80-\xE0\x9F\xBF -- fake 0000-0800 */
  152|      0|                    goto InvalidContinuation1;
  153|     61|            } else if (ch == 0xED && ch2 >= 0xA0) {
  ------------------
  |  Branch (153:24): [True: 0, False: 61]
  |  Branch (153:38): [True: 0, False: 0]
  ------------------
  154|       |                /* Decoding UTF-8 sequences in range \xED\xA0\x80-\xED\xBF\xBF
  155|       |                   will result in surrogates in range D800-DFFF. Surrogates are
  156|       |                   not valid UTF-8 so they are rejected.
  157|       |                   See https://www.unicode.org/versions/Unicode5.2.0/ch03.pdf
  158|       |                   (table 3-7) and http://www.rfc-editor.org/rfc/rfc3629.txt */
  159|      0|                goto InvalidContinuation1;
  160|      0|            }
  161|     61|            if (!IS_CONTINUATION_BYTE(ch3)) {
  ------------------
  |  |   20|     61|#define IS_CONTINUATION_BYTE(ch) ((ch) >= 0x80 && (ch) < 0xC0)
  |  |  ------------------
  |  |  |  Branch (20:35): [True: 61, False: 0]
  |  |  |  Branch (20:51): [True: 61, False: 0]
  |  |  ------------------
  ------------------
  162|       |                /* invalid continuation byte */
  163|      0|                goto InvalidContinuation2;
  164|      0|            }
  165|     61|            ch = (ch << 12) + (ch2 << 6) + ch3 -
  166|     61|                 ((0xE0 << 12) + (0x80 << 6) + 0x80);
  167|     61|            assert ((ch > 0x07FF) && (ch <= 0xFFFF));
  ------------------
  |  Branch (167:13): [True: 61, False: 0]
  |  Branch (167:13): [True: 61, False: 0]
  ------------------
  168|     61|            s += 3;
  169|     61|            if (STRINGLIB_MAX_CHAR <= 0x07FF ||
  ------------------
  |  |   10|     61|#define STRINGLIB_MAX_CHAR       0xFFFFu
  ------------------
  |  Branch (169:17): [Folded, False: 0]
  ------------------
  170|      0|                (STRINGLIB_MAX_CHAR < 0xFFFF && ch > STRINGLIB_MAX_CHAR))
  ------------------
  |  |   10|      0|#define STRINGLIB_MAX_CHAR       0xFFFFu
  ------------------
                              (STRINGLIB_MAX_CHAR < 0xFFFF && ch > STRINGLIB_MAX_CHAR))
  ------------------
  |  |   10|      0|#define STRINGLIB_MAX_CHAR       0xFFFFu
  ------------------
  |  Branch (170:18): [Folded, False: 0]
  |  Branch (170:49): [True: 0, False: 0]
  ------------------
  171|       |                /* Out-of-range */
  172|      0|                goto Return;
  173|     61|            *p++ = ch;
  174|     61|            continue;
  175|     61|        }
  176|       |
  177|      0|        if (ch < 0xF5) {
  ------------------
  |  Branch (177:13): [True: 0, False: 0]
  ------------------
  178|       |            /* \xF0\x90\x80\x80-\xF4\x8F\xBF\xBF -- 10000-10FFFF */
  179|      0|            Py_UCS4 ch2, ch3, ch4;
  180|      0|            if (end - s < 4) {
  ------------------
  |  Branch (180:17): [True: 0, False: 0]
  ------------------
  181|       |                /* unexpected end of data: the caller will decide whether
  182|       |                   it's an error or not */
  183|      0|                if (end - s < 2)
  ------------------
  |  Branch (183:21): [True: 0, False: 0]
  ------------------
  184|      0|                    break;
  185|      0|                ch2 = (unsigned char)s[1];
  186|      0|                if (!IS_CONTINUATION_BYTE(ch2) ||
  ------------------
  |  |   20|      0|#define IS_CONTINUATION_BYTE(ch) ((ch) >= 0x80 && (ch) < 0xC0)
  |  |  ------------------
  |  |  |  Branch (20:35): [True: 0, False: 0]
  |  |  |  Branch (20:51): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  187|      0|                    (ch2 < 0x90 ? ch == 0xF0 : ch == 0xF4))
  ------------------
  |  Branch (187:21): [True: 0, False: 0]
  |  Branch (187:22): [True: 0, False: 0]
  ------------------
  188|       |                    /* for clarification see comments below */
  189|      0|                    goto InvalidContinuation1;
  190|      0|                if (end - s < 3)
  ------------------
  |  Branch (190:21): [True: 0, False: 0]
  ------------------
  191|      0|                    break;
  192|      0|                ch3 = (unsigned char)s[2];
  193|      0|                if (!IS_CONTINUATION_BYTE(ch3))
  ------------------
  |  |   20|      0|#define IS_CONTINUATION_BYTE(ch) ((ch) >= 0x80 && (ch) < 0xC0)
  |  |  ------------------
  |  |  |  Branch (20:35): [True: 0, False: 0]
  |  |  |  Branch (20:51): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  194|      0|                    goto InvalidContinuation2;
  195|      0|                break;
  196|      0|            }
  197|      0|            ch2 = (unsigned char)s[1];
  198|      0|            ch3 = (unsigned char)s[2];
  199|      0|            ch4 = (unsigned char)s[3];
  200|      0|            if (!IS_CONTINUATION_BYTE(ch2)) {
  ------------------
  |  |   20|      0|#define IS_CONTINUATION_BYTE(ch) ((ch) >= 0x80 && (ch) < 0xC0)
  |  |  ------------------
  |  |  |  Branch (20:35): [True: 0, False: 0]
  |  |  |  Branch (20:51): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  201|       |                /* invalid continuation byte */
  202|      0|                goto InvalidContinuation1;
  203|      0|            }
  204|      0|            if (ch == 0xF0) {
  ------------------
  |  Branch (204:17): [True: 0, False: 0]
  ------------------
  205|      0|                if (ch2 < 0x90)
  ------------------
  |  Branch (205:21): [True: 0, False: 0]
  ------------------
  206|       |                    /* invalid sequence
  207|       |                       \xF0\x80\x80\x80-\xF0\x8F\xBF\xBF -- fake 0000-FFFF */
  208|      0|                    goto InvalidContinuation1;
  209|      0|            } else if (ch == 0xF4 && ch2 >= 0x90) {
  ------------------
  |  Branch (209:24): [True: 0, False: 0]
  |  Branch (209:38): [True: 0, False: 0]
  ------------------
  210|       |                /* invalid sequence
  211|       |                   \xF4\x90\x80\x80- -- 110000- overflow */
  212|      0|                goto InvalidContinuation1;
  213|      0|            }
  214|      0|            if (!IS_CONTINUATION_BYTE(ch3)) {
  ------------------
  |  |   20|      0|#define IS_CONTINUATION_BYTE(ch) ((ch) >= 0x80 && (ch) < 0xC0)
  |  |  ------------------
  |  |  |  Branch (20:35): [True: 0, False: 0]
  |  |  |  Branch (20:51): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  215|       |                /* invalid continuation byte */
  216|      0|                goto InvalidContinuation2;
  217|      0|            }
  218|      0|            if (!IS_CONTINUATION_BYTE(ch4)) {
  ------------------
  |  |   20|      0|#define IS_CONTINUATION_BYTE(ch) ((ch) >= 0x80 && (ch) < 0xC0)
  |  |  ------------------
  |  |  |  Branch (20:35): [True: 0, False: 0]
  |  |  |  Branch (20:51): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  219|       |                /* invalid continuation byte */
  220|      0|                goto InvalidContinuation3;
  221|      0|            }
  222|      0|            ch = (ch << 18) + (ch2 << 12) + (ch3 << 6) + ch4 -
  223|      0|                 ((0xF0 << 18) + (0x80 << 12) + (0x80 << 6) + 0x80);
  224|      0|            assert ((ch > 0xFFFF) && (ch <= 0x10FFFF));
  ------------------
  |  Branch (224:13): [True: 0, False: 0]
  |  Branch (224:13): [True: 0, False: 0]
  ------------------
  225|      0|            s += 4;
  226|      0|            if (STRINGLIB_MAX_CHAR <= 0xFFFF ||
  ------------------
  |  |   10|      0|#define STRINGLIB_MAX_CHAR       0xFFFFu
  ------------------
  |  Branch (226:17): [True: 0, Folded]
  ------------------
  227|      0|                (STRINGLIB_MAX_CHAR < 0x10FFFF && ch > STRINGLIB_MAX_CHAR))
  ------------------
  |  |   10|      0|#define STRINGLIB_MAX_CHAR       0xFFFFu
  ------------------
                              (STRINGLIB_MAX_CHAR < 0x10FFFF && ch > STRINGLIB_MAX_CHAR))
  ------------------
  |  |   10|      0|#define STRINGLIB_MAX_CHAR       0xFFFFu
  ------------------
  |  Branch (227:18): [True: 0, Folded]
  |  Branch (227:51): [True: 0, False: 0]
  ------------------
  228|       |                /* Out-of-range */
  229|      0|                goto Return;
  230|      0|            *p++ = ch;
  231|      0|            continue;
  232|      0|        }
  233|      0|        goto InvalidStart;
  234|      0|    }
  235|      1|    ch = 0;
  236|      1|Return:
  237|      1|    *inptr = s;
  238|      1|    *outpos = p - dest;
  239|      1|    return ch;
  240|      0|InvalidStart:
  241|      0|    ch = 1;
  242|      0|    goto Return;
  243|      0|InvalidContinuation1:
  244|      0|    ch = 2;
  245|      0|    goto Return;
  246|      0|InvalidContinuation2:
  247|      0|    ch = 3;
  248|      0|    goto Return;
  249|      0|InvalidContinuation3:
  250|      0|    ch = 4;
  251|      0|    goto Return;
  252|      1|}
unicodeobject.c:ucs4lib_utf8_decode:
   26|      7|{
   27|      7|    Py_UCS4 ch;
   28|      7|    const char *s = *inptr;
   29|      7|    STRINGLIB_CHAR *p = dest + *outpos;
  ------------------
  |  |   11|      7|#define STRINGLIB_CHAR           Py_UCS4
  ------------------
   30|       |
   31|     50|    while (s < end) {
  ------------------
  |  Branch (31:12): [True: 43, False: 7]
  ------------------
   32|     43|        ch = (unsigned char)*s;
   33|       |
   34|     43|        if (ch < 0x80) {
  ------------------
  |  Branch (34:13): [True: 43, False: 0]
  ------------------
   35|       |            /* Fast path for runs of ASCII characters. Given that common UTF-8
   36|       |               input will consist of an overwhelming majority of ASCII
   37|       |               characters, we try to optimize for this case by checking
   38|       |               as many characters as a C 'size_t' can contain.
   39|       |               First, check if we can do an aligned read, as most CPUs have
   40|       |               a penalty for unaligned reads.
   41|       |            */
   42|     43|            if (_Py_IS_ALIGNED(s, ALIGNOF_SIZE_T)) {
  ------------------
  |  |  221|     43|#define _Py_IS_ALIGNED(p, a) (!((uintptr_t)(p) & (uintptr_t)((a) - 1)))
  |  |  ------------------
  |  |  |  Branch (221:30): [True: 5, False: 38]
  |  |  ------------------
  ------------------
   43|       |                /* Help register allocation */
   44|      5|                const char *_s = s;
   45|      5|                STRINGLIB_CHAR *_p = p;
  ------------------
  |  |   11|      5|#define STRINGLIB_CHAR           Py_UCS4
  ------------------
   46|     34|                while (_s + SIZEOF_SIZE_T <= end) {
  ------------------
  |  | 1838|     34|#define SIZEOF_SIZE_T 8
  ------------------
  |  Branch (46:24): [True: 29, False: 5]
  ------------------
   47|       |                    /* Read a whole size_t at a time (either 4 or 8 bytes),
   48|       |                       and do a fast unrolled copy if it only contains ASCII
   49|       |                       characters. */
   50|     29|                    size_t value = *(const size_t *) _s;
   51|     29|                    if (value & ASCII_CHAR_MASK)
  ------------------
  |  |   12|     29|# define ASCII_CHAR_MASK 0x8080808080808080ULL
  ------------------
  |  Branch (51:25): [True: 0, False: 29]
  ------------------
   52|      0|                        break;
   53|     29|#if PY_LITTLE_ENDIAN
   54|     29|                    _p[0] = (STRINGLIB_CHAR)(value & 0xFFu);
   55|     29|                    _p[1] = (STRINGLIB_CHAR)((value >> 8) & 0xFFu);
   56|     29|                    _p[2] = (STRINGLIB_CHAR)((value >> 16) & 0xFFu);
   57|     29|                    _p[3] = (STRINGLIB_CHAR)((value >> 24) & 0xFFu);
   58|     29|# if SIZEOF_SIZE_T == 8
   59|     29|                    _p[4] = (STRINGLIB_CHAR)((value >> 32) & 0xFFu);
   60|     29|                    _p[5] = (STRINGLIB_CHAR)((value >> 40) & 0xFFu);
   61|     29|                    _p[6] = (STRINGLIB_CHAR)((value >> 48) & 0xFFu);
   62|     29|                    _p[7] = (STRINGLIB_CHAR)((value >> 56) & 0xFFu);
   63|     29|# endif
   64|       |#else
   65|       |# if SIZEOF_SIZE_T == 8
   66|       |                    _p[0] = (STRINGLIB_CHAR)((value >> 56) & 0xFFu);
   67|       |                    _p[1] = (STRINGLIB_CHAR)((value >> 48) & 0xFFu);
   68|       |                    _p[2] = (STRINGLIB_CHAR)((value >> 40) & 0xFFu);
   69|       |                    _p[3] = (STRINGLIB_CHAR)((value >> 32) & 0xFFu);
   70|       |                    _p[4] = (STRINGLIB_CHAR)((value >> 24) & 0xFFu);
   71|       |                    _p[5] = (STRINGLIB_CHAR)((value >> 16) & 0xFFu);
   72|       |                    _p[6] = (STRINGLIB_CHAR)((value >> 8) & 0xFFu);
   73|       |                    _p[7] = (STRINGLIB_CHAR)(value & 0xFFu);
   74|       |# else
   75|       |                    _p[0] = (STRINGLIB_CHAR)((value >> 24) & 0xFFu);
   76|       |                    _p[1] = (STRINGLIB_CHAR)((value >> 16) & 0xFFu);
   77|       |                    _p[2] = (STRINGLIB_CHAR)((value >> 8) & 0xFFu);
   78|       |                    _p[3] = (STRINGLIB_CHAR)(value & 0xFFu);
   79|       |# endif
   80|       |#endif
   81|     29|                    _s += SIZEOF_SIZE_T;
  ------------------
  |  | 1838|     29|#define SIZEOF_SIZE_T 8
  ------------------
   82|     29|                    _p += SIZEOF_SIZE_T;
  ------------------
  |  | 1838|     29|#define SIZEOF_SIZE_T 8
  ------------------
   83|     29|                }
   84|      5|                s = _s;
   85|      5|                p = _p;
   86|      5|                if (s == end)
  ------------------
  |  Branch (86:21): [True: 0, False: 5]
  ------------------
   87|      0|                    break;
   88|      5|                ch = (unsigned char)*s;
   89|      5|            }
   90|     43|            if (ch < 0x80) {
  ------------------
  |  Branch (90:17): [True: 43, False: 0]
  ------------------
   91|     43|                s++;
   92|     43|                *p++ = ch;
   93|     43|                continue;
   94|     43|            }
   95|     43|        }
   96|       |
   97|      0|        if (ch < 0xE0) {
  ------------------
  |  Branch (97:13): [True: 0, False: 0]
  ------------------
   98|       |            /* \xC2\x80-\xDF\xBF -- 0080-07FF */
   99|      0|            Py_UCS4 ch2;
  100|      0|            if (ch < 0xC2) {
  ------------------
  |  Branch (100:17): [True: 0, False: 0]
  ------------------
  101|       |                /* invalid sequence
  102|       |                \x80-\xBF -- continuation byte
  103|       |                \xC0-\xC1 -- fake 0000-007F */
  104|      0|                goto InvalidStart;
  105|      0|            }
  106|      0|            if (end - s < 2) {
  ------------------
  |  Branch (106:17): [True: 0, False: 0]
  ------------------
  107|       |                /* unexpected end of data: the caller will decide whether
  108|       |                   it's an error or not */
  109|      0|                break;
  110|      0|            }
  111|      0|            ch2 = (unsigned char)s[1];
  112|      0|            if (!IS_CONTINUATION_BYTE(ch2))
  ------------------
  |  |   20|      0|#define IS_CONTINUATION_BYTE(ch) ((ch) >= 0x80 && (ch) < 0xC0)
  |  |  ------------------
  |  |  |  Branch (20:35): [True: 0, False: 0]
  |  |  |  Branch (20:51): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  113|       |                /* invalid continuation byte */
  114|      0|                goto InvalidContinuation1;
  115|      0|            ch = (ch << 6) + ch2 -
  116|      0|                 ((0xC0 << 6) + 0x80);
  117|      0|            assert ((ch > 0x007F) && (ch <= 0x07FF));
  ------------------
  |  Branch (117:13): [True: 0, False: 0]
  |  Branch (117:13): [True: 0, False: 0]
  ------------------
  118|      0|            s += 2;
  119|      0|            if (STRINGLIB_MAX_CHAR <= 0x007F ||
  ------------------
  |  |   10|      0|#define STRINGLIB_MAX_CHAR       0x10FFFFu
  ------------------
  |  Branch (119:17): [Folded, False: 0]
  ------------------
  120|      0|                (STRINGLIB_MAX_CHAR < 0x07FF && ch > STRINGLIB_MAX_CHAR))
  ------------------
  |  |   10|      0|#define STRINGLIB_MAX_CHAR       0x10FFFFu
  ------------------
                              (STRINGLIB_MAX_CHAR < 0x07FF && ch > STRINGLIB_MAX_CHAR))
  ------------------
  |  |   10|      0|#define STRINGLIB_MAX_CHAR       0x10FFFFu
  ------------------
  |  Branch (120:18): [Folded, False: 0]
  |  Branch (120:49): [True: 0, False: 0]
  ------------------
  121|       |                /* Out-of-range */
  122|      0|                goto Return;
  123|      0|            *p++ = ch;
  124|      0|            continue;
  125|      0|        }
  126|       |
  127|      0|        if (ch < 0xF0) {
  ------------------
  |  Branch (127:13): [True: 0, False: 0]
  ------------------
  128|       |            /* \xE0\xA0\x80-\xEF\xBF\xBF -- 0800-FFFF */
  129|      0|            Py_UCS4 ch2, ch3;
  130|      0|            if (end - s < 3) {
  ------------------
  |  Branch (130:17): [True: 0, False: 0]
  ------------------
  131|       |                /* unexpected end of data: the caller will decide whether
  132|       |                   it's an error or not */
  133|      0|                if (end - s < 2)
  ------------------
  |  Branch (133:21): [True: 0, False: 0]
  ------------------
  134|      0|                    break;
  135|      0|                ch2 = (unsigned char)s[1];
  136|      0|                if (!IS_CONTINUATION_BYTE(ch2) ||
  ------------------
  |  |   20|      0|#define IS_CONTINUATION_BYTE(ch) ((ch) >= 0x80 && (ch) < 0xC0)
  |  |  ------------------
  |  |  |  Branch (20:35): [True: 0, False: 0]
  |  |  |  Branch (20:51): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  137|      0|                    (ch2 < 0xA0 ? ch == 0xE0 : ch == 0xED))
  ------------------
  |  Branch (137:21): [True: 0, False: 0]
  |  Branch (137:22): [True: 0, False: 0]
  ------------------
  138|       |                    /* for clarification see comments below */
  139|      0|                    goto InvalidContinuation1;
  140|      0|                break;
  141|      0|            }
  142|      0|            ch2 = (unsigned char)s[1];
  143|      0|            ch3 = (unsigned char)s[2];
  144|      0|            if (!IS_CONTINUATION_BYTE(ch2)) {
  ------------------
  |  |   20|      0|#define IS_CONTINUATION_BYTE(ch) ((ch) >= 0x80 && (ch) < 0xC0)
  |  |  ------------------
  |  |  |  Branch (20:35): [True: 0, False: 0]
  |  |  |  Branch (20:51): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  145|       |                /* invalid continuation byte */
  146|      0|                goto InvalidContinuation1;
  147|      0|            }
  148|      0|            if (ch == 0xE0) {
  ------------------
  |  Branch (148:17): [True: 0, False: 0]
  ------------------
  149|      0|                if (ch2 < 0xA0)
  ------------------
  |  Branch (149:21): [True: 0, False: 0]
  ------------------
  150|       |                    /* invalid sequence
  151|       |                       \xE0\x80\x80-\xE0\x9F\xBF -- fake 0000-0800 */
  152|      0|                    goto InvalidContinuation1;
  153|      0|            } else if (ch == 0xED && ch2 >= 0xA0) {
  ------------------
  |  Branch (153:24): [True: 0, False: 0]
  |  Branch (153:38): [True: 0, False: 0]
  ------------------
  154|       |                /* Decoding UTF-8 sequences in range \xED\xA0\x80-\xED\xBF\xBF
  155|       |                   will result in surrogates in range D800-DFFF. Surrogates are
  156|       |                   not valid UTF-8 so they are rejected.
  157|       |                   See https://www.unicode.org/versions/Unicode5.2.0/ch03.pdf
  158|       |                   (table 3-7) and http://www.rfc-editor.org/rfc/rfc3629.txt */
  159|      0|                goto InvalidContinuation1;
  160|      0|            }
  161|      0|            if (!IS_CONTINUATION_BYTE(ch3)) {
  ------------------
  |  |   20|      0|#define IS_CONTINUATION_BYTE(ch) ((ch) >= 0x80 && (ch) < 0xC0)
  |  |  ------------------
  |  |  |  Branch (20:35): [True: 0, False: 0]
  |  |  |  Branch (20:51): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  162|       |                /* invalid continuation byte */
  163|      0|                goto InvalidContinuation2;
  164|      0|            }
  165|      0|            ch = (ch << 12) + (ch2 << 6) + ch3 -
  166|      0|                 ((0xE0 << 12) + (0x80 << 6) + 0x80);
  167|      0|            assert ((ch > 0x07FF) && (ch <= 0xFFFF));
  ------------------
  |  Branch (167:13): [True: 0, False: 0]
  |  Branch (167:13): [True: 0, False: 0]
  ------------------
  168|      0|            s += 3;
  169|      0|            if (STRINGLIB_MAX_CHAR <= 0x07FF ||
  ------------------
  |  |   10|      0|#define STRINGLIB_MAX_CHAR       0x10FFFFu
  ------------------
  |  Branch (169:17): [Folded, False: 0]
  ------------------
  170|      0|                (STRINGLIB_MAX_CHAR < 0xFFFF && ch > STRINGLIB_MAX_CHAR))
  ------------------
  |  |   10|      0|#define STRINGLIB_MAX_CHAR       0x10FFFFu
  ------------------
                              (STRINGLIB_MAX_CHAR < 0xFFFF && ch > STRINGLIB_MAX_CHAR))
  ------------------
  |  |   10|      0|#define STRINGLIB_MAX_CHAR       0x10FFFFu
  ------------------
  |  Branch (170:18): [Folded, False: 0]
  |  Branch (170:49): [True: 0, False: 0]
  ------------------
  171|       |                /* Out-of-range */
  172|      0|                goto Return;
  173|      0|            *p++ = ch;
  174|      0|            continue;
  175|      0|        }
  176|       |
  177|      0|        if (ch < 0xF5) {
  ------------------
  |  Branch (177:13): [True: 0, False: 0]
  ------------------
  178|       |            /* \xF0\x90\x80\x80-\xF4\x8F\xBF\xBF -- 10000-10FFFF */
  179|      0|            Py_UCS4 ch2, ch3, ch4;
  180|      0|            if (end - s < 4) {
  ------------------
  |  Branch (180:17): [True: 0, False: 0]
  ------------------
  181|       |                /* unexpected end of data: the caller will decide whether
  182|       |                   it's an error or not */
  183|      0|                if (end - s < 2)
  ------------------
  |  Branch (183:21): [True: 0, False: 0]
  ------------------
  184|      0|                    break;
  185|      0|                ch2 = (unsigned char)s[1];
  186|      0|                if (!IS_CONTINUATION_BYTE(ch2) ||
  ------------------
  |  |   20|      0|#define IS_CONTINUATION_BYTE(ch) ((ch) >= 0x80 && (ch) < 0xC0)
  |  |  ------------------
  |  |  |  Branch (20:35): [True: 0, False: 0]
  |  |  |  Branch (20:51): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  187|      0|                    (ch2 < 0x90 ? ch == 0xF0 : ch == 0xF4))
  ------------------
  |  Branch (187:21): [True: 0, False: 0]
  |  Branch (187:22): [True: 0, False: 0]
  ------------------
  188|       |                    /* for clarification see comments below */
  189|      0|                    goto InvalidContinuation1;
  190|      0|                if (end - s < 3)
  ------------------
  |  Branch (190:21): [True: 0, False: 0]
  ------------------
  191|      0|                    break;
  192|      0|                ch3 = (unsigned char)s[2];
  193|      0|                if (!IS_CONTINUATION_BYTE(ch3))
  ------------------
  |  |   20|      0|#define IS_CONTINUATION_BYTE(ch) ((ch) >= 0x80 && (ch) < 0xC0)
  |  |  ------------------
  |  |  |  Branch (20:35): [True: 0, False: 0]
  |  |  |  Branch (20:51): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  194|      0|                    goto InvalidContinuation2;
  195|      0|                break;
  196|      0|            }
  197|      0|            ch2 = (unsigned char)s[1];
  198|      0|            ch3 = (unsigned char)s[2];
  199|      0|            ch4 = (unsigned char)s[3];
  200|      0|            if (!IS_CONTINUATION_BYTE(ch2)) {
  ------------------
  |  |   20|      0|#define IS_CONTINUATION_BYTE(ch) ((ch) >= 0x80 && (ch) < 0xC0)
  |  |  ------------------
  |  |  |  Branch (20:35): [True: 0, False: 0]
  |  |  |  Branch (20:51): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  201|       |                /* invalid continuation byte */
  202|      0|                goto InvalidContinuation1;
  203|      0|            }
  204|      0|            if (ch == 0xF0) {
  ------------------
  |  Branch (204:17): [True: 0, False: 0]
  ------------------
  205|      0|                if (ch2 < 0x90)
  ------------------
  |  Branch (205:21): [True: 0, False: 0]
  ------------------
  206|       |                    /* invalid sequence
  207|       |                       \xF0\x80\x80\x80-\xF0\x8F\xBF\xBF -- fake 0000-FFFF */
  208|      0|                    goto InvalidContinuation1;
  209|      0|            } else if (ch == 0xF4 && ch2 >= 0x90) {
  ------------------
  |  Branch (209:24): [True: 0, False: 0]
  |  Branch (209:38): [True: 0, False: 0]
  ------------------
  210|       |                /* invalid sequence
  211|       |                   \xF4\x90\x80\x80- -- 110000- overflow */
  212|      0|                goto InvalidContinuation1;
  213|      0|            }
  214|      0|            if (!IS_CONTINUATION_BYTE(ch3)) {
  ------------------
  |  |   20|      0|#define IS_CONTINUATION_BYTE(ch) ((ch) >= 0x80 && (ch) < 0xC0)
  |  |  ------------------
  |  |  |  Branch (20:35): [True: 0, False: 0]
  |  |  |  Branch (20:51): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  215|       |                /* invalid continuation byte */
  216|      0|                goto InvalidContinuation2;
  217|      0|            }
  218|      0|            if (!IS_CONTINUATION_BYTE(ch4)) {
  ------------------
  |  |   20|      0|#define IS_CONTINUATION_BYTE(ch) ((ch) >= 0x80 && (ch) < 0xC0)
  |  |  ------------------
  |  |  |  Branch (20:35): [True: 0, False: 0]
  |  |  |  Branch (20:51): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  219|       |                /* invalid continuation byte */
  220|      0|                goto InvalidContinuation3;
  221|      0|            }
  222|      0|            ch = (ch << 18) + (ch2 << 12) + (ch3 << 6) + ch4 -
  223|      0|                 ((0xF0 << 18) + (0x80 << 12) + (0x80 << 6) + 0x80);
  224|      0|            assert ((ch > 0xFFFF) && (ch <= 0x10FFFF));
  ------------------
  |  Branch (224:13): [True: 0, False: 0]
  |  Branch (224:13): [True: 0, False: 0]
  ------------------
  225|      0|            s += 4;
  226|      0|            if (STRINGLIB_MAX_CHAR <= 0xFFFF ||
  ------------------
  |  |   10|      0|#define STRINGLIB_MAX_CHAR       0x10FFFFu
  ------------------
  |  Branch (226:17): [Folded, False: 0]
  ------------------
  227|      0|                (STRINGLIB_MAX_CHAR < 0x10FFFF && ch > STRINGLIB_MAX_CHAR))
  ------------------
  |  |   10|      0|#define STRINGLIB_MAX_CHAR       0x10FFFFu
  ------------------
                              (STRINGLIB_MAX_CHAR < 0x10FFFF && ch > STRINGLIB_MAX_CHAR))
  ------------------
  |  |   10|      0|#define STRINGLIB_MAX_CHAR       0x10FFFFu
  ------------------
  |  Branch (227:18): [Folded, False: 0]
  |  Branch (227:51): [True: 0, False: 0]
  ------------------
  228|       |                /* Out-of-range */
  229|      0|                goto Return;
  230|      0|            *p++ = ch;
  231|      0|            continue;
  232|      0|        }
  233|      0|        goto InvalidStart;
  234|      0|    }
  235|      7|    ch = 0;
  236|      7|Return:
  237|      7|    *inptr = s;
  238|      7|    *outpos = p - dest;
  239|      7|    return ch;
  240|      0|InvalidStart:
  241|      0|    ch = 1;
  242|      0|    goto Return;
  243|      0|InvalidContinuation1:
  244|      0|    ch = 2;
  245|      0|    goto Return;
  246|      0|InvalidContinuation2:
  247|      0|    ch = 3;
  248|      0|    goto Return;
  249|      0|InvalidContinuation3:
  250|      0|    ch = 4;
  251|      0|    goto Return;
  252|      7|}

dictobject.c:unicode_eq:
    8|  1.35k|{
    9|  1.35k|    Py_ssize_t len = PyUnicode_GET_LENGTH(str1);
  ------------------
  |  |  299|  1.35k|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  1.35k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.35k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   10|  1.35k|    if (PyUnicode_GET_LENGTH(str2) != len) {
  ------------------
  |  |  299|  1.35k|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  1.35k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.35k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (10:9): [True: 0, False: 1.35k]
  ------------------
   11|      0|        return 0;
   12|      0|    }
   13|       |
   14|  1.35k|    int kind = PyUnicode_KIND(str1);
  ------------------
  |  |  258|  1.35k|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|  2.70k|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 1.35k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   15|  2.70k|    if (PyUnicode_KIND(str2) != kind) {
  ------------------
  |  |  258|  1.35k|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|  2.70k|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 1.35k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (15:9): [True: 0, False: 1.35k]
  ------------------
   16|      0|        return 0;
   17|      0|    }
   18|       |
   19|  1.35k|    const void *data1 = PyUnicode_DATA(str1);
  ------------------
  |  |  284|  1.35k|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  1.35k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.35k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   20|  1.35k|    const void *data2 = PyUnicode_DATA(str2);
  ------------------
  |  |  284|  1.35k|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  1.35k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.35k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   21|  1.35k|    return (memcmp(data1, data2, len * kind) == 0);
   22|  1.35k|}
setobject.c:unicode_eq:
    8|      1|{
    9|      1|    Py_ssize_t len = PyUnicode_GET_LENGTH(str1);
  ------------------
  |  |  299|      1|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   10|      1|    if (PyUnicode_GET_LENGTH(str2) != len) {
  ------------------
  |  |  299|      1|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (10:9): [True: 0, False: 1]
  ------------------
   11|      0|        return 0;
   12|      0|    }
   13|       |
   14|      1|    int kind = PyUnicode_KIND(str1);
  ------------------
  |  |  258|      1|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|      2|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   15|      2|    if (PyUnicode_KIND(str2) != kind) {
  ------------------
  |  |  258|      1|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|      2|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (15:9): [True: 0, False: 1]
  ------------------
   16|      0|        return 0;
   17|      0|    }
   18|       |
   19|      1|    const void *data1 = PyUnicode_DATA(str1);
  ------------------
  |  |  284|      1|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   20|      1|    const void *data2 = PyUnicode_DATA(str2);
  ------------------
  |  |  284|      1|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   21|      1|    return (memcmp(data1, data2, len * kind) == 0);
   22|      1|}
unicodeobject.c:unicode_eq:
    8|  4.55k|{
    9|  4.55k|    Py_ssize_t len = PyUnicode_GET_LENGTH(str1);
  ------------------
  |  |  299|  4.55k|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  4.55k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  4.55k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   10|  4.55k|    if (PyUnicode_GET_LENGTH(str2) != len) {
  ------------------
  |  |  299|  4.55k|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  4.55k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  4.55k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (10:9): [True: 1.20k, False: 3.35k]
  ------------------
   11|  1.20k|        return 0;
   12|  1.20k|    }
   13|       |
   14|  3.35k|    int kind = PyUnicode_KIND(str1);
  ------------------
  |  |  258|  3.35k|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|  6.71k|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 3.35k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   15|  6.71k|    if (PyUnicode_KIND(str2) != kind) {
  ------------------
  |  |  258|  3.35k|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|  6.71k|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 3.35k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (15:9): [True: 0, False: 3.35k]
  ------------------
   16|      0|        return 0;
   17|      0|    }
   18|       |
   19|  3.35k|    const void *data1 = PyUnicode_DATA(str1);
  ------------------
  |  |  284|  3.35k|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  3.35k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  3.35k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   20|  3.35k|    const void *data2 = PyUnicode_DATA(str2);
  ------------------
  |  |  284|  3.35k|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  3.35k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  3.35k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   21|  3.35k|    return (memcmp(data1, data2, len * kind) == 0);
   22|  3.35k|}

unicodeobject.c:ucs1lib_find_char:
   51|    127|{
   52|    127|    const STRINGLIB_CHAR *p, *e;
   53|       |
   54|    127|    p = s;
   55|    127|    e = s + n;
   56|    127|    if (n > MEMCHR_CUT_OFF) {
  ------------------
  |  |   44|    127|#  define MEMCHR_CUT_OFF 15
  ------------------
  |  Branch (56:9): [True: 11, False: 116]
  ------------------
   57|     11|#ifdef STRINGLIB_FAST_MEMCHR
   58|     11|        p = STRINGLIB_FAST_MEMCHR(s, ch, n);
  ------------------
  |  |   23|     11|#define STRINGLIB_FAST_MEMCHR    memchr
  ------------------
   59|     11|        if (p != NULL)
  ------------------
  |  Branch (59:13): [True: 5, False: 6]
  ------------------
   60|      5|            return (p - s);
   61|      6|        return -1;
   62|       |#else
   63|       |        /* use memchr if we can choose a needle without too many likely
   64|       |           false positives */
   65|       |        const STRINGLIB_CHAR *s1, *e1;
   66|       |        unsigned char needle = ch & 0xff;
   67|       |        /* If looking for a multiple of 256, we'd have too
   68|       |           many false positives looking for the '\0' byte in UCS2
   69|       |           and UCS4 representations. */
   70|       |        if (needle != 0) {
   71|       |            do {
   72|       |                const void *candidate = memchr(p, needle,
   73|       |                                               (e - p) * sizeof(STRINGLIB_CHAR));
   74|       |                if (candidate == NULL)
   75|       |                    return -1;
   76|       |                s1 = p;
   77|       |                p = (const STRINGLIB_CHAR *)
   78|       |                        _Py_ALIGN_DOWN(candidate, sizeof(STRINGLIB_CHAR));
   79|       |                if (*p == ch)
   80|       |                    return (p - s);
   81|       |                /* False positive */
   82|       |                p++;
   83|       |                if (p - s1 > MEMCHR_CUT_OFF)
   84|       |                    continue;
   85|       |                if (e - p <= MEMCHR_CUT_OFF)
   86|       |                    break;
   87|       |                e1 = p + MEMCHR_CUT_OFF;
   88|       |                while (p != e1) {
   89|       |                    if (*p == ch)
   90|       |                        return (p - s);
   91|       |                    p++;
   92|       |                }
   93|       |            }
   94|       |            while (e - p > MEMCHR_CUT_OFF);
   95|       |        }
   96|       |#endif
   97|     11|    }
   98|    672|    while (p < e) {
  ------------------
  |  Branch (98:12): [True: 561, False: 111]
  ------------------
   99|    561|        if (*p == ch)
  ------------------
  |  Branch (99:13): [True: 5, False: 556]
  ------------------
  100|      5|            return (p - s);
  101|    556|        p++;
  102|    556|    }
  103|    111|    return -1;
  104|    116|}
unicodeobject.c:ucs1lib_rfind_char:
  117|     13|{
  118|     13|    const STRINGLIB_CHAR *p;
  119|     13|#ifdef HAVE_MEMRCHR
  120|       |    /* memrchr() is a GNU extension, available since glibc 2.1.91.  it
  121|       |       doesn't seem as optimized as memchr(), but is still quite
  122|       |       faster than our hand-written loop below. There is no wmemrchr
  123|       |       for 4-byte chars. */
  124|       |
  125|     13|    if (n > MEMRCHR_CUT_OFF) {
  ------------------
  |  |  109|     13|#  define MEMRCHR_CUT_OFF 15
  ------------------
  |  Branch (125:9): [True: 7, False: 6]
  ------------------
  126|      7|#if STRINGLIB_SIZEOF_CHAR == 1
  127|      7|        p = memrchr(s, ch, n);
  128|      7|        if (p != NULL)
  ------------------
  |  Branch (128:13): [True: 7, False: 0]
  ------------------
  129|      7|            return (p - s);
  130|      0|        return -1;
  131|       |#else
  132|       |        /* use memrchr if we can choose a needle without too many likely
  133|       |           false positives */
  134|       |        const STRINGLIB_CHAR *s1;
  135|       |        Py_ssize_t n1;
  136|       |        unsigned char needle = ch & 0xff;
  137|       |        /* If looking for a multiple of 256, we'd have too
  138|       |           many false positives looking for the '\0' byte in UCS2
  139|       |           and UCS4 representations. */
  140|       |        if (needle != 0) {
  141|       |            do {
  142|       |                void *candidate = memrchr(s, needle,
  143|       |                                          n * sizeof(STRINGLIB_CHAR));
  144|       |                if (candidate == NULL)
  145|       |                    return -1;
  146|       |                n1 = n;
  147|       |                p = (const STRINGLIB_CHAR *)
  148|       |                        _Py_ALIGN_DOWN(candidate, sizeof(STRINGLIB_CHAR));
  149|       |                n = p - s;
  150|       |                if (*p == ch)
  151|       |                    return n;
  152|       |                /* False positive */
  153|       |                if (n1 - n > MEMRCHR_CUT_OFF)
  154|       |                    continue;
  155|       |                if (n <= MEMRCHR_CUT_OFF)
  156|       |                    break;
  157|       |                s1 = p - MEMRCHR_CUT_OFF;
  158|       |                while (p > s1) {
  159|       |                    p--;
  160|       |                    if (*p == ch)
  161|       |                        return (p - s);
  162|       |                }
  163|       |                n = p - s;
  164|       |            }
  165|       |            while (n > MEMRCHR_CUT_OFF);
  166|       |        }
  167|       |#endif
  168|      7|    }
  169|      6|#endif  /* HAVE_MEMRCHR */
  170|      6|    p = s + n;
  171|     48|    while (p > s) {
  ------------------
  |  Branch (171:12): [True: 44, False: 4]
  ------------------
  172|     44|        p--;
  173|     44|        if (*p == ch)
  ------------------
  |  Branch (173:13): [True: 2, False: 42]
  ------------------
  174|      2|            return (p - s);
  175|     44|    }
  176|      4|    return -1;
  177|      6|}
unicodeobject.c:asciilib_fastsearch:
  776|     60|{
  777|     60|    if (n < m || (mode == FAST_COUNT && maxcount == 0)) {
  ------------------
  |  |   24|    120|#define FAST_COUNT 0
  ------------------
  |  Branch (777:9): [True: 0, False: 60]
  |  Branch (777:19): [True: 0, False: 60]
  |  Branch (777:41): [True: 0, False: 0]
  ------------------
  778|      0|        return -1;
  779|      0|    }
  780|       |
  781|       |    /* look for special cases */
  782|     60|    if (m <= 1) {
  ------------------
  |  Branch (782:9): [True: 60, False: 0]
  ------------------
  783|     60|        if (m <= 0) {
  ------------------
  |  Branch (783:13): [True: 0, False: 60]
  ------------------
  784|      0|            return -1;
  785|      0|        }
  786|       |        /* use special case for 1-character strings */
  787|     60|        if (mode == FAST_SEARCH)
  ------------------
  |  |   25|     60|#define FAST_SEARCH 1
  ------------------
  |  Branch (787:13): [True: 0, False: 60]
  ------------------
  788|      0|            return STRINGLIB(find_char)(s, n, p[0]);
  ------------------
  |  |    7|      0|#define STRINGLIB(F)             asciilib_##F
  ------------------
  789|     60|        else if (mode == FAST_RSEARCH)
  ------------------
  |  |   26|     60|#define FAST_RSEARCH 2
  ------------------
  |  Branch (789:18): [True: 60, False: 0]
  ------------------
  790|     60|            return STRINGLIB(rfind_char)(s, n, p[0]);
  ------------------
  |  |    7|     60|#define STRINGLIB(F)             asciilib_##F
  ------------------
  791|      0|        else {
  792|      0|            if (maxcount == PY_SSIZE_T_MAX) {
  ------------------
  |  |  137|      0|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (792:17): [True: 0, False: 0]
  ------------------
  793|      0|                return STRINGLIB(count_char_no_maxcount)(s, n, p[0]);
  ------------------
  |  |    7|      0|#define STRINGLIB(F)             asciilib_##F
  ------------------
  794|      0|            }
  795|      0|            return STRINGLIB(count_char)(s, n, p[0], maxcount);
  ------------------
  |  |    7|      0|#define STRINGLIB(F)             asciilib_##F
  ------------------
  796|      0|        }
  797|     60|    }
  798|       |
  799|      0|    if (mode != FAST_RSEARCH) {
  ------------------
  |  |   26|      0|#define FAST_RSEARCH 2
  ------------------
  |  Branch (799:9): [True: 0, False: 0]
  ------------------
  800|      0|        if (n < 2500 || (m < 100 && n < 30000) || m < 6) {
  ------------------
  |  Branch (800:13): [True: 0, False: 0]
  |  Branch (800:26): [True: 0, False: 0]
  |  Branch (800:37): [True: 0, False: 0]
  |  Branch (800:51): [True: 0, False: 0]
  ------------------
  801|      0|            return STRINGLIB(default_find)(s, n, p, m, maxcount, mode);
  ------------------
  |  |    7|      0|#define STRINGLIB(F)             asciilib_##F
  ------------------
  802|      0|        }
  803|      0|        else if ((m >> 2) * 3 < (n >> 2)) {
  ------------------
  |  Branch (803:18): [True: 0, False: 0]
  ------------------
  804|       |            /* 33% threshold, but don't overflow. */
  805|       |            /* For larger problems where the needle isn't a huge
  806|       |               percentage of the size of the haystack, the relatively
  807|       |               expensive O(m) startup cost of the two-way algorithm
  808|       |               will surely pay off. */
  809|      0|            if (mode == FAST_SEARCH) {
  ------------------
  |  |   25|      0|#define FAST_SEARCH 1
  ------------------
  |  Branch (809:17): [True: 0, False: 0]
  ------------------
  810|      0|                return STRINGLIB(_two_way_find)(s, n, p, m);
  ------------------
  |  |    7|      0|#define STRINGLIB(F)             asciilib_##F
  ------------------
  811|      0|            }
  812|      0|            else {
  813|      0|                return STRINGLIB(_two_way_count)(s, n, p, m, maxcount);
  ------------------
  |  |    7|      0|#define STRINGLIB(F)             asciilib_##F
  ------------------
  814|      0|            }
  815|      0|        }
  816|      0|        else {
  817|       |            /* To ensure that we have good worst-case behavior,
  818|       |               here's an adaptive version of the algorithm, where if
  819|       |               we match O(m) characters without any matches of the
  820|       |               entire needle, then we predict that the startup cost of
  821|       |               the two-way algorithm will probably be worth it. */
  822|      0|            return STRINGLIB(adaptive_find)(s, n, p, m, maxcount, mode);
  ------------------
  |  |    7|      0|#define STRINGLIB(F)             asciilib_##F
  ------------------
  823|      0|        }
  824|      0|    }
  825|      0|    else {
  826|       |        /* FAST_RSEARCH */
  827|      0|        return STRINGLIB(default_rfind)(s, n, p, m, maxcount, mode);
  ------------------
  |  |    7|      0|#define STRINGLIB(F)             asciilib_##F
  ------------------
  828|      0|    }
  829|      0|}
unicodeobject.c:asciilib_rfind_char:
  117|     60|{
  118|     60|    const STRINGLIB_CHAR *p;
  119|     60|#ifdef HAVE_MEMRCHR
  120|       |    /* memrchr() is a GNU extension, available since glibc 2.1.91.  it
  121|       |       doesn't seem as optimized as memchr(), but is still quite
  122|       |       faster than our hand-written loop below. There is no wmemrchr
  123|       |       for 4-byte chars. */
  124|       |
  125|     60|    if (n > MEMRCHR_CUT_OFF) {
  ------------------
  |  |  109|     60|#  define MEMRCHR_CUT_OFF 15
  ------------------
  |  Branch (125:9): [True: 8, False: 52]
  ------------------
  126|      8|#if STRINGLIB_SIZEOF_CHAR == 1
  127|      8|        p = memrchr(s, ch, n);
  128|      8|        if (p != NULL)
  ------------------
  |  Branch (128:13): [True: 3, False: 5]
  ------------------
  129|      3|            return (p - s);
  130|      5|        return -1;
  131|       |#else
  132|       |        /* use memrchr if we can choose a needle without too many likely
  133|       |           false positives */
  134|       |        const STRINGLIB_CHAR *s1;
  135|       |        Py_ssize_t n1;
  136|       |        unsigned char needle = ch & 0xff;
  137|       |        /* If looking for a multiple of 256, we'd have too
  138|       |           many false positives looking for the '\0' byte in UCS2
  139|       |           and UCS4 representations. */
  140|       |        if (needle != 0) {
  141|       |            do {
  142|       |                void *candidate = memrchr(s, needle,
  143|       |                                          n * sizeof(STRINGLIB_CHAR));
  144|       |                if (candidate == NULL)
  145|       |                    return -1;
  146|       |                n1 = n;
  147|       |                p = (const STRINGLIB_CHAR *)
  148|       |                        _Py_ALIGN_DOWN(candidate, sizeof(STRINGLIB_CHAR));
  149|       |                n = p - s;
  150|       |                if (*p == ch)
  151|       |                    return n;
  152|       |                /* False positive */
  153|       |                if (n1 - n > MEMRCHR_CUT_OFF)
  154|       |                    continue;
  155|       |                if (n <= MEMRCHR_CUT_OFF)
  156|       |                    break;
  157|       |                s1 = p - MEMRCHR_CUT_OFF;
  158|       |                while (p > s1) {
  159|       |                    p--;
  160|       |                    if (*p == ch)
  161|       |                        return (p - s);
  162|       |                }
  163|       |                n = p - s;
  164|       |            }
  165|       |            while (n > MEMRCHR_CUT_OFF);
  166|       |        }
  167|       |#endif
  168|      8|    }
  169|     52|#endif  /* HAVE_MEMRCHR */
  170|     52|    p = s + n;
  171|    421|    while (p > s) {
  ------------------
  |  Branch (171:12): [True: 372, False: 49]
  ------------------
  172|    372|        p--;
  173|    372|        if (*p == ch)
  ------------------
  |  Branch (173:13): [True: 3, False: 369]
  ------------------
  174|      3|            return (p - s);
  175|    372|    }
  176|     49|    return -1;
  177|     52|}

unicode_writer.c:ucs1lib_find_max_char:
   22|     66|{
   23|     66|    const unsigned char *p = (const unsigned char *) begin;
   24|     66|    const unsigned char *_end = (const unsigned char *)end;
   25|       |
   26|    419|    while (p < _end) {
  ------------------
  |  Branch (26:12): [True: 354, False: 65]
  ------------------
   27|    354|        if (_Py_IS_ALIGNED(p, ALIGNOF_SIZE_T)) {
  ------------------
  |  |  221|    354|#define _Py_IS_ALIGNED(p, a) (!((uintptr_t)(p) & (uintptr_t)((a) - 1)))
  |  |  ------------------
  |  |  |  Branch (221:30): [True: 32, False: 322]
  |  |  ------------------
  ------------------
   28|       |            /* Help register allocation */
   29|     32|            const unsigned char *_p = p;
   30|     65|            while (_p + SIZEOF_SIZE_T <= _end) {
  ------------------
  |  | 1838|     65|#define SIZEOF_SIZE_T 8
  ------------------
  |  Branch (30:20): [True: 33, False: 32]
  ------------------
   31|     33|                size_t value = *(const size_t *) _p;
   32|     33|                if (value & UCS1_ASCII_CHAR_MASK)
  ------------------
  |  |   11|     33|# define UCS1_ASCII_CHAR_MASK 0x8080808080808080ULL
  ------------------
  |  Branch (32:21): [True: 0, False: 33]
  ------------------
   33|      0|                    return 255;
   34|     33|                _p += SIZEOF_SIZE_T;
  ------------------
  |  | 1838|     33|#define SIZEOF_SIZE_T 8
  ------------------
   35|     33|            }
   36|     32|            p = _p;
   37|     32|            if (p == _end)
  ------------------
  |  Branch (37:17): [True: 1, False: 31]
  ------------------
   38|      1|                break;
   39|     32|        }
   40|    353|        if (*p++ & 0x80)
  ------------------
  |  Branch (40:13): [True: 0, False: 353]
  ------------------
   41|      0|            return 255;
   42|    353|    }
   43|     66|    return 127;
   44|     66|}
unicodeobject.c:ucs1lib_find_max_char:
   22|  4.36k|{
   23|  4.36k|    const unsigned char *p = (const unsigned char *) begin;
   24|  4.36k|    const unsigned char *_end = (const unsigned char *)end;
   25|       |
   26|  31.8k|    while (p < _end) {
  ------------------
  |  Branch (26:12): [True: 27.8k, False: 3.99k]
  ------------------
   27|  27.8k|        if (_Py_IS_ALIGNED(p, ALIGNOF_SIZE_T)) {
  ------------------
  |  |  221|  27.8k|#define _Py_IS_ALIGNED(p, a) (!((uintptr_t)(p) & (uintptr_t)((a) - 1)))
  |  |  ------------------
  |  |  |  Branch (221:30): [True: 3.80k, False: 24.0k]
  |  |  ------------------
  ------------------
   28|       |            /* Help register allocation */
   29|  3.80k|            const unsigned char *_p = p;
   30|  14.4k|            while (_p + SIZEOF_SIZE_T <= _end) {
  ------------------
  |  | 1838|  14.4k|#define SIZEOF_SIZE_T 8
  ------------------
  |  Branch (30:20): [True: 10.6k, False: 3.80k]
  ------------------
   31|  10.6k|                size_t value = *(const size_t *) _p;
   32|  10.6k|                if (value & UCS1_ASCII_CHAR_MASK)
  ------------------
  |  |   11|  10.6k|# define UCS1_ASCII_CHAR_MASK 0x8080808080808080ULL
  ------------------
  |  Branch (32:21): [True: 0, False: 10.6k]
  ------------------
   33|      0|                    return 255;
   34|  10.6k|                _p += SIZEOF_SIZE_T;
  ------------------
  |  | 1838|  10.6k|#define SIZEOF_SIZE_T 8
  ------------------
   35|  10.6k|            }
   36|  3.80k|            p = _p;
   37|  3.80k|            if (p == _end)
  ------------------
  |  Branch (37:17): [True: 368, False: 3.43k]
  ------------------
   38|    368|                break;
   39|  3.80k|        }
   40|  27.5k|        if (*p++ & 0x80)
  ------------------
  |  Branch (40:13): [True: 0, False: 27.5k]
  ------------------
   41|      0|            return 255;
   42|  27.5k|    }
   43|  4.36k|    return 127;
   44|  4.36k|}

unicodeobject.c:asciilib_rpartition:
   74|     60|{
   75|     60|    PyObject* out;
   76|     60|    Py_ssize_t pos;
   77|       |
   78|     60|    if (sep_len == 0) {
  ------------------
  |  Branch (78:9): [True: 0, False: 60]
  ------------------
   79|      0|        PyErr_SetString(PyExc_ValueError, "empty separator");
   80|      0|        return NULL;
   81|      0|    }
   82|       |
   83|     60|    out = PyTuple_New(3);
   84|     60|    if (!out)
  ------------------
  |  Branch (84:9): [True: 0, False: 60]
  ------------------
   85|      0|        return NULL;
   86|       |
   87|     60|    pos = FASTSEARCH(str, str_len, sep, sep_len, -1, FAST_RSEARCH);
  ------------------
  |  |    6|     60|#define FASTSEARCH               asciilib_fastsearch
  ------------------
                  pos = FASTSEARCH(str, str_len, sep, sep_len, -1, FAST_RSEARCH);
  ------------------
  |  |   26|     60|#define FAST_RSEARCH 2
  ------------------
   88|       |
   89|     60|    if (pos < 0) {
  ------------------
  |  Branch (89:9): [True: 54, False: 6]
  ------------------
   90|       |#if STRINGLIB_MUTABLE
   91|       |        PyTuple_SET_ITEM(out, 0, STRINGLIB_NEW(NULL, 0));
   92|       |        PyTuple_SET_ITEM(out, 1, STRINGLIB_NEW(NULL, 0));
   93|       |        PyTuple_SET_ITEM(out, 2, STRINGLIB_NEW(str, str_len));
   94|       |
   95|       |        if (PyErr_Occurred()) {
   96|       |            Py_DECREF(out);
   97|       |            return NULL;
   98|       |        }
   99|       |#else
  100|     54|        PyObject *empty = (PyObject*)STRINGLIB_GET_EMPTY();
  ------------------
  |  |  955|     54|#define STRINGLIB_GET_EMPTY() _PyUnicode_GetEmpty()
  ------------------
  101|     54|        assert(empty != NULL);
  ------------------
  |  Branch (101:9): [True: 54, False: 0]
  ------------------
  102|     54|        Py_INCREF(empty);
  ------------------
  |  |  310|     54|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     54|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     54|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  103|     54|        PyTuple_SET_ITEM(out, 0, empty);
  ------------------
  |  |   40|     54|    PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|     54|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     54|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|     54|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     54|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  104|     54|        Py_INCREF(empty);
  ------------------
  |  |  310|     54|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     54|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     54|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  105|     54|        PyTuple_SET_ITEM(out, 1, empty);
  ------------------
  |  |   40|     54|    PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|     54|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     54|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|     54|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     54|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  106|     54|        Py_INCREF(str_obj);
  ------------------
  |  |  310|     54|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     54|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     54|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  107|     54|        PyTuple_SET_ITEM(out, 2, (PyObject*) str_obj);
  ------------------
  |  |   40|     54|    PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|     54|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     54|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|     54|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     54|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  108|     54|#endif
  109|     54|        return out;
  110|     54|    }
  111|       |
  112|      6|    PyTuple_SET_ITEM(out, 0, STRINGLIB_NEW(str, pos));
  ------------------
  |  |   40|      6|    PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|      6|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|      6|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  113|      6|    Py_INCREF(sep_obj);
  ------------------
  |  |  310|      6|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      6|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  114|      6|    PyTuple_SET_ITEM(out, 1, sep_obj);
  ------------------
  |  |   40|      6|    PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|      6|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|      6|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  115|      6|    pos += sep_len;
  116|      6|    PyTuple_SET_ITEM(out, 2, STRINGLIB_NEW(str + pos, str_len - pos));
  ------------------
  |  |   40|      6|    PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|      6|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|      6|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  117|       |
  118|      6|    if (PyErr_Occurred()) {
  ------------------
  |  Branch (118:9): [True: 0, False: 6]
  ------------------
  119|      0|        Py_DECREF(out);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  120|      0|        return NULL;
  121|      0|    }
  122|       |
  123|      6|    return out;
  124|      6|}

unicodeobject.c:ucs1lib_replace_1char_inplace:
   10|      3|{
   11|      3|    *s = u2;
   12|      3|    while (--maxcount && ++s != end) {
  ------------------
  |  Branch (12:12): [True: 3, False: 0]
  |  Branch (12:26): [True: 3, False: 0]
  ------------------
   13|       |        /* Find the next character to be replaced.
   14|       |
   15|       |           If it occurs often, it is faster to scan for it using an inline
   16|       |           loop.  If it occurs seldom, it is faster to scan for it using a
   17|       |           function call; the overhead of the function call is amortized
   18|       |           across the many characters that call covers.  We start with an
   19|       |           inline loop and use a heuristic to determine whether to fall back
   20|       |           to a function call. */
   21|      3|        if (*s != u1) {
  ------------------
  |  Branch (21:13): [True: 3, False: 0]
  ------------------
   22|      3|            int attempts = 10;
   23|       |            /* search u1 in a dummy loop */
   24|     22|            while (1) {
  ------------------
  |  Branch (24:20): [True: 22, Folded]
  ------------------
   25|     22|                if (++s == end)
  ------------------
  |  Branch (25:21): [True: 2, False: 20]
  ------------------
   26|      2|                    return;
   27|     20|                if (*s == u1)
  ------------------
  |  Branch (27:21): [True: 0, False: 20]
  ------------------
   28|      0|                    break;
   29|     20|                if (!--attempts) {
  ------------------
  |  Branch (29:21): [True: 1, False: 19]
  ------------------
   30|       |                    /* if u1 was not found for attempts iterations,
   31|       |                       use FASTSEARCH() or memchr() */
   32|      1|#ifdef STRINGLIB_FAST_MEMCHR
   33|      1|                    s++;
   34|      1|                    s = STRINGLIB_FAST_MEMCHR(s, u1, end - s);
  ------------------
  |  |   23|      1|#define STRINGLIB_FAST_MEMCHR    memchr
  ------------------
   35|      1|                    if (s == NULL)
  ------------------
  |  Branch (35:25): [True: 1, False: 0]
  ------------------
   36|      1|                        return;
   37|       |#else
   38|       |                    Py_ssize_t i;
   39|       |                    STRINGLIB_CHAR ch1 = (STRINGLIB_CHAR) u1;
   40|       |                    s++;
   41|       |                    i = FASTSEARCH(s, end - s, &ch1, 1, 0, FAST_SEARCH);
   42|       |                    if (i < 0)
   43|       |                        return;
   44|       |                    s += i;
   45|       |#endif
   46|       |                    /* restart the dummy loop */
   47|      0|                    break;
   48|      1|                }
   49|     20|            }
   50|      3|        }
   51|      0|        *s = u2;
   52|      0|    }
   53|      3|}

unicodeobject.c:asciilib_split:
  149|      2|{
  150|      2|    Py_ssize_t i, j, pos, count=0;
  151|      2|    PyObject *list, *sub;
  152|       |
  153|      2|    if (sep_len == 0) {
  ------------------
  |  Branch (153:9): [True: 0, False: 2]
  ------------------
  154|      0|        PyErr_SetString(PyExc_ValueError, "empty separator");
  155|      0|        return NULL;
  156|      0|    }
  157|      2|    else if (sep_len == 1)
  ------------------
  |  Branch (157:14): [True: 2, False: 0]
  ------------------
  158|      2|        return STRINGLIB(split_char)(str_obj, str, str_len, sep[0], maxcount);
  ------------------
  |  |    7|      2|#define STRINGLIB(F)             asciilib_##F
  ------------------
  159|       |
  160|      0|    list = PyList_New(PREALLOC_SIZE(maxcount));
  ------------------
  |  |   18|      0|    (maxsplit >= MAX_PREALLOC ? MAX_PREALLOC : maxsplit+1)
  |  |  ------------------
  |  |  |  |   14|      0|#define MAX_PREALLOC 12
  |  |  ------------------
  |  |                   (maxsplit >= MAX_PREALLOC ? MAX_PREALLOC : maxsplit+1)
  |  |  ------------------
  |  |  |  |   14|      0|#define MAX_PREALLOC 12
  |  |  ------------------
  |  |  |  Branch (18:6): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  161|      0|    if (list == NULL)
  ------------------
  |  Branch (161:9): [True: 0, False: 0]
  ------------------
  162|      0|        return NULL;
  163|       |
  164|      0|    i = j = 0;
  165|      0|    while (maxcount-- > 0) {
  ------------------
  |  Branch (165:12): [True: 0, False: 0]
  ------------------
  166|      0|        pos = FASTSEARCH(str+i, str_len-i, sep, sep_len, -1, FAST_SEARCH);
  ------------------
  |  |    6|      0|#define FASTSEARCH               asciilib_fastsearch
  ------------------
                      pos = FASTSEARCH(str+i, str_len-i, sep, sep_len, -1, FAST_SEARCH);
  ------------------
  |  |   25|      0|#define FAST_SEARCH 1
  ------------------
  167|      0|        if (pos < 0)
  ------------------
  |  Branch (167:13): [True: 0, False: 0]
  ------------------
  168|      0|            break;
  169|      0|        j = i + pos;
  170|      0|        SPLIT_ADD(str, i, j);
  ------------------
  |  |   32|      0|#define SPLIT_ADD(data, left, right) {          \
  |  |   33|      0|    sub = STRINGLIB_NEW((data) + (left),        \
  |  |  ------------------
  |  |  |  |   20|      0|#define STRINGLIB_NEW(STR,LEN)   _PyUnicode_FromASCII((const char*)(STR),(LEN))
  |  |  ------------------
  |  |   34|      0|                        (right) - (left));      \
  |  |   35|      0|    if (sub == NULL)                            \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|        goto onError;                           \
  |  |   37|      0|    if (count < MAX_PREALLOC) {                 \
  |  |  ------------------
  |  |  |  |   14|      0|#define MAX_PREALLOC 12
  |  |  ------------------
  |  |  |  Branch (37:9): [True: 0, False: 0]
  |  |  ------------------
  |  |   38|      0|        PyList_SET_ITEM(list, count, sub);      \
  |  |  ------------------
  |  |  |  |   50|      0|    PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                   PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   39|      0|    } else {                                    \
  |  |   40|      0|        if (PyList_Append(list, sub)) {         \
  |  |  ------------------
  |  |  |  Branch (40:13): [True: 0, False: 0]
  |  |  ------------------
  |  |   41|      0|            Py_DECREF(sub);                     \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   42|      0|            goto onError;                       \
  |  |   43|      0|        }                                       \
  |  |   44|      0|        else                                    \
  |  |   45|      0|            Py_DECREF(sub);                     \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   46|      0|    }                                           \
  |  |   47|      0|    count++; }
  ------------------
  171|      0|        i = j + sep_len;
  172|      0|    }
  173|      0|#if !STRINGLIB_MUTABLE
  174|      0|    if (count == 0 && STRINGLIB_CHECK_EXACT(str_obj)) {
  ------------------
  |  |   22|      0|#define STRINGLIB_CHECK_EXACT    PyUnicode_CheckExact
  |  |  ------------------
  |  |  |  |  104|      0|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (174:9): [True: 0, False: 0]
  ------------------
  175|       |        /* No match in str_obj, so just use it as list[0] */
  176|      0|        Py_INCREF(str_obj);
  ------------------
  |  |  310|      0|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  177|      0|        PyList_SET_ITEM(list, 0, (PyObject *)str_obj);
  ------------------
  |  |   50|      0|    PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  178|      0|        count++;
  179|      0|    } else
  180|      0|#endif
  181|      0|    {
  182|      0|        SPLIT_ADD(str, i, str_len);
  ------------------
  |  |   32|      0|#define SPLIT_ADD(data, left, right) {          \
  |  |   33|      0|    sub = STRINGLIB_NEW((data) + (left),        \
  |  |  ------------------
  |  |  |  |   20|      0|#define STRINGLIB_NEW(STR,LEN)   _PyUnicode_FromASCII((const char*)(STR),(LEN))
  |  |  ------------------
  |  |   34|      0|                        (right) - (left));      \
  |  |   35|      0|    if (sub == NULL)                            \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 0]
  |  |  ------------------
  |  |   36|      0|        goto onError;                           \
  |  |   37|      0|    if (count < MAX_PREALLOC) {                 \
  |  |  ------------------
  |  |  |  |   14|      0|#define MAX_PREALLOC 12
  |  |  ------------------
  |  |  |  Branch (37:9): [True: 0, False: 0]
  |  |  ------------------
  |  |   38|      0|        PyList_SET_ITEM(list, count, sub);      \
  |  |  ------------------
  |  |  |  |   50|      0|    PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                   PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   39|      0|    } else {                                    \
  |  |   40|      0|        if (PyList_Append(list, sub)) {         \
  |  |  ------------------
  |  |  |  Branch (40:13): [True: 0, False: 0]
  |  |  ------------------
  |  |   41|      0|            Py_DECREF(sub);                     \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   42|      0|            goto onError;                       \
  |  |   43|      0|        }                                       \
  |  |   44|      0|        else                                    \
  |  |   45|      0|            Py_DECREF(sub);                     \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   46|      0|    }                                           \
  |  |   47|      0|    count++; }
  ------------------
  183|      0|    }
  184|      0|    FIX_PREALLOC_SIZE(list);
  ------------------
  |  |   51|      0|#define FIX_PREALLOC_SIZE(list) Py_SET_SIZE(list, count)
  |  |  ------------------
  |  |  |  |  216|      0|#  define Py_SET_SIZE(ob, size) _Py_SET_SIZE_impl(_PyVarObject_CAST(ob), (size))
  |  |  |  |  ------------------
  |  |  |  |  |  |  182|      0|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  185|      0|    return list;
  186|       |
  187|      0|  onError:
  188|      0|    Py_DECREF(list);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  189|       |    return NULL;
  190|      0|}
unicodeobject.c:asciilib_split_char:
  106|      2|{
  107|      2|    Py_ssize_t i, j, count=0;
  108|      2|    PyObject *list = PyList_New(PREALLOC_SIZE(maxcount));
  ------------------
  |  |   18|      2|    (maxsplit >= MAX_PREALLOC ? MAX_PREALLOC : maxsplit+1)
  |  |  ------------------
  |  |  |  |   14|      4|#define MAX_PREALLOC 12
  |  |  ------------------
  |  |                   (maxsplit >= MAX_PREALLOC ? MAX_PREALLOC : maxsplit+1)
  |  |  ------------------
  |  |  |  |   14|      2|#define MAX_PREALLOC 12
  |  |  ------------------
  |  |  |  Branch (18:6): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  109|      2|    PyObject *sub;
  110|       |
  111|      2|    if (list == NULL)
  ------------------
  |  Branch (111:9): [True: 0, False: 2]
  ------------------
  112|      0|        return NULL;
  113|       |
  114|      2|    i = j = 0;
  115|      6|    while ((j < str_len) && (maxcount-- > 0)) {
  ------------------
  |  Branch (115:12): [True: 4, False: 2]
  |  Branch (115:29): [True: 4, False: 0]
  ------------------
  116|     34|        for(; j < str_len; j++) {
  ------------------
  |  Branch (116:15): [True: 32, False: 2]
  ------------------
  117|       |            /* I found that using memchr makes no difference */
  118|     32|            if (str[j] == ch) {
  ------------------
  |  Branch (118:17): [True: 2, False: 30]
  ------------------
  119|      2|                SPLIT_ADD(str, i, j);
  ------------------
  |  |   32|      2|#define SPLIT_ADD(data, left, right) {          \
  |  |   33|      2|    sub = STRINGLIB_NEW((data) + (left),        \
  |  |  ------------------
  |  |  |  |   20|      2|#define STRINGLIB_NEW(STR,LEN)   _PyUnicode_FromASCII((const char*)(STR),(LEN))
  |  |  ------------------
  |  |   34|      2|                        (right) - (left));      \
  |  |   35|      2|    if (sub == NULL)                            \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 2]
  |  |  ------------------
  |  |   36|      2|        goto onError;                           \
  |  |   37|      2|    if (count < MAX_PREALLOC) {                 \
  |  |  ------------------
  |  |  |  |   14|      2|#define MAX_PREALLOC 12
  |  |  ------------------
  |  |  |  Branch (37:9): [True: 2, False: 0]
  |  |  ------------------
  |  |   38|      2|        PyList_SET_ITEM(list, count, sub);      \
  |  |  ------------------
  |  |  |  |   50|      2|    PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                   PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   39|      2|    } else {                                    \
  |  |   40|      0|        if (PyList_Append(list, sub)) {         \
  |  |  ------------------
  |  |  |  Branch (40:13): [True: 0, False: 0]
  |  |  ------------------
  |  |   41|      0|            Py_DECREF(sub);                     \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   42|      0|            goto onError;                       \
  |  |   43|      0|        }                                       \
  |  |   44|      0|        else                                    \
  |  |   45|      0|            Py_DECREF(sub);                     \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   46|      0|    }                                           \
  |  |   47|      2|    count++; }
  ------------------
  120|      2|                i = j = j + 1;
  121|      2|                break;
  122|      2|            }
  123|     32|        }
  124|      4|    }
  125|      2|#if !STRINGLIB_MUTABLE
  126|      2|    if (count == 0 && STRINGLIB_CHECK_EXACT(str_obj)) {
  ------------------
  |  |   22|      0|#define STRINGLIB_CHECK_EXACT    PyUnicode_CheckExact
  |  |  ------------------
  |  |  |  |  104|      0|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (126:9): [True: 0, False: 2]
  ------------------
  127|       |        /* ch not in str_obj, so just use str_obj as list[0] */
  128|      0|        Py_INCREF(str_obj);
  ------------------
  |  |  310|      0|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  129|      0|        PyList_SET_ITEM(list, 0, (PyObject *)str_obj);
  ------------------
  |  |   50|      0|    PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  130|      0|        count++;
  131|      0|    } else
  132|      2|#endif
  133|      2|    if (i <= str_len) {
  ------------------
  |  Branch (133:9): [True: 2, False: 0]
  ------------------
  134|      4|        SPLIT_ADD(str, i, str_len);
  ------------------
  |  |   32|      2|#define SPLIT_ADD(data, left, right) {          \
  |  |   33|      2|    sub = STRINGLIB_NEW((data) + (left),        \
  |  |  ------------------
  |  |  |  |   20|      2|#define STRINGLIB_NEW(STR,LEN)   _PyUnicode_FromASCII((const char*)(STR),(LEN))
  |  |  ------------------
  |  |   34|      2|                        (right) - (left));      \
  |  |   35|      2|    if (sub == NULL)                            \
  |  |  ------------------
  |  |  |  Branch (35:9): [True: 0, False: 2]
  |  |  ------------------
  |  |   36|      2|        goto onError;                           \
  |  |   37|      2|    if (count < MAX_PREALLOC) {                 \
  |  |  ------------------
  |  |  |  |   14|      2|#define MAX_PREALLOC 12
  |  |  ------------------
  |  |  |  Branch (37:9): [True: 2, False: 0]
  |  |  ------------------
  |  |   38|      2|        PyList_SET_ITEM(list, count, sub);      \
  |  |  ------------------
  |  |  |  |   50|      2|    PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                   PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   39|      2|    } else {                                    \
  |  |   40|      0|        if (PyList_Append(list, sub)) {         \
  |  |  ------------------
  |  |  |  Branch (40:13): [True: 0, False: 0]
  |  |  ------------------
  |  |   41|      0|            Py_DECREF(sub);                     \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   42|      0|            goto onError;                       \
  |  |   43|      0|        }                                       \
  |  |   44|      0|        else                                    \
  |  |   45|      0|            Py_DECREF(sub);                     \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   46|      0|    }                                           \
  |  |   47|      2|    count++; }
  ------------------
  135|      4|    }
  136|      2|    FIX_PREALLOC_SIZE(list);
  ------------------
  |  |   51|      2|#define FIX_PREALLOC_SIZE(list) Py_SET_SIZE(list, count)
  |  |  ------------------
  |  |  |  |  216|      2|#  define Py_SET_SIZE(ob, size) _Py_SET_SIZE_impl(_PyVarObject_CAST(ob), (size))
  |  |  |  |  ------------------
  |  |  |  |  |  |  182|      2|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  137|      2|    return list;
  138|       |
  139|      0|  onError:
  140|      0|    Py_DECREF(list);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  141|       |    return NULL;
  142|      2|}

PyStructSequence_New:
   66|     20|{
   67|     20|    PyStructSequence *obj;
   68|     20|    Py_ssize_t size = REAL_SIZE_TP(type), i;
  ------------------
  |  |   48|     20|    get_type_attr_as_size(tp, &_Py_ID(n_fields))
  |  |  ------------------
  |  |  |  |  917|     20|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|     20|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|     20|    _PyRuntime.static_objects.NAME
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   69|     20|    if (size < 0) {
  ------------------
  |  Branch (69:9): [True: 0, False: 20]
  ------------------
   70|      0|        return NULL;
   71|      0|    }
   72|     20|    Py_ssize_t vsize = VISIBLE_SIZE_TP(type);
  ------------------
  |  |   46|     20|    get_type_attr_as_size(tp, &_Py_ID(n_sequence_fields))
  |  |  ------------------
  |  |  |  |  917|     20|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|     20|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|     20|    _PyRuntime.static_objects.NAME
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   73|     20|    if (vsize < 0) {
  ------------------
  |  Branch (73:9): [True: 0, False: 20]
  ------------------
   74|      0|        return NULL;
   75|      0|    }
   76|       |
   77|     20|    obj = PyObject_GC_NewVar(PyStructSequence, type, size);
  ------------------
  |  |  183|     20|    _Py_CAST(type*, _PyObject_GC_NewVar((typeobj), (n)))
  |  |  ------------------
  |  |  |  |   37|     20|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
   78|     20|    if (obj == NULL)
  ------------------
  |  Branch (78:9): [True: 0, False: 20]
  ------------------
   79|      0|        return NULL;
   80|     20|    _PyTuple_RESET_HASH_CACHE(obj);
  ------------------
  |  |   44|     20|    do {                                    \
  |  |   45|     20|        assert(op != NULL);                 \
  |  |   46|     40|        _PyTuple_CAST(op)->ob_hash = -1;    \
  |  |  ------------------
  |  |  |  |   19|     20|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     20|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|     40|    } while (0)
  |  |  ------------------
  |  |  |  Branch (47:14): [Folded, False: 20]
  |  |  ------------------
  ------------------
  |  Branch (80:5): [True: 20, False: 0]
  |  Branch (80:5): [True: 20, False: 0]
  ------------------
   81|       |    /* Hack the size of the variable object, so invisible fields don't appear
   82|       |     to Python code. */
   83|     20|    Py_SET_SIZE(obj, vsize);
  ------------------
  |  |  216|     20|#  define Py_SET_SIZE(ob, size) _Py_SET_SIZE_impl(_PyVarObject_CAST(ob), (size))
  |  |  ------------------
  |  |  |  |  182|     20|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     20|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   84|    340|    for (i = 0; i < size; i++)
  ------------------
  |  Branch (84:17): [True: 320, False: 20]
  ------------------
   85|    320|        obj->ob_item[i] = NULL;
   86|       |
   87|     20|    return (PyObject*)obj;
   88|     20|}
PyStructSequence_SetItem:
   92|    342|{
   93|    342|    PyTupleObject *tuple = _PyTuple_CAST(op);
  ------------------
  |  |   19|    342|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|    342|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (93:28): [True: 342, False: 0]
  ------------------
   94|    342|    assert(0 <= index);
  ------------------
  |  Branch (94:5): [True: 342, False: 0]
  ------------------
   95|    342|#ifndef NDEBUG
   96|    342|    Py_ssize_t n_fields = REAL_SIZE(op);
  ------------------
  |  |   49|    342|#define REAL_SIZE(op) get_real_size((PyObject *)op)
  ------------------
   97|    342|    assert(n_fields >= 0);
  ------------------
  |  Branch (97:5): [True: 342, False: 0]
  ------------------
   98|    342|    assert(index < n_fields);
  ------------------
  |  Branch (98:5): [True: 342, False: 0]
  ------------------
   99|    342|#endif
  100|    342|    tuple->ob_item[index] = value;
  101|    342|}
PyStructSequence_GetItem:
  105|     44|{
  106|     44|    assert(0 <= index);
  ------------------
  |  Branch (106:5): [True: 44, False: 0]
  ------------------
  107|     44|#ifndef NDEBUG
  108|     44|    Py_ssize_t n_fields = REAL_SIZE(op);
  ------------------
  |  |   49|     44|#define REAL_SIZE(op) get_real_size((PyObject *)op)
  ------------------
  109|     44|    assert(n_fields >= 0);
  ------------------
  |  Branch (109:5): [True: 44, False: 0]
  ------------------
  110|     44|    assert(index < n_fields);
  ------------------
  |  Branch (110:5): [True: 44, False: 0]
  ------------------
  111|     44|#endif
  112|     44|    return PyTuple_GET_ITEM(op, index);
  ------------------
  |  |   29|     44|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|     44|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     44|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (112:12): [True: 44, False: 0]
  ------------------
  113|     44|}
_PyStructSequence_InitBuiltinWithFlags:
  618|      8|{
  619|      8|    if (Py_TYPE(type) == NULL) {
  ------------------
  |  |  213|      8|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      8|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (619:9): [True: 8, False: 0]
  ------------------
  620|      8|        Py_SET_TYPE(type, &PyType_Type);
  ------------------
  |  |  217|      8|#  define Py_SET_TYPE(ob, type) Py_SET_TYPE(_PyObject_CAST(ob), type)
  |  |  ------------------
  |  |  |  |  171|      8|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  621|      8|    }
  622|      8|    Py_ssize_t n_unnamed_members;
  623|      8|    Py_ssize_t n_members = count_members(desc, &n_unnamed_members);
  624|      8|    PyMemberDef *members = NULL;
  625|       |
  626|      8|    if ((type->tp_flags & Py_TPFLAGS_READY) == 0) {
  ------------------
  |  |  518|      8|#define Py_TPFLAGS_READY (1UL << 12)
  ------------------
  |  Branch (626:9): [True: 8, False: 0]
  ------------------
  627|      8|        assert(type->tp_name == NULL);
  ------------------
  |  Branch (627:9): [True: 8, False: 0]
  ------------------
  628|      8|        assert(type->tp_members == NULL);
  ------------------
  |  Branch (628:9): [True: 8, False: 0]
  ------------------
  629|      8|        assert(type->tp_base == NULL);
  ------------------
  |  Branch (629:9): [True: 8, False: 0]
  ------------------
  630|       |
  631|      8|        members = initialize_members(desc, n_members, n_unnamed_members);
  632|      8|        if (members == NULL) {
  ------------------
  |  Branch (632:13): [True: 0, False: 8]
  ------------------
  633|      0|            goto error;
  634|      0|        }
  635|      8|        initialize_static_fields(type, desc, members, n_members, tp_flags);
  636|       |
  637|      8|        _Py_SetImmortal((PyObject *)type);
  638|      8|    }
  639|      0|#ifndef NDEBUG
  640|      0|    else {
  641|       |        // Ensure that the type was initialized.
  642|      0|        assert(type->tp_name != NULL);
  ------------------
  |  Branch (642:9): [True: 0, False: 0]
  ------------------
  643|      0|        assert(type->tp_members != NULL);
  ------------------
  |  Branch (643:9): [True: 0, False: 0]
  ------------------
  644|      0|        assert(type->tp_base == &PyTuple_Type);
  ------------------
  |  Branch (644:9): [True: 0, False: 0]
  ------------------
  645|      0|        assert((type->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN));
  ------------------
  |  Branch (645:9): [True: 0, False: 0]
  ------------------
  646|      0|        assert(_Py_IsImmortal(type));
  ------------------
  |  Branch (646:9): [True: 0, False: 0]
  ------------------
  647|      0|    }
  648|      8|#endif
  649|       |
  650|      8|    if (_PyStaticType_InitBuiltin(interp, type) < 0) {
  ------------------
  |  Branch (650:9): [True: 0, False: 8]
  ------------------
  651|      0|        PyErr_Format(PyExc_RuntimeError,
  652|      0|                     "Can't initialize builtin type %s",
  653|      0|                     desc->name);
  654|      0|        goto error;
  655|      0|    }
  656|       |
  657|      8|    if (initialize_structseq_dict(
  ------------------
  |  Branch (657:9): [True: 0, False: 8]
  ------------------
  658|      8|            desc, _PyType_GetDict(type), n_members, n_unnamed_members) < 0)
  659|      0|    {
  660|      0|        goto error;
  661|      0|    }
  662|       |
  663|      8|    return 0;
  664|       |
  665|      0|error:
  666|      0|    if (members != NULL) {
  ------------------
  |  Branch (666:9): [True: 0, False: 0]
  ------------------
  667|      0|        PyMem_Free(members);
  668|      0|    }
  669|      0|    return -1;
  670|      8|}
_PyStructSequence_NewType:
  746|      9|{
  747|      9|    PyMemberDef *members;
  748|      9|    PyTypeObject *type;
  749|      9|    PyType_Slot slots[8];
  750|      9|    PyType_Spec spec;
  751|      9|    Py_ssize_t n_members, n_unnamed_members;
  752|       |
  753|       |    /* Initialize MemberDefs */
  754|      9|    n_members = count_members(desc, &n_unnamed_members);
  755|      9|    members = initialize_members(desc, n_members, n_unnamed_members);
  756|      9|    if (members == NULL) {
  ------------------
  |  Branch (756:9): [True: 0, False: 9]
  ------------------
  757|      0|        return NULL;
  758|      0|    }
  759|       |
  760|       |    /* Initialize Slots */
  761|      9|    slots[0] = (PyType_Slot){Py_tp_dealloc, structseq_dealloc};
  ------------------
  |  |   60|      9|#define Py_tp_dealloc 52
  ------------------
  762|      9|    slots[1] = (PyType_Slot){Py_tp_repr, structseq_repr};
  ------------------
  |  |   74|      9|#define Py_tp_repr 66
  ------------------
  763|      9|    slots[2] = (PyType_Slot){Py_tp_doc, (void *)desc->doc};
  ------------------
  |  |   64|      9|#define Py_tp_doc 56
  ------------------
  764|      9|    slots[3] = (PyType_Slot){Py_tp_methods, structseq_methods};
  ------------------
  |  |   72|      9|#define Py_tp_methods 64
  ------------------
  765|      9|    slots[4] = (PyType_Slot){Py_tp_new, structseq_new};
  ------------------
  |  |   73|      9|#define Py_tp_new 65
  ------------------
  766|      9|    slots[5] = (PyType_Slot){Py_tp_members, members};
  ------------------
  |  |   80|      9|#define Py_tp_members 72
  ------------------
  767|      9|    slots[6] = (PyType_Slot){Py_tp_traverse, structseq_traverse};
  ------------------
  |  |   79|      9|#define Py_tp_traverse 71
  ------------------
  768|      9|    slots[7] = (PyType_Slot){0, 0};
  769|       |
  770|       |    /* Initialize Spec */
  771|       |    /* The name in this PyType_Spec is statically allocated so it is */
  772|       |    /* expected that it'll outlive the PyType_Spec */
  773|      9|    spec.name = desc->name;
  774|      9|    Py_ssize_t hidden = n_members - desc->n_in_sequence;
  775|      9|    spec.basicsize = (int)(sizeof(PyStructSequence) + (hidden - 1) * sizeof(PyObject *));
  776|      9|    spec.itemsize = sizeof(PyObject *);
  777|      9|    spec.flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | tp_flags;
  ------------------
  |  |  560|      9|#define Py_TPFLAGS_DEFAULT  ( \
  |  |  561|      9|                 Py_TPFLAGS_HAVE_STACKLESS_EXTENSION | \
  |  |  ------------------
  |  |  |  |  530|      9|#define Py_TPFLAGS_HAVE_STACKLESS_EXTENSION 0
  |  |  ------------------
  |  |  562|      9|                0)
  ------------------
                  spec.flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | tp_flags;
  ------------------
  |  |  524|      9|#define Py_TPFLAGS_HAVE_GC (1UL << 14)
  ------------------
  778|      9|    spec.slots = slots;
  779|       |
  780|      9|    type = (PyTypeObject *)PyType_FromSpecWithBases(&spec, (PyObject *)&PyTuple_Type);
  781|      9|    PyMem_Free(members);
  782|      9|    if (type == NULL) {
  ------------------
  |  Branch (782:9): [True: 0, False: 9]
  ------------------
  783|      0|        return NULL;
  784|      0|    }
  785|       |
  786|      9|    if (initialize_structseq_dict(
  ------------------
  |  Branch (786:9): [True: 0, False: 9]
  ------------------
  787|      9|            desc, _PyType_GetDict(type), n_members, n_unnamed_members) < 0) {
  788|      0|        Py_DECREF(type);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  789|      0|        return NULL;
  790|      0|    }
  791|       |
  792|      9|    return type;
  793|      9|}
PyStructSequence_NewType:
  798|      9|{
  799|      9|    return _PyStructSequence_NewType(desc, 0);
  800|      9|}
structseq.c:get_type_attr_as_size:
   29|     40|{
   30|     40|    PyObject *v = PyDict_GetItemWithError(_PyType_GetDict(tp), name);
   31|       |
   32|     40|    if (v == NULL) {
  ------------------
  |  Branch (32:9): [True: 0, False: 40]
  ------------------
   33|      0|        if (PyErr_Occurred()) {
  ------------------
  |  Branch (33:13): [True: 0, False: 0]
  ------------------
   34|      0|            return -1;
   35|      0|        }
   36|      0|        PyErr_Format(PyExc_TypeError,
   37|      0|                     "Missed attribute '%U' of type %s",
   38|      0|                     name, tp->tp_name);
   39|      0|        return -1;
   40|      0|    }
   41|     40|    return PyLong_AsSsize_t(v);
   42|     40|}
structseq.c:get_real_size:
   57|    400|{
   58|       |    // Compute the real size from the visible size (i.e., Py_SIZE()) and the
   59|       |    // number of non-sequence fields accounted for in tp_basicsize.
   60|    400|    Py_ssize_t hidden = Py_TYPE(op)->tp_basicsize - offsetof(PyStructSequence, ob_item);
  ------------------
  |  |  213|    400|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    400|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    400|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   61|    400|    return Py_SIZE(op) + hidden / sizeof(PyObject *);
  ------------------
  |  |  214|    400|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    400|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    400|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   62|    400|}
structseq.c:count_members:
  469|     17|count_members(PyStructSequence_Desc *desc, Py_ssize_t *n_unnamed_members) {
  470|     17|    Py_ssize_t i;
  471|       |
  472|     17|    *n_unnamed_members = 0;
  473|    141|    for (i = 0; desc->fields[i].name != NULL; ++i) {
  ------------------
  |  Branch (473:17): [True: 124, False: 17]
  ------------------
  474|    124|        if (desc->fields[i].name == PyStructSequence_UnnamedField) {
  ------------------
  |  Branch (474:13): [True: 3, False: 121]
  ------------------
  475|      3|            (*n_unnamed_members)++;
  476|      3|        }
  477|    124|    }
  478|     17|    return i;
  479|     17|}
structseq.c:initialize_members:
  542|     17|{
  543|     17|    PyMemberDef *members;
  544|       |
  545|     17|    members = PyMem_NEW(PyMemberDef, n_members - n_unnamed_members + 1);
  ------------------
  |  |   82|     17|#define PyMem_NEW(type, n)        PyMem_New(type, (n))
  |  |  ------------------
  |  |  |  |   64|     17|  ( ((size_t)(n) > PY_SSIZE_T_MAX / sizeof(type)) ? NULL :      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|     17|#   define PY_SSIZE_T_MAX SSIZE_MAX
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (64:5): [True: 0, False: 17]
  |  |  |  |  ------------------
  |  |  |  |   65|     17|        ( (type *) PyMem_Malloc((n) * sizeof(type)) ) )
  |  |  ------------------
  ------------------
  546|     17|    if (members == NULL) {
  ------------------
  |  Branch (546:9): [True: 0, False: 17]
  ------------------
  547|      0|        PyErr_NoMemory();
  548|      0|        return NULL;
  549|      0|    }
  550|       |
  551|     17|    Py_ssize_t i, k;
  552|    141|    for (i = k = 0; i < n_members; ++i) {
  ------------------
  |  Branch (552:21): [True: 124, False: 17]
  ------------------
  553|    124|        if (desc->fields[i].name == PyStructSequence_UnnamedField) {
  ------------------
  |  Branch (553:13): [True: 3, False: 121]
  ------------------
  554|      3|            continue;
  555|      3|        }
  556|       |
  557|       |        /* The names and docstrings in these MemberDefs are statically */
  558|       |        /* allocated so it is expected that they'll outlive the MemberDef */
  559|    121|        members[k].name = desc->fields[i].name;
  560|    121|        members[k].type = _Py_T_OBJECT;
  ------------------
  |  |   59|    121|#define _Py_T_OBJECT   6  // Deprecated, use Py_T_OBJECT_EX instead
  ------------------
  561|    121|        members[k].offset = offsetof(PyStructSequence, ob_item)
  562|    121|          + i * sizeof(PyObject*);
  563|    121|        members[k].flags = Py_READONLY;
  ------------------
  |  |   83|    121|#define Py_READONLY            (1 << 0)
  ------------------
  564|    121|        members[k].doc = desc->fields[i].doc;
  565|    121|        k++;
  566|    121|    }
  567|     17|    members[k].name = NULL;
  568|       |
  569|     17|    return members;
  570|     17|}
structseq.c:initialize_static_fields:
  577|      8|{
  578|      8|    type->tp_name = desc->name;
  579|       |    // Account for hidden members in tp_basicsize because they are not
  580|       |    // included in the variable size.
  581|      8|    Py_ssize_t n_hidden = n_members - desc->n_in_sequence;
  582|      8|    type->tp_basicsize = sizeof(PyStructSequence) + (n_hidden - 1) * sizeof(PyObject *);
  583|      8|    type->tp_itemsize = sizeof(PyObject *);
  584|      8|    type->tp_dealloc = structseq_dealloc;
  585|      8|    type->tp_repr = structseq_repr;
  586|      8|    type->tp_doc = desc->doc;
  587|      8|    type->tp_base = &PyTuple_Type;
  588|      8|    type->tp_methods = structseq_methods;
  589|      8|    type->tp_new = structseq_new;
  590|      8|    type->tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | tp_flags;
  ------------------
  |  |  560|      8|#define Py_TPFLAGS_DEFAULT  ( \
  |  |  561|      8|                 Py_TPFLAGS_HAVE_STACKLESS_EXTENSION | \
  |  |  ------------------
  |  |  |  |  530|      8|#define Py_TPFLAGS_HAVE_STACKLESS_EXTENSION 0
  |  |  ------------------
  |  |  562|      8|                0)
  ------------------
                  type->tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | tp_flags;
  ------------------
  |  |  524|      8|#define Py_TPFLAGS_HAVE_GC (1UL << 14)
  ------------------
  591|      8|    type->tp_traverse = structseq_traverse;
  592|      8|    type->tp_members = tp_members;
  593|      8|}
structseq.c:initialize_structseq_dict:
  483|     17|                          Py_ssize_t n_members, Py_ssize_t n_unnamed_members) {
  484|     17|    PyObject *v;
  485|       |
  486|     17|#define SET_DICT_FROM_SIZE(key, value)                                         \
  487|     17|    do {                                                                       \
  488|     17|        v = PyLong_FromSsize_t(value);                                         \
  489|     17|        if (v == NULL) {                                                       \
  490|     17|            return -1;                                                         \
  491|     17|        }                                                                      \
  492|     17|        if (PyDict_SetItemString(dict, key, v) < 0) {                          \
  493|     17|            Py_DECREF(v);                                                      \
  494|     17|            return -1;                                                         \
  495|     17|        }                                                                      \
  496|     17|        Py_DECREF(v);                                                          \
  497|     17|    } while (0)
  498|       |
  499|     17|    SET_DICT_FROM_SIZE(visible_length_key, desc->n_in_sequence);
  ------------------
  |  |  487|     17|    do {                                                                       \
  |  |  488|     17|        v = PyLong_FromSsize_t(value);                                         \
  |  |  489|     17|        if (v == NULL) {                                                       \
  |  |  ------------------
  |  |  |  Branch (489:13): [True: 0, False: 17]
  |  |  ------------------
  |  |  490|      0|            return -1;                                                         \
  |  |  491|      0|        }                                                                      \
  |  |  492|     17|        if (PyDict_SetItemString(dict, key, v) < 0) {                          \
  |  |  ------------------
  |  |  |  Branch (492:13): [True: 0, False: 17]
  |  |  ------------------
  |  |  493|      0|            Py_DECREF(v);                                                      \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  494|      0|            return -1;                                                         \
  |  |  495|      0|        }                                                                      \
  |  |  496|     17|        Py_DECREF(v);                                                          \
  |  |  ------------------
  |  |  |  |  430|     17|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     17|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     17|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|     17|    } while (0)
  |  |  ------------------
  |  |  |  Branch (497:14): [Folded, False: 17]
  |  |  ------------------
  ------------------
  500|     17|    SET_DICT_FROM_SIZE(real_length_key, n_members);
  ------------------
  |  |  487|     17|    do {                                                                       \
  |  |  488|     17|        v = PyLong_FromSsize_t(value);                                         \
  |  |  489|     17|        if (v == NULL) {                                                       \
  |  |  ------------------
  |  |  |  Branch (489:13): [True: 0, False: 17]
  |  |  ------------------
  |  |  490|      0|            return -1;                                                         \
  |  |  491|      0|        }                                                                      \
  |  |  492|     17|        if (PyDict_SetItemString(dict, key, v) < 0) {                          \
  |  |  ------------------
  |  |  |  Branch (492:13): [True: 0, False: 17]
  |  |  ------------------
  |  |  493|      0|            Py_DECREF(v);                                                      \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  494|      0|            return -1;                                                         \
  |  |  495|      0|        }                                                                      \
  |  |  496|     17|        Py_DECREF(v);                                                          \
  |  |  ------------------
  |  |  |  |  430|     17|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     17|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     17|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|     17|    } while (0)
  |  |  ------------------
  |  |  |  Branch (497:14): [Folded, False: 17]
  |  |  ------------------
  ------------------
  501|     17|    SET_DICT_FROM_SIZE(unnamed_fields_key, n_unnamed_members);
  ------------------
  |  |  487|     17|    do {                                                                       \
  |  |  488|     17|        v = PyLong_FromSsize_t(value);                                         \
  |  |  489|     17|        if (v == NULL) {                                                       \
  |  |  ------------------
  |  |  |  Branch (489:13): [True: 0, False: 17]
  |  |  ------------------
  |  |  490|      0|            return -1;                                                         \
  |  |  491|      0|        }                                                                      \
  |  |  492|     17|        if (PyDict_SetItemString(dict, key, v) < 0) {                          \
  |  |  ------------------
  |  |  |  Branch (492:13): [True: 0, False: 17]
  |  |  ------------------
  |  |  493|      0|            Py_DECREF(v);                                                      \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  494|      0|            return -1;                                                         \
  |  |  495|      0|        }                                                                      \
  |  |  496|     17|        Py_DECREF(v);                                                          \
  |  |  ------------------
  |  |  |  |  430|     17|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     17|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     17|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  497|     17|    } while (0)
  |  |  ------------------
  |  |  |  Branch (497:14): [Folded, False: 17]
  |  |  ------------------
  ------------------
  502|       |
  503|       |    // Prepare and set __match_args__
  504|     17|    Py_ssize_t i, k;
  505|     17|    PyObject* keys = PyTuple_New(desc->n_in_sequence);
  506|     17|    if (keys == NULL) {
  ------------------
  |  Branch (506:9): [True: 0, False: 17]
  ------------------
  507|      0|        return -1;
  508|      0|    }
  509|       |
  510|    125|    for (i = k = 0; i < desc->n_in_sequence; ++i) {
  ------------------
  |  Branch (510:21): [True: 108, False: 17]
  ------------------
  511|    108|        if (desc->fields[i].name == PyStructSequence_UnnamedField) {
  ------------------
  |  Branch (511:13): [True: 3, False: 105]
  ------------------
  512|      3|            continue;
  513|      3|        }
  514|    105|        PyObject* new_member = PyUnicode_FromString(desc->fields[i].name);
  515|    105|        if (new_member == NULL) {
  ------------------
  |  Branch (515:13): [True: 0, False: 105]
  ------------------
  516|      0|            goto error;
  517|      0|        }
  518|    105|        PyTuple_SET_ITEM(keys, k, new_member);
  ------------------
  |  |   40|    105|    PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|    105|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    105|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|    105|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    105|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  519|    105|        k++;
  520|    105|    }
  521|       |
  522|     17|    if (_PyTuple_Resize(&keys, k) == -1) {
  ------------------
  |  Branch (522:9): [True: 0, False: 17]
  ------------------
  523|      0|        assert(keys == NULL);
  ------------------
  |  Branch (523:9): [True: 0, False: 0]
  ------------------
  524|      0|        return -1;
  525|      0|    }
  526|       |
  527|     17|    if (PyDict_SetItemString(dict, match_args_key, keys) < 0) {
  ------------------
  |  Branch (527:9): [True: 0, False: 17]
  ------------------
  528|      0|        goto error;
  529|      0|    }
  530|       |
  531|     17|    Py_DECREF(keys);
  ------------------
  |  |  430|     17|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     17|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     17|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  532|     17|    return 0;
  533|       |
  534|      0|error:
  535|      0|    Py_DECREF(keys);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  536|      0|    return -1;
  537|     17|}
structseq.c:structseq_dealloc:
  133|     14|{
  134|     14|    PyStructSequence *obj = (PyStructSequence *)op;
  135|     14|    Py_ssize_t i, size;
  136|     14|    PyObject_GC_UnTrack(obj);
  137|       |
  138|     14|    PyTypeObject *tp = Py_TYPE(obj);
  ------------------
  |  |  213|     14|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     14|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     14|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  139|       |    // gh-122527: We can't use REAL_SIZE_TP() or any macros that access the
  140|       |    // type's dictionary here, because the dictionary may have already been
  141|       |    // cleared by the garbage collector.
  142|     14|    size = REAL_SIZE(obj);
  ------------------
  |  |   49|     14|#define REAL_SIZE(op) get_real_size((PyObject *)op)
  ------------------
  143|    280|    for (i = 0; i < size; ++i) {
  ------------------
  |  Branch (143:17): [True: 266, False: 14]
  ------------------
  144|    266|        Py_XDECREF(obj->ob_item[i]);
  ------------------
  |  |  524|    266|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    266|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    266|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  145|    266|    }
  146|     14|    PyObject_GC_Del(obj);
  147|     14|    if (_PyType_HasFeature(tp, Py_TPFLAGS_HEAPTYPE)) {
  ------------------
  |  |  503|     14|#define Py_TPFLAGS_HEAPTYPE (1UL << 9)
  ------------------
  |  Branch (147:9): [True: 14, False: 0]
  ------------------
  148|     14|        Py_DECREF(tp);
  ------------------
  |  |  430|     14|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     14|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     14|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  149|     14|    }
  150|     14|}

PyTuple_New:
   76|  2.31k|{
   77|  2.31k|    PyTupleObject *op;
   78|  2.31k|    if (size == 0) {
  ------------------
  |  Branch (78:9): [True: 78, False: 2.24k]
  ------------------
   79|     78|        return tuple_get_empty();
   80|     78|    }
   81|  2.24k|    op = tuple_alloc(size);
   82|  2.24k|    if (op == NULL) {
  ------------------
  |  Branch (82:9): [True: 0, False: 2.24k]
  ------------------
   83|      0|        return NULL;
   84|      0|    }
   85|  13.9k|    for (Py_ssize_t i = 0; i < size; i++) {
  ------------------
  |  Branch (85:28): [True: 11.6k, False: 2.24k]
  ------------------
   86|  11.6k|        op->ob_item[i] = NULL;
   87|  11.6k|    }
   88|  2.24k|    _PyObject_GC_TRACK(op);
  ------------------
  |  |  513|  2.24k|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  2.24k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.24k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   89|  2.24k|    return (PyObject *) op;
   90|  2.24k|}
PyTuple_Size:
   94|    311|{
   95|    311|    if (!PyTuple_Check(op)) {
  ------------------
  |  |   27|    311|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TUPLE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|    311|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (95:9): [True: 0, False: 311]
  ------------------
   96|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
   97|      0|        return -1;
   98|      0|    }
   99|    311|    else
  100|    311|        return Py_SIZE(op);
  ------------------
  |  |  214|    311|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    311|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    311|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  101|    311|}
PyTuple_GetItem:
  105|    304|{
  106|    304|    if (!PyTuple_Check(op)) {
  ------------------
  |  |   27|    304|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TUPLE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|    304|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (106:9): [True: 0, False: 304]
  ------------------
  107|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
  108|      0|        return NULL;
  109|      0|    }
  110|    304|    if (i < 0 || i >= Py_SIZE(op)) {
  ------------------
  |  |  214|    304|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    304|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    304|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (110:9): [True: 0, False: 304]
  |  Branch (110:18): [True: 0, False: 304]
  ------------------
  111|      0|        PyErr_SetString(PyExc_IndexError, "tuple index out of range");
  112|      0|        return NULL;
  113|      0|    }
  114|    304|    return ((PyTupleObject *)op) -> ob_item[i];
  115|    304|}
_PyTuple_MaybeUntrack:
  139|  1.02k|{
  140|  1.02k|    PyTupleObject *t;
  141|  1.02k|    Py_ssize_t i, n;
  142|       |
  143|  1.02k|    if (!PyTuple_CheckExact(op) || !_PyObject_GC_IS_TRACKED(op))
  ------------------
  |  |   28|  1.02k|#define PyTuple_CheckExact(op) Py_IS_TYPE((op), &PyTuple_Type)
  |  |  ------------------
  |  |  |  |  215|  2.04k|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|  1.02k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|  1.02k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  if (!PyTuple_CheckExact(op) || !_PyObject_GC_IS_TRACKED(op))
  ------------------
  |  |   81|  1.02k|#define _PyObject_GC_IS_TRACKED(op) _PyObject_GC_IS_TRACKED(_Py_CAST(PyObject*, op))
  |  |  ------------------
  |  |  |  |   37|  1.02k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (143:9): [True: 0, False: 1.02k]
  |  Branch (143:36): [True: 0, False: 1.02k]
  ------------------
  144|      0|        return;
  145|  1.02k|    t = (PyTupleObject *) op;
  146|  1.02k|    n = Py_SIZE(t);
  ------------------
  |  |  214|  1.02k|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  1.02k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.02k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  147|  5.00k|    for (i = 0; i < n; i++) {
  ------------------
  |  Branch (147:17): [True: 4.16k, False: 838]
  ------------------
  148|  4.16k|        PyObject *elt = PyTuple_GET_ITEM(t, i);
  ------------------
  |  |   29|  4.16k|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|  4.16k|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  4.16k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (148:25): [True: 4.16k, False: 0]
  ------------------
  149|       |        /* Tuple with NULL elements aren't
  150|       |           fully constructed, don't untrack
  151|       |           them yet. */
  152|  4.16k|        if (!elt ||
  ------------------
  |  Branch (152:13): [True: 0, False: 4.16k]
  ------------------
  153|  4.16k|            _PyObject_GC_MAY_BE_TRACKED(elt))
  ------------------
  |  Branch (153:13): [True: 182, False: 3.98k]
  ------------------
  154|    182|            return;
  155|  4.16k|    }
  156|    838|    _PyObject_GC_UNTRACK(op);
  ------------------
  |  |  515|    838|        _PyObject_GC_UNTRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    838|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    838|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  157|    838|}
PyTuple_Pack:
  173|    301|{
  174|    301|    Py_ssize_t i;
  175|    301|    PyObject *o;
  176|    301|    PyObject **items;
  177|    301|    va_list vargs;
  178|    301|    bool track = false;
  179|       |
  180|    301|    if (n == 0) {
  ------------------
  |  Branch (180:9): [True: 0, False: 301]
  ------------------
  181|      0|        return tuple_get_empty();
  182|      0|    }
  183|       |
  184|    301|    va_start(vargs, n);
  185|    301|    PyTupleObject *result = tuple_alloc(n);
  186|    301|    if (result == NULL) {
  ------------------
  |  Branch (186:9): [True: 0, False: 301]
  ------------------
  187|      0|        va_end(vargs);
  188|      0|        return NULL;
  189|      0|    }
  190|    301|    items = result->ob_item;
  191|    650|    for (i = 0; i < n; i++) {
  ------------------
  |  Branch (191:17): [True: 349, False: 301]
  ------------------
  192|    349|        o = va_arg(vargs, PyObject *);
  193|    349|        if (!track && maybe_tracked(o)) {
  ------------------
  |  Branch (193:13): [True: 339, False: 10]
  |  Branch (193:23): [True: 287, False: 52]
  ------------------
  194|    287|            track = true;
  195|    287|        }
  196|    349|        items[i] = Py_NewRef(o);
  ------------------
  |  |  550|    349|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    349|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    349|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  197|    349|    }
  198|    301|    va_end(vargs);
  199|    301|    if (track) {
  ------------------
  |  Branch (199:9): [True: 287, False: 14]
  ------------------
  200|    287|        _PyObject_GC_TRACK(result);
  ------------------
  |  |  513|    287|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    287|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    287|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  201|    287|    }
  202|    301|    return (PyObject *)result;
  203|    301|}
_PyTuple_FromPair:
  207|      1|{
  208|      1|    assert(first != NULL);
  ------------------
  |  Branch (208:5): [True: 1, False: 0]
  ------------------
  209|      1|    assert(second != NULL);
  ------------------
  |  Branch (209:5): [True: 1, False: 0]
  ------------------
  210|       |
  211|      1|    return _PyTuple_FromPairSteal(Py_NewRef(first), Py_NewRef(second));
  ------------------
  |  |  550|      1|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  return _PyTuple_FromPairSteal(Py_NewRef(first), Py_NewRef(second));
  ------------------
  |  |  550|      1|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  212|      1|}
_PyTuple_FromPairSteal:
  216|    286|{
  217|    286|    assert(first != NULL);
  ------------------
  |  Branch (217:5): [True: 286, False: 0]
  ------------------
  218|    286|    assert(second != NULL);
  ------------------
  |  Branch (218:5): [True: 286, False: 0]
  ------------------
  219|       |
  220|    286|    PyTupleObject *op = tuple_alloc(2);
  221|    286|    if (op == NULL) {
  ------------------
  |  Branch (221:9): [True: 0, False: 286]
  ------------------
  222|      0|        Py_DECREF(first);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  223|      0|        Py_DECREF(second);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  224|      0|        return NULL;
  225|      0|    }
  226|    286|    PyObject **items = op->ob_item;
  227|    286|    items[0] = first;
  228|    286|    items[1] = second;
  229|    286|    if (maybe_tracked(first) || maybe_tracked(second)) {
  ------------------
  |  Branch (229:9): [True: 1, False: 285]
  |  Branch (229:33): [True: 187, False: 98]
  ------------------
  230|    188|        _PyObject_GC_TRACK(op);
  ------------------
  |  |  513|    188|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    188|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    188|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  231|    188|    }
  232|    286|    return (PyObject *)op;
  233|    286|}
PyTuple_FromArray:
  434|    851|{
  435|    851|    if (n == 0) {
  ------------------
  |  Branch (435:9): [True: 185, False: 666]
  ------------------
  436|    185|        return tuple_get_empty();
  437|    185|    }
  438|       |
  439|    666|    PyTupleObject *tuple = tuple_alloc(n);
  440|    666|    if (tuple == NULL) {
  ------------------
  |  Branch (440:9): [True: 0, False: 666]
  ------------------
  441|      0|        return NULL;
  442|      0|    }
  443|    666|    PyObject **dst = tuple->ob_item;
  444|    666|    bool track = false;
  445|  2.10k|    for (Py_ssize_t i = 0; i < n; i++) {
  ------------------
  |  Branch (445:28): [True: 1.44k, False: 666]
  ------------------
  446|  1.44k|        PyObject *item = src[i];
  447|  1.44k|        if (!track && maybe_tracked(item)) {
  ------------------
  |  Branch (447:13): [True: 934, False: 508]
  |  Branch (447:23): [True: 483, False: 451]
  ------------------
  448|    483|            track = true;
  449|    483|        }
  450|  1.44k|        dst[i] = Py_NewRef(item);
  ------------------
  |  |  550|  1.44k|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|  1.44k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.44k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  451|  1.44k|    }
  452|    666|    if (track) {
  ------------------
  |  Branch (452:9): [True: 483, False: 183]
  ------------------
  453|    483|        _PyObject_GC_TRACK(tuple);
  ------------------
  |  |  513|    483|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    483|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    483|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  454|    483|    }
  455|    666|    return (PyObject *)tuple;
  456|    666|}
_PyTuple_FromStackRefStealOnSuccess:
  460|    433|{
  461|    433|    if (n == 0) {
  ------------------
  |  Branch (461:9): [True: 0, False: 433]
  ------------------
  462|      0|        return tuple_get_empty();
  463|      0|    }
  464|    433|    PyTupleObject *tuple = tuple_alloc(n);
  465|    433|    if (tuple == NULL) {
  ------------------
  |  Branch (465:9): [True: 0, False: 433]
  ------------------
  466|      0|        return NULL;
  467|      0|    }
  468|    433|    PyObject **dst = tuple->ob_item;
  469|    433|    bool track = false;
  470|  1.27k|    for (Py_ssize_t i = 0; i < n; i++) {
  ------------------
  |  Branch (470:28): [True: 842, False: 433]
  ------------------
  471|    842|        PyObject *item = PyStackRef_AsPyObjectSteal(src[i]);
  472|    842|        if (!track && maybe_tracked(item)) {
  ------------------
  |  Branch (472:13): [True: 695, False: 147]
  |  Branch (472:23): [True: 173, False: 522]
  ------------------
  473|    173|            track = true;
  474|    173|        }
  475|    842|        dst[i] = item;
  476|    842|    }
  477|    433|    if (track) {
  ------------------
  |  Branch (477:9): [True: 173, False: 260]
  ------------------
  478|    173|        _PyObject_GC_TRACK(tuple);
  ------------------
  |  |  513|    173|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    173|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    173|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  479|    173|    }
  480|    433|    return (PyObject *)tuple;
  481|    433|}
_PyTuple_FromArraySteal:
  485|      8|{
  486|      8|    if (n == 0) {
  ------------------
  |  Branch (486:9): [True: 0, False: 8]
  ------------------
  487|      0|        return tuple_get_empty();
  488|      0|    }
  489|      8|    PyTupleObject *tuple = tuple_alloc(n);
  490|      8|    if (tuple == NULL) {
  ------------------
  |  Branch (490:9): [True: 0, False: 8]
  ------------------
  491|      0|        for (Py_ssize_t i = 0; i < n; i++) {
  ------------------
  |  Branch (491:32): [True: 0, False: 0]
  ------------------
  492|      0|            Py_DECREF(src[i]);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  493|      0|        }
  494|      0|        return NULL;
  495|      0|    }
  496|      8|    PyObject **dst = tuple->ob_item;
  497|     36|    for (Py_ssize_t i = 0; i < n; i++) {
  ------------------
  |  Branch (497:28): [True: 28, False: 8]
  ------------------
  498|     28|        PyObject *item = src[i];
  499|     28|        dst[i] = item;
  500|     28|    }
  501|      8|    _PyObject_GC_TRACK(tuple);
  ------------------
  |  |  513|      8|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      8|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  502|      8|    return (PyObject *)tuple;
  503|      8|}
PyTuple_GetSlice:
  542|     34|{
  543|     34|    if (op == NULL || !PyTuple_Check(op)) {
  ------------------
  |  |   27|     34|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TUPLE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     34|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (543:9): [True: 0, False: 34]
  |  Branch (543:23): [True: 0, False: 34]
  ------------------
  544|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
  545|      0|        return NULL;
  546|      0|    }
  547|     34|    return tuple_slice((PyTupleObject *)op, i, j);
  548|     34|}
_PyTuple_Concat:
  552|      1|{
  553|      1|    PyTupleObject *a = _PyTuple_CAST(aa);
  ------------------
  |  |   19|      1|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (553:24): [True: 1, False: 0]
  ------------------
  554|      1|    if (Py_SIZE(a) == 0 && PyTuple_CheckExact(bb)) {
  ------------------
  |  |  214|      1|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  if (Py_SIZE(a) == 0 && PyTuple_CheckExact(bb)) {
  ------------------
  |  |   28|      0|#define PyTuple_CheckExact(op) Py_IS_TYPE((op), &PyTuple_Type)
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (554:9): [True: 0, False: 1]
  ------------------
  555|      0|        return Py_NewRef(bb);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  556|      0|    }
  557|      1|    if (!PyTuple_Check(bb)) {
  ------------------
  |  |   27|      1|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TUPLE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      1|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (557:9): [True: 0, False: 1]
  ------------------
  558|      0|        PyErr_Format(PyExc_TypeError,
  559|      0|             "can only concatenate tuple (not \"%.200s\") to tuple",
  560|      0|                 Py_TYPE(bb)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  561|      0|        return NULL;
  562|      0|    }
  563|      1|    PyTupleObject *b = (PyTupleObject *)bb;
  564|       |
  565|      1|    if (Py_SIZE(b) == 0 && PyTuple_CheckExact(a)) {
  ------------------
  |  |  214|      1|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  if (Py_SIZE(b) == 0 && PyTuple_CheckExact(a)) {
  ------------------
  |  |   28|      0|#define PyTuple_CheckExact(op) Py_IS_TYPE((op), &PyTuple_Type)
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (565:9): [True: 0, False: 1]
  ------------------
  566|      0|        return Py_NewRef(a);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  567|      0|    }
  568|      1|    assert((size_t)Py_SIZE(a) + (size_t)Py_SIZE(b) < PY_SSIZE_T_MAX);
  ------------------
  |  Branch (568:5): [True: 1, False: 0]
  ------------------
  569|      1|    Py_ssize_t size = Py_SIZE(a) + Py_SIZE(b);
  ------------------
  |  |  214|      1|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  Py_ssize_t size = Py_SIZE(a) + Py_SIZE(b);
  ------------------
  |  |  214|      1|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  570|      1|    if (size == 0) {
  ------------------
  |  Branch (570:9): [True: 0, False: 1]
  ------------------
  571|      0|        return tuple_get_empty();
  572|      0|    }
  573|       |
  574|      1|    PyTupleObject *np = tuple_alloc(size);
  575|      1|    if (np == NULL) {
  ------------------
  |  Branch (575:9): [True: 0, False: 1]
  ------------------
  576|      0|        return NULL;
  577|      0|    }
  578|       |
  579|      1|    PyObject **src = a->ob_item;
  580|      1|    PyObject **dest = np->ob_item;
  581|      6|    for (Py_ssize_t i = 0; i < Py_SIZE(a); i++) {
  ------------------
  |  |  214|      6|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      6|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (581:28): [True: 5, False: 1]
  ------------------
  582|      5|        PyObject *v = src[i];
  583|      5|        dest[i] = Py_NewRef(v);
  ------------------
  |  |  550|      5|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  584|      5|    }
  585|       |
  586|      1|    src = b->ob_item;
  587|      1|    dest = np->ob_item + Py_SIZE(a);
  ------------------
  |  |  214|      1|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  588|      2|    for (Py_ssize_t i = 0; i < Py_SIZE(b); i++) {
  ------------------
  |  |  214|      2|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (588:28): [True: 1, False: 1]
  ------------------
  589|      1|        PyObject *v = src[i];
  590|      1|        dest[i] = Py_NewRef(v);
  ------------------
  |  |  550|      1|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  591|      1|    }
  592|       |
  593|      1|    _PyObject_GC_TRACK(np);
  ------------------
  |  |  513|      1|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  594|      1|    return (PyObject *)np;
  595|      1|}
_PyTuple_Resize:
 1026|     17|{
 1027|     17|    PyTupleObject *v;
 1028|     17|    PyTupleObject *sv;
 1029|     17|    Py_ssize_t i;
 1030|     17|    Py_ssize_t oldsize;
 1031|       |
 1032|     17|    v = (PyTupleObject *) *pv;
 1033|     17|    if (v == NULL || !Py_IS_TYPE(v, &PyTuple_Type) ||
  ------------------
  |  |  215|     34|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|     17|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     17|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1033:9): [True: 0, False: 17]
  |  Branch (1033:22): [True: 0, False: 17]
  ------------------
 1034|     17|        (Py_SIZE(v) != 0 && !_PyObject_IsUniquelyReferenced(*pv))) {
  ------------------
  |  |  214|     17|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     17|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     17|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1034:10): [True: 17, False: 0]
  |  Branch (1034:29): [True: 0, False: 17]
  ------------------
 1035|      0|        *pv = 0;
 1036|      0|        Py_XDECREF(v);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1037|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
 1038|      0|        return -1;
 1039|      0|    }
 1040|       |
 1041|     17|    oldsize = Py_SIZE(v);
  ------------------
  |  |  214|     17|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     17|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     17|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1042|     17|    if (oldsize == newsize) {
  ------------------
  |  Branch (1042:9): [True: 16, False: 1]
  ------------------
 1043|     16|        return 0;
 1044|     16|    }
 1045|      1|    if (newsize == 0) {
  ------------------
  |  Branch (1045:9): [True: 0, False: 1]
  ------------------
 1046|      0|        Py_DECREF(v);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1047|      0|        *pv = tuple_get_empty();
 1048|      0|        return 0;
 1049|      0|    }
 1050|      1|    if (oldsize == 0) {
  ------------------
  |  Branch (1050:9): [True: 0, False: 1]
  ------------------
 1051|       |#ifdef Py_DEBUG
 1052|       |        assert(v == &_Py_SINGLETON(tuple_empty));
 1053|       |#endif
 1054|       |        /* The empty tuple is statically allocated so we never
 1055|       |           resize it in-place. */
 1056|      0|        Py_DECREF(v);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1057|      0|        *pv = PyTuple_New(newsize);
 1058|      0|        return *pv == NULL ? -1 : 0;
  ------------------
  |  Branch (1058:16): [True: 0, False: 0]
  ------------------
 1059|      0|    }
 1060|       |
 1061|      1|    if (_PyObject_GC_IS_TRACKED(v)) {
  ------------------
  |  |   81|      1|#define _PyObject_GC_IS_TRACKED(op) _PyObject_GC_IS_TRACKED(_Py_CAST(PyObject*, op))
  |  |  ------------------
  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  |  Branch (81:37): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 1062|      1|        _PyObject_GC_UNTRACK(v);
  ------------------
  |  |  515|      1|        _PyObject_GC_UNTRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1063|      1|    }
 1064|       |#ifdef Py_TRACE_REFS
 1065|       |    _Py_ForgetReference((PyObject *) v);
 1066|       |#endif
 1067|       |    /* DECREF items deleted by shrinkage */
 1068|      4|    for (i = newsize; i < oldsize; i++) {
  ------------------
  |  Branch (1068:23): [True: 3, False: 1]
  ------------------
 1069|      3|        Py_CLEAR(v->ob_item[i]);
  ------------------
  |  |  484|      3|    do { \
  |  |  485|      3|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      3|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      3|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 3]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      3|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 3]
  |  |  ------------------
  ------------------
 1070|      3|    }
 1071|      1|    _PyReftracerTrack((PyObject *)v, PyRefTracer_DESTROY);
  ------------------
  |  |  112|      1|    do { \
  |  |  113|      1|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  114|      1|        if (tracer->tracer_func != NULL) { \
  |  |  ------------------
  |  |  |  Branch (114:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  117|      0|        } \
  |  |  118|      1|    } while(0)
  |  |  ------------------
  |  |  |  Branch (118:13): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1072|      1|    sv = PyObject_GC_Resize(PyTupleObject, v, newsize);
  ------------------
  |  |  161|      1|                ( (type *) _PyObject_GC_Resize(_PyVarObject_CAST(op), (n)) )
  |  |  ------------------
  |  |  |  |  182|      1|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1073|      1|    if (sv == NULL) {
  ------------------
  |  Branch (1073:9): [True: 0, False: 1]
  ------------------
 1074|      0|        *pv = NULL;
 1075|       |#ifdef Py_REF_DEBUG
 1076|       |        _Py_DecRefTotal(_PyThreadState_GET());
 1077|       |#endif
 1078|      0|        PyObject_GC_Del(v);
 1079|      0|        return -1;
 1080|      0|    }
 1081|      1|    _Py_NewReferenceNoTotal((PyObject *) sv);
 1082|       |    /* Zero out items added by growing */
 1083|      1|    if (newsize > oldsize)
  ------------------
  |  Branch (1083:9): [True: 0, False: 1]
  ------------------
 1084|      0|        memset(&sv->ob_item[oldsize], 0,
 1085|      0|               sizeof(*sv->ob_item) * (newsize - oldsize));
 1086|      1|    *pv = (PyObject *) sv;
 1087|      1|    _PyObject_GC_TRACK(sv);
  ------------------
  |  |  513|      1|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1088|      1|    return 0;
 1089|      1|}
tupleobject.c:tuple_get_empty:
   70|    263|{
   71|    263|    return (PyObject *)&_Py_SINGLETON(tuple_empty);
  ------------------
  |  |   18|    263|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  ------------------
  |  |  |  |   16|    263|    _PyRuntime.static_objects.NAME
  |  |  ------------------
  ------------------
   72|    263|}
tupleobject.c:tuple_alloc:
   38|  3.93k|{
   39|  3.93k|    if (size < 0) {
  ------------------
  |  Branch (39:9): [True: 0, False: 3.93k]
  ------------------
   40|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
   41|      0|        return NULL;
   42|      0|    }
   43|  3.93k|    assert(size != 0);    // The empty tuple is statically allocated.
  ------------------
  |  Branch (43:5): [True: 3.93k, False: 0]
  ------------------
   44|  3.93k|    Py_ssize_t index = size - 1;
   45|  3.93k|    if (index < PyTuple_MAXSAVESIZE) {
  ------------------
  |  |   11|  3.93k|#  define PyTuple_MAXSAVESIZE 20     // Largest tuple to save on freelist
  ------------------
  |  Branch (45:9): [True: 3.88k, False: 50]
  ------------------
   46|  3.88k|        PyTupleObject *op = _Py_FREELIST_POP(PyTupleObject, tuples[index]);
  ------------------
  |  |   43|  3.88k|    _Py_CAST(TYPE*, _PyFreeList_Pop(&_Py_freelists_GET()->NAME))
  |  |  ------------------
  |  |  |  |   37|  3.88k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
   47|  3.88k|        if (op != NULL) {
  ------------------
  |  Branch (47:13): [True: 1.63k, False: 2.25k]
  ------------------
   48|  1.63k|            _PyTuple_RESET_HASH_CACHE(op);
  ------------------
  |  |   44|  1.63k|    do {                                    \
  |  |   45|  1.63k|        assert(op != NULL);                 \
  |  |   46|  3.26k|        _PyTuple_CAST(op)->ob_hash = -1;    \
  |  |  ------------------
  |  |  |  |   19|  1.63k|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.63k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|  3.26k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (47:14): [Folded, False: 1.63k]
  |  |  ------------------
  ------------------
  |  Branch (48:13): [True: 1.63k, False: 0]
  |  Branch (48:13): [True: 1.63k, False: 0]
  ------------------
   49|  1.63k|            return op;
   50|  1.63k|        }
   51|  3.88k|    }
   52|       |    /* Check for overflow */
   53|  2.30k|    if ((size_t)size > ((size_t)PY_SSIZE_T_MAX - (sizeof(PyTupleObject) -
  ------------------
  |  |  137|  2.30k|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (53:9): [True: 0, False: 2.30k]
  ------------------
   54|  2.30k|                sizeof(PyObject *))) / sizeof(PyObject *)) {
   55|      0|        return (PyTupleObject *)PyErr_NoMemory();
   56|      0|    }
   57|  2.30k|    PyTupleObject *result = PyObject_GC_NewVar(PyTupleObject, &PyTuple_Type, size);
  ------------------
  |  |  183|  2.30k|    _Py_CAST(type*, _PyObject_GC_NewVar((typeobj), (n)))
  |  |  ------------------
  |  |  |  |   37|  2.30k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
   58|  2.30k|    if (result != NULL) {
  ------------------
  |  Branch (58:9): [True: 2.30k, False: 0]
  ------------------
   59|  2.30k|        _PyTuple_RESET_HASH_CACHE(result);
  ------------------
  |  |   44|  2.30k|    do {                                    \
  |  |   45|  2.30k|        assert(op != NULL);                 \
  |  |   46|  4.60k|        _PyTuple_CAST(op)->ob_hash = -1;    \
  |  |  ------------------
  |  |  |  |   19|  2.30k|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.30k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|  4.60k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (47:14): [Folded, False: 2.30k]
  |  |  ------------------
  ------------------
  |  Branch (59:9): [True: 2.30k, False: 0]
  |  Branch (59:9): [True: 2.30k, False: 0]
  ------------------
   60|  2.30k|    }
   61|  2.30k|    return result;
   62|  2.30k|}
tupleobject.c:maybe_tracked:
  167|  2.53k|{
  168|  2.53k|    return _PyType_IS_GC(Py_TYPE(ob));
  ------------------
  |  |  828|  2.53k|#define _PyType_IS_GC(t) _PyType_HasFeature((t), Py_TPFLAGS_HAVE_GC)
  |  |  ------------------
  |  |  |  |  524|  2.53k|#define Py_TPFLAGS_HAVE_GC (1UL << 14)
  |  |  ------------------
  ------------------
  169|  2.53k|}
tupleobject.c:tuple_slice:
  508|     34|{
  509|     34|    if (ilow < 0)
  ------------------
  |  Branch (509:9): [True: 0, False: 34]
  ------------------
  510|      0|        ilow = 0;
  511|     34|    if (ihigh > Py_SIZE(a))
  ------------------
  |  |  214|     34|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     34|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     34|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (511:9): [True: 0, False: 34]
  ------------------
  512|      0|        ihigh = Py_SIZE(a);
  ------------------
  |  |  214|      0|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  513|     34|    if (ihigh < ilow)
  ------------------
  |  Branch (513:9): [True: 0, False: 34]
  ------------------
  514|      0|        ihigh = ilow;
  515|     34|    if (ilow == 0 && ihigh == Py_SIZE(a) && PyTuple_CheckExact(a)) {
  ------------------
  |  |  214|     39|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  if (ilow == 0 && ihigh == Py_SIZE(a) && PyTuple_CheckExact(a)) {
  ------------------
  |  |   28|      0|#define PyTuple_CheckExact(op) Py_IS_TYPE((op), &PyTuple_Type)
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (515:9): [True: 5, False: 29]
  |  Branch (515:22): [True: 0, False: 5]
  ------------------
  516|      0|        return Py_NewRef(a);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  517|      0|    }
  518|     34|    return PyTuple_FromArray(a->ob_item + ilow, ihigh - ilow);
  519|     34|}
tupleobject.c:tuple_dealloc:
  256|  1.71k|{
  257|  1.71k|    PyTupleObject *op = _PyTuple_CAST(self);
  ------------------
  |  |   19|  1.71k|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|  1.71k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (257:25): [True: 1.71k, False: 0]
  ------------------
  258|  1.71k|    if (Py_SIZE(op) == 0) {
  ------------------
  |  |  214|  1.71k|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  1.71k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.71k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (258:9): [True: 0, False: 1.71k]
  ------------------
  259|       |        /* The empty tuple is statically allocated. */
  260|      0|        if (op == &_Py_SINGLETON(tuple_empty)) {
  ------------------
  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  ------------------
  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  ------------------
  ------------------
  |  Branch (260:13): [True: 0, False: 0]
  ------------------
  261|       |#ifdef Py_DEBUG
  262|       |            _Py_FatalRefcountError("deallocating the empty tuple singleton");
  263|       |#else
  264|      0|            return;
  265|      0|#endif
  266|      0|        }
  267|       |#ifdef Py_DEBUG
  268|       |        /* tuple subclasses have their own empty instances. */
  269|       |        assert(!PyTuple_CheckExact(op));
  270|       |#endif
  271|      0|    }
  272|       |
  273|  1.71k|    PyObject_GC_UnTrack(op);
  274|       |
  275|  1.71k|    Py_ssize_t i = Py_SIZE(op);
  ------------------
  |  |  214|  1.71k|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  1.71k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.71k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  276|  9.05k|    while (--i >= 0) {
  ------------------
  |  Branch (276:12): [True: 7.34k, False: 1.71k]
  ------------------
  277|  7.34k|        Py_XDECREF(op->ob_item[i]);
  ------------------
  |  |  524|  7.34k|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  7.34k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  7.34k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  278|  7.34k|    }
  279|       |    // This will abort on the empty singleton (if there is one).
  280|  1.71k|    if (!maybe_freelist_push(op)) {
  ------------------
  |  Branch (280:9): [True: 31, False: 1.68k]
  ------------------
  281|     31|        Py_TYPE(op)->tp_free((PyObject *)op);
  ------------------
  |  |  213|     31|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     31|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     31|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  282|     31|    }
  283|  1.71k|}
tupleobject.c:tuple_length:
  405|     18|{
  406|     18|    PyTupleObject *a = _PyTuple_CAST(self);
  ------------------
  |  |   19|     18|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|     18|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (406:24): [True: 18, False: 0]
  ------------------
  407|     18|    return Py_SIZE(a);
  ------------------
  |  |  214|     18|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     18|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     18|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  408|     18|}
tupleobject.c:tuple_item:
  423|      8|{
  424|      8|    PyTupleObject *a = _PyTuple_CAST(op);
  ------------------
  |  |   19|      8|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (424:24): [True: 8, False: 0]
  ------------------
  425|      8|    if (i < 0 || i >= Py_SIZE(a)) {
  ------------------
  |  |  214|      8|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      8|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (425:9): [True: 0, False: 8]
  |  Branch (425:18): [True: 0, False: 8]
  ------------------
  426|      0|        PyErr_SetString(PyExc_IndexError, "tuple index out of range");
  427|      0|        return NULL;
  428|      0|    }
  429|      8|    return Py_NewRef(a->ob_item[i]);
  ------------------
  |  |  550|      8|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      8|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  430|      8|}
tupleobject.c:tuple_contains:
  412|     27|{
  413|     27|    PyTupleObject *a = _PyTuple_CAST(self);
  ------------------
  |  |   19|     27|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|     27|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (413:24): [True: 27, False: 0]
  ------------------
  414|      0|    int cmp = 0;
  415|    659|    for (Py_ssize_t i = 0; cmp == 0 && i < Py_SIZE(a); ++i) {
  ------------------
  |  |  214|    633|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    633|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    633|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (415:28): [True: 633, False: 26]
  |  Branch (415:40): [True: 632, False: 1]
  ------------------
  416|    632|        cmp = PyObject_RichCompareBool(PyTuple_GET_ITEM(a, i), el, Py_EQ);
  ------------------
  |  |   29|    632|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|    632|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    632|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      cmp = PyObject_RichCompareBool(PyTuple_GET_ITEM(a, i), el, Py_EQ);
  ------------------
  |  |  654|    632|#define Py_EQ 2
  ------------------
  |  Branch (416:40): [True: 632, False: 0]
  ------------------
  417|    632|    }
  418|     27|    return cmp;
  419|     27|}
tupleobject.c:tuple_subscript:
  889|      8|{
  890|      8|    PyTupleObject *self = _PyTuple_CAST(op);
  ------------------
  |  |   19|      8|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (890:27): [True: 8, False: 0]
  ------------------
  891|      8|    if (_PyIndex_Check(item)) {
  ------------------
  |  Branch (891:9): [True: 8, False: 0]
  ------------------
  892|      8|        Py_ssize_t i = PyNumber_AsSsize_t(item, PyExc_IndexError);
  893|      8|        if (i == -1 && PyErr_Occurred())
  ------------------
  |  Branch (893:13): [True: 0, False: 8]
  |  Branch (893:24): [True: 0, False: 0]
  ------------------
  894|      0|            return NULL;
  895|      8|        if (i < 0)
  ------------------
  |  Branch (895:13): [True: 0, False: 8]
  ------------------
  896|      0|            i += PyTuple_GET_SIZE(self);
  ------------------
  |  |   27|      0|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  897|      8|        return tuple_item(op, i);
  898|      8|    }
  899|      0|    else if (PySlice_Check(item)) {
  ------------------
  |  |   22|      0|#define PySlice_Check(op) Py_IS_TYPE((op), &PySlice_Type)
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  900|      0|        Py_ssize_t start, stop, step, slicelength, i;
  901|      0|        size_t cur;
  902|      0|        PyObject* it;
  903|      0|        PyObject **src, **dest;
  904|       |
  905|      0|        if (PySlice_Unpack(item, &start, &stop, &step) < 0) {
  ------------------
  |  Branch (905:13): [True: 0, False: 0]
  ------------------
  906|      0|            return NULL;
  907|      0|        }
  908|      0|        slicelength = PySlice_AdjustIndices(PyTuple_GET_SIZE(self), &start,
  ------------------
  |  |   27|      0|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  909|      0|                                            &stop, step);
  910|       |
  911|      0|        if (slicelength <= 0) {
  ------------------
  |  Branch (911:13): [True: 0, False: 0]
  ------------------
  912|      0|            return tuple_get_empty();
  913|      0|        }
  914|      0|        else if (start == 0 && step == 1 &&
  ------------------
  |  Branch (914:18): [True: 0, False: 0]
  |  Branch (914:32): [True: 0, False: 0]
  ------------------
  915|      0|                 slicelength == PyTuple_GET_SIZE(self) &&
  ------------------
  |  |   27|      0|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (915:18): [True: 0, False: 0]
  ------------------
  916|      0|                 PyTuple_CheckExact(self)) {
  ------------------
  |  |   28|      0|#define PyTuple_CheckExact(op) Py_IS_TYPE((op), &PyTuple_Type)
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  917|      0|            return Py_NewRef(self);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  918|      0|        }
  919|      0|        else {
  920|      0|            PyTupleObject* result = tuple_alloc(slicelength);
  921|      0|            if (!result) return NULL;
  ------------------
  |  Branch (921:17): [True: 0, False: 0]
  ------------------
  922|       |
  923|      0|            src = self->ob_item;
  924|      0|            dest = result->ob_item;
  925|      0|            for (cur = start, i = 0; i < slicelength;
  ------------------
  |  Branch (925:38): [True: 0, False: 0]
  ------------------
  926|      0|                 cur += step, i++) {
  927|      0|                it = Py_NewRef(src[cur]);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  928|      0|                dest[i] = it;
  929|      0|            }
  930|       |
  931|      0|            _PyObject_GC_TRACK(result);
  ------------------
  |  |  513|      0|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  932|      0|            return (PyObject *)result;
  933|      0|        }
  934|      0|    }
  935|      0|    else {
  936|      0|        PyErr_Format(PyExc_TypeError,
  937|      0|                     "tuple indices must be integers or slices, not %.200s",
  938|      0|                     Py_TYPE(item)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  939|       |        return NULL;
  940|      0|    }
  941|      8|}
tupleobject.c:tuple_traverse:
  716|  2.04k|{
  717|  2.04k|    PyTupleObject *o = _PyTuple_CAST(self);
  ------------------
  |  |   19|  2.04k|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|  2.04k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (717:24): [True: 2.04k, False: 0]
  ------------------
  718|  11.1k|    for (Py_ssize_t i = Py_SIZE(o); --i >= 0; ) {
  ------------------
  |  |  214|  2.04k|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  2.04k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.04k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (718:37): [True: 9.10k, False: 2.04k]
  ------------------
  719|  9.10k|        Py_VISIT(o->ob_item[i]);
  ------------------
  |  |  194|  9.10k|    do {                                                                \
  |  |  195|  9.10k|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 9.10k, False: 0]
  |  |  ------------------
  |  |  196|  9.10k|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|  9.10k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  9.10k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|  9.10k|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 9.10k]
  |  |  ------------------
  |  |  198|  9.10k|                return vret;                                            \
  |  |  199|  9.10k|        }                                                               \
  |  |  200|  9.10k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 9.10k]
  |  |  ------------------
  ------------------
  720|  9.10k|    }
  721|  2.04k|    return 0;
  722|  2.04k|}
tupleobject.c:tuple_new_impl:
  797|      3|{
  798|      3|    if (type != &PyTuple_Type)
  ------------------
  |  Branch (798:9): [True: 1, False: 2]
  ------------------
  799|      1|        return tuple_subtype_new(type, iterable);
  800|       |
  801|      2|    if (iterable == NULL) {
  ------------------
  |  Branch (801:9): [True: 0, False: 2]
  ------------------
  802|      0|        return tuple_get_empty();
  803|      0|    }
  804|      2|    else {
  805|      2|        return PySequence_Tuple(iterable);
  806|      2|    }
  807|      2|}
tupleobject.c:tuple_subtype_new:
  832|      1|{
  833|      1|    PyObject *tmp, *newobj, *item;
  834|      1|    Py_ssize_t i, n;
  835|       |
  836|      1|    assert(PyType_IsSubtype(type, &PyTuple_Type));
  ------------------
  |  Branch (836:5): [True: 1, False: 0]
  ------------------
  837|       |    // tuple subclasses must implement the GC protocol
  838|      1|    assert(_PyType_IS_GC(type));
  ------------------
  |  Branch (838:5): [True: 1, False: 0]
  ------------------
  839|       |
  840|      1|    tmp = tuple_new_impl(&PyTuple_Type, iterable);
  841|      1|    if (tmp == NULL)
  ------------------
  |  Branch (841:9): [True: 0, False: 1]
  ------------------
  842|      0|        return NULL;
  843|      1|    assert(PyTuple_Check(tmp));
  ------------------
  |  Branch (843:5): [True: 1, False: 0]
  ------------------
  844|       |    /* This may allocate an empty tuple that is not the global one. */
  845|      1|    newobj = type->tp_alloc(type, n = PyTuple_GET_SIZE(tmp));
  ------------------
  |  |   27|      1|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  846|      1|    if (newobj == NULL) {
  ------------------
  |  Branch (846:9): [True: 0, False: 1]
  ------------------
  847|      0|        Py_DECREF(tmp);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  848|      0|        return NULL;
  849|      0|    }
  850|      5|    for (i = 0; i < n; i++) {
  ------------------
  |  Branch (850:17): [True: 4, False: 1]
  ------------------
  851|      4|        item = PyTuple_GET_ITEM(tmp, i);
  ------------------
  |  |   29|      4|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|      4|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (851:16): [True: 4, False: 0]
  ------------------
  852|      4|        PyTuple_SET_ITEM(newobj, i, Py_NewRef(item));
  ------------------
  |  |   40|      4|    PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  853|      4|    }
  854|      1|    Py_DECREF(tmp);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  855|       |
  856|      1|    _PyTuple_RESET_HASH_CACHE(newobj);
  ------------------
  |  |   44|      1|    do {                                    \
  |  |   45|      1|        assert(op != NULL);                 \
  |  |   46|      2|        _PyTuple_CAST(op)->ob_hash = -1;    \
  |  |  ------------------
  |  |  |  |   19|      1|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (47:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  |  Branch (856:5): [True: 1, False: 0]
  |  Branch (856:5): [True: 1, False: 0]
  ------------------
  857|       |
  858|       |    // Don't track if a subclass tp_alloc is PyType_GenericAlloc()
  859|      1|    if (!_PyObject_GC_IS_TRACKED(newobj)) {
  ------------------
  |  |   81|      1|#define _PyObject_GC_IS_TRACKED(op) _PyObject_GC_IS_TRACKED(_Py_CAST(PyObject*, op))
  |  |  ------------------
  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (859:9): [True: 0, False: 1]
  ------------------
  860|      0|        _PyObject_GC_TRACK(newobj);
  ------------------
  |  |  513|      0|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  861|      0|    }
  862|      1|    return newobj;
  863|      1|}
tupleobject.c:tuple_vectorcall:
  812|      1|{
  813|      1|    if (!_PyArg_NoKwnames("tuple", kwnames)) {
  ------------------
  |  |   15|      1|    ((kwnames) == NULL || _PyArg_NoKwnames((funcname), (kwnames)))
  |  |  ------------------
  |  |  |  Branch (15:6): [True: 1, False: 0]
  |  |  |  Branch (15:27): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  814|      0|        return NULL;
  815|      0|    }
  816|       |
  817|      1|    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
  ------------------
  |  |   37|      1|#define PyVectorcall_NARGS(n) _PyVectorcall_NARGS(n)
  ------------------
  818|      1|    if (!_PyArg_CheckPositional("tuple", nargs, 0, 1)) {
  ------------------
  |  |   31|      1|    (((min) <= (nargs) && (nargs) <= (max)) \
  |  |  ------------------
  |  |  |  Branch (31:7): [True: 1, False: 0]
  |  |  |  Branch (31:27): [True: 1, False: 0]
  |  |  ------------------
  |  |   32|      1|     || _PyArg_CheckPositional((funcname), (nargs), (min), (max)))
  |  |  ------------------
  |  |  |  Branch (32:9): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  819|      0|        return NULL;
  820|      0|    }
  821|       |
  822|      1|    if (nargs) {
  ------------------
  |  Branch (822:9): [True: 1, False: 0]
  ------------------
  823|      1|        return tuple_new_impl(_PyType_CAST(type), args[0]);
  ------------------
  |  |  770|      1|    (assert(PyType_Check(op)), _Py_CAST(PyTypeObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (823:31): [True: 1, False: 0]
  ------------------
  824|      1|    }
  825|      0|    else {
  826|      0|        return tuple_get_empty();
  827|      0|    }
  828|      1|}
tupleobject.c:tuple_iteritem:
  878|     13|{
  879|     13|    if (index >= PyTuple_GET_SIZE(obj)) {
  ------------------
  |  |   27|     13|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     13|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     13|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (879:9): [True: 2, False: 11]
  ------------------
  880|      2|        return (_PyObjectIndexPair) { .object = NULL, .index = index };
  881|      2|    }
  882|     11|    PyObject *result = PyTuple_GET_ITEM(obj, index);
  ------------------
  |  |   29|     11|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|     11|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     11|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (882:24): [True: 11, False: 0]
  ------------------
  883|     11|    Py_INCREF(result);
  ------------------
  |  |  310|     11|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     11|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     11|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  884|     11|    return (_PyObjectIndexPair) { .object = result, .index = index + 1 };
  885|     11|}
tupleobject.c:tupleiter_dealloc:
 1097|     13|{
 1098|     13|    _PyTupleIterObject *it = _PyTupleIterObject_CAST(self);
  ------------------
  |  | 1093|     13|#define _PyTupleIterObject_CAST(op) ((_PyTupleIterObject *)(op))
  ------------------
 1099|     13|    _PyObject_GC_UNTRACK(it);
  ------------------
  |  |  515|     13|        _PyObject_GC_UNTRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     13|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     13|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1100|     13|    Py_XDECREF(it->it_seq);
  ------------------
  |  |  524|     13|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     13|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     13|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1101|     13|    assert(Py_IS_TYPE(self, &PyTupleIter_Type));
  ------------------
  |  Branch (1101:5): [True: 13, False: 0]
  ------------------
 1102|     13|    _Py_FREELIST_FREE(tuple_iters, it, PyObject_GC_Del);
  ------------------
  |  |   35|     13|    _PyFreeList_Free(&_Py_freelists_GET()->NAME, _PyObject_CAST(op), \
  |  |  ------------------
  |  |  |  |  171|     13|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     13|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   36|     13|                     Py_ ## NAME ## _MAXFREELIST, freefunc)
  |  |  ------------------
  |  |  |  |   15|     13|#  define Py_tuple_iters_MAXFREELIST 10
  |  |  ------------------
  ------------------
 1103|     13|}
tupleobject.c:tupleiter_next:
 1115|    331|{
 1116|    331|    _PyTupleIterObject *it = _PyTupleIterObject_CAST(self);
  ------------------
  |  | 1093|    331|#define _PyTupleIterObject_CAST(op) ((_PyTupleIterObject *)(op))
  ------------------
 1117|    331|    PyTupleObject *seq;
 1118|    331|    PyObject *item;
 1119|       |
 1120|    331|    assert(it != NULL);
  ------------------
  |  Branch (1120:5): [True: 331, False: 0]
  ------------------
 1121|    331|    seq = it->it_seq;
 1122|    331|#ifndef Py_GIL_DISABLED
 1123|    331|    if (seq == NULL)
  ------------------
  |  Branch (1123:9): [True: 0, False: 331]
  ------------------
 1124|      0|        return NULL;
 1125|    331|#endif
 1126|    331|    assert(PyTuple_Check(seq));
  ------------------
  |  Branch (1126:5): [True: 331, False: 0]
  ------------------
 1127|       |
 1128|    331|    Py_ssize_t index = FT_ATOMIC_LOAD_SSIZE_RELAXED(it->it_index);
  ------------------
  |  |  149|    331|#define FT_ATOMIC_LOAD_SSIZE_RELAXED(value) value
  ------------------
 1129|    331|    if (index < PyTuple_GET_SIZE(seq)) {
  ------------------
  |  |   27|    331|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    331|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    331|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1129:9): [True: 319, False: 12]
  ------------------
 1130|    319|        FT_ATOMIC_STORE_SSIZE_RELAXED(it->it_index, index + 1);
  ------------------
  |  |  194|    319|#define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) value = new_value
  ------------------
 1131|    319|        item = PyTuple_GET_ITEM(seq, index);
  ------------------
  |  |   29|    319|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|    319|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    319|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1131:16): [True: 319, False: 0]
  ------------------
 1132|    319|        return Py_NewRef(item);
  ------------------
  |  |  550|    319|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    319|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    319|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1133|    319|    }
 1134|       |
 1135|     12|#ifndef Py_GIL_DISABLED
 1136|     12|    it->it_seq = NULL;
 1137|     12|    Py_DECREF(seq);
  ------------------
  |  |  430|     12|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     12|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     12|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1138|     12|#endif
 1139|       |    return NULL;
 1140|    331|}
tupleobject.c:tuple_iter:
 1244|     13|{
 1245|     13|    if (!PyTuple_Check(seq)) {
  ------------------
  |  |   27|     13|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TUPLE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     13|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (1245:9): [True: 0, False: 13]
  ------------------
 1246|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
 1247|      0|        return NULL;
 1248|      0|    }
 1249|     13|    _PyTupleIterObject *it = _Py_FREELIST_POP(_PyTupleIterObject, tuple_iters);
  ------------------
  |  |   43|     13|    _Py_CAST(TYPE*, _PyFreeList_Pop(&_Py_freelists_GET()->NAME))
  |  |  ------------------
  |  |  |  |   37|     13|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
 1250|     13|    if (it == NULL) {
  ------------------
  |  Branch (1250:9): [True: 1, False: 12]
  ------------------
 1251|      1|        it = PyObject_GC_New(_PyTupleIterObject, &PyTupleIter_Type);
  ------------------
  |  |  181|      1|    _Py_CAST(type*, _PyObject_GC_New(typeobj))
  |  |  ------------------
  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
 1252|      1|        if (it == NULL)
  ------------------
  |  Branch (1252:13): [True: 0, False: 1]
  ------------------
 1253|      0|            return NULL;
 1254|      1|    }
 1255|     13|    it->it_index = 0;
 1256|     13|    it->it_seq = (PyTupleObject *)Py_NewRef(seq);
  ------------------
  |  |  550|     13|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     13|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     13|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1257|     13|    _PyObject_GC_TRACK(it);
  ------------------
  |  |  513|     13|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     13|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     13|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1258|     13|    return (PyObject *)it;
 1259|     13|}
tupleobject.c:maybe_freelist_push:
 1268|  1.71k|{
 1269|  1.71k|    if (!Py_IS_TYPE(op, &PyTuple_Type)) {
  ------------------
  |  |  215|  1.71k|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|  1.71k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.71k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1269:9): [True: 0, False: 1.71k]
  ------------------
 1270|      0|        return 0;
 1271|      0|    }
 1272|  1.71k|    Py_ssize_t index = Py_SIZE(op) - 1;
  ------------------
  |  |  214|  1.71k|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  1.71k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.71k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1273|  1.71k|    if (index < PyTuple_MAXSAVESIZE) {
  ------------------
  |  |   11|  1.71k|#  define PyTuple_MAXSAVESIZE 20     // Largest tuple to save on freelist
  ------------------
  |  Branch (1273:9): [True: 1.68k, False: 31]
  ------------------
 1274|  1.68k|        return _Py_FREELIST_PUSH(tuples[index], op, Py_tuple_MAXFREELIST);
  ------------------
  |  |   39|  1.68k|    _PyFreeList_Push(&_Py_freelists_GET()->NAME, _PyObject_CAST(op), limit)
  |  |  ------------------
  |  |  |  |  171|  1.68k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.68k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1275|  1.68k|    }
 1276|     31|    return 0;
 1277|  1.71k|}

_PyStaticType_GetState:
  303|  19.9k|{
  304|  19.9k|    assert(self->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN);
  ------------------
  |  Branch (304:5): [True: 19.9k, False: 0]
  ------------------
  305|  19.9k|    return managed_static_type_state_get(interp, self);
  306|  19.9k|}
_PyType_GetDict:
  540|  5.73k|{
  541|       |    /* It returns a borrowed reference. */
  542|  5.73k|    return lookup_tp_dict(self);
  543|  5.73k|}
_PyType_GetBases:
  587|     29|{
  588|     29|    PyObject *res;
  589|       |
  590|     29|    BEGIN_TYPE_LOCK();
  591|     29|    res = lookup_tp_bases(self);
  592|     29|    Py_INCREF(res);
  ------------------
  |  |  310|     29|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     29|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     29|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  593|     29|    END_TYPE_LOCK();
  594|       |
  595|     29|    return res;
  596|     29|}
_PyType_GetSubclasses:
  777|     18|{
  778|     18|    PyObject *list = PyList_New(0);
  779|     18|    if (list == NULL) {
  ------------------
  |  Branch (779:9): [True: 0, False: 18]
  ------------------
  780|      0|        return NULL;
  781|      0|    }
  782|       |
  783|     18|    PyObject *subclasses = lookup_tp_subclasses(self);  // borrowed ref
  784|     18|    if (subclasses == NULL) {
  ------------------
  |  Branch (784:9): [True: 18, False: 0]
  ------------------
  785|     18|        return list;
  786|     18|    }
  787|     18|    assert(PyDict_CheckExact(subclasses));
  ------------------
  |  Branch (787:5): [True: 0, False: 0]
  ------------------
  788|       |    // The loop cannot modify tp_subclasses, there is no need
  789|       |    // to hold a strong reference (use a borrowed reference).
  790|       |
  791|      0|    Py_ssize_t i = 0;
  792|      0|    PyObject *ref;  // borrowed ref
  793|      0|    while (PyDict_Next(subclasses, &i, NULL, &ref)) {
  ------------------
  |  Branch (793:12): [True: 0, False: 0]
  ------------------
  794|      0|        PyTypeObject *subclass = type_from_ref(ref);
  795|      0|        if (subclass == NULL) {
  ------------------
  |  Branch (795:13): [True: 0, False: 0]
  ------------------
  796|      0|            continue;
  797|      0|        }
  798|       |
  799|      0|        if (PyList_Append(list, _PyObject_CAST(subclass)) < 0) {
  ------------------
  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  ------------------
  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (799:13): [True: 0, False: 0]
  ------------------
  800|      0|            Py_DECREF(list);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  801|      0|            Py_DECREF(subclass);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  802|      0|            return NULL;
  803|      0|        }
  804|      0|        Py_DECREF(subclass);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  805|      0|    }
  806|      0|    return list;
  807|      0|}
_PyType_CheckConsistency:
  867|    489|{
  868|    489|#define CHECK(expr) \
  869|    489|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG((PyObject *)type, Py_STRINGIFY(expr)); } } while (0)
  870|       |
  871|    489|    CHECK(!_PyObject_IsFreed((PyObject *)type));
  ------------------
  |  |  869|    489|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG((PyObject *)type, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (869:14): [True: 0, False: 489]
  |  |  |  Branch (869:103): [Folded, False: 489]
  |  |  ------------------
  ------------------
  872|       |
  873|    489|    if (!(type->tp_flags & Py_TPFLAGS_READY)) {
  ------------------
  |  |  518|    489|#define Py_TPFLAGS_READY (1UL << 12)
  ------------------
  |  Branch (873:9): [True: 0, False: 489]
  ------------------
  874|       |        /* don't check static types before PyType_Ready() */
  875|      0|        return 1;
  876|      0|    }
  877|       |
  878|    489|    CHECK(Py_REFCNT(type) >= 1);
  ------------------
  |  |  869|    489|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG((PyObject *)type, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (869:14): [True: 0, False: 489]
  |  |  |  Branch (869:103): [Folded, False: 489]
  |  |  ------------------
  ------------------
  879|    489|    CHECK(PyType_Check(type));
  ------------------
  |  |  869|    489|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG((PyObject *)type, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (869:14): [True: 0, False: 489]
  |  |  |  Branch (869:103): [Folded, False: 489]
  |  |  ------------------
  ------------------
  880|       |
  881|    489|    CHECK(!is_readying(type));
  ------------------
  |  |  869|    489|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG((PyObject *)type, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (869:14): [True: 0, False: 489]
  |  |  |  Branch (869:103): [Folded, False: 489]
  |  |  ------------------
  ------------------
  882|    489|    CHECK(lookup_tp_dict(type) != NULL);
  ------------------
  |  |  869|    489|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG((PyObject *)type, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (869:14): [True: 0, False: 489]
  |  |  |  Branch (869:103): [Folded, False: 489]
  |  |  ------------------
  ------------------
  883|       |
  884|    489|    if (type->tp_flags & Py_TPFLAGS_HAVE_GC) {
  ------------------
  |  |  524|    489|#define Py_TPFLAGS_HAVE_GC (1UL << 14)
  ------------------
  |  Branch (884:9): [True: 451, False: 38]
  ------------------
  885|       |        // bpo-44263: tp_traverse is required if Py_TPFLAGS_HAVE_GC is set.
  886|       |        // Note: tp_clear is optional.
  887|    451|        CHECK(type->tp_traverse != NULL);
  ------------------
  |  |  869|    451|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG((PyObject *)type, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (869:14): [True: 0, False: 451]
  |  |  |  Branch (869:103): [Folded, False: 451]
  |  |  ------------------
  ------------------
  888|    451|    }
  889|       |
  890|    489|    if (type->tp_flags & Py_TPFLAGS_DISALLOW_INSTANTIATION) {
  ------------------
  |  |  497|    489|#define Py_TPFLAGS_DISALLOW_INSTANTIATION (1UL << 7)
  ------------------
  |  Branch (890:9): [True: 78, False: 411]
  ------------------
  891|     78|        CHECK(type->tp_new == NULL);
  ------------------
  |  |  869|     78|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG((PyObject *)type, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (869:14): [True: 0, False: 78]
  |  |  |  Branch (869:103): [Folded, False: 78]
  |  |  ------------------
  ------------------
  892|     78|        CHECK(PyDict_Contains(lookup_tp_dict(type), &_Py_ID(__new__)) == 0);
  ------------------
  |  |  869|     78|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG((PyObject *)type, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (869:14): [True: 0, False: 78]
  |  |  |  Branch (869:103): [Folded, False: 78]
  |  |  ------------------
  ------------------
  893|     78|    }
  894|       |
  895|    489|    return 1;
  896|    489|#undef CHECK
  897|    489|}
_PyType_GetDocFromInternalDoc:
  914|      9|{
  915|      9|    const char *doc = _PyType_DocWithoutSignature(name, internal_doc);
  916|       |
  917|      9|    if (!doc || *doc == '\0') {
  ------------------
  |  Branch (917:9): [True: 0, False: 9]
  |  Branch (917:17): [True: 0, False: 9]
  ------------------
  918|      0|        Py_RETURN_NONE;
  ------------------
  |  |  628|      0|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
  919|      0|    }
  920|       |
  921|      9|    return PyUnicode_FromString(doc);
  922|      9|}
_PyType_InitCache:
 1000|      1|{
 1001|      1|    struct type_cache *cache = &interp->types.type_cache;
 1002|  4.09k|    for (Py_ssize_t i = 0; i < (1 << MCACHE_SIZE_EXP); i++) {
  ------------------
  |  |  562|  4.09k|#define MCACHE_SIZE_EXP 12
  ------------------
  |  Branch (1002:28): [True: 4.09k, False: 1]
  ------------------
 1003|  4.09k|        struct type_cache_entry *entry = &cache->hashtable[i];
 1004|  4.09k|        assert(entry->name == NULL);
  ------------------
  |  Branch (1004:9): [True: 4.09k, False: 0]
  ------------------
 1005|       |
 1006|  4.09k|        entry->version = 0;
 1007|       |        // Set to None so _PyType_LookupRef() can use Py_SETREF(),
 1008|       |        // rather than using slower Py_XSETREF().
 1009|  4.09k|        entry->name = Py_None;
  ------------------
  |  |  616|  4.09k|#  define Py_None (&_Py_NoneStruct)
  ------------------
 1010|       |        entry->value = NULL;
 1011|  4.09k|    }
 1012|      1|}
PyType_Modified:
 1244|      2|{
 1245|       |    // Quick check without the lock held
 1246|      2|    if (FT_ATOMIC_LOAD_UINT_RELAXED(type->tp_version_tag) == 0) {
  ------------------
  |  |  189|      2|#define FT_ATOMIC_LOAD_UINT_RELAXED(value) value
  ------------------
  |  Branch (1246:9): [True: 2, False: 0]
  ------------------
 1247|      2|        return;
 1248|      2|    }
 1249|       |
 1250|      0|    BEGIN_TYPE_LOCK();
 1251|      0|    type_modified_unlocked(type);
 1252|      0|    END_TYPE_LOCK();
 1253|      0|}
_PyType_SetVersion:
 1337|    196|{
 1338|    196|    BEGIN_TYPE_LOCK();
 1339|    196|    set_version_unlocked(tp, version);
 1340|    196|    END_TYPE_LOCK();
 1341|    196|}
_PyType_Name:
 1508|     49|{
 1509|     49|    assert(type->tp_name != NULL);
  ------------------
  |  Branch (1509:5): [True: 49, False: 0]
  ------------------
 1510|     49|    const char *s = strrchr(type->tp_name, '.');
 1511|     49|    if (s == NULL) {
  ------------------
  |  Branch (1511:9): [True: 3, False: 46]
  ------------------
 1512|      3|        s = type->tp_name;
 1513|      3|    }
 1514|     46|    else {
 1515|     46|        s++;
 1516|     46|    }
 1517|     49|    return s;
 1518|     49|}
_PyType_AllocNoTrack:
 2508|  3.74k|{
 2509|  3.74k|    PyObject *obj;
 2510|       |    /* The +1 on nitems is needed for most types but not all. We could save a
 2511|       |     * bit of space by allocating one less item in certain cases, depending on
 2512|       |     * the type. However, given the extra complexity (e.g. an additional type
 2513|       |     * flag to indicate when that is safe) it does not seem worth the memory
 2514|       |     * savings. An example type that doesn't need the +1 is a subclass of
 2515|       |     * tuple. See GH-100659 and GH-81381. */
 2516|  3.74k|    size_t size = _PyObject_VAR_SIZE(type, nitems+1);
 2517|       |
 2518|  3.74k|    const size_t presize = _PyType_PreHeaderSize(type);
 2519|  3.74k|    if (type->tp_flags & Py_TPFLAGS_INLINE_VALUES) {
  ------------------
  |  |  472|  3.74k|#define Py_TPFLAGS_INLINE_VALUES (1 << 2)
  ------------------
  |  Branch (2519:9): [True: 172, False: 3.57k]
  ------------------
 2520|    172|        assert(type->tp_itemsize == 0);
  ------------------
  |  Branch (2520:9): [True: 172, False: 0]
  ------------------
 2521|    172|        size += _PyInlineValuesSize(type);
 2522|    172|    }
 2523|  3.74k|    char *alloc = _PyObject_MallocWithType(type, size + presize);
 2524|  3.74k|    if (alloc  == NULL) {
  ------------------
  |  Branch (2524:9): [True: 0, False: 3.74k]
  ------------------
 2525|      0|        return PyErr_NoMemory();
 2526|      0|    }
 2527|  3.74k|    obj = (PyObject *)(alloc + presize);
 2528|  3.74k|    if (presize) {
  ------------------
  |  Branch (2528:9): [True: 3.72k, False: 17]
  ------------------
 2529|  3.72k|        ((PyObject **)alloc)[0] = NULL;
 2530|  3.72k|        ((PyObject **)alloc)[1] = NULL;
 2531|  3.72k|    }
 2532|  3.74k|    if (PyType_IS_GC(type)) {
  ------------------
  |  |  157|  3.74k|#define PyType_IS_GC(t) PyType_HasFeature((t), Py_TPFLAGS_HAVE_GC)
  |  |  ------------------
  |  |  |  |  524|  3.74k|#define Py_TPFLAGS_HAVE_GC (1UL << 14)
  |  |  ------------------
  |  |  |  Branch (157:25): [True: 3.72k, False: 17]
  |  |  ------------------
  ------------------
 2533|  3.72k|        _PyObject_GC_Link(obj);
 2534|  3.72k|    }
 2535|       |    // Zero out the object after the PyObject header. The header fields are
 2536|       |    // initialized by _PyObject_Init[Var]().
 2537|  3.74k|    memset((char *)obj + sizeof(PyObject), 0, size - sizeof(PyObject));
 2538|       |
 2539|  3.74k|    if (type->tp_itemsize == 0) {
  ------------------
  |  Branch (2539:9): [True: 3.61k, False: 127]
  ------------------
 2540|  3.61k|        _PyObject_Init(obj, type);
 2541|  3.61k|    }
 2542|    127|    else {
 2543|    127|        _PyObject_InitVar((PyVarObject *)obj, type, nitems);
 2544|    127|    }
 2545|  3.74k|    if (type->tp_flags & Py_TPFLAGS_INLINE_VALUES) {
  ------------------
  |  |  472|  3.74k|#define Py_TPFLAGS_INLINE_VALUES (1 << 2)
  ------------------
  |  Branch (2545:9): [True: 172, False: 3.57k]
  ------------------
 2546|    172|        _PyObject_InitInlineValues(obj, type);
 2547|    172|    }
 2548|  3.74k|    return obj;
 2549|  3.74k|}
PyType_GenericAlloc:
 2553|  3.71k|{
 2554|  3.71k|    PyObject *obj = _PyType_AllocNoTrack(type, nitems);
 2555|  3.71k|    if (obj == NULL) {
  ------------------
  |  Branch (2555:9): [True: 0, False: 3.71k]
  ------------------
 2556|      0|        return NULL;
 2557|      0|    }
 2558|       |
 2559|  3.71k|    if (_PyType_IS_GC(type)) {
  ------------------
  |  |  828|  3.71k|#define _PyType_IS_GC(t) _PyType_HasFeature((t), Py_TPFLAGS_HAVE_GC)
  |  |  ------------------
  |  |  |  |  524|  3.71k|#define Py_TPFLAGS_HAVE_GC (1UL << 14)
  |  |  ------------------
  |  |  |  Branch (828:26): [True: 3.69k, False: 17]
  |  |  ------------------
  ------------------
 2560|  3.69k|        _PyObject_GC_TRACK(obj);
  ------------------
  |  |  513|  3.69k|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  3.69k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  3.69k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2561|  3.69k|    }
 2562|  3.71k|    return obj;
 2563|  3.71k|}
PyType_GenericNew:
 2567|     36|{
 2568|     36|    return type->tp_alloc(type, 0);
 2569|     36|}
PyType_IsSubtype:
 2925|  25.4k|{
 2926|  25.4k|    return is_subtype_with_mro(a->tp_mro, a, b);
 2927|  25.4k|}
_PyObject_LookupSpecial:
 2946|    926|{
 2947|    926|    PyObject *res;
 2948|       |
 2949|    926|    res = _PyType_LookupRef(Py_TYPE(self), attr);
  ------------------
  |  |  213|    926|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    926|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    926|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2950|    926|    if (res != NULL) {
  ------------------
  |  Branch (2950:9): [True: 70, False: 856]
  ------------------
 2951|     70|        descrgetfunc f;
 2952|     70|        if ((f = Py_TYPE(res)->tp_descr_get) != NULL) {
  ------------------
  |  |  213|     70|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     70|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     70|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2952:13): [True: 70, False: 0]
  ------------------
 2953|     70|            Py_SETREF(res, f(res, self, (PyObject *)(Py_TYPE(self))));
  ------------------
  |  |  352|     70|    do { \
  |  |  353|     70|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|     70|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  354|     70|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|     70|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  355|     70|        *_tmp_dst_ptr = (src); \
  |  |  356|     70|        Py_DECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  430|     70|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     70|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     70|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  357|     70|    } while (0)
  |  |  ------------------
  |  |  |  Branch (357:14): [Folded, False: 70]
  |  |  ------------------
  ------------------
 2954|     70|        }
 2955|     70|    }
 2956|    926|    return res;
 2957|    926|}
_PyObject_LookupSpecialMethod:
 2966|    312|{
 2967|    312|    PyObject *self = PyStackRef_AsPyObjectBorrow(method_and_self[1]);
 2968|    312|    _PyType_LookupStackRefAndVersion(Py_TYPE(self), attr, &method_and_self[0]);
  ------------------
  |  |  213|    312|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    312|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    312|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2969|    312|    PyObject *method_o = PyStackRef_AsPyObjectBorrow(method_and_self[0]);
 2970|    312|    if (method_o == NULL) {
  ------------------
  |  Branch (2970:9): [True: 0, False: 312]
  ------------------
 2971|      0|        return 0;
 2972|      0|    }
 2973|       |
 2974|    312|    if (_PyType_HasFeature(Py_TYPE(method_o), Py_TPFLAGS_METHOD_DESCRIPTOR)) {
  ------------------
  |  |  213|    312|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    312|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    312|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  if (_PyType_HasFeature(Py_TYPE(method_o), Py_TPFLAGS_METHOD_DESCRIPTOR)) {
  ------------------
  |  |  534|    312|#define Py_TPFLAGS_METHOD_DESCRIPTOR (1UL << 17)
  ------------------
  |  Branch (2974:9): [True: 312, False: 0]
  ------------------
 2975|       |        /* Avoid temporary PyMethodObject */
 2976|    312|        return 1;
 2977|    312|    }
 2978|       |
 2979|      0|    descrgetfunc f = Py_TYPE(method_o)->tp_descr_get;
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2980|      0|    if (f != NULL) {
  ------------------
  |  Branch (2980:9): [True: 0, False: 0]
  ------------------
 2981|      0|        PyObject *func = f(method_o, self, (PyObject *)(Py_TYPE(self)));
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2982|      0|        if (func == NULL) {
  ------------------
  |  Branch (2982:13): [True: 0, False: 0]
  ------------------
 2983|      0|            return -1;
 2984|      0|        }
 2985|      0|        PyStackRef_CLEAR(method_and_self[0]); // clear method
  ------------------
  |  |  711|      0|    do { \
  |  |  712|      0|        _PyStackRef *_tmp_op_ptr = &(REF); \
  |  |  713|      0|        _PyStackRef _tmp_old_op = (*_tmp_op_ptr); \
  |  |  714|      0|        *_tmp_op_ptr = PyStackRef_NULL; \
  |  |  715|      0|        PyStackRef_XCLOSE(_tmp_old_op); \
  |  |  716|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (716:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2986|      0|        method_and_self[0] = PyStackRef_FromPyObjectSteal(func);
 2987|      0|    }
 2988|      0|    PyStackRef_CLEAR(method_and_self[1]); // clear self
  ------------------
  |  |  711|      0|    do { \
  |  |  712|      0|        _PyStackRef *_tmp_op_ptr = &(REF); \
  |  |  713|      0|        _PyStackRef _tmp_old_op = (*_tmp_op_ptr); \
  |  |  714|      0|        *_tmp_op_ptr = PyStackRef_NULL; \
  |  |  715|      0|        PyStackRef_XCLOSE(_tmp_old_op); \
  |  |  716|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (716:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2989|      0|    return 1;
 2990|      0|}
PyType_GetFlags:
 4134|     76|{
 4135|     76|    return type->tp_flags;
 4136|     76|}
_PyType_CalculateMetaclass:
 4149|    177|{
 4150|    177|    Py_ssize_t i, nbases;
 4151|    177|    PyTypeObject *winner;
 4152|    177|    PyObject *tmp;
 4153|    177|    PyTypeObject *tmptype;
 4154|       |
 4155|       |    /* Determine the proper metatype to deal with this,
 4156|       |       and check for metatype conflicts while we're at it.
 4157|       |       Note that if some other metatype wins to contract,
 4158|       |       it's possible that its instances are not types. */
 4159|       |
 4160|    177|    nbases = PyTuple_GET_SIZE(bases);
  ------------------
  |  |   27|    177|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    177|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    177|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4161|    177|    winner = metatype;
 4162|    343|    for (i = 0; i < nbases; i++) {
  ------------------
  |  Branch (4162:17): [True: 166, False: 177]
  ------------------
 4163|    166|        tmp = PyTuple_GET_ITEM(bases, i);
  ------------------
  |  |   29|    166|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|    166|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    166|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4163:15): [True: 166, False: 0]
  ------------------
 4164|    166|        tmptype = Py_TYPE(tmp);
  ------------------
  |  |  213|    166|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    166|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    166|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4165|    166|        if (PyType_IsSubtype(winner, tmptype))
  ------------------
  |  Branch (4165:13): [True: 166, False: 0]
  ------------------
 4166|    166|            continue;
 4167|      0|        if (PyType_IsSubtype(tmptype, winner)) {
  ------------------
  |  Branch (4167:13): [True: 0, False: 0]
  ------------------
 4168|      0|            winner = tmptype;
 4169|      0|            continue;
 4170|      0|        }
 4171|       |        /* else: */
 4172|      0|        PyErr_SetString(PyExc_TypeError,
 4173|      0|                        "metaclass conflict: "
 4174|      0|                        "the metaclass of a derived class "
 4175|      0|                        "must be a (non-strict) subclass "
 4176|      0|                        "of the metaclasses of all its bases");
 4177|      0|        return NULL;
 4178|      0|    }
 4179|    177|    return winner;
 4180|    177|}
PyType_FromModuleAndSpec:
 5802|     21|{
 5803|     21|    return type_from_slots_or_spec(NULL, spec, NULL, module, bases);
 5804|     21|}
PyType_FromSpecWithBases:
 5808|      9|{
 5809|      9|    return type_from_slots_or_spec(NULL, spec, NULL, NULL, bases);
 5810|      9|}
PyType_FromSpec:
 5814|      9|{
 5815|      9|    return type_from_slots_or_spec(NULL, spec, NULL, NULL, NULL);
 5816|      9|}
PyType_GetModuleByToken_DuringGC:
 5902|     30|{
 5903|     30|    assert(PyType_Check(type));
  ------------------
  |  Branch (5903:5): [True: 30, False: 0]
  ------------------
 5904|       |
 5905|     30|    if (!_PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE)) {
  ------------------
  |  |  503|     30|#define Py_TPFLAGS_HEAPTYPE (1UL << 9)
  ------------------
  |  Branch (5905:9): [True: 0, False: 30]
  ------------------
 5906|       |        // type_ready_mro() ensures that no heap type is
 5907|       |        // contained in a static type MRO.
 5908|      0|        return NULL;
 5909|      0|    }
 5910|     30|    else {
 5911|     30|        PyHeapTypeObject *ht = (PyHeapTypeObject*)type;
 5912|     30|        PyObject *module = ht->ht_module;
 5913|     30|        if (module && _PyModule_GetToken(module) == token) {
  ------------------
  |  Branch (5913:13): [True: 30, False: 0]
  |  Branch (5913:23): [True: 30, False: 0]
  ------------------
 5914|     30|            return module;
 5915|     30|        }
 5916|     30|    }
 5917|       |
 5918|      0|    PyObject *res = NULL;
 5919|      0|    BEGIN_TYPE_LOCK();
 5920|       |
 5921|      0|    PyObject *mro = lookup_tp_mro(type);
 5922|       |    // The type must be ready
 5923|      0|    assert(mro != NULL);
  ------------------
  |  Branch (5923:5): [True: 0, False: 0]
  ------------------
 5924|      0|    assert(PyTuple_Check(mro));
  ------------------
  |  Branch (5924:5): [True: 0, False: 0]
  ------------------
 5925|       |    // mro_invoke() ensures that the type MRO cannot be empty.
 5926|      0|    assert(PyTuple_GET_SIZE(mro) >= 1);
  ------------------
  |  Branch (5926:5): [True: 0, False: 0]
  ------------------
 5927|       |    // Also, the first item in the MRO is the type itself, which
 5928|       |    // we already checked above. We skip it in the loop.
 5929|      0|    assert(PyTuple_GET_ITEM(mro, 0) == (PyObject *)type);
  ------------------
  |  Branch (5929:5): [True: 0, False: 0]
  |  Branch (5929:5): [True: 0, False: 0]
  ------------------
 5930|       |
 5931|      0|    Py_ssize_t n = PyTuple_GET_SIZE(mro);
  ------------------
  |  |   27|      0|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5932|      0|    for (Py_ssize_t i = 1; i < n; i++) {
  ------------------
  |  Branch (5932:28): [True: 0, False: 0]
  ------------------
 5933|      0|        PyObject *super = PyTuple_GET_ITEM(mro, i);
  ------------------
  |  |   29|      0|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|      0|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5933:27): [True: 0, False: 0]
  ------------------
 5934|      0|        if (!_PyType_HasFeature((PyTypeObject *)super, Py_TPFLAGS_HEAPTYPE)) {
  ------------------
  |  |  503|      0|#define Py_TPFLAGS_HEAPTYPE (1UL << 9)
  ------------------
  |  Branch (5934:13): [True: 0, False: 0]
  ------------------
 5935|       |            // Static types in the MRO need to be skipped
 5936|      0|            continue;
 5937|      0|        }
 5938|       |
 5939|      0|        PyHeapTypeObject *ht = (PyHeapTypeObject*)super;
 5940|      0|        PyObject *module = ht->ht_module;
 5941|      0|        if (module && _PyModule_GetToken(module) == token) {
  ------------------
  |  Branch (5941:13): [True: 0, False: 0]
  |  Branch (5941:23): [True: 0, False: 0]
  ------------------
 5942|      0|            res = module;
 5943|      0|            break;
 5944|      0|        }
 5945|      0|    }
 5946|      0|    END_TYPE_LOCK();
 5947|       |
 5948|      0|    return res;
 5949|      0|}
PyType_GetModuleByDef:
 5959|     30|{
 5960|     30|    PyObject *mod = PyType_GetModuleByToken_DuringGC(type, def);
 5961|     30|    if (!mod) {
  ------------------
  |  Branch (5961:9): [True: 0, False: 30]
  ------------------
 5962|      0|        PyErr_Format(
 5963|      0|            PyExc_TypeError,
 5964|      0|            "PyType_GetModuleByDef: No superclass of '%s' has the given module",
 5965|      0|            type->tp_name);
 5966|      0|        return NULL;
 5967|      0|    }
 5968|     30|    return mod;
 5969|     30|}
PyObject_GetItemData:
 6121|    202|{
 6122|       |    return getitemdata(obj, true);
 6123|    202|}
_PyType_LookupRefAndVersion:
 6270|  1.22k|{
 6271|  1.22k|    _PyStackRef out;
 6272|  1.22k|    unsigned int ver = _PyType_LookupStackRefAndVersion(type, name, &out);
 6273|  1.22k|    if (version) {
  ------------------
  |  Branch (6273:9): [True: 241, False: 988]
  ------------------
 6274|    241|        *version = ver;
 6275|    241|    }
 6276|  1.22k|    if (PyStackRef_IsNull(out)) {
  ------------------
  |  |  470|  1.22k|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  ------------------
  |  |  |  |  467|  1.22k|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.22k|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (470:32): [True: 1.02k, False: 207]
  |  |  ------------------
  ------------------
 6277|  1.02k|        return NULL;
 6278|  1.02k|    }
 6279|    207|    return PyStackRef_AsPyObjectSteal(out);
 6280|  1.22k|}
_PyType_LookupStackRefAndVersion:
 6292|  6.62k|{
 6293|  6.62k|    unsigned int h = MCACHE_HASH_METHOD(type, name);
  ------------------
  |  |   54|  6.62k|    MCACHE_HASH(FT_ATOMIC_LOAD_UINT_RELAXED((type)->tp_version_tag),   \
  |  |  ------------------
  |  |  |  |   50|  6.62k|        (((unsigned int)(version) ^ (unsigned int)(name_hash))          \
  |  |  |  |   51|  6.62k|         & ((1 << MCACHE_SIZE_EXP) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |  562|  6.62k|#define MCACHE_SIZE_EXP 12
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   55|  6.62k|                ((Py_ssize_t)(name)) >> 3)
  ------------------
 6294|  6.62k|    struct type_cache *cache = get_type_cache();
 6295|  6.62k|    struct type_cache_entry *entry = &cache->hashtable[h];
 6296|       |#ifdef Py_GIL_DISABLED
 6297|       |    // synchronize-with other writing threads by doing an acquire load on the sequence
 6298|       |    while (1) {
 6299|       |        uint32_t sequence = _PySeqLock_BeginRead(&entry->sequence);
 6300|       |        uint32_t entry_version = _Py_atomic_load_uint32_acquire(&entry->version);
 6301|       |        uint32_t type_version = _Py_atomic_load_uint32_acquire(&type->tp_version_tag);
 6302|       |        if (entry_version == type_version &&
 6303|       |            _Py_atomic_load_ptr_relaxed(&entry->name) == name) {
 6304|       |            OBJECT_STAT_INC_COND(type_cache_hits, !is_dunder_name(name));
 6305|       |            OBJECT_STAT_INC_COND(type_cache_dunder_hits, is_dunder_name(name));
 6306|       |            if (_Py_TryXGetStackRef(&entry->value, out)) {
 6307|       |                // If the sequence is still valid then we're done
 6308|       |                if (_PySeqLock_EndRead(&entry->sequence, sequence)) {
 6309|       |                    return entry_version;
 6310|       |                }
 6311|       |                PyStackRef_XCLOSE(*out);
 6312|       |            }
 6313|       |            else {
 6314|       |                // If we can't incref the object we need to fallback to locking
 6315|       |                break;
 6316|       |            }
 6317|       |        }
 6318|       |        else {
 6319|       |            // cache miss
 6320|       |            break;
 6321|       |        }
 6322|       |    }
 6323|       |#else
 6324|  6.62k|    if (entry->version == type->tp_version_tag && entry->name == name) {
  ------------------
  |  Branch (6324:9): [True: 5.49k, False: 1.13k]
  |  Branch (6324:51): [True: 5.20k, False: 292]
  ------------------
 6325|  5.20k|        assert(type->tp_version_tag);
  ------------------
  |  Branch (6325:9): [True: 5.20k, False: 0]
  ------------------
 6326|  5.20k|        OBJECT_STAT_INC_COND(type_cache_hits, !is_dunder_name(name));
  ------------------
  |  |   78|  5.20k|#define OBJECT_STAT_INC_COND(name, cond) ((void)0)
  ------------------
 6327|  5.20k|        OBJECT_STAT_INC_COND(type_cache_dunder_hits, is_dunder_name(name));
  ------------------
  |  |   78|  5.20k|#define OBJECT_STAT_INC_COND(name, cond) ((void)0)
  ------------------
 6328|  5.20k|        *out = entry->value ? PyStackRef_FromPyObjectNew(entry->value) : PyStackRef_NULL;
  ------------------
  |  |  599|  2.20k|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|  2.20k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.20k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6328:16): [True: 2.20k, False: 2.99k]
  ------------------
 6329|  5.20k|        return entry->version;
 6330|  5.20k|    }
 6331|  1.42k|#endif
 6332|  1.42k|    OBJECT_STAT_INC_COND(type_cache_misses, !is_dunder_name(name));
  ------------------
  |  |   78|  1.42k|#define OBJECT_STAT_INC_COND(name, cond) ((void)0)
  ------------------
 6333|  1.42k|    OBJECT_STAT_INC_COND(type_cache_dunder_misses, is_dunder_name(name));
  ------------------
  |  |   78|  1.42k|#define OBJECT_STAT_INC_COND(name, cond) ((void)0)
  ------------------
 6334|       |
 6335|       |    /* We may end up clearing live exceptions below, so make sure it's ours. */
 6336|  1.42k|    assert(!PyErr_Occurred());
  ------------------
  |  Branch (6336:5): [True: 1.42k, False: 0]
  ------------------
 6337|       |
 6338|  1.42k|    int res;
 6339|  1.42k|    PyInterpreterState *interp = _PyInterpreterState_GET();
 6340|       |
 6341|  1.42k|    unsigned int version_tag = FT_ATOMIC_LOAD_UINT(type->tp_version_tag);
  ------------------
  |  |  188|  1.42k|#define FT_ATOMIC_LOAD_UINT(value) value
  ------------------
 6342|  1.42k|    if (should_assign_version_tag(type, name, version_tag)) {
  ------------------
  |  Branch (6342:9): [True: 64, False: 1.36k]
  ------------------
 6343|     64|        BEGIN_TYPE_LOCK();
 6344|     64|        assign_version_tag(interp, type);
 6345|     64|        version_tag = type->tp_version_tag;
 6346|     64|        res = find_name_in_mro(type, name, out);
 6347|     64|        END_TYPE_LOCK();
 6348|     64|    }
 6349|  1.36k|    else {
 6350|  1.36k|        res = find_name_in_mro(type, name, out);
 6351|  1.36k|    }
 6352|       |
 6353|       |    /* Only put NULL results into cache if there was no error. */
 6354|  1.42k|    if (res < 0) {
  ------------------
  |  Branch (6354:9): [True: 0, False: 1.42k]
  ------------------
 6355|      0|        *out = PyStackRef_NULL;
 6356|      0|        return 0;
 6357|      0|    }
 6358|       |
 6359|  1.42k|    if (version_tag == 0 || !MCACHE_CACHEABLE_NAME(name)) {
  ------------------
  |  |   57|  1.42k|        (PyUnicode_CheckExact(name) &&                           \
  |  |  ------------------
  |  |  |  |  104|  1.42k|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |  215|  2.85k|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|  1.42k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|  1.42k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (215:32): [True: 1.42k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   58|  1.42k|         (PyUnicode_GET_LENGTH(name) <= MCACHE_MAX_ATTR_SIZE))
  |  |  ------------------
  |  |  |  |  299|  1.42k|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|  1.42k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|  1.42k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                        (PyUnicode_GET_LENGTH(name) <= MCACHE_MAX_ATTR_SIZE))
  |  |  ------------------
  |  |  |  |   48|  1.42k|#define MCACHE_MAX_ATTR_SIZE    100
  |  |  ------------------
  |  |  |  Branch (58:10): [True: 1.42k, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (6359:9): [True: 0, False: 1.42k]
  ------------------
 6360|      0|        return 0;
 6361|      0|    }
 6362|       |
 6363|  1.42k|    PyObject *res_obj = PyStackRef_AsPyObjectBorrow(*out);
 6364|       |#if Py_GIL_DISABLED
 6365|       |    update_cache_gil_disabled(entry, name, version_tag, res_obj);
 6366|       |#else
 6367|  1.42k|    PyObject *old_value = update_cache(entry, name, version_tag, res_obj);
 6368|  1.42k|    Py_DECREF(old_value);
  ------------------
  |  |  430|  1.42k|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  1.42k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.42k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6369|  1.42k|#endif
 6370|  1.42k|    return version_tag;
 6371|  1.42k|}
_PyType_LookupRef:
 6378|    986|{
 6379|       |    return _PyType_LookupRefAndVersion(type, name, NULL);
 6380|    986|}
_PyType_Lookup:
 6386|      2|{
 6387|      2|    PyObject *res = _PyType_LookupRefAndVersion(type, name, NULL);
 6388|      2|    Py_XDECREF(res);
  ------------------
  |  |  524|      2|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6389|      2|    return res;
 6390|      2|}
_PyType_CacheInitForSpecialization:
 6395|      4|{
 6396|      4|    if (!init || !tp_version) {
  ------------------
  |  Branch (6396:9): [True: 0, False: 4]
  |  Branch (6396:18): [True: 0, False: 4]
  ------------------
 6397|      0|        return 0;
 6398|      0|    }
 6399|      4|    int can_cache;
 6400|      4|    BEGIN_TYPE_LOCK();
 6401|      4|    can_cache = ((PyTypeObject*)type)->tp_version_tag == tp_version;
 6402|       |    #ifdef Py_GIL_DISABLED
 6403|       |    can_cache = can_cache && _PyObject_HasDeferredRefcount(init);
 6404|       |    #endif
 6405|      4|    if (can_cache) {
  ------------------
  |  Branch (6405:9): [True: 4, False: 0]
  ------------------
 6406|      4|        FT_ATOMIC_STORE_PTR_RELEASE(type->_spec_cache.init, init);
  ------------------
  |  |  164|      4|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  ------------------
 6407|      4|    }
 6408|      4|    END_TYPE_LOCK();
 6409|      4|    return can_cache;
 6410|      4|}
_PyType_SetFlags:
 6439|      2|{
 6440|      2|    unsigned long new_flags = (self->tp_flags & ~mask) | flags;
 6441|      2|    if (new_flags != self->tp_flags) {
  ------------------
  |  Branch (6441:9): [True: 2, False: 0]
  ------------------
 6442|      2|        types_stop_world();
 6443|       |        // can't use new_flags here since they could be out-of-date
 6444|      2|        self->tp_flags = (self->tp_flags & ~mask) | flags;
 6445|      2|        types_start_world();
 6446|      2|    }
 6447|      2|}
_PyType_SetFlagsRecursive:
 6492|     13|{
 6493|     13|    types_stop_world();
 6494|     13|    set_flags_recursive(self, mask, flags);
 6495|     13|    types_start_world();
 6496|     13|}
_Py_type_getattro_impl:
 6512|    536|{
 6513|    536|    _PyStackRef ref = _Py_type_getattro_stackref(type, name, suppress_missing_attribute);
 6514|    536|    if (PyStackRef_IsNull(ref)) {
  ------------------
  |  |  470|    536|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  ------------------
  |  |  |  |  467|    536|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    536|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (470:32): [True: 16, False: 520]
  |  |  ------------------
  ------------------
 6515|     16|        return NULL;
 6516|     16|    }
 6517|    520|    return PyStackRef_AsPyObjectSteal(ref);
 6518|    536|}
_Py_type_getattro:
 6524|    295|{
 6525|    295|    PyTypeObject *type = PyTypeObject_CAST(tp);
  ------------------
  |  |  200|    295|#define PyTypeObject_CAST(op)   ((PyTypeObject *)(op))
  ------------------
 6526|       |    return _Py_type_getattro_impl(type, name, NULL);
 6527|    295|}
_Py_type_getattro_stackref:
 6542|    771|{
 6543|    771|    PyTypeObject *metatype = Py_TYPE(type);
  ------------------
  |  |  213|    771|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    771|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    771|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6544|    771|    descrgetfunc meta_get = NULL;
 6545|       |
 6546|    771|    if (!PyUnicode_Check(name)) {
  ------------------
  |  |  103|    771|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|    771|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (6546:9): [True: 0, False: 771]
  ------------------
 6547|      0|        PyErr_Format(PyExc_TypeError,
 6548|      0|                     "attribute name must be string, not '%.200s'",
 6549|      0|                     Py_TYPE(name)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6550|      0|        return PyStackRef_NULL;
 6551|      0|    }
 6552|       |
 6553|       |    /* Initialize this type (we'll assume the metatype is initialized) */
 6554|    771|    if (!_PyType_IsReady(type)) {
  ------------------
  |  Branch (6554:9): [True: 0, False: 771]
  ------------------
 6555|      0|        if (PyType_Ready(type) < 0)
  ------------------
  |  Branch (6555:13): [True: 0, False: 0]
  ------------------
 6556|      0|            return PyStackRef_NULL;
 6557|      0|    }
 6558|       |
 6559|       |    /* Set up GC-visible stack refs */
 6560|    771|    _PyCStackRef result_ref, meta_attribute_ref, attribute_ref;
 6561|    771|    PyThreadState *tstate = _PyThreadState_GET();
 6562|    771|    _PyThreadState_PushCStackRef(tstate, &result_ref);
 6563|    771|    _PyThreadState_PushCStackRef(tstate, &meta_attribute_ref);
 6564|    771|    _PyThreadState_PushCStackRef(tstate, &attribute_ref);
 6565|       |
 6566|       |    /* Look for the attribute in the metatype */
 6567|    771|    _PyType_LookupStackRefAndVersion(metatype, name, &meta_attribute_ref.ref);
 6568|       |
 6569|    771|    if (!PyStackRef_IsNull(meta_attribute_ref.ref)) {
  ------------------
  |  |  470|    771|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  ------------------
  |  |  |  |  467|    771|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    771|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6569:9): [True: 455, False: 316]
  ------------------
 6570|    455|        PyObject *meta_attr_obj = PyStackRef_AsPyObjectBorrow(meta_attribute_ref.ref);
 6571|    455|        meta_get = Py_TYPE(meta_attr_obj)->tp_descr_get;
  ------------------
  |  |  213|    455|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    455|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    455|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6572|       |
 6573|    455|        if (meta_get != NULL && PyDescr_IsData(meta_attr_obj)) {
  ------------------
  |  Branch (6573:13): [True: 392, False: 63]
  |  Branch (6573:33): [True: 221, False: 171]
  ------------------
 6574|       |            /* Data descriptors implement tp_descr_set to intercept
 6575|       |             * writes. Assume the attribute is not overridden in
 6576|       |             * type's tp_dict (and bases): call the descriptor now.
 6577|       |             */
 6578|    221|            PyObject *res = meta_get(meta_attr_obj, (PyObject *)type,
 6579|    221|                                     (PyObject *)metatype);
 6580|    221|            if (res != NULL) {
  ------------------
  |  Branch (6580:17): [True: 212, False: 9]
  ------------------
 6581|    212|                result_ref.ref = PyStackRef_FromPyObjectSteal(res);
 6582|    212|            }
 6583|    221|            goto done;
 6584|    221|        }
 6585|    455|    }
 6586|       |
 6587|       |    /* No data descriptor found on metatype. Look in tp_dict of this
 6588|       |     * type and its bases */
 6589|    550|    _PyType_LookupStackRefAndVersion(type, name, &attribute_ref.ref);
 6590|    550|    if (!PyStackRef_IsNull(attribute_ref.ref)) {
  ------------------
  |  |  470|    550|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  ------------------
  |  |  |  |  467|    550|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    550|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6590:9): [True: 490, False: 60]
  ------------------
 6591|       |        /* Implement descriptor functionality, if any */
 6592|    490|        PyObject *attr_obj = PyStackRef_AsPyObjectBorrow(attribute_ref.ref);
 6593|    490|        descrgetfunc local_get = Py_TYPE(attr_obj)->tp_descr_get;
  ------------------
  |  |  213|    490|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    490|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    490|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6594|       |
 6595|       |        /* Release meta_attribute early since we found in local dict */
 6596|    490|        PyStackRef_CLEAR(meta_attribute_ref.ref);
  ------------------
  |  |  711|    490|    do { \
  |  |  712|    490|        _PyStackRef *_tmp_op_ptr = &(REF); \
  |  |  713|    490|        _PyStackRef _tmp_old_op = (*_tmp_op_ptr); \
  |  |  714|    490|        *_tmp_op_ptr = PyStackRef_NULL; \
  |  |  715|    490|        PyStackRef_XCLOSE(_tmp_old_op); \
  |  |  716|    490|    } while (0)
  |  |  ------------------
  |  |  |  Branch (716:14): [Folded, False: 490]
  |  |  ------------------
  ------------------
 6597|       |
 6598|    490|        if (local_get != NULL) {
  ------------------
  |  Branch (6598:13): [True: 429, False: 61]
  ------------------
 6599|       |            /* Special case staticmethod to avoid descriptor call overhead.
 6600|       |             * staticmethod.__get__ just returns the wrapped callable. */
 6601|    429|            if (Py_TYPE(attr_obj) == &PyStaticMethod_Type) {
  ------------------
  |  |  213|    429|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    429|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    429|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6601:17): [True: 169, False: 260]
  ------------------
 6602|    169|                PyObject *callable = _PyStaticMethod_GetFunc(attr_obj);
 6603|    169|                if (callable) {
  ------------------
  |  Branch (6603:21): [True: 169, False: 0]
  ------------------
 6604|    169|                    result_ref.ref = PyStackRef_FromPyObjectNew(callable);
  ------------------
  |  |  599|    169|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    169|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    169|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6605|    169|                    goto done;
 6606|    169|                }
 6607|    169|            }
 6608|       |            /* NULL 2nd argument indicates the descriptor was
 6609|       |             * found on the target object itself (or a base)  */
 6610|    260|            PyObject *res = local_get(attr_obj, (PyObject *)NULL,
 6611|    260|                                      (PyObject *)type);
 6612|    260|            if (res != NULL) {
  ------------------
  |  Branch (6612:17): [True: 260, False: 0]
  ------------------
 6613|    260|                result_ref.ref = PyStackRef_FromPyObjectSteal(res);
 6614|    260|            }
 6615|    260|            goto done;
 6616|    429|        }
 6617|       |
 6618|       |        /* No descriptor, return the attribute directly */
 6619|     61|        result_ref.ref = attribute_ref.ref;
 6620|     61|        attribute_ref.ref = PyStackRef_NULL;
 6621|     61|        goto done;
 6622|    490|    }
 6623|       |
 6624|       |    /* No attribute found in local __dict__ (or bases): use the
 6625|       |     * descriptor from the metatype, if any */
 6626|     60|    if (meta_get != NULL) {
  ------------------
  |  Branch (6626:9): [True: 52, False: 8]
  ------------------
 6627|     52|        PyObject *meta_attr_obj = PyStackRef_AsPyObjectBorrow(meta_attribute_ref.ref);
 6628|     52|        PyObject *res = meta_get(meta_attr_obj, (PyObject *)type,
 6629|     52|                                 (PyObject *)metatype);
 6630|     52|        if (res != NULL) {
  ------------------
  |  Branch (6630:13): [True: 52, False: 0]
  ------------------
 6631|     52|            result_ref.ref = PyStackRef_FromPyObjectSteal(res);
 6632|     52|        }
 6633|     52|        goto done;
 6634|     52|    }
 6635|       |
 6636|       |    /* If an ordinary attribute was found on the metatype, return it now */
 6637|      8|    if (!PyStackRef_IsNull(meta_attribute_ref.ref)) {
  ------------------
  |  |  470|      8|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  ------------------
  |  |  |  |  467|      8|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      8|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6637:9): [True: 0, False: 8]
  ------------------
 6638|      0|        result_ref.ref = meta_attribute_ref.ref;
 6639|      0|        meta_attribute_ref.ref = PyStackRef_NULL;
 6640|      0|        goto done;
 6641|      0|    }
 6642|       |
 6643|       |    /* Give up */
 6644|      8|    if (suppress_missing_attribute == NULL) {
  ------------------
  |  Branch (6644:9): [True: 1, False: 7]
  ------------------
 6645|      1|        PyErr_Format(PyExc_AttributeError,
 6646|      1|                     "type object '%.100s' has no attribute '%U'",
 6647|      1|                     type->tp_name, name);
 6648|      1|    }
 6649|      7|    else {
 6650|       |        // signal the caller we have not set an PyExc_AttributeError and gave up
 6651|      7|        *suppress_missing_attribute = 1;
 6652|      7|    }
 6653|       |
 6654|    771|done:
 6655|    771|    _PyThreadState_PopCStackRef(tstate, &attribute_ref);
 6656|    771|    _PyThreadState_PopCStackRef(tstate, &meta_attribute_ref);
 6657|    771|    return _PyThreadState_PopCStackRefSteal(tstate, &result_ref);
 6658|      8|}
_PyType_AddMethod:
 8638|      1|{
 8639|      1|    return type_add_method(type, meth);
 8640|      1|}
PyType_Ready:
 9581|    126|{
 9582|    126|    if (type->tp_flags & Py_TPFLAGS_READY) {
  ------------------
  |  |  518|    126|#define Py_TPFLAGS_READY (1UL << 12)
  ------------------
  |  Branch (9582:9): [True: 0, False: 126]
  ------------------
 9583|      0|        assert(_PyType_CheckConsistency(type));
  ------------------
  |  Branch (9583:9): [True: 0, False: 0]
  ------------------
 9584|      0|        return 0;
 9585|      0|    }
 9586|    126|    assert(!(type->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN));
  ------------------
  |  Branch (9586:5): [True: 126, False: 0]
  ------------------
 9587|       |
 9588|       |    /* Historically, all static types were immutable. See bpo-43908 */
 9589|    126|    if (!(type->tp_flags & Py_TPFLAGS_HEAPTYPE)) {
  ------------------
  |  |  503|    126|#define Py_TPFLAGS_HEAPTYPE (1UL << 9)
  ------------------
  |  Branch (9589:9): [True: 0, False: 126]
  ------------------
 9590|      0|        type_add_flags(type, Py_TPFLAGS_IMMUTABLETYPE);
  ------------------
  |  |  500|      0|#define Py_TPFLAGS_IMMUTABLETYPE (1UL << 8)
  ------------------
 9591|       |        /* Static types must be immortal */
 9592|      0|        _Py_SetImmortalUntracked((PyObject *)type);
 9593|      0|    }
 9594|       |
 9595|    126|    int res;
 9596|    126|    BEGIN_TYPE_LOCK();
 9597|    126|    if (!(type->tp_flags & Py_TPFLAGS_READY)) {
  ------------------
  |  |  518|    126|#define Py_TPFLAGS_READY (1UL << 12)
  ------------------
  |  Branch (9597:9): [True: 126, False: 0]
  ------------------
 9598|    126|        res = type_ready(type, 1);
 9599|    126|    } else {
 9600|      0|        res = 0;
 9601|      0|        assert(_PyType_CheckConsistency(type));
  ------------------
  |  Branch (9601:9): [True: 0, False: 0]
  ------------------
 9602|      0|    }
 9603|    126|    END_TYPE_LOCK();
 9604|    126|    return res;
 9605|    126|}
_PyStaticType_InitForExtension:
 9650|      6|{
 9651|      6|    return init_static_type(interp, self, 0, ((self->tp_flags & Py_TPFLAGS_READY) == 0));
  ------------------
  |  |  518|      6|#define Py_TPFLAGS_READY (1UL << 12)
  ------------------
 9652|      6|}
_PyStaticType_InitBuiltin:
 9656|    201|{
 9657|    201|    return init_static_type(interp, self, 1, _Py_IsMainInterpreter(interp));
 9658|    201|}
_PyType_InitSlotDefs:
12154|      1|{
12155|      1|    if (!_Py_IsMainInterpreter(interp)) {
  ------------------
  |  Branch (12155:9): [True: 0, False: 1]
  ------------------
12156|      0|        return 0;
12157|      0|    }
12158|      1|    PyObject *bytearray = NULL;
12159|      1|    PyObject *cache = PyDict_New();
12160|      1|    if (!cache) {
  ------------------
  |  Branch (12160:9): [True: 0, False: 1]
  ------------------
12161|      0|        return -1;
12162|      0|    }
12163|       |
12164|      1|    pytype_slotdef *p;
12165|      1|    Py_ssize_t idx = 0;
12166|     95|    for (p = slotdefs; p->name_strobj; p++, idx++) {
  ------------------
  |  Branch (12166:24): [True: 94, False: 1]
  ------------------
12167|     94|        assert(idx < 255);
  ------------------
  |  Branch (12167:9): [True: 94, False: 0]
  ------------------
12168|       |
12169|     94|        if (PyDict_GetItemRef(cache, p->name_strobj, &bytearray) < 0) {
  ------------------
  |  Branch (12169:13): [True: 0, False: 94]
  ------------------
12170|      0|            goto error;
12171|      0|        }
12172|       |
12173|     94|        if (!bytearray) {
  ------------------
  |  Branch (12173:13): [True: 81, False: 13]
  ------------------
12174|     81|            Py_ssize_t size = sizeof(uint8_t) * (1 + MAX_EQUIV);
  ------------------
  |  |  729|     81|#define MAX_EQUIV 10
  ------------------
12175|     81|            bytearray = PyByteArray_FromStringAndSize(NULL, size);
12176|     81|            if (!bytearray) {
  ------------------
  |  Branch (12176:17): [True: 0, False: 81]
  ------------------
12177|      0|                goto error;
12178|      0|            }
12179|       |
12180|     81|            uint8_t *data = (uint8_t *)PyByteArray_AS_STRING(bytearray);
  ------------------
  |  |   28|     81|#define PyByteArray_AS_STRING(self) PyByteArray_AS_STRING(_PyObject_CAST(self))
  |  |  ------------------
  |  |  |  |  171|     81|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     81|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12181|     81|            data[0] = 0;
12182|       |
12183|     81|            if (PyDict_SetItem(cache, p->name_strobj, bytearray) < 0) {
  ------------------
  |  Branch (12183:17): [True: 0, False: 81]
  ------------------
12184|      0|                goto error;
12185|      0|            }
12186|     81|        }
12187|       |
12188|     94|        assert(PyByteArray_CheckExact(bytearray));
  ------------------
  |  Branch (12188:9): [True: 94, False: 0]
  ------------------
12189|     94|        uint8_t *data = (uint8_t *)PyByteArray_AS_STRING(bytearray);
  ------------------
  |  |   28|     94|#define PyByteArray_AS_STRING(self) PyByteArray_AS_STRING(_PyObject_CAST(self))
  |  |  ------------------
  |  |  |  |  171|     94|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     94|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12190|       |
12191|     94|        data[0] += 1;
12192|     94|        assert(data[0] < MAX_EQUIV);
  ------------------
  |  Branch (12192:9): [True: 94, False: 0]
  ------------------
12193|       |
12194|     94|        data[data[0]] = (uint8_t)idx;
12195|       |
12196|     94|        Py_CLEAR(bytearray);
  ------------------
  |  |  484|     94|    do { \
  |  |  485|     94|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|     94|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|     94|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|     94|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|     94|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 94, False: 0]
  |  |  ------------------
  |  |  488|     94|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|     94|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|     94|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|     94|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     94|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     94|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|     94|        } \
  |  |  491|     94|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 94]
  |  |  ------------------
  ------------------
12197|     94|    }
12198|       |
12199|      1|    memset(slotdefs_dups, -1, sizeof(slotdefs_dups));
12200|       |
12201|      1|    Py_ssize_t pos = 0;
12202|      1|    PyObject *key = NULL;
12203|      1|    PyObject *value = NULL;
12204|     82|    while (PyDict_Next(cache, &pos, &key, &value)) {
  ------------------
  |  Branch (12204:12): [True: 81, False: 1]
  ------------------
12205|     81|        uint8_t *data = (uint8_t *)PyByteArray_AS_STRING(value);
  ------------------
  |  |   28|     81|#define PyByteArray_AS_STRING(self) PyByteArray_AS_STRING(_PyObject_CAST(self))
  |  |  ------------------
  |  |  |  |  171|     81|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     81|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12206|     81|        uint8_t n = data[0];
12207|    175|        for (uint8_t i = 0; i < n; i++) {
  ------------------
  |  Branch (12207:29): [True: 94, False: 81]
  ------------------
12208|     94|            uint8_t idx = data[i + 1];
12209|     94|            memcpy(&slotdefs_dups[idx], data, sizeof(uint8_t) * (n + 1));
12210|     94|        }
12211|     81|    }
12212|       |
12213|      1|    Py_DECREF(cache);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12214|      1|    return 0;
12215|       |
12216|      0|error:
12217|      0|    Py_XDECREF(bytearray);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12218|      0|    Py_DECREF(cache);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12219|      0|    return -1;
12220|      1|}
_PySuper_LookupDescr:
12557|    177|{
12558|    177|    PyObject *mro, *res;
12559|    177|    Py_ssize_t i, n;
12560|       |
12561|    177|    mro = lookup_tp_mro(su_obj_type);
12562|    177|    if (mro == NULL)
  ------------------
  |  Branch (12562:9): [True: 0, False: 177]
  ------------------
12563|      0|        return NULL;
12564|       |
12565|       |    /* Keep a strong reference to mro because su_obj_type->tp_mro can be
12566|       |       replaced during PyDict_GetItemRef(dict, name, &res). */
12567|    177|    PyThreadState *tstate = _PyThreadState_GET();
12568|    177|    _PyCStackRef mro_ref;
12569|    177|    _PyThreadState_PushCStackRefNew(tstate, &mro_ref, mro);
12570|       |
12571|    177|    assert(PyTuple_Check(mro));
  ------------------
  |  Branch (12571:5): [True: 177, False: 0]
  ------------------
12572|    177|    n = PyTuple_GET_SIZE(mro);
  ------------------
  |  |   27|    177|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    177|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    177|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12573|       |
12574|       |    /* No need to check the last one: it's gonna be skipped anyway.  */
12575|    178|    for (i = 0; i+1 < n; i++) {
  ------------------
  |  Branch (12575:17): [True: 178, False: 0]
  ------------------
12576|    178|        if ((PyObject *)(su_type) == PyTuple_GET_ITEM(mro, i))
  ------------------
  |  |   29|    178|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|    178|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    178|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12576:13): [True: 177, False: 1]
  |  Branch (12576:38): [True: 178, False: 0]
  ------------------
12577|    177|            break;
12578|    178|    }
12579|    177|    i++;  /* skip su->type (if any)  */
12580|    177|    if (i >= n) {
  ------------------
  |  Branch (12580:9): [True: 0, False: 177]
  ------------------
12581|      0|        _PyThreadState_PopCStackRef(tstate, &mro_ref);
12582|      0|        return NULL;
12583|      0|    }
12584|       |
12585|    301|    do {
12586|    301|        PyObject *obj = PyTuple_GET_ITEM(mro, i);
  ------------------
  |  |   29|    301|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|    301|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    301|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12586:25): [True: 301, False: 0]
  ------------------
12587|    301|        PyObject *dict = lookup_tp_dict(_PyType_CAST(obj));
  ------------------
  |  |  770|    301|    (assert(PyType_Check(op)), _Py_CAST(PyTypeObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|    301|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (12587:41): [True: 301, False: 0]
  ------------------
12588|    301|        assert(dict != NULL && PyDict_Check(dict));
  ------------------
  |  Branch (12588:9): [True: 301, False: 0]
  |  Branch (12588:9): [True: 301, False: 0]
  ------------------
12589|       |
12590|    301|        if (PyDict_GetItemRef(dict, name, &res) != 0) {
  ------------------
  |  Branch (12590:13): [True: 177, False: 124]
  ------------------
12591|       |            // found or error
12592|    177|            _PyThreadState_PopCStackRef(tstate, &mro_ref);
12593|    177|            return res;
12594|    177|        }
12595|       |
12596|    124|        i++;
12597|    124|    } while (i < n);
  ------------------
  |  Branch (12597:14): [True: 124, False: 0]
  ------------------
12598|      0|    _PyThreadState_PopCStackRef(tstate, &mro_ref);
12599|       |    return NULL;
12600|    177|}
_PySuper_Lookup:
12738|     86|{
12739|     86|    PyTypeObject *su_obj_type = supercheck(su_type, su_obj);
12740|     86|    if (su_obj_type == NULL) {
  ------------------
  |  Branch (12740:9): [True: 0, False: 86]
  ------------------
12741|      0|        return NULL;
12742|      0|    }
12743|     86|    PyObject *res = do_super_lookup(NULL, su_type, su_obj, su_obj_type, name, method);
12744|     86|    Py_DECREF(su_obj_type);
  ------------------
  |  |  430|     86|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     86|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     86|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12745|     86|    return res;
12746|     86|}
typeobject.c:managed_static_type_state_get:
  286|  20.7k|{
  287|       |    // It's probably a builtin type.
  288|  20.7k|    size_t index = managed_static_type_index_get(self);
  289|  20.7k|    managed_static_type_state *state =
  290|  20.7k|            &(interp->types.builtins.initialized[index]);
  291|  20.7k|    if (state->type == self) {
  ------------------
  |  Branch (291:9): [True: 20.6k, False: 153]
  ------------------
  292|  20.6k|        return state;
  293|  20.6k|    }
  294|    153|    if (index > _Py_MAX_MANAGED_STATIC_EXT_TYPES) {
  ------------------
  |  |  532|    153|#define _Py_MAX_MANAGED_STATIC_EXT_TYPES 10
  ------------------
  |  Branch (294:9): [True: 0, False: 153]
  ------------------
  295|      0|        return state;
  296|      0|    }
  297|    153|    return &(interp->types.for_extensions.initialized[index]);
  298|    153|}
typeobject.c:managed_static_type_index_get:
  240|  20.7k|{
  241|  20.7k|    assert(managed_static_type_index_is_set(self));
  ------------------
  |  Branch (241:5): [True: 20.7k, False: 0]
  ------------------
  242|       |    /* We store a 1-based index so 0 can mean "not initialized". */
  243|  20.7k|    return (size_t)self->tp_subclasses - 1;
  244|  20.7k|}
typeobject.c:managed_static_type_index_is_set:
  233|  20.9k|{
  234|       |    return self->tp_subclasses != NULL;
  235|  20.9k|}
typeobject.c:lookup_tp_dict:
  528|  39.2k|{
  529|  39.2k|    if (self->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN) {
  ------------------
  |  |  467|  39.2k|#define _Py_TPFLAGS_STATIC_BUILTIN (1 << 1)
  ------------------
  |  Branch (529:9): [True: 19.1k, False: 20.1k]
  ------------------
  530|  19.1k|        PyInterpreterState *interp = _PyInterpreterState_GET();
  531|  19.1k|        managed_static_type_state *state = _PyStaticType_GetState(interp, self);
  532|  19.1k|        assert(state != NULL);
  ------------------
  |  Branch (532:9): [True: 19.1k, False: 0]
  ------------------
  533|  19.1k|        return state->tp_dict;
  534|  19.1k|    }
  535|  20.1k|    return self->tp_dict;
  536|  39.2k|}
typeobject.c:lookup_tp_bases:
  581|  1.64k|{
  582|  1.64k|    return self->tp_bases;
  583|  1.64k|}
typeobject.c:lookup_tp_subclasses:
  733|    382|{
  734|    382|    if (self->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN) {
  ------------------
  |  |  467|    382|#define _Py_TPFLAGS_STATIC_BUILTIN (1 << 1)
  ------------------
  |  Branch (734:9): [True: 289, False: 93]
  ------------------
  735|    289|        PyInterpreterState *interp = _PyInterpreterState_GET();
  736|    289|        managed_static_type_state *state = _PyStaticType_GetState(interp, self);
  737|    289|        assert(state != NULL);
  ------------------
  |  Branch (737:9): [True: 289, False: 0]
  ------------------
  738|    289|        return state->tp_subclasses;
  739|    289|    }
  740|     93|    return (PyObject *)self->tp_subclasses;
  741|    382|}
typeobject.c:init_tp_subclasses:
  701|     65|{
  702|     65|    PyObject *subclasses = PyDict_New();
  703|     65|    if (subclasses == NULL) {
  ------------------
  |  Branch (703:9): [True: 0, False: 65]
  ------------------
  704|      0|        return NULL;
  705|      0|    }
  706|     65|    if (self->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN) {
  ------------------
  |  |  467|     65|#define _Py_TPFLAGS_STATIC_BUILTIN (1 << 1)
  ------------------
  |  Branch (706:9): [True: 35, False: 30]
  ------------------
  707|     35|        PyInterpreterState *interp = _PyInterpreterState_GET();
  708|     35|        managed_static_type_state *state = _PyStaticType_GetState(interp, self);
  709|     35|        state->tp_subclasses = subclasses;
  710|     35|        return subclasses;
  711|     35|    }
  712|     30|    self->tp_subclasses = (void *)subclasses;
  713|     30|    return subclasses;
  714|     65|}
typeobject.c:is_readying:
  513|    822|{
  514|    822|    if (type->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN) {
  ------------------
  |  |  467|    822|#define _Py_TPFLAGS_STATIC_BUILTIN (1 << 1)
  ------------------
  |  Branch (514:9): [True: 414, False: 408]
  ------------------
  515|    414|        PyInterpreterState *interp = _PyInterpreterState_GET();
  516|    414|        managed_static_type_state *state = managed_static_type_state_get(interp, type);
  517|    414|        assert(state != NULL);
  ------------------
  |  Branch (517:9): [True: 414, False: 0]
  ------------------
  518|    414|        return state->readying;
  519|    414|    }
  520|    408|    return (type->tp_flags & Py_TPFLAGS_READYING) != 0;
  ------------------
  |  |  521|    408|#define Py_TPFLAGS_READYING (1UL << 13)
  ------------------
  521|    822|}
typeobject.c:_PyType_DocWithoutSignature:
  901|    209|{
  902|    209|    const char *doc = find_signature(name, internal_doc);
  903|       |
  904|    209|    if (doc) {
  ------------------
  |  Branch (904:9): [True: 78, False: 131]
  ------------------
  905|     78|        doc = skip_signature(doc);
  906|     78|        if (doc)
  ------------------
  |  Branch (906:13): [True: 70, False: 8]
  ------------------
  907|     70|            return doc;
  908|     78|        }
  909|    139|    return internal_doc;
  910|    209|}
typeobject.c:find_signature:
  822|    209|{
  823|    209|    const char *dot;
  824|    209|    size_t length;
  825|       |
  826|    209|    if (!doc)
  ------------------
  |  Branch (826:9): [True: 0, False: 209]
  ------------------
  827|      0|        return NULL;
  828|       |
  829|    209|    assert(name != NULL);
  ------------------
  |  Branch (829:5): [True: 209, False: 0]
  ------------------
  830|       |
  831|       |    /* for dotted names like classes, only use the last component */
  832|    209|    dot = strrchr(name, '.');
  833|    209|    if (dot)
  ------------------
  |  Branch (833:9): [True: 95, False: 114]
  ------------------
  834|     95|        name = dot + 1;
  835|       |
  836|    209|    length = strlen(name);
  837|    209|    if (strncmp(doc, name, length))
  ------------------
  |  Branch (837:9): [True: 115, False: 94]
  ------------------
  838|    115|        return NULL;
  839|     94|    doc += length;
  840|     94|    if (*doc != '(')
  ------------------
  |  Branch (840:9): [True: 16, False: 78]
  ------------------
  841|     16|        return NULL;
  842|     78|    return doc;
  843|     94|}
typeobject.c:skip_signature:
  853|     78|{
  854|  3.56k|    while (*doc) {
  ------------------
  |  Branch (854:12): [True: 3.56k, False: 2]
  ------------------
  855|  3.56k|        if ((*doc == *SIGNATURE_END_MARKER) &&
  ------------------
  |  |  845|  3.56k|#define SIGNATURE_END_MARKER         ")\n--\n\n"
  ------------------
  |  Branch (855:13): [True: 116, False: 3.44k]
  ------------------
  856|    116|            !strncmp(doc, SIGNATURE_END_MARKER, SIGNATURE_END_MARKER_LENGTH))
  ------------------
  |  |  845|    116|#define SIGNATURE_END_MARKER         ")\n--\n\n"
  ------------------
                          !strncmp(doc, SIGNATURE_END_MARKER, SIGNATURE_END_MARKER_LENGTH))
  ------------------
  |  |  846|    116|#define SIGNATURE_END_MARKER_LENGTH  6
  ------------------
  |  Branch (856:13): [True: 70, False: 46]
  ------------------
  857|     70|            return doc + SIGNATURE_END_MARKER_LENGTH;
  ------------------
  |  |  846|     70|#define SIGNATURE_END_MARKER_LENGTH  6
  ------------------
  858|  3.49k|        if ((*doc == '\n') && (doc[1] == '\n'))
  ------------------
  |  Branch (858:13): [True: 46, False: 3.44k]
  |  Branch (858:31): [True: 6, False: 40]
  ------------------
  859|      6|            return NULL;
  860|  3.48k|        doc++;
  861|  3.48k|    }
  862|      2|    return NULL;
  863|     78|}
typeobject.c:type_modified_unlocked:
 1167|    185|{
 1168|       |    /* Invalidate any cached data for the specified type and all
 1169|       |       subclasses.  This function is called after the base
 1170|       |       classes, mro, or attributes of the type are altered.
 1171|       |
 1172|       |       Invariants:
 1173|       |
 1174|       |       - before tp_version_tag can be set on a type,
 1175|       |         it must first be set on all super types.
 1176|       |
 1177|       |       This function clears the tp_version_tag of a
 1178|       |       type (so it must first clear it on all subclasses).  The
 1179|       |       tp_version_tag value is meaningless when equal to zero.
 1180|       |       We don't assign new version tags eagerly, but only as
 1181|       |       needed.
 1182|       |     */
 1183|    185|    ASSERT_NEW_TYPE_OR_LOCKED(type);
 1184|       |#ifdef Py_GIL_DISABLED
 1185|       |    // This function is re-entrant and it's not safe to call it
 1186|       |    // with the world stopped.
 1187|       |    assert(!types_world_is_stopped());
 1188|       |#endif
 1189|    185|    if (type->tp_version_tag == 0) {
  ------------------
  |  Branch (1189:9): [True: 165, False: 20]
  ------------------
 1190|    165|        return;
 1191|    165|    }
 1192|       |    // Cannot modify static builtin types.
 1193|    185|    assert((type->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN) == 0);
  ------------------
  |  Branch (1193:5): [True: 20, False: 0]
  ------------------
 1194|       |
 1195|     20|    PyObject *subclasses = lookup_tp_subclasses(type);
 1196|     20|    if (subclasses != NULL) {
  ------------------
  |  Branch (1196:9): [True: 0, False: 20]
  ------------------
 1197|      0|        assert(PyDict_CheckExact(subclasses));
  ------------------
  |  Branch (1197:9): [True: 0, False: 0]
  ------------------
 1198|       |
 1199|      0|        Py_ssize_t i = 0;
 1200|      0|        PyObject *ref;
 1201|      0|        while (PyDict_Next(subclasses, &i, NULL, &ref)) {
  ------------------
  |  Branch (1201:16): [True: 0, False: 0]
  ------------------
 1202|      0|            PyTypeObject *subclass = type_from_ref(ref);
 1203|      0|            if (subclass == NULL) {
  ------------------
  |  Branch (1203:17): [True: 0, False: 0]
  ------------------
 1204|      0|                continue;
 1205|      0|            }
 1206|      0|            type_modified_unlocked(subclass);
 1207|      0|            Py_DECREF(subclass);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1208|      0|        }
 1209|      0|    }
 1210|       |
 1211|       |    // Notify registered type watchers, if any
 1212|     20|    if (type->tp_watched) {
  ------------------
  |  Branch (1212:9): [True: 0, False: 20]
  ------------------
 1213|      0|        PyInterpreterState *interp = _PyInterpreterState_GET();
 1214|      0|        int bits = type->tp_watched;
 1215|      0|        int i = 0;
 1216|      0|        while (bits) {
  ------------------
  |  Branch (1216:16): [True: 0, False: 0]
  ------------------
 1217|      0|            assert(i < TYPE_MAX_WATCHERS);
  ------------------
  |  Branch (1217:13): [True: 0, False: 0]
  ------------------
 1218|      0|            if (bits & 1) {
  ------------------
  |  Branch (1218:17): [True: 0, False: 0]
  ------------------
 1219|       |                // Note that PyErr_FormatUnraisable is potentially re-entrant
 1220|       |                // and the watcher callback might be too.
 1221|      0|                PyType_WatchCallback cb = interp->type_watchers[i];
 1222|      0|                if (cb && (cb(type) < 0)) {
  ------------------
  |  Branch (1222:21): [True: 0, False: 0]
  |  Branch (1222:27): [True: 0, False: 0]
  ------------------
 1223|      0|                    PyErr_FormatUnraisable(
 1224|      0|                        "Exception ignored in type watcher callback #%d for %R",
 1225|      0|                        i, type);
 1226|      0|                }
 1227|      0|            }
 1228|      0|            i++;
 1229|      0|            bits >>= 1;
 1230|      0|        }
 1231|      0|    }
 1232|       |
 1233|     20|    set_version_unlocked(type, 0); /* 0 is not a valid version tag */
 1234|     20|    if (PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE)) {
  ------------------
  |  |  503|     20|#define Py_TPFLAGS_HEAPTYPE (1UL << 9)
  ------------------
  |  Branch (1234:9): [True: 20, False: 0]
  ------------------
 1235|       |        // This field *must* be invalidated if the type is modified (see the
 1236|       |        // comment on struct _specialization_cache):
 1237|     20|        FT_ATOMIC_STORE_PTR_RELAXED(
  ------------------
  |  |  163|     20|#define FT_ATOMIC_STORE_PTR_RELAXED(value, new_value) value = new_value
  ------------------
 1238|     20|            ((PyHeapTypeObject *)type)->_spec_cache.getitem, NULL);
 1239|     20|    }
 1240|     20|}
typeobject.c:set_version_unlocked:
 1135|    297|{
 1136|    297|    assert(version == 0 || (tp->tp_versions_used != _Py_ATTR_CACHE_UNUSED));
  ------------------
  |  Branch (1136:5): [True: 20, False: 277]
  |  Branch (1136:5): [True: 277, False: 0]
  ------------------
 1137|    297|#ifndef Py_GIL_DISABLED
 1138|    297|    PyInterpreterState *interp = _PyInterpreterState_GET();
 1139|       |    // lookup the old version and set to null
 1140|    297|    if (tp->tp_version_tag != 0) {
  ------------------
  |  Branch (1140:9): [True: 20, False: 277]
  ------------------
 1141|     20|        PyTypeObject **slot =
 1142|     20|            interp->types.type_version_cache
 1143|     20|            + (tp->tp_version_tag % TYPE_VERSION_CACHE_SIZE);
  ------------------
  |  |  584|     20|#define TYPE_VERSION_CACHE_SIZE (1<<12)  /* Must be a power of 2 */
  ------------------
 1144|     20|        *slot = NULL;
 1145|     20|    }
 1146|    297|    if (version) {
  ------------------
  |  Branch (1146:9): [True: 277, False: 20]
  ------------------
 1147|    277|        tp->tp_versions_used++;
 1148|    277|    }
 1149|       |#else
 1150|       |    if (version) {
 1151|       |        _Py_atomic_add_uint16(&tp->tp_versions_used, 1);
 1152|       |    }
 1153|       |#endif
 1154|    297|    FT_ATOMIC_STORE_UINT_RELAXED(tp->tp_version_tag, version);
  ------------------
  |  |  190|    297|#define FT_ATOMIC_STORE_UINT_RELAXED(value, new_value) value = new_value
  ------------------
 1155|    297|#ifndef Py_GIL_DISABLED
 1156|    297|    if (version != 0) {
  ------------------
  |  Branch (1156:9): [True: 277, False: 20]
  ------------------
 1157|    277|        PyTypeObject **slot =
 1158|    277|            interp->types.type_version_cache
 1159|    277|            + (version % TYPE_VERSION_CACHE_SIZE);
  ------------------
  |  |  584|    277|#define TYPE_VERSION_CACHE_SIZE (1<<12)  /* Must be a power of 2 */
  ------------------
 1160|    277|        *slot = tp;
 1161|    277|    }
 1162|    297|#endif
 1163|    297|}
typeobject.c:assign_version_tag:
 1409|    157|{
 1410|    157|    ASSERT_TYPE_LOCK_HELD();
 1411|       |
 1412|       |    /* Ensure that the tp_version_tag is valid.
 1413|       |     * To respect the invariant, this must first be done on all super classes.
 1414|       |     * Return 0 if this cannot be done, 1 if tp_version_tag is set.
 1415|       |    */
 1416|    157|    if (type->tp_version_tag != 0) {
  ------------------
  |  Branch (1416:9): [True: 76, False: 81]
  ------------------
 1417|     76|        return 1;
 1418|     76|    }
 1419|     81|    if (!_PyType_HasFeature(type, Py_TPFLAGS_READY)) {
  ------------------
  |  |  518|     81|#define Py_TPFLAGS_READY (1UL << 12)
  ------------------
  |  Branch (1419:9): [True: 0, False: 81]
  ------------------
 1420|      0|        return 0;
 1421|      0|    }
 1422|     81|    if (type->tp_versions_used >= MAX_VERSIONS_PER_CLASS) {
  ------------------
  |  | 1389|     81|#define MAX_VERSIONS_PER_CLASS 1000
  ------------------
  |  Branch (1422:9): [True: 0, False: 81]
  ------------------
 1423|       |        /* (this includes `tp_versions_used == _Py_ATTR_CACHE_UNUSED`) */
 1424|      0|        return 0;
 1425|      0|    }
 1426|       |
 1427|     81|    PyObject *bases = lookup_tp_bases(type);
 1428|     81|    Py_ssize_t n = PyTuple_GET_SIZE(bases);
  ------------------
  |  |   27|     81|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     81|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     81|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1429|    174|    for (Py_ssize_t i = 0; i < n; i++) {
  ------------------
  |  Branch (1429:28): [True: 93, False: 81]
  ------------------
 1430|     93|        PyObject *b = PyTuple_GET_ITEM(bases, i);
  ------------------
  |  |   29|     93|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|     93|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     93|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1430:23): [True: 93, False: 0]
  ------------------
 1431|     93|        if (!assign_version_tag(interp, _PyType_CAST(b))) {
  ------------------
  |  |  770|     93|    (assert(PyType_Check(op)), _Py_CAST(PyTypeObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|     93|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (1431:13): [True: 0, False: 93]
  |  Branch (1431:41): [True: 93, False: 0]
  ------------------
 1432|      0|            return 0;
 1433|      0|        }
 1434|     93|    }
 1435|     81|    if (type->tp_flags & Py_TPFLAGS_IMMUTABLETYPE) {
  ------------------
  |  |  500|     81|#define Py_TPFLAGS_IMMUTABLETYPE (1UL << 8)
  ------------------
  |  Branch (1435:9): [True: 9, False: 72]
  ------------------
 1436|       |        /* static types */
 1437|      9|        unsigned int next_version_tag = next_global_version_tag();
 1438|      9|        if (next_version_tag == 0) {
  ------------------
  |  Branch (1438:13): [True: 0, False: 9]
  ------------------
 1439|       |            /* We have run out of version numbers */
 1440|      0|            return 0;
 1441|      0|        }
 1442|      9|        set_version_unlocked(type, next_version_tag);
 1443|      9|        assert (type->tp_version_tag <= _Py_MAX_GLOBAL_TYPE_VERSION_TAG);
  ------------------
  |  Branch (1443:9): [True: 9, False: 0]
  ------------------
 1444|      9|    }
 1445|     72|    else {
 1446|       |        /* heap types */
 1447|     72|        if (NEXT_VERSION_TAG(interp) == 0) {
  ------------------
  |  |   61|     72|    (interp)->types.next_version_tag
  ------------------
  |  Branch (1447:13): [True: 0, False: 72]
  ------------------
 1448|       |            /* We have run out of version numbers */
 1449|      0|            return 0;
 1450|      0|        }
 1451|     72|        set_version_unlocked(type, NEXT_VERSION_TAG(interp)++);
  ------------------
  |  |   61|     72|    (interp)->types.next_version_tag
  ------------------
 1452|     72|        assert (type->tp_version_tag != 0);
  ------------------
  |  Branch (1452:9): [True: 72, False: 0]
  ------------------
 1453|     72|    }
 1454|     81|    return 1;
 1455|     81|}
typeobject.c:next_global_version_tag:
 1396|    205|{
 1397|    205|    unsigned int old;
 1398|    205|    do {
 1399|    205|        old = _Py_atomic_load_uint_relaxed(&_PyRuntime.types.next_version_tag);
 1400|    205|        if (old >= _Py_MAX_GLOBAL_TYPE_VERSION_TAG) {
  ------------------
  |  |   35|    205|#define _Py_MAX_GLOBAL_TYPE_VERSION_TAG (_Py_TYPE_BASE_VERSION_TAG - 1)
  |  |  ------------------
  |  |  |  |   34|    205|#define _Py_TYPE_BASE_VERSION_TAG (2<<16)
  |  |  ------------------
  ------------------
  |  Branch (1400:13): [True: 0, False: 205]
  ------------------
 1401|      0|            return 0;
 1402|      0|        }
 1403|    205|    } while (!_Py_atomic_compare_exchange_uint(&_PyRuntime.types.next_version_tag, &old, old + 1));
  ------------------
  |  Branch (1403:14): [True: 0, False: 205]
  ------------------
 1404|    205|    return old + 1;
 1405|    205|}
typeobject.c:type_qualname:
 1535|     10|{
 1536|     10|    PyTypeObject *type = PyTypeObject_CAST(tp);
  ------------------
  |  |  200|     10|#define PyTypeObject_CAST(op)   ((PyTypeObject *)(op))
  ------------------
 1537|     10|    if (type->tp_flags & Py_TPFLAGS_HEAPTYPE) {
  ------------------
  |  |  503|     10|#define Py_TPFLAGS_HEAPTYPE (1UL << 9)
  ------------------
  |  Branch (1537:9): [True: 1, False: 9]
  ------------------
 1538|      1|        PyHeapTypeObject* et = (PyHeapTypeObject*)type;
 1539|      1|        return Py_NewRef(et->ht_qualname);
  ------------------
  |  |  550|      1|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1540|      1|    }
 1541|      9|    else {
 1542|      9|        return PyUnicode_FromString(_PyType_Name(type));
 1543|      9|    }
 1544|     10|}
typeobject.c:type_module:
 1603|     10|{
 1604|     10|    PyObject *mod;
 1605|     10|    if (type->tp_flags & Py_TPFLAGS_HEAPTYPE) {
  ------------------
  |  |  503|     10|#define Py_TPFLAGS_HEAPTYPE (1UL << 9)
  ------------------
  |  Branch (1605:9): [True: 1, False: 9]
  ------------------
 1606|      1|        PyObject *dict = lookup_tp_dict(type);
 1607|      1|        if (PyDict_GetItemRef(dict, &_Py_ID(__module__), &mod) == 0) {
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1607:13): [True: 0, False: 1]
  ------------------
 1608|      0|            PyErr_Format(PyExc_AttributeError, "__module__");
 1609|      0|        }
 1610|      1|    }
 1611|      9|    else {
 1612|      9|        const char *s = strrchr(type->tp_name, '.');
 1613|      9|        if (s != NULL) {
  ------------------
  |  Branch (1613:13): [True: 6, False: 3]
  ------------------
 1614|      6|            mod = PyUnicode_FromStringAndSize(
 1615|      6|                type->tp_name, (Py_ssize_t)(s - type->tp_name));
 1616|      6|            if (mod != NULL) {
  ------------------
  |  Branch (1616:17): [True: 6, False: 0]
  ------------------
 1617|      6|                PyInterpreterState *interp = _PyInterpreterState_GET();
 1618|      6|                _PyUnicode_InternMortal(interp, &mod);
 1619|      6|            }
 1620|      6|        }
 1621|      3|        else {
 1622|      3|            mod = &_Py_ID(builtins);
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1623|      3|        }
 1624|      9|    }
 1625|     10|    return mod;
 1626|     10|}
typeobject.c:is_subtype_with_mro:
 2900|  30.0k|{
 2901|  30.0k|    int res;
 2902|  30.0k|    if (a_mro != NULL) {
  ------------------
  |  Branch (2902:9): [True: 29.0k, False: 1.04k]
  ------------------
 2903|       |        /* Deal with multiple inheritance without recursion
 2904|       |           by walking the MRO tuple */
 2905|  29.0k|        Py_ssize_t i, n;
 2906|  29.0k|        assert(PyTuple_Check(a_mro));
  ------------------
  |  Branch (2906:9): [True: 29.0k, False: 0]
  ------------------
 2907|  29.0k|        n = PyTuple_GET_SIZE(a_mro);
  ------------------
  |  |   27|  29.0k|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  29.0k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  29.0k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2908|  29.0k|        res = 0;
 2909|  83.5k|        for (i = 0; i < n; i++) {
  ------------------
  |  Branch (2909:21): [True: 58.4k, False: 25.1k]
  ------------------
 2910|   116k|            if (PyTuple_GET_ITEM(a_mro, i) == (PyObject *)b) {
  ------------------
  |  |   29|  58.4k|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|  58.4k|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  58.4k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2910:17): [True: 58.4k, False: 0]
  |  Branch (2910:17): [True: 3.93k, False: 54.5k]
  ------------------
 2911|  3.93k|                res = 1;
 2912|  3.93k|                break;
 2913|  3.93k|            }
 2914|  58.4k|        }
 2915|  29.0k|    }
 2916|  1.04k|    else {
 2917|       |        /* a is not completely initialized yet; follow tp_base */
 2918|  1.04k|        res = type_is_subtype_base_chain(a, b);
 2919|  1.04k|    }
 2920|  30.0k|    return res;
 2921|  30.0k|}
typeobject.c:type_is_subtype_base_chain:
 2888|  1.04k|{
 2889|  1.04k|    do {
 2890|  1.04k|        if (a == b)
  ------------------
  |  Branch (2890:13): [True: 3, False: 1.04k]
  ------------------
 2891|      3|            return 1;
 2892|  1.04k|        a = a->tp_base;
 2893|  1.04k|    } while (a != NULL);
  ------------------
  |  Branch (2893:14): [True: 4, False: 1.04k]
  ------------------
 2894|       |
 2895|  1.04k|    return (b == &PyBaseObject_Type);
 2896|  1.04k|}
typeobject.c:lookup_maybe_method:
 3029|      1|{
 3030|      1|    return lookup_method_ex(self, attr, out, 0);
 3031|      1|}
typeobject.c:lookup_method_ex:
 2995|    117|{
 2996|    117|    _PyType_LookupStackRefAndVersion(Py_TYPE(self), attr, out);
  ------------------
  |  |  213|    117|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    117|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    117|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2997|    117|    if (PyStackRef_IsNull(*out)) {
  ------------------
  |  |  470|    117|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  ------------------
  |  |  |  |  467|    117|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    117|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (470:32): [True: 0, False: 117]
  |  |  ------------------
  ------------------
 2998|      0|        if (raise_attribute_error) {
  ------------------
  |  Branch (2998:13): [True: 0, False: 0]
  ------------------
 2999|      0|            PyErr_SetObject(PyExc_AttributeError, attr);
 3000|      0|        }
 3001|      0|        return -1;
 3002|      0|    }
 3003|       |
 3004|    117|    PyObject *value = PyStackRef_AsPyObjectBorrow(*out);
 3005|    117|    if (_PyType_HasFeature(Py_TYPE(value), Py_TPFLAGS_METHOD_DESCRIPTOR)) {
  ------------------
  |  |  213|    117|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    117|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    117|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  if (_PyType_HasFeature(Py_TYPE(value), Py_TPFLAGS_METHOD_DESCRIPTOR)) {
  ------------------
  |  |  534|    117|#define Py_TPFLAGS_METHOD_DESCRIPTOR (1UL << 17)
  ------------------
  |  Branch (3005:9): [True: 117, False: 0]
  ------------------
 3006|       |        /* Avoid temporary PyMethodObject */
 3007|    117|        return 1;
 3008|    117|    }
 3009|       |
 3010|      0|    descrgetfunc f = Py_TYPE(value)->tp_descr_get;
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3011|      0|    if (f != NULL) {
  ------------------
  |  Branch (3011:9): [True: 0, False: 0]
  ------------------
 3012|      0|        value = f(value, self, (PyObject *)(Py_TYPE(self)));
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3013|      0|        PyStackRef_CLEAR(*out);
  ------------------
  |  |  711|      0|    do { \
  |  |  712|      0|        _PyStackRef *_tmp_op_ptr = &(REF); \
  |  |  713|      0|        _PyStackRef _tmp_old_op = (*_tmp_op_ptr); \
  |  |  714|      0|        *_tmp_op_ptr = PyStackRef_NULL; \
  |  |  715|      0|        PyStackRef_XCLOSE(_tmp_old_op); \
  |  |  716|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (716:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3014|      0|        if (value == NULL) {
  ------------------
  |  Branch (3014:13): [True: 0, False: 0]
  ------------------
 3015|      0|            if (!raise_attribute_error &&
  ------------------
  |  Branch (3015:17): [True: 0, False: 0]
  ------------------
 3016|      0|                PyErr_ExceptionMatches(PyExc_AttributeError))
  ------------------
  |  Branch (3016:17): [True: 0, False: 0]
  ------------------
 3017|      0|            {
 3018|      0|                PyErr_Clear();
 3019|      0|            }
 3020|      0|            return -1;
 3021|      0|        }
 3022|      0|        *out = PyStackRef_FromPyObjectSteal(value);
 3023|      0|    }
 3024|      0|    return 0;
 3025|      0|}
typeobject.c:call_unbound_noarg:
 3057|     29|{
 3058|     29|    if (unbound) {
  ------------------
  |  Branch (3058:9): [True: 29, False: 0]
  ------------------
 3059|     29|        return PyObject_CallOneArg(func, self);
 3060|     29|    }
 3061|      0|    else {
 3062|      0|        return _PyObject_CallNoArgs(func);
 3063|      0|    }
 3064|     29|}
typeobject.c:maybe_call_special_one_arg:
 3181|      1|{
 3182|      1|    PyThreadState *tstate = _PyThreadState_GET();
 3183|      1|    _PyCStackRef cref;
 3184|      1|    _PyThreadState_PushCStackRef(tstate, &cref);
 3185|       |
 3186|      1|    PyObject *res = NULL;
 3187|      1|    int unbound = lookup_maybe_method(self, attr, &cref.ref);
 3188|      1|    PyObject *func = PyStackRef_AsPyObjectBorrow(cref.ref);
 3189|      1|    if (attr_is_none != NULL) {
  ------------------
  |  Branch (3189:9): [True: 1, False: 0]
  ------------------
 3190|      1|        *attr_is_none = (func == Py_None);
  ------------------
  |  |  616|      1|#  define Py_None (&_Py_NoneStruct)
  ------------------
 3191|      1|    }
 3192|      1|    if (func != NULL && (func != Py_None || attr_is_none == NULL)) {
  ------------------
  |  |  616|      2|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (3192:9): [True: 1, False: 0]
  |  Branch (3192:26): [True: 1, False: 0]
  |  Branch (3192:45): [True: 0, False: 0]
  ------------------
 3193|      1|        PyObject *args[] = { self, arg };
 3194|      1|        res = vectorcall_unbound(tstate, unbound, func, args, 2);
 3195|      1|    }
 3196|      1|    _PyThreadState_PopCStackRef(tstate, &cref);
 3197|      1|    return res;
 3198|      1|}
typeobject.c:vectorcall_unbound:
 3043|      4|{
 3044|      4|    size_t nargsf = nargs;
 3045|      4|    if (!unbound) {
  ------------------
  |  Branch (3045:9): [True: 0, False: 4]
  ------------------
 3046|       |        /* Skip self argument, freeing up args[0] to use for
 3047|       |         * PY_VECTORCALL_ARGUMENTS_OFFSET */
 3048|      0|        args++;
 3049|      0|        nargsf = nargsf - 1 + PY_VECTORCALL_ARGUMENTS_OFFSET;
  ------------------
  |  |  287|      0|    (_Py_STATIC_CAST(size_t, 1) << (8 * sizeof(size_t) - 1))
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
 3050|      0|    }
 3051|      4|    EVAL_CALL_STAT_INC_IF_FUNCTION(EVAL_CALL_SLOT, func);
  ------------------
  |  |   80|      4|#define EVAL_CALL_STAT_INC_IF_FUNCTION(name, callable) ((void)0)
  ------------------
 3052|       |    return _PyObject_VectorcallTstate(tstate, func, args, nargsf, NULL);
 3053|      4|}
typeobject.c:type_from_slots_or_spec:
 5238|     39|{
 5239|       |    /* Invariant: A non-NULL value in one of these means this function holds
 5240|       |     * a strong reference or owns allocated memory.
 5241|       |     * These get decrefed/freed/returned at the end, on both success and error.
 5242|       |     */
 5243|     39|    PyHeapTypeObject *res = NULL;
 5244|     39|    PyTypeObject *type;
 5245|     39|    PyObject *bases = NULL;
 5246|     39|    char *tp_doc = NULL;
 5247|     39|    PyObject *ht_name = NULL;
 5248|     39|    char *_ht_tpname = NULL;
 5249|       |
 5250|     39|    int r;
 5251|       |
 5252|       |    /* First pass of slots */
 5253|       |
 5254|     39|    Py_ssize_t nmembers = 0;
 5255|     39|    const PyMemberDef *weaklistoffset_member = NULL;
 5256|     39|    const PyMemberDef *dictoffset_member = NULL;
 5257|     39|    const PyMemberDef *vectorcalloffset_member = NULL;
 5258|     39|    Py_ssize_t basicsize = 0;
 5259|     39|    Py_ssize_t extra_basicsize = 0;
 5260|     39|    Py_ssize_t itemsize = 0;
 5261|     39|    int flags = 0;
 5262|     39|    void *token = NULL;
 5263|       |
 5264|     39|    bool have_relative_members = false;
 5265|     39|    Py_ssize_t max_relative_offset = 0;
 5266|       |
 5267|     39|    PyObject *bases_slot = NULL; /* borrowed from the slots */
 5268|       |
 5269|     39|    _PySlotIterator it;
 5270|       |
 5271|     39|    if (spec) {
  ------------------
  |  Branch (5271:9): [True: 39, False: 0]
  ------------------
 5272|     39|        assert(!slots);
  ------------------
  |  Branch (5272:9): [True: 39, False: 0]
  ------------------
 5273|     39|        if (spec->basicsize > 0) {
  ------------------
  |  Branch (5273:13): [True: 36, False: 3]
  ------------------
 5274|     36|            basicsize = spec->basicsize;
 5275|     36|        }
 5276|     39|        if (spec->basicsize < 0) {
  ------------------
  |  Branch (5276:13): [True: 0, False: 39]
  ------------------
 5277|      0|            extra_basicsize = -spec->basicsize;
 5278|      0|        }
 5279|     39|        itemsize = spec->itemsize;
 5280|     39|        flags = spec->flags;
 5281|     39|        _PySlotIterator_InitLegacy(&it, spec->slots, _PySlot_KIND_TYPE);
 5282|     39|        it.name = spec->name;
 5283|     39|    }
 5284|      0|    else {
 5285|      0|        assert(!spec);
  ------------------
  |  Branch (5285:9): [True: 0, False: 0]
  ------------------
 5286|      0|        assert(!metaclass);
  ------------------
  |  Branch (5286:9): [True: 0, False: 0]
  ------------------
 5287|      0|        assert(!module);
  ------------------
  |  Branch (5287:9): [True: 0, False: 0]
  ------------------
 5288|      0|        assert(!bases_in);
  ------------------
  |  Branch (5288:9): [True: 0, False: 0]
  ------------------
 5289|      0|        _PySlotIterator_Init(&it, slots, _PySlot_KIND_TYPE);
 5290|      0|    }
 5291|       |
 5292|     39|    #define NO_SPEC                                         \
 5293|     39|        if (spec) {                                         \
 5294|     39|            PyErr_Format(                                   \
 5295|     39|                PyExc_SystemError,                          \
 5296|     39|                "%s must not be used with PyType_Spec",     \
 5297|     39|                _PySlot_GetName(it.current.sl_id));         \
 5298|     39|            goto finally;                                   \
 5299|     39|        }                                                   \
 5300|       |        /////////////////////////////////////////////////////
 5301|       |
 5302|    328|    while (_PySlotIterator_Next(&it)) {
  ------------------
  |  Branch (5302:12): [True: 289, False: 39]
  ------------------
 5303|    289|        switch (it.current.sl_id) {
  ------------------
  |  Branch (5303:17): [True: 60, False: 229]
  ------------------
 5304|      0|        case Py_slot_invalid:
  ------------------
  |  |   25|      0|#define Py_slot_invalid 0xffff
  ------------------
  |  Branch (5304:9): [True: 0, False: 289]
  ------------------
 5305|      0|            goto finally;
 5306|      0|        case Py_tp_name:
  ------------------
  |  |  103|      0|#define Py_tp_name 95
  ------------------
  |  Branch (5306:9): [True: 0, False: 289]
  ------------------
 5307|      0|            NO_SPEC;
  ------------------
  |  | 5293|      0|        if (spec) {                                         \
  |  |  ------------------
  |  |  |  Branch (5293:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 5294|      0|            PyErr_Format(                                   \
  |  | 5295|      0|                PyExc_SystemError,                          \
  |  | 5296|      0|                "%s must not be used with PyType_Spec",     \
  |  | 5297|      0|                _PySlot_GetName(it.current.sl_id));         \
  |  | 5298|      0|            goto finally;                                   \
  |  | 5299|      0|        }                                                   \
  ------------------
 5308|      0|            it.name = it.current.sl_ptr;
 5309|      0|            break;
 5310|      0|        case Py_tp_metaclass:
  ------------------
  |  |  115|      0|#define Py_tp_metaclass 107
  ------------------
  |  Branch (5310:9): [True: 0, False: 289]
  ------------------
 5311|      0|            NO_SPEC;
  ------------------
  |  | 5293|      0|        if (spec) {                                         \
  |  |  ------------------
  |  |  |  Branch (5293:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 5294|      0|            PyErr_Format(                                   \
  |  | 5295|      0|                PyExc_SystemError,                          \
  |  | 5296|      0|                "%s must not be used with PyType_Spec",     \
  |  | 5297|      0|                _PySlot_GetName(it.current.sl_id));         \
  |  | 5298|      0|            goto finally;                                   \
  |  | 5299|      0|        }                                                   \
  ------------------
 5312|      0|            metaclass = it.current.sl_ptr;
 5313|      0|            break;
 5314|      0|        case Py_tp_module:
  ------------------
  |  |  116|      0|#define Py_tp_module 108
  ------------------
  |  Branch (5314:9): [True: 0, False: 289]
  ------------------
 5315|      0|            NO_SPEC;
  ------------------
  |  | 5293|      0|        if (spec) {                                         \
  |  |  ------------------
  |  |  |  Branch (5293:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 5294|      0|            PyErr_Format(                                   \
  |  | 5295|      0|                PyExc_SystemError,                          \
  |  | 5296|      0|                "%s must not be used with PyType_Spec",     \
  |  | 5297|      0|                _PySlot_GetName(it.current.sl_id));         \
  |  | 5298|      0|            goto finally;                                   \
  |  | 5299|      0|        }                                                   \
  ------------------
 5316|      0|            module = it.current.sl_ptr;
 5317|      0|            break;
 5318|      0|        case Py_tp_bases:
  ------------------
  |  |   57|      0|#define Py_tp_bases 49
  ------------------
  |  Branch (5318:9): [True: 0, False: 289]
  ------------------
 5319|      0|            bases_slot = it.current.sl_ptr;
 5320|      0|            break;
 5321|      0|        case Py_tp_base:
  ------------------
  |  |   56|      0|#define Py_tp_base 48
  ------------------
  |  Branch (5321:9): [True: 0, False: 289]
  ------------------
 5322|      0|            if (!_PySlotIterator_SawSlot(&it, Py_tp_bases)) {
  ------------------
  |  |   57|      0|#define Py_tp_bases 49
  ------------------
  |  Branch (5322:17): [True: 0, False: 0]
  ------------------
 5323|      0|                bases_slot = it.current.sl_ptr;
 5324|      0|            }
 5325|      0|            break;
 5326|      0|        case Py_tp_basicsize:
  ------------------
  |  |  104|      0|#define Py_tp_basicsize 96
  ------------------
  |  Branch (5326:9): [True: 0, False: 289]
  ------------------
 5327|      0|            NO_SPEC;
  ------------------
  |  | 5293|      0|        if (spec) {                                         \
  |  |  ------------------
  |  |  |  Branch (5293:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 5294|      0|            PyErr_Format(                                   \
  |  | 5295|      0|                PyExc_SystemError,                          \
  |  | 5296|      0|                "%s must not be used with PyType_Spec",     \
  |  | 5297|      0|                _PySlot_GetName(it.current.sl_id));         \
  |  | 5298|      0|            goto finally;                                   \
  |  | 5299|      0|        }                                                   \
  ------------------
 5328|      0|            basicsize = it.current.sl_size;
 5329|      0|            if (basicsize <= 0) {
  ------------------
  |  Branch (5329:17): [True: 0, False: 0]
  ------------------
 5330|      0|                PyErr_SetString(
 5331|      0|                    PyExc_SystemError,
 5332|      0|                    "Py_tp_basicsize must be positive");
 5333|      0|                goto finally;
 5334|      0|            }
 5335|      0|            break;
 5336|      0|        case Py_tp_extra_basicsize:
  ------------------
  |  |  105|      0|#define Py_tp_extra_basicsize 97
  ------------------
  |  Branch (5336:9): [True: 0, False: 289]
  ------------------
 5337|      0|            NO_SPEC;
  ------------------
  |  | 5293|      0|        if (spec) {                                         \
  |  |  ------------------
  |  |  |  Branch (5293:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 5294|      0|            PyErr_Format(                                   \
  |  | 5295|      0|                PyExc_SystemError,                          \
  |  | 5296|      0|                "%s must not be used with PyType_Spec",     \
  |  | 5297|      0|                _PySlot_GetName(it.current.sl_id));         \
  |  | 5298|      0|            goto finally;                                   \
  |  | 5299|      0|        }                                                   \
  ------------------
 5338|      0|            extra_basicsize = it.current.sl_size;
 5339|      0|            if (extra_basicsize <= 0) {
  ------------------
  |  Branch (5339:17): [True: 0, False: 0]
  ------------------
 5340|      0|                PyErr_SetString(
 5341|      0|                    PyExc_SystemError,
 5342|      0|                    "Py_tp_extra_basicsize must be positive");
 5343|      0|                goto finally;
 5344|      0|            }
 5345|      0|            break;
 5346|      0|        case Py_tp_itemsize:
  ------------------
  |  |  106|      0|#define Py_tp_itemsize 98
  ------------------
  |  Branch (5346:9): [True: 0, False: 289]
  ------------------
 5347|      0|            NO_SPEC;
  ------------------
  |  | 5293|      0|        if (spec) {                                         \
  |  |  ------------------
  |  |  |  Branch (5293:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 5294|      0|            PyErr_Format(                                   \
  |  | 5295|      0|                PyExc_SystemError,                          \
  |  | 5296|      0|                "%s must not be used with PyType_Spec",     \
  |  | 5297|      0|                _PySlot_GetName(it.current.sl_id));         \
  |  | 5298|      0|            goto finally;                                   \
  |  | 5299|      0|        }                                                   \
  ------------------
 5348|      0|            itemsize = it.current.sl_size;
 5349|      0|            if (itemsize <= 0) {
  ------------------
  |  Branch (5349:17): [True: 0, False: 0]
  ------------------
 5350|      0|                PyErr_SetString(
 5351|      0|                    PyExc_SystemError,
 5352|      0|                    "Py_tp_itemsize must be positive");
 5353|      0|                goto finally;
 5354|      0|            }
 5355|      0|            break;
 5356|      0|        case Py_tp_flags:
  ------------------
  |  |  107|      0|#define Py_tp_flags 99
  ------------------
  |  Branch (5356:9): [True: 0, False: 289]
  ------------------
 5357|      0|            NO_SPEC;
  ------------------
  |  | 5293|      0|        if (spec) {                                         \
  |  |  ------------------
  |  |  |  Branch (5293:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 5294|      0|            PyErr_Format(                                   \
  |  | 5295|      0|                PyExc_SystemError,                          \
  |  | 5296|      0|                "%s must not be used with PyType_Spec",     \
  |  | 5297|      0|                _PySlot_GetName(it.current.sl_id));         \
  |  | 5298|      0|            goto finally;                                   \
  |  | 5299|      0|        }                                                   \
  ------------------
 5358|      0|            flags = (int)it.current.sl_uint64;
 5359|      0|            break;
 5360|     27|        case Py_tp_members:
  ------------------
  |  |   80|     27|#define Py_tp_members 72
  ------------------
  |  Branch (5360:9): [True: 27, False: 262]
  ------------------
 5361|     27|            for (const PyMemberDef *memb = it.current.sl_ptr;
 5362|    147|                 memb->name != NULL;
  ------------------
  |  Branch (5362:18): [True: 120, False: 27]
  ------------------
 5363|    120|                 memb++)
 5364|    120|            {
 5365|    120|                nmembers++;
 5366|    120|                if (memb->flags & Py_RELATIVE_OFFSET) {
  ------------------
  |  |   86|    120|#define Py_RELATIVE_OFFSET     (1 << 3)
  ------------------
  |  Branch (5366:21): [True: 0, False: 120]
  ------------------
 5367|      0|                    if (memb->offset < 0) {
  ------------------
  |  Branch (5367:25): [True: 0, False: 0]
  ------------------
 5368|      0|                        PyErr_SetString(
 5369|      0|                            PyExc_SystemError,
 5370|      0|                            "Member offset must not be negative");
 5371|      0|                        goto finally;
 5372|      0|                    }
 5373|      0|                    have_relative_members = true;
 5374|      0|                    max_relative_offset = Py_MAX(max_relative_offset,
  ------------------
  |  |  115|      0|#define Py_MAX(x, y) (((x) > (y)) ? (x) : (y))
  |  |  ------------------
  |  |  |  Branch (115:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5375|      0|                                                 memb->offset);
 5376|      0|                }
 5377|    120|                if (strcmp(memb->name, "__weaklistoffset__") == 0) {
  ------------------
  |  Branch (5377:21): [True: 11, False: 109]
  ------------------
 5378|     11|                    weaklistoffset_member = memb;
 5379|     11|                }
 5380|    109|                else if (strcmp(memb->name, "__dictoffset__") == 0) {
  ------------------
  |  Branch (5380:26): [True: 9, False: 100]
  ------------------
 5381|      9|                    dictoffset_member = memb;
 5382|      9|                }
 5383|    100|                else if (strcmp(memb->name, "__vectorcalloffset__") == 0) {
  ------------------
  |  Branch (5383:26): [True: 0, False: 100]
  ------------------
 5384|      0|                    vectorcalloffset_member = memb;
 5385|      0|                }
 5386|    120|            }
 5387|     27|            break;
 5388|     27|        case Py_tp_token:
  ------------------
  |  |   91|      0|#define Py_tp_token 83
  ------------------
  |  Branch (5388:9): [True: 0, False: 289]
  ------------------
 5389|      0|            token = it.current.sl_ptr;
 5390|      0|            if (token == Py_TP_USE_SPEC) {
  ------------------
  |  |  365|      0|#define Py_TP_USE_SPEC NULL
  ------------------
  |  Branch (5390:17): [True: 0, False: 0]
  ------------------
 5391|      0|                if (!spec) {
  ------------------
  |  Branch (5391:21): [True: 0, False: 0]
  ------------------
 5392|      0|                    PyErr_SetString(
 5393|      0|                        PyExc_SystemError,
 5394|      0|                        "Py_tp_token: Py_TP_USE_SPEC (NULL) can only be "
 5395|      0|                        "used with PyType_Spec");
 5396|      0|                    goto finally;
 5397|      0|                }
 5398|      0|                token = spec;
 5399|      0|            }
 5400|      0|            break;
 5401|     33|        case Py_tp_doc:
  ------------------
  |  |   64|     33|#define Py_tp_doc 56
  ------------------
  |  Branch (5401:9): [True: 33, False: 256]
  ------------------
 5402|       |            /* For the docstring slot, which usually points to a static string
 5403|       |               literal, we need to make a copy */
 5404|     33|            if (it.current.sl_ptr == NULL) {
  ------------------
  |  Branch (5404:17): [True: 0, False: 33]
  ------------------
 5405|      0|                PyMem_Free(tp_doc);
 5406|      0|                tp_doc = NULL;
 5407|      0|            }
 5408|     33|            else {
 5409|     33|                size_t len = strlen(it.current.sl_ptr)+1;
 5410|     33|                tp_doc = PyMem_Malloc(len);
 5411|     33|                if (tp_doc == NULL) {
  ------------------
  |  Branch (5411:21): [True: 0, False: 33]
  ------------------
 5412|      0|                    PyErr_NoMemory();
 5413|      0|                    goto finally;
 5414|      0|                }
 5415|     33|                memcpy(tp_doc, it.current.sl_ptr, len);
 5416|     33|            }
 5417|     33|            break;
 5418|    289|        }
 5419|    289|    }
 5420|     39|    #undef NO_SPEC
 5421|       |
 5422|       |    /* Required slots & bad combinations */
 5423|       |
 5424|     39|    if (it.name == NULL) {
  ------------------
  |  Branch (5424:9): [True: 0, False: 39]
  ------------------
 5425|      0|        if (spec) {
  ------------------
  |  Branch (5425:13): [True: 0, False: 0]
  ------------------
 5426|      0|            PyErr_SetString(PyExc_SystemError,
 5427|      0|                            "Type spec does not define the name field.");
 5428|      0|        }
 5429|      0|        else {
 5430|      0|            PyErr_SetString(PyExc_SystemError,
 5431|      0|                            "Py_tp_name slot is required.");
 5432|      0|        }
 5433|      0|        goto finally;
 5434|      0|    }
 5435|       |
 5436|     39|    if (_PySlotIterator_SawSlot(&it, Py_tp_basicsize)
  ------------------
  |  |  104|     39|#define Py_tp_basicsize 96
  ------------------
  |  Branch (5436:9): [True: 0, False: 39]
  ------------------
 5437|      0|        && _PySlotIterator_SawSlot(&it, Py_tp_extra_basicsize))
  ------------------
  |  |  105|      0|#define Py_tp_extra_basicsize 97
  ------------------
  |  Branch (5437:12): [True: 0, False: 0]
  ------------------
 5438|      0|    {
 5439|      0|        PyErr_Format(
 5440|      0|            PyExc_SystemError,
 5441|      0|            "type %s: Py_tp_basicsize and Py_tp_extra_basicsize are "
 5442|      0|            "mutually exclusive",
 5443|      0|            it.name);
 5444|      0|        goto finally;
 5445|      0|    }
 5446|       |
 5447|     39|    if (have_relative_members) {
  ------------------
  |  Branch (5447:9): [True: 0, False: 39]
  ------------------
 5448|      0|        if (!extra_basicsize) {
  ------------------
  |  Branch (5448:13): [True: 0, False: 0]
  ------------------
 5449|      0|            PyErr_SetString(
 5450|      0|                PyExc_SystemError,
 5451|      0|                "With Py_RELATIVE_OFFSET, basicsize must be extended");
 5452|      0|            goto finally;
 5453|      0|        }
 5454|      0|        if (max_relative_offset >= extra_basicsize) {
  ------------------
  |  Branch (5454:13): [True: 0, False: 0]
  ------------------
 5455|      0|            PyErr_SetString(
 5456|      0|                PyExc_SystemError,
 5457|      0|                "Member offset out of range (0..extra_basicsize)");
 5458|      0|            goto finally;
 5459|      0|        }
 5460|      0|    }
 5461|       |
 5462|       |    /* Prepare the type name and qualname */
 5463|       |
 5464|     39|    assert(it.name);
  ------------------
  |  Branch (5464:5): [True: 39, False: 0]
  ------------------
 5465|     39|    const char *s = strrchr(it.name, '.');
 5466|     39|    if (s == NULL) {
  ------------------
  |  Branch (5466:9): [True: 0, False: 39]
  ------------------
 5467|      0|        s = it.name;
 5468|      0|    }
 5469|     39|    else {
 5470|     39|        s++;
 5471|     39|    }
 5472|       |
 5473|     39|    ht_name = PyUnicode_FromString(s);
 5474|     39|    if (!ht_name) {
  ------------------
  |  Branch (5474:9): [True: 0, False: 39]
  ------------------
 5475|      0|        goto finally;
 5476|      0|    }
 5477|       |
 5478|       |    /* Copy the name to a buffer we own.
 5479|       |    *
 5480|       |    * Unfortunately, we can't use tp_name directly (with some
 5481|       |    * flag saying that it should be deallocated with the type),
 5482|       |    * because tp_name is public API and may be set independently
 5483|       |    * of any such flag.
 5484|       |    * So, we use a separate buffer, _ht_tpname, that's always
 5485|       |    * deallocated with the type (if it's non-NULL).
 5486|       |    */
 5487|     39|    Py_ssize_t name_buf_len = strlen(it.name) + 1;
 5488|     39|    _ht_tpname = PyMem_Malloc(name_buf_len);
 5489|     39|    if (_ht_tpname == NULL) {
  ------------------
  |  Branch (5489:9): [True: 0, False: 39]
  ------------------
 5490|      0|        goto finally;
 5491|      0|    }
 5492|     39|    memcpy(_ht_tpname, it.name, name_buf_len);
 5493|       |
 5494|       |    /* Get a tuple of bases.
 5495|       |     * bases is a strong reference (unlike bases_in).
 5496|       |     * (This is convoluted for backwards compatibility -- preserving priority
 5497|       |     * of the various ways to specify bases)
 5498|       |     */
 5499|     39|    if (!bases_in) {
  ------------------
  |  Branch (5499:9): [True: 19, False: 20]
  ------------------
 5500|     19|        bases_in = bases_slot;
 5501|     19|    }
 5502|     39|    if (bases_in) {
  ------------------
  |  Branch (5502:9): [True: 20, False: 19]
  ------------------
 5503|     20|        if (PyTuple_Check(bases_in)) {
  ------------------
  |  |   27|     20|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TUPLE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     20|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 0, False: 20]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5504|      0|            bases = Py_NewRef(bases_in);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5505|      0|        }
 5506|     20|        else {
 5507|     20|            bases = PyTuple_Pack(1, bases_in);
 5508|     20|        }
 5509|     20|    }
 5510|     19|    else {
 5511|     19|        bases = PyTuple_Pack(1, &PyBaseObject_Type);
 5512|     19|    }
 5513|     39|    if (!bases) {
  ------------------
  |  Branch (5513:9): [True: 0, False: 39]
  ------------------
 5514|      0|        goto finally;
 5515|      0|    }
 5516|       |
 5517|       |    /* If this is an immutable type, check if all bases are also immutable.
 5518|       |     * (This isn't necessary for static types: those can't have heap bases,
 5519|       |     * and only heap types can be mutable.)
 5520|       |     */
 5521|     39|    if (flags & Py_TPFLAGS_IMMUTABLETYPE) {
  ------------------
  |  |  500|     39|#define Py_TPFLAGS_IMMUTABLETYPE (1UL << 8)
  ------------------
  |  Branch (5521:9): [True: 28, False: 11]
  ------------------
 5522|     28|        if (check_immutable_bases(it.name, bases, 0) < 0) {
  ------------------
  |  Branch (5522:13): [True: 0, False: 28]
  ------------------
 5523|      0|            goto finally;
 5524|      0|        }
 5525|     28|    }
 5526|       |
 5527|       |    /* Calculate the metaclass */
 5528|       |
 5529|     39|    if (!metaclass) {
  ------------------
  |  Branch (5529:9): [True: 39, False: 0]
  ------------------
 5530|     39|        metaclass = &PyType_Type;
 5531|     39|    }
 5532|     39|    metaclass = _PyType_CalculateMetaclass(metaclass, bases);
 5533|     39|    if (metaclass == NULL) {
  ------------------
  |  Branch (5533:9): [True: 0, False: 39]
  ------------------
 5534|      0|        goto finally;
 5535|      0|    }
 5536|     39|    if (!PyType_Check(metaclass)) {
  ------------------
  |  |  766|     39|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     39|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     39|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5536:9): [True: 0, False: 39]
  ------------------
 5537|      0|        PyErr_Format(PyExc_TypeError,
 5538|      0|                     "Metaclass '%R' is not a subclass of 'type'.",
 5539|      0|                     metaclass);
 5540|      0|        goto finally;
 5541|      0|    }
 5542|     39|    if (metaclass->tp_new && metaclass->tp_new != PyType_Type.tp_new) {
  ------------------
  |  Branch (5542:9): [True: 39, False: 0]
  |  Branch (5542:30): [True: 0, False: 39]
  ------------------
 5543|      0|        PyErr_SetString(
 5544|      0|            PyExc_TypeError,
 5545|      0|            "Metaclasses with custom tp_new are not supported.");
 5546|      0|        goto finally;
 5547|      0|    }
 5548|       |
 5549|       |    /* Calculate best base, and check that all bases are type objects */
 5550|     39|    PyTypeObject *base = find_best_base(bases);  // borrowed ref
 5551|     39|    if (base == NULL) {
  ------------------
  |  Branch (5551:9): [True: 0, False: 39]
  ------------------
 5552|      0|        goto finally;
 5553|      0|    }
 5554|       |    // find_best_base() should check Py_TPFLAGS_BASETYPE & raise a proper
 5555|       |    // exception, here we just check its work
 5556|     39|    assert(_PyType_HasFeature(base, Py_TPFLAGS_BASETYPE));
  ------------------
  |  Branch (5556:5): [True: 39, False: 0]
  ------------------
 5557|       |
 5558|       |    /* Calculate sizes */
 5559|       |
 5560|     39|    Py_ssize_t type_data_offset = basicsize;
 5561|     39|    if (extra_basicsize) {
  ------------------
  |  Branch (5561:9): [True: 0, False: 39]
  ------------------
 5562|       |        /* Extend */
 5563|      0|        assert(basicsize == 0);
  ------------------
  |  Branch (5563:9): [True: 0, False: 0]
  ------------------
 5564|      0|        type_data_offset = _align_up(base->tp_basicsize);
 5565|      0|        basicsize = type_data_offset + _align_up(extra_basicsize);
 5566|       |
 5567|       |        /* Inheriting variable-sized types is limited */
 5568|      0|        if (base->tp_itemsize
  ------------------
  |  Branch (5568:13): [True: 0, False: 0]
  ------------------
 5569|      0|            && !((base->tp_flags | flags) & Py_TPFLAGS_ITEMS_AT_END))
  ------------------
  |  |  548|      0|#define Py_TPFLAGS_ITEMS_AT_END (1UL << 23)
  ------------------
  |  Branch (5569:16): [True: 0, False: 0]
  ------------------
 5570|      0|        {
 5571|      0|            PyErr_SetString(
 5572|      0|                PyExc_SystemError,
 5573|      0|                "Cannot extend variable-size class without Py_TPFLAGS_ITEMS_AT_END.");
 5574|      0|            goto finally;
 5575|      0|        }
 5576|      0|    }
 5577|     39|    if (basicsize == 0) {
  ------------------
  |  Branch (5577:9): [True: 3, False: 36]
  ------------------
 5578|       |        /* Inherit */
 5579|      3|        basicsize = base->tp_basicsize;
 5580|      3|    }
 5581|       |
 5582|       |    /* Compute special offsets */
 5583|       |
 5584|     39|    Py_ssize_t weaklistoffset = 0;
 5585|     39|    if (special_offset_from_member(weaklistoffset_member, type_data_offset,
  ------------------
  |  Branch (5585:9): [True: 0, False: 39]
  ------------------
 5586|     39|                                  &weaklistoffset) < 0) {
 5587|      0|        goto finally;
 5588|      0|    }
 5589|     39|    Py_ssize_t dictoffset = 0;
 5590|     39|    if (special_offset_from_member(dictoffset_member, type_data_offset,
  ------------------
  |  Branch (5590:9): [True: 0, False: 39]
  ------------------
 5591|     39|                                  &dictoffset) < 0) {
 5592|      0|        goto finally;
 5593|      0|    }
 5594|     39|    Py_ssize_t vectorcalloffset = 0;
 5595|     39|    if (special_offset_from_member(vectorcalloffset_member, type_data_offset,
  ------------------
  |  Branch (5595:9): [True: 0, False: 39]
  ------------------
 5596|     39|                                  &vectorcalloffset) < 0) {
 5597|      0|        goto finally;
 5598|      0|    }
 5599|       |
 5600|       |    /* Allocate the new type
 5601|       |     *
 5602|       |     * Between here and PyType_Ready, we should limit:
 5603|       |     * - calls to Python code
 5604|       |     * - raising exceptions
 5605|       |     * - memory allocations
 5606|       |     */
 5607|       |
 5608|     39|    res = (PyHeapTypeObject*)metaclass->tp_alloc(metaclass, nmembers);
 5609|     39|    if (res == NULL) {
  ------------------
  |  Branch (5609:9): [True: 0, False: 39]
  ------------------
 5610|      0|        goto finally;
 5611|      0|    }
 5612|       |
 5613|     39|    type = &res->ht_type;
 5614|       |    /* The flags must be initialized early, before the GC traverses us */
 5615|     39|    type_set_flags(type, flags | Py_TPFLAGS_HEAPTYPE);
  ------------------
  |  |  503|     39|#define Py_TPFLAGS_HEAPTYPE (1UL << 9)
  ------------------
 5616|       |
 5617|     39|    res->ht_module = Py_XNewRef(module);
  ------------------
  |  |  551|     39|#  define Py_XNewRef(obj) _Py_XNewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     39|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     39|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5618|       |
 5619|       |    /* Initialize essential fields */
 5620|       |
 5621|     39|    type->tp_as_async = &res->as_async;
 5622|     39|    type->tp_as_number = &res->as_number;
 5623|     39|    type->tp_as_sequence = &res->as_sequence;
 5624|     39|    type->tp_as_mapping = &res->as_mapping;
 5625|     39|    type->tp_as_buffer = &res->as_buffer;
 5626|       |
 5627|       |    /* Set slots we have prepared */
 5628|       |
 5629|     39|    type->tp_base = (PyTypeObject *)Py_NewRef(base);
  ------------------
  |  |  550|     39|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     39|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     39|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5630|     39|    set_tp_bases(type, bases, 1);
 5631|     39|    bases = NULL;  // We give our reference to bases to the type
 5632|       |
 5633|     39|    type->tp_doc = tp_doc;
 5634|     39|    tp_doc = NULL;  // Give ownership of the allocated memory to the type
 5635|       |
 5636|     39|    res->ht_qualname = Py_NewRef(ht_name);
  ------------------
  |  |  550|     39|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     39|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     39|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5637|     39|    res->ht_name = ht_name;
 5638|     39|    ht_name = NULL;  // Give our reference to the type
 5639|       |
 5640|     39|    type->tp_name = _ht_tpname;
 5641|     39|    res->_ht_tpname = _ht_tpname;
 5642|     39|    _ht_tpname = NULL;  // Give ownership to the type
 5643|       |
 5644|     39|    res->ht_token = token;
 5645|       |
 5646|       |    /* Copy the sizes */
 5647|       |
 5648|     39|    type->tp_basicsize = basicsize;
 5649|     39|    type->tp_itemsize = itemsize;
 5650|       |
 5651|       |    /* Second pass of slots: copy most of them into the type */
 5652|       |
 5653|     39|    _PySlotIterator_Rewind(&it, spec ? (void*)spec->slots : (void*)slots);
  ------------------
  |  Branch (5653:33): [True: 39, False: 0]
  ------------------
 5654|    328|    while (_PySlotIterator_Next(&it)) {
  ------------------
  |  Branch (5654:12): [True: 289, False: 39]
  ------------------
 5655|    289|        switch (it.current.sl_id) {
 5656|      0|        case Py_slot_invalid:
  ------------------
  |  |   25|      0|#define Py_slot_invalid 0xffff
  ------------------
  |  Branch (5656:9): [True: 0, False: 289]
  ------------------
 5657|      0|            goto finally;
 5658|      0|        case Py_tp_base:
  ------------------
  |  |   56|      0|#define Py_tp_base 48
  ------------------
  |  Branch (5658:9): [True: 0, False: 289]
  ------------------
 5659|      0|        case Py_tp_bases:
  ------------------
  |  |   57|      0|#define Py_tp_bases 49
  ------------------
  |  Branch (5659:9): [True: 0, False: 289]
  ------------------
 5660|     33|        case Py_tp_doc:
  ------------------
  |  |   64|     33|#define Py_tp_doc 56
  ------------------
  |  Branch (5660:9): [True: 33, False: 256]
  ------------------
 5661|       |            /* Processed above */
 5662|     33|            break;
 5663|     27|        case Py_tp_members:
  ------------------
  |  |   80|     27|#define Py_tp_members 72
  ------------------
  |  Branch (5663:9): [True: 27, False: 262]
  ------------------
 5664|     27|            {
 5665|       |                /* Move the slots to the heap type itself */
 5666|     27|                size_t len = Py_TYPE(type)->tp_itemsize * nmembers;
  ------------------
  |  |  213|     27|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     27|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     27|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5667|     27|                memcpy(_PyHeapType_GET_MEMBERS(res), it.current.sl_ptr, len);
 5668|     27|                type->tp_members = _PyHeapType_GET_MEMBERS(res);
 5669|     27|                PyMemberDef *memb;
 5670|     27|                Py_ssize_t i;
 5671|     27|                for (memb = _PyHeapType_GET_MEMBERS(res), i = nmembers;
 5672|    147|                     i > 0; ++memb, --i)
  ------------------
  |  Branch (5672:22): [True: 120, False: 27]
  ------------------
 5673|    120|                {
 5674|    120|                    if (memb->flags & Py_RELATIVE_OFFSET) {
  ------------------
  |  |   86|    120|#define Py_RELATIVE_OFFSET     (1 << 3)
  ------------------
  |  Branch (5674:25): [True: 0, False: 120]
  ------------------
 5675|      0|                        memb->flags &= ~Py_RELATIVE_OFFSET;
  ------------------
  |  |   86|      0|#define Py_RELATIVE_OFFSET     (1 << 3)
  ------------------
 5676|      0|                        memb->offset += type_data_offset;
 5677|      0|                    }
 5678|    120|                }
 5679|     27|            }
 5680|     27|            break;
 5681|    229|        default:
  ------------------
  |  Branch (5681:9): [True: 229, False: 60]
  ------------------
 5682|    229|            _PySlot_heaptype_apply_field_slot(res, it.current);
 5683|    229|            break;
 5684|    289|        }
 5685|    289|    }
 5686|     39|    if (type->tp_dealloc == NULL) {
  ------------------
  |  Branch (5686:9): [True: 3, False: 36]
  ------------------
 5687|       |        /* It's a heap type, so needs the heap types' dealloc.
 5688|       |           subtype_dealloc will call the base type's tp_dealloc, if
 5689|       |           necessary. */
 5690|      3|        type->tp_dealloc = subtype_dealloc;
 5691|      3|    }
 5692|       |
 5693|       |    /* Set up offsets */
 5694|       |
 5695|     39|    type->tp_vectorcall_offset = vectorcalloffset;
 5696|     39|    type->tp_weaklistoffset = weaklistoffset;
 5697|     39|    type->tp_dictoffset = dictoffset;
 5698|       |
 5699|       |#ifdef Py_GIL_DISABLED
 5700|       |    // Assign a unique id to enable per-thread refcounting
 5701|       |    res->unique_id = _PyObject_AssignUniqueId((PyObject *)res);
 5702|       |#endif
 5703|       |
 5704|       |    /* Ready the type (which includes inheritance).
 5705|       |     *
 5706|       |     * After this call we should generally only touch up what's
 5707|       |     * accessible to Python code, like __dict__.
 5708|       |     */
 5709|       |
 5710|     39|    if (PyType_Ready(type) < 0) {
  ------------------
  |  Branch (5710:9): [True: 0, False: 39]
  ------------------
 5711|      0|        goto finally;
 5712|      0|    }
 5713|       |
 5714|     39|    if (!check_basicsize_includes_size_and_offsets(type)) {
  ------------------
  |  Branch (5714:9): [True: 0, False: 39]
  ------------------
 5715|      0|        goto finally;
 5716|      0|    }
 5717|       |
 5718|     39|    PyObject *dict = lookup_tp_dict(type);
 5719|     39|    if (type->tp_doc) {
  ------------------
  |  Branch (5719:9): [True: 33, False: 6]
  ------------------
 5720|     33|        PyObject *__doc__ = PyUnicode_FromString(_PyType_DocWithoutSignature(type->tp_name, type->tp_doc));
 5721|     33|        if (!__doc__) {
  ------------------
  |  Branch (5721:13): [True: 0, False: 33]
  ------------------
 5722|      0|            goto finally;
 5723|      0|        }
 5724|     33|        r = PyDict_SetItem(dict, &_Py_ID(__doc__), __doc__);
  ------------------
  |  |  917|     33|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     33|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     33|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5725|     33|        Py_DECREF(__doc__);
  ------------------
  |  |  430|     33|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     33|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     33|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5726|     33|        if (r < 0) {
  ------------------
  |  Branch (5726:13): [True: 0, False: 33]
  ------------------
 5727|      0|            goto finally;
 5728|      0|        }
 5729|     33|    }
 5730|       |
 5731|     39|    if (weaklistoffset) {
  ------------------
  |  Branch (5731:9): [True: 11, False: 28]
  ------------------
 5732|     11|        if (PyDict_DelItem(dict, &_Py_ID(__weaklistoffset__)) < 0) {
  ------------------
  |  |  917|     11|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     11|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     11|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5732:13): [True: 0, False: 11]
  ------------------
 5733|      0|            goto finally;
 5734|      0|        }
 5735|     11|    }
 5736|     39|    if (dictoffset) {
  ------------------
  |  Branch (5736:9): [True: 9, False: 30]
  ------------------
 5737|      9|        if (PyDict_DelItem(dict, &_Py_ID(__dictoffset__)) < 0) {
  ------------------
  |  |  917|      9|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      9|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      9|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5737:13): [True: 0, False: 9]
  ------------------
 5738|      0|            goto finally;
 5739|      0|        }
 5740|      9|    }
 5741|       |
 5742|       |    /* Set type.__module__ */
 5743|     39|    r = PyDict_Contains(dict, &_Py_ID(__module__));
  ------------------
  |  |  917|     39|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     39|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     39|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5744|     39|    if (r < 0) {
  ------------------
  |  Branch (5744:9): [True: 0, False: 39]
  ------------------
 5745|      0|        goto finally;
 5746|      0|    }
 5747|     39|    if (r == 0) {
  ------------------
  |  Branch (5747:9): [True: 39, False: 0]
  ------------------
 5748|     39|        s = strrchr(it.name, '.');
 5749|     39|        if (s != NULL) {
  ------------------
  |  Branch (5749:13): [True: 39, False: 0]
  ------------------
 5750|     39|            PyObject *modname = PyUnicode_FromStringAndSize(
 5751|     39|                    it.name, (Py_ssize_t)(s - it.name));
 5752|     39|            if (modname == NULL) {
  ------------------
  |  Branch (5752:17): [True: 0, False: 39]
  ------------------
 5753|      0|                goto finally;
 5754|      0|            }
 5755|     39|            r = PyDict_SetItem(dict, &_Py_ID(__module__), modname);
  ------------------
  |  |  917|     39|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     39|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     39|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5756|     39|            Py_DECREF(modname);
  ------------------
  |  |  430|     39|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     39|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     39|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5757|     39|            if (r != 0) {
  ------------------
  |  Branch (5757:17): [True: 0, False: 39]
  ------------------
 5758|      0|                goto finally;
 5759|      0|            }
 5760|     39|        }
 5761|      0|        else {
 5762|      0|            if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1,
  ------------------
  |  Branch (5762:17): [True: 0, False: 0]
  ------------------
 5763|      0|                    "builtin type %.200s has no __module__ attribute",
 5764|      0|                    it.name))
 5765|      0|                goto finally;
 5766|      0|        }
 5767|     39|    }
 5768|       |
 5769|     39|    assert(_PyType_CheckConsistency(type));
  ------------------
  |  Branch (5769:5): [True: 39, False: 0]
  ------------------
 5770|       |#if defined(Py_GIL_DISABLED) && defined(Py_DEBUG) && SIZEOF_VOID_P > 4
 5771|       |    // After this point, other threads can potentally use this type.
 5772|       |    ((PyObject*)type)->ob_flags |= _Py_TYPE_REVEALED_FLAG;
 5773|       |#endif
 5774|       |
 5775|     39| finally:
 5776|     39|    if (PyErr_Occurred()) {
  ------------------
  |  Branch (5776:9): [True: 0, False: 39]
  ------------------
 5777|      0|        Py_CLEAR(res);
  ------------------
  |  |  484|      0|    do { \
  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5778|      0|    }
 5779|     39|    Py_XDECREF(bases);
  ------------------
  |  |  524|     39|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     39|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     39|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5780|     39|    PyMem_Free(tp_doc);
 5781|     39|    Py_XDECREF(ht_name);
  ------------------
  |  |  524|     39|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     39|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     39|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5782|     39|    PyMem_Free(_ht_tpname);
 5783|     39|    return (PyObject*)res;
 5784|     39|}
typeobject.c:find_best_base:
 3703|     93|{
 3704|     93|    Py_ssize_t i, n;
 3705|     93|    PyTypeObject *base, *winner, *candidate;
 3706|       |
 3707|     93|    assert(PyTuple_Check(bases));
  ------------------
  |  Branch (3707:5): [True: 93, False: 0]
  ------------------
 3708|     93|    n = PyTuple_GET_SIZE(bases);
  ------------------
  |  |   27|     93|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     93|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     93|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3709|     93|    assert(n > 0);
  ------------------
  |  Branch (3709:5): [True: 93, False: 0]
  ------------------
 3710|     93|    base = NULL;
 3711|     93|    winner = NULL;
 3712|    198|    for (i = 0; i < n; i++) {
  ------------------
  |  Branch (3712:17): [True: 105, False: 93]
  ------------------
 3713|    105|        PyObject *base_proto = PyTuple_GET_ITEM(bases, i);
  ------------------
  |  |   29|    105|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|    105|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    105|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3713:32): [True: 105, False: 0]
  ------------------
 3714|    105|        if (!PyType_Check(base_proto)) {
  ------------------
  |  |  766|    105|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    105|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    105|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3714:13): [True: 0, False: 105]
  ------------------
 3715|      0|            PyErr_SetString(
 3716|      0|                PyExc_TypeError,
 3717|      0|                "bases must be types");
 3718|      0|            return NULL;
 3719|      0|        }
 3720|    105|        PyTypeObject *base_i = (PyTypeObject *)base_proto;
 3721|       |
 3722|    105|        if (!_PyType_IsReady(base_i)) {
  ------------------
  |  Branch (3722:13): [True: 0, False: 105]
  ------------------
 3723|      0|            if (PyType_Ready(base_i) < 0)
  ------------------
  |  Branch (3723:17): [True: 0, False: 0]
  ------------------
 3724|      0|                return NULL;
 3725|      0|        }
 3726|    105|        if (!_PyType_HasFeature(base_i, Py_TPFLAGS_BASETYPE)) {
  ------------------
  |  |  506|    105|#define Py_TPFLAGS_BASETYPE (1UL << 10)
  ------------------
  |  Branch (3726:13): [True: 0, False: 105]
  ------------------
 3727|      0|            PyErr_Format(PyExc_TypeError,
 3728|      0|                         "type '%.100s' is not an acceptable base type",
 3729|      0|                         base_i->tp_name);
 3730|      0|            return NULL;
 3731|      0|        }
 3732|    105|        candidate = solid_base(base_i);
 3733|    105|        if (winner == NULL) {
  ------------------
  |  Branch (3733:13): [True: 93, False: 12]
  ------------------
 3734|     93|            winner = candidate;
 3735|     93|            base = base_i;
 3736|     93|        }
 3737|     12|        else if (PyType_IsSubtype(winner, candidate))
  ------------------
  |  Branch (3737:18): [True: 12, False: 0]
  ------------------
 3738|     12|            ;
 3739|      0|        else if (PyType_IsSubtype(candidate, winner)) {
  ------------------
  |  Branch (3739:18): [True: 0, False: 0]
  ------------------
 3740|      0|            winner = candidate;
 3741|      0|            base = base_i;
 3742|      0|        }
 3743|      0|        else {
 3744|      0|            PyErr_SetString(
 3745|      0|                PyExc_TypeError,
 3746|      0|                "multiple bases have "
 3747|      0|                "instance lay-out conflict");
 3748|      0|            return NULL;
 3749|      0|        }
 3750|    105|    }
 3751|     93|    assert (base != NULL);
  ------------------
  |  Branch (3751:5): [True: 93, False: 0]
  ------------------
 3752|       |
 3753|     93|    return base;
 3754|     93|}
typeobject.c:solid_base:
 3767|    642|{
 3768|    642|    PyTypeObject *base;
 3769|       |
 3770|    642|    if (type->tp_base) {
  ------------------
  |  Branch (3770:9): [True: 379, False: 263]
  ------------------
 3771|    379|        base = solid_base(type->tp_base);
 3772|    379|    }
 3773|    263|    else {
 3774|    263|        base = &PyBaseObject_Type;
 3775|    263|    }
 3776|    642|    if (shape_differs(type, base)) {
  ------------------
  |  Branch (3776:9): [True: 55, False: 587]
  ------------------
 3777|     55|        return type;
 3778|     55|    }
 3779|    587|    else {
 3780|    587|        return base;
 3781|    587|    }
 3782|    642|}
typeobject.c:shape_differs:
 3758|    642|{
 3759|    642|    return (
 3760|    642|        t1->tp_basicsize != t2->tp_basicsize ||
  ------------------
  |  Branch (3760:9): [True: 55, False: 587]
  ------------------
 3761|    587|        t1->tp_itemsize != t2->tp_itemsize
  ------------------
  |  Branch (3761:9): [True: 0, False: 587]
  ------------------
 3762|    642|    );
 3763|    642|}
typeobject.c:special_offset_from_member:
 5206|    117|{
 5207|    117|    if (memb == NULL) {
  ------------------
  |  Branch (5207:9): [True: 97, False: 20]
  ------------------
 5208|     97|        *dest = 0;
 5209|     97|        return 0;
 5210|     97|    }
 5211|     20|    if (memb->type != Py_T_PYSSIZET) {
  ------------------
  |  |   79|     20|#define Py_T_PYSSIZET  19      /* Py_ssize_t */
  ------------------
  |  Branch (5211:9): [True: 0, False: 20]
  ------------------
 5212|      0|        PyErr_Format(
 5213|      0|            PyExc_SystemError,
 5214|      0|            "type of %s must be Py_T_PYSSIZET",
 5215|      0|            memb->name);
 5216|      0|        return -1;
 5217|      0|    }
 5218|     20|    if (memb->flags == Py_READONLY) {
  ------------------
  |  |   83|     20|#define Py_READONLY            (1 << 0)
  ------------------
  |  Branch (5218:9): [True: 20, False: 0]
  ------------------
 5219|     20|        *dest = memb->offset;
 5220|     20|        return 0;
 5221|     20|    }
 5222|      0|    else if (memb->flags == (Py_READONLY | Py_RELATIVE_OFFSET)) {
  ------------------
  |  |   83|      0|#define Py_READONLY            (1 << 0)
  ------------------
                  else if (memb->flags == (Py_READONLY | Py_RELATIVE_OFFSET)) {
  ------------------
  |  |   86|      0|#define Py_RELATIVE_OFFSET     (1 << 3)
  ------------------
  |  Branch (5222:14): [True: 0, False: 0]
  ------------------
 5223|      0|        *dest = memb->offset + type_data_offset;
 5224|      0|        return 0;
 5225|      0|    }
 5226|      0|    PyErr_Format(
 5227|      0|        PyExc_SystemError,
 5228|      0|        "flags for %s must be Py_READONLY or (Py_READONLY | Py_RELATIVE_OFFSET)",
 5229|      0|        memb->name);
 5230|      0|    return -1;
 5231|     20|}
typeobject.c:type_set_flags:
  456|  2.65k|{
  457|  2.65k|    ASSERT_WORLD_STOPPED_OR_NEW_TYPE(tp);
  458|  2.65k|    tp->tp_flags = flags;
  459|  2.65k|}
typeobject.c:set_tp_bases:
  600|    333|{
  601|    333|    assert(PyTuple_Check(bases));
  ------------------
  |  Branch (601:5): [True: 333, False: 0]
  ------------------
  602|    333|    ASSERT_NEW_TYPE_OR_LOCKED(self);
  603|    333|    if (self->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN) {
  ------------------
  |  |  467|    333|#define _Py_TPFLAGS_STATIC_BUILTIN (1 << 1)
  ------------------
  |  Branch (603:9): [True: 207, False: 126]
  ------------------
  604|       |        // XXX tp_bases can probably be statically allocated for each
  605|       |        // static builtin type.
  606|    207|        assert(PyTuple_CheckExact(bases));
  ------------------
  |  Branch (606:9): [True: 207, False: 0]
  ------------------
  607|    207|        assert(initial);
  ------------------
  |  Branch (607:9): [True: 207, False: 0]
  ------------------
  608|    207|        assert(self->tp_bases == NULL);
  ------------------
  |  Branch (608:9): [True: 207, False: 0]
  ------------------
  609|    207|        if (PyTuple_GET_SIZE(bases) == 0) {
  ------------------
  |  |   27|    207|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    207|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    207|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (609:13): [True: 1, False: 206]
  ------------------
  610|      1|            assert(self->tp_base == NULL);
  ------------------
  |  Branch (610:13): [True: 1, False: 0]
  ------------------
  611|      1|        }
  612|    206|        else {
  613|    206|            assert(PyTuple_GET_SIZE(bases) == 1);
  ------------------
  |  Branch (613:13): [True: 206, False: 0]
  ------------------
  614|    206|            assert(PyTuple_GET_ITEM(bases, 0) == (PyObject *)self->tp_base);
  ------------------
  |  Branch (614:13): [True: 206, False: 0]
  |  Branch (614:13): [True: 206, False: 0]
  ------------------
  615|    206|            assert(self->tp_base->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN);
  ------------------
  |  Branch (615:13): [True: 206, False: 0]
  ------------------
  616|    206|            assert(_Py_IsImmortal(self->tp_base));
  ------------------
  |  Branch (616:13): [True: 206, False: 0]
  ------------------
  617|    206|        }
  618|    207|        _Py_SetImmortal(bases);
  619|    207|    }
  620|    333|    self->tp_bases = bases;
  621|    333|}
typeobject.c:_PyHeapType_GET_MEMBERS:
 2575|    202|{
 2576|    202|    return PyObject_GetItemData((PyObject *)type);
 2577|    202|}
typeobject.c:subtype_dealloc:
 2715|    191|{
 2716|    191|    PyTypeObject *type, *base;
 2717|    191|    destructor basedealloc;
 2718|    191|    int has_finalizer;
 2719|       |
 2720|       |    /* Extract the type; we expect it to be a heap type */
 2721|    191|    type = Py_TYPE(self);
  ------------------
  |  |  213|    191|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    191|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    191|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2722|    191|    _PyObject_ASSERT((PyObject *)type, type->tp_flags & Py_TPFLAGS_HEAPTYPE);
  ------------------
  |  |  423|    191|    _PyObject_ASSERT_WITH_MSG((obj), expr, NULL)
  |  |  ------------------
  |  |  |  |  421|    191|    _PyObject_ASSERT_FROM((obj), expr, (msg), __FILE__, __LINE__, __func__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  414|    191|    ((expr) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (414:6): [True: 191, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  415|    191|      ? (void)(0) \
  |  |  |  |  |  |  416|    191|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2723|       |
 2724|       |    /* Test whether the type has GC exactly once */
 2725|       |
 2726|    191|    if (!_PyType_IS_GC(type)) {
  ------------------
  |  |  828|    191|#define _PyType_IS_GC(t) _PyType_HasFeature((t), Py_TPFLAGS_HAVE_GC)
  |  |  ------------------
  |  |  |  |  524|    191|#define Py_TPFLAGS_HAVE_GC (1UL << 14)
  |  |  ------------------
  ------------------
  |  Branch (2726:9): [True: 0, False: 191]
  ------------------
 2727|       |        /* A non GC dynamic type allows certain simplifications:
 2728|       |           there's no need to call clear_slots(), or DECREF the dict,
 2729|       |           or clear weakrefs. */
 2730|       |
 2731|       |        /* Maybe call finalizer; exit early if resurrected */
 2732|      0|        if (type->tp_finalize) {
  ------------------
  |  Branch (2732:13): [True: 0, False: 0]
  ------------------
 2733|      0|            if (PyObject_CallFinalizerFromDealloc(self) < 0)
  ------------------
  |  Branch (2733:17): [True: 0, False: 0]
  ------------------
 2734|      0|                return;
 2735|      0|        }
 2736|      0|        if (type->tp_del) {
  ------------------
  |  Branch (2736:13): [True: 0, False: 0]
  ------------------
 2737|      0|            type->tp_del(self);
 2738|      0|            if (Py_REFCNT(self) > 0) {
  ------------------
  |  |  119|      0|    #  define Py_REFCNT(ob) _Py_REFCNT(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2738:17): [True: 0, False: 0]
  ------------------
 2739|      0|                return;
 2740|      0|            }
 2741|      0|        }
 2742|       |
 2743|       |        /* Find the nearest base with a different tp_dealloc */
 2744|      0|        base = type;
 2745|      0|        while ((basedealloc = base->tp_dealloc) == subtype_dealloc) {
  ------------------
  |  Branch (2745:16): [True: 0, False: 0]
  ------------------
 2746|      0|            base = base->tp_base;
 2747|      0|            assert(base);
  ------------------
  |  Branch (2747:13): [True: 0, False: 0]
  ------------------
 2748|      0|        }
 2749|       |
 2750|       |        /* Extract the type again; tp_del may have changed it */
 2751|      0|        type = Py_TYPE(self);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2752|       |
 2753|       |        // Don't read type memory after calling basedealloc() since basedealloc()
 2754|       |        // can deallocate the type and free its memory.
 2755|      0|        int type_needs_decref = (type->tp_flags & Py_TPFLAGS_HEAPTYPE
  ------------------
  |  |  503|      0|#define Py_TPFLAGS_HEAPTYPE (1UL << 9)
  ------------------
  |  Branch (2755:34): [True: 0, False: 0]
  ------------------
 2756|      0|                                 && !(base->tp_flags & Py_TPFLAGS_HEAPTYPE));
  ------------------
  |  |  503|      0|#define Py_TPFLAGS_HEAPTYPE (1UL << 9)
  ------------------
  |  Branch (2756:37): [True: 0, False: 0]
  ------------------
 2757|       |
 2758|      0|        assert((type->tp_flags & Py_TPFLAGS_MANAGED_DICT) == 0);
  ------------------
  |  Branch (2758:9): [True: 0, False: 0]
  ------------------
 2759|       |
 2760|       |        /* Call the base tp_dealloc() */
 2761|      0|        assert(basedealloc);
  ------------------
  |  Branch (2761:9): [True: 0, False: 0]
  ------------------
 2762|      0|        basedealloc(self);
 2763|       |
 2764|       |        /* Can't reference self beyond this point. It's possible tp_del switched
 2765|       |           our type from a HEAPTYPE to a non-HEAPTYPE, so be careful about
 2766|       |           reference counting. Only decref if the base type is not already a heap
 2767|       |           allocated type. Otherwise, basedealloc should have decref'd it already */
 2768|      0|        if (type_needs_decref) {
  ------------------
  |  Branch (2768:13): [True: 0, False: 0]
  ------------------
 2769|      0|            _Py_DECREF_TYPE(type);
  ------------------
  |  |  316|      0|#  define _Py_DECREF_TYPE Py_DECREF
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2770|      0|        }
 2771|       |
 2772|       |        /* Done */
 2773|      0|        return;
 2774|      0|    }
 2775|       |
 2776|       |    /* We get here only if the type has GC */
 2777|       |
 2778|       |    /* UnTrack and re-Track around the trashcan macro, alas */
 2779|       |    /* See explanation at end of function for full disclosure */
 2780|    191|    PyObject_GC_UnTrack(self);
 2781|       |
 2782|       |    /* Find the nearest base with a different tp_dealloc */
 2783|    191|    base = type;
 2784|    386|    while ((/*basedealloc =*/ base->tp_dealloc) == subtype_dealloc) {
  ------------------
  |  Branch (2784:12): [True: 195, False: 191]
  ------------------
 2785|    195|        base = base->tp_base;
 2786|    195|        assert(base);
  ------------------
  |  Branch (2786:9): [True: 195, False: 0]
  ------------------
 2787|    195|    }
 2788|       |
 2789|    191|    has_finalizer = type->tp_finalize || type->tp_del;
  ------------------
  |  Branch (2789:21): [True: 0, False: 191]
  |  Branch (2789:42): [True: 0, False: 191]
  ------------------
 2790|       |
 2791|    191|    if (type->tp_finalize) {
  ------------------
  |  Branch (2791:9): [True: 0, False: 191]
  ------------------
 2792|      0|        _PyObject_GC_TRACK(self);
  ------------------
  |  |  513|      0|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2793|      0|        if (PyObject_CallFinalizerFromDealloc(self) < 0) {
  ------------------
  |  Branch (2793:13): [True: 0, False: 0]
  ------------------
 2794|       |            /* Resurrected */
 2795|      0|            return;
 2796|      0|        }
 2797|      0|        _PyObject_GC_UNTRACK(self);
  ------------------
  |  |  515|      0|        _PyObject_GC_UNTRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2798|      0|    }
 2799|       |    /*
 2800|       |      If we added a weaklist, we clear it. Do this *before* calling tp_del,
 2801|       |      clearing slots, or clearing the instance dict.
 2802|       |
 2803|       |      GC tracking must be off at this point. weakref callbacks (if any, and
 2804|       |      whether directly here or indirectly in something we call) may trigger GC,
 2805|       |      and if self is tracked at that point, it will look like trash to GC and GC
 2806|       |      will try to delete self again.
 2807|       |    */
 2808|    191|    if (type->tp_weaklistoffset && !base->tp_weaklistoffset) {
  ------------------
  |  Branch (2808:9): [True: 160, False: 31]
  |  Branch (2808:36): [True: 160, False: 0]
  ------------------
 2809|    160|        PyObject_ClearWeakRefs(self);
 2810|    160|    }
 2811|       |
 2812|    191|    if (type->tp_del) {
  ------------------
  |  Branch (2812:9): [True: 0, False: 191]
  ------------------
 2813|      0|        _PyObject_GC_TRACK(self);
  ------------------
  |  |  513|      0|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2814|      0|        type->tp_del(self);
 2815|      0|        if (Py_REFCNT(self) > 0) {
  ------------------
  |  |  119|      0|    #  define Py_REFCNT(ob) _Py_REFCNT(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2815:13): [True: 0, False: 0]
  ------------------
 2816|       |            /* Resurrected */
 2817|      0|            return;
 2818|      0|        }
 2819|      0|        _PyObject_GC_UNTRACK(self);
  ------------------
  |  |  515|      0|        _PyObject_GC_UNTRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2820|      0|    }
 2821|    191|    if (has_finalizer) {
  ------------------
  |  Branch (2821:9): [True: 0, False: 191]
  ------------------
 2822|       |        /* New weakrefs could be created during the finalizer call.
 2823|       |           If this occurs, clear them out without calling their
 2824|       |           finalizers since they might rely on part of the object
 2825|       |           being finalized that has already been destroyed. */
 2826|      0|        if (type->tp_weaklistoffset && !base->tp_weaklistoffset) {
  ------------------
  |  Branch (2826:13): [True: 0, False: 0]
  |  Branch (2826:40): [True: 0, False: 0]
  ------------------
 2827|      0|            _PyWeakref_ClearWeakRefsNoCallbacks(self);
 2828|      0|        }
 2829|      0|    }
 2830|       |
 2831|       |    /*  Clear slots up to the nearest base with a different tp_dealloc */
 2832|    191|    base = type;
 2833|    386|    while ((basedealloc = base->tp_dealloc) == subtype_dealloc) {
  ------------------
  |  Branch (2833:12): [True: 195, False: 191]
  ------------------
 2834|    195|        if (Py_SIZE(base))
  ------------------
  |  |  214|    195|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    195|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    195|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (214:23): [True: 31, False: 164]
  |  |  ------------------
  ------------------
 2835|     31|            clear_slots(base, self);
 2836|    195|        base = base->tp_base;
 2837|    195|        assert(base);
  ------------------
  |  Branch (2837:9): [True: 195, False: 0]
  ------------------
 2838|    195|    }
 2839|       |
 2840|       |    /* If we added a dict, DECREF it, or free inline values. */
 2841|    191|    if (type->tp_flags & Py_TPFLAGS_MANAGED_DICT) {
  ------------------
  |  |  482|    191|#define Py_TPFLAGS_MANAGED_DICT (1 << 4)
  ------------------
  |  Branch (2841:9): [True: 126, False: 65]
  ------------------
 2842|    126|        PyObject_ClearManagedDict(self);
 2843|    126|    }
 2844|     65|    else if (type->tp_dictoffset && !base->tp_dictoffset) {
  ------------------
  |  Branch (2844:14): [True: 4, False: 61]
  |  Branch (2844:37): [True: 0, False: 4]
  ------------------
 2845|      0|        PyObject **dictptr = _PyObject_ComputedDictPointer(self);
 2846|      0|        if (dictptr != NULL) {
  ------------------
  |  Branch (2846:13): [True: 0, False: 0]
  ------------------
 2847|      0|            PyObject *dict = *dictptr;
 2848|      0|            if (dict != NULL) {
  ------------------
  |  Branch (2848:17): [True: 0, False: 0]
  ------------------
 2849|      0|                Py_DECREF(dict);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2850|      0|                *dictptr = NULL;
 2851|      0|            }
 2852|      0|        }
 2853|      0|    }
 2854|       |
 2855|       |    /* Extract the type again; tp_del may have changed it */
 2856|    191|    type = Py_TYPE(self);
  ------------------
  |  |  213|    191|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    191|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    191|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2857|       |
 2858|       |    /* Call the base tp_dealloc(); first retrack self if
 2859|       |     * basedealloc knows about gc.
 2860|       |     */
 2861|    191|    if (_PyType_IS_GC(base)) {
  ------------------
  |  |  828|    191|#define _PyType_IS_GC(t) _PyType_HasFeature((t), Py_TPFLAGS_HAVE_GC)
  |  |  ------------------
  |  |  |  |  524|    191|#define Py_TPFLAGS_HAVE_GC (1UL << 14)
  |  |  ------------------
  |  |  |  Branch (828:26): [True: 64, False: 127]
  |  |  ------------------
  ------------------
 2862|     64|        _PyObject_GC_TRACK(self);
  ------------------
  |  |  513|     64|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     64|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     64|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2863|     64|    }
 2864|       |
 2865|       |    // Don't read type memory after calling basedealloc() since basedealloc()
 2866|       |    // can deallocate the type and free its memory.
 2867|    191|    int type_needs_decref = (type->tp_flags & Py_TPFLAGS_HEAPTYPE
  ------------------
  |  |  503|    382|#define Py_TPFLAGS_HEAPTYPE (1UL << 9)
  ------------------
  |  Branch (2867:30): [True: 191, False: 0]
  ------------------
 2868|    191|                             && !(base->tp_flags & Py_TPFLAGS_HEAPTYPE));
  ------------------
  |  |  503|    191|#define Py_TPFLAGS_HEAPTYPE (1UL << 9)
  ------------------
  |  Branch (2868:33): [True: 191, False: 0]
  ------------------
 2869|       |
 2870|    191|    assert(basedealloc);
  ------------------
  |  Branch (2870:5): [True: 191, False: 0]
  ------------------
 2871|    191|    basedealloc(self);
 2872|       |
 2873|       |    /* Can't reference self beyond this point. It's possible tp_del switched
 2874|       |       our type from a HEAPTYPE to a non-HEAPTYPE, so be careful about
 2875|       |       reference counting. Only decref if the base type is not already a heap
 2876|       |       allocated type. Otherwise, basedealloc should have decref'd it already */
 2877|    191|    if (type_needs_decref) {
  ------------------
  |  Branch (2877:9): [True: 191, False: 0]
  ------------------
 2878|    191|        _Py_DECREF_TYPE(type);
  ------------------
  |  |  316|    191|#  define _Py_DECREF_TYPE Py_DECREF
  |  |  ------------------
  |  |  |  |  430|    191|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    191|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    191|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2879|    191|    }
 2880|    191|}
typeobject.c:clear_slots:
 2656|     31|{
 2657|     31|    Py_ssize_t i, n;
 2658|     31|    PyMemberDef *mp;
 2659|       |
 2660|     31|    n = Py_SIZE(type);
  ------------------
  |  |  214|     31|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     31|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     31|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2661|     31|    mp = _PyHeapType_GET_MEMBERS((PyHeapTypeObject *)type);
 2662|     64|    for (i = 0; i < n; i++, mp++) {
  ------------------
  |  Branch (2662:17): [True: 33, False: 31]
  ------------------
 2663|     33|        if (mp->type == Py_T_OBJECT_EX && !(mp->flags & Py_READONLY)) {
  ------------------
  |  |   75|     66|#define Py_T_OBJECT_EX 16
  ------------------
                      if (mp->type == Py_T_OBJECT_EX && !(mp->flags & Py_READONLY)) {
  ------------------
  |  |   83|     33|#define Py_READONLY            (1 << 0)
  ------------------
  |  Branch (2663:13): [True: 33, False: 0]
  |  Branch (2663:43): [True: 33, False: 0]
  ------------------
 2664|     33|            void *addr = _PyMember_GetOffset(self, mp);
 2665|     33|            PyObject *obj = *(PyObject **)addr;
 2666|     33|            if (obj != NULL) {
  ------------------
  |  Branch (2666:17): [True: 33, False: 0]
  ------------------
 2667|     33|                *(PyObject **)addr = NULL;
 2668|     33|                Py_DECREF(obj);
  ------------------
  |  |  430|     33|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     33|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     33|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2669|     33|            }
 2670|     33|        }
 2671|     33|    }
 2672|     31|}
typeobject.c:check_basicsize_includes_size_and_offsets:
 5134|     39|{
 5135|     39|    if (type->tp_alloc != PyType_GenericAlloc) {
  ------------------
  |  Branch (5135:9): [True: 0, False: 39]
  ------------------
 5136|       |        // Custom allocators can ignore tp_basicsize
 5137|      0|        return 1;
 5138|      0|    }
 5139|     39|    Py_ssize_t max = (Py_ssize_t)type->tp_basicsize;
 5140|       |
 5141|     39|    if (type->tp_base && type->tp_base->tp_basicsize > type->tp_basicsize) {
  ------------------
  |  Branch (5141:9): [True: 39, False: 0]
  |  Branch (5141:26): [True: 0, False: 39]
  ------------------
 5142|      0|        PyErr_Format(PyExc_TypeError,
 5143|      0|                     "tp_basicsize for type '%s' (%zd) is too small for base '%s' (%zd)",
 5144|      0|                     type->tp_name, type->tp_basicsize,
 5145|      0|                     type->tp_base->tp_name, type->tp_base->tp_basicsize);
 5146|      0|        return 0;
 5147|      0|    }
 5148|     39|    if (type->tp_weaklistoffset + (Py_ssize_t)sizeof(PyObject*) > max) {
  ------------------
  |  Branch (5148:9): [True: 0, False: 39]
  ------------------
 5149|      0|        PyErr_Format(PyExc_TypeError,
 5150|      0|                     "weaklist offset %zd is out of bounds for type '%s' (tp_basicsize = %zd)",
 5151|      0|                     type->tp_weaklistoffset,
 5152|      0|                     type->tp_name, type->tp_basicsize);
 5153|      0|        return 0;
 5154|      0|    }
 5155|     39|    if (type->tp_dictoffset + (Py_ssize_t)sizeof(PyObject*) > max) {
  ------------------
  |  Branch (5155:9): [True: 0, False: 39]
  ------------------
 5156|      0|        PyErr_Format(PyExc_TypeError,
 5157|      0|                     "dict offset %zd is out of bounds for type '%s' (tp_basicsize = %zd)",
 5158|      0|                     type->tp_dictoffset,
 5159|      0|                     type->tp_name, type->tp_basicsize);
 5160|      0|        return 0;
 5161|      0|    }
 5162|     39|    if (type->tp_vectorcall_offset + (Py_ssize_t)sizeof(vectorcallfunc*) > max) {
  ------------------
  |  Branch (5162:9): [True: 0, False: 39]
  ------------------
 5163|      0|        PyErr_Format(PyExc_TypeError,
 5164|      0|                     "vectorcall offset %zd is out of bounds for type '%s' (tp_basicsize = %zd)",
 5165|      0|                     type->tp_vectorcall_offset,
 5166|      0|                     type->tp_name, type->tp_basicsize);
 5167|      0|        return 0;
 5168|      0|    }
 5169|     39|    return 1;
 5170|     39|}
typeobject.c:type_name:
 1522|      7|{
 1523|      7|    PyTypeObject *type = PyTypeObject_CAST(tp);
  ------------------
  |  |  200|      7|#define PyTypeObject_CAST(op)   ((PyTypeObject *)(op))
  ------------------
 1524|      7|    if (type->tp_flags & Py_TPFLAGS_HEAPTYPE) {
  ------------------
  |  |  503|      7|#define Py_TPFLAGS_HEAPTYPE (1UL << 9)
  ------------------
  |  Branch (1524:9): [True: 1, False: 6]
  ------------------
 1525|      1|        PyHeapTypeObject* et = (PyHeapTypeObject*)type;
 1526|      1|        return Py_NewRef(et->ht_name);
  ------------------
  |  |  550|      1|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1527|      1|    }
 1528|      6|    else {
 1529|      6|        return PyUnicode_FromString(_PyType_Name(type));
 1530|      6|    }
 1531|      7|}
typeobject.c:lookup_tp_mro:
  646|  15.2k|{
  647|  15.2k|    return self->tp_mro;
  648|  15.2k|}
typeobject.c:getitemdata:
 6101|    202|{
 6102|    202|    if (!_PyType_HasFeature(Py_TYPE(obj), Py_TPFLAGS_ITEMS_AT_END)) {
  ------------------
  |  |  213|    202|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    202|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    202|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  if (!_PyType_HasFeature(Py_TYPE(obj), Py_TPFLAGS_ITEMS_AT_END)) {
  ------------------
  |  |  548|    202|#define Py_TPFLAGS_ITEMS_AT_END (1UL << 23)
  ------------------
  |  Branch (6102:9): [True: 0, False: 202]
  ------------------
 6103|      0|        if (raise) {
  ------------------
  |  Branch (6103:13): [True: 0, False: 0]
  ------------------
 6104|      0|            PyErr_Format(PyExc_TypeError,
 6105|      0|                         "type '%T' does not have Py_TPFLAGS_ITEMS_AT_END",
 6106|      0|                         obj);
 6107|      0|        }
 6108|      0|        return NULL;
 6109|      0|    }
 6110|    202|    return (char *)obj + Py_TYPE(obj)->tp_basicsize;
  ------------------
  |  |  213|    202|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    202|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    202|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6111|    202|}
typeobject.c:get_type_cache:
  974|  6.62k|{
  975|  6.62k|    PyInterpreterState *interp = _PyInterpreterState_GET();
  976|  6.62k|    return &interp->types.type_cache;
  977|  6.62k|}
typeobject.c:should_assign_version_tag:
 6284|  1.42k|{
 6285|  1.42k|    return (version_tag == 0
  ------------------
  |  Branch (6285:13): [True: 64, False: 1.36k]
  ------------------
 6286|     64|        && FT_ATOMIC_LOAD_UINT16_RELAXED(type->tp_versions_used) < MAX_VERSIONS_PER_CLASS
  ------------------
  |  |  158|     64|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  ------------------
                      && FT_ATOMIC_LOAD_UINT16_RELAXED(type->tp_versions_used) < MAX_VERSIONS_PER_CLASS
  ------------------
  |  | 1389|  1.49k|#define MAX_VERSIONS_PER_CLASS 1000
  ------------------
  |  Branch (6286:12): [True: 64, False: 0]
  ------------------
 6287|     64|        && MCACHE_CACHEABLE_NAME(name));
  ------------------
  |  |   57|     64|        (PyUnicode_CheckExact(name) &&                           \
  |  |  ------------------
  |  |  |  |  104|     64|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |  215|    128|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|     64|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     64|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (215:32): [True: 64, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   58|     64|         (PyUnicode_GET_LENGTH(name) <= MCACHE_MAX_ATTR_SIZE))
  |  |  ------------------
  |  |  |  |  299|     64|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     64|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     64|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                        (PyUnicode_GET_LENGTH(name) <= MCACHE_MAX_ATTR_SIZE))
  |  |  ------------------
  |  |  |  |   48|     64|#define MCACHE_MAX_ATTR_SIZE    100
  |  |  ------------------
  |  |  |  Branch (58:10): [True: 64, False: 0]
  |  |  ------------------
  ------------------
 6288|  1.42k|}
typeobject.c:find_name_in_mro:
 6131|  9.60k|{
 6132|  9.60k|    Py_hash_t hash = _PyObject_HashFast(name);
 6133|  9.60k|    if (hash == -1) {
  ------------------
  |  Branch (6133:9): [True: 0, False: 9.60k]
  ------------------
 6134|      0|        PyErr_Clear();
 6135|      0|        return -1;
 6136|      0|    }
 6137|       |
 6138|       |    /* Look in tp_dict of types in MRO */
 6139|  9.60k|    PyObject *mro = lookup_tp_mro(type);
 6140|  9.60k|    if (mro == NULL) {
  ------------------
  |  Branch (6140:9): [True: 0, False: 9.60k]
  ------------------
 6141|      0|        if (!is_readying(type)) {
  ------------------
  |  Branch (6141:13): [True: 0, False: 0]
  ------------------
 6142|      0|            if (PyType_Ready(type) < 0) {
  ------------------
  |  Branch (6142:17): [True: 0, False: 0]
  ------------------
 6143|      0|                PyErr_Clear();
 6144|      0|                return -1;
 6145|      0|            }
 6146|      0|            mro = lookup_tp_mro(type);
 6147|      0|        }
 6148|      0|        if (mro == NULL) {
  ------------------
  |  Branch (6148:13): [True: 0, False: 0]
  ------------------
 6149|      0|            return -1;
 6150|      0|        }
 6151|      0|    }
 6152|       |
 6153|  9.60k|    int res = 0;
 6154|  9.60k|    PyThreadState *tstate = _PyThreadState_GET();
 6155|       |    /* Keep a strong reference to mro because type->tp_mro can be replaced
 6156|       |       during dict lookup, e.g. when comparing to non-string keys. */
 6157|  9.60k|    _PyCStackRef mro_ref;
 6158|  9.60k|    _PyThreadState_PushCStackRef(tstate, &mro_ref);
 6159|  9.60k|    mro_ref.ref = PyStackRef_FromPyObjectNew(mro);
  ------------------
  |  |  599|  9.60k|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|  9.60k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  9.60k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6160|  9.60k|    Py_ssize_t n = PyTuple_GET_SIZE(mro);
  ------------------
  |  |   27|  9.60k|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  9.60k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  9.60k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6161|  37.3k|    for (Py_ssize_t i = 0; i < n; i++) {
  ------------------
  |  Branch (6161:28): [True: 29.8k, False: 7.58k]
  ------------------
 6162|  29.8k|        PyObject *base = PyTuple_GET_ITEM(mro, i);
  ------------------
  |  |   29|  29.8k|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|  29.8k|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  29.8k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6162:26): [True: 29.8k, False: 0]
  ------------------
 6163|  29.8k|        PyObject *dict = lookup_tp_dict(_PyType_CAST(base));
  ------------------
  |  |  770|  29.8k|    (assert(PyType_Check(op)), _Py_CAST(PyTypeObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|  29.8k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (6163:41): [True: 29.8k, False: 0]
  ------------------
 6164|  29.8k|        assert(dict && PyDict_Check(dict));
  ------------------
  |  Branch (6164:9): [True: 29.8k, False: 0]
  |  Branch (6164:9): [True: 29.8k, False: 0]
  ------------------
 6165|  29.8k|        Py_ssize_t ix = _Py_dict_lookup_threadsafe_stackref(
 6166|  29.8k|            (PyDictObject *)dict, name, hash, out);
 6167|  29.8k|        if (ix == DKIX_ERROR) {
  ------------------
  |  |  186|  29.8k|#define DKIX_ERROR (-3)
  ------------------
  |  Branch (6167:13): [True: 0, False: 29.8k]
  ------------------
 6168|      0|            PyErr_Clear();
 6169|      0|            res = -1;
 6170|      0|            goto done;
 6171|      0|        }
 6172|  29.8k|        if (!PyStackRef_IsNull(*out)) {
  ------------------
  |  |  470|  29.8k|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  ------------------
  |  |  |  |  467|  29.8k|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  29.8k|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6172:13): [True: 2.02k, False: 27.7k]
  ------------------
 6173|  2.02k|            res = 1;
 6174|  2.02k|            break;
 6175|  2.02k|        }
 6176|  29.8k|    }
 6177|  9.60k|done:
 6178|  9.60k|    _PyThreadState_PopCStackRef(tstate, &mro_ref);
 6179|  9.60k|    return res;
 6180|  9.60k|}
typeobject.c:update_cache:
 6202|  1.42k|{
 6203|  1.42k|    _Py_atomic_store_ptr_relaxed(&entry->value, value); /* borrowed */
 6204|  1.42k|    assert(PyUnstable_Unicode_GET_CACHED_HASH(name) != -1);
  ------------------
  |  Branch (6204:5): [True: 1.42k, False: 0]
  ------------------
 6205|  1.42k|    OBJECT_STAT_INC_COND(type_cache_collisions, entry->name != Py_None && entry->name != name);
  ------------------
  |  |   78|  1.42k|#define OBJECT_STAT_INC_COND(name, cond) ((void)0)
  ------------------
 6206|       |    // We're releasing this under the lock for simplicity sake because it's always a
 6207|       |    // exact unicode object or Py_None so it's safe to do so.
 6208|  1.42k|    PyObject *old_name = entry->name;
 6209|  1.42k|    _Py_atomic_store_ptr_relaxed(&entry->name, Py_NewRef(name));
  ------------------
  |  |  550|  1.42k|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|  1.42k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.42k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6210|       |    // We must write the version last to avoid _Py_TryXGetStackRef()
 6211|       |    // operating on an invalid (already deallocated) value inside
 6212|       |    // _PyType_LookupRefAndVersion().  If we write the version first then a
 6213|       |    // reader could pass the "entry_version == type_version" check but could
 6214|       |    // be using the old entry value.
 6215|  1.42k|    _Py_atomic_store_uint32_release(&entry->version, version_tag);
 6216|  1.42k|    return old_name;
 6217|  1.42k|}
typeobject.c:set_flags_recursive:
 6469|     13|{
 6470|     13|    if (PyType_HasFeature(self, Py_TPFLAGS_IMMUTABLETYPE) ||
  ------------------
  |  |  500|     13|#define Py_TPFLAGS_IMMUTABLETYPE (1UL << 8)
  ------------------
  |  Branch (6470:9): [True: 13, False: 0]
  ------------------
 6471|      0|        (self->tp_flags & mask) == flags)
  ------------------
  |  Branch (6471:9): [True: 0, False: 0]
  ------------------
 6472|     13|    {
 6473|     13|        return;
 6474|     13|    }
 6475|       |
 6476|      0|    type_set_flags_with_mask(self, mask, flags);
 6477|       |
 6478|      0|    PyObject *children = _PyType_GetSubclasses(self);
 6479|      0|    if (children == NULL) {
  ------------------
  |  Branch (6479:9): [True: 0, False: 0]
  ------------------
 6480|      0|        return;
 6481|      0|    }
 6482|       |
 6483|      0|    for (Py_ssize_t i = 0; i < PyList_GET_SIZE(children); i++) {
  ------------------
  |  |   38|      0|#define PyList_GET_SIZE(op) PyList_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6483:28): [True: 0, False: 0]
  ------------------
 6484|      0|        PyObject *child = PyList_GET_ITEM(children, i);
  ------------------
  |  |   40|      0|#define PyList_GET_ITEM(op, index) (_PyList_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   26|      0|    (assert(PyList_Check(op)), _Py_CAST(PyListObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6484:27): [True: 0, False: 0]
  ------------------
 6485|      0|        set_flags_recursive((PyTypeObject *)child, mask, flags);
 6486|      0|    }
 6487|      0|    Py_DECREF(children);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6488|      0|}
typeobject.c:type_clear_flags:
  477|    136|{
  478|    136|    type_set_flags(tp, tp->tp_flags & ~flag);
  479|    136|}
typeobject.c:type_call:
 2427|    444|{
 2428|    444|    PyTypeObject *type = PyTypeObject_CAST(self);
  ------------------
  |  |  200|    444|#define PyTypeObject_CAST(op)   ((PyTypeObject *)(op))
  ------------------
 2429|    444|    PyObject *obj;
 2430|    444|    PyThreadState *tstate = _PyThreadState_GET();
 2431|       |
 2432|       |#ifdef Py_DEBUG
 2433|       |    /* type_call() must not be called with an exception set,
 2434|       |       because it can clear it (directly or indirectly) and so the
 2435|       |       caller loses its exception */
 2436|       |    assert(!_PyErr_Occurred(tstate));
 2437|       |#endif
 2438|       |
 2439|       |    /* Special case: type(x) should return Py_TYPE(x) */
 2440|       |    /* We only want type itself to accept the one-argument form (#27157) */
 2441|    444|    if (type == &PyType_Type) {
  ------------------
  |  Branch (2441:9): [True: 58, False: 386]
  ------------------
 2442|     58|        assert(args != NULL && PyTuple_Check(args));
  ------------------
  |  Branch (2442:9): [True: 58, False: 0]
  |  Branch (2442:9): [True: 58, False: 0]
  ------------------
 2443|     58|        assert(kwds == NULL || PyDict_Check(kwds));
  ------------------
  |  Branch (2443:9): [True: 58, False: 0]
  |  Branch (2443:9): [True: 0, False: 0]
  ------------------
 2444|     58|        Py_ssize_t nargs = PyTuple_GET_SIZE(args);
  ------------------
  |  |   27|     58|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     58|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     58|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2445|       |
 2446|     58|        if (nargs == 1 && (kwds == NULL || !PyDict_GET_SIZE(kwds))) {
  ------------------
  |  |   63|      0|#define PyDict_GET_SIZE(op) PyDict_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2446:13): [True: 0, False: 58]
  |  Branch (2446:28): [True: 0, False: 0]
  |  Branch (2446:44): [True: 0, False: 0]
  ------------------
 2447|      0|            obj = (PyObject *) Py_TYPE(PyTuple_GET_ITEM(args, 0));
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (37:38): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2448|      0|            return Py_NewRef(obj);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2449|      0|        }
 2450|       |
 2451|       |        /* SF bug 475327 -- if that didn't trigger, we need 3
 2452|       |           arguments. But PyArg_ParseTuple in type_new may give
 2453|       |           a msg saying type() needs exactly 3. */
 2454|     58|        if (nargs != 3) {
  ------------------
  |  Branch (2454:13): [True: 0, False: 58]
  ------------------
 2455|      0|            PyErr_SetString(PyExc_TypeError,
 2456|      0|                            "type() takes 1 or 3 arguments");
 2457|      0|            return NULL;
 2458|      0|        }
 2459|     58|    }
 2460|       |
 2461|    444|    if (type->tp_new == NULL) {
  ------------------
  |  Branch (2461:9): [True: 0, False: 444]
  ------------------
 2462|      0|        _PyErr_Format(tstate, PyExc_TypeError,
 2463|      0|                      "cannot create '%s' instances", type->tp_name);
 2464|      0|        return NULL;
 2465|      0|    }
 2466|       |
 2467|    444|    obj = type->tp_new(type, args, kwds);
 2468|    444|    obj = _Py_CheckFunctionResult(tstate, (PyObject*)type, obj, NULL);
 2469|    444|    if (obj == NULL)
  ------------------
  |  Branch (2469:9): [True: 0, False: 444]
  ------------------
 2470|      0|        return NULL;
 2471|       |
 2472|       |    /* If the returned object is not an instance of type,
 2473|       |       it won't be initialized. */
 2474|    444|    if (!PyObject_TypeCheck(obj, type))
  ------------------
  |  |  378|    444|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|    444|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    444|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2474:9): [True: 0, False: 444]
  ------------------
 2475|      0|        return obj;
 2476|       |
 2477|    444|    type = Py_TYPE(obj);
  ------------------
  |  |  213|    444|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    444|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    444|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2478|    444|    if (type->tp_init != NULL) {
  ------------------
  |  Branch (2478:9): [True: 444, False: 0]
  ------------------
 2479|    444|        int res = type->tp_init(obj, args, kwds);
 2480|    444|        if (res < 0) {
  ------------------
  |  Branch (2480:13): [True: 4, False: 440]
  ------------------
 2481|      4|            assert(_PyErr_Occurred(tstate));
  ------------------
  |  Branch (2481:13): [True: 4, False: 0]
  ------------------
 2482|      4|            Py_SETREF(obj, NULL);
  ------------------
  |  |  352|      4|    do { \
  |  |  353|      4|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      4|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  354|      4|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      4|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  355|      4|        *_tmp_dst_ptr = (src); \
  |  |  356|      4|        Py_DECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  430|      4|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  357|      4|    } while (0)
  |  |  ------------------
  |  |  |  Branch (357:14): [Folded, False: 4]
  |  |  ------------------
  ------------------
 2483|      4|        }
 2484|    440|        else {
 2485|    440|            assert(!_PyErr_Occurred(tstate));
  ------------------
  |  Branch (2485:13): [True: 440, False: 0]
  ------------------
 2486|    440|        }
 2487|    444|    }
 2488|    444|    return obj;
 2489|    444|}
typeobject.c:type_setattro:
 6720|     60|{
 6721|     60|    PyTypeObject *type = PyTypeObject_CAST(self);
  ------------------
  |  |  200|     60|#define PyTypeObject_CAST(op)   ((PyTypeObject *)(op))
  ------------------
 6722|     60|    int res;
 6723|     60|    if (type->tp_flags & Py_TPFLAGS_IMMUTABLETYPE) {
  ------------------
  |  |  500|     60|#define Py_TPFLAGS_IMMUTABLETYPE (1UL << 8)
  ------------------
  |  Branch (6723:9): [True: 0, False: 60]
  ------------------
 6724|      0|        PyErr_Format(
 6725|      0|            PyExc_TypeError,
 6726|      0|            "cannot set %R attribute of immutable type '%s'",
 6727|      0|            name, type->tp_name);
 6728|      0|        return -1;
 6729|      0|    }
 6730|     60|    if (!PyUnicode_Check(name)) {
  ------------------
  |  |  103|     60|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     60|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (6730:9): [True: 0, False: 60]
  ------------------
 6731|      0|        PyErr_Format(PyExc_TypeError,
 6732|      0|                     "attribute name must be string, not '%.200s'",
 6733|      0|                     Py_TYPE(name)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6734|      0|        return -1;
 6735|      0|    }
 6736|       |
 6737|     60|    if (PyUnicode_CheckExact(name)) {
  ------------------
  |  |  104|     60|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  ------------------
  |  |  |  |  215|     60|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     60|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     60|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 60, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6738|     60|        Py_INCREF(name);
  ------------------
  |  |  310|     60|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     60|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     60|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6739|     60|    }
 6740|      0|    else {
 6741|      0|        name = _PyUnicode_Copy(name);
 6742|      0|        if (name == NULL)
  ------------------
  |  Branch (6742:13): [True: 0, False: 0]
  ------------------
 6743|      0|            return -1;
 6744|      0|    }
 6745|     60|    if (!PyUnicode_CHECK_INTERNED(name)) {
  ------------------
  |  |  214|     60|#define PyUnicode_CHECK_INTERNED(op) PyUnicode_CHECK_INTERNED(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     60|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     60|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6745:9): [True: 0, False: 60]
  ------------------
 6746|      0|        PyInterpreterState *interp = _PyInterpreterState_GET();
 6747|      0|        _PyUnicode_InternMortal(interp, &name);
 6748|      0|        if (!PyUnicode_CHECK_INTERNED(name)) {
  ------------------
  |  |  214|      0|#define PyUnicode_CHECK_INTERNED(op) PyUnicode_CHECK_INTERNED(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (6748:13): [True: 0, False: 0]
  ------------------
 6749|      0|            PyErr_SetString(PyExc_MemoryError,
 6750|      0|                            "Out of memory interning an attribute name");
 6751|      0|            Py_DECREF(name);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6752|      0|            return -1;
 6753|      0|        }
 6754|      0|    }
 6755|       |
 6756|     60|    PyTypeObject *metatype = Py_TYPE(type);
  ------------------
  |  |  213|     60|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     60|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     60|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6757|     60|    assert(!_PyType_HasFeature(metatype, Py_TPFLAGS_INLINE_VALUES));
  ------------------
  |  Branch (6757:5): [True: 60, False: 0]
  ------------------
 6758|     60|    assert(!_PyType_HasFeature(metatype, Py_TPFLAGS_MANAGED_DICT));
  ------------------
  |  Branch (6758:5): [True: 60, False: 0]
  ------------------
 6759|       |
 6760|       |#ifdef Py_GIL_DISABLED
 6761|       |    // gh-139103: Enable deferred refcounting for functions and descriptors
 6762|       |    // assigned to type objects.  This is important for `dataclass.__init__`,
 6763|       |    // which is generated dynamically, and for descriptor scaling on
 6764|       |    // free-threaded builds.
 6765|       |    if (value != NULL && (PyFunction_Check(value) || Py_TYPE(value)->tp_descr_get != NULL))
 6766|       |    {
 6767|       |        PyUnstable_Object_EnableDeferredRefcount(value);
 6768|       |    }
 6769|       |#endif
 6770|       |
 6771|     60|    PyObject *old_value = NULL;
 6772|     60|    PyObject *descr = _PyType_LookupRef(metatype, name);
 6773|     60|    if (descr != NULL) {
  ------------------
  |  Branch (6773:9): [True: 30, False: 30]
  ------------------
 6774|     30|        descrsetfunc f = Py_TYPE(descr)->tp_descr_set;
  ------------------
  |  |  213|     30|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     30|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     30|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6775|     30|        if (f != NULL) {
  ------------------
  |  Branch (6775:13): [True: 30, False: 0]
  ------------------
 6776|     30|            res = f(descr, (PyObject *)type, value);
 6777|     30|            goto done;
 6778|     30|        }
 6779|     30|    }
 6780|       |
 6781|     30|    PyObject *dict = type->tp_dict;
 6782|     30|    if (dict == NULL) {
  ------------------
  |  Branch (6782:9): [True: 0, False: 30]
  ------------------
 6783|       |        // This is an unlikely case.  PyType_Ready has not yet been done and
 6784|       |        // we need to initialize tp_dict.  We don't just do PyType_Ready
 6785|       |        // because we could already be readying.
 6786|      0|        BEGIN_TYPE_LOCK();
 6787|      0|        dict = type->tp_dict;
 6788|      0|        if (dict == NULL) {
  ------------------
  |  Branch (6788:13): [True: 0, False: 0]
  ------------------
 6789|      0|            dict = type->tp_dict = PyDict_New();
 6790|      0|        }
 6791|      0|        END_TYPE_LOCK();
 6792|      0|        if (dict == NULL) {
  ------------------
  |  Branch (6792:13): [True: 0, False: 0]
  ------------------
 6793|      0|            res = -1;
 6794|      0|            goto done;
 6795|      0|        }
 6796|      0|    }
 6797|       |
 6798|     30|    BEGIN_TYPE_DICT_LOCK(dict);
 6799|     30|    res = type_update_dict(type, (PyDictObject *)dict, name, value, &old_value);
 6800|     30|    assert(_PyType_CheckConsistency(type));
  ------------------
  |  Branch (6800:5): [True: 30, False: 0]
  ------------------
 6801|     30|    if (res == 0) {
  ------------------
  |  Branch (6801:9): [True: 30, False: 0]
  ------------------
 6802|     30|        if (is_dunder_name(name) && has_slotdef(name)) {
  ------------------
  |  Branch (6802:13): [True: 0, False: 30]
  |  Branch (6802:37): [True: 0, False: 0]
  ------------------
 6803|       |            // The name corresponds to a type slot.
 6804|      0|            res = update_slot_after_setattr(type, name);
 6805|      0|        }
 6806|     30|    }
 6807|     30|    END_TYPE_DICT_LOCK();
 6808|       |
 6809|     60|done:
 6810|     60|    Py_DECREF(name);
  ------------------
  |  |  430|     60|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     60|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     60|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6811|     60|    Py_XDECREF(descr);
  ------------------
  |  |  524|     60|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     60|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     60|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6812|     60|    Py_XDECREF(old_value);
  ------------------
  |  |  524|     60|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     60|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     60|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6813|     60|    return res;
 6814|     30|}
typeobject.c:type_update_dict:
 6665|     30|{
 6666|       |    // We don't want any re-entrancy between when we update the dict
 6667|       |    // and call type_modified_unlocked, including running the destructor
 6668|       |    // of the current value as it can observe the cache in an inconsistent
 6669|       |    // state.  Because we have an exact unicode and our dict has exact
 6670|       |    // unicodes we know that this will all complete without releasing
 6671|       |    // the locks.
 6672|     30|    if (_PyDict_GetItemRef_Unicode_LockHeld(dict, name, old_value) < 0) {
  ------------------
  |  Branch (6672:9): [True: 0, False: 30]
  ------------------
 6673|      0|        return -1;
 6674|      0|    }
 6675|       |
 6676|       |    /* Clear the VALID_VERSION flag of 'type' and all its
 6677|       |        subclasses.  This could possibly be unified with the
 6678|       |        update_subclasses() recursion in update_slot(), but carefully:
 6679|       |        they each have their own conditions on which to stop
 6680|       |        recursing into subclasses. */
 6681|     30|    type_modified_unlocked(type);
 6682|       |
 6683|     30|    if (_PyDict_SetItem_LockHeld(dict, name, value) < 0) {
  ------------------
  |  Branch (6683:9): [True: 0, False: 30]
  ------------------
 6684|      0|        PyErr_Format(PyExc_AttributeError,
 6685|      0|                     "type object '%.50s' has no attribute '%U'",
 6686|      0|                     ((PyTypeObject*)type)->tp_name, name);
 6687|      0|        _PyObject_SetAttributeErrorContext((PyObject *)type, name);
 6688|      0|        return -1;
 6689|      0|    }
 6690|       |
 6691|     30|    return 0;
 6692|     30|}
typeobject.c:is_dunder_name:
 6186|     30|{
 6187|     30|    Py_ssize_t length = PyUnicode_GET_LENGTH(name);
  ------------------
  |  |  299|     30|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     30|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     30|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6188|     30|    int kind = PyUnicode_KIND(name);
  ------------------
  |  |  258|     30|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|     60|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 30, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6189|       |    /* Special names contain at least "__x__" and are always ASCII. */
 6190|     30|    if (length > 4 && kind == PyUnicode_1BYTE_KIND) {
  ------------------
  |  Branch (6190:9): [True: 29, False: 1]
  |  Branch (6190:23): [True: 29, False: 0]
  ------------------
 6191|     29|        const Py_UCS1 *characters = PyUnicode_1BYTE_DATA(name);
  ------------------
  |  |  291|     29|#define PyUnicode_1BYTE_DATA(op) _Py_STATIC_CAST(Py_UCS1*, PyUnicode_DATA(op))
  |  |  ------------------
  |  |  |  |   34|     29|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
 6192|     29|        return (
 6193|     29|            ((characters[length-2] == '_') && (characters[length-1] == '_')) &&
  ------------------
  |  Branch (6193:14): [True: 0, False: 29]
  |  Branch (6193:47): [True: 0, False: 0]
  ------------------
 6194|      0|            ((characters[0] == '_') && (characters[1] == '_'))
  ------------------
  |  Branch (6194:14): [True: 0, False: 0]
  |  Branch (6194:40): [True: 0, False: 0]
  ------------------
 6195|     29|        );
 6196|     29|    }
 6197|      1|    return 0;
 6198|     30|}
typeobject.c:update_one_slot:
11877|  5.82k|{
11878|  5.82k|    ASSERT_NEW_TYPE_OR_LOCKED(type);
11879|       |
11880|  5.82k|    PyObject *descr;
11881|  5.82k|    PyWrapperDescrObject *d;
11882|       |
11883|       |    // The correct specialized C function, like "tp_repr of str" in the
11884|       |    // example above
11885|  5.82k|    void *specific = NULL;
11886|       |
11887|       |    // A generic wrapper that uses method lookup (safe but slow)
11888|  5.82k|    void *generic = NULL;
11889|       |
11890|       |    // Set to 1 if the generic wrapper is necessary
11891|  5.82k|    int use_generic = 0;
11892|       |
11893|  5.82k|    int offset = p->offset;
11894|  5.82k|    void **ptr = slotptr(type, offset);
11895|       |
11896|  5.82k|    if (ptr == NULL) {
  ------------------
  |  Branch (11896:9): [True: 0, False: 5.82k]
  ------------------
11897|      0|        do {
11898|      0|            ++p;
11899|      0|        } while (p->offset == offset);
  ------------------
  |  Branch (11899:18): [True: 0, False: 0]
  ------------------
11900|      0|        if (next_p != NULL) {
  ------------------
  |  Branch (11900:13): [True: 0, False: 0]
  ------------------
11901|      0|            *next_p = p;
11902|      0|        }
11903|      0|        return 0;
11904|      0|    }
11905|       |    /* We may end up clearing live exceptions below, so make sure it's ours. */
11906|  5.82k|    assert(!PyErr_Occurred());
  ------------------
  |  Branch (11906:5): [True: 5.82k, False: 0]
  ------------------
11907|  8.17k|    do {
11908|       |        /* Use faster uncached lookup as we won't get any cache hits during type setup. */
11909|  8.17k|        _PyStackRef descr_ref;
11910|  8.17k|        int res = find_name_in_mro(type, p->name_strobj, &descr_ref);
11911|  8.17k|        if (res <= 0) {
  ------------------
  |  Branch (11911:13): [True: 6.48k, False: 1.69k]
  ------------------
11912|  6.48k|            if (ptr == (void**)&type->tp_iternext) {
  ------------------
  |  Branch (11912:17): [True: 81, False: 6.40k]
  ------------------
11913|     81|                specific = (void *)_PyObject_NextNotImplemented;
11914|     81|            }
11915|  6.48k|            continue;
11916|  6.48k|        }
11917|  1.69k|        descr = PyStackRef_AsPyObjectBorrow(descr_ref);
11918|  1.69k|        if (Py_IS_TYPE(descr, &PyWrapperDescr_Type) &&
  ------------------
  |  |  215|  3.39k|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|  1.69k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.69k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 1.33k, False: 360]
  |  |  ------------------
  ------------------
11919|  1.33k|            ((PyWrapperDescrObject *)descr)->d_base->name_strobj == p->name_strobj) {
  ------------------
  |  Branch (11919:13): [True: 1.33k, False: 0]
  ------------------
11920|  1.33k|            void **tptr;
11921|  1.33k|            size_t index = (p - slotdefs);
11922|  1.33k|            if (slotdefs_dups[index][0] > 1) {
  ------------------
  |  Branch (11922:17): [True: 548, False: 789]
  ------------------
11923|    548|                tptr = NULL;
11924|  1.63k|                for (size_t i = 1; i <= slotdefs_dups[index][0]; i++) {
  ------------------
  |  Branch (11924:36): [True: 1.09k, False: 537]
  ------------------
11925|  1.09k|                    pytype_slotdef *q = &slotdefs[slotdefs_dups[index][i]];
11926|  1.09k|                    void **qptr = slotptr(type, q->offset);
11927|  1.09k|                    if (qptr == NULL || *qptr == NULL)
  ------------------
  |  Branch (11927:25): [True: 0, False: 1.09k]
  |  Branch (11927:41): [True: 537, False: 559]
  ------------------
11928|    537|                        continue;
11929|    559|                    if (tptr != NULL) {
  ------------------
  |  Branch (11929:25): [True: 11, False: 548]
  ------------------
11930|     11|                        tptr = NULL;
11931|     11|                        break;
11932|     11|                    }
11933|    548|                    tptr = qptr;
11934|    548|                }
11935|    548|            }
11936|    789|            else {
11937|    789|                tptr = slotptr(type, offset);
11938|    789|            }
11939|       |
11940|  1.33k|            if (tptr == NULL || tptr == ptr)
  ------------------
  |  Branch (11940:17): [True: 11, False: 1.32k]
  |  Branch (11940:33): [True: 1.05k, False: 269]
  ------------------
11941|  1.06k|                generic = p->function;
11942|  1.33k|            d = (PyWrapperDescrObject *)descr;
11943|  1.33k|            if ((specific == NULL || specific == d->d_wrapped) &&
  ------------------
  |  Branch (11943:18): [True: 837, False: 500]
  |  Branch (11943:38): [True: 500, False: 0]
  ------------------
11944|  1.33k|                d->d_base->wrapper == p->wrapper &&
  ------------------
  |  Branch (11944:17): [True: 1.06k, False: 271]
  ------------------
11945|  1.06k|                is_subtype_with_mro(lookup_tp_mro(type), type, PyDescr_TYPE(d)))
  ------------------
  |  |   35|  1.06k|#define PyDescr_TYPE(x) (((PyDescrObject *)(x))->d_type)
  ------------------
  |  Branch (11945:17): [True: 1.06k, False: 0]
  ------------------
11946|  1.06k|            {
11947|  1.06k|                specific = d->d_wrapped;
11948|  1.06k|            }
11949|    271|            else {
11950|       |                /* We cannot use the specific slot function because either
11951|       |                   - it is not unique: there are multiple methods for this
11952|       |                     slot and they conflict
11953|       |                   - the signature is wrong (as checked by the ->wrapper
11954|       |                     comparison above)
11955|       |                   - it's wrapping the wrong class
11956|       |                 */
11957|    271|                use_generic = 1;
11958|    271|            }
11959|  1.33k|        }
11960|    360|        else if (Py_IS_TYPE(descr, &PyCFunction_Type) &&
  ------------------
  |  |  215|    720|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|    360|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    360|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 82, False: 278]
  |  |  ------------------
  ------------------
11961|     82|                 PyCFunction_GET_FUNCTION(descr) ==
  ------------------
  |  |   43|     82|#define PyCFunction_GET_FUNCTION(func) PyCFunction_GET_FUNCTION(_PyObject_CAST(func))
  |  |  ------------------
  |  |  |  |  171|     82|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     82|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (11961:18): [True: 82, False: 0]
  ------------------
11962|    360|                 _PyCFunction_CAST(tp_new_wrapper) &&
  ------------------
  |  |   53|    360|    _Py_FUNC_CAST(PyCFunction, func)
  |  |  ------------------
  |  |  |  |   47|     82|#define _Py_FUNC_CAST(T, func) _Py_CAST(T, _Py_CAST(void(*)(void), (func)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    442|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11963|     82|                 ptr == (void**)&type->tp_new)
  ------------------
  |  Branch (11963:18): [True: 82, False: 0]
  ------------------
11964|     82|        {
11965|       |            /* The __new__ wrapper is not a wrapper descriptor,
11966|       |               so must be special-cased differently.
11967|       |               If we don't do this, creating an instance will
11968|       |               always use slot_tp_new which will look up
11969|       |               __new__ in the MRO which will call tp_new_wrapper
11970|       |               which will look through the base classes looking
11971|       |               for a static base and call its tp_new (usually
11972|       |               PyType_GenericNew), after performing various
11973|       |               sanity checks and constructing a new argument
11974|       |               list.  Cut all that nonsense short -- this speeds
11975|       |               up instance creation tremendously. */
11976|     82|            specific = (void *)type->tp_new;
11977|       |            /* XXX I'm not 100% sure that there isn't a hole
11978|       |               in this reasoning that requires additional
11979|       |               sanity checks.  I'll buy the first person to
11980|       |               point out a bug in this reasoning a beer. */
11981|     82|        }
11982|    278|        else if (descr == Py_None &&
  ------------------
  |  |  616|    556|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (11982:18): [True: 9, False: 269]
  ------------------
11983|      9|                 ptr == (void**)&type->tp_hash) {
  ------------------
  |  Branch (11983:18): [True: 9, False: 0]
  ------------------
11984|       |            /* We specifically allow __hash__ to be set to None
11985|       |               to prevent inheritance of the default
11986|       |               implementation from object.__hash__ */
11987|      9|            specific = (void *)PyObject_HashNotImplemented;
11988|      9|        }
11989|    269|        else {
11990|    269|            use_generic = 1;
11991|    269|            if (generic == NULL && Py_IS_TYPE(descr, &PyMethodDescr_Type) &&
  ------------------
  |  |  215|    483|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|    214|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    214|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 2, False: 212]
  |  |  ------------------
  ------------------
  |  Branch (11991:17): [True: 214, False: 55]
  ------------------
11992|      2|                *ptr == ((PyMethodDescrObject *)descr)->d_method->ml_meth)
  ------------------
  |  Branch (11992:17): [True: 1, False: 1]
  ------------------
11993|      1|            {
11994|      1|                generic = *ptr;
11995|      1|            }
11996|    268|            else {
11997|    268|                generic = p->function;
11998|    268|            }
11999|    269|            if (p->function == slot_tp_call) {
  ------------------
  |  Branch (11999:17): [True: 4, False: 265]
  ------------------
12000|       |                /* A generic __call__ is incompatible with vectorcall */
12001|      4|                if (queued_updates == NULL) {
  ------------------
  |  Branch (12001:21): [True: 4, False: 0]
  ------------------
12002|      4|                    type_clear_flags(type, Py_TPFLAGS_HAVE_VECTORCALL);
  ------------------
  |  |  510|      4|#define Py_TPFLAGS_HAVE_VECTORCALL (1UL << 11)
  ------------------
12003|      4|                }
12004|      4|            }
12005|    269|        }
12006|  1.69k|        PyStackRef_CLOSE(descr_ref);
12007|  8.17k|    } while ((++p)->offset == offset);
  ------------------
  |  Branch (12007:14): [True: 2.34k, False: 5.82k]
  ------------------
12008|       |
12009|  5.82k|    void *slot_value;
12010|  5.82k|    if (specific && !use_generic) {
  ------------------
  |  Branch (12010:9): [True: 738, False: 5.09k]
  |  Branch (12010:21): [True: 718, False: 20]
  ------------------
12011|    718|        slot_value = specific;
12012|  5.11k|    } else {
12013|  5.11k|        slot_value = generic;
12014|  5.11k|    }
12015|       |
12016|       |#ifdef Py_GIL_DISABLED
12017|       |    if (queued_updates != NULL) {
12018|       |        // queue the update to perform later, while world is stopped
12019|       |        if (queue_slot_update(queued_updates, type, ptr, slot_value) < 0) {
12020|       |            return -1;
12021|       |        }
12022|       |    } else {
12023|       |        // do the update to the type structure now
12024|       |        *ptr = slot_value;
12025|       |    }
12026|       |#else
12027|       |    // always do the update immediately
12028|  5.82k|    assert(queued_updates == NULL);
  ------------------
  |  Branch (12028:5): [True: 5.82k, False: 0]
  ------------------
12029|  5.82k|    *ptr = slot_value;
12030|  5.82k|#endif
12031|       |
12032|  5.82k|    if (next_p != NULL) {
  ------------------
  |  Branch (12032:9): [True: 5.82k, False: 0]
  ------------------
12033|  5.82k|        *next_p = p;
12034|  5.82k|    }
12035|  5.82k|    return 0;
12036|  5.82k|}
typeobject.c:slotptr:
11764|  38.1k|{
11765|  38.1k|    char *ptr;
11766|  38.1k|    long offset = ioffset;
11767|       |
11768|       |    /* Note: this depends on the order of the members of PyHeapTypeObject! */
11769|  38.1k|    assert(offset >= 0);
  ------------------
  |  Branch (11769:5): [True: 38.1k, False: 0]
  ------------------
11770|  38.1k|    assert((size_t)offset < offsetof(PyHeapTypeObject, ht_name));
  ------------------
  |  Branch (11770:5): [True: 38.1k, False: 0]
  ------------------
11771|  38.1k|    if ((size_t)offset >= offsetof(PyHeapTypeObject, as_buffer)) {
  ------------------
  |  Branch (11771:9): [True: 848, False: 37.2k]
  ------------------
11772|    848|        ptr = (char *)type->tp_as_buffer;
11773|    848|        offset -= offsetof(PyHeapTypeObject, as_buffer);
11774|    848|    }
11775|  37.2k|    else if ((size_t)offset >= offsetof(PyHeapTypeObject, as_sequence)) {
  ------------------
  |  Branch (11775:14): [True: 4.11k, False: 33.1k]
  ------------------
11776|  4.11k|        ptr = (char *)type->tp_as_sequence;
11777|  4.11k|        offset -= offsetof(PyHeapTypeObject, as_sequence);
11778|  4.11k|    }
11779|  33.1k|    else if ((size_t)offset >= offsetof(PyHeapTypeObject, as_mapping)) {
  ------------------
  |  Branch (11779:14): [True: 1.65k, False: 31.5k]
  ------------------
11780|  1.65k|        ptr = (char *)type->tp_as_mapping;
11781|  1.65k|        offset -= offsetof(PyHeapTypeObject, as_mapping);
11782|  1.65k|    }
11783|  31.5k|    else if ((size_t)offset >= offsetof(PyHeapTypeObject, as_number)) {
  ------------------
  |  Branch (11783:14): [True: 19.6k, False: 11.8k]
  ------------------
11784|  19.6k|        ptr = (char *)type->tp_as_number;
11785|  19.6k|        offset -= offsetof(PyHeapTypeObject, as_number);
11786|  19.6k|    }
11787|  11.8k|    else if ((size_t)offset >= offsetof(PyHeapTypeObject, as_async)) {
  ------------------
  |  Branch (11787:14): [True: 1.26k, False: 10.6k]
  ------------------
11788|  1.26k|        ptr = (char *)type->tp_as_async;
11789|  1.26k|        offset -= offsetof(PyHeapTypeObject, as_async);
11790|  1.26k|    }
11791|  10.6k|    else {
11792|  10.6k|        ptr = (char *)type;
11793|  10.6k|    }
11794|  38.1k|    if (ptr != NULL)
  ------------------
  |  Branch (11794:9): [True: 25.4k, False: 12.7k]
  ------------------
11795|  25.4k|        ptr += offset;
11796|  38.1k|    return (void **)ptr;
11797|  38.1k|}
typeobject.c:tp_new_wrapper:
10383|     62|{
10384|     62|    PyTypeObject *staticbase;
10385|     62|    PyObject *arg0, *res;
10386|       |
10387|     62|    if (self == NULL || !PyType_Check(self)) {
  ------------------
  |  |  766|     62|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     62|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     62|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (10387:9): [True: 0, False: 62]
  |  Branch (10387:25): [True: 0, False: 62]
  ------------------
10388|      0|        PyErr_Format(PyExc_SystemError,
10389|      0|                     "__new__() called with non-type 'self'");
10390|      0|        return NULL;
10391|      0|    }
10392|     62|    PyTypeObject *type = (PyTypeObject *)self;
10393|       |
10394|     62|    if (nargs < 1) {
  ------------------
  |  Branch (10394:9): [True: 0, False: 62]
  ------------------
10395|      0|        PyErr_Format(PyExc_TypeError,
10396|      0|                     "%s.__new__(): not enough arguments",
10397|      0|                     type->tp_name);
10398|      0|        return NULL;
10399|      0|    }
10400|     62|    arg0 = args[0];
10401|     62|    if (!PyType_Check(arg0)) {
  ------------------
  |  |  766|     62|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     62|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     62|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (10401:9): [True: 0, False: 62]
  ------------------
10402|      0|        PyErr_Format(PyExc_TypeError,
10403|      0|                     "%s.__new__(X): X is not a type object (%s)",
10404|      0|                     type->tp_name,
10405|      0|                     Py_TYPE(arg0)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10406|      0|        return NULL;
10407|      0|    }
10408|     62|    PyTypeObject *subtype = (PyTypeObject *)arg0;
10409|       |
10410|     62|    if (!PyType_IsSubtype(subtype, type)) {
  ------------------
  |  Branch (10410:9): [True: 0, False: 62]
  ------------------
10411|      0|        PyErr_Format(PyExc_TypeError,
10412|      0|                     "%s.__new__(%s): %s is not a subtype of %s",
10413|      0|                     type->tp_name,
10414|      0|                     subtype->tp_name,
10415|      0|                     subtype->tp_name,
10416|      0|                     type->tp_name);
10417|      0|        return NULL;
10418|      0|    }
10419|       |
10420|       |    /* Check that the use doesn't do something silly and unsafe like
10421|       |       object.__new__(dict).  To do this, we check that the
10422|       |       most derived base that's not a heap type is this type. */
10423|     62|    staticbase = subtype;
10424|    123|    while (staticbase && (staticbase->tp_new == slot_tp_new))
  ------------------
  |  Branch (10424:12): [True: 123, False: 0]
  |  Branch (10424:26): [True: 61, False: 62]
  ------------------
10425|     61|        staticbase = staticbase->tp_base;
10426|       |    /* If staticbase is NULL now, it is a really weird type.
10427|       |       In the spirit of backwards compatibility (?), just shut up. */
10428|     62|    if (staticbase && staticbase->tp_new != type->tp_new) {
  ------------------
  |  Branch (10428:9): [True: 62, False: 0]
  |  Branch (10428:23): [True: 0, False: 62]
  ------------------
10429|      0|        if (staticbase->tp_new == NULL) {
  ------------------
  |  Branch (10429:13): [True: 0, False: 0]
  ------------------
10430|      0|            PyErr_Format(PyExc_TypeError,
10431|      0|                         "cannot create '%s' instances", subtype->tp_name);
10432|      0|            return NULL;
10433|      0|        }
10434|      0|        PyErr_Format(PyExc_TypeError,
10435|      0|                     "%s.__new__(%s) is not safe, use %s.__new__()",
10436|      0|                     type->tp_name,
10437|      0|                     subtype->tp_name,
10438|      0|                     staticbase->tp_name);
10439|      0|        return NULL;
10440|      0|    }
10441|       |
10442|     62|    PyObject *args_tuple = PyTuple_FromArray(args + 1, nargs - 1);
10443|     62|    if (args_tuple == NULL) {
  ------------------
  |  Branch (10443:9): [True: 0, False: 62]
  ------------------
10444|      0|        return NULL;
10445|      0|    }
10446|     62|    PyObject *kwds = NULL;
10447|     62|    if (kwnames != NULL) {
  ------------------
  |  Branch (10447:9): [True: 0, False: 62]
  ------------------
10448|      0|        kwds = _PyStack_AsDict(args + nargs, kwnames);
10449|      0|        if (kwds == NULL) {
  ------------------
  |  Branch (10449:13): [True: 0, False: 0]
  ------------------
10450|      0|            Py_DECREF(args_tuple);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10451|      0|            return NULL;
10452|      0|        }
10453|      0|    }
10454|     62|    res = type->tp_new(subtype, args_tuple, kwds);
10455|     62|    Py_DECREF(args_tuple);
  ------------------
  |  |  430|     62|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     62|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     62|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10456|     62|    Py_XDECREF(kwds);
  ------------------
  |  |  524|     62|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     62|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     62|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10457|     62|    return res;
10458|     62|}
typeobject.c:slot_tp_new:
11167|     60|{
11168|     60|    PyThreadState *tstate = _PyThreadState_GET();
11169|     60|    PyObject *result;
11170|       |
11171|     60|    _PyCStackRef func_ref;
11172|     60|    _PyThreadState_PushCStackRef(tstate, &func_ref);
11173|     60|    func_ref.ref = _PyObject_GetAttrStackRef((PyObject *)type, &_Py_ID(__new__));
  ------------------
  |  |  917|     60|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     60|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     60|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11174|     60|    if (PyStackRef_IsNull(func_ref.ref)) {
  ------------------
  |  |  470|     60|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  ------------------
  |  |  |  |  467|     60|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     60|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (470:32): [True: 0, False: 60]
  |  |  ------------------
  ------------------
11175|      0|        _PyThreadState_PopCStackRef(tstate, &func_ref);
11176|      0|        return NULL;
11177|      0|    }
11178|       |
11179|     60|    PyObject *func = PyStackRef_AsPyObjectBorrow(func_ref.ref);
11180|     60|    result = _PyObject_Call_Prepend(tstate, func, (PyObject *)type, args, kwds);
11181|     60|    _PyThreadState_PopCStackRef(tstate, &func_ref);
11182|     60|    return result;
11183|     60|}
typeobject.c:call_method:
 3086|     84|{
 3087|     84|    PyThreadState *tstate = _PyThreadState_GET();
 3088|     84|    _PyCStackRef cref;
 3089|     84|    _PyThreadState_PushCStackRef(tstate, &cref);
 3090|     84|    PyObject *res = NULL;
 3091|     84|    int unbound = lookup_method(self, attr, &cref.ref);
 3092|     84|    if (unbound >= 0) {
  ------------------
  |  Branch (3092:9): [True: 84, False: 0]
  ------------------
 3093|     84|        PyObject *meth = PyStackRef_AsPyObjectBorrow(cref.ref);
 3094|     84|        if (unbound) {
  ------------------
  |  Branch (3094:13): [True: 84, False: 0]
  ------------------
 3095|     84|            res = _PyObject_Call_Prepend(tstate, meth, self, args, kwds);
 3096|     84|        }
 3097|      0|        else {
 3098|      0|            res = _PyObject_Call(tstate, meth, args, kwds);
 3099|      0|        }
 3100|     84|    }
 3101|     84|    _PyThreadState_PopCStackRef(tstate, &cref);
 3102|     84|    return res;
 3103|     84|}
typeobject.c:lookup_method:
 3035|    116|{
 3036|    116|    return lookup_method_ex(self, attr, out, 1);
 3037|    116|}
typeobject.c:type_traverse:
 7168|    136|{
 7169|    136|    PyTypeObject *type = PyTypeObject_CAST(self);
  ------------------
  |  |  200|    136|#define PyTypeObject_CAST(op)   ((PyTypeObject *)(op))
  ------------------
 7170|       |
 7171|       |    /* Because of type_is_gc(), the collector only calls this
 7172|       |       for heaptypes. */
 7173|    136|    if (!(type->tp_flags & Py_TPFLAGS_HEAPTYPE)) {
  ------------------
  |  |  503|    136|#define Py_TPFLAGS_HEAPTYPE (1UL << 9)
  ------------------
  |  Branch (7173:9): [True: 0, False: 136]
  ------------------
 7174|      0|        char msg[200];
 7175|      0|        sprintf(msg, "type_traverse() called on non-heap type '%.100s'",
 7176|      0|                type->tp_name);
 7177|      0|        _PyObject_ASSERT_FAILED_MSG((PyObject *)type, msg);
  ------------------
  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  ------------------
 7178|      0|    }
 7179|       |
 7180|    136|    Py_VISIT(type->tp_dict);
  ------------------
  |  |  194|    136|    do {                                                                \
  |  |  195|    136|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 136, False: 0]
  |  |  ------------------
  |  |  196|    136|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|    136|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    136|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|    136|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 136]
  |  |  ------------------
  |  |  198|    136|                return vret;                                            \
  |  |  199|    136|        }                                                               \
  |  |  200|    136|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 136]
  |  |  ------------------
  ------------------
 7181|    136|    Py_VISIT(type->tp_cache);
  ------------------
  |  |  194|    136|    do {                                                                \
  |  |  195|    136|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 0, False: 136]
  |  |  ------------------
  |  |  196|      0|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      0|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 0]
  |  |  ------------------
  |  |  198|      0|                return vret;                                            \
  |  |  199|      0|        }                                                               \
  |  |  200|    136|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 136]
  |  |  ------------------
  ------------------
 7182|    136|    Py_VISIT(type->tp_mro);
  ------------------
  |  |  194|    136|    do {                                                                \
  |  |  195|    136|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 136, False: 0]
  |  |  ------------------
  |  |  196|    136|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|    136|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    136|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|    136|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 136]
  |  |  ------------------
  |  |  198|    136|                return vret;                                            \
  |  |  199|    136|        }                                                               \
  |  |  200|    136|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 136]
  |  |  ------------------
  ------------------
 7183|    136|    Py_VISIT(type->tp_bases);
  ------------------
  |  |  194|    136|    do {                                                                \
  |  |  195|    136|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 136, False: 0]
  |  |  ------------------
  |  |  196|    136|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|    136|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    136|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|    136|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 136]
  |  |  ------------------
  |  |  198|    136|                return vret;                                            \
  |  |  199|    136|        }                                                               \
  |  |  200|    136|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 136]
  |  |  ------------------
  ------------------
 7184|    136|    Py_VISIT(type->tp_base);
  ------------------
  |  |  194|    136|    do {                                                                \
  |  |  195|    136|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 136, False: 0]
  |  |  ------------------
  |  |  196|    136|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|    136|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    136|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|    136|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 136]
  |  |  ------------------
  |  |  198|    136|                return vret;                                            \
  |  |  199|    136|        }                                                               \
  |  |  200|    136|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 136]
  |  |  ------------------
  ------------------
 7185|    136|    Py_VISIT(((PyHeapTypeObject *)type)->ht_module);
  ------------------
  |  |  194|    136|    do {                                                                \
  |  |  195|    136|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 40, False: 96]
  |  |  ------------------
  |  |  196|     40|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|     40|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     40|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|     40|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 40]
  |  |  ------------------
  |  |  198|     40|                return vret;                                            \
  |  |  199|     40|        }                                                               \
  |  |  200|    136|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 136]
  |  |  ------------------
  ------------------
 7186|       |
 7187|       |    /* There's no need to visit others because they can't be involved
 7188|       |       in cycles:
 7189|       |       type->tp_subclasses is a list of weak references,
 7190|       |       ((PyHeapTypeObject *)type)->ht_slots is a tuple of strings,
 7191|       |       ((PyHeapTypeObject *)type)->ht_*name are strings.
 7192|       |       */
 7193|       |
 7194|    136|    return 0;
 7195|    136|}
typeobject.c:type_mro_impl:
 3532|     29|{
 3533|     29|    PyObject *seq;
 3534|     29|    seq = mro_implementation(self);
 3535|     29|    if (seq != NULL && !PyList_Check(seq)) {
  ------------------
  |  |   25|     29|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LIST_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     29|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (3535:9): [True: 29, False: 0]
  |  Branch (3535:24): [True: 24, False: 5]
  ------------------
 3536|     24|        Py_SETREF(seq, PySequence_List(seq));
  ------------------
  |  |  352|     24|    do { \
  |  |  353|     24|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|     24|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  354|     24|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|     24|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  355|     24|        *_tmp_dst_ptr = (src); \
  |  |  356|     24|        Py_DECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  430|     24|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     24|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     24|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  357|     24|    } while (0)
  |  |  ------------------
  |  |  |  Branch (357:14): [Folded, False: 24]
  |  |  ------------------
  ------------------
 3537|     24|    }
 3538|     29|    return seq;
 3539|     29|}
typeobject.c:mro_implementation:
 3515|     29|{
 3516|     29|    PyObject *mro;
 3517|     29|    BEGIN_TYPE_LOCK();
 3518|     29|    mro = mro_implementation_unlocked(type);
 3519|     29|    END_TYPE_LOCK();
 3520|     29|    return mro;
 3521|     29|}
typeobject.c:mro_implementation_unlocked:
 3427|    333|{
 3428|    333|    ASSERT_TYPE_LOCK_HELD();
 3429|       |
 3430|    333|    if (!_PyType_IsReady(type)) {
  ------------------
  |  Branch (3430:9): [True: 0, False: 333]
  ------------------
 3431|      0|        if (PyType_Ready(type) < 0)
  ------------------
  |  Branch (3431:13): [True: 0, False: 0]
  ------------------
 3432|      0|            return NULL;
 3433|      0|    }
 3434|       |
 3435|    333|    PyObject *bases = lookup_tp_bases(type);
 3436|    333|    Py_ssize_t n = PyTuple_GET_SIZE(bases);
  ------------------
  |  |   27|    333|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    333|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    333|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3437|    677|    for (Py_ssize_t i = 0; i < n; i++) {
  ------------------
  |  Branch (3437:28): [True: 344, False: 333]
  ------------------
 3438|    688|        PyTypeObject *base = _PyType_CAST(PyTuple_GET_ITEM(bases, i));
  ------------------
  |  |  770|    344|    (assert(PyType_Check(op)), _Py_CAST(PyTypeObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|    688|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (37:38): [True: 344, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3438:30): [True: 344, False: 0]
  |  Branch (3438:30): [True: 344, False: 0]
  ------------------
 3439|    344|        if (lookup_tp_mro(base) == NULL) {
  ------------------
  |  Branch (3439:13): [True: 0, False: 344]
  ------------------
 3440|      0|            PyErr_Format(PyExc_TypeError,
 3441|      0|                         "Cannot extend an incomplete type '%.100s'",
 3442|      0|                         base->tp_name);
 3443|      0|            return NULL;
 3444|      0|        }
 3445|    688|        assert(PyTuple_Check(lookup_tp_mro(base)));
  ------------------
  |  Branch (3445:9): [True: 344, False: 0]
  ------------------
 3446|    344|    }
 3447|       |
 3448|    333|    if (n == 1) {
  ------------------
  |  Branch (3448:9): [True: 321, False: 12]
  ------------------
 3449|       |        /* Fast path: if there is a single base, constructing the MRO
 3450|       |         * is trivial.
 3451|       |         */
 3452|    642|        PyTypeObject *base = _PyType_CAST(PyTuple_GET_ITEM(bases, 0));
  ------------------
  |  |  770|    321|    (assert(PyType_Check(op)), _Py_CAST(PyTypeObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|    642|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (37:38): [True: 321, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3452:30): [True: 321, False: 0]
  |  Branch (3452:30): [True: 321, False: 0]
  ------------------
 3453|      0|        PyObject *base_mro = lookup_tp_mro(base);
 3454|    642|        assert(base_mro != NULL);
  ------------------
  |  Branch (3454:9): [True: 321, False: 0]
  ------------------
 3455|    321|        Py_ssize_t k = PyTuple_GET_SIZE(base_mro);
  ------------------
  |  |   27|    321|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    321|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    321|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3456|    321|        PyObject *result = PyTuple_New(k + 1);
 3457|    321|        if (result == NULL) {
  ------------------
  |  Branch (3457:13): [True: 0, False: 321]
  ------------------
 3458|      0|            return NULL;
 3459|      0|        }
 3460|       |
 3461|    321|        ;
 3462|    321|        PyTuple_SET_ITEM(result, 0, Py_NewRef(type));
  ------------------
  |  |   40|    321|    PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|    321|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    321|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|    321|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    321|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3463|    955|        for (Py_ssize_t i = 0; i < k; i++) {
  ------------------
  |  Branch (3463:32): [True: 634, False: 321]
  ------------------
 3464|    634|            PyObject *cls = PyTuple_GET_ITEM(base_mro, i);
  ------------------
  |  |   29|    634|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|    634|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    634|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3464:29): [True: 634, False: 0]
  ------------------
 3465|    634|            PyTuple_SET_ITEM(result, i + 1, Py_NewRef(cls));
  ------------------
  |  |   40|    634|    PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|    634|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    634|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|    634|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    634|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3466|    634|        }
 3467|    321|        return result;
 3468|    321|    }
 3469|       |
 3470|       |    /* This is just a basic sanity check. */
 3471|     12|    if (check_duplicates(bases) < 0) {
  ------------------
  |  Branch (3471:9): [True: 0, False: 12]
  ------------------
 3472|      0|        return NULL;
 3473|      0|    }
 3474|       |
 3475|       |    /* Find a superclass linearization that honors the constraints
 3476|       |       of the explicit tuples of bases and the constraints implied by
 3477|       |       each base class.
 3478|       |
 3479|       |       to_merge is an array of tuples, where each tuple is a superclass
 3480|       |       linearization implied by a base class.  The last element of
 3481|       |       to_merge is the declared tuple of bases.
 3482|       |    */
 3483|     12|    PyObject **to_merge = PyMem_New(PyObject *, n + 1);
  ------------------
  |  |   64|     12|  ( ((size_t)(n) > PY_SSIZE_T_MAX / sizeof(type)) ? NULL :      \
  |  |  ------------------
  |  |  |  |  137|     12|#   define PY_SSIZE_T_MAX SSIZE_MAX
  |  |  ------------------
  |  |  |  Branch (64:5): [True: 0, False: 12]
  |  |  ------------------
  |  |   65|     12|        ( (type *) PyMem_Malloc((n) * sizeof(type)) ) )
  ------------------
 3484|     12|    if (to_merge == NULL) {
  ------------------
  |  Branch (3484:9): [True: 0, False: 12]
  ------------------
 3485|      0|        PyErr_NoMemory();
 3486|      0|        return NULL;
 3487|      0|    }
 3488|       |
 3489|     12|    PyObject *mro_to_merge;
 3490|     35|    for (Py_ssize_t i = 0; i < n; i++) {
  ------------------
  |  Branch (3490:28): [True: 23, False: 12]
  ------------------
 3491|     46|        PyTypeObject *base = _PyType_CAST(PyTuple_GET_ITEM(bases, i));
  ------------------
  |  |  770|     23|    (assert(PyType_Check(op)), _Py_CAST(PyTypeObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|     46|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (37:38): [True: 23, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3491:30): [True: 23, False: 0]
  |  Branch (3491:30): [True: 23, False: 0]
  ------------------
 3492|      0|        mro_to_merge = lookup_tp_mro(base);
 3493|     46|        assert(mro_to_merge != NULL);
  ------------------
  |  Branch (3493:9): [True: 23, False: 0]
  ------------------
 3494|     23|        to_merge[i] = mro_to_merge;
 3495|     23|    }
 3496|     12|    to_merge[n] = bases;
 3497|       |
 3498|     12|    PyObject *result = PyList_New(1);
 3499|     12|    if (result == NULL) {
  ------------------
  |  Branch (3499:9): [True: 0, False: 12]
  ------------------
 3500|      0|        PyMem_Free(to_merge);
 3501|      0|        return NULL;
 3502|      0|    }
 3503|       |
 3504|     12|    PyList_SET_ITEM(result, 0, Py_NewRef(type));
  ------------------
  |  |   50|     12|    PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|     12|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     12|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|     12|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     12|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3505|     12|    if (pmerge(result, to_merge, n + 1) < 0) {
  ------------------
  |  Branch (3505:9): [True: 0, False: 12]
  ------------------
 3506|      0|        Py_CLEAR(result);
  ------------------
  |  |  484|      0|    do { \
  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3507|      0|    }
 3508|     12|    PyMem_Free(to_merge);
 3509|       |
 3510|     12|    return result;
 3511|     12|}
typeobject.c:check_duplicates:
 3266|     12|{
 3267|     12|    Py_ssize_t i, j, n;
 3268|       |    /* Let's use a quadratic time algorithm,
 3269|       |       assuming that the bases tuples is short.
 3270|       |    */
 3271|     12|    n = PyTuple_GET_SIZE(tuple);
  ------------------
  |  |   27|     12|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     12|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     12|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3272|     35|    for (i = 0; i < n; i++) {
  ------------------
  |  Branch (3272:17): [True: 23, False: 12]
  ------------------
 3273|     23|        PyObject *o = PyTuple_GET_ITEM(tuple, i);
  ------------------
  |  |   29|     23|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|     23|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     23|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3273:23): [True: 23, False: 0]
  ------------------
 3274|     36|        for (j = i + 1; j < n; j++) {
  ------------------
  |  Branch (3274:25): [True: 13, False: 23]
  ------------------
 3275|     26|            if (PyTuple_GET_ITEM(tuple, j) == o) {
  ------------------
  |  |   29|     13|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|     13|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     13|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3275:17): [True: 13, False: 0]
  |  Branch (3275:17): [True: 0, False: 13]
  ------------------
 3276|      0|                o = class_name(o);
 3277|      0|                if (o != NULL) {
  ------------------
  |  Branch (3277:21): [True: 0, False: 0]
  ------------------
 3278|      0|                    if (PyUnicode_Check(o)) {
  ------------------
  |  |  103|      0|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3279|      0|                        PyErr_Format(PyExc_TypeError,
 3280|      0|                                     "duplicate base class %U", o);
 3281|      0|                    }
 3282|      0|                    else {
 3283|      0|                        PyErr_SetString(PyExc_TypeError,
 3284|      0|                                        "duplicate base class");
 3285|      0|                    }
 3286|      0|                    Py_DECREF(o);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3287|      0|                }
 3288|      0|                return -1;
 3289|      0|            }
 3290|     13|        }
 3291|     23|    }
 3292|     12|    return 0;
 3293|     12|}
typeobject.c:pmerge:
 3357|     12|{
 3358|     12|    int res = 0;
 3359|     12|    Py_ssize_t i, j, empty_cnt;
 3360|     12|    Py_ssize_t *remain;
 3361|       |
 3362|       |    /* remain stores an index into each sublist of to_merge.
 3363|       |       remain[i] is the index of the next base in to_merge[i]
 3364|       |       that is not included in acc.
 3365|       |    */
 3366|     12|    remain = PyMem_New(Py_ssize_t, to_merge_size);
  ------------------
  |  |   64|     12|  ( ((size_t)(n) > PY_SSIZE_T_MAX / sizeof(type)) ? NULL :      \
  |  |  ------------------
  |  |  |  |  137|     12|#   define PY_SSIZE_T_MAX SSIZE_MAX
  |  |  ------------------
  |  |  |  Branch (64:5): [True: 0, False: 12]
  |  |  ------------------
  |  |   65|     12|        ( (type *) PyMem_Malloc((n) * sizeof(type)) ) )
  ------------------
 3367|     12|    if (remain == NULL) {
  ------------------
  |  Branch (3367:9): [True: 0, False: 12]
  ------------------
 3368|      0|        PyErr_NoMemory();
 3369|      0|        return -1;
 3370|      0|    }
 3371|     47|    for (i = 0; i < to_merge_size; i++)
  ------------------
  |  Branch (3371:17): [True: 35, False: 12]
  ------------------
 3372|     35|        remain[i] = 0;
 3373|       |
 3374|     66|  again:
 3375|     66|    empty_cnt = 0;
 3376|    125|    for (i = 0; i < to_merge_size; i++) {
  ------------------
  |  Branch (3376:17): [True: 113, False: 12]
  ------------------
 3377|    113|        PyObject *candidate;
 3378|       |
 3379|    113|        PyObject *cur_tuple = to_merge[i];
 3380|       |
 3381|    113|        if (remain[i] >= PyTuple_GET_SIZE(cur_tuple)) {
  ------------------
  |  |   27|    113|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    113|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    113|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3381:13): [True: 35, False: 78]
  ------------------
 3382|     35|            empty_cnt++;
 3383|     35|            continue;
 3384|     35|        }
 3385|       |
 3386|       |        /* Choose next candidate for MRO.
 3387|       |
 3388|       |           The input sequences alone can determine the choice.
 3389|       |           If not, choose the class which appears in the MRO
 3390|       |           of the earliest direct superclass of the new class.
 3391|       |        */
 3392|       |
 3393|     78|        candidate = PyTuple_GET_ITEM(cur_tuple, remain[i]);
  ------------------
  |  |   29|     78|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|     78|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     78|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3393:21): [True: 78, False: 0]
  ------------------
 3394|    270|        for (j = 0; j < to_merge_size; j++) {
  ------------------
  |  Branch (3394:21): [True: 216, False: 54]
  ------------------
 3395|    216|            PyObject *j_lst = to_merge[j];
 3396|    216|            if (tail_contains(j_lst, remain[j], candidate))
  ------------------
  |  Branch (3396:17): [True: 24, False: 192]
  ------------------
 3397|     24|                goto skip; /* continue outer loop */
 3398|    216|        }
 3399|     54|        res = PyList_Append(acc, candidate);
 3400|     54|        if (res < 0)
  ------------------
  |  Branch (3400:13): [True: 0, False: 54]
  ------------------
 3401|      0|            goto out;
 3402|       |
 3403|    220|        for (j = 0; j < to_merge_size; j++) {
  ------------------
  |  Branch (3403:21): [True: 166, False: 54]
  ------------------
 3404|    166|            PyObject *j_lst = to_merge[j];
 3405|    166|            if (remain[j] < PyTuple_GET_SIZE(j_lst) &&
  ------------------
  |  |   27|    332|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    166|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    166|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3405:17): [True: 135, False: 31]
  ------------------
 3406|    270|                PyTuple_GET_ITEM(j_lst, remain[j]) == candidate) {
  ------------------
  |  |   29|    135|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|    135|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    135|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3406:17): [True: 135, False: 0]
  |  Branch (3406:17): [True: 98, False: 37]
  ------------------
 3407|     98|                remain[j]++;
 3408|     98|            }
 3409|    166|        }
 3410|     54|        goto again;
 3411|     24|      skip: ;
 3412|     24|    }
 3413|       |
 3414|     12|    if (empty_cnt != to_merge_size) {
  ------------------
  |  Branch (3414:9): [True: 0, False: 12]
  ------------------
 3415|      0|        set_mro_error(to_merge, to_merge_size, remain);
 3416|      0|        res = -1;
 3417|      0|    }
 3418|       |
 3419|     12|  out:
 3420|     12|    PyMem_Free(remain);
 3421|       |
 3422|     12|    return res;
 3423|     12|}
typeobject.c:tail_contains:
 3242|    216|{
 3243|    216|    Py_ssize_t j, size;
 3244|    216|    size = PyTuple_GET_SIZE(tuple);
  ------------------
  |  |   27|    216|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    216|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    216|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3245|       |
 3246|    396|    for (j = whence+1; j < size; j++) {
  ------------------
  |  Branch (3246:24): [True: 204, False: 192]
  ------------------
 3247|    408|        if (PyTuple_GET_ITEM(tuple, j) == o)
  ------------------
  |  |   29|    204|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|    204|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    204|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3247:13): [True: 204, False: 0]
  |  Branch (3247:13): [True: 24, False: 180]
  ------------------
 3248|     24|            return 1;
 3249|    204|    }
 3250|    192|    return 0;
 3251|    216|}
typeobject.c:type___subclasses___impl:
 7026|     18|{
 7027|     18|    return _PyType_GetSubclasses(self);
 7028|     18|}
typeobject.c:type_prepare:
 7033|     84|{
 7034|     84|    return PyDict_New();
 7035|     84|}
typeobject.c:check_set_special_type_attr:
 1484|      1|{
 1485|      1|    if (!value) {
  ------------------
  |  Branch (1485:9): [True: 0, False: 1]
  ------------------
 1486|      0|        PyErr_Format(PyExc_TypeError,
 1487|      0|                     "cannot delete '%s' attribute of type '%s'",
 1488|      0|                     name, type->tp_name);
 1489|      0|        return 0;
 1490|      0|    }
 1491|      1|    if (_PyType_HasFeature(type, Py_TPFLAGS_IMMUTABLETYPE)) {
  ------------------
  |  |  500|      1|#define Py_TPFLAGS_IMMUTABLETYPE (1UL << 8)
  ------------------
  |  Branch (1491:9): [True: 0, False: 1]
  ------------------
 1492|      0|        PyErr_Format(PyExc_TypeError,
 1493|      0|                     "cannot set '%s' attribute of immutable type '%s'",
 1494|      0|                     name, type->tp_name);
 1495|      0|        return 0;
 1496|      0|    }
 1497|       |
 1498|      1|    if (PySys_Audit("object.__setattr__", "OsO",
  ------------------
  |  Branch (1498:9): [True: 0, False: 1]
  ------------------
 1499|      1|                    type, name, value) < 0) {
 1500|      0|        return 0;
 1501|      0|    }
 1502|       |
 1503|      1|    return 1;
 1504|      1|}
typeobject.c:type_get_bases:
 1754|     29|{
 1755|     29|    PyTypeObject *type = PyTypeObject_CAST(tp);
  ------------------
  |  |  200|     29|#define PyTypeObject_CAST(op)   ((PyTypeObject *)(op))
  ------------------
 1756|     29|    PyObject *bases = _PyType_GetBases(type);
 1757|     29|    if (bases == NULL) {
  ------------------
  |  Branch (1757:9): [True: 0, False: 29]
  ------------------
 1758|      0|        Py_RETURN_NONE;
  ------------------
  |  |  628|      0|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
 1759|      0|    }
 1760|     29|    return bases;
 1761|     29|}
typeobject.c:mro_internal:
 3651|    333|{
 3652|    333|    ASSERT_TYPE_LOCK_HELD();
 3653|       |
 3654|    333|    PyObject *new_mro, *old_mro;
 3655|    333|    int reent;
 3656|       |
 3657|       |    /* Keep a reference to be able to do a reentrancy check below.
 3658|       |       Don't let old_mro be GC'ed and its address be reused for
 3659|       |       another object, like (suddenly!) a new tp_mro.  */
 3660|    333|    old_mro = Py_XNewRef(lookup_tp_mro(type));
  ------------------
  |  |  551|    333|#  define Py_XNewRef(obj) _Py_XNewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    333|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    333|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3661|    333|    new_mro = mro_invoke(type);  /* might cause reentrance */
 3662|    333|    reent = (lookup_tp_mro(type) != old_mro);
 3663|    333|    Py_XDECREF(old_mro);
  ------------------
  |  |  524|    333|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    333|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    333|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3664|    333|    if (new_mro == NULL) {
  ------------------
  |  Branch (3664:9): [True: 0, False: 333]
  ------------------
 3665|      0|        return -1;
 3666|      0|    }
 3667|       |
 3668|    333|    if (reent) {
  ------------------
  |  Branch (3668:9): [True: 0, False: 333]
  ------------------
 3669|      0|        Py_DECREF(new_mro);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3670|      0|        return 0;
 3671|      0|    }
 3672|       |
 3673|    333|    set_tp_mro(type, new_mro, initial);
 3674|       |
 3675|    333|    type_mro_modified(type, new_mro);
 3676|       |    /* corner case: the super class might have been hidden
 3677|       |       from the custom MRO */
 3678|    333|    type_mro_modified(type, lookup_tp_bases(type));
 3679|       |
 3680|       |    // XXX Expand this to Py_TPFLAGS_IMMUTABLETYPE?
 3681|    333|    if (!(type->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN)) {
  ------------------
  |  |  467|    333|#define _Py_TPFLAGS_STATIC_BUILTIN (1 << 1)
  ------------------
  |  Branch (3681:9): [True: 126, False: 207]
  ------------------
 3682|    126|        type_modified_unlocked(type);
 3683|    126|    }
 3684|    207|    else {
 3685|       |        /* For static builtin types, this is only called during init
 3686|       |           before the method cache has been populated. */
 3687|    207|        assert(type->tp_version_tag);
  ------------------
  |  Branch (3687:9): [True: 207, False: 0]
  ------------------
 3688|    207|    }
 3689|       |
 3690|    333|    if (p_old_mro != NULL)
  ------------------
  |  Branch (3690:9): [True: 0, False: 333]
  ------------------
 3691|      0|        *p_old_mro = old_mro;  /* transfer the ownership */
 3692|    333|    else
 3693|    333|        Py_XDECREF(old_mro);
  ------------------
  |  |  524|    333|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    333|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    333|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3694|       |
 3695|    333|    return 1;
 3696|    333|}
typeobject.c:mro_invoke:
 3587|    333|{
 3588|    333|    PyObject *mro_result;
 3589|    333|    PyObject *new_mro;
 3590|       |
 3591|    333|    ASSERT_TYPE_LOCK_HELD();
 3592|       |
 3593|    333|    const int custom = !Py_IS_TYPE(type, &PyType_Type);
  ------------------
  |  |  215|    333|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|    333|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    333|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3594|       |
 3595|    333|    if (custom) {
  ------------------
  |  Branch (3595:9): [True: 29, False: 304]
  ------------------
 3596|       |        // Custom mro() method on metaclass.  This is potentially re-entrant.
 3597|       |        // We are called either from type_ready() or from type_set_bases().
 3598|     29|        mro_result = call_method_noarg((PyObject *)type, &_Py_ID(mro));
  ------------------
  |  |  917|     29|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     29|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     29|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3599|     29|    }
 3600|    304|    else {
 3601|       |        // In this case, the mro() method on the type object is being used and
 3602|       |        // we know that these calls are not re-entrant.
 3603|    304|        mro_result = mro_implementation_unlocked(type);
 3604|    304|    }
 3605|    333|    if (mro_result == NULL)
  ------------------
  |  Branch (3605:9): [True: 0, False: 333]
  ------------------
 3606|      0|        return NULL;
 3607|       |
 3608|    333|    new_mro = PySequence_Tuple(mro_result);
 3609|    333|    Py_DECREF(mro_result);
  ------------------
  |  |  430|    333|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    333|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    333|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3610|    333|    if (new_mro == NULL) {
  ------------------
  |  Branch (3610:9): [True: 0, False: 333]
  ------------------
 3611|      0|        return NULL;
 3612|      0|    }
 3613|       |
 3614|    333|    if (PyTuple_GET_SIZE(new_mro) == 0) {
  ------------------
  |  |   27|    333|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    333|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    333|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3614:9): [True: 0, False: 333]
  ------------------
 3615|      0|        Py_DECREF(new_mro);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3616|      0|        PyErr_Format(PyExc_TypeError, "type MRO must not be empty");
 3617|      0|        return NULL;
 3618|      0|    }
 3619|       |
 3620|    333|    if (custom && mro_check(type, new_mro) < 0) {
  ------------------
  |  Branch (3620:9): [True: 29, False: 304]
  |  Branch (3620:19): [True: 0, False: 29]
  ------------------
 3621|      0|        Py_DECREF(new_mro);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3622|      0|        return NULL;
 3623|      0|    }
 3624|    333|    return new_mro;
 3625|    333|}
typeobject.c:call_method_noarg:
 3070|     29|{
 3071|     29|    PyThreadState *tstate = _PyThreadState_GET();
 3072|     29|    _PyCStackRef cref;
 3073|     29|    _PyThreadState_PushCStackRef(tstate, &cref);
 3074|     29|    PyObject *res = NULL;
 3075|     29|    int unbound = lookup_method(self, attr, &cref.ref);
 3076|     29|    if (unbound >= 0) {
  ------------------
  |  Branch (3076:9): [True: 29, False: 0]
  ------------------
 3077|     29|        PyObject *func = PyStackRef_AsPyObjectBorrow(cref.ref);
 3078|     29|        res = call_unbound_noarg(unbound, func, self);
 3079|     29|    }
 3080|     29|    _PyThreadState_PopCStackRef(tstate, &cref);
 3081|     29|    return res;
 3082|     29|}
typeobject.c:mro_check:
 3543|     29|{
 3544|     29|    PyTypeObject *solid;
 3545|     29|    Py_ssize_t i, n;
 3546|       |
 3547|     29|    solid = solid_base(type);
 3548|       |
 3549|     29|    n = PyTuple_GET_SIZE(mro);
  ------------------
  |  |   27|     29|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     29|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     29|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3550|    158|    for (i = 0; i < n; i++) {
  ------------------
  |  Branch (3550:17): [True: 129, False: 29]
  ------------------
 3551|    129|        PyObject *obj = PyTuple_GET_ITEM(mro, i);
  ------------------
  |  |   29|    129|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|    129|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    129|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3551:25): [True: 129, False: 0]
  ------------------
 3552|    129|        if (!PyType_Check(obj)) {
  ------------------
  |  |  766|    129|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    129|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    129|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3552:13): [True: 0, False: 129]
  ------------------
 3553|      0|            PyErr_Format(PyExc_TypeError,
 3554|      0|                         "%N.mro() returned a non-class ('%T')", type, obj);
 3555|      0|            return -1;
 3556|      0|        }
 3557|    129|        PyTypeObject *base = (PyTypeObject*)obj;
 3558|       |
 3559|    129|        if (!is_subtype_with_mro(lookup_tp_mro(solid), solid, solid_base(base))) {
  ------------------
  |  Branch (3559:13): [True: 0, False: 129]
  ------------------
 3560|      0|            PyErr_Format(
 3561|      0|                PyExc_TypeError,
 3562|      0|                "%N.mro() returned base with unsuitable layout ('%N')",
 3563|      0|                type, base);
 3564|      0|            return -1;
 3565|      0|        }
 3566|    129|    }
 3567|       |
 3568|     29|    return 0;
 3569|     29|}
typeobject.c:type_mro_modified:
 1280|    666|{
 1281|       |    /*
 1282|       |       Check that all base classes or elements of the MRO of type are
 1283|       |       able to be cached.  This function is called after the base
 1284|       |       classes or mro of the type are altered.
 1285|       |
 1286|       |       Unset HAVE_VERSION_TAG and VALID_VERSION_TAG if the type
 1287|       |       has a custom MRO that includes a type which is not officially
 1288|       |       super type, or if the type implements its own mro() method.
 1289|       |
 1290|       |       Called from mro_internal, which will subsequently be called on
 1291|       |       each subclass when their mro is recursively updated.
 1292|       |     */
 1293|    666|    Py_ssize_t i, n;
 1294|       |
 1295|    666|    ASSERT_TYPE_LOCK_HELD();
 1296|    666|    if (!Py_IS_TYPE(type, &PyType_Type) && has_custom_mro(type)) {
  ------------------
  |  |  215|  1.33k|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|    666|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    666|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1296:9): [True: 58, False: 608]
  |  Branch (1296:44): [True: 0, False: 58]
  ------------------
 1297|      0|        goto clear;
 1298|      0|    }
 1299|    666|    n = PyTuple_GET_SIZE(bases);
  ------------------
  |  |   27|    666|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    666|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    666|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1300|  2.03k|    for (i = 0; i < n; i++) {
  ------------------
  |  Branch (1300:17): [True: 1.36k, False: 666]
  ------------------
 1301|  1.36k|        PyObject *b = PyTuple_GET_ITEM(bases, i);
  ------------------
  |  |   29|  1.36k|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|  1.36k|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.36k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1301:23): [True: 1.36k, False: 0]
  ------------------
 1302|  1.36k|        PyTypeObject *cls = _PyType_CAST(b);
  ------------------
  |  |  770|  1.36k|    (assert(PyType_Check(op)), _Py_CAST(PyTypeObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|  1.36k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (1302:29): [True: 1.36k, False: 0]
  ------------------
 1303|       |
 1304|  1.36k|        if (cls->tp_versions_used >= _Py_ATTR_CACHE_UNUSED) {
  ------------------
  |  |  251|  1.36k|#define _Py_ATTR_CACHE_UNUSED (30000)  // (see tp_versions_used)
  ------------------
  |  Branch (1304:13): [True: 0, False: 1.36k]
  ------------------
 1305|      0|            goto clear;
 1306|      0|        }
 1307|       |
 1308|  1.36k|        if (!is_subtype_with_mro(lookup_tp_mro(type), type, cls)) {
  ------------------
  |  Branch (1308:13): [True: 0, False: 1.36k]
  ------------------
 1309|      0|            goto clear;
 1310|      0|        }
 1311|  1.36k|    }
 1312|    666|    return;
 1313|       |
 1314|    666| clear:
 1315|      0|    assert(!(type->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN));
  ------------------
  |  Branch (1315:5): [True: 0, False: 0]
  ------------------
 1316|      0|    set_version_unlocked(type, 0);  /* 0 is not a valid version tag */
 1317|      0|    type->tp_versions_used = _Py_ATTR_CACHE_UNUSED;
  ------------------
  |  |  251|      0|#define _Py_ATTR_CACHE_UNUSED (30000)  // (see tp_versions_used)
  ------------------
 1318|      0|    if (PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE)) {
  ------------------
  |  |  503|      0|#define Py_TPFLAGS_HEAPTYPE (1UL << 9)
  ------------------
  |  Branch (1318:9): [True: 0, False: 0]
  ------------------
 1319|       |        // This field *must* be invalidated if the type is modified (see the
 1320|       |        // comment on struct _specialization_cache):
 1321|      0|        FT_ATOMIC_STORE_PTR_RELAXED(
  ------------------
  |  |  163|      0|#define FT_ATOMIC_STORE_PTR_RELAXED(value, new_value) value = new_value
  ------------------
 1322|      0|            ((PyHeapTypeObject *)type)->_spec_cache.getitem, NULL);
 1323|      0|    }
 1324|      0|}
typeobject.c:has_custom_mro:
 1262|     58|{
 1263|     58|    _PyCStackRef c_ref1, c_ref2;
 1264|     58|    PyThreadState *tstate = _PyThreadState_GET();
 1265|     58|    _PyThreadState_PushCStackRef(tstate, &c_ref1);
 1266|     58|    _PyThreadState_PushCStackRef(tstate, &c_ref2);
 1267|       |
 1268|     58|    _PyType_LookupStackRefAndVersion(Py_TYPE(tp), &_Py_ID(mro), &c_ref1.ref);
  ------------------
  |  |  213|     58|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     58|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     58|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  _PyType_LookupStackRefAndVersion(Py_TYPE(tp), &_Py_ID(mro), &c_ref1.ref);
  ------------------
  |  |  917|     58|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     58|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     58|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1269|     58|    _PyType_LookupStackRefAndVersion(&PyType_Type, &_Py_ID(mro), &c_ref2.ref);
  ------------------
  |  |  917|     58|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     58|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     58|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1270|       |
 1271|     58|    int custom = !PyStackRef_Is(c_ref1.ref, c_ref2.ref);
  ------------------
  |  |  721|     58|#define PyStackRef_Is(a, b) (((a).bits & (~Py_TAG_REFCNT)) == ((b).bits & (~Py_TAG_REFCNT)))
  |  |  ------------------
  |  |  |  |   55|     58|#define Py_TAG_REFCNT 1
  |  |  ------------------
  |  |               #define PyStackRef_Is(a, b) (((a).bits & (~Py_TAG_REFCNT)) == ((b).bits & (~Py_TAG_REFCNT)))
  |  |  ------------------
  |  |  |  |   55|     58|#define Py_TAG_REFCNT 1
  |  |  ------------------
  ------------------
 1272|       |
 1273|     58|    _PyThreadState_PopCStackRef(tstate, &c_ref2);
 1274|     58|    _PyThreadState_PopCStackRef(tstate, &c_ref1);
 1275|     58|    return custom;
 1276|     58|}
typeobject.c:add_subclass:
 9663|    344|{
 9664|    344|    PyObject *key = PyLong_FromVoidPtr((void *) type);
 9665|    344|    if (key == NULL)
  ------------------
  |  Branch (9665:9): [True: 0, False: 344]
  ------------------
 9666|      0|        return -1;
 9667|       |
 9668|    344|    PyObject *ref = PyWeakref_NewRef((PyObject *)type, NULL);
 9669|    344|    if (ref == NULL) {
  ------------------
  |  Branch (9669:9): [True: 0, False: 344]
  ------------------
 9670|      0|        Py_DECREF(key);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9671|      0|        return -1;
 9672|      0|    }
 9673|       |
 9674|       |    // Only get tp_subclasses after creating the key and value.
 9675|       |    // PyWeakref_NewRef() can trigger a garbage collection which can execute
 9676|       |    // arbitrary Python code and so modify base->tp_subclasses.
 9677|    344|    PyObject *subclasses = lookup_tp_subclasses(base);
 9678|    344|    if (subclasses == NULL) {
  ------------------
  |  Branch (9678:9): [True: 65, False: 279]
  ------------------
 9679|     65|        subclasses = init_tp_subclasses(base);
 9680|     65|        if (subclasses == NULL) {
  ------------------
  |  Branch (9680:13): [True: 0, False: 65]
  ------------------
 9681|      0|            Py_DECREF(key);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9682|      0|            Py_DECREF(ref);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9683|      0|            return -1;
 9684|      0|        }
 9685|     65|    }
 9686|    344|    assert(PyDict_CheckExact(subclasses));
  ------------------
  |  Branch (9686:5): [True: 344, False: 0]
  ------------------
 9687|       |
 9688|    344|    int result = PyDict_SetItem(subclasses, key, ref);
 9689|    344|    Py_DECREF(ref);
  ------------------
  |  |  430|    344|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    344|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    344|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9690|    344|    Py_DECREF(key);
  ------------------
  |  |  430|    344|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    344|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    344|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9691|    344|    return result;
 9692|    344|}
typeobject.c:set_tp_mro:
  652|    333|{
  653|    333|    if (mro != NULL) {
  ------------------
  |  Branch (653:9): [True: 333, False: 0]
  ------------------
  654|    333|        assert(PyTuple_CheckExact(mro));
  ------------------
  |  Branch (654:9): [True: 333, False: 0]
  ------------------
  655|    333|        if (self->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN) {
  ------------------
  |  |  467|    333|#define _Py_TPFLAGS_STATIC_BUILTIN (1 << 1)
  ------------------
  |  Branch (655:13): [True: 207, False: 126]
  ------------------
  656|       |            // XXX tp_mro can probably be statically allocated for each
  657|       |            // static builtin type.
  658|    207|            assert(initial);
  ------------------
  |  Branch (658:13): [True: 207, False: 0]
  ------------------
  659|    207|            assert(self->tp_mro == NULL);
  ------------------
  |  Branch (659:13): [True: 207, False: 0]
  ------------------
  660|       |            /* Other checks are done via set_tp_bases. */
  661|    207|            _Py_SetImmortal(mro);
  662|    207|        }
  663|    126|        else {
  664|    126|            PyUnstable_Object_EnableDeferredRefcount(mro);
  665|    126|        }
  666|    333|    }
  667|    333|    if (!initial) {
  ------------------
  |  Branch (667:9): [True: 0, False: 333]
  ------------------
  668|      0|        type_lock_prevent_release();
  669|      0|        types_stop_world();
  670|      0|    }
  671|    333|    self->tp_mro = mro;
  672|    333|    if (!initial) {
  ------------------
  |  Branch (672:9): [True: 0, False: 333]
  ------------------
  673|      0|        types_start_world();
  674|      0|        type_lock_allow_release();
  675|      0|    }
  676|    333|}
typeobject.c:type_get_module:
 1630|      7|{
 1631|      7|    PyTypeObject *type = PyTypeObject_CAST(tp);
  ------------------
  |  |  200|      7|#define PyTypeObject_CAST(op)   ((PyTypeObject *)(op))
  ------------------
 1632|      7|    return type_module(type);
 1633|      7|}
typeobject.c:type_set_module:
 1637|      1|{
 1638|      1|    PyTypeObject *type = PyTypeObject_CAST(tp);
  ------------------
  |  |  200|      1|#define PyTypeObject_CAST(op)   ((PyTypeObject *)(op))
  ------------------
 1639|      1|    if (!check_set_special_type_attr(type, value, "__module__"))
  ------------------
  |  Branch (1639:9): [True: 0, False: 1]
  ------------------
 1640|      0|        return -1;
 1641|       |
 1642|      1|    PyType_Modified(type);
 1643|       |
 1644|      1|    PyObject *dict = lookup_tp_dict(type);
 1645|      1|    if (PyDict_Pop(dict, &_Py_ID(__firstlineno__), NULL) < 0) {
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1645:9): [True: 0, False: 1]
  ------------------
 1646|      0|        return -1;
 1647|      0|    }
 1648|      1|    return PyDict_SetItem(dict, &_Py_ID(__module__), value);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1649|      1|}
typeobject.c:type_abstractmethods:
 1693|     35|{
 1694|     35|    PyTypeObject *type = PyTypeObject_CAST(tp);
  ------------------
  |  |  200|     35|#define PyTypeObject_CAST(op)   ((PyTypeObject *)(op))
  ------------------
 1695|     35|    PyObject *res = NULL;
 1696|       |    /* type itself has an __abstractmethods__ descriptor (this). Don't return
 1697|       |       that. */
 1698|     35|    if (type == &PyType_Type) {
  ------------------
  |  Branch (1698:9): [True: 0, False: 35]
  ------------------
 1699|      0|        PyErr_SetObject(PyExc_AttributeError, &_Py_ID(__abstractmethods__));
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1700|      0|    }
 1701|     35|    else {
 1702|     35|        PyObject *dict = lookup_tp_dict(type);
 1703|     35|        if (PyDict_GetItemRef(dict, &_Py_ID(__abstractmethods__), &res) == 0) {
  ------------------
  |  |  917|     35|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     35|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     35|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1703:13): [True: 9, False: 26]
  ------------------
 1704|      9|            PyErr_SetObject(PyExc_AttributeError, &_Py_ID(__abstractmethods__));
  ------------------
  |  |  917|      9|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      9|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      9|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1705|      9|        }
 1706|     35|    }
 1707|     35|    return res;
 1708|     35|}
typeobject.c:type_set_abstractmethods:
 1712|     29|{
 1713|     29|    PyTypeObject *type = PyTypeObject_CAST(tp);
  ------------------
  |  |  200|     29|#define PyTypeObject_CAST(op)   ((PyTypeObject *)(op))
  ------------------
 1714|       |    /* __abstractmethods__ should only be set once on a type, in
 1715|       |       abc.ABCMeta.__new__, so this function doesn't do anything
 1716|       |       special to update subclasses.
 1717|       |    */
 1718|     29|    int abstract, res;
 1719|     29|    PyObject *dict = lookup_tp_dict(type);
 1720|     29|    if (value != NULL) {
  ------------------
  |  Branch (1720:9): [True: 29, False: 0]
  ------------------
 1721|     29|        abstract = PyObject_IsTrue(value);
 1722|     29|        if (abstract < 0)
  ------------------
  |  Branch (1722:13): [True: 0, False: 29]
  ------------------
 1723|      0|            return -1;
 1724|     29|        res = PyDict_SetItem(dict, &_Py_ID(__abstractmethods__), value);
  ------------------
  |  |  917|     29|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     29|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     29|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1725|     29|    }
 1726|      0|    else {
 1727|      0|        abstract = 0;
 1728|      0|        res = PyDict_Pop(dict, &_Py_ID(__abstractmethods__), NULL);
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1729|      0|        if (res == 0) {
  ------------------
  |  Branch (1729:13): [True: 0, False: 0]
  ------------------
 1730|      0|            PyErr_SetObject(PyExc_AttributeError, &_Py_ID(__abstractmethods__));
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1731|      0|            return -1;
 1732|      0|        }
 1733|      0|    }
 1734|     29|    if (res < 0) {
  ------------------
  |  Branch (1734:9): [True: 0, False: 29]
  ------------------
 1735|      0|        return -1;
 1736|      0|    }
 1737|       |
 1738|     29|    BEGIN_TYPE_LOCK();
 1739|     29|    type_modified_unlocked(type);
 1740|     29|    types_stop_world();
 1741|     29|    if (abstract)
  ------------------
  |  Branch (1741:9): [True: 23, False: 6]
  ------------------
 1742|     23|        type_add_flags(type, Py_TPFLAGS_IS_ABSTRACT);
  ------------------
  |  |  540|     23|#define Py_TPFLAGS_IS_ABSTRACT (1UL << 20)
  ------------------
 1743|      6|    else
 1744|      6|        type_clear_flags(type, Py_TPFLAGS_IS_ABSTRACT);
  ------------------
  |  |  540|      6|#define Py_TPFLAGS_IS_ABSTRACT (1UL << 20)
  ------------------
 1745|     29|    types_start_world();
 1746|     29|    ASSERT_TYPE_LOCK_HELD();
 1747|     29|    END_TYPE_LOCK();
 1748|       |
 1749|     29|    return 0;
 1750|     29|}
typeobject.c:type_dict:
 2035|    110|{
 2036|    110|    PyTypeObject *type = PyTypeObject_CAST(tp);
  ------------------
  |  |  200|    110|#define PyTypeObject_CAST(op)   ((PyTypeObject *)(op))
  ------------------
 2037|    110|    PyObject *dict = lookup_tp_dict(type);
 2038|    110|    if (dict == NULL) {
  ------------------
  |  Branch (2038:9): [True: 0, False: 110]
  ------------------
 2039|      0|        Py_RETURN_NONE;
  ------------------
  |  |  628|      0|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
 2040|      0|    }
 2041|    110|    return PyDictProxy_New(dict);
 2042|    110|}
typeobject.c:type_get_doc:
 2046|      7|{
 2047|      7|    PyTypeObject *type = PyTypeObject_CAST(tp);
  ------------------
  |  |  200|      7|#define PyTypeObject_CAST(op)   ((PyTypeObject *)(op))
  ------------------
 2048|      7|    PyObject *result;
 2049|      7|    if (!(type->tp_flags & Py_TPFLAGS_HEAPTYPE) && type->tp_doc != NULL) {
  ------------------
  |  |  503|      7|#define Py_TPFLAGS_HEAPTYPE (1UL << 9)
  ------------------
  |  Branch (2049:9): [True: 6, False: 1]
  |  Branch (2049:52): [True: 6, False: 0]
  ------------------
 2050|      6|        return _PyType_GetDocFromInternalDoc(type->tp_name, type->tp_doc);
 2051|      6|    }
 2052|      1|    PyObject *dict = lookup_tp_dict(type);
 2053|      1|    if (PyDict_GetItemRef(dict, &_Py_ID(__doc__), &result) == 0) {
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2053:9): [True: 0, False: 1]
  ------------------
 2054|      0|        result = Py_NewRef(Py_None);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2055|      0|    }
 2056|      1|    else if (result) {
  ------------------
  |  Branch (2056:14): [True: 1, False: 0]
  ------------------
 2057|      1|        descrgetfunc descr_get = Py_TYPE(result)->tp_descr_get;
  ------------------
  |  |  213|      1|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2058|      1|        if (descr_get) {
  ------------------
  |  Branch (2058:13): [True: 0, False: 1]
  ------------------
 2059|      0|            Py_SETREF(result, descr_get(result, NULL, (PyObject *)type));
  ------------------
  |  |  352|      0|    do { \
  |  |  353|      0|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  354|      0|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  355|      0|        *_tmp_dst_ptr = (src); \
  |  |  356|      0|        Py_DECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  357|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (357:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2060|      0|        }
 2061|      1|    }
 2062|      1|    return result;
 2063|      7|}
typeobject.c:type_init:
 4111|     87|{
 4112|     87|    assert(args != NULL && PyTuple_Check(args));
  ------------------
  |  Branch (4112:5): [True: 87, False: 0]
  |  Branch (4112:5): [True: 87, False: 0]
  ------------------
 4113|     87|    assert(kwds == NULL || PyDict_Check(kwds));
  ------------------
  |  Branch (4113:5): [True: 77, False: 10]
  |  Branch (4113:5): [True: 10, False: 0]
  ------------------
 4114|       |
 4115|     87|    if (kwds != NULL && PyTuple_GET_SIZE(args) == 1 &&
  ------------------
  |  |   27|     10|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     10|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4115:9): [True: 10, False: 77]
  |  Branch (4115:25): [True: 0, False: 10]
  ------------------
 4116|      0|        PyDict_GET_SIZE(kwds) != 0) {
  ------------------
  |  |   63|      0|#define PyDict_GET_SIZE(op) PyDict_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4116:9): [True: 0, False: 0]
  ------------------
 4117|      0|        PyErr_SetString(PyExc_TypeError,
 4118|      0|                        "type.__init__() takes no keyword arguments");
 4119|      0|        return -1;
 4120|      0|    }
 4121|       |
 4122|     87|    if ((PyTuple_GET_SIZE(args) != 1 && PyTuple_GET_SIZE(args) != 3)) {
  ------------------
  |  |   27|     87|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     87|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     87|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  if ((PyTuple_GET_SIZE(args) != 1 && PyTuple_GET_SIZE(args) != 3)) {
  ------------------
  |  |   27|     87|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     87|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     87|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4122:10): [True: 87, False: 0]
  |  Branch (4122:41): [True: 0, False: 87]
  ------------------
 4123|      0|        PyErr_SetString(PyExc_TypeError,
 4124|      0|                        "type.__init__() takes 1 or 3 arguments");
 4125|      0|        return -1;
 4126|      0|    }
 4127|       |
 4128|     87|    return 0;
 4129|     87|}
typeobject.c:type_new:
 5053|     87|{
 5054|     87|    assert(args != NULL && PyTuple_Check(args));
  ------------------
  |  Branch (5054:5): [True: 87, False: 0]
  |  Branch (5054:5): [True: 87, False: 0]
  ------------------
 5055|     87|    assert(kwds == NULL || PyDict_Check(kwds));
  ------------------
  |  Branch (5055:5): [True: 87, False: 0]
  |  Branch (5055:5): [True: 0, False: 0]
  ------------------
 5056|       |
 5057|       |    /* Parse arguments: (name, bases, dict) */
 5058|     87|    PyObject *name, *bases, *orig_dict;
 5059|     87|    if (!PyArg_ParseTuple(args, "UO!O:type.__new__",
  ------------------
  |  Branch (5059:9): [True: 0, False: 87]
  ------------------
 5060|     87|                          &name,
 5061|     87|                          &PyTuple_Type, &bases,
 5062|     87|                          &orig_dict))
 5063|      0|    {
 5064|      0|        return NULL;
 5065|      0|    }
 5066|     87|    if (!PyAnyDict_Check(orig_dict)) {
  ------------------
  |  |   43|     87|    (PyDict_Check(ob) || PyFrozenDict_Check(ob))
  |  |  ------------------
  |  |  |  |   18|     87|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|    174|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (760:41): [True: 87, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (PyDict_Check(ob) || PyFrozenDict_Check(ob))
  |  |  ------------------
  |  |  |  |   37|      0|#define PyFrozenDict_Check(op) PyObject_TypeCheck((op), &PyFrozenDict_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |  378|      0|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (378:40): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5067|      0|        PyErr_Format(PyExc_TypeError,
 5068|      0|                     "type.__new__() argument 3 must be dict or frozendict, not %T",
 5069|      0|                     orig_dict);
 5070|      0|        return NULL;
 5071|      0|    }
 5072|       |
 5073|     87|    type_new_ctx ctx = {
 5074|     87|        .metatype = metatype,
 5075|     87|        .args = args,
 5076|     87|        .kwds = kwds,
 5077|     87|        .orig_dict = orig_dict,
 5078|     87|        .name = name,
 5079|     87|        .bases = bases,
 5080|     87|        .base = NULL,
 5081|     87|        .slots = NULL,
 5082|     87|        .nslot = 0,
 5083|     87|        .add_dict = 0,
 5084|     87|        .add_weak = 0,
 5085|     87|        .may_add_dict = 0,
 5086|     87|        .may_add_weak = 0};
 5087|     87|    PyObject *type = NULL;
 5088|     87|    int res = type_new_get_bases(&ctx, &type);
 5089|     87|    if (res < 0) {
  ------------------
  |  Branch (5089:9): [True: 0, False: 87]
  ------------------
 5090|      0|        assert(PyErr_Occurred());
  ------------------
  |  Branch (5090:9): [True: 0, False: 0]
  ------------------
 5091|      0|        return NULL;
 5092|      0|    }
 5093|     87|    if (res == 1) {
  ------------------
  |  Branch (5093:9): [True: 0, False: 87]
  ------------------
 5094|      0|        assert(type != NULL);
  ------------------
  |  Branch (5094:9): [True: 0, False: 0]
  ------------------
 5095|      0|        return type;
 5096|      0|    }
 5097|     87|    assert(ctx.base != NULL);
  ------------------
  |  Branch (5097:5): [True: 87, False: 0]
  ------------------
 5098|     87|    assert(ctx.bases != NULL);
  ------------------
  |  Branch (5098:5): [True: 87, False: 0]
  ------------------
 5099|       |
 5100|     87|    type = type_new_impl(&ctx);
 5101|     87|    Py_DECREF(ctx.bases);
  ------------------
  |  |  430|     87|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     87|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     87|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5102|     87|    return type;
 5103|     87|}
typeobject.c:type_new_get_bases:
 4989|     87|{
 4990|     87|    Py_ssize_t nbases = PyTuple_GET_SIZE(ctx->bases);
  ------------------
  |  |   27|     87|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     87|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     87|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4991|     87|    if (nbases == 0) {
  ------------------
  |  Branch (4991:9): [True: 33, False: 54]
  ------------------
 4992|       |        // Adjust for empty tuple bases
 4993|     33|        ctx->base = &PyBaseObject_Type;
 4994|     33|        PyObject *new_bases = PyTuple_Pack(1, ctx->base);
 4995|     33|        if (new_bases == NULL) {
  ------------------
  |  Branch (4995:13): [True: 0, False: 33]
  ------------------
 4996|      0|            return -1;
 4997|      0|        }
 4998|     33|        ctx->bases = new_bases;
 4999|     33|        return 0;
 5000|     33|    }
 5001|       |
 5002|    120|    for (Py_ssize_t i = 0; i < nbases; i++) {
  ------------------
  |  Branch (5002:28): [True: 66, False: 54]
  ------------------
 5003|     66|        PyObject *base = PyTuple_GET_ITEM(ctx->bases, i);
  ------------------
  |  |   29|     66|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|     66|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     66|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5003:26): [True: 66, False: 0]
  ------------------
 5004|     66|        if (PyType_Check(base)) {
  ------------------
  |  |  766|     66|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     66|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     66|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (766:28): [True: 66, False: 0]
  |  |  ------------------
  ------------------
 5005|     66|            continue;
 5006|     66|        }
 5007|      0|        int rc = PyObject_HasAttrWithError(base, &_Py_ID(__mro_entries__));
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5008|      0|        if (rc < 0) {
  ------------------
  |  Branch (5008:13): [True: 0, False: 0]
  ------------------
 5009|      0|            return -1;
 5010|      0|        }
 5011|      0|        if (rc) {
  ------------------
  |  Branch (5011:13): [True: 0, False: 0]
  ------------------
 5012|      0|            PyErr_SetString(PyExc_TypeError,
 5013|      0|                            "type() doesn't support MRO entry resolution; "
 5014|      0|                            "use types.new_class()");
 5015|      0|            return -1;
 5016|      0|        }
 5017|      0|    }
 5018|       |
 5019|       |    // Search the bases for the proper metatype to deal with this
 5020|     54|    PyTypeObject *winner;
 5021|     54|    winner = _PyType_CalculateMetaclass(ctx->metatype, ctx->bases);
 5022|     54|    if (winner == NULL) {
  ------------------
  |  Branch (5022:9): [True: 0, False: 54]
  ------------------
 5023|      0|        return -1;
 5024|      0|    }
 5025|       |
 5026|     54|    if (winner != ctx->metatype) {
  ------------------
  |  Branch (5026:9): [True: 0, False: 54]
  ------------------
 5027|      0|        if (winner->tp_new != type_new) {
  ------------------
  |  Branch (5027:13): [True: 0, False: 0]
  ------------------
 5028|       |            /* Pass it to the winner */
 5029|      0|            *type = winner->tp_new(winner, ctx->args, ctx->kwds);
 5030|      0|            if (*type == NULL) {
  ------------------
  |  Branch (5030:17): [True: 0, False: 0]
  ------------------
 5031|      0|                return -1;
 5032|      0|            }
 5033|      0|            return 1;
 5034|      0|        }
 5035|       |
 5036|      0|        ctx->metatype = winner;
 5037|      0|    }
 5038|       |
 5039|       |    /* Calculate best base, and check that all bases are type objects */
 5040|     54|    PyTypeObject *base = find_best_base(ctx->bases);
 5041|     54|    if (base == NULL) {
  ------------------
  |  Branch (5041:9): [True: 0, False: 54]
  ------------------
 5042|      0|        return -1;
 5043|      0|    }
 5044|       |
 5045|     54|    ctx->base = base;
 5046|     54|    ctx->bases = Py_NewRef(ctx->bases);
  ------------------
  |  |  550|     54|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     54|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     54|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5047|     54|    return 0;
 5048|     54|}
typeobject.c:type_new_impl:
 4936|     87|{
 4937|     87|    PyTypeObject *type = type_new_init(ctx);
 4938|     87|    if (type == NULL) {
  ------------------
  |  Branch (4938:9): [True: 0, False: 87]
  ------------------
 4939|      0|        return NULL;
 4940|      0|    }
 4941|       |
 4942|     87|    if (type_new_set_attrs(ctx, type) < 0) {
  ------------------
  |  Branch (4942:9): [True: 0, False: 87]
  ------------------
 4943|      0|        goto error;
 4944|      0|    }
 4945|       |
 4946|       |    /* Initialize the rest */
 4947|     87|    if (PyType_Ready(type) < 0) {
  ------------------
  |  Branch (4947:9): [True: 0, False: 87]
  ------------------
 4948|      0|        goto error;
 4949|      0|    }
 4950|       |
 4951|       |    // Put the proper slots in place
 4952|     87|    fixup_slot_dispatchers(type);
 4953|       |
 4954|     87|    if (!_PyDict_HasOnlyStringKeys(type->tp_dict)) {
  ------------------
  |  Branch (4954:9): [True: 0, False: 87]
  ------------------
 4955|      0|        if (PyErr_WarnFormat(
  ------------------
  |  Branch (4955:13): [True: 0, False: 0]
  ------------------
 4956|      0|                PyExc_RuntimeWarning,
 4957|      0|                1,
 4958|      0|                "non-string key in the __dict__ of class %.200s",
 4959|      0|                type->tp_name) == -1)
 4960|      0|        {
 4961|      0|            goto error;
 4962|      0|        }
 4963|      0|    }
 4964|       |
 4965|     87|    if (type_new_set_names(type) < 0) {
  ------------------
  |  Branch (4965:9): [True: 0, False: 87]
  ------------------
 4966|      0|        goto error;
 4967|      0|    }
 4968|       |
 4969|     87|    if (type_new_init_subclass(type, ctx->kwds) < 0) {
  ------------------
  |  Branch (4969:9): [True: 0, False: 87]
  ------------------
 4970|      0|        goto error;
 4971|      0|    }
 4972|       |
 4973|     87|    assert(_PyType_CheckConsistency(type));
  ------------------
  |  Branch (4973:5): [True: 87, False: 0]
  ------------------
 4974|       |#if defined(Py_GIL_DISABLED) && defined(Py_DEBUG) && SIZEOF_VOID_P > 4
 4975|       |    // After this point, other threads can potentally use this type.
 4976|       |    ((PyObject*)type)->ob_flags |= _Py_TYPE_REVEALED_FLAG;
 4977|       |#endif
 4978|       |
 4979|     87|    return (PyObject *)type;
 4980|       |
 4981|      0|error:
 4982|      0|    Py_DECREF(type);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4983|       |    return NULL;
 4984|     87|}
typeobject.c:type_new_init:
 4893|     87|{
 4894|     87|    PyObject *dict = _PyDict_CopyAsDict(ctx->orig_dict);
 4895|     87|    if (dict == NULL) {
  ------------------
  |  Branch (4895:9): [True: 0, False: 87]
  ------------------
 4896|      0|        goto error;
 4897|      0|    }
 4898|       |
 4899|     87|    if (type_new_get_slots(ctx, dict) < 0) {
  ------------------
  |  Branch (4899:9): [True: 0, False: 87]
  ------------------
 4900|      0|        goto error;
 4901|      0|    }
 4902|     87|    assert(!PyErr_Occurred());
  ------------------
  |  Branch (4902:5): [True: 87, False: 0]
  ------------------
 4903|       |
 4904|     87|    if (type_new_slots(ctx, dict) < 0) {
  ------------------
  |  Branch (4904:9): [True: 0, False: 87]
  ------------------
 4905|      0|        goto error;
 4906|      0|    }
 4907|       |
 4908|     87|    PyTypeObject *type = type_new_alloc(ctx);
 4909|     87|    if (type == NULL) {
  ------------------
  |  Branch (4909:9): [True: 0, False: 87]
  ------------------
 4910|      0|        goto error;
 4911|      0|    }
 4912|       |
 4913|     87|    set_tp_dict(type, dict);
 4914|       |
 4915|     87|    PyHeapTypeObject *et = (PyHeapTypeObject*)type;
 4916|     87|    if (ctx->slots && PyTuple_GET_SIZE(ctx->slots)) {
  ------------------
  |  |   27|     32|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     32|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     32|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (27:30): [True: 3, False: 29]
  |  |  ------------------
  ------------------
  |  Branch (4916:9): [True: 32, False: 55]
  ------------------
 4917|      3|        et->ht_slots = ctx->slots;
 4918|      3|        ctx->slots = NULL;
 4919|      3|    }
 4920|     84|    else {
 4921|     84|        et->ht_slots = NULL;
 4922|     84|        Py_CLEAR(ctx->slots);
  ------------------
  |  |  484|     84|    do { \
  |  |  485|     84|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|     84|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|     84|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|     84|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|     84|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 29, False: 55]
  |  |  ------------------
  |  |  488|     29|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|     29|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|     29|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|     29|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     29|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     29|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|     29|        } \
  |  |  491|     84|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 84]
  |  |  ------------------
  ------------------
 4923|     84|    }
 4924|       |
 4925|     87|    return type;
 4926|       |
 4927|      0|error:
 4928|      0|    Py_CLEAR(ctx->slots);
  ------------------
  |  |  484|      0|    do { \
  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4929|      0|    Py_XDECREF(dict);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4930|       |    return NULL;
 4931|     87|}
typeobject.c:type_new_get_slots:
 4862|     87|{
 4863|     87|    PyObject *slots = PyDict_GetItemWithError(dict, &_Py_ID(__slots__));
  ------------------
  |  |  917|     87|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     87|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     87|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4864|     87|    if (slots == NULL) {
  ------------------
  |  Branch (4864:9): [True: 55, False: 32]
  ------------------
 4865|     55|        if (PyErr_Occurred()) {
  ------------------
  |  Branch (4865:13): [True: 0, False: 55]
  ------------------
 4866|      0|            return -1;
 4867|      0|        }
 4868|     55|        ctx->slots = NULL;
 4869|     55|        ctx->nslot = 0;
 4870|     55|        return 0;
 4871|     55|    }
 4872|       |
 4873|       |    // Make it into a tuple
 4874|     32|    PyObject *new_slots;
 4875|     32|    if (PyUnicode_Check(slots)) {
  ------------------
  |  |  103|     32|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     32|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 0, False: 32]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4876|      0|        new_slots = PyTuple_Pack(1, slots);
 4877|      0|    }
 4878|     32|    else {
 4879|     32|        new_slots = PySequence_Tuple(slots);
 4880|     32|    }
 4881|     32|    if (new_slots == NULL) {
  ------------------
  |  Branch (4881:9): [True: 0, False: 32]
  ------------------
 4882|      0|        return -1;
 4883|      0|    }
 4884|     32|    assert(PyTuple_CheckExact(new_slots));
  ------------------
  |  Branch (4884:5): [True: 32, False: 0]
  ------------------
 4885|     32|    ctx->slots = new_slots;
 4886|     32|    ctx->nslot = PyTuple_GET_SIZE(new_slots);
  ------------------
  |  |   27|     32|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     32|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     32|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4887|     32|    return 0;
 4888|     32|}
typeobject.c:type_new_slots:
 4375|     87|{
 4376|       |    // Check for a __slots__ sequence variable in dict, and count it
 4377|     87|    ctx->add_dict = 0;
 4378|     87|    ctx->add_weak = 0;
 4379|     87|    ctx->may_add_dict = (ctx->base->tp_dictoffset == 0);
 4380|     87|    ctx->may_add_weak = (ctx->base->tp_weaklistoffset == 0);
 4381|       |
 4382|     87|    if (ctx->slots == NULL) {
  ------------------
  |  Branch (4382:9): [True: 55, False: 32]
  ------------------
 4383|     55|        if (ctx->may_add_dict) {
  ------------------
  |  Branch (4383:13): [True: 31, False: 24]
  ------------------
 4384|     31|            ctx->add_dict++;
 4385|     31|        }
 4386|     55|        if (ctx->may_add_weak && ctx->base->tp_itemsize == 0) {
  ------------------
  |  Branch (4386:13): [True: 39, False: 16]
  |  Branch (4386:34): [True: 38, False: 1]
  ------------------
 4387|     38|            ctx->add_weak++;
 4388|     38|        }
 4389|     55|    }
 4390|     32|    else {
 4391|       |        /* Have slots */
 4392|     32|        if (type_new_slots_impl(ctx, dict) < 0) {
  ------------------
  |  Branch (4392:13): [True: 0, False: 32]
  ------------------
 4393|      0|            return -1;
 4394|      0|        }
 4395|     32|    }
 4396|     87|    return 0;
 4397|     87|}
typeobject.c:type_new_slots_impl:
 4353|     32|{
 4354|     32|    if (type_new_visit_slots(ctx) < 0) {
  ------------------
  |  Branch (4354:9): [True: 0, False: 32]
  ------------------
 4355|      0|        return -1;
 4356|      0|    }
 4357|       |
 4358|     32|    PyObject *new_slots = type_new_copy_slots(ctx, dict);
 4359|     32|    if (new_slots == NULL) {
  ------------------
  |  Branch (4359:9): [True: 0, False: 32]
  ------------------
 4360|      0|        return -1;
 4361|      0|    }
 4362|     32|    assert(PyTuple_CheckExact(new_slots));
  ------------------
  |  Branch (4362:5): [True: 32, False: 0]
  ------------------
 4363|       |
 4364|     32|    Py_XSETREF(ctx->slots, new_slots);
  ------------------
  |  |  374|     32|    do { \
  |  |  375|     32|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|     32|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  376|     32|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|     32|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  377|     32|        *_tmp_dst_ptr = (src); \
  |  |  378|     32|        Py_XDECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  524|     32|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     32|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     32|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  379|     32|    } while (0)
  |  |  ------------------
  |  |  |  Branch (379:14): [Folded, False: 32]
  |  |  ------------------
  ------------------
 4365|     32|    ctx->nslot = PyTuple_GET_SIZE(new_slots);
  ------------------
  |  |   27|     32|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     32|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     32|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4366|       |
 4367|       |    /* Secondary bases may provide weakrefs or dict */
 4368|     32|    type_new_slots_bases(ctx);
 4369|     32|    return 0;
 4370|     32|}
typeobject.c:type_new_visit_slots:
 4207|     32|{
 4208|     32|    PyObject *slots = ctx->slots;
 4209|     32|    Py_ssize_t nslot = ctx->nslot;
 4210|     38|    for (Py_ssize_t i = 0; i < nslot; i++) {
  ------------------
  |  Branch (4210:28): [True: 6, False: 32]
  ------------------
 4211|      6|        PyObject *name = PyTuple_GET_ITEM(slots, i);
  ------------------
  |  |   29|      6|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|      6|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4211:26): [True: 6, False: 0]
  ------------------
 4212|      6|        if (!valid_identifier(name)) {
  ------------------
  |  Branch (4212:13): [True: 0, False: 6]
  ------------------
 4213|      0|            return -1;
 4214|      0|        }
 4215|      6|        assert(PyUnicode_Check(name));
  ------------------
  |  Branch (4215:9): [True: 6, False: 0]
  ------------------
 4216|      6|        if (_PyUnicode_Equal(name, &_Py_ID(__dict__))) {
  ------------------
  |  |  917|      6|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      6|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      6|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4216:13): [True: 0, False: 6]
  ------------------
 4217|      0|            if (!ctx->may_add_dict || ctx->add_dict != 0) {
  ------------------
  |  Branch (4217:17): [True: 0, False: 0]
  |  Branch (4217:39): [True: 0, False: 0]
  ------------------
 4218|      0|                PyErr_SetString(PyExc_TypeError,
 4219|      0|                    "__dict__ slot disallowed: "
 4220|      0|                    "we already got one");
 4221|      0|                return -1;
 4222|      0|            }
 4223|      0|            ctx->add_dict++;
 4224|      0|        }
 4225|      6|        if (_PyUnicode_Equal(name, &_Py_ID(__weakref__))) {
  ------------------
  |  |  917|      6|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      6|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      6|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4225:13): [True: 1, False: 5]
  ------------------
 4226|      1|            if (!ctx->may_add_weak || ctx->add_weak != 0) {
  ------------------
  |  Branch (4226:17): [True: 0, False: 1]
  |  Branch (4226:39): [True: 0, False: 1]
  ------------------
 4227|      0|                PyErr_SetString(PyExc_TypeError,
 4228|      0|                    "__weakref__ slot disallowed: "
 4229|      0|                    "we already got one");
 4230|      0|                return -1;
 4231|      0|            }
 4232|      1|            ctx->add_weak++;
 4233|      1|        }
 4234|      6|    }
 4235|     32|    return 0;
 4236|     32|}
typeobject.c:valid_identifier:
 4094|      6|{
 4095|      6|    if (!PyUnicode_Check(s)) {
  ------------------
  |  |  103|      6|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      6|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (4095:9): [True: 0, False: 6]
  ------------------
 4096|      0|        PyErr_Format(PyExc_TypeError,
 4097|      0|                     "__slots__ items must be strings, not '%.200s'",
 4098|      0|                     Py_TYPE(s)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4099|      0|        return 0;
 4100|      0|    }
 4101|      6|    if (!PyUnicode_IsIdentifier(s)) {
  ------------------
  |  Branch (4101:9): [True: 0, False: 6]
  ------------------
 4102|      0|        PyErr_SetString(PyExc_TypeError,
 4103|      0|                        "__slots__ must be identifiers");
 4104|      0|        return 0;
 4105|      0|    }
 4106|      6|    return 1;
 4107|      6|}
typeobject.c:type_new_copy_slots:
 4245|     32|{
 4246|     32|    PyObject *slots = ctx->slots;
 4247|     32|    Py_ssize_t nslot = ctx->nslot;
 4248|       |
 4249|     32|    Py_ssize_t new_nslot = nslot - ctx->add_dict - ctx->add_weak;
 4250|     32|    PyObject *new_slots = PyList_New(new_nslot);
 4251|     32|    if (new_slots == NULL) {
  ------------------
  |  Branch (4251:9): [True: 0, False: 32]
  ------------------
 4252|      0|        return NULL;
 4253|      0|    }
 4254|       |
 4255|     32|    Py_ssize_t j = 0;
 4256|     38|    for (Py_ssize_t i = 0; i < nslot; i++) {
  ------------------
  |  Branch (4256:28): [True: 6, False: 32]
  ------------------
 4257|      6|        PyObject *slot = PyTuple_GET_ITEM(slots, i);
  ------------------
  |  |   29|      6|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|      6|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4257:26): [True: 6, False: 0]
  ------------------
 4258|      6|        if ((ctx->add_dict && _PyUnicode_Equal(slot, &_Py_ID(__dict__))) ||
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4258:14): [True: 0, False: 6]
  |  Branch (4258:31): [True: 0, False: 0]
  ------------------
 4259|      6|            (ctx->add_weak && _PyUnicode_Equal(slot, &_Py_ID(__weakref__))))
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4259:14): [True: 1, False: 5]
  |  Branch (4259:31): [True: 1, False: 0]
  ------------------
 4260|      1|        {
 4261|      1|            continue;
 4262|      1|        }
 4263|       |
 4264|      5|        slot =_Py_Mangle(ctx->name, slot);
 4265|      5|        if (!slot) {
  ------------------
  |  Branch (4265:13): [True: 0, False: 5]
  ------------------
 4266|      0|            goto error;
 4267|      0|        }
 4268|      5|        PyList_SET_ITEM(new_slots, j, slot);
  ------------------
  |  |   50|      5|    PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4269|       |
 4270|      5|        int r = PyDict_Contains(dict, slot);
 4271|      5|        if (r < 0) {
  ------------------
  |  Branch (4271:13): [True: 0, False: 5]
  ------------------
 4272|      0|            goto error;
 4273|      0|        }
 4274|      5|        if (r > 0) {
  ------------------
  |  Branch (4274:13): [True: 0, False: 5]
  ------------------
 4275|       |            /* CPython inserts these names (when needed)
 4276|       |               into the namespace when creating a class.  They will be deleted
 4277|       |               below so won't act as class variables. */
 4278|      0|            if (!_PyUnicode_Equal(slot, &_Py_ID(__qualname__)) &&
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4278:17): [True: 0, False: 0]
  ------------------
 4279|      0|                !_PyUnicode_Equal(slot, &_Py_ID(__classcell__)) &&
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4279:17): [True: 0, False: 0]
  ------------------
 4280|      0|                !_PyUnicode_Equal(slot, &_Py_ID(__classdictcell__)))
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4280:17): [True: 0, False: 0]
  ------------------
 4281|      0|            {
 4282|      0|                PyErr_Format(PyExc_ValueError,
 4283|      0|                             "%R in __slots__ conflicts with class variable",
 4284|      0|                             slot);
 4285|      0|                goto error;
 4286|      0|            }
 4287|      0|        }
 4288|       |
 4289|      5|        j++;
 4290|      5|    }
 4291|     32|    assert(j == new_nslot);
  ------------------
  |  Branch (4291:5): [True: 32, False: 0]
  ------------------
 4292|       |
 4293|     32|    if (PyList_Sort(new_slots) == -1) {
  ------------------
  |  Branch (4293:9): [True: 0, False: 32]
  ------------------
 4294|      0|        goto error;
 4295|      0|    }
 4296|       |
 4297|     32|    PyObject *tuple = PyList_AsTuple(new_slots);
 4298|     32|    Py_DECREF(new_slots);
  ------------------
  |  |  430|     32|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     32|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     32|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4299|     32|    if (tuple == NULL) {
  ------------------
  |  Branch (4299:9): [True: 0, False: 32]
  ------------------
 4300|      0|        return NULL;
 4301|      0|    }
 4302|       |
 4303|     32|    assert(PyTuple_GET_SIZE(tuple) == new_nslot);
  ------------------
  |  Branch (4303:5): [True: 32, False: 0]
  ------------------
 4304|     32|    return tuple;
 4305|       |
 4306|      0|error:
 4307|      0|    Py_DECREF(new_slots);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4308|       |    return NULL;
 4309|     32|}
typeobject.c:type_new_slots_bases:
 4314|     32|{
 4315|     32|    Py_ssize_t nbases = PyTuple_GET_SIZE(ctx->bases);
  ------------------
  |  |   27|     32|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     32|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     32|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4316|     32|    if (nbases > 1 &&
  ------------------
  |  Branch (4316:9): [True: 5, False: 27]
  ------------------
 4317|      5|        ((ctx->may_add_dict && ctx->add_dict == 0) ||
  ------------------
  |  Branch (4317:11): [True: 5, False: 0]
  |  Branch (4317:32): [True: 5, False: 0]
  ------------------
 4318|      0|         (ctx->may_add_weak && ctx->add_weak == 0)))
  ------------------
  |  Branch (4318:11): [True: 0, False: 0]
  |  Branch (4318:32): [True: 0, False: 0]
  ------------------
 4319|      5|    {
 4320|     16|        for (Py_ssize_t i = 0; i < nbases; i++) {
  ------------------
  |  Branch (4320:32): [True: 11, False: 5]
  ------------------
 4321|     11|            PyObject *obj = PyTuple_GET_ITEM(ctx->bases, i);
  ------------------
  |  |   29|     11|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|     11|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     11|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4321:29): [True: 11, False: 0]
  ------------------
 4322|     11|            if (obj == (PyObject *)ctx->base) {
  ------------------
  |  Branch (4322:17): [True: 5, False: 6]
  ------------------
 4323|       |                /* Skip primary base */
 4324|      5|                continue;
 4325|      5|            }
 4326|      6|            PyTypeObject *base = _PyType_CAST(obj);
  ------------------
  |  |  770|      6|    (assert(PyType_Check(op)), _Py_CAST(PyTypeObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (4326:34): [True: 6, False: 0]
  ------------------
 4327|       |
 4328|      6|            if (ctx->may_add_dict && ctx->add_dict == 0 &&
  ------------------
  |  Branch (4328:17): [True: 6, False: 0]
  |  Branch (4328:38): [True: 6, False: 0]
  ------------------
 4329|      6|                base->tp_dictoffset != 0)
  ------------------
  |  Branch (4329:17): [True: 0, False: 6]
  ------------------
 4330|      0|            {
 4331|      0|                ctx->add_dict++;
 4332|      0|            }
 4333|      6|            if (ctx->may_add_weak && ctx->add_weak == 0 &&
  ------------------
  |  Branch (4333:17): [True: 6, False: 0]
  |  Branch (4333:38): [True: 6, False: 0]
  ------------------
 4334|      6|                base->tp_weaklistoffset != 0)
  ------------------
  |  Branch (4334:17): [True: 0, False: 6]
  ------------------
 4335|      0|            {
 4336|      0|                ctx->add_weak++;
 4337|      0|            }
 4338|      6|            if (ctx->may_add_dict && ctx->add_dict == 0) {
  ------------------
  |  Branch (4338:17): [True: 6, False: 0]
  |  Branch (4338:38): [True: 6, False: 0]
  ------------------
 4339|      6|                continue;
 4340|      6|            }
 4341|      0|            if (ctx->may_add_weak && ctx->add_weak == 0) {
  ------------------
  |  Branch (4341:17): [True: 0, False: 0]
  |  Branch (4341:38): [True: 0, False: 0]
  ------------------
 4342|      0|                continue;
 4343|      0|            }
 4344|       |            /* Nothing more to check */
 4345|      0|            break;
 4346|      0|        }
 4347|      5|    }
 4348|     32|}
typeobject.c:type_new_alloc:
 4402|     87|{
 4403|     87|    PyTypeObject *metatype = ctx->metatype;
 4404|     87|    PyTypeObject *type;
 4405|       |
 4406|       |    // Allocate the type object
 4407|     87|    type = (PyTypeObject *)metatype->tp_alloc(metatype, ctx->nslot);
 4408|     87|    if (type == NULL) {
  ------------------
  |  Branch (4408:9): [True: 0, False: 87]
  ------------------
 4409|      0|        return NULL;
 4410|      0|    }
 4411|     87|    PyHeapTypeObject *et = (PyHeapTypeObject *)type;
 4412|       |
 4413|       |    // Initialize tp_flags.
 4414|       |    // All heap types need GC, since we can create a reference cycle by storing
 4415|       |    // an instance on one of its parents.
 4416|     87|    type_set_flags(type, Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HEAPTYPE |
  ------------------
  |  |  560|     87|#define Py_TPFLAGS_DEFAULT  ( \
  |  |  561|     87|                 Py_TPFLAGS_HAVE_STACKLESS_EXTENSION | \
  |  |  ------------------
  |  |  |  |  530|     87|#define Py_TPFLAGS_HAVE_STACKLESS_EXTENSION 0
  |  |  ------------------
  |  |  562|     87|                0)
  ------------------
                  type_set_flags(type, Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HEAPTYPE |
  ------------------
  |  |  503|     87|#define Py_TPFLAGS_HEAPTYPE (1UL << 9)
  ------------------
 4417|     87|                   Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC);
  ------------------
  |  |  506|     87|#define Py_TPFLAGS_BASETYPE (1UL << 10)
  ------------------
                                 Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC);
  ------------------
  |  |  524|     87|#define Py_TPFLAGS_HAVE_GC (1UL << 14)
  ------------------
 4418|       |
 4419|       |    // Initialize essential fields
 4420|     87|    type->tp_as_async = &et->as_async;
 4421|     87|    type->tp_as_number = &et->as_number;
 4422|     87|    type->tp_as_sequence = &et->as_sequence;
 4423|     87|    type->tp_as_mapping = &et->as_mapping;
 4424|     87|    type->tp_as_buffer = &et->as_buffer;
 4425|       |
 4426|     87|    set_tp_bases(type, Py_NewRef(ctx->bases), 1);
  ------------------
  |  |  550|     87|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     87|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     87|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4427|     87|    type->tp_base = (PyTypeObject *)Py_NewRef(ctx->base);
  ------------------
  |  |  550|     87|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     87|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     87|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4428|       |
 4429|     87|    type->tp_dealloc = subtype_dealloc;
 4430|       |    /* Always override allocation strategy to use regular heap */
 4431|     87|    type->tp_alloc = PyType_GenericAlloc;
 4432|     87|    type->tp_free = PyObject_GC_Del;
 4433|       |
 4434|     87|    type->tp_traverse = subtype_traverse;
 4435|     87|    type->tp_clear = subtype_clear;
 4436|       |
 4437|     87|    et->ht_name = Py_NewRef(ctx->name);
  ------------------
  |  |  550|     87|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     87|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     87|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4438|     87|    et->ht_module = NULL;
 4439|     87|    et->_ht_tpname = NULL;
 4440|     87|    et->ht_token = NULL;
 4441|       |
 4442|       |#ifdef Py_GIL_DISABLED
 4443|       |    et->unique_id = _PyObject_AssignUniqueId((PyObject *)et);
 4444|       |#endif
 4445|       |
 4446|     87|    return type;
 4447|     87|}
typeobject.c:subtype_traverse:
 2603|     40|{
 2604|     40|    PyTypeObject *type, *base;
 2605|     40|    traverseproc basetraverse;
 2606|       |
 2607|       |    /* Find the nearest base with a different tp_traverse,
 2608|       |       and traverse slots while we're at it */
 2609|     40|    type = Py_TYPE(self);
  ------------------
  |  |  213|     40|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     40|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     40|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2610|     40|    base = type;
 2611|     80|    while ((basetraverse = base->tp_traverse) == subtype_traverse) {
  ------------------
  |  Branch (2611:12): [True: 40, False: 40]
  ------------------
 2612|     40|        if (Py_SIZE(base)) {
  ------------------
  |  |  214|     40|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     40|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     40|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (214:23): [True: 0, False: 40]
  |  |  ------------------
  ------------------
 2613|      0|            int err = traverse_slots(base, self, visit, arg);
 2614|      0|            if (err)
  ------------------
  |  Branch (2614:17): [True: 0, False: 0]
  ------------------
 2615|      0|                return err;
 2616|      0|        }
 2617|     40|        base = base->tp_base;
 2618|     40|        assert(base);
  ------------------
  |  Branch (2618:9): [True: 40, False: 0]
  ------------------
 2619|     40|    }
 2620|       |
 2621|     40|    if (type->tp_dictoffset != base->tp_dictoffset) {
  ------------------
  |  Branch (2621:9): [True: 40, False: 0]
  ------------------
 2622|     40|        assert(base->tp_dictoffset == 0);
  ------------------
  |  Branch (2622:9): [True: 40, False: 0]
  ------------------
 2623|     40|        if (type->tp_flags & Py_TPFLAGS_MANAGED_DICT) {
  ------------------
  |  |  482|     40|#define Py_TPFLAGS_MANAGED_DICT (1 << 4)
  ------------------
  |  Branch (2623:13): [True: 40, False: 0]
  ------------------
 2624|     40|            assert(type->tp_dictoffset == -1);
  ------------------
  |  Branch (2624:13): [True: 40, False: 0]
  ------------------
 2625|     40|            int err = PyObject_VisitManagedDict(self, visit, arg);
 2626|     40|            if (err) {
  ------------------
  |  Branch (2626:17): [True: 0, False: 40]
  ------------------
 2627|      0|                return err;
 2628|      0|            }
 2629|     40|        }
 2630|      0|        else {
 2631|      0|            PyObject **dictptr = _PyObject_ComputedDictPointer(self);
 2632|      0|            if (dictptr && *dictptr) {
  ------------------
  |  Branch (2632:17): [True: 0, False: 0]
  |  Branch (2632:28): [True: 0, False: 0]
  ------------------
 2633|      0|                Py_VISIT(*dictptr);
  ------------------
  |  |  194|      0|    do {                                                                \
  |  |  195|      0|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  196|      0|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      0|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 0]
  |  |  ------------------
  |  |  198|      0|                return vret;                                            \
  |  |  199|      0|        }                                                               \
  |  |  200|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2634|      0|            }
 2635|      0|        }
 2636|     40|    }
 2637|       |
 2638|     40|    if (type->tp_flags & Py_TPFLAGS_HEAPTYPE
  ------------------
  |  |  503|     80|#define Py_TPFLAGS_HEAPTYPE (1UL << 9)
  ------------------
  |  Branch (2638:9): [True: 40, False: 0]
  ------------------
 2639|     40|        && (!basetraverse || !(base->tp_flags & Py_TPFLAGS_HEAPTYPE))) {
  ------------------
  |  |  503|      0|#define Py_TPFLAGS_HEAPTYPE (1UL << 9)
  ------------------
  |  Branch (2639:13): [True: 40, False: 0]
  |  Branch (2639:30): [True: 0, False: 0]
  ------------------
 2640|       |        /* For a heaptype, the instances count as references
 2641|       |           to the type.          Traverse the type so the collector
 2642|       |           can find cycles involving this link.
 2643|       |           Skip this visit if basetraverse belongs to a heap type: in that
 2644|       |           case, basetraverse will visit the type when we call it later.
 2645|       |           */
 2646|     40|        Py_VISIT(type);
  ------------------
  |  |  194|     40|    do {                                                                \
  |  |  195|     40|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 40, False: 0]
  |  |  ------------------
  |  |  196|     40|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|     40|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     40|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|     40|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 40]
  |  |  ------------------
  |  |  198|     40|                return vret;                                            \
  |  |  199|     40|        }                                                               \
  |  |  200|     40|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 40]
  |  |  ------------------
  ------------------
 2647|     40|    }
 2648|       |
 2649|     40|    if (basetraverse)
  ------------------
  |  Branch (2649:9): [True: 0, False: 40]
  ------------------
 2650|      0|        return basetraverse(self, visit, arg);
 2651|     40|    return 0;
 2652|     40|}
typeobject.c:set_tp_dict:
  554|    333|{
  555|    333|    if (self->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN) {
  ------------------
  |  |  467|    333|#define _Py_TPFLAGS_STATIC_BUILTIN (1 << 1)
  ------------------
  |  Branch (555:9): [True: 207, False: 126]
  ------------------
  556|    207|        PyInterpreterState *interp = _PyInterpreterState_GET();
  557|    207|        managed_static_type_state *state = _PyStaticType_GetState(interp, self);
  558|    207|        assert(state != NULL);
  ------------------
  |  Branch (558:9): [True: 207, False: 0]
  ------------------
  559|    207|        state->tp_dict = dict;
  560|    207|        return;
  561|    207|    }
  562|    126|    self->tp_dict = dict;
  563|    126|}
typeobject.c:type_new_set_attrs:
 4797|     87|{
 4798|     87|    if (type_new_set_name(ctx, type) < 0) {
  ------------------
  |  Branch (4798:9): [True: 0, False: 87]
  ------------------
 4799|      0|        return -1;
 4800|      0|    }
 4801|       |
 4802|     87|    PyObject *dict = lookup_tp_dict(type);
 4803|     87|    assert(dict);
  ------------------
  |  Branch (4803:5): [True: 87, False: 0]
  ------------------
 4804|       |
 4805|     87|    if (type_new_set_module(dict) < 0) {
  ------------------
  |  Branch (4805:9): [True: 0, False: 87]
  ------------------
 4806|      0|        return -1;
 4807|      0|    }
 4808|       |
 4809|     87|    if (type_new_set_ht_name(type, dict) < 0) {
  ------------------
  |  Branch (4809:9): [True: 0, False: 87]
  ------------------
 4810|      0|        return -1;
 4811|      0|    }
 4812|       |
 4813|     87|    if (type_new_set_doc(type, dict) < 0) {
  ------------------
  |  Branch (4813:9): [True: 0, False: 87]
  ------------------
 4814|      0|        return -1;
 4815|      0|    }
 4816|       |
 4817|       |    /* Special-case __new__: if it's a plain function,
 4818|       |       make it a static function */
 4819|     87|    if (type_new_staticmethod(dict, &_Py_ID(__new__)) < 0) {
  ------------------
  |  |  917|     87|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     87|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     87|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4819:9): [True: 0, False: 87]
  ------------------
 4820|      0|        return -1;
 4821|      0|    }
 4822|       |
 4823|       |    /* Special-case __init_subclass__ and __class_getitem__:
 4824|       |       if they are plain functions, make them classmethods */
 4825|     87|    if (type_new_classmethod(dict, &_Py_ID(__init_subclass__)) < 0) {
  ------------------
  |  |  917|     87|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     87|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     87|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4825:9): [True: 0, False: 87]
  ------------------
 4826|      0|        return -1;
 4827|      0|    }
 4828|     87|    if (type_new_classmethod(dict, &_Py_ID(__class_getitem__)) < 0) {
  ------------------
  |  |  917|     87|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     87|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     87|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4828:9): [True: 0, False: 87]
  ------------------
 4829|      0|        return -1;
 4830|      0|    }
 4831|       |
 4832|     87|    if (type_new_descriptors(ctx, type, dict) < 0) {
  ------------------
  |  Branch (4832:9): [True: 0, False: 87]
  ------------------
 4833|      0|        return -1;
 4834|      0|    }
 4835|       |
 4836|     87|    type_new_set_slots(ctx, type);
 4837|       |
 4838|     87|    if (type_new_set_classcell(type, dict) < 0) {
  ------------------
  |  Branch (4838:9): [True: 0, False: 87]
  ------------------
 4839|      0|        return -1;
 4840|      0|    }
 4841|     87|    if (type_new_set_classdictcell(dict) < 0) {
  ------------------
  |  Branch (4841:9): [True: 0, False: 87]
  ------------------
 4842|      0|        return -1;
 4843|      0|    }
 4844|       |
 4845|       |#ifdef Py_GIL_DISABLED
 4846|       |    // enable deferred reference counting on functions and descriptors
 4847|       |    Py_ssize_t pos = 0;
 4848|       |    PyObject *key, *value;
 4849|       |    while (PyDict_Next(dict, &pos, &key, &value)) {
 4850|       |        if (PyFunction_Check(value) || Py_TYPE(value)->tp_descr_get != NULL) {
 4851|       |            PyUnstable_Object_EnableDeferredRefcount(value);
 4852|       |        }
 4853|       |    }
 4854|       |#endif
 4855|       |
 4856|     87|    return 0;
 4857|     87|}
typeobject.c:type_new_set_name:
 4452|     87|{
 4453|     87|    Py_ssize_t name_size;
 4454|     87|    type->tp_name = PyUnicode_AsUTF8AndSize(ctx->name, &name_size);
 4455|     87|    if (!type->tp_name) {
  ------------------
  |  Branch (4455:9): [True: 0, False: 87]
  ------------------
 4456|      0|        return -1;
 4457|      0|    }
 4458|     87|    if (strlen(type->tp_name) != (size_t)name_size) {
  ------------------
  |  Branch (4458:9): [True: 0, False: 87]
  ------------------
 4459|      0|        PyErr_SetString(PyExc_ValueError,
 4460|      0|                        "type name must not contain null characters");
 4461|      0|        return -1;
 4462|      0|    }
 4463|     87|    return 0;
 4464|     87|}
typeobject.c:type_new_set_module:
 4470|     87|{
 4471|     87|    int r = PyDict_Contains(dict, &_Py_ID(__module__));
  ------------------
  |  |  917|     87|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     87|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     87|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4472|     87|    if (r < 0) {
  ------------------
  |  Branch (4472:9): [True: 0, False: 87]
  ------------------
 4473|      0|        return -1;
 4474|      0|    }
 4475|     87|    if (r > 0) {
  ------------------
  |  Branch (4475:9): [True: 86, False: 1]
  ------------------
 4476|     86|        return 0;
 4477|     86|    }
 4478|       |
 4479|      1|    PyObject *globals = PyEval_GetGlobals();
 4480|      1|    if (globals == NULL) {
  ------------------
  |  Branch (4480:9): [True: 0, False: 1]
  ------------------
 4481|      0|        return 0;
 4482|      0|    }
 4483|       |
 4484|      1|    PyObject *module;
 4485|      1|    r = PyDict_GetItemRef(globals, &_Py_ID(__name__), &module);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4486|      1|    if (module) {
  ------------------
  |  Branch (4486:9): [True: 1, False: 0]
  ------------------
 4487|      1|        r = PyDict_SetItem(dict, &_Py_ID(__module__), module);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4488|      1|        Py_DECREF(module);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4489|      1|    }
 4490|      1|    return r;
 4491|      1|}
typeobject.c:type_new_set_ht_name:
 4498|     87|{
 4499|     87|    PyHeapTypeObject *et = (PyHeapTypeObject *)type;
 4500|     87|    PyObject *qualname;
 4501|     87|    if (PyDict_GetItemRef(dict, &_Py_ID(__qualname__), &qualname) < 0) {
  ------------------
  |  |  917|     87|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     87|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     87|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4501:9): [True: 0, False: 87]
  ------------------
 4502|      0|        return -1;
 4503|      0|    }
 4504|     87|    if (qualname != NULL) {
  ------------------
  |  Branch (4504:9): [True: 84, False: 3]
  ------------------
 4505|     84|        if (!PyUnicode_Check(qualname)) {
  ------------------
  |  |  103|     84|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     84|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (4505:13): [True: 0, False: 84]
  ------------------
 4506|      0|            PyErr_Format(PyExc_TypeError,
 4507|      0|                    "type __qualname__ must be a str, not %s",
 4508|      0|                    Py_TYPE(qualname)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4509|      0|            Py_DECREF(qualname);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4510|      0|            return -1;
 4511|      0|        }
 4512|     84|        et->ht_qualname = qualname;
 4513|     84|        if (PyDict_DelItem(dict, &_Py_ID(__qualname__)) < 0) {
  ------------------
  |  |  917|     84|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     84|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     84|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4513:13): [True: 0, False: 84]
  ------------------
 4514|      0|            return -1;
 4515|      0|        }
 4516|     84|    }
 4517|      3|    else {
 4518|      3|        et->ht_qualname = Py_NewRef(et->ht_name);
  ------------------
  |  |  550|      3|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4519|      3|    }
 4520|     87|    return 0;
 4521|     87|}
typeobject.c:type_new_set_doc:
 4529|     87|{
 4530|     87|    PyObject *doc = PyDict_GetItemWithError(dict, &_Py_ID(__doc__));
  ------------------
  |  |  917|     87|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     87|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     87|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4531|     87|    if (doc == NULL) {
  ------------------
  |  Branch (4531:9): [True: 41, False: 46]
  ------------------
 4532|     41|        if (PyErr_Occurred()) {
  ------------------
  |  Branch (4532:13): [True: 0, False: 41]
  ------------------
 4533|      0|            return -1;
 4534|      0|        }
 4535|       |        // no __doc__ key
 4536|     41|        return 0;
 4537|     41|    }
 4538|     46|    if (!PyUnicode_Check(doc)) {
  ------------------
  |  |  103|     46|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     46|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (4538:9): [True: 0, False: 46]
  ------------------
 4539|       |        // ignore non-string __doc__
 4540|      0|        return 0;
 4541|      0|    }
 4542|       |
 4543|     46|    const char *doc_str = PyUnicode_AsUTF8(doc);
 4544|     46|    if (doc_str == NULL) {
  ------------------
  |  Branch (4544:9): [True: 0, False: 46]
  ------------------
 4545|      0|        return -1;
 4546|      0|    }
 4547|       |
 4548|       |    // Silently truncate the docstring if it contains a null byte
 4549|     46|    Py_ssize_t size = strlen(doc_str) + 1;
 4550|     46|    char *tp_doc = (char *)PyMem_Malloc(size);
 4551|     46|    if (tp_doc == NULL) {
  ------------------
  |  Branch (4551:9): [True: 0, False: 46]
  ------------------
 4552|      0|        PyErr_NoMemory();
 4553|      0|        return -1;
 4554|      0|    }
 4555|       |
 4556|     46|    memcpy(tp_doc, doc_str, size);
 4557|     46|    type->tp_doc = tp_doc;
 4558|     46|    return 0;
 4559|     46|}
typeobject.c:type_new_staticmethod:
 4564|     87|{
 4565|     87|    PyObject *func = PyDict_GetItemWithError(dict, attr);
 4566|     87|    if (func == NULL) {
  ------------------
  |  Branch (4566:9): [True: 82, False: 5]
  ------------------
 4567|     82|        if (PyErr_Occurred()) {
  ------------------
  |  Branch (4567:13): [True: 0, False: 82]
  ------------------
 4568|      0|            return -1;
 4569|      0|        }
 4570|     82|        return 0;
 4571|     82|    }
 4572|      5|    if (!PyFunction_Check(func)) {
  ------------------
  |  |   68|      5|#define PyFunction_Check(op) Py_IS_TYPE((op), &PyFunction_Type)
  |  |  ------------------
  |  |  |  |  215|      5|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4572:9): [True: 0, False: 5]
  ------------------
 4573|      0|        return 0;
 4574|      0|    }
 4575|       |
 4576|      5|    PyObject *static_func = PyStaticMethod_New(func);
 4577|      5|    if (static_func == NULL) {
  ------------------
  |  Branch (4577:9): [True: 0, False: 5]
  ------------------
 4578|      0|        return -1;
 4579|      0|    }
 4580|      5|    if (PyDict_SetItem(dict, attr, static_func) < 0) {
  ------------------
  |  Branch (4580:9): [True: 0, False: 5]
  ------------------
 4581|      0|        Py_DECREF(static_func);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4582|      0|        return -1;
 4583|      0|    }
 4584|      5|    Py_DECREF(static_func);
  ------------------
  |  |  430|      5|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4585|      5|    return 0;
 4586|      5|}
typeobject.c:type_new_classmethod:
 4591|    174|{
 4592|    174|    PyObject *func = PyDict_GetItemWithError(dict, attr);
 4593|    174|    if (func == NULL) {
  ------------------
  |  Branch (4593:9): [True: 167, False: 7]
  ------------------
 4594|    167|        if (PyErr_Occurred()) {
  ------------------
  |  Branch (4594:13): [True: 0, False: 167]
  ------------------
 4595|      0|            return -1;
 4596|      0|        }
 4597|    167|        return 0;
 4598|    167|    }
 4599|      7|    if (!PyFunction_Check(func)) {
  ------------------
  |  |   68|      7|#define PyFunction_Check(op) Py_IS_TYPE((op), &PyFunction_Type)
  |  |  ------------------
  |  |  |  |  215|      7|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      7|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4599:9): [True: 7, False: 0]
  ------------------
 4600|      7|        return 0;
 4601|      7|    }
 4602|       |
 4603|      0|    PyObject *method = PyClassMethod_New(func);
 4604|      0|    if (method == NULL) {
  ------------------
  |  Branch (4604:9): [True: 0, False: 0]
  ------------------
 4605|      0|        return -1;
 4606|      0|    }
 4607|       |
 4608|      0|    if (PyDict_SetItem(dict, attr, method) < 0) {
  ------------------
  |  Branch (4608:9): [True: 0, False: 0]
  ------------------
 4609|      0|        Py_DECREF(method);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4610|      0|        return -1;
 4611|      0|    }
 4612|      0|    Py_DECREF(method);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4613|      0|    return 0;
 4614|      0|}
typeobject.c:type_new_descriptors:
 4646|     87|{
 4647|     87|    PyHeapTypeObject *et = (PyHeapTypeObject *)type;
 4648|     87|    Py_ssize_t slotoffset = ctx->base->tp_basicsize;
 4649|     87|    if (et->ht_slots != NULL) {
  ------------------
  |  Branch (4649:9): [True: 3, False: 84]
  ------------------
 4650|      3|        PyMemberDef *mp = _PyHeapType_GET_MEMBERS(et);
 4651|      3|        Py_ssize_t nslot = PyTuple_GET_SIZE(et->ht_slots);
  ------------------
  |  |   27|      3|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4652|      3|        int after_items = (ctx->base->tp_itemsize != 0 &&
  ------------------
  |  Branch (4652:28): [True: 0, False: 3]
  ------------------
 4653|      0|                           !(ctx->base->tp_flags & Py_TPFLAGS_ITEMS_AT_END));
  ------------------
  |  |  548|      0|#define Py_TPFLAGS_ITEMS_AT_END (1UL << 23)
  ------------------
  |  Branch (4653:28): [True: 0, False: 0]
  ------------------
 4654|      3|        if (ctx->base->tp_itemsize != 0 &&
  ------------------
  |  Branch (4654:13): [True: 0, False: 3]
  ------------------
 4655|      0|            !(ctx->base->tp_flags & Py_TPFLAGS_TUPLE_SUBCLASS))
  ------------------
  |  |  553|      0|#define Py_TPFLAGS_TUPLE_SUBCLASS       (1UL << 26)
  ------------------
  |  Branch (4655:13): [True: 0, False: 0]
  ------------------
 4656|      0|        {
 4657|      0|            PyErr_Format(PyExc_TypeError,
 4658|      0|                         "arbitrary __slots__ not supported for subtype of '%s'",
 4659|      0|                         ctx->base->tp_name);
 4660|      0|            return -1;
 4661|      0|        }
 4662|      8|        for (Py_ssize_t i = 0; i < nslot; i++, mp++) {
  ------------------
  |  Branch (4662:32): [True: 5, False: 3]
  ------------------
 4663|      5|            mp->name = PyUnicode_AsUTF8(
 4664|      5|                PyTuple_GET_ITEM(et->ht_slots, i));
  ------------------
  |  |   29|      5|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|      5|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4664:17): [True: 5, False: 0]
  ------------------
 4665|      5|            if (mp->name == NULL) {
  ------------------
  |  Branch (4665:17): [True: 0, False: 5]
  ------------------
 4666|      0|                return -1;
 4667|      0|            }
 4668|      5|            mp->type = Py_T_OBJECT_EX;
  ------------------
  |  |   75|      5|#define Py_T_OBJECT_EX 16
  ------------------
 4669|      5|            mp->offset = slotoffset;
 4670|      5|            if (after_items) {
  ------------------
  |  Branch (4670:17): [True: 0, False: 5]
  ------------------
 4671|      0|                mp->flags |= _Py_AFTER_ITEMS;
  ------------------
  |  |   89|      0|#  define _Py_AFTER_ITEMS      (1 << 4) // For internal use.
  ------------------
 4672|      0|            }
 4673|       |
 4674|       |            /* __dict__ and __weakref__ are already filtered out */
 4675|      5|            assert(strcmp(mp->name, "__dict__") != 0);
  ------------------
  |  Branch (4675:13): [True: 5, False: 0]
  ------------------
 4676|      5|            assert(strcmp(mp->name, "__weakref__") != 0);
  ------------------
  |  Branch (4676:13): [True: 5, False: 0]
  ------------------
 4677|       |
 4678|      5|            slotoffset += sizeof(PyObject *);
 4679|      5|        }
 4680|      3|    }
 4681|       |
 4682|     87|    if (ctx->add_weak) {
  ------------------
  |  Branch (4682:9): [True: 39, False: 48]
  ------------------
 4683|     39|        assert((type->tp_flags & Py_TPFLAGS_MANAGED_WEAKREF) == 0);
  ------------------
  |  Branch (4683:9): [True: 39, False: 0]
  ------------------
 4684|     39|        type_add_flags(type, Py_TPFLAGS_MANAGED_WEAKREF);
  ------------------
  |  |  477|     39|#define Py_TPFLAGS_MANAGED_WEAKREF (1 << 3)
  ------------------
 4685|     39|        type->tp_weaklistoffset = MANAGED_WEAKREF_OFFSET;
  ------------------
  |  |  926|     39|#  define MANAGED_WEAKREF_OFFSET (((Py_ssize_t)sizeof(PyObject *))*-4)
  ------------------
 4686|     39|    }
 4687|     87|    if (ctx->add_dict) {
  ------------------
  |  Branch (4687:9): [True: 31, False: 56]
  ------------------
 4688|     31|        assert((type->tp_flags & Py_TPFLAGS_MANAGED_DICT) == 0);
  ------------------
  |  Branch (4688:9): [True: 31, False: 0]
  ------------------
 4689|     31|        type_add_flags(type, Py_TPFLAGS_MANAGED_DICT);
  ------------------
  |  |  482|     31|#define Py_TPFLAGS_MANAGED_DICT (1 << 4)
  ------------------
 4690|     31|        type->tp_dictoffset = -1;
 4691|     31|    }
 4692|       |
 4693|     87|    type->tp_basicsize = slotoffset;
 4694|     87|    type->tp_itemsize = ctx->base->tp_itemsize;
 4695|     87|    type->tp_members = _PyHeapType_GET_MEMBERS(et);
 4696|       |
 4697|     87|    PyInterpreterState *interp = _PyInterpreterState_GET();
 4698|       |
 4699|     87|    if (type->tp_dictoffset) {
  ------------------
  |  Branch (4699:9): [True: 31, False: 56]
  ------------------
 4700|     31|        if (type_add_common_descriptor(
  ------------------
  |  Branch (4700:13): [True: 0, False: 31]
  ------------------
 4701|     31|            interp,
 4702|     31|            &interp->cached_objects.dict_descriptor,
 4703|     31|            &subtype_getset_dict,
 4704|     31|            dict) < 0)
 4705|      0|        {
 4706|      0|            return -1;
 4707|      0|        }
 4708|     31|    }
 4709|     87|    if (type->tp_weaklistoffset) {
  ------------------
  |  Branch (4709:9): [True: 39, False: 48]
  ------------------
 4710|     39|        if (type_add_common_descriptor(
  ------------------
  |  Branch (4710:13): [True: 0, False: 39]
  ------------------
 4711|     39|            interp,
 4712|     39|            &interp->cached_objects.weakref_descriptor,
 4713|     39|            &subtype_getset_weakref,
 4714|     39|            dict) < 0)
 4715|      0|        {
 4716|      0|            return -1;
 4717|      0|        }
 4718|     39|    }
 4719|       |
 4720|     87|    return 0;
 4721|     87|}
typeobject.c:type_add_common_descriptor:
 4622|     70|{
 4623|       |#ifdef Py_GIL_DISABLED
 4624|       |    PyMutex_Lock(&interp->cached_objects.descriptor_mutex);
 4625|       |#endif
 4626|     70|    PyObject *descr = *cache;
 4627|     70|    if (!descr) {
  ------------------
  |  Branch (4627:9): [True: 2, False: 68]
  ------------------
 4628|      2|        descr = PyDescr_NewGetSet(&PyBaseObject_Type, getset_def);
 4629|      2|        *cache = descr;
 4630|      2|    }
 4631|       |#ifdef Py_GIL_DISABLED
 4632|       |    PyMutex_Unlock(&interp->cached_objects.descriptor_mutex);
 4633|       |#endif
 4634|     70|    if (!descr) {
  ------------------
  |  Branch (4634:9): [True: 0, False: 70]
  ------------------
 4635|      0|        return -1;
 4636|      0|    }
 4637|     70|    if (PyDict_SetDefaultRef(dict, PyDescr_NAME(descr), descr, NULL) < 0) {
  ------------------
  |  |   36|     70|#define PyDescr_NAME(x) (((PyDescrObject *)(x))->d_name)
  ------------------
  |  Branch (4637:9): [True: 0, False: 70]
  ------------------
 4638|      0|        return -1;
 4639|      0|    }
 4640|     70|    return 0;
 4641|     70|}
typeobject.c:type_new_set_slots:
 4726|     87|{
 4727|     87|    type->tp_getset = NULL;
 4728|       |
 4729|       |    /* Special case some slots */
 4730|     87|    if (type->tp_dictoffset != 0 || ctx->nslot > 0) {
  ------------------
  |  Branch (4730:9): [True: 31, False: 56]
  |  Branch (4730:37): [True: 3, False: 53]
  ------------------
 4731|     34|        PyTypeObject *base = ctx->base;
 4732|     34|        if (base->tp_getattr == NULL && base->tp_getattro == NULL) {
  ------------------
  |  Branch (4732:13): [True: 34, False: 0]
  |  Branch (4732:41): [True: 0, False: 34]
  ------------------
 4733|      0|            type->tp_getattro = PyObject_GenericGetAttr;
 4734|      0|        }
 4735|     34|        if (base->tp_setattr == NULL && base->tp_setattro == NULL) {
  ------------------
  |  Branch (4735:13): [True: 34, False: 0]
  |  Branch (4735:41): [True: 0, False: 34]
  ------------------
 4736|      0|            type->tp_setattro = PyObject_GenericSetAttr;
 4737|      0|        }
 4738|     34|    }
 4739|     87|}
typeobject.c:type_new_set_classcell:
 4745|     87|{
 4746|     87|    PyObject *cell = PyDict_GetItemWithError(dict, &_Py_ID(__classcell__));
  ------------------
  |  |  917|     87|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     87|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     87|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4747|     87|    if (cell == NULL) {
  ------------------
  |  Branch (4747:9): [True: 81, False: 6]
  ------------------
 4748|     81|        if (PyErr_Occurred()) {
  ------------------
  |  Branch (4748:13): [True: 0, False: 81]
  ------------------
 4749|      0|            return -1;
 4750|      0|        }
 4751|     81|        return 0;
 4752|     81|    }
 4753|       |
 4754|       |    /* At least one method requires a reference to its defining class */
 4755|      6|    if (!PyCell_Check(cell)) {
  ------------------
  |  |   18|      6|#define PyCell_Check(op) Py_IS_TYPE((op), &PyCell_Type)
  |  |  ------------------
  |  |  |  |  215|      6|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      6|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4755:9): [True: 0, False: 6]
  ------------------
 4756|      0|        PyErr_Format(PyExc_TypeError,
 4757|      0|                     "__classcell__ must be a nonlocal cell, not %.200R",
 4758|      0|                     Py_TYPE(cell));
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4759|      0|        return -1;
 4760|      0|    }
 4761|       |
 4762|      6|    (void)PyCell_Set(cell, (PyObject *) type);
 4763|      6|    if (PyDict_DelItem(dict, &_Py_ID(__classcell__)) < 0) {
  ------------------
  |  |  917|      6|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      6|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      6|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4763:9): [True: 0, False: 6]
  ------------------
 4764|      0|        return -1;
 4765|      0|    }
 4766|      6|    return 0;
 4767|      6|}
typeobject.c:type_new_set_classdictcell:
 4771|     87|{
 4772|     87|    PyObject *cell = PyDict_GetItemWithError(dict, &_Py_ID(__classdictcell__));
  ------------------
  |  |  917|     87|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     87|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     87|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4773|     87|    if (cell == NULL) {
  ------------------
  |  Branch (4773:9): [True: 13, False: 74]
  ------------------
 4774|     13|        if (PyErr_Occurred()) {
  ------------------
  |  Branch (4774:13): [True: 0, False: 13]
  ------------------
 4775|      0|            return -1;
 4776|      0|        }
 4777|     13|        return 0;
 4778|     13|    }
 4779|       |
 4780|       |    /* At least one method requires a reference to the dict of its defining class */
 4781|     74|    if (!PyCell_Check(cell)) {
  ------------------
  |  |   18|     74|#define PyCell_Check(op) Py_IS_TYPE((op), &PyCell_Type)
  |  |  ------------------
  |  |  |  |  215|     74|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     74|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     74|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4781:9): [True: 0, False: 74]
  ------------------
 4782|      0|        PyErr_Format(PyExc_TypeError,
 4783|      0|                     "__classdictcell__ must be a nonlocal cell, not %.200R",
 4784|      0|                     Py_TYPE(cell));
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4785|      0|        return -1;
 4786|      0|    }
 4787|       |
 4788|     74|    (void)PyCell_Set(cell, (PyObject *)dict);
 4789|     74|    if (PyDict_DelItem(dict, &_Py_ID(__classdictcell__)) < 0) {
  ------------------
  |  |  917|     74|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     74|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     74|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4789:9): [True: 0, False: 74]
  ------------------
 4790|      0|        return -1;
 4791|      0|    }
 4792|     74|    return 0;
 4793|     74|}
typeobject.c:fixup_slot_dispatchers:
12101|     87|{
12102|     87|    assert(!PyErr_Occurred());
  ------------------
  |  Branch (12102:5): [True: 87, False: 0]
  ------------------
12103|  5.91k|    for (pytype_slotdef *p = slotdefs; p->name; ) {
  ------------------
  |  Branch (12103:40): [True: 5.82k, False: 87]
  ------------------
12104|       |        update_one_slot(type, p, &p, NULL);
12105|  5.82k|    }
12106|     87|}
typeobject.c:type_new_set_names:
12245|     87|{
12246|     87|    PyObject *dict = lookup_tp_dict(type);
12247|     87|    PyObject *names_to_set = PyDict_Copy(dict);
12248|     87|    if (names_to_set == NULL) {
  ------------------
  |  Branch (12248:9): [True: 0, False: 87]
  ------------------
12249|      0|        return -1;
12250|      0|    }
12251|       |
12252|     87|    Py_ssize_t i = 0;
12253|     87|    PyObject *key, *value;
12254|    935|    while (PyDict_Next(names_to_set, &i, &key, &value)) {
  ------------------
  |  Branch (12254:12): [True: 848, False: 87]
  ------------------
12255|    848|        PyObject *set_name = _PyObject_LookupSpecial(value,
12256|    848|                                                     &_Py_ID(__set_name__));
  ------------------
  |  |  917|    848|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|    848|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|    848|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12257|    848|        if (set_name == NULL) {
  ------------------
  |  Branch (12257:13): [True: 845, False: 3]
  ------------------
12258|    845|            if (PyErr_Occurred()) {
  ------------------
  |  Branch (12258:17): [True: 0, False: 845]
  ------------------
12259|      0|                goto error;
12260|      0|            }
12261|    845|            continue;
12262|    845|        }
12263|       |
12264|      3|        PyObject *res = PyObject_CallFunctionObjArgs(set_name, type, key, NULL);
12265|      3|        Py_DECREF(set_name);
  ------------------
  |  |  430|      3|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12266|       |
12267|      3|        if (res == NULL) {
  ------------------
  |  Branch (12267:13): [True: 0, False: 3]
  ------------------
12268|      0|            _PyErr_FormatNote(
12269|      0|                "Error calling __set_name__ on '%.100s' instance %R "
12270|      0|                "in '%.100s'",
12271|      0|                Py_TYPE(value)->tp_name, key, type->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12272|      0|            goto error;
12273|      0|        }
12274|      3|        else {
12275|      3|            Py_DECREF(res);
  ------------------
  |  |  430|      3|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12276|      3|        }
12277|      3|    }
12278|       |
12279|     87|    Py_DECREF(names_to_set);
  ------------------
  |  |  430|     87|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     87|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     87|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12280|     87|    return 0;
12281|       |
12282|      0|error:
12283|      0|    Py_DECREF(names_to_set);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12284|      0|    return -1;
12285|     87|}
typeobject.c:type_new_init_subclass:
12291|     87|{
12292|     87|    PyObject *args[2] = {(PyObject *)type, (PyObject *)type};
12293|     87|    PyObject *super = PyObject_Vectorcall((PyObject *)&PySuper_Type,
12294|     87|                                          args, 2, NULL);
12295|     87|    if (super == NULL) {
  ------------------
  |  Branch (12295:9): [True: 0, False: 87]
  ------------------
12296|      0|        return -1;
12297|      0|    }
12298|       |
12299|     87|    PyObject *func = PyObject_GetAttr(super, &_Py_ID(__init_subclass__));
  ------------------
  |  |  917|     87|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     87|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     87|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12300|     87|    Py_DECREF(super);
  ------------------
  |  |  430|     87|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     87|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     87|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12301|     87|    if (func == NULL) {
  ------------------
  |  Branch (12301:9): [True: 0, False: 87]
  ------------------
12302|      0|        return -1;
12303|      0|    }
12304|       |
12305|     87|    PyObject *result = PyObject_VectorcallDict(func, NULL, 0, kwds);
12306|     87|    Py_DECREF(func);
  ------------------
  |  |  430|     87|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     87|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     87|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12307|     87|    if (result == NULL) {
  ------------------
  |  Branch (12307:9): [True: 0, False: 87]
  ------------------
12308|      0|        return -1;
12309|      0|    }
12310|       |
12311|     87|    Py_DECREF(result);
  ------------------
  |  |  430|     87|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     87|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     87|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12312|     87|    return 0;
12313|     87|}
typeobject.c:type_is_gc:
 7249|  6.52k|{
 7250|  6.52k|    PyTypeObject *type = PyTypeObject_CAST(tp);
  ------------------
  |  |  200|  6.52k|#define PyTypeObject_CAST(op)   ((PyTypeObject *)(op))
  ------------------
 7251|  6.52k|    return type->tp_flags & Py_TPFLAGS_HEAPTYPE;
  ------------------
  |  |  503|  6.52k|#define Py_TPFLAGS_HEAPTYPE (1UL << 9)
  ------------------
 7252|  6.52k|}
typeobject.c:type_vectorcall:
 5109|     89|{
 5110|     89|    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
  ------------------
  |  |   37|     89|#define PyVectorcall_NARGS(n) _PyVectorcall_NARGS(n)
  ------------------
 5111|     89|    if (nargs == 1 && metatype == (PyObject *)&PyType_Type){
  ------------------
  |  Branch (5111:9): [True: 31, False: 58]
  |  Branch (5111:23): [True: 31, False: 0]
  ------------------
 5112|     31|        if (!_PyArg_NoKwnames("type", kwnames)) {
  ------------------
  |  |   15|     31|    ((kwnames) == NULL || _PyArg_NoKwnames((funcname), (kwnames)))
  |  |  ------------------
  |  |  |  Branch (15:6): [True: 31, False: 0]
  |  |  |  Branch (15:27): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5113|      0|            return NULL;
 5114|      0|        }
 5115|     31|        return Py_NewRef(Py_TYPE(args[0]));
  ------------------
  |  |  550|     31|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     31|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     31|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5116|     31|    }
 5117|       |    /* In other (much less common) cases, fall back to
 5118|       |       more flexible calling conventions. */
 5119|     58|    PyThreadState *tstate = _PyThreadState_GET();
 5120|     58|    return _PyObject_MakeTpCall(tstate, metatype, args, nargs, kwnames);
 5121|     89|}
typeobject.c:object_dealloc:
 7446|  1.23k|{
 7447|  1.23k|    Py_TYPE(self)->tp_free(self);
  ------------------
  |  |  213|  1.23k|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  1.23k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.23k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7448|  1.23k|}
typeobject.c:object_str:
 7480|     11|{
 7481|     11|    unaryfunc f;
 7482|       |
 7483|     11|    f = Py_TYPE(self)->tp_repr;
  ------------------
  |  |  213|     11|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     11|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     11|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7484|     11|    if (f == NULL)
  ------------------
  |  Branch (7484:9): [True: 0, False: 11]
  ------------------
 7485|      0|        f = object_repr;
 7486|     11|    return f(self);
 7487|     11|}
typeobject.c:object_init_subclass:
 8392|     87|{
 8393|     87|    Py_RETURN_NONE;
  ------------------
  |  |  628|     87|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|     87|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
 8394|     87|}
typeobject.c:object_get_class:
 7541|     26|{
 7542|     26|    return Py_NewRef(Py_TYPE(self));
  ------------------
  |  |  550|     26|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     26|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     26|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7543|     26|}
typeobject.c:object_init:
 7356|     73|{
 7357|     73|    PyTypeObject *type = Py_TYPE(self);
  ------------------
  |  |  213|     73|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     73|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     73|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7358|     73|    if (excess_args(args, kwds)) {
  ------------------
  |  Branch (7358:9): [True: 1, False: 72]
  ------------------
 7359|      1|        if (type->tp_init != object_init) {
  ------------------
  |  Branch (7359:13): [True: 0, False: 1]
  ------------------
 7360|      0|            PyErr_SetString(PyExc_TypeError,
 7361|      0|                            "object.__init__() takes exactly one argument (the instance to initialize)");
 7362|      0|            return -1;
 7363|      0|        }
 7364|      1|        if (type->tp_new == object_new) {
  ------------------
  |  Branch (7364:13): [True: 0, False: 1]
  ------------------
 7365|      0|            PyErr_Format(PyExc_TypeError,
 7366|      0|                         "%.200s.__init__() takes exactly one argument (the instance to initialize)",
 7367|      0|                         type->tp_name);
 7368|      0|            return -1;
 7369|      0|        }
 7370|      1|    }
 7371|     73|    return 0;
 7372|     73|}
typeobject.c:excess_args:
 7349|    182|{
 7350|    182|    return PyTuple_GET_SIZE(args) ||
  ------------------
  |  |   27|    364|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    182|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    182|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (27:30): [True: 58, False: 124]
  |  |  ------------------
  ------------------
 7351|    124|        (kwds && PyDict_Check(kwds) && PyDict_GET_SIZE(kwds));
  ------------------
  |  |   18|      1|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|    125|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      (kwds && PyDict_Check(kwds) && PyDict_GET_SIZE(kwds));
  ------------------
  |  |   63|      1|#define PyDict_GET_SIZE(op) PyDict_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (63:29): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (7351:10): [True: 1, False: 123]
  ------------------
 7352|    182|}
typeobject.c:object_new:
 7376|    109|{
 7377|    109|    if (excess_args(args, kwds)) {
  ------------------
  |  Branch (7377:9): [True: 58, False: 51]
  ------------------
 7378|     58|        if (type->tp_new != object_new) {
  ------------------
  |  Branch (7378:13): [True: 0, False: 58]
  ------------------
 7379|      0|            PyErr_SetString(PyExc_TypeError,
 7380|      0|                            "object.__new__() takes exactly one argument (the type to instantiate)");
 7381|      0|            return NULL;
 7382|      0|        }
 7383|     58|        if (type->tp_init == object_init) {
  ------------------
  |  Branch (7383:13): [True: 0, False: 58]
  ------------------
 7384|      0|            PyErr_Format(PyExc_TypeError, "%.200s() takes no arguments",
 7385|      0|                         type->tp_name);
 7386|      0|            return NULL;
 7387|      0|        }
 7388|     58|    }
 7389|       |
 7390|    109|    if (type->tp_flags & Py_TPFLAGS_IS_ABSTRACT) {
  ------------------
  |  |  540|    109|#define Py_TPFLAGS_IS_ABSTRACT (1UL << 20)
  ------------------
  |  Branch (7390:9): [True: 0, False: 109]
  ------------------
 7391|      0|        PyObject *abstract_methods;
 7392|      0|        PyObject *sorted_methods;
 7393|      0|        PyObject *joined;
 7394|      0|        PyObject* comma_w_quotes_sep;
 7395|      0|        Py_ssize_t method_count;
 7396|       |
 7397|       |        /* Compute "', '".join(sorted(type.__abstractmethods__))
 7398|       |           into joined. */
 7399|      0|        abstract_methods = type_abstractmethods((PyObject *)type, NULL);
 7400|      0|        if (abstract_methods == NULL)
  ------------------
  |  Branch (7400:13): [True: 0, False: 0]
  ------------------
 7401|      0|            return NULL;
 7402|      0|        sorted_methods = PySequence_List(abstract_methods);
 7403|      0|        Py_DECREF(abstract_methods);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7404|      0|        if (sorted_methods == NULL)
  ------------------
  |  Branch (7404:13): [True: 0, False: 0]
  ------------------
 7405|      0|            return NULL;
 7406|      0|        if (PyList_Sort(sorted_methods)) {
  ------------------
  |  Branch (7406:13): [True: 0, False: 0]
  ------------------
 7407|      0|            Py_DECREF(sorted_methods);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7408|      0|            return NULL;
 7409|      0|        }
 7410|      0|        comma_w_quotes_sep = PyUnicode_FromString("', '");
 7411|      0|        if (!comma_w_quotes_sep) {
  ------------------
  |  Branch (7411:13): [True: 0, False: 0]
  ------------------
 7412|      0|            Py_DECREF(sorted_methods);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7413|      0|            return NULL;
 7414|      0|        }
 7415|      0|        joined = PyUnicode_Join(comma_w_quotes_sep, sorted_methods);
 7416|      0|        Py_DECREF(comma_w_quotes_sep);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7417|      0|        if (joined == NULL)  {
  ------------------
  |  Branch (7417:13): [True: 0, False: 0]
  ------------------
 7418|      0|            Py_DECREF(sorted_methods);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7419|      0|            return NULL;
 7420|      0|        }
 7421|      0|        method_count = PyObject_Length(sorted_methods);
  ------------------
  |  |  353|      0|#define PyObject_Length PyObject_Size
  ------------------
 7422|      0|        Py_DECREF(sorted_methods);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7423|      0|        if (method_count == -1) {
  ------------------
  |  Branch (7423:13): [True: 0, False: 0]
  ------------------
 7424|      0|            Py_DECREF(joined);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7425|      0|            return NULL;
 7426|      0|        }
 7427|       |
 7428|      0|        PyErr_Format(PyExc_TypeError,
 7429|      0|                     "Can't instantiate abstract class %s "
 7430|      0|                     "without an implementation for abstract method%s '%U'",
 7431|      0|                     type->tp_name,
 7432|      0|                     method_count > 1 ? "s" : "",
  ------------------
  |  Branch (7432:22): [True: 0, False: 0]
  ------------------
 7433|      0|                     joined);
 7434|      0|        Py_DECREF(joined);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7435|      0|        return NULL;
 7436|      0|    }
 7437|    109|    PyObject *obj = type->tp_alloc(type, 0);
 7438|    109|    if (obj == NULL) {
  ------------------
  |  Branch (7438:9): [True: 0, False: 109]
  ------------------
 7439|      0|        return NULL;
 7440|      0|    }
 7441|    109|    return obj;
 7442|    109|}
typeobject.c:type_add_method:
 8571|    832|{
 8572|    832|    PyObject *descr;
 8573|    832|    int isdescr = 1;
 8574|    832|    if (meth->ml_flags & METH_CLASS) {
  ------------------
  |  |  104|    832|#define METH_CLASS    0x0010
  ------------------
  |  Branch (8574:9): [True: 54, False: 778]
  ------------------
 8575|     54|        if (meth->ml_flags & METH_STATIC) {
  ------------------
  |  |  105|     54|#define METH_STATIC   0x0020
  ------------------
  |  Branch (8575:13): [True: 0, False: 54]
  ------------------
 8576|      0|            PyErr_SetString(PyExc_ValueError,
 8577|      0|                    "method cannot be both class and static");
 8578|      0|            return -1;
 8579|      0|        }
 8580|     54|        descr = PyDescr_NewClassMethod(type, meth);
 8581|     54|    }
 8582|    778|    else if (meth->ml_flags & METH_STATIC) {
  ------------------
  |  |  105|    778|#define METH_STATIC   0x0020
  ------------------
  |  Branch (8582:14): [True: 3, False: 775]
  ------------------
 8583|      3|        PyObject *mod = type_module(type);
 8584|      3|        if (mod == NULL) {
  ------------------
  |  Branch (8584:13): [True: 0, False: 3]
  ------------------
 8585|      0|            if (!PyErr_ExceptionMatches(PyExc_AttributeError)) {
  ------------------
  |  Branch (8585:17): [True: 0, False: 0]
  ------------------
 8586|      0|                return -1;
 8587|      0|            }
 8588|      0|            PyErr_Clear();
 8589|      0|        }
 8590|      3|        PyObject *cfunc = PyCFunction_NewEx(meth, (PyObject*)type, mod);
  ------------------
  |  |   87|      3|#define PyCFunction_NewEx(ML, SELF, MOD) PyCMethod_New((ML), (SELF), (MOD), NULL)
  ------------------
 8591|      3|        Py_XDECREF(mod);
  ------------------
  |  |  524|      3|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8592|      3|        if (cfunc == NULL) {
  ------------------
  |  Branch (8592:13): [True: 0, False: 3]
  ------------------
 8593|      0|            return -1;
 8594|      0|        }
 8595|      3|        descr = PyStaticMethod_New(cfunc);
 8596|      3|        isdescr = 0;  // PyStaticMethod is not PyDescrObject
 8597|      3|        Py_DECREF(cfunc);
  ------------------
  |  |  430|      3|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8598|      3|    }
 8599|    775|    else {
 8600|    775|        descr = PyDescr_NewMethod(type, meth);
 8601|    775|    }
 8602|    832|    if (descr == NULL) {
  ------------------
  |  Branch (8602:9): [True: 0, False: 832]
  ------------------
 8603|      0|        return -1;
 8604|      0|    }
 8605|       |
 8606|    832|    PyObject *name;
 8607|    832|    if (isdescr) {
  ------------------
  |  Branch (8607:9): [True: 829, False: 3]
  ------------------
 8608|    829|        name = PyDescr_NAME(descr);
  ------------------
  |  |   36|    829|#define PyDescr_NAME(x) (((PyDescrObject *)(x))->d_name)
  ------------------
 8609|    829|    }
 8610|      3|    else {
 8611|      3|        name = PyUnicode_FromString(meth->ml_name);
 8612|      3|        if (name == NULL) {
  ------------------
  |  Branch (8612:13): [True: 0, False: 3]
  ------------------
 8613|      0|            Py_DECREF(descr);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8614|      0|            return -1;
 8615|      0|        }
 8616|      3|    }
 8617|       |
 8618|    832|    int err;
 8619|    832|    PyObject *dict = lookup_tp_dict(type);
 8620|    832|    if (!(meth->ml_flags & METH_COEXIST)) {
  ------------------
  |  |  112|    832|#define METH_COEXIST   0x0040
  ------------------
  |  Branch (8620:9): [True: 822, False: 10]
  ------------------
 8621|    822|        err = PyDict_SetDefaultRef(dict, name, descr, NULL) < 0;
 8622|    822|    }
 8623|     10|    else {
 8624|     10|        err = PyDict_SetItem(dict, name, descr) < 0;
 8625|     10|    }
 8626|    832|    if (!isdescr) {
  ------------------
  |  Branch (8626:9): [True: 3, False: 829]
  ------------------
 8627|      3|        Py_DECREF(name);
  ------------------
  |  |  430|      3|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8628|      3|    }
 8629|    832|    Py_DECREF(descr);
  ------------------
  |  |  430|    832|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    832|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    832|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8630|    832|    if (err) {
  ------------------
  |  Branch (8630:9): [True: 0, False: 832]
  ------------------
 8631|      0|        return -1;
 8632|      0|    }
 8633|    832|    return 0;
 8634|    832|}
typeobject.c:type_add_flags:
  471|  2.39k|{
  472|  2.39k|    type_set_flags(tp, tp->tp_flags | flag);
  473|  2.39k|}
typeobject.c:type_ready:
 9498|    333|{
 9499|    333|    ASSERT_TYPE_LOCK_HELD();
 9500|       |
 9501|    333|    _PyObject_ASSERT((PyObject *)type, !is_readying(type));
  ------------------
  |  |  423|    333|    _PyObject_ASSERT_WITH_MSG((obj), expr, NULL)
  |  |  ------------------
  |  |  |  |  421|    333|    _PyObject_ASSERT_FROM((obj), expr, (msg), __FILE__, __LINE__, __func__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  414|    333|    ((expr) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (414:6): [True: 333, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  415|    333|      ? (void)(0) \
  |  |  |  |  |  |  416|    333|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9502|    333|    start_readying(type);
 9503|       |
 9504|    333|    if (type_ready_pre_checks(type) < 0) {
  ------------------
  |  Branch (9504:9): [True: 0, False: 333]
  ------------------
 9505|      0|        goto error;
 9506|      0|    }
 9507|       |
 9508|       |#ifdef Py_TRACE_REFS
 9509|       |    /* PyType_Ready is the closest thing we have to a choke point
 9510|       |     * for type objects, so is the best place I can think of to try
 9511|       |     * to get type objects into the doubly-linked list of all objects.
 9512|       |     * Still, not all type objects go through PyType_Ready.
 9513|       |     */
 9514|       |    _Py_AddToAllObjects((PyObject *)type);
 9515|       |#endif
 9516|       |
 9517|       |    /* Initialize tp_dict: _PyType_IsReady() tests if tp_dict != NULL */
 9518|    333|    if (type_ready_set_dict(type) < 0) {
  ------------------
  |  Branch (9518:9): [True: 0, False: 333]
  ------------------
 9519|      0|        goto error;
 9520|      0|    }
 9521|    333|    if (type_ready_set_base(type) < 0) {
  ------------------
  |  Branch (9521:9): [True: 0, False: 333]
  ------------------
 9522|      0|        goto error;
 9523|      0|    }
 9524|    333|    if (type_ready_set_type(type) < 0) {
  ------------------
  |  Branch (9524:9): [True: 0, False: 333]
  ------------------
 9525|      0|        goto error;
 9526|      0|    }
 9527|    333|    if (type_ready_set_bases(type, initial) < 0) {
  ------------------
  |  Branch (9527:9): [True: 0, False: 333]
  ------------------
 9528|      0|        goto error;
 9529|      0|    }
 9530|    333|    if (type_ready_mro(type, initial) < 0) {
  ------------------
  |  Branch (9530:9): [True: 0, False: 333]
  ------------------
 9531|      0|        goto error;
 9532|      0|    }
 9533|    333|    if (type_ready_set_new(type, initial) < 0) {
  ------------------
  |  Branch (9533:9): [True: 0, False: 333]
  ------------------
 9534|      0|        goto error;
 9535|      0|    }
 9536|    333|    if (type_ready_fill_dict(type) < 0) {
  ------------------
  |  Branch (9536:9): [True: 0, False: 333]
  ------------------
 9537|      0|        goto error;
 9538|      0|    }
 9539|    333|    if (initial) {
  ------------------
  |  Branch (9539:9): [True: 333, False: 0]
  ------------------
 9540|    333|        if (type_ready_inherit(type) < 0) {
  ------------------
  |  Branch (9540:13): [True: 0, False: 333]
  ------------------
 9541|      0|            goto error;
 9542|      0|        }
 9543|    333|        if (type_ready_preheader(type) < 0) {
  ------------------
  |  Branch (9543:13): [True: 0, False: 333]
  ------------------
 9544|      0|            goto error;
 9545|      0|        }
 9546|    333|    }
 9547|    333|    if (type_ready_set_hash(type) < 0) {
  ------------------
  |  Branch (9547:9): [True: 0, False: 333]
  ------------------
 9548|      0|        goto error;
 9549|      0|    }
 9550|    333|    if (type_ready_add_subclasses(type) < 0) {
  ------------------
  |  Branch (9550:9): [True: 0, False: 333]
  ------------------
 9551|      0|        goto error;
 9552|      0|    }
 9553|    333|    if (initial) {
  ------------------
  |  Branch (9553:9): [True: 333, False: 0]
  ------------------
 9554|    333|        if (type_ready_managed_dict(type) < 0) {
  ------------------
  |  Branch (9554:13): [True: 0, False: 333]
  ------------------
 9555|      0|            goto error;
 9556|      0|        }
 9557|    333|        if (type_ready_post_checks(type) < 0) {
  ------------------
  |  Branch (9557:13): [True: 0, False: 333]
  ------------------
 9558|      0|            goto error;
 9559|      0|        }
 9560|    333|    }
 9561|       |
 9562|       |    /* All done -- set the ready flag */
 9563|    333|    if (initial) {
  ------------------
  |  Branch (9563:9): [True: 333, False: 0]
  ------------------
 9564|    333|        type_add_flags(type, Py_TPFLAGS_READY);
  ------------------
  |  |  518|    333|#define Py_TPFLAGS_READY (1UL << 12)
  ------------------
 9565|    333|    } else {
 9566|      0|        assert(type->tp_flags & Py_TPFLAGS_READY);
  ------------------
  |  Branch (9566:9): [True: 0, False: 0]
  ------------------
 9567|      0|    }
 9568|       |
 9569|    333|    stop_readying(type);
 9570|       |
 9571|    333|    assert(_PyType_CheckConsistency(type));
  ------------------
  |  Branch (9571:5): [True: 333, False: 0]
  ------------------
 9572|    333|    return 0;
 9573|       |
 9574|      0|error:
 9575|      0|    stop_readying(type);
 9576|      0|    return -1;
 9577|    333|}
typeobject.c:start_readying:
  483|    333|{
  484|    333|    if (type->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN) {
  ------------------
  |  |  467|    333|#define _Py_TPFLAGS_STATIC_BUILTIN (1 << 1)
  ------------------
  |  Branch (484:9): [True: 207, False: 126]
  ------------------
  485|    207|        PyInterpreterState *interp = _PyInterpreterState_GET();
  486|    207|        managed_static_type_state *state = managed_static_type_state_get(interp, type);
  487|    207|        assert(state != NULL);
  ------------------
  |  Branch (487:9): [True: 207, False: 0]
  ------------------
  488|    207|        assert(!state->readying);
  ------------------
  |  Branch (488:9): [True: 207, False: 0]
  ------------------
  489|    207|        state->readying = 1;
  490|    207|        return;
  491|    207|    }
  492|    333|    assert((type->tp_flags & Py_TPFLAGS_READYING) == 0);
  ------------------
  |  Branch (492:5): [True: 126, False: 0]
  ------------------
  493|    126|    type_add_flags(type, Py_TPFLAGS_READYING);
  ------------------
  |  |  521|    126|#define Py_TPFLAGS_READYING (1UL << 13)
  ------------------
  494|    126|}
typeobject.c:type_ready_pre_checks:
 8993|    333|{
 8994|       |    /* Consistency checks for PEP 590:
 8995|       |     * - Py_TPFLAGS_METHOD_DESCRIPTOR requires tp_descr_get
 8996|       |     * - Py_TPFLAGS_HAVE_VECTORCALL requires tp_call and
 8997|       |     *   tp_vectorcall_offset > 0
 8998|       |     * To avoid mistakes, we require this before inheriting.
 8999|       |     */
 9000|    333|    if (type->tp_flags & Py_TPFLAGS_METHOD_DESCRIPTOR) {
  ------------------
  |  |  534|    333|#define Py_TPFLAGS_METHOD_DESCRIPTOR (1UL << 17)
  ------------------
  |  Branch (9000:9): [True: 3, False: 330]
  ------------------
 9001|      3|        _PyObject_ASSERT((PyObject *)type, type->tp_descr_get != NULL);
  ------------------
  |  |  423|      3|    _PyObject_ASSERT_WITH_MSG((obj), expr, NULL)
  |  |  ------------------
  |  |  |  |  421|      3|    _PyObject_ASSERT_FROM((obj), expr, (msg), __FILE__, __LINE__, __func__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  414|      3|    ((expr) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (414:6): [True: 3, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  415|      3|      ? (void)(0) \
  |  |  |  |  |  |  416|      3|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9002|      3|    }
 9003|    333|    if (type->tp_flags & Py_TPFLAGS_HAVE_VECTORCALL) {
  ------------------
  |  |  510|    333|#define Py_TPFLAGS_HAVE_VECTORCALL (1UL << 11)
  ------------------
  |  Branch (9003:9): [True: 8, False: 325]
  ------------------
 9004|      8|        _PyObject_ASSERT((PyObject *)type, type->tp_vectorcall_offset > 0);
  ------------------
  |  |  423|      8|    _PyObject_ASSERT_WITH_MSG((obj), expr, NULL)
  |  |  ------------------
  |  |  |  |  421|      8|    _PyObject_ASSERT_FROM((obj), expr, (msg), __FILE__, __LINE__, __func__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  414|      8|    ((expr) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (414:6): [True: 8, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  415|      8|      ? (void)(0) \
  |  |  |  |  |  |  416|      8|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9005|      8|        _PyObject_ASSERT((PyObject *)type, type->tp_call != NULL);
  ------------------
  |  |  423|      8|    _PyObject_ASSERT_WITH_MSG((obj), expr, NULL)
  |  |  ------------------
  |  |  |  |  421|      8|    _PyObject_ASSERT_FROM((obj), expr, (msg), __FILE__, __LINE__, __func__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  414|      8|    ((expr) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (414:6): [True: 8, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  415|      8|      ? (void)(0) \
  |  |  |  |  |  |  416|      8|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9006|      8|    }
 9007|       |
 9008|       |    /* Consistency checks for pattern matching
 9009|       |     * Py_TPFLAGS_SEQUENCE and Py_TPFLAGS_MAPPING are mutually exclusive */
 9010|    333|    _PyObject_ASSERT((PyObject *)type, (type->tp_flags & COLLECTION_FLAGS) != COLLECTION_FLAGS);
  ------------------
  |  |  423|    333|    _PyObject_ASSERT_WITH_MSG((obj), expr, NULL)
  |  |  ------------------
  |  |  |  |  421|    333|    _PyObject_ASSERT_FROM((obj), expr, (msg), __FILE__, __LINE__, __func__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  414|    333|    ((expr) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (414:6): [True: 333, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  415|    333|      ? (void)(0) \
  |  |  |  |  |  |  416|    333|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9011|       |
 9012|    333|    if (type->tp_name == NULL) {
  ------------------
  |  Branch (9012:9): [True: 0, False: 333]
  ------------------
 9013|      0|        PyErr_Format(PyExc_SystemError,
 9014|      0|                     "Type does not define the tp_name field.");
 9015|      0|        return -1;
 9016|      0|    }
 9017|    333|    return 0;
 9018|    333|}
typeobject.c:type_ready_set_dict:
 9099|    333|{
 9100|    333|    if (lookup_tp_dict(type) != NULL) {
  ------------------
  |  Branch (9100:9): [True: 87, False: 246]
  ------------------
 9101|     87|        return 0;
 9102|     87|    }
 9103|       |
 9104|    246|    PyObject *dict = PyDict_New();
 9105|    246|    if (dict == NULL) {
  ------------------
  |  Branch (9105:9): [True: 0, False: 246]
  ------------------
 9106|      0|        return -1;
 9107|      0|    }
 9108|    246|    set_tp_dict(type, dict);
 9109|    246|    return 0;
 9110|    246|}
typeobject.c:type_ready_set_base:
 9023|    333|{
 9024|       |    /* Initialize tp_base (defaults to BaseObject unless that's us) */
 9025|    333|    PyTypeObject *base = type->tp_base;
 9026|    333|    if (base == NULL && type != &PyBaseObject_Type) {
  ------------------
  |  Branch (9026:9): [True: 121, False: 212]
  |  Branch (9026:25): [True: 120, False: 1]
  ------------------
 9027|    120|        base = &PyBaseObject_Type;
 9028|    120|        if (type->tp_flags & Py_TPFLAGS_HEAPTYPE) {
  ------------------
  |  |  503|    120|#define Py_TPFLAGS_HEAPTYPE (1UL << 9)
  ------------------
  |  Branch (9028:13): [True: 0, False: 120]
  ------------------
 9029|      0|            type->tp_base = (PyTypeObject*)Py_NewRef((PyObject*)base);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9030|      0|        }
 9031|    120|        else {
 9032|    120|            type->tp_base = base;
 9033|    120|        }
 9034|    120|    }
 9035|    333|    assert(type->tp_base != NULL || type == &PyBaseObject_Type);
  ------------------
  |  Branch (9035:5): [True: 332, False: 1]
  |  Branch (9035:5): [True: 1, False: 0]
  ------------------
 9036|       |
 9037|       |    /* Now the only way base can still be NULL is if type is
 9038|       |     * &PyBaseObject_Type. */
 9039|       |
 9040|       |    /* Initialize the base class */
 9041|    333|    if (base != NULL && !_PyType_IsReady(base)) {
  ------------------
  |  Branch (9041:9): [True: 332, False: 1]
  |  Branch (9041:25): [True: 0, False: 332]
  ------------------
 9042|      0|        if (PyType_Ready(base) < 0) {
  ------------------
  |  Branch (9042:13): [True: 0, False: 0]
  ------------------
 9043|      0|            return -1;
 9044|      0|        }
 9045|      0|    }
 9046|       |
 9047|    333|    return 0;
 9048|    333|}
typeobject.c:type_ready_set_type:
 9052|    333|{
 9053|       |    /* Initialize ob_type if NULL.      This means extensions that want to be
 9054|       |       compilable separately on Windows can call PyType_Ready() instead of
 9055|       |       initializing the ob_type field of their type objects. */
 9056|       |    /* The test for base != NULL is really unnecessary, since base is only
 9057|       |       NULL when type is &PyBaseObject_Type, and we know its ob_type is
 9058|       |       not NULL (it's initialized to &PyType_Type).      But coverity doesn't
 9059|       |       know that. */
 9060|    333|    PyTypeObject *base = type->tp_base;
 9061|    333|    if (Py_IS_TYPE(type, NULL) && base != NULL) {
  ------------------
  |  |  215|    666|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|    333|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    333|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 85, False: 248]
  |  |  ------------------
  ------------------
  |  Branch (9061:35): [True: 85, False: 0]
  ------------------
 9062|     85|        Py_SET_TYPE(type, Py_TYPE(base));
  ------------------
  |  |  217|     85|#  define Py_SET_TYPE(ob, type) Py_SET_TYPE(_PyObject_CAST(ob), type)
  |  |  ------------------
  |  |  |  |  171|     85|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     85|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9063|     85|    }
 9064|       |
 9065|    333|    return 0;
 9066|    333|}
typeobject.c:type_ready_set_bases:
 9070|    333|{
 9071|    333|    if (type->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN) {
  ------------------
  |  |  467|    333|#define _Py_TPFLAGS_STATIC_BUILTIN (1 << 1)
  ------------------
  |  Branch (9071:9): [True: 207, False: 126]
  ------------------
 9072|    207|        if (!initial) {
  ------------------
  |  Branch (9072:13): [True: 0, False: 207]
  ------------------
 9073|      0|            assert(lookup_tp_bases(type) != NULL);
  ------------------
  |  Branch (9073:13): [True: 0, False: 0]
  ------------------
 9074|      0|            return 0;
 9075|      0|        }
 9076|    207|        assert(lookup_tp_bases(type) == NULL);
  ------------------
  |  Branch (9076:9): [True: 207, False: 0]
  ------------------
 9077|    207|    }
 9078|       |
 9079|    333|    PyObject *bases = lookup_tp_bases(type);
 9080|    333|    if (bases == NULL) {
  ------------------
  |  Branch (9080:9): [True: 207, False: 126]
  ------------------
 9081|    207|        PyTypeObject *base = type->tp_base;
 9082|    207|        if (base == NULL) {
  ------------------
  |  Branch (9082:13): [True: 1, False: 206]
  ------------------
 9083|      1|            bases = PyTuple_New(0);
 9084|      1|        }
 9085|    206|        else {
 9086|    206|            bases = PyTuple_Pack(1, base);
 9087|    206|        }
 9088|    207|        if (bases == NULL) {
  ------------------
  |  Branch (9088:13): [True: 0, False: 207]
  ------------------
 9089|      0|            return -1;
 9090|      0|        }
 9091|    207|        set_tp_bases(type, bases, 1);
 9092|    207|    }
 9093|    333|    return 0;
 9094|    333|}
typeobject.c:type_ready_mro:
 9216|    333|{
 9217|    333|    ASSERT_TYPE_LOCK_HELD();
 9218|       |
 9219|    333|    if (type->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN) {
  ------------------
  |  |  467|    333|#define _Py_TPFLAGS_STATIC_BUILTIN (1 << 1)
  ------------------
  |  Branch (9219:9): [True: 207, False: 126]
  ------------------
 9220|    207|        if (!initial) {
  ------------------
  |  Branch (9220:13): [True: 0, False: 207]
  ------------------
 9221|      0|            assert(lookup_tp_mro(type) != NULL);
  ------------------
  |  Branch (9221:13): [True: 0, False: 0]
  ------------------
 9222|      0|            return 0;
 9223|      0|        }
 9224|    207|        assert(lookup_tp_mro(type) == NULL);
  ------------------
  |  Branch (9224:9): [True: 207, False: 0]
  ------------------
 9225|    207|    }
 9226|       |
 9227|       |    /* Calculate method resolution order */
 9228|    333|    if (mro_internal(type, initial, NULL) < 0) {
  ------------------
  |  Branch (9228:9): [True: 0, False: 333]
  ------------------
 9229|      0|        return -1;
 9230|      0|    }
 9231|    333|    PyObject *mro = lookup_tp_mro(type);
 9232|    333|    assert(mro != NULL);
  ------------------
  |  Branch (9232:5): [True: 333, False: 0]
  ------------------
 9233|    333|    assert(PyTuple_Check(mro));
  ------------------
  |  Branch (9233:5): [True: 333, False: 0]
  ------------------
 9234|       |
 9235|       |    /* All bases of statically allocated type should be statically allocated,
 9236|       |       and static builtin types must have static builtin bases. */
 9237|    333|    if (!(type->tp_flags & Py_TPFLAGS_HEAPTYPE)) {
  ------------------
  |  |  503|    333|#define Py_TPFLAGS_HEAPTYPE (1UL << 9)
  ------------------
  |  Branch (9237:9): [True: 207, False: 126]
  ------------------
 9238|    207|        assert(type->tp_flags & Py_TPFLAGS_IMMUTABLETYPE);
  ------------------
  |  Branch (9238:9): [True: 207, False: 0]
  ------------------
 9239|    207|        Py_ssize_t n = PyTuple_GET_SIZE(mro);
  ------------------
  |  |   27|    207|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    207|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    207|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9240|    824|        for (Py_ssize_t i = 0; i < n; i++) {
  ------------------
  |  Branch (9240:32): [True: 617, False: 207]
  ------------------
 9241|  1.23k|            PyTypeObject *base = _PyType_CAST(PyTuple_GET_ITEM(mro, i));
  ------------------
  |  |  770|    617|    (assert(PyType_Check(op)), _Py_CAST(PyTypeObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|  1.23k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (37:38): [True: 617, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (9241:34): [True: 617, False: 0]
  |  Branch (9241:34): [True: 617, False: 0]
  ------------------
 9242|    617|            if (base->tp_flags & Py_TPFLAGS_HEAPTYPE) {
  ------------------
  |  |  503|    617|#define Py_TPFLAGS_HEAPTYPE (1UL << 9)
  ------------------
  |  Branch (9242:17): [True: 0, False: 617]
  ------------------
 9243|      0|                PyErr_Format(PyExc_TypeError,
 9244|      0|                             "type '%.100s' is not dynamically allocated but "
 9245|      0|                             "its base type '%.100s' is dynamically allocated",
 9246|      0|                             type->tp_name, base->tp_name);
 9247|      0|                return -1;
 9248|      0|            }
 9249|  1.23k|            assert(!(type->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN) ||
  ------------------
  |  Branch (9249:13): [True: 0, False: 617]
  |  Branch (9249:13): [True: 617, False: 0]
  ------------------
 9250|    617|                   (base->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN));
 9251|    617|        }
 9252|    207|    }
 9253|    333|    return 0;
 9254|    333|}
typeobject.c:type_ready_set_new:
 9385|    333|{
 9386|    333|    PyTypeObject *base = type->tp_base;
 9387|       |    /* The condition below could use some explanation.
 9388|       |
 9389|       |       It appears that tp_new is not inherited for static types whose base
 9390|       |       class is 'object'; this seems to be a precaution so that old extension
 9391|       |       types don't suddenly become callable (object.__new__ wouldn't insure the
 9392|       |       invariants that the extension type's own factory function ensures).
 9393|       |
 9394|       |       Heap types, of course, are under our control, so they do inherit tp_new;
 9395|       |       static extension types that specify some other built-in type as the
 9396|       |       default also inherit object.__new__. */
 9397|    333|    if (type->tp_new == NULL
  ------------------
  |  Branch (9397:9): [True: 203, False: 130]
  ------------------
 9398|    203|        && base == &PyBaseObject_Type
  ------------------
  |  Branch (9398:12): [True: 111, False: 92]
  ------------------
 9399|    111|        && !(type->tp_flags & Py_TPFLAGS_HEAPTYPE))
  ------------------
  |  |  503|    111|#define Py_TPFLAGS_HEAPTYPE (1UL << 9)
  ------------------
  |  Branch (9399:12): [True: 64, False: 47]
  ------------------
 9400|     64|    {
 9401|     64|        if (initial) {
  ------------------
  |  Branch (9401:13): [True: 64, False: 0]
  ------------------
 9402|     64|            type_add_flags(type, Py_TPFLAGS_DISALLOW_INSTANTIATION);
  ------------------
  |  |  497|     64|#define Py_TPFLAGS_DISALLOW_INSTANTIATION (1UL << 7)
  ------------------
 9403|     64|        } else {
 9404|      0|            assert(type->tp_flags & Py_TPFLAGS_DISALLOW_INSTANTIATION);
  ------------------
  |  Branch (9404:13): [True: 0, False: 0]
  ------------------
 9405|      0|        }
 9406|     64|    }
 9407|       |
 9408|    333|    if (!(type->tp_flags & Py_TPFLAGS_DISALLOW_INSTANTIATION)) {
  ------------------
  |  |  497|    333|#define Py_TPFLAGS_DISALLOW_INSTANTIATION (1UL << 7)
  ------------------
  |  Branch (9408:9): [True: 261, False: 72]
  ------------------
 9409|    261|        if (type->tp_new != NULL) {
  ------------------
  |  Branch (9409:13): [True: 128, False: 133]
  ------------------
 9410|    128|            if (initial || base == NULL || type->tp_new != base->tp_new) {
  ------------------
  |  Branch (9410:17): [True: 128, False: 0]
  |  Branch (9410:28): [True: 0, False: 0]
  |  Branch (9410:44): [True: 0, False: 0]
  ------------------
 9411|       |                // If "__new__" key does not exists in the type dictionary,
 9412|       |                // set it to tp_new_wrapper().
 9413|    128|                if (add_tp_new_wrapper(type) < 0) {
  ------------------
  |  Branch (9413:21): [True: 0, False: 128]
  ------------------
 9414|      0|                    return -1;
 9415|      0|                }
 9416|    128|            }
 9417|    128|        }
 9418|    133|        else {
 9419|    133|            if (initial) {
  ------------------
  |  Branch (9419:17): [True: 133, False: 0]
  ------------------
 9420|       |                // tp_new is NULL: inherit tp_new from base
 9421|    133|                type->tp_new = base->tp_new;
 9422|    133|            }
 9423|    133|        }
 9424|    261|    }
 9425|     72|    else {
 9426|       |        // Py_TPFLAGS_DISALLOW_INSTANTIATION sets tp_new to NULL
 9427|     72|        if (initial) {
  ------------------
  |  Branch (9427:13): [True: 72, False: 0]
  ------------------
 9428|     72|            type->tp_new = NULL;
 9429|     72|        }
 9430|     72|    }
 9431|    333|    return 0;
 9432|    333|}
typeobject.c:add_tp_new_wrapper:
10470|    128|{
10471|    128|    PyObject *dict = lookup_tp_dict(type);
10472|    128|    int r = PyDict_Contains(dict, &_Py_ID(__new__));
  ------------------
  |  |  917|    128|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|    128|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|    128|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10473|    128|    if (r > 0) {
  ------------------
  |  Branch (10473:9): [True: 0, False: 128]
  ------------------
10474|      0|        return 0;
10475|      0|    }
10476|    128|    if (r < 0) {
  ------------------
  |  Branch (10476:9): [True: 0, False: 128]
  ------------------
10477|      0|        return -1;
10478|      0|    }
10479|       |
10480|    128|    PyObject *func = PyCFunction_NewEx(tp_new_methoddef, (PyObject *)type, NULL);
  ------------------
  |  |   87|    128|#define PyCFunction_NewEx(ML, SELF, MOD) PyCMethod_New((ML), (SELF), (MOD), NULL)
  ------------------
10481|    128|    if (func == NULL) {
  ------------------
  |  Branch (10481:9): [True: 0, False: 128]
  ------------------
10482|      0|        return -1;
10483|      0|    }
10484|    128|    _PyObject_SetDeferredRefcount(func);
10485|    128|    r = PyDict_SetItem(dict, &_Py_ID(__new__), func);
  ------------------
  |  |  917|    128|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|    128|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|    128|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10486|    128|    Py_DECREF(func);
  ------------------
  |  |  430|    128|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    128|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    128|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10487|    128|    return r;
10488|    128|}
typeobject.c:type_ready_fill_dict:
 9152|    333|{
 9153|       |    /* Add type-specific descriptors to tp_dict */
 9154|    333|    if (add_operators(type) < 0) {
  ------------------
  |  Branch (9154:9): [True: 0, False: 333]
  ------------------
 9155|      0|        return -1;
 9156|      0|    }
 9157|    333|    if (type_add_methods(type) < 0) {
  ------------------
  |  Branch (9157:9): [True: 0, False: 333]
  ------------------
 9158|      0|        return -1;
 9159|      0|    }
 9160|    333|    if (type_add_members(type) < 0) {
  ------------------
  |  Branch (9160:9): [True: 0, False: 333]
  ------------------
 9161|      0|        return -1;
 9162|      0|    }
 9163|    333|    if (type_add_getset(type) < 0) {
  ------------------
  |  Branch (9163:9): [True: 0, False: 333]
  ------------------
 9164|      0|        return -1;
 9165|      0|    }
 9166|    333|    if (type_dict_set_doc(type) < 0) {
  ------------------
  |  Branch (9166:9): [True: 0, False: 333]
  ------------------
 9167|      0|        return -1;
 9168|      0|    }
 9169|    333|    return 0;
 9170|    333|}
typeobject.c:add_operators:
12426|    333|{
12427|    333|    PyObject *dict = lookup_tp_dict(type);
12428|    333|    pytype_slotdef *p;
12429|    333|    PyObject *descr;
12430|    333|    void **ptr;
12431|       |
12432|  31.6k|    for (p = slotdefs; p->name; p++) {
  ------------------
  |  Branch (12432:24): [True: 31.3k, False: 333]
  ------------------
12433|  31.3k|        if (p->wrapper == NULL)
  ------------------
  |  Branch (12433:13): [True: 1.99k, False: 29.3k]
  ------------------
12434|  1.99k|            continue;
12435|  29.3k|        ptr = slotptr(type, p->offset);
12436|  29.3k|        if (!ptr || !*ptr)
  ------------------
  |  Branch (12436:13): [True: 12.3k, False: 16.9k]
  |  Branch (12436:21): [True: 15.7k, False: 1.20k]
  ------------------
12437|  28.0k|            continue;
12438|       |        /* Also ignore when the type slot has been inherited. */
12439|  1.20k|        if (type->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN
  ------------------
  |  |  467|  2.41k|#define _Py_TPFLAGS_STATIC_BUILTIN (1 << 1)
  ------------------
  |  Branch (12439:13): [True: 1.13k, False: 69]
  ------------------
12440|  1.13k|            && type->tp_base != NULL
  ------------------
  |  Branch (12440:16): [True: 1.12k, False: 13]
  ------------------
12441|  1.12k|            && slot_inherited(type, p, ptr))
  ------------------
  |  Branch (12441:16): [True: 161, False: 965]
  ------------------
12442|    161|        {
12443|    161|            continue;
12444|    161|        }
12445|  1.04k|        int r = PyDict_Contains(dict, p->name_strobj);
12446|  1.04k|        if (r > 0)
  ------------------
  |  Branch (12446:13): [True: 20, False: 1.02k]
  ------------------
12447|     20|            continue;
12448|  1.02k|        if (r < 0) {
  ------------------
  |  Branch (12448:13): [True: 0, False: 1.02k]
  ------------------
12449|      0|            return -1;
12450|      0|        }
12451|  1.02k|        if (*ptr == (void *)PyObject_HashNotImplemented) {
  ------------------
  |  Branch (12451:13): [True: 9, False: 1.01k]
  ------------------
12452|       |            /* Classes may prevent the inheritance of the tp_hash
12453|       |               slot by storing PyObject_HashNotImplemented in it. Make it
12454|       |               visible as a None value for the __hash__ attribute. */
12455|      9|            if (PyDict_SetItem(dict, p->name_strobj, Py_None) < 0)
  ------------------
  |  |  616|      9|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (12455:17): [True: 0, False: 9]
  ------------------
12456|      0|                return -1;
12457|      9|        }
12458|  1.01k|        else {
12459|  1.01k|            descr = PyDescr_NewWrapper(type, p, *ptr);
12460|  1.01k|            if (descr == NULL)
  ------------------
  |  Branch (12460:17): [True: 0, False: 1.01k]
  ------------------
12461|      0|                return -1;
12462|  1.01k|            if (PyDict_SetItem(dict, p->name_strobj, descr) < 0) {
  ------------------
  |  Branch (12462:17): [True: 0, False: 1.01k]
  ------------------
12463|      0|                Py_DECREF(descr);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12464|      0|                return -1;
12465|      0|            }
12466|  1.01k|            Py_DECREF(descr);
  ------------------
  |  |  430|  1.01k|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  1.01k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.01k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12467|  1.01k|        }
12468|  1.02k|    }
12469|    333|    return 0;
12470|    333|}
typeobject.c:slot_inherited:
12376|  1.12k|{
12377|  1.12k|    void **slot_base = slotptr(type->tp_base, slotdef->offset);
12378|  1.12k|    if (slot_base == NULL || *slot != *slot_base) {
  ------------------
  |  Branch (12378:9): [True: 383, False: 743]
  |  Branch (12378:30): [True: 581, False: 162]
  ------------------
12379|    964|        return 0;
12380|    964|    }
12381|       |
12382|       |    /* Some slots are inherited in pairs. */
12383|    162|    if (slot == (void *)&type->tp_hash) {
  ------------------
  |  Branch (12383:9): [True: 1, False: 161]
  ------------------
12384|      1|        return (type->tp_richcompare == type->tp_base->tp_richcompare);
12385|      1|    }
12386|    161|    else if (slot == (void *)&type->tp_richcompare) {
  ------------------
  |  Branch (12386:14): [True: 0, False: 161]
  ------------------
12387|      0|        return (type->tp_hash == type->tp_base->tp_hash);
12388|      0|    }
12389|       |
12390|       |    /* It must be inherited (see type_ready_inherit()). */
12391|    161|    return 1;
12392|    162|}
typeobject.c:type_add_methods:
 8646|    333|{
 8647|    333|    PyMethodDef *meth = type->tp_methods;
 8648|    333|    if (meth == NULL) {
  ------------------
  |  Branch (8648:9): [True: 186, False: 147]
  ------------------
 8649|    186|        return 0;
 8650|    186|    }
 8651|       |
 8652|    978|    for (; meth->ml_name != NULL; meth++) {
  ------------------
  |  Branch (8652:12): [True: 831, False: 147]
  ------------------
 8653|    831|        if (type_add_method(type, meth) < 0) {
  ------------------
  |  Branch (8653:13): [True: 0, False: 831]
  ------------------
 8654|      0|            return -1;
 8655|      0|        }
 8656|    831|    }
 8657|    147|    return 0;
 8658|    147|}
typeobject.c:type_add_members:
 8663|    333|{
 8664|    333|    PyMemberDef *memb = type->tp_members;
 8665|    333|    if (memb == NULL) {
  ------------------
  |  Branch (8665:9): [True: 162, False: 171]
  ------------------
 8666|    162|        return 0;
 8667|    162|    }
 8668|       |
 8669|    171|    PyObject *dict = lookup_tp_dict(type);
 8670|    490|    for (; memb->name != NULL; memb++) {
  ------------------
  |  Branch (8670:12): [True: 319, False: 171]
  ------------------
 8671|    319|        PyObject *descr = PyDescr_NewMember(type, memb);
 8672|    319|        if (descr == NULL)
  ------------------
  |  Branch (8672:13): [True: 0, False: 319]
  ------------------
 8673|      0|            return -1;
 8674|       |
 8675|    319|        if (PyDict_SetDefaultRef(dict, PyDescr_NAME(descr), descr, NULL) < 0) {
  ------------------
  |  |   36|    319|#define PyDescr_NAME(x) (((PyDescrObject *)(x))->d_name)
  ------------------
  |  Branch (8675:13): [True: 0, False: 319]
  ------------------
 8676|      0|            Py_DECREF(descr);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8677|      0|            return -1;
 8678|      0|        }
 8679|    319|        Py_DECREF(descr);
  ------------------
  |  |  430|    319|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    319|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    319|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8680|    319|    }
 8681|    171|    return 0;
 8682|    171|}
typeobject.c:type_add_getset:
 8687|    333|{
 8688|    333|    PyGetSetDef *gsp = type->tp_getset;
 8689|    333|    if (gsp == NULL) {
  ------------------
  |  Branch (8689:9): [True: 275, False: 58]
  ------------------
 8690|    275|        return 0;
 8691|    275|    }
 8692|       |
 8693|     58|    PyObject *dict = lookup_tp_dict(type);
 8694|    275|    for (; gsp->name != NULL; gsp++) {
  ------------------
  |  Branch (8694:12): [True: 217, False: 58]
  ------------------
 8695|    217|        PyObject *descr = PyDescr_NewGetSet(type, gsp);
 8696|    217|        if (descr == NULL) {
  ------------------
  |  Branch (8696:13): [True: 0, False: 217]
  ------------------
 8697|      0|            return -1;
 8698|      0|        }
 8699|       |
 8700|    217|        if (PyDict_SetDefaultRef(dict, PyDescr_NAME(descr), descr, NULL) < 0) {
  ------------------
  |  |   36|    217|#define PyDescr_NAME(x) (((PyDescrObject *)(x))->d_name)
  ------------------
  |  Branch (8700:13): [True: 0, False: 217]
  ------------------
 8701|      0|            Py_DECREF(descr);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8702|      0|            return -1;
 8703|      0|        }
 8704|    217|        Py_DECREF(descr);
  ------------------
  |  |  430|    217|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    217|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    217|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8705|    217|    }
 8706|     58|    return 0;
 8707|     58|}
typeobject.c:type_dict_set_doc:
 9117|    333|{
 9118|    333|    PyObject *dict = lookup_tp_dict(type);
 9119|    333|    int r = PyDict_Contains(dict, &_Py_ID(__doc__));
  ------------------
  |  |  917|    333|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|    333|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|    333|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9120|    333|    if (r < 0) {
  ------------------
  |  Branch (9120:9): [True: 0, False: 333]
  ------------------
 9121|      0|        return -1;
 9122|      0|    }
 9123|    333|    if (r > 0) {
  ------------------
  |  Branch (9123:9): [True: 58, False: 275]
  ------------------
 9124|     58|        return 0;
 9125|     58|    }
 9126|       |
 9127|    275|    if (type->tp_doc != NULL) {
  ------------------
  |  Branch (9127:9): [True: 167, False: 108]
  ------------------
 9128|    167|        const char *doc_str;
 9129|    167|        doc_str = _PyType_DocWithoutSignature(type->tp_name, type->tp_doc);
 9130|    167|        PyObject *doc = PyUnicode_FromString(doc_str);
 9131|    167|        if (doc == NULL) {
  ------------------
  |  Branch (9131:13): [True: 0, False: 167]
  ------------------
 9132|      0|            return -1;
 9133|      0|        }
 9134|       |
 9135|    167|        if (PyDict_SetItem(dict, &_Py_ID(__doc__), doc) < 0) {
  ------------------
  |  |  917|    167|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|    167|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|    167|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (9135:13): [True: 0, False: 167]
  ------------------
 9136|      0|            Py_DECREF(doc);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9137|      0|            return -1;
 9138|      0|        }
 9139|    167|        Py_DECREF(doc);
  ------------------
  |  |  430|    167|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    167|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    167|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9140|    167|    }
 9141|    108|    else {
 9142|    108|        if (PyDict_SetItem(dict, &_Py_ID(__doc__), Py_None) < 0) {
  ------------------
  |  |  917|    108|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|    108|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|    108|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      if (PyDict_SetItem(dict, &_Py_ID(__doc__), Py_None) < 0) {
  ------------------
  |  |  616|    108|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (9142:13): [True: 0, False: 108]
  ------------------
 9143|      0|            return -1;
 9144|      0|        }
 9145|    108|    }
 9146|    275|    return 0;
 9147|    275|}
typeobject.c:type_ready_inherit:
 9291|    333|{
 9292|    333|    ASSERT_TYPE_LOCK_HELD();
 9293|       |
 9294|       |    /* Inherit special flags from dominant base */
 9295|    333|    PyTypeObject *base = type->tp_base;
 9296|    333|    if (base != NULL) {
  ------------------
  |  Branch (9296:9): [True: 332, False: 1]
  ------------------
 9297|    332|        inherit_special(type, base);
 9298|    332|    }
 9299|       |
 9300|       |    // Inherit slots
 9301|    333|    PyObject *mro = lookup_tp_mro(type);
 9302|    333|    assert(mro != NULL);
  ------------------
  |  Branch (9302:5): [True: 333, False: 0]
  ------------------
 9303|    333|    Py_ssize_t n = PyTuple_GET_SIZE(mro);
  ------------------
  |  |   27|    333|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    333|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    333|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9304|  1.02k|    for (Py_ssize_t i = 1; i < n; i++) {
  ------------------
  |  Branch (9304:28): [True: 688, False: 333]
  ------------------
 9305|    688|        PyObject *b = PyTuple_GET_ITEM(mro, i);
  ------------------
  |  |   29|    688|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|    688|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    688|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (9305:23): [True: 688, False: 0]
  ------------------
 9306|    688|        if (PyType_Check(b)) {
  ------------------
  |  |  766|    688|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    688|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    688|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (766:28): [True: 688, False: 0]
  |  |  ------------------
  ------------------
 9307|    688|            if (inherit_slots(type, (PyTypeObject *)b) < 0) {
  ------------------
  |  Branch (9307:17): [True: 0, False: 688]
  ------------------
 9308|      0|                return -1;
 9309|      0|            }
 9310|    688|            inherit_patma_flags(type, (PyTypeObject *)b);
 9311|    688|        }
 9312|    688|    }
 9313|       |
 9314|    333|    if (base != NULL) {
  ------------------
  |  Branch (9314:9): [True: 332, False: 1]
  ------------------
 9315|    332|        type_ready_inherit_as_structs(type, base);
 9316|    332|    }
 9317|       |
 9318|       |    /* Sanity check for tp_free. */
 9319|    333|    if (_PyType_IS_GC(type) && (type->tp_flags & Py_TPFLAGS_BASETYPE) &&
  ------------------
  |  |  828|    666|#define _PyType_IS_GC(t) _PyType_HasFeature((t), Py_TPFLAGS_HAVE_GC)
  |  |  ------------------
  |  |  |  |  524|    333|#define Py_TPFLAGS_HAVE_GC (1UL << 14)
  |  |  ------------------
  |  |  |  Branch (828:26): [True: 298, False: 35]
  |  |  ------------------
  ------------------
                  if (_PyType_IS_GC(type) && (type->tp_flags & Py_TPFLAGS_BASETYPE) &&
  ------------------
  |  |  506|    298|#define Py_TPFLAGS_BASETYPE (1UL << 10)
  ------------------
  |  Branch (9319:32): [True: 195, False: 103]
  ------------------
 9320|    195|        (type->tp_free == NULL || type->tp_free == PyObject_Free))
  ------------------
  |  Branch (9320:10): [True: 0, False: 195]
  |  Branch (9320:35): [True: 0, False: 195]
  ------------------
 9321|      0|    {
 9322|       |        /* This base class needs to call tp_free, but doesn't have
 9323|       |         * one, or its tp_free is for non-gc'ed objects.
 9324|       |         */
 9325|      0|        PyErr_Format(PyExc_TypeError, "type '%.100s' participates in "
 9326|      0|                     "gc and is a base type but has inappropriate "
 9327|      0|                     "tp_free slot",
 9328|      0|                     type->tp_name);
 9329|      0|        return -1;
 9330|      0|    }
 9331|       |
 9332|    333|    return 0;
 9333|    333|}
typeobject.c:inherit_special:
 8712|    332|{
 8713|       |    /* Copying tp_traverse and tp_clear is connected to the GC flags */
 8714|    332|    if (!(type->tp_flags & Py_TPFLAGS_HAVE_GC) &&
  ------------------
  |  |  524|    332|#define Py_TPFLAGS_HAVE_GC (1UL << 14)
  ------------------
  |  Branch (8714:9): [True: 41, False: 291]
  ------------------
 8715|     41|        (base->tp_flags & Py_TPFLAGS_HAVE_GC) &&
  ------------------
  |  |  524|     41|#define Py_TPFLAGS_HAVE_GC (1UL << 14)
  ------------------
  |  Branch (8715:9): [True: 7, False: 34]
  ------------------
 8716|      7|        (!type->tp_traverse && !type->tp_clear)) {
  ------------------
  |  Branch (8716:10): [True: 7, False: 0]
  |  Branch (8716:32): [True: 7, False: 0]
  ------------------
 8717|      7|        type_add_flags(type, Py_TPFLAGS_HAVE_GC);
  ------------------
  |  |  524|      7|#define Py_TPFLAGS_HAVE_GC (1UL << 14)
  ------------------
 8718|      7|        if (type->tp_traverse == NULL)
  ------------------
  |  Branch (8718:13): [True: 7, False: 0]
  ------------------
 8719|      7|            type->tp_traverse = base->tp_traverse;
 8720|      7|        if (type->tp_clear == NULL)
  ------------------
  |  Branch (8720:13): [True: 7, False: 0]
  ------------------
 8721|      7|            type->tp_clear = base->tp_clear;
 8722|      7|    }
 8723|    332|    type_add_flags(type, base->tp_flags & Py_TPFLAGS_PREHEADER);
  ------------------
  |  |  487|    332|#define Py_TPFLAGS_PREHEADER (Py_TPFLAGS_MANAGED_WEAKREF | Py_TPFLAGS_MANAGED_DICT)
  |  |  ------------------
  |  |  |  |  477|    332|#define Py_TPFLAGS_MANAGED_WEAKREF (1 << 3)
  |  |  ------------------
  |  |               #define Py_TPFLAGS_PREHEADER (Py_TPFLAGS_MANAGED_WEAKREF | Py_TPFLAGS_MANAGED_DICT)
  |  |  ------------------
  |  |  |  |  482|    332|#define Py_TPFLAGS_MANAGED_DICT (1 << 4)
  |  |  ------------------
  ------------------
 8724|       |
 8725|    332|    if (type->tp_basicsize == 0)
  ------------------
  |  Branch (8725:9): [True: 9, False: 323]
  ------------------
 8726|      9|        type->tp_basicsize = base->tp_basicsize;
 8727|       |
 8728|       |    /* Copy other non-function slots */
 8729|       |
 8730|    332|#define COPYVAL(SLOT) \
 8731|    332|    if (type->SLOT == 0) { type->SLOT = base->SLOT; }
 8732|       |
 8733|    332|    COPYVAL(tp_itemsize);
  ------------------
  |  | 8731|    332|    if (type->SLOT == 0) { type->SLOT = base->SLOT; }
  |  |  ------------------
  |  |  |  Branch (8731:9): [True: 299, False: 33]
  |  |  ------------------
  ------------------
 8734|    332|    COPYVAL(tp_weaklistoffset);
  ------------------
  |  | 8731|    332|    if (type->SLOT == 0) { type->SLOT = base->SLOT; }
  |  |  ------------------
  |  |  |  Branch (8731:9): [True: 264, False: 68]
  |  |  ------------------
  ------------------
 8735|    332|    COPYVAL(tp_dictoffset);
  ------------------
  |  | 8731|    332|    if (type->SLOT == 0) { type->SLOT = base->SLOT; }
  |  |  ------------------
  |  |  |  Branch (8731:9): [True: 216, False: 116]
  |  |  ------------------
  ------------------
 8736|       |
 8737|    332|#undef COPYVAL
 8738|       |
 8739|       |    /* Setup fast subclass flags */
 8740|    332|    PyObject *mro = lookup_tp_mro(base);
 8741|    332|    unsigned long flags = 0;
 8742|    332|    if (is_subtype_with_mro(mro, base, (PyTypeObject*)PyExc_BaseException)) {
  ------------------
  |  Branch (8742:9): [True: 76, False: 256]
  ------------------
 8743|     76|        flags |= Py_TPFLAGS_BASE_EXC_SUBCLASS;
  ------------------
  |  |  557|     76|#define Py_TPFLAGS_BASE_EXC_SUBCLASS    (1UL << 30)
  ------------------
 8744|     76|    }
 8745|    256|    else if (is_subtype_with_mro(mro, base, &PyType_Type)) {
  ------------------
  |  Branch (8745:14): [True: 2, False: 254]
  ------------------
 8746|      2|        flags |= Py_TPFLAGS_TYPE_SUBCLASS;
  ------------------
  |  |  558|      2|#define Py_TPFLAGS_TYPE_SUBCLASS        (1UL << 31)
  ------------------
 8747|      2|    }
 8748|    254|    else if (is_subtype_with_mro(mro, base, &PyLong_Type)) {
  ------------------
  |  Branch (8748:14): [True: 1, False: 253]
  ------------------
 8749|      1|        flags |= Py_TPFLAGS_LONG_SUBCLASS;
  ------------------
  |  |  551|      1|#define Py_TPFLAGS_LONG_SUBCLASS        (1UL << 24)
  ------------------
 8750|      1|    }
 8751|    253|    else if (is_subtype_with_mro(mro, base, &PyBytes_Type)) {
  ------------------
  |  Branch (8751:14): [True: 0, False: 253]
  ------------------
 8752|      0|        flags |= Py_TPFLAGS_BYTES_SUBCLASS;
  ------------------
  |  |  554|      0|#define Py_TPFLAGS_BYTES_SUBCLASS       (1UL << 27)
  ------------------
 8753|      0|    }
 8754|    253|    else if (is_subtype_with_mro(mro, base, &PyUnicode_Type)) {
  ------------------
  |  Branch (8754:14): [True: 0, False: 253]
  ------------------
 8755|      0|        flags |= Py_TPFLAGS_UNICODE_SUBCLASS;
  ------------------
  |  |  555|      0|#define Py_TPFLAGS_UNICODE_SUBCLASS     (1UL << 28)
  ------------------
 8756|      0|    }
 8757|    253|    else if (is_subtype_with_mro(mro, base, &PyTuple_Type)) {
  ------------------
  |  Branch (8757:14): [True: 18, False: 235]
  ------------------
 8758|     18|        flags |= Py_TPFLAGS_TUPLE_SUBCLASS;
  ------------------
  |  |  553|     18|#define Py_TPFLAGS_TUPLE_SUBCLASS       (1UL << 26)
  ------------------
 8759|     18|    }
 8760|    235|    else if (is_subtype_with_mro(mro, base, &PyList_Type)) {
  ------------------
  |  Branch (8760:14): [True: 1, False: 234]
  ------------------
 8761|      1|        flags |= Py_TPFLAGS_LIST_SUBCLASS;
  ------------------
  |  |  552|      1|#define Py_TPFLAGS_LIST_SUBCLASS        (1UL << 25)
  ------------------
 8762|      1|    }
 8763|    234|    else if (is_subtype_with_mro(mro, base, &PyDict_Type)) {
  ------------------
  |  Branch (8763:14): [True: 1, False: 233]
  ------------------
 8764|      1|        flags |= Py_TPFLAGS_DICT_SUBCLASS;
  ------------------
  |  |  556|      1|#define Py_TPFLAGS_DICT_SUBCLASS        (1UL << 29)
  ------------------
 8765|      1|    }
 8766|       |
 8767|       |    /* Setup some inheritable flags */
 8768|    332|    if (PyType_HasFeature(base, _Py_TPFLAGS_MATCH_SELF)) {
  ------------------
  |  |  545|    332|#define _Py_TPFLAGS_MATCH_SELF (1UL << 22)
  ------------------
  |  Branch (8768:9): [True: 21, False: 311]
  ------------------
 8769|     21|        flags |= _Py_TPFLAGS_MATCH_SELF;
  ------------------
  |  |  545|     21|#define _Py_TPFLAGS_MATCH_SELF (1UL << 22)
  ------------------
 8770|     21|    }
 8771|    332|    if (PyType_HasFeature(base, Py_TPFLAGS_ITEMS_AT_END)) {
  ------------------
  |  |  548|    332|#define Py_TPFLAGS_ITEMS_AT_END (1UL << 23)
  ------------------
  |  Branch (8771:9): [True: 2, False: 330]
  ------------------
 8772|      2|        flags |= Py_TPFLAGS_ITEMS_AT_END;
  ------------------
  |  |  548|      2|#define Py_TPFLAGS_ITEMS_AT_END (1UL << 23)
  ------------------
 8773|      2|    }
 8774|    332|    type_add_flags(type, flags);
 8775|    332|}
typeobject.c:inherit_slots:
 8792|    688|{
 8793|    688|    PyTypeObject *basebase;
 8794|       |
 8795|    688|#undef SLOTDEFINED
 8796|    688|#undef COPYSLOT
 8797|    688|#undef COPYNUM
 8798|    688|#undef COPYSEQ
 8799|    688|#undef COPYMAP
 8800|    688|#undef COPYBUF
 8801|       |
 8802|    688|#define SLOTDEFINED(SLOT) \
 8803|    688|    (base->SLOT != 0 && \
 8804|    688|     (basebase == NULL || base->SLOT != basebase->SLOT))
 8805|       |
 8806|    688|#define COPYSLOT(SLOT) \
 8807|    688|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
 8808|       |
 8809|    688|#define COPYASYNC(SLOT) COPYSLOT(tp_as_async->SLOT)
 8810|    688|#define COPYNUM(SLOT) COPYSLOT(tp_as_number->SLOT)
 8811|    688|#define COPYSEQ(SLOT) COPYSLOT(tp_as_sequence->SLOT)
 8812|    688|#define COPYMAP(SLOT) COPYSLOT(tp_as_mapping->SLOT)
 8813|    688|#define COPYBUF(SLOT) COPYSLOT(tp_as_buffer->SLOT)
 8814|       |
 8815|       |    /* This won't inherit indirect slots (from tp_as_number etc.)
 8816|       |       if type doesn't provide the space. */
 8817|       |
 8818|    688|    if (type->tp_as_number != NULL && base->tp_as_number != NULL) {
  ------------------
  |  Branch (8818:9): [True: 310, False: 378]
  |  Branch (8818:39): [True: 120, False: 190]
  ------------------
 8819|    120|        basebase = base->tp_base;
 8820|    120|        if (basebase->tp_as_number == NULL)
  ------------------
  |  Branch (8820:13): [True: 79, False: 41]
  ------------------
 8821|     79|            basebase = NULL;
 8822|    120|        COPYNUM(nb_add);
  ------------------
  |  | 8810|    120|#define COPYNUM(SLOT) COPYSLOT(tp_as_number->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    120|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    119|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 1, False: 118]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    119|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 1, False: 0]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 119, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8823|    120|        COPYNUM(nb_subtract);
  ------------------
  |  | 8810|    120|#define COPYNUM(SLOT) COPYSLOT(tp_as_number->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    120|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    107|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 4, False: 103]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    107|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 1, False: 3]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 3, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 107, False: 13]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8824|    120|        COPYNUM(nb_multiply);
  ------------------
  |  | 8810|    120|#define COPYNUM(SLOT) COPYSLOT(tp_as_number->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    120|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    120|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 1, False: 119]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    120|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 1, False: 0]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 120, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8825|    120|        COPYNUM(nb_remainder);
  ------------------
  |  | 8810|    120|#define COPYNUM(SLOT) COPYSLOT(tp_as_number->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    120|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    120|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 1, False: 119]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    120|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 1, False: 0]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 120, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8826|    120|        COPYNUM(nb_divmod);
  ------------------
  |  | 8810|    120|#define COPYNUM(SLOT) COPYSLOT(tp_as_number->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    120|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    120|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 1, False: 119]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    120|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 1, False: 0]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 120, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8827|    120|        COPYNUM(nb_power);
  ------------------
  |  | 8810|    120|#define COPYNUM(SLOT) COPYSLOT(tp_as_number->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    120|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    120|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 1, False: 119]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    120|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 1, False: 0]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 120, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8828|    120|        COPYNUM(nb_negative);
  ------------------
  |  | 8810|    120|#define COPYNUM(SLOT) COPYSLOT(tp_as_number->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    120|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    120|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 1, False: 119]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    120|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 1, False: 0]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 120, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8829|    120|        COPYNUM(nb_positive);
  ------------------
  |  | 8810|    120|#define COPYNUM(SLOT) COPYSLOT(tp_as_number->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    120|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    120|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 1, False: 119]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    120|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 1, False: 0]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 120, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8830|    120|        COPYNUM(nb_absolute);
  ------------------
  |  | 8810|    120|#define COPYNUM(SLOT) COPYSLOT(tp_as_number->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    120|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    120|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 1, False: 119]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    120|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 1, False: 0]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 120, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8831|    120|        COPYNUM(nb_bool);
  ------------------
  |  | 8810|    120|#define COPYNUM(SLOT) COPYSLOT(tp_as_number->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    120|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    120|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 1, False: 119]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    120|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 1, False: 0]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 120, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8832|    120|        COPYNUM(nb_invert);
  ------------------
  |  | 8810|    120|#define COPYNUM(SLOT) COPYSLOT(tp_as_number->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    120|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    119|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 0, False: 119]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    119|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 119, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8833|    120|        COPYNUM(nb_lshift);
  ------------------
  |  | 8810|    120|#define COPYNUM(SLOT) COPYSLOT(tp_as_number->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    120|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    120|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 1, False: 119]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    120|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 1, False: 0]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 120, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8834|    120|        COPYNUM(nb_rshift);
  ------------------
  |  | 8810|    120|#define COPYNUM(SLOT) COPYSLOT(tp_as_number->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    120|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    120|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 1, False: 119]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    120|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 1, False: 0]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 120, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8835|    120|        COPYNUM(nb_and);
  ------------------
  |  | 8810|    120|#define COPYNUM(SLOT) COPYSLOT(tp_as_number->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    120|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    107|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 3, False: 104]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    107|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 0, False: 3]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 3, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 107, False: 13]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8836|    120|        COPYNUM(nb_xor);
  ------------------
  |  | 8810|    120|#define COPYNUM(SLOT) COPYSLOT(tp_as_number->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    120|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    107|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 3, False: 104]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    107|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 0, False: 3]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 3, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 107, False: 13]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8837|    120|        COPYNUM(nb_or);
  ------------------
  |  | 8810|    120|#define COPYNUM(SLOT) COPYSLOT(tp_as_number->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    120|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    106|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 7, False: 99]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    106|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 3, False: 4]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 3, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 106, False: 14]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8838|    120|        COPYNUM(nb_int);
  ------------------
  |  | 8810|    120|#define COPYNUM(SLOT) COPYSLOT(tp_as_number->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    120|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    120|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 1, False: 119]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    120|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 1, False: 0]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 120, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8839|    120|        COPYNUM(nb_float);
  ------------------
  |  | 8810|    120|#define COPYNUM(SLOT) COPYSLOT(tp_as_number->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    120|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    120|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 1, False: 119]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    120|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 1, False: 0]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 120, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8840|    120|        COPYNUM(nb_inplace_add);
  ------------------
  |  | 8810|    120|#define COPYNUM(SLOT) COPYSLOT(tp_as_number->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    120|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    120|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 0, False: 120]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    120|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 120, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8841|    120|        COPYNUM(nb_inplace_subtract);
  ------------------
  |  | 8810|    120|#define COPYNUM(SLOT) COPYSLOT(tp_as_number->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    120|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    120|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 0, False: 120]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    120|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 120, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8842|    120|        COPYNUM(nb_inplace_multiply);
  ------------------
  |  | 8810|    120|#define COPYNUM(SLOT) COPYSLOT(tp_as_number->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    120|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    120|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 0, False: 120]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    120|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 120, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8843|    120|        COPYNUM(nb_inplace_remainder);
  ------------------
  |  | 8810|    120|#define COPYNUM(SLOT) COPYSLOT(tp_as_number->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    120|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    120|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 0, False: 120]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    120|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 120, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8844|    120|        COPYNUM(nb_inplace_power);
  ------------------
  |  | 8810|    120|#define COPYNUM(SLOT) COPYSLOT(tp_as_number->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    120|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    120|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 0, False: 120]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    120|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 120, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8845|    120|        COPYNUM(nb_inplace_lshift);
  ------------------
  |  | 8810|    120|#define COPYNUM(SLOT) COPYSLOT(tp_as_number->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    120|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    120|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 0, False: 120]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    120|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 120, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8846|    120|        COPYNUM(nb_inplace_rshift);
  ------------------
  |  | 8810|    120|#define COPYNUM(SLOT) COPYSLOT(tp_as_number->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    120|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    120|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 0, False: 120]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    120|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 120, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8847|    120|        COPYNUM(nb_inplace_and);
  ------------------
  |  | 8810|    120|#define COPYNUM(SLOT) COPYSLOT(tp_as_number->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    120|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    120|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 0, False: 120]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    120|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 120, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8848|    120|        COPYNUM(nb_inplace_xor);
  ------------------
  |  | 8810|    120|#define COPYNUM(SLOT) COPYSLOT(tp_as_number->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    120|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    120|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 0, False: 120]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    120|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 120, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8849|    120|        COPYNUM(nb_inplace_or);
  ------------------
  |  | 8810|    120|#define COPYNUM(SLOT) COPYSLOT(tp_as_number->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    120|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    119|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 0, False: 119]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    119|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 119, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8850|    120|        COPYNUM(nb_true_divide);
  ------------------
  |  | 8810|    120|#define COPYNUM(SLOT) COPYSLOT(tp_as_number->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    120|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    120|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 1, False: 119]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    120|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 1, False: 0]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 120, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8851|    120|        COPYNUM(nb_floor_divide);
  ------------------
  |  | 8810|    120|#define COPYNUM(SLOT) COPYSLOT(tp_as_number->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    120|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    120|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 1, False: 119]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    120|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 1, False: 0]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 120, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8852|    120|        COPYNUM(nb_inplace_true_divide);
  ------------------
  |  | 8810|    120|#define COPYNUM(SLOT) COPYSLOT(tp_as_number->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    120|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    120|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 0, False: 120]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    120|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 120, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8853|    120|        COPYNUM(nb_inplace_floor_divide);
  ------------------
  |  | 8810|    120|#define COPYNUM(SLOT) COPYSLOT(tp_as_number->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    120|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    120|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 0, False: 120]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    120|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 120, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8854|    120|        COPYNUM(nb_index);
  ------------------
  |  | 8810|    120|#define COPYNUM(SLOT) COPYSLOT(tp_as_number->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    120|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    120|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 1, False: 119]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    120|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 1, False: 0]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 120, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8855|    120|        COPYNUM(nb_matrix_multiply);
  ------------------
  |  | 8810|    120|#define COPYNUM(SLOT) COPYSLOT(tp_as_number->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    120|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    120|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 0, False: 120]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    120|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 120, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8856|    120|        COPYNUM(nb_inplace_matrix_multiply);
  ------------------
  |  | 8810|    120|#define COPYNUM(SLOT) COPYSLOT(tp_as_number->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    120|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    120|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 0, False: 120]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    120|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 120, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8857|    120|    }
 8858|       |
 8859|    688|    if (type->tp_as_async != NULL && base->tp_as_async != NULL) {
  ------------------
  |  Branch (8859:9): [True: 284, False: 404]
  |  Branch (8859:38): [True: 114, False: 170]
  ------------------
 8860|    114|        basebase = base->tp_base;
 8861|    114|        if (basebase->tp_as_async == NULL)
  ------------------
  |  Branch (8861:13): [True: 74, False: 40]
  ------------------
 8862|     74|            basebase = NULL;
 8863|    114|        COPYASYNC(am_await);
  ------------------
  |  | 8809|    114|#define COPYASYNC(SLOT) COPYSLOT(tp_as_async->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    114|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    114|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 1, False: 113]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    114|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 1, False: 0]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 114, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8864|    114|        COPYASYNC(am_aiter);
  ------------------
  |  | 8809|    114|#define COPYASYNC(SLOT) COPYSLOT(tp_as_async->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    114|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    114|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 3, False: 111]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    114|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 2, False: 1]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 114, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8865|    114|        COPYASYNC(am_anext);
  ------------------
  |  | 8809|    114|#define COPYASYNC(SLOT) COPYSLOT(tp_as_async->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    114|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    113|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 1, False: 112]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    113|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 0, False: 1]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 113, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8866|    114|    }
 8867|       |
 8868|    688|    if (type->tp_as_sequence != NULL && base->tp_as_sequence != NULL) {
  ------------------
  |  Branch (8868:9): [True: 299, False: 389]
  |  Branch (8868:41): [True: 125, False: 174]
  ------------------
 8869|    125|        basebase = base->tp_base;
 8870|    125|        if (basebase->tp_as_sequence == NULL)
  ------------------
  |  Branch (8870:13): [True: 85, False: 40]
  ------------------
 8871|     85|            basebase = NULL;
 8872|    125|        COPYSEQ(sq_length);
  ------------------
  |  | 8811|    125|#define COPYSEQ(SLOT) COPYSLOT(tp_as_sequence->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    125|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|     95|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 42, False: 53]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|     95|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 22, False: 20]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 2, False: 18]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 95, False: 30]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8873|    125|        COPYSEQ(sq_concat);
  ------------------
  |  | 8811|    125|#define COPYSEQ(SLOT) COPYSLOT(tp_as_sequence->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    125|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    125|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 11, False: 114]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    125|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 11, False: 0]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 125, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8874|    125|        COPYSEQ(sq_repeat);
  ------------------
  |  | 8811|    125|#define COPYSEQ(SLOT) COPYSLOT(tp_as_sequence->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    125|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    125|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 11, False: 114]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    125|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 11, False: 0]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 125, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8875|    125|        COPYSEQ(sq_item);
  ------------------
  |  | 8811|    125|#define COPYSEQ(SLOT) COPYSLOT(tp_as_sequence->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    125|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    107|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 16, False: 91]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    107|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 11, False: 5]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 4, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 107, False: 18]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8876|    125|        COPYSEQ(sq_ass_item);
  ------------------
  |  | 8811|    125|#define COPYSEQ(SLOT) COPYSLOT(tp_as_sequence->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    125|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    120|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 2, False: 118]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    120|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 1, False: 1]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 120, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8877|    125|        COPYSEQ(sq_contains);
  ------------------
  |  | 8811|    125|#define COPYSEQ(SLOT) COPYSLOT(tp_as_sequence->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    125|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|     88|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 29, False: 59]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|     88|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 12, False: 17]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 11, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 88, False: 37]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8878|    125|        COPYSEQ(sq_inplace_concat);
  ------------------
  |  | 8811|    125|#define COPYSEQ(SLOT) COPYSLOT(tp_as_sequence->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    125|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    125|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 1, False: 124]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    125|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 1, False: 0]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 125, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8879|    125|        COPYSEQ(sq_inplace_repeat);
  ------------------
  |  | 8811|    125|#define COPYSEQ(SLOT) COPYSLOT(tp_as_sequence->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    125|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    125|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 1, False: 124]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    125|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 1, False: 0]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 125, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8880|    125|    }
 8881|       |
 8882|    688|    if (type->tp_as_mapping != NULL && base->tp_as_mapping != NULL) {
  ------------------
  |  Branch (8882:9): [True: 301, False: 387]
  |  Branch (8882:40): [True: 127, False: 174]
  ------------------
 8883|    127|        basebase = base->tp_base;
 8884|    127|        if (basebase->tp_as_mapping == NULL)
  ------------------
  |  Branch (8884:13): [True: 87, False: 40]
  ------------------
 8885|     87|            basebase = NULL;
 8886|    127|        COPYMAP(mp_length);
  ------------------
  |  | 8812|    127|#define COPYMAP(SLOT) COPYSLOT(tp_as_mapping->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    127|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|     97|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 43, False: 54]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|     97|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 23, False: 20]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 2, False: 18]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 97, False: 30]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8887|    127|        COPYMAP(mp_subscript);
  ------------------
  |  | 8812|    127|#define COPYMAP(SLOT) COPYSLOT(tp_as_mapping->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    127|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    109|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 18, False: 91]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    109|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 13, False: 5]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 4, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 109, False: 18]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8888|    127|        COPYMAP(mp_ass_subscript);
  ------------------
  |  | 8812|    127|#define COPYMAP(SLOT) COPYSLOT(tp_as_mapping->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    127|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    121|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 2, False: 119]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    121|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 1, False: 1]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 121, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8889|    127|    }
 8890|       |
 8891|    688|    if (type->tp_as_buffer != NULL && base->tp_as_buffer != NULL) {
  ------------------
  |  Branch (8891:9): [True: 283, False: 405]
  |  Branch (8891:39): [True: 114, False: 169]
  ------------------
 8892|    114|        basebase = base->tp_base;
 8893|    114|        if (basebase->tp_as_buffer == NULL)
  ------------------
  |  Branch (8893:13): [True: 74, False: 40]
  ------------------
 8894|     74|            basebase = NULL;
 8895|    114|        COPYBUF(bf_getbuffer);
  ------------------
  |  | 8813|    114|#define COPYBUF(SLOT) COPYSLOT(tp_as_buffer->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    114|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    114|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 0, False: 114]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    114|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 114, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8896|    114|        COPYBUF(bf_releasebuffer);
  ------------------
  |  | 8813|    114|#define COPYBUF(SLOT) COPYSLOT(tp_as_buffer->SLOT)
  |  |  ------------------
  |  |  |  | 8807|    114|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  |  |  ------------------
  |  |  |  |  |  | 8803|    114|    (base->SLOT != 0 && \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8803:6): [True: 0, False: 114]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 8804|    114|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (8804:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (8804:27): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8807:9): [True: 114, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8897|    114|    }
 8898|       |
 8899|    688|    basebase = base->tp_base;
 8900|       |
 8901|    688|    COPYSLOT(tp_dealloc);
  ------------------
  |  | 8807|    688|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  ------------------
  |  |  |  | 8803|     17|    (base->SLOT != 0 && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8803:6): [True: 17, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 8804|     17|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8804:7): [True: 8, False: 9]
  |  |  |  |  |  Branch (8804:27): [True: 6, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (8807:9): [True: 17, False: 671]
  |  |  ------------------
  ------------------
 8902|    688|    if (type->tp_getattr == NULL && type->tp_getattro == NULL) {
  ------------------
  |  Branch (8902:9): [True: 688, False: 0]
  |  Branch (8902:37): [True: 234, False: 454]
  ------------------
 8903|    234|        type->tp_getattr = base->tp_getattr;
 8904|    234|        type->tp_getattro = base->tp_getattro;
 8905|    234|    }
 8906|    688|    if (type->tp_setattr == NULL && type->tp_setattro == NULL) {
  ------------------
  |  Branch (8906:9): [True: 688, False: 0]
  |  Branch (8906:37): [True: 321, False: 367]
  ------------------
 8907|    321|        type->tp_setattr = base->tp_setattr;
 8908|    321|        type->tp_setattro = base->tp_setattro;
 8909|    321|    }
 8910|    688|    COPYSLOT(tp_repr);
  ------------------
  |  | 8807|    688|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  ------------------
  |  |  |  | 8803|    438|    (base->SLOT != 0 && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8803:6): [True: 438, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 8804|    438|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8804:7): [True: 138, False: 300]
  |  |  |  |  |  Branch (8804:27): [True: 89, False: 211]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (8807:9): [True: 438, False: 250]
  |  |  ------------------
  ------------------
 8911|       |    /* tp_hash see tp_richcompare */
 8912|    688|    {
 8913|       |        /* Always inherit tp_vectorcall_offset to support PyVectorcall_Call().
 8914|       |         * If Py_TPFLAGS_HAVE_VECTORCALL is not inherited, then vectorcall
 8915|       |         * won't be used automatically. */
 8916|    688|        COPYSLOT(tp_vectorcall_offset);
  ------------------
  |  | 8807|    688|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  ------------------
  |  |  |  | 8803|    675|    (base->SLOT != 0 && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8803:6): [True: 6, False: 669]
  |  |  |  |  ------------------
  |  |  |  | 8804|    675|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8804:7): [True: 0, False: 6]
  |  |  |  |  |  Branch (8804:27): [True: 5, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (8807:9): [True: 675, False: 13]
  |  |  ------------------
  ------------------
 8917|       |
 8918|       |        /* Inherit Py_TPFLAGS_HAVE_VECTORCALL if tp_call is not overridden */
 8919|    688|        if (!type->tp_call &&
  ------------------
  |  Branch (8919:13): [True: 667, False: 21]
  ------------------
 8920|    667|            _PyType_HasFeature(base, Py_TPFLAGS_HAVE_VECTORCALL))
  ------------------
  |  |  510|    667|#define Py_TPFLAGS_HAVE_VECTORCALL (1UL << 11)
  ------------------
  |  Branch (8920:13): [True: 6, False: 661]
  ------------------
 8921|      6|        {
 8922|      6|            type_add_flags(type, Py_TPFLAGS_HAVE_VECTORCALL);
  ------------------
  |  |  510|      6|#define Py_TPFLAGS_HAVE_VECTORCALL (1UL << 11)
  ------------------
 8923|      6|        }
 8924|    688|        COPYSLOT(tp_call);
  ------------------
  |  | 8807|    688|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  ------------------
  |  |  |  | 8803|    667|    (base->SLOT != 0 && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8803:6): [True: 7, False: 660]
  |  |  |  |  ------------------
  |  |  |  | 8804|    667|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8804:7): [True: 0, False: 7]
  |  |  |  |  |  Branch (8804:27): [True: 6, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (8807:9): [True: 667, False: 21]
  |  |  ------------------
  ------------------
 8925|    688|    }
 8926|    688|    COPYSLOT(tp_str);
  ------------------
  |  | 8807|    688|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  ------------------
  |  |  |  | 8803|    525|    (base->SLOT != 0 && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8803:6): [True: 525, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 8804|    525|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8804:7): [True: 244, False: 281]
  |  |  |  |  |  Branch (8804:27): [True: 66, False: 215]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (8807:9): [True: 525, False: 163]
  |  |  ------------------
  ------------------
 8927|    688|    {
 8928|       |        /* Copy comparison-related slots only when
 8929|       |           not overriding them anywhere */
 8930|    688|        if (type->tp_richcompare == NULL &&
  ------------------
  |  Branch (8930:13): [True: 299, False: 389]
  ------------------
 8931|    299|            type->tp_hash == NULL)
  ------------------
  |  Branch (8931:13): [True: 294, False: 5]
  ------------------
 8932|    294|        {
 8933|    294|            int r = overrides_hash(type);
 8934|    294|            if (r < 0) {
  ------------------
  |  Branch (8934:17): [True: 0, False: 294]
  ------------------
 8935|      0|                return -1;
 8936|      0|            }
 8937|    294|            if (!r) {
  ------------------
  |  Branch (8937:17): [True: 278, False: 16]
  ------------------
 8938|    278|                type->tp_richcompare = base->tp_richcompare;
 8939|    278|                type->tp_hash = base->tp_hash;
 8940|    278|            }
 8941|    294|        }
 8942|    688|    }
 8943|    688|    {
 8944|    688|        COPYSLOT(tp_iter);
  ------------------
  |  | 8807|    688|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  ------------------
  |  |  |  | 8803|    531|    (base->SLOT != 0 && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8803:6): [True: 65, False: 466]
  |  |  |  |  ------------------
  |  |  |  | 8804|    531|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8804:7): [True: 0, False: 65]
  |  |  |  |  |  Branch (8804:27): [True: 46, False: 19]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (8807:9): [True: 531, False: 157]
  |  |  ------------------
  ------------------
 8945|    688|        COPYSLOT(tp_iternext);
  ------------------
  |  | 8807|    688|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  ------------------
  |  |  |  | 8803|    557|    (base->SLOT != 0 && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8803:6): [True: 73, False: 484]
  |  |  |  |  ------------------
  |  |  |  | 8804|    557|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8804:7): [True: 0, False: 73]
  |  |  |  |  |  Branch (8804:27): [True: 41, False: 32]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (8807:9): [True: 557, False: 131]
  |  |  ------------------
  ------------------
 8946|    688|    }
 8947|    688|    {
 8948|    688|        COPYSLOT(tp_descr_get);
  ------------------
  |  | 8807|    688|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  ------------------
  |  |  |  | 8803|    673|    (base->SLOT != 0 && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8803:6): [True: 3, False: 670]
  |  |  |  |  ------------------
  |  |  |  | 8804|    673|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8804:7): [True: 0, False: 3]
  |  |  |  |  |  Branch (8804:27): [True: 3, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (8807:9): [True: 673, False: 15]
  |  |  ------------------
  ------------------
 8949|       |        /* Inherit Py_TPFLAGS_METHOD_DESCRIPTOR if tp_descr_get was inherited,
 8950|       |         * but only for extension types */
 8951|    688|        if (base->tp_descr_get &&
  ------------------
  |  Branch (8951:13): [True: 3, False: 685]
  ------------------
 8952|      3|            type->tp_descr_get == base->tp_descr_get &&
  ------------------
  |  Branch (8952:13): [True: 3, False: 0]
  ------------------
 8953|      3|            _PyType_HasFeature(type, Py_TPFLAGS_IMMUTABLETYPE) &&
  ------------------
  |  |  500|      3|#define Py_TPFLAGS_IMMUTABLETYPE (1UL << 8)
  ------------------
  |  Branch (8953:13): [True: 0, False: 3]
  ------------------
 8954|      0|            _PyType_HasFeature(base, Py_TPFLAGS_METHOD_DESCRIPTOR))
  ------------------
  |  |  534|      0|#define Py_TPFLAGS_METHOD_DESCRIPTOR (1UL << 17)
  ------------------
  |  Branch (8954:13): [True: 0, False: 0]
  ------------------
 8955|      0|        {
 8956|      0|            type_add_flags(type, Py_TPFLAGS_METHOD_DESCRIPTOR);
  ------------------
  |  |  534|      0|#define Py_TPFLAGS_METHOD_DESCRIPTOR (1UL << 17)
  ------------------
 8957|      0|        }
 8958|    688|        COPYSLOT(tp_descr_set);
  ------------------
  |  | 8807|    688|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  ------------------
  |  |  |  | 8803|    684|    (base->SLOT != 0 && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8803:6): [True: 1, False: 683]
  |  |  |  |  ------------------
  |  |  |  | 8804|    684|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8804:7): [True: 0, False: 1]
  |  |  |  |  |  Branch (8804:27): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (8807:9): [True: 684, False: 4]
  |  |  ------------------
  ------------------
 8959|    688|        COPYSLOT(tp_dictoffset);
  ------------------
  |  | 8807|    688|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  ------------------
  |  |  |  | 8803|    279|    (base->SLOT != 0 && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8803:6): [True: 0, False: 279]
  |  |  |  |  ------------------
  |  |  |  | 8804|    279|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8804:7): [True: 0, False: 0]
  |  |  |  |  |  Branch (8804:27): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (8807:9): [True: 279, False: 409]
  |  |  ------------------
  ------------------
 8960|    688|        COPYSLOT(tp_init);
  ------------------
  |  | 8807|    688|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  ------------------
  |  |  |  | 8803|    341|    (base->SLOT != 0 && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8803:6): [True: 341, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 8804|    341|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8804:7): [True: 213, False: 128]
  |  |  |  |  |  Branch (8804:27): [True: 28, False: 100]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (8807:9): [True: 341, False: 347]
  |  |  ------------------
  ------------------
 8961|    688|        COPYSLOT(tp_alloc);
  ------------------
  |  | 8807|    688|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  ------------------
  |  |  |  | 8803|    435|    (base->SLOT != 0 && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8803:6): [True: 435, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 8804|    435|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8804:7): [True: 205, False: 230]
  |  |  |  |  |  Branch (8804:27): [True: 0, False: 230]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (8807:9): [True: 435, False: 253]
  |  |  ------------------
  ------------------
 8962|    688|        COPYSLOT(tp_is_gc);
  ------------------
  |  | 8807|    688|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  ------------------
  |  |  |  | 8803|    685|    (base->SLOT != 0 && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8803:6): [True: 3, False: 682]
  |  |  |  |  ------------------
  |  |  |  | 8804|    685|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8804:7): [True: 0, False: 3]
  |  |  |  |  |  Branch (8804:27): [True: 2, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (8807:9): [True: 685, False: 3]
  |  |  ------------------
  ------------------
 8963|    688|        COPYSLOT(tp_finalize);
  ------------------
  |  | 8807|    688|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  ------------------
  |  |  |  | 8803|    670|    (base->SLOT != 0 && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8803:6): [True: 19, False: 651]
  |  |  |  |  ------------------
  |  |  |  | 8804|    670|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8804:7): [True: 0, False: 19]
  |  |  |  |  |  Branch (8804:27): [True: 11, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (8807:9): [True: 670, False: 18]
  |  |  ------------------
  ------------------
 8964|    688|        if ((type->tp_flags & Py_TPFLAGS_HAVE_GC) ==
  ------------------
  |  |  524|    688|#define Py_TPFLAGS_HAVE_GC (1UL << 14)
  ------------------
  |  Branch (8964:13): [True: 390, False: 298]
  ------------------
 8965|    688|            (base->tp_flags & Py_TPFLAGS_HAVE_GC)) {
  ------------------
  |  |  524|    688|#define Py_TPFLAGS_HAVE_GC (1UL << 14)
  ------------------
 8966|       |            /* They agree about gc. */
 8967|    390|            COPYSLOT(tp_free);
  ------------------
  |  | 8807|    390|    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
  |  |  ------------------
  |  |  |  | 8803|    258|    (base->SLOT != 0 && \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8803:6): [True: 258, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 8804|    258|     (basebase == NULL || base->SLOT != basebase->SLOT))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (8804:7): [True: 26, False: 232]
  |  |  |  |  |  Branch (8804:27): [True: 103, False: 129]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (8807:9): [True: 258, False: 132]
  |  |  ------------------
  ------------------
 8968|    390|        }
 8969|    298|        else if ((type->tp_flags & Py_TPFLAGS_HAVE_GC) &&
  ------------------
  |  |  524|    298|#define Py_TPFLAGS_HAVE_GC (1UL << 14)
  ------------------
  |  Branch (8969:18): [True: 298, False: 0]
  ------------------
 8970|    298|                 type->tp_free == NULL &&
  ------------------
  |  Branch (8970:18): [True: 67, False: 231]
  ------------------
 8971|     67|                 base->tp_free == PyObject_Free) {
  ------------------
  |  Branch (8971:18): [True: 67, False: 0]
  ------------------
 8972|       |            /* A bit of magic to plug in the correct default
 8973|       |             * tp_free function when a derived class adds gc,
 8974|       |             * didn't define tp_free, and the base uses the
 8975|       |             * default non-gc tp_free.
 8976|       |             */
 8977|     67|            type->tp_free = PyObject_GC_Del;
 8978|     67|        }
 8979|       |        /* else they didn't agree about gc, and there isn't something
 8980|       |         * obvious to be done -- the type is on its own.
 8981|       |         */
 8982|    688|    }
 8983|    688|    return 0;
 8984|    688|}
typeobject.c:overrides_hash:
 8779|    294|{
 8780|    294|    PyObject *dict = lookup_tp_dict(type);
 8781|       |
 8782|    294|    assert(dict != NULL);
  ------------------
  |  Branch (8782:5): [True: 294, False: 0]
  ------------------
 8783|    294|    int r = PyDict_Contains(dict, &_Py_ID(__eq__));
  ------------------
  |  |  917|    294|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|    294|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|    294|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8784|    294|    if (r == 0) {
  ------------------
  |  Branch (8784:9): [True: 279, False: 15]
  ------------------
 8785|    279|        r = PyDict_Contains(dict, &_Py_ID(__hash__));
  ------------------
  |  |  917|    279|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|    279|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|    279|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8786|    279|    }
 8787|    294|    return r;
 8788|    294|}
typeobject.c:inherit_patma_flags:
 9283|    688|inherit_patma_flags(PyTypeObject *type, PyTypeObject *base) {
 9284|    688|    if ((type->tp_flags & COLLECTION_FLAGS) == 0) {
  ------------------
  |  | 8989|    688|#define COLLECTION_FLAGS (Py_TPFLAGS_SEQUENCE | Py_TPFLAGS_MAPPING)
  |  |  ------------------
  |  |  |  |  490|    688|#define Py_TPFLAGS_SEQUENCE (1 << 5)
  |  |  ------------------
  |  |               #define COLLECTION_FLAGS (Py_TPFLAGS_SEQUENCE | Py_TPFLAGS_MAPPING)
  |  |  ------------------
  |  |  |  |  492|    688|#define Py_TPFLAGS_MAPPING (1 << 6)
  |  |  ------------------
  ------------------
  |  Branch (9284:9): [True: 637, False: 51]
  ------------------
 9285|    637|        type_add_flags(type, base->tp_flags & COLLECTION_FLAGS);
  ------------------
  |  | 8989|    637|#define COLLECTION_FLAGS (Py_TPFLAGS_SEQUENCE | Py_TPFLAGS_MAPPING)
  |  |  ------------------
  |  |  |  |  490|    637|#define Py_TPFLAGS_SEQUENCE (1 << 5)
  |  |  ------------------
  |  |               #define COLLECTION_FLAGS (Py_TPFLAGS_SEQUENCE | Py_TPFLAGS_MAPPING)
  |  |  ------------------
  |  |  |  |  492|    637|#define Py_TPFLAGS_MAPPING (1 << 6)
  |  |  ------------------
  ------------------
 9286|    637|    }
 9287|    688|}
typeobject.c:type_ready_inherit_as_structs:
 9264|    332|{
 9265|    332|    if (type->tp_as_async == NULL) {
  ------------------
  |  Branch (9265:9): [True: 200, False: 132]
  ------------------
 9266|    200|        type->tp_as_async = base->tp_as_async;
 9267|    200|    }
 9268|    332|    if (type->tp_as_number == NULL) {
  ------------------
  |  Branch (9268:9): [True: 177, False: 155]
  ------------------
 9269|    177|        type->tp_as_number = base->tp_as_number;
 9270|    177|    }
 9271|    332|    if (type->tp_as_sequence == NULL) {
  ------------------
  |  Branch (9271:9): [True: 185, False: 147]
  ------------------
 9272|    185|        type->tp_as_sequence = base->tp_as_sequence;
 9273|    185|    }
 9274|    332|    if (type->tp_as_mapping == NULL) {
  ------------------
  |  Branch (9274:9): [True: 184, False: 148]
  ------------------
 9275|    184|        type->tp_as_mapping = base->tp_as_mapping;
 9276|    184|    }
 9277|    332|    if (type->tp_as_buffer == NULL) {
  ------------------
  |  Branch (9277:9): [True: 201, False: 131]
  ------------------
 9278|    201|        type->tp_as_buffer = base->tp_as_buffer;
 9279|    201|    }
 9280|    332|}
typeobject.c:type_ready_preheader:
 9174|    333|{
 9175|    333|    if (type->tp_flags & Py_TPFLAGS_MANAGED_DICT) {
  ------------------
  |  |  482|    333|#define Py_TPFLAGS_MANAGED_DICT (1 << 4)
  ------------------
  |  Branch (9175:9): [True: 48, False: 285]
  ------------------
 9176|     48|        if (type->tp_dictoffset > 0 || type->tp_dictoffset < -1) {
  ------------------
  |  Branch (9176:13): [True: 0, False: 48]
  |  Branch (9176:40): [True: 0, False: 48]
  ------------------
 9177|      0|            PyErr_Format(PyExc_TypeError,
 9178|      0|                        "type %s has the Py_TPFLAGS_MANAGED_DICT flag "
 9179|      0|                        "but tp_dictoffset is set",
 9180|      0|                        type->tp_name);
 9181|      0|            return -1;
 9182|      0|        }
 9183|     48|        if (!(type->tp_flags & Py_TPFLAGS_HAVE_GC)) {
  ------------------
  |  |  524|     48|#define Py_TPFLAGS_HAVE_GC (1UL << 14)
  ------------------
  |  Branch (9183:13): [True: 0, False: 48]
  ------------------
 9184|      0|            PyErr_Format(PyExc_SystemError,
 9185|      0|                        "type %s has the Py_TPFLAGS_MANAGED_DICT flag "
 9186|      0|                        "but not Py_TPFLAGS_HAVE_GC flag",
 9187|      0|                        type->tp_name);
 9188|      0|            return -1;
 9189|      0|        }
 9190|     48|        type->tp_dictoffset = -1;
 9191|     48|    }
 9192|    333|    if (type->tp_flags & Py_TPFLAGS_MANAGED_WEAKREF) {
  ------------------
  |  |  477|    333|#define Py_TPFLAGS_MANAGED_WEAKREF (1 << 3)
  ------------------
  |  Branch (9192:9): [True: 60, False: 273]
  ------------------
 9193|     60|        if (type->tp_weaklistoffset != 0 &&
  ------------------
  |  Branch (9193:13): [True: 53, False: 7]
  ------------------
 9194|     53|            type->tp_weaklistoffset != MANAGED_WEAKREF_OFFSET)
  ------------------
  |  |  926|     53|#  define MANAGED_WEAKREF_OFFSET (((Py_ssize_t)sizeof(PyObject *))*-4)
  ------------------
  |  Branch (9194:13): [True: 0, False: 53]
  ------------------
 9195|      0|        {
 9196|      0|            PyErr_Format(PyExc_TypeError,
 9197|      0|                        "type %s has the Py_TPFLAGS_MANAGED_WEAKREF flag "
 9198|      0|                        "but tp_weaklistoffset is set",
 9199|      0|                        type->tp_name);
 9200|      0|            return -1;
 9201|      0|        }
 9202|     60|        if (!(type->tp_flags & Py_TPFLAGS_HAVE_GC)) {
  ------------------
  |  |  524|     60|#define Py_TPFLAGS_HAVE_GC (1UL << 14)
  ------------------
  |  Branch (9202:13): [True: 0, False: 60]
  ------------------
 9203|      0|            PyErr_Format(PyExc_SystemError,
 9204|      0|                        "type %s has the Py_TPFLAGS_MANAGED_WEAKREF flag "
 9205|      0|                        "but not Py_TPFLAGS_HAVE_GC flag",
 9206|      0|                        type->tp_name);
 9207|      0|            return -1;
 9208|      0|        }
 9209|     60|        type->tp_weaklistoffset = MANAGED_WEAKREF_OFFSET;
  ------------------
  |  |  926|     60|#  define MANAGED_WEAKREF_OFFSET (((Py_ssize_t)sizeof(PyObject *))*-4)
  ------------------
 9210|     60|    }
 9211|    333|    return 0;
 9212|    333|}
typeobject.c:type_ready_set_hash:
 9343|    333|{
 9344|    333|    if (type->tp_hash != NULL) {
  ------------------
  |  Branch (9344:9): [True: 315, False: 18]
  ------------------
 9345|    315|        return 0;
 9346|    315|    }
 9347|       |
 9348|     18|    PyObject *dict = lookup_tp_dict(type);
 9349|     18|    int r = PyDict_Contains(dict, &_Py_ID(__hash__));
  ------------------
  |  |  917|     18|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     18|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     18|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9350|     18|    if (r < 0) {
  ------------------
  |  Branch (9350:9): [True: 0, False: 18]
  ------------------
 9351|      0|        return -1;
 9352|      0|    }
 9353|     18|    if (r > 0) {
  ------------------
  |  Branch (9353:9): [True: 3, False: 15]
  ------------------
 9354|      3|        return 0;
 9355|      3|    }
 9356|       |
 9357|     15|    if (PyDict_SetItem(dict, &_Py_ID(__hash__), Py_None) < 0) {
  ------------------
  |  |  917|     15|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     15|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     15|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  if (PyDict_SetItem(dict, &_Py_ID(__hash__), Py_None) < 0) {
  ------------------
  |  |  616|     15|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (9357:9): [True: 0, False: 15]
  ------------------
 9358|      0|        return -1;
 9359|      0|    }
 9360|     15|    type->tp_hash = PyObject_HashNotImplemented;
 9361|     15|    return 0;
 9362|     15|}
typeobject.c:type_ready_add_subclasses:
 9368|    333|{
 9369|    333|    PyObject *bases = lookup_tp_bases(type);
 9370|    333|    Py_ssize_t nbase = PyTuple_GET_SIZE(bases);
  ------------------
  |  |   27|    333|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    333|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    333|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9371|    677|    for (Py_ssize_t i = 0; i < nbase; i++) {
  ------------------
  |  Branch (9371:28): [True: 344, False: 333]
  ------------------
 9372|    344|        PyObject *b = PyTuple_GET_ITEM(bases, i);
  ------------------
  |  |   29|    344|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|    344|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    344|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (9372:23): [True: 344, False: 0]
  ------------------
 9373|    344|        if (PyType_Check(b) && add_subclass((PyTypeObject *)b, type) < 0) {
  ------------------
  |  |  766|    688|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    344|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    344|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (766:28): [True: 344, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (9373:32): [True: 0, False: 344]
  ------------------
 9374|      0|            return -1;
 9375|      0|        }
 9376|    344|    }
 9377|    333|    return 0;
 9378|    333|}
typeobject.c:type_ready_managed_dict:
 9436|    333|{
 9437|    333|    if (!(type->tp_flags & Py_TPFLAGS_MANAGED_DICT)) {
  ------------------
  |  |  482|    333|#define Py_TPFLAGS_MANAGED_DICT (1 << 4)
  ------------------
  |  Branch (9437:9): [True: 285, False: 48]
  ------------------
 9438|    285|        return 0;
 9439|    285|    }
 9440|     48|    if (!(type->tp_flags & Py_TPFLAGS_HEAPTYPE)) {
  ------------------
  |  |  503|     48|#define Py_TPFLAGS_HEAPTYPE (1UL << 9)
  ------------------
  |  Branch (9440:9): [True: 0, False: 48]
  ------------------
 9441|      0|        PyErr_Format(PyExc_SystemError,
 9442|      0|                     "type %s has the Py_TPFLAGS_MANAGED_DICT flag "
 9443|      0|                     "but not Py_TPFLAGS_HEAPTYPE flag",
 9444|      0|                     type->tp_name);
 9445|      0|        return -1;
 9446|      0|    }
 9447|     48|    PyHeapTypeObject* et = (PyHeapTypeObject*)type;
 9448|     48|    if (et->ht_cached_keys == NULL) {
  ------------------
  |  Branch (9448:9): [True: 48, False: 0]
  ------------------
 9449|     48|        et->ht_cached_keys = _PyDict_NewKeysForClass(et);
 9450|     48|        if (et->ht_cached_keys == NULL) {
  ------------------
  |  Branch (9450:13): [True: 0, False: 48]
  ------------------
 9451|      0|            PyErr_NoMemory();
 9452|      0|            return -1;
 9453|      0|        }
 9454|     48|    }
 9455|     48|    if (type->tp_itemsize == 0) {
  ------------------
  |  Branch (9455:9): [True: 47, False: 1]
  ------------------
 9456|     47|        type_add_flags(type, Py_TPFLAGS_INLINE_VALUES);
  ------------------
  |  |  472|     47|#define Py_TPFLAGS_INLINE_VALUES (1 << 2)
  ------------------
 9457|     47|    }
 9458|     48|    return 0;
 9459|     48|}
typeobject.c:type_ready_post_checks:
 9463|    333|{
 9464|       |    // bpo-44263: tp_traverse is required if Py_TPFLAGS_HAVE_GC is set.
 9465|       |    // Note: tp_clear is optional.
 9466|    333|    if (type->tp_flags & Py_TPFLAGS_HAVE_GC
  ------------------
  |  |  524|    666|#define Py_TPFLAGS_HAVE_GC (1UL << 14)
  ------------------
  |  Branch (9466:9): [True: 298, False: 35]
  ------------------
 9467|    298|        && type->tp_traverse == NULL)
  ------------------
  |  Branch (9467:12): [True: 0, False: 298]
  ------------------
 9468|      0|    {
 9469|      0|        PyErr_Format(PyExc_SystemError,
 9470|      0|                     "type %s has the Py_TPFLAGS_HAVE_GC flag "
 9471|      0|                     "but has no traverse function",
 9472|      0|                     type->tp_name);
 9473|      0|        return -1;
 9474|      0|    }
 9475|    333|    if (type->tp_flags & Py_TPFLAGS_MANAGED_DICT) {
  ------------------
  |  |  482|    333|#define Py_TPFLAGS_MANAGED_DICT (1 << 4)
  ------------------
  |  Branch (9475:9): [True: 48, False: 285]
  ------------------
 9476|     48|        if (type->tp_dictoffset != -1) {
  ------------------
  |  Branch (9476:13): [True: 0, False: 48]
  ------------------
 9477|      0|            PyErr_Format(PyExc_SystemError,
 9478|      0|                        "type %s has the Py_TPFLAGS_MANAGED_DICT flag "
 9479|      0|                        "but tp_dictoffset is set to incompatible value",
 9480|      0|                        type->tp_name);
 9481|      0|            return -1;
 9482|      0|        }
 9483|     48|    }
 9484|    285|    else if (type->tp_dictoffset < (Py_ssize_t)sizeof(PyObject)) {
  ------------------
  |  Branch (9484:14): [True: 185, False: 100]
  ------------------
 9485|    185|        if (type->tp_dictoffset + type->tp_basicsize <= 0) {
  ------------------
  |  Branch (9485:13): [True: 0, False: 185]
  ------------------
 9486|      0|            PyErr_Format(PyExc_SystemError,
 9487|      0|                         "type %s has a tp_dictoffset that is too small",
 9488|      0|                         type->tp_name);
 9489|      0|            return -1;
 9490|      0|        }
 9491|    185|    }
 9492|    333|    return 0;
 9493|    333|}
typeobject.c:stop_readying:
  498|    333|{
  499|    333|    if (type->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN) {
  ------------------
  |  |  467|    333|#define _Py_TPFLAGS_STATIC_BUILTIN (1 << 1)
  ------------------
  |  Branch (499:9): [True: 207, False: 126]
  ------------------
  500|    207|        PyInterpreterState *interp = _PyInterpreterState_GET();
  501|    207|        managed_static_type_state *state = managed_static_type_state_get(interp, type);
  502|    207|        assert(state != NULL);
  ------------------
  |  Branch (502:9): [True: 207, False: 0]
  ------------------
  503|    207|        assert(state->readying);
  ------------------
  |  Branch (503:9): [True: 207, False: 0]
  ------------------
  504|    207|        state->readying = 0;
  505|    207|        return;
  506|    207|    }
  507|    333|    assert(type->tp_flags & Py_TPFLAGS_READYING);
  ------------------
  |  Branch (507:5): [True: 126, False: 0]
  ------------------
  508|    126|    type_clear_flags(type, Py_TPFLAGS_READYING);
  ------------------
  |  |  521|    126|#define Py_TPFLAGS_READYING (1UL << 13)
  ------------------
  509|    126|}
typeobject.c:init_static_type:
 9611|    207|{
 9612|    207|    assert(_Py_IsImmortal((PyObject *)self));
  ------------------
  |  Branch (9612:5): [True: 207, False: 0]
  ------------------
 9613|    207|    assert(!(self->tp_flags & Py_TPFLAGS_HEAPTYPE));
  ------------------
  |  Branch (9613:5): [True: 207, False: 0]
  ------------------
 9614|    207|    assert(!(self->tp_flags & Py_TPFLAGS_MANAGED_DICT));
  ------------------
  |  Branch (9614:5): [True: 207, False: 0]
  ------------------
 9615|    207|    assert(!(self->tp_flags & Py_TPFLAGS_MANAGED_WEAKREF));
  ------------------
  |  Branch (9615:5): [True: 207, False: 0]
  ------------------
 9616|       |
 9617|    207|    if (initial) {
  ------------------
  |  Branch (9617:9): [True: 207, False: 0]
  ------------------
 9618|    207|        assert((self->tp_flags & Py_TPFLAGS_READY) == 0);
  ------------------
  |  Branch (9618:9): [True: 207, False: 0]
  ------------------
 9619|       |
 9620|    207|        type_add_flags(self, _Py_TPFLAGS_STATIC_BUILTIN);
  ------------------
  |  |  467|    207|#define _Py_TPFLAGS_STATIC_BUILTIN (1 << 1)
  ------------------
 9621|    207|        type_add_flags(self, Py_TPFLAGS_IMMUTABLETYPE);
  ------------------
  |  |  500|    207|#define Py_TPFLAGS_IMMUTABLETYPE (1UL << 8)
  ------------------
 9622|       |
 9623|    207|        if (self->tp_version_tag == 0) {
  ------------------
  |  Branch (9623:13): [True: 196, False: 11]
  ------------------
 9624|    196|            unsigned int next_version_tag = next_global_version_tag();
 9625|    196|            assert(next_version_tag != 0);
  ------------------
  |  Branch (9625:13): [True: 196, False: 0]
  ------------------
 9626|    196|            _PyType_SetVersion(self, next_version_tag);
 9627|    196|        }
 9628|    207|    }
 9629|      0|    else {
 9630|      0|        assert(!initial);
  ------------------
  |  Branch (9630:9): [True: 0, False: 0]
  ------------------
 9631|      0|        assert(self->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN);
  ------------------
  |  Branch (9631:9): [True: 0, False: 0]
  ------------------
 9632|      0|        assert(self->tp_version_tag != 0);
  ------------------
  |  Branch (9632:9): [True: 0, False: 0]
  ------------------
 9633|      0|    }
 9634|       |
 9635|    207|    managed_static_type_state_init(interp, self, isbuiltin, initial);
 9636|       |
 9637|    207|    int res;
 9638|    207|    BEGIN_TYPE_LOCK();
 9639|    207|    res = type_ready(self, initial);
 9640|    207|    END_TYPE_LOCK();
 9641|    207|    if (res < 0) {
  ------------------
  |  Branch (9641:9): [True: 0, False: 207]
  ------------------
 9642|      0|        _PyStaticType_ClearWeakRefs(interp, self);
 9643|      0|        managed_static_type_state_clear(interp, self, isbuiltin, initial);
 9644|      0|    }
 9645|    207|    return res;
 9646|    207|}
typeobject.c:managed_static_type_state_init:
  312|    207|{
  313|    207|    assert(interp->runtime == &_PyRuntime);
  ------------------
  |  Branch (313:5): [True: 207, False: 0]
  ------------------
  314|       |
  315|    207|    size_t index;
  316|    207|    if (initial) {
  ------------------
  |  Branch (316:9): [True: 207, False: 0]
  ------------------
  317|    207|        assert(!managed_static_type_index_is_set(self));
  ------------------
  |  Branch (317:9): [True: 207, False: 0]
  ------------------
  318|    207|        if (isbuiltin) {
  ------------------
  |  Branch (318:13): [True: 201, False: 6]
  ------------------
  319|    201|            index = interp->types.builtins.num_initialized;
  320|    201|            assert(index < _Py_MAX_MANAGED_STATIC_BUILTIN_TYPES);
  ------------------
  |  Branch (320:13): [True: 201, False: 0]
  ------------------
  321|    201|        }
  322|      6|        else {
  323|      6|            PyMutex_Lock(&interp->types.mutex);
  ------------------
  |  |   59|      6|#define PyMutex_Lock _PyMutex_Lock
  ------------------
  324|      6|            index = interp->types.for_extensions.next_index;
  325|      6|            interp->types.for_extensions.next_index++;
  326|      6|            PyMutex_Unlock(&interp->types.mutex);
  ------------------
  |  |   70|      6|#define PyMutex_Unlock _PyMutex_Unlock
  ------------------
  327|      6|            assert(index < _Py_MAX_MANAGED_STATIC_EXT_TYPES);
  ------------------
  |  Branch (327:13): [True: 6, False: 0]
  ------------------
  328|      6|        }
  329|    207|        managed_static_type_index_set(self, index);
  330|    207|    }
  331|      0|    else {
  332|      0|        index = managed_static_type_index_get(self);
  333|      0|        if (isbuiltin) {
  ------------------
  |  Branch (333:13): [True: 0, False: 0]
  ------------------
  334|      0|            assert(index == interp->types.builtins.num_initialized);
  ------------------
  |  Branch (334:13): [True: 0, False: 0]
  ------------------
  335|      0|            assert(index < _Py_MAX_MANAGED_STATIC_BUILTIN_TYPES);
  ------------------
  |  Branch (335:13): [True: 0, False: 0]
  ------------------
  336|      0|        }
  337|      0|        else {
  338|      0|            assert(index < _Py_MAX_MANAGED_STATIC_EXT_TYPES);
  ------------------
  |  Branch (338:13): [True: 0, False: 0]
  ------------------
  339|      0|        }
  340|      0|    }
  341|    207|    size_t full_index = isbuiltin
  ------------------
  |  Branch (341:25): [True: 201, False: 6]
  ------------------
  342|    207|        ? index
  343|    207|        : index + _Py_MAX_MANAGED_STATIC_BUILTIN_TYPES;
  ------------------
  |  |  531|      6|    (_Py_NUM_MANAGED_PREINITIALIZED_TYPES + 83)
  |  |  ------------------
  |  |  |  |  529|      6|#define _Py_NUM_MANAGED_PREINITIALIZED_TYPES 120
  |  |  ------------------
  ------------------
  344|       |
  345|    207|    assert((initial == 1) ==
  ------------------
  |  Branch (345:5): [True: 207, False: 0]
  ------------------
  346|    207|            (_Py_atomic_load_int64(&_PyRuntime.types.managed_static.types[full_index].interp_count) == 0));
  347|    207|    (void)_Py_atomic_add_int64(
  348|    207|            &_PyRuntime.types.managed_static.types[full_index].interp_count, 1);
  349|       |
  350|    207|    if (initial) {
  ------------------
  |  Branch (350:9): [True: 207, False: 0]
  ------------------
  351|    207|        assert(_PyRuntime.types.managed_static.types[full_index].type == NULL);
  ------------------
  |  Branch (351:9): [True: 207, False: 0]
  ------------------
  352|    207|        _PyRuntime.types.managed_static.types[full_index].type = self;
  353|    207|    }
  354|      0|    else {
  355|      0|        assert(_PyRuntime.types.managed_static.types[full_index].type == self);
  ------------------
  |  Branch (355:9): [True: 0, False: 0]
  ------------------
  356|      0|    }
  357|       |
  358|    207|    managed_static_type_state *state = isbuiltin
  ------------------
  |  Branch (358:40): [True: 201, False: 6]
  ------------------
  359|    207|        ? &(interp->types.builtins.initialized[index])
  360|    207|        : &(interp->types.for_extensions.initialized[index]);
  361|       |
  362|       |    /* It should only be called once for each builtin type per interpreter. */
  363|    207|    assert(state->type == NULL);
  ------------------
  |  Branch (363:5): [True: 207, False: 0]
  ------------------
  364|    207|    state->type = self;
  365|    207|    state->isbuiltin = isbuiltin;
  366|       |
  367|       |    /* state->tp_subclasses is left NULL until init_subclasses() sets it. */
  368|       |    /* state->tp_weaklist is left NULL until insert_head() or insert_after()
  369|       |       (in weakrefobject.c) sets it. */
  370|       |
  371|    207|    if (isbuiltin) {
  ------------------
  |  Branch (371:9): [True: 201, False: 6]
  ------------------
  372|    201|        interp->types.builtins.num_initialized++;
  373|    201|    }
  374|      6|    else {
  375|      6|        interp->types.for_extensions.num_initialized++;
  376|      6|    }
  377|    207|}
typeobject.c:managed_static_type_index_set:
  248|    207|{
  249|    207|    assert(index < _Py_MAX_MANAGED_STATIC_BUILTIN_TYPES);
  ------------------
  |  Branch (249:5): [True: 207, False: 0]
  ------------------
  250|       |    /* We store a 1-based index so 0 can mean "not initialized". */
  251|    207|    self->tp_subclasses = (PyObject *)(index + 1);
  252|    207|}
typeobject.c:vectorcall_method:
 3112|      3|{
 3113|      3|    assert(nargs >= 1);
  ------------------
  |  Branch (3113:5): [True: 3, False: 0]
  ------------------
 3114|       |
 3115|      3|    PyThreadState *tstate = _PyThreadState_GET();
 3116|      3|    PyObject *retval = NULL;
 3117|      3|    PyObject *self = args[0];
 3118|      3|    _PyCStackRef cref;
 3119|      3|    _PyThreadState_PushCStackRef(tstate, &cref);
 3120|      3|    int unbound = lookup_method(self, name, &cref.ref);
 3121|      3|    if (unbound >= 0) {
  ------------------
  |  Branch (3121:9): [True: 3, False: 0]
  ------------------
 3122|      3|        PyObject *func = PyStackRef_AsPyObjectBorrow(cref.ref);
 3123|      3|        retval = vectorcall_unbound(tstate, unbound, func, args, nargs);
 3124|      3|    }
 3125|      3|    _PyThreadState_PopCStackRef(tstate, &cref);
 3126|      3|    return retval;
 3127|      3|}
typeobject.c:slot_tp_init:
11150|     84|{
11151|     84|    PyObject *res = call_method(self, &_Py_ID(__init__), args, kwds);
  ------------------
  |  |  917|     84|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     84|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     84|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11152|     84|    if (res == NULL)
  ------------------
  |  Branch (11152:9): [True: 4, False: 80]
  ------------------
11153|      4|        return -1;
11154|     80|    if (res != Py_None) {
  ------------------
  |  |  616|     80|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (11154:9): [True: 0, False: 80]
  ------------------
11155|      0|        PyErr_Format(PyExc_TypeError,
11156|      0|                     "__init__() should return None, not '%.200s'",
11157|      0|                     Py_TYPE(res)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11158|      0|        Py_DECREF(res);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11159|      0|        return -1;
11160|      0|    }
11161|     80|    Py_DECREF(res);
  ------------------
  |  |  430|     80|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     80|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     80|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11162|     80|    return 0;
11163|     80|}
typeobject.c:wrap_init:
10373|     30|{
10374|     30|    initproc func = (initproc)wrapped;
10375|       |
10376|     30|    if (func(self, args, kwds) < 0)
  ------------------
  |  Branch (10376:9): [True: 0, False: 30]
  ------------------
10377|      0|        return NULL;
10378|     30|    Py_RETURN_NONE;
  ------------------
  |  |  628|     30|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|     30|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
10379|     30|}
typeobject.c:slot_mp_subscript:
10503|      3|FUNCNAME(PyObject *self, ARG1TYPE arg1) \
10504|      3|{ \
10505|      3|    PyObject* stack[2] = {self, arg1}; \
10506|      3|    return vectorcall_method(&_Py_ID(DUNDER), stack, 2); \
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10507|      3|}
typeobject.c:slot_sq_contains:
10661|      1|{
10662|      1|    int attr_is_none = 0;
10663|      1|    PyObject *res = maybe_call_special_one_arg(self, &_Py_ID(__contains__), value,
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10664|      1|                                               &attr_is_none);
10665|      1|    if (attr_is_none) {
  ------------------
  |  Branch (10665:9): [True: 0, False: 1]
  ------------------
10666|      0|        PyErr_Format(PyExc_TypeError,
10667|      0|            "'%.200s' object is not a container",
10668|      0|            Py_TYPE(self)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10669|      0|        return -1;
10670|      0|    }
10671|      1|    else if (res == NULL && PyErr_Occurred()) {
  ------------------
  |  Branch (10671:14): [True: 0, False: 1]
  |  Branch (10671:29): [True: 0, False: 0]
  ------------------
10672|      0|        return -1;
10673|      0|    }
10674|      1|    else if (res == NULL) {
  ------------------
  |  Branch (10674:14): [True: 0, False: 1]
  ------------------
10675|      0|        return (int)_PySequence_IterSearch(self, value, PY_ITERSEARCH_CONTAINS);
  ------------------
  |  |   29|      0|#define PY_ITERSEARCH_CONTAINS 3
  ------------------
10676|      0|    }
10677|      1|    int result = PyObject_IsTrue(res);
10678|      1|    Py_DECREF(res);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10679|      1|    return result;
10680|      1|}
typeobject.c:type_get_mro:
 1765|     16|{
 1766|     16|    PyTypeObject *type = PyTypeObject_CAST(tp);
  ------------------
  |  |  200|     16|#define PyTypeObject_CAST(op)   ((PyTypeObject *)(op))
  ------------------
 1767|     16|    PyObject *mro = lookup_tp_mro(type);
 1768|     16|    if (mro == NULL) {
  ------------------
  |  Branch (1768:9): [True: 0, False: 16]
  ------------------
 1769|      0|        Py_RETURN_NONE;
  ------------------
  |  |  628|      0|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
 1770|      0|    }
 1771|     16|    return Py_NewRef(mro);
  ------------------
  |  |  550|     16|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     16|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     16|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1772|     16|}
typeobject.c:check_immutable_bases:
 5174|     28|{
 5175|     28|    Py_ssize_t i = 0;
 5176|     28|    if (skip_first) {
  ------------------
  |  Branch (5176:9): [True: 0, False: 28]
  ------------------
 5177|       |        // When testing the MRO, skip the type itself
 5178|      0|        i = 1;
 5179|      0|    }
 5180|     56|    for (; i<PyTuple_GET_SIZE(bases); i++) {
  ------------------
  |  |   27|     56|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     56|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     56|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5180:12): [True: 28, False: 28]
  ------------------
 5181|     28|        PyTypeObject *b = (PyTypeObject*)PyTuple_GET_ITEM(bases, i);
  ------------------
  |  |   29|     28|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|     28|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     28|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5181:42): [True: 28, False: 0]
  ------------------
 5182|     28|        if (!b) {
  ------------------
  |  Branch (5182:13): [True: 0, False: 28]
  ------------------
 5183|      0|            return -1;
 5184|      0|        }
 5185|     28|        if (!_PyType_HasFeature(b, Py_TPFLAGS_IMMUTABLETYPE)) {
  ------------------
  |  |  500|     28|#define Py_TPFLAGS_IMMUTABLETYPE (1UL << 8)
  ------------------
  |  Branch (5185:13): [True: 0, False: 28]
  ------------------
 5186|      0|            PyErr_Format(
 5187|      0|                PyExc_TypeError,
 5188|      0|                "Creating immutable type %s from mutable base %N",
 5189|      0|                type_name, b
 5190|      0|            );
 5191|      0|            return -1;
 5192|      0|        }
 5193|     28|    }
 5194|     28|    return 0;
 5195|     28|}
typeobject.c:supercheck:
12672|    177|{
12673|       |    /* Check that a super() call makes sense.  Return a type object.
12674|       |
12675|       |       obj can be a class, or an instance of one:
12676|       |
12677|       |       - If it is a class, it must be a subclass of 'type'.      This case is
12678|       |         used for class methods; the return value is obj.
12679|       |
12680|       |       - If it is an instance, it must be an instance of 'type'.  This is
12681|       |         the normal case; the return value is obj.__class__.
12682|       |
12683|       |       But... when obj is an instance, we want to allow for the case where
12684|       |       Py_TYPE(obj) is not a subclass of type, but obj.__class__ is!
12685|       |       This will allow using super() with a proxy for obj.
12686|       |    */
12687|       |
12688|       |    /* Check for first bullet above (special case) */
12689|    177|    if (PyType_Check(obj) && PyType_IsSubtype((PyTypeObject *)obj, type)) {
  ------------------
  |  |  766|    354|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    177|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    177|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (766:28): [True: 147, False: 30]
  |  |  ------------------
  ------------------
  |  Branch (12689:30): [True: 147, False: 0]
  ------------------
12690|    147|        return (PyTypeObject *)Py_NewRef(obj);
  ------------------
  |  |  550|    147|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    147|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    147|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12691|    147|    }
12692|       |
12693|       |    /* Normal case */
12694|     30|    if (PyType_IsSubtype(Py_TYPE(obj), type)) {
  ------------------
  |  |  213|     30|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     30|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     30|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12694:9): [True: 30, False: 0]
  ------------------
12695|     30|        return (PyTypeObject*)Py_NewRef(Py_TYPE(obj));
  ------------------
  |  |  550|     30|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     30|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     30|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12696|     30|    }
12697|      0|    else {
12698|       |        /* Try the slow way */
12699|      0|        PyObject *class_attr;
12700|       |
12701|      0|        if (PyObject_GetOptionalAttr(obj, &_Py_ID(__class__), &class_attr) < 0) {
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12701:13): [True: 0, False: 0]
  ------------------
12702|      0|            return NULL;
12703|      0|        }
12704|      0|        if (class_attr != NULL &&
  ------------------
  |  Branch (12704:13): [True: 0, False: 0]
  ------------------
12705|      0|            PyType_Check(class_attr) &&
  ------------------
  |  |  766|      0|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (766:28): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12706|      0|            (PyTypeObject *)class_attr != Py_TYPE(obj))
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12706:13): [True: 0, False: 0]
  ------------------
12707|      0|        {
12708|      0|            int ok = PyType_IsSubtype(
12709|      0|                (PyTypeObject *)class_attr, type);
12710|      0|            if (ok) {
  ------------------
  |  Branch (12710:17): [True: 0, False: 0]
  ------------------
12711|      0|                return (PyTypeObject *)class_attr;
12712|      0|            }
12713|      0|        }
12714|      0|        Py_XDECREF(class_attr);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12715|      0|    }
12716|       |
12717|      0|    const char *type_or_instance, *obj_str;
12718|       |
12719|      0|    if (PyType_Check(obj)) {
  ------------------
  |  |  766|      0|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (766:28): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12720|      0|        type_or_instance = "type";
12721|      0|        obj_str = ((PyTypeObject*)obj)->tp_name;
12722|      0|    }
12723|      0|    else {
12724|      0|        type_or_instance = "instance of";
12725|      0|        obj_str = Py_TYPE(obj)->tp_name;
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12726|      0|    }
12727|       |
12728|      0|    PyErr_Format(PyExc_TypeError,
12729|      0|                "super(type, obj): obj (%s %.200s) is not "
12730|      0|                "an instance or subtype of type (%.200s).",
12731|      0|                type_or_instance, obj_str, type->tp_name);
12732|       |
12733|       |    return NULL;
12734|     30|}
typeobject.c:do_super_lookup:
12607|    177|{
12608|    177|    PyObject *res;
12609|    177|    int temp_su = 0;
12610|       |
12611|    177|    if (su_obj_type == NULL) {
  ------------------
  |  Branch (12611:9): [True: 0, False: 177]
  ------------------
12612|      0|        goto skip;
12613|      0|    }
12614|       |
12615|    177|    res = _PySuper_LookupDescr(su_type, su_obj_type, name);
12616|    177|    if (res != NULL) {
  ------------------
  |  Branch (12616:9): [True: 177, False: 0]
  ------------------
12617|    177|        if (method && _PyType_HasFeature(Py_TYPE(res), Py_TPFLAGS_METHOD_DESCRIPTOR)) {
  ------------------
  |  |  213|     29|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     29|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     29|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      if (method && _PyType_HasFeature(Py_TYPE(res), Py_TPFLAGS_METHOD_DESCRIPTOR)) {
  ------------------
  |  |  534|     29|#define Py_TPFLAGS_METHOD_DESCRIPTOR (1UL << 17)
  ------------------
  |  Branch (12617:13): [True: 29, False: 148]
  |  Branch (12617:23): [True: 29, False: 0]
  ------------------
12618|     29|            *method = 1;
12619|     29|        }
12620|    148|        else {
12621|    148|            descrgetfunc f = Py_TYPE(res)->tp_descr_get;
  ------------------
  |  |  213|    148|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    148|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    148|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12622|    148|            if (f != NULL) {
  ------------------
  |  Branch (12622:17): [True: 89, False: 59]
  ------------------
12623|     89|                PyObject *res2;
12624|     89|                res2 = f(res,
12625|       |                    /* Only pass 'obj' param if this is instance-mode super
12626|       |                    (See SF ID #743627)  */
12627|     89|                    (su_obj == (PyObject *)su_obj_type) ? NULL : su_obj,
  ------------------
  |  Branch (12627:21): [True: 88, False: 1]
  ------------------
12628|     89|                    (PyObject *)su_obj_type);
12629|     89|                Py_SETREF(res, res2);
  ------------------
  |  |  352|     89|    do { \
  |  |  353|     89|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|     89|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  354|     89|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|     89|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  355|     89|        *_tmp_dst_ptr = (src); \
  |  |  356|     89|        Py_DECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  430|     89|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     89|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     89|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  357|     89|    } while (0)
  |  |  ------------------
  |  |  |  Branch (357:14): [Folded, False: 89]
  |  |  ------------------
  ------------------
12630|     89|            }
12631|    148|        }
12632|       |
12633|    177|        return res;
12634|    177|    }
12635|      0|    else if (PyErr_Occurred()) {
  ------------------
  |  Branch (12635:14): [True: 0, False: 0]
  ------------------
12636|      0|        return NULL;
12637|      0|    }
12638|       |
12639|      0|  skip:
12640|      0|    if (su == NULL) {
  ------------------
  |  Branch (12640:9): [True: 0, False: 0]
  ------------------
12641|      0|        PyObject *args[] = {(PyObject *)su_type, su_obj};
12642|      0|        su = (superobject *)PyObject_Vectorcall((PyObject *)&PySuper_Type, args, 2, NULL);
12643|      0|        if (su == NULL) {
  ------------------
  |  Branch (12643:13): [True: 0, False: 0]
  ------------------
12644|      0|            return NULL;
12645|      0|        }
12646|      0|        temp_su = 1;
12647|      0|    }
12648|      0|    res = PyObject_GenericGetAttr((PyObject *)su, name);
12649|      0|    if (temp_su) {
  ------------------
  |  Branch (12649:9): [True: 0, False: 0]
  ------------------
12650|      0|        Py_DECREF(su);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12651|      0|    }
12652|      0|    return res;
12653|      0|}
typeobject.c:super_dealloc:
12525|     91|{
12526|     91|    superobject *su = superobject_CAST(self);
  ------------------
  |  |12511|     91|#define superobject_CAST(op)    ((superobject *)(op))
  ------------------
12527|       |
12528|     91|    _PyObject_GC_UNTRACK(self);
  ------------------
  |  |  515|     91|        _PyObject_GC_UNTRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     91|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     91|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12529|     91|    Py_XDECREF(su->obj);
  ------------------
  |  |  524|     91|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     91|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     91|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12530|     91|    Py_XDECREF(su->type);
  ------------------
  |  |  524|     91|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     91|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     91|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12531|     91|    Py_XDECREF(su->obj_type);
  ------------------
  |  |  524|     91|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     91|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     91|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12532|     91|    Py_TYPE(self)->tp_free(self);
  ------------------
  |  |  213|     91|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     91|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     91|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12533|     91|}
typeobject.c:super_getattro:
12657|     91|{
12658|     91|    superobject *su = superobject_CAST(self);
  ------------------
  |  |12511|     91|#define superobject_CAST(op)    ((superobject *)(op))
  ------------------
12659|       |
12660|       |    /* We want __class__ to return the class of the super object
12661|       |       (i.e. super, or a subclass), not the class of su->obj. */
12662|     91|    if (PyUnicode_Check(name) &&
  ------------------
  |  |  103|     91|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|    182|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 91, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12663|     91|        PyUnicode_GET_LENGTH(name) == 9 &&
  ------------------
  |  |  299|     91|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     91|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     91|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12663:9): [True: 0, False: 91]
  ------------------
12664|      0|        _PyUnicode_Equal(name, &_Py_ID(__class__)))
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12664:9): [True: 0, False: 0]
  ------------------
12665|      0|        return PyObject_GenericGetAttr(self, name);
12666|       |
12667|     91|    return do_super_lookup(su, su->type, su->obj, su->obj_type, name, NULL);
12668|     91|}
typeobject.c:super_init_impl:
12882|     91|super_init_impl(PyObject *self, PyTypeObject *type, PyObject *obj) {
12883|     91|    superobject *su = superobject_CAST(self);
  ------------------
  |  |12511|     91|#define superobject_CAST(op)    ((superobject *)(op))
  ------------------
12884|     91|    PyTypeObject *obj_type = NULL;
12885|     91|    if (type == NULL) {
  ------------------
  |  Branch (12885:9): [True: 4, False: 87]
  ------------------
12886|       |        /* Call super(), without args -- fill in from __class__
12887|       |           and first local variable on the stack. */
12888|      4|        PyThreadState *tstate = _PyThreadState_GET();
12889|      4|        _PyInterpreterFrame *frame = _PyThreadState_GetFrame(tstate);
12890|      4|        if (frame == NULL) {
  ------------------
  |  Branch (12890:13): [True: 0, False: 4]
  ------------------
12891|      0|            PyErr_SetString(PyExc_RuntimeError,
12892|      0|                            "super(): no current frame");
12893|      0|            return -1;
12894|      0|        }
12895|      4|        int res = super_init_without_args(frame, &type, &obj);
12896|       |
12897|      4|        if (res < 0) {
  ------------------
  |  Branch (12897:13): [True: 0, False: 4]
  ------------------
12898|      0|            return -1;
12899|      0|        }
12900|      4|    }
12901|     87|    else {
12902|     87|        Py_INCREF(type);
  ------------------
  |  |  310|     87|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     87|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     87|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12903|     87|        Py_XINCREF(obj);
  ------------------
  |  |  514|     87|#  define Py_XINCREF(op) Py_XINCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     87|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     87|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12904|     87|    }
12905|       |
12906|     91|    if (obj == Py_None) {
  ------------------
  |  |  616|     91|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (12906:9): [True: 0, False: 91]
  ------------------
12907|      0|        Py_DECREF(obj);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12908|      0|        obj = NULL;
12909|      0|    }
12910|     91|    if (obj != NULL) {
  ------------------
  |  Branch (12910:9): [True: 91, False: 0]
  ------------------
12911|     91|        obj_type = supercheck(type, obj);
12912|     91|        if (obj_type == NULL) {
  ------------------
  |  Branch (12912:13): [True: 0, False: 91]
  ------------------
12913|      0|            Py_DECREF(type);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12914|      0|            Py_DECREF(obj);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12915|      0|            return -1;
12916|      0|        }
12917|     91|    }
12918|     91|    Py_XSETREF(su->type, (PyTypeObject*)type);
  ------------------
  |  |  374|     91|    do { \
  |  |  375|     91|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|     91|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  376|     91|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|     91|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  377|     91|        *_tmp_dst_ptr = (src); \
  |  |  378|     91|        Py_XDECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  524|     91|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     91|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     91|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  379|     91|    } while (0)
  |  |  ------------------
  |  |  |  Branch (379:14): [Folded, False: 91]
  |  |  ------------------
  ------------------
12919|     91|    Py_XSETREF(su->obj, obj);
  ------------------
  |  |  374|     91|    do { \
  |  |  375|     91|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|     91|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  376|     91|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|     91|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  377|     91|        *_tmp_dst_ptr = (src); \
  |  |  378|     91|        Py_XDECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  524|     91|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     91|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     91|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  379|     91|    } while (0)
  |  |  ------------------
  |  |  |  Branch (379:14): [Folded, False: 91]
  |  |  ------------------
  ------------------
12920|     91|    Py_XSETREF(su->obj_type, obj_type);
  ------------------
  |  |  374|     91|    do { \
  |  |  375|     91|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|     91|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  376|     91|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|     91|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  377|     91|        *_tmp_dst_ptr = (src); \
  |  |  378|     91|        Py_XDECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  524|     91|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     91|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     91|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  379|     91|    } while (0)
  |  |  ------------------
  |  |  |  Branch (379:14): [Folded, False: 91]
  |  |  ------------------
  ------------------
12921|     91|    return 0;
12922|     91|}
typeobject.c:super_init_without_args:
12784|      4|{
12785|      4|    PyCodeObject *co = _PyFrame_GetCode(cframe);
12786|      4|    if (co->co_argcount == 0) {
  ------------------
  |  Branch (12786:9): [True: 0, False: 4]
  ------------------
12787|      0|        PyErr_SetString(PyExc_RuntimeError,
12788|      0|                        "super(): no arguments");
12789|      0|        return -1;
12790|      0|    }
12791|       |
12792|      4|    assert(_PyFrame_GetCode(cframe)->co_nlocalsplus > 0);
  ------------------
  |  Branch (12792:5): [True: 4, False: 0]
  ------------------
12793|      4|    PyObject *firstarg = PyStackRef_AsPyObjectBorrow(_PyFrame_GetLocalsArray(cframe)[0]);
12794|      4|    if (firstarg == NULL) {
  ------------------
  |  Branch (12794:9): [True: 0, False: 4]
  ------------------
12795|      0|        PyErr_SetString(PyExc_RuntimeError, "super(): arg[0] deleted");
12796|      0|        return -1;
12797|      0|    }
12798|       |    // The first argument might be a cell.
12799|       |    // "firstarg" is a cell here unless (very unlikely) super()
12800|       |    // was called from the C-API before the first MAKE_CELL op.
12801|      4|    if ((_PyLocals_GetKind(co->co_localspluskinds, 0) & CO_FAST_CELL) &&
  ------------------
  |  |  198|      4|#define CO_FAST_CELL    (0x40)
  ------------------
  |  Branch (12801:9): [True: 0, False: 4]
  ------------------
12802|      0|            (_PyInterpreterFrame_LASTI(cframe) >= 0)) {
  ------------------
  |  |   18|      0|    ((int)((IF)->instr_ptr - _PyFrame_GetBytecode((IF))))
  ------------------
  |  Branch (12802:13): [True: 0, False: 0]
  ------------------
12803|       |        // MAKE_CELL and COPY_FREE_VARS have no quickened forms, so no need
12804|       |        // to use _PyOpcode_Deopt here:
12805|      0|        assert(_PyCode_CODE(co)[0].op.code == MAKE_CELL ||
  ------------------
  |  Branch (12805:9): [True: 0, False: 0]
  |  Branch (12805:9): [True: 0, False: 0]
  ------------------
12806|      0|                _PyCode_CODE(co)[0].op.code == COPY_FREE_VARS);
12807|      0|        assert(PyCell_Check(firstarg));
  ------------------
  |  Branch (12807:9): [True: 0, False: 0]
  ------------------
12808|      0|        firstarg = PyCell_GetRef((PyCellObject *)firstarg);
12809|      0|        if (firstarg == NULL) {
  ------------------
  |  Branch (12809:13): [True: 0, False: 0]
  ------------------
12810|      0|            PyErr_SetString(PyExc_RuntimeError, "super(): arg[0] deleted");
12811|      0|            return -1;
12812|      0|        }
12813|      0|    }
12814|      4|    else {
12815|      4|        Py_INCREF(firstarg);
  ------------------
  |  |  310|      4|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12816|      4|    }
12817|       |
12818|       |    // Look for __class__ in the free vars.
12819|      4|    PyTypeObject *type = NULL;
12820|      4|    int i = PyUnstable_Code_GetFirstFree(co);
12821|      4|    for (; i < co->co_nlocalsplus; i++) {
  ------------------
  |  Branch (12821:12): [True: 4, False: 0]
  ------------------
12822|      4|        assert((_PyLocals_GetKind(co->co_localspluskinds, i) & CO_FAST_FREE) != 0);
  ------------------
  |  Branch (12822:9): [True: 4, False: 0]
  ------------------
12823|      4|        PyObject *name = PyTuple_GET_ITEM(co->co_localsplusnames, i);
  ------------------
  |  |   29|      4|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|      4|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12823:26): [True: 4, False: 0]
  ------------------
12824|      4|        assert(PyUnicode_Check(name));
  ------------------
  |  Branch (12824:9): [True: 4, False: 0]
  ------------------
12825|      4|        if (_PyUnicode_Equal(name, &_Py_ID(__class__))) {
  ------------------
  |  |  917|      4|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      4|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      4|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12825:13): [True: 4, False: 0]
  ------------------
12826|      4|            PyObject *cell = PyStackRef_AsPyObjectBorrow(_PyFrame_GetLocalsArray(cframe)[i]);
12827|      4|            if (cell == NULL || !PyCell_Check(cell)) {
  ------------------
  |  |   18|      4|#define PyCell_Check(op) Py_IS_TYPE((op), &PyCell_Type)
  |  |  ------------------
  |  |  |  |  215|      4|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12827:17): [True: 0, False: 4]
  |  Branch (12827:33): [True: 0, False: 4]
  ------------------
12828|      0|                PyErr_SetString(PyExc_RuntimeError,
12829|      0|                  "super(): bad __class__ cell");
12830|      0|                Py_DECREF(firstarg);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12831|      0|                return -1;
12832|      0|            }
12833|      4|            type = (PyTypeObject *) PyCell_GetRef((PyCellObject *)cell);
12834|      4|            if (type == NULL) {
  ------------------
  |  Branch (12834:17): [True: 0, False: 4]
  ------------------
12835|      0|                PyErr_SetString(PyExc_RuntimeError,
12836|      0|                  "super(): empty __class__ cell");
12837|      0|                Py_DECREF(firstarg);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12838|      0|                return -1;
12839|      0|            }
12840|      4|            if (!PyType_Check(type)) {
  ------------------
  |  |  766|      4|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12840:17): [True: 0, False: 4]
  ------------------
12841|      0|                PyErr_Format(PyExc_RuntimeError,
12842|      0|                  "super(): __class__ is not a type (%s)",
12843|      0|                  Py_TYPE(type)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12844|      0|                Py_DECREF(type);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12845|      0|                Py_DECREF(firstarg);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12846|      0|                return -1;
12847|      0|            }
12848|      4|            break;
12849|      4|        }
12850|      4|    }
12851|      4|    if (type == NULL) {
  ------------------
  |  Branch (12851:9): [True: 0, False: 4]
  ------------------
12852|      0|        PyErr_SetString(PyExc_RuntimeError,
12853|      0|                        "super(): __class__ cell not found");
12854|      0|        Py_DECREF(firstarg);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12855|      0|        return -1;
12856|      0|    }
12857|       |
12858|      4|    *type_p = type;
12859|      4|    *obj_p = firstarg;
12860|      4|    return 0;
12861|      4|}
typeobject.c:super_vectorcall:
12954|     91|{
12955|     91|    assert(PyType_Check(self));
  ------------------
  |  Branch (12955:5): [True: 91, False: 0]
  ------------------
12956|     91|    if (!_PyArg_NoKwnames("super", kwnames)) {
  ------------------
  |  |   15|     91|    ((kwnames) == NULL || _PyArg_NoKwnames((funcname), (kwnames)))
  |  |  ------------------
  |  |  |  Branch (15:6): [True: 91, False: 0]
  |  |  |  Branch (15:27): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12957|      0|        return NULL;
12958|      0|    }
12959|     91|    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
  ------------------
  |  |   37|     91|#define PyVectorcall_NARGS(n) _PyVectorcall_NARGS(n)
  ------------------
12960|     91|    if (!_PyArg_CheckPositional("super()", nargs, 0, 2)) {
  ------------------
  |  |   31|     91|    (((min) <= (nargs) && (nargs) <= (max)) \
  |  |  ------------------
  |  |  |  Branch (31:7): [True: 91, False: 0]
  |  |  |  Branch (31:27): [True: 91, False: 0]
  |  |  ------------------
  |  |   32|     91|     || _PyArg_CheckPositional((funcname), (nargs), (min), (max)))
  |  |  ------------------
  |  |  |  Branch (32:9): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12961|      0|        return NULL;
12962|      0|    }
12963|     91|    PyTypeObject *type = NULL;
12964|     91|    PyObject *obj = NULL;
12965|     91|    PyTypeObject *self_type = (PyTypeObject *)self;
12966|     91|    PyObject *su = self_type->tp_alloc(self_type, 0);
12967|     91|    if (su == NULL) {
  ------------------
  |  Branch (12967:9): [True: 0, False: 91]
  ------------------
12968|      0|        return NULL;
12969|      0|    }
12970|       |    // 1 or 2 argument form super().
12971|     91|    if (nargs != 0) {
  ------------------
  |  Branch (12971:9): [True: 87, False: 4]
  ------------------
12972|     87|        PyObject *arg0 = args[0];
12973|     87|        if (!PyType_Check(arg0)) {
  ------------------
  |  |  766|     87|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     87|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     87|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12973:13): [True: 0, False: 87]
  ------------------
12974|      0|            PyErr_Format(PyExc_TypeError,
12975|      0|                "super() argument 1 must be a type, not %.200s", Py_TYPE(arg0)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12976|      0|            goto fail;
12977|      0|        }
12978|     87|        type = (PyTypeObject *)arg0;
12979|     87|    }
12980|     91|    if (nargs == 2) {
  ------------------
  |  Branch (12980:9): [True: 87, False: 4]
  ------------------
12981|     87|        obj = args[1];
12982|     87|    }
12983|     91|    if (super_init_impl(su, type, obj) < 0) {
  ------------------
  |  Branch (12983:9): [True: 0, False: 91]
  ------------------
12984|      0|        goto fail;
12985|      0|    }
12986|     91|    return su;
12987|      0|fail:
12988|      0|    Py_DECREF(su);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12989|       |    return NULL;
12990|     91|}

_Py_initialize_generic:
 2422|      1|{
 2423|      1|#define MAKE_TYPE(name) \
 2424|      1|    do { \
 2425|      1|        PyTypeObject *name ## _type = (PyTypeObject *)PyType_FromSpec(&name ## _spec); \
 2426|      1|        if (name ## _type == NULL) { \
 2427|      1|            return -1; \
 2428|      1|        } \
 2429|      1|        interp->cached_objects.name ## _type = name ## _type; \
 2430|      1|    } while(0)
 2431|       |
 2432|      1|    MAKE_TYPE(generic);
  ------------------
  |  | 2424|      1|    do { \
  |  | 2425|      1|        PyTypeObject *name ## _type = (PyTypeObject *)PyType_FromSpec(&name ## _spec); \
  |  | 2426|      1|        if (name ## _type == NULL) { \
  |  |  ------------------
  |  |  |  Branch (2426:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 2427|      0|            return -1; \
  |  | 2428|      0|        } \
  |  | 2429|      1|        interp->cached_objects.name ## _type = name ## _type; \
  |  | 2430|      1|    } while(0)
  |  |  ------------------
  |  |  |  Branch (2430:13): [Folded, False: 1]
  |  |  ------------------
  ------------------
 2433|      1|    MAKE_TYPE(typevar);
  ------------------
  |  | 2424|      1|    do { \
  |  | 2425|      1|        PyTypeObject *name ## _type = (PyTypeObject *)PyType_FromSpec(&name ## _spec); \
  |  | 2426|      1|        if (name ## _type == NULL) { \
  |  |  ------------------
  |  |  |  Branch (2426:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 2427|      0|            return -1; \
  |  | 2428|      0|        } \
  |  | 2429|      1|        interp->cached_objects.name ## _type = name ## _type; \
  |  | 2430|      1|    } while(0)
  |  |  ------------------
  |  |  |  Branch (2430:13): [Folded, False: 1]
  |  |  ------------------
  ------------------
 2434|      1|    MAKE_TYPE(typevartuple);
  ------------------
  |  | 2424|      1|    do { \
  |  | 2425|      1|        PyTypeObject *name ## _type = (PyTypeObject *)PyType_FromSpec(&name ## _spec); \
  |  | 2426|      1|        if (name ## _type == NULL) { \
  |  |  ------------------
  |  |  |  Branch (2426:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 2427|      0|            return -1; \
  |  | 2428|      0|        } \
  |  | 2429|      1|        interp->cached_objects.name ## _type = name ## _type; \
  |  | 2430|      1|    } while(0)
  |  |  ------------------
  |  |  |  Branch (2430:13): [Folded, False: 1]
  |  |  ------------------
  ------------------
 2435|      1|    MAKE_TYPE(paramspec);
  ------------------
  |  | 2424|      1|    do { \
  |  | 2425|      1|        PyTypeObject *name ## _type = (PyTypeObject *)PyType_FromSpec(&name ## _spec); \
  |  | 2426|      1|        if (name ## _type == NULL) { \
  |  |  ------------------
  |  |  |  Branch (2426:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 2427|      0|            return -1; \
  |  | 2428|      0|        } \
  |  | 2429|      1|        interp->cached_objects.name ## _type = name ## _type; \
  |  | 2430|      1|    } while(0)
  |  |  ------------------
  |  |  |  Branch (2430:13): [Folded, False: 1]
  |  |  ------------------
  ------------------
 2436|      1|    MAKE_TYPE(paramspecargs);
  ------------------
  |  | 2424|      1|    do { \
  |  | 2425|      1|        PyTypeObject *name ## _type = (PyTypeObject *)PyType_FromSpec(&name ## _spec); \
  |  | 2426|      1|        if (name ## _type == NULL) { \
  |  |  ------------------
  |  |  |  Branch (2426:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 2427|      0|            return -1; \
  |  | 2428|      0|        } \
  |  | 2429|      1|        interp->cached_objects.name ## _type = name ## _type; \
  |  | 2430|      1|    } while(0)
  |  |  ------------------
  |  |  |  Branch (2430:13): [Folded, False: 1]
  |  |  ------------------
  ------------------
 2437|      1|    MAKE_TYPE(paramspeckwargs);
  ------------------
  |  | 2424|      1|    do { \
  |  | 2425|      1|        PyTypeObject *name ## _type = (PyTypeObject *)PyType_FromSpec(&name ## _spec); \
  |  | 2426|      1|        if (name ## _type == NULL) { \
  |  |  ------------------
  |  |  |  Branch (2426:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 2427|      0|            return -1; \
  |  | 2428|      0|        } \
  |  | 2429|      1|        interp->cached_objects.name ## _type = name ## _type; \
  |  | 2430|      1|    } while(0)
  |  |  ------------------
  |  |  |  Branch (2430:13): [Folded, False: 1]
  |  |  ------------------
  ------------------
 2438|      1|    MAKE_TYPE(constevaluator);
  ------------------
  |  | 2424|      1|    do { \
  |  | 2425|      1|        PyTypeObject *name ## _type = (PyTypeObject *)PyType_FromSpec(&name ## _spec); \
  |  | 2426|      1|        if (name ## _type == NULL) { \
  |  |  ------------------
  |  |  |  Branch (2426:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 2427|      0|            return -1; \
  |  | 2428|      0|        } \
  |  | 2429|      1|        interp->cached_objects.name ## _type = name ## _type; \
  |  | 2430|      1|    } while(0)
  |  |  ------------------
  |  |  |  Branch (2430:13): [Folded, False: 1]
  |  |  ------------------
  ------------------
 2439|      1|#undef MAKE_TYPE
 2440|      1|    return 0;
 2441|      1|}

_PyUnicodeWriter_Init:
  144|     24|{
  145|     24|    memset(writer, 0, sizeof(*writer));
  146|       |
  147|       |    /* ASCII is the bare minimum */
  148|     24|    writer->min_char = 127;
  149|       |
  150|       |    /* use a kind value smaller than PyUnicode_1BYTE_KIND so
  151|       |       _PyUnicodeWriter_PrepareKind() will copy the buffer. */
  152|     24|    assert(writer->kind == 0);
  ------------------
  |  Branch (152:5): [True: 24, False: 0]
  ------------------
  153|     24|    assert(writer->kind < PyUnicode_1BYTE_KIND);
  ------------------
  |  Branch (153:5): [True: 24, False: 0]
  ------------------
  154|     24|}
_PyUnicodeWriter_InitWithBuffer:
  201|      1|{
  202|      1|    memset(writer, 0, sizeof(*writer));
  203|      1|    writer->buffer = buffer;
  204|      1|    _PyUnicodeWriter_Update(writer);
  205|      1|    writer->min_length = writer->size;
  206|      1|}
_PyUnicodeWriter_PrepareInternal:
  212|     26|{
  213|     26|    Py_ssize_t newlen;
  214|     26|    PyObject *newbuffer;
  215|       |
  216|     26|    assert(length >= 0);
  ------------------
  |  Branch (216:5): [True: 26, False: 0]
  ------------------
  217|     26|    assert(maxchar <= _Py_MAX_UNICODE);
  ------------------
  |  Branch (217:5): [True: 26, False: 0]
  ------------------
  218|       |
  219|       |    /* ensure that the _PyUnicodeWriter_Prepare macro was used */
  220|     26|    assert((maxchar > writer->maxchar && length >= 0)
  ------------------
  |  Branch (220:5): [True: 26, False: 0]
  |  Branch (220:5): [True: 26, False: 0]
  |  Branch (220:5): [True: 0, False: 0]
  ------------------
  221|     26|           || length > 0);
  222|       |
  223|     26|    if (length > PY_SSIZE_T_MAX - writer->pos) {
  ------------------
  |  |  137|     26|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (223:9): [True: 0, False: 26]
  ------------------
  224|      0|        PyErr_NoMemory();
  225|      0|        return -1;
  226|      0|    }
  227|     26|    newlen = writer->pos + length;
  228|       |
  229|     26|    maxchar = Py_MAX(maxchar, writer->min_char);
  ------------------
  |  |  115|     26|#define Py_MAX(x, y) (((x) > (y)) ? (x) : (y))
  |  |  ------------------
  |  |  |  Branch (115:23): [True: 2, False: 24]
  |  |  ------------------
  ------------------
  230|       |
  231|     26|    if (writer->buffer == NULL) {
  ------------------
  |  Branch (231:9): [True: 24, False: 2]
  ------------------
  232|     24|        assert(!writer->readonly);
  ------------------
  |  Branch (232:9): [True: 24, False: 0]
  ------------------
  233|     24|        if (writer->overallocate
  ------------------
  |  Branch (233:13): [True: 24, False: 0]
  ------------------
  234|     24|            && newlen <= (PY_SSIZE_T_MAX - newlen / OVERALLOCATE_FACTOR)) {
  ------------------
  |  |  137|     24|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
                          && newlen <= (PY_SSIZE_T_MAX - newlen / OVERALLOCATE_FACTOR)) {
  ------------------
  |  |   52|     24|#  define OVERALLOCATE_FACTOR 4
  ------------------
  |  Branch (234:16): [True: 24, False: 0]
  ------------------
  235|       |            /* overallocate to limit the number of realloc() */
  236|     24|            newlen += newlen / OVERALLOCATE_FACTOR;
  ------------------
  |  |   52|     24|#  define OVERALLOCATE_FACTOR 4
  ------------------
  237|     24|        }
  238|     24|        if (newlen < writer->min_length)
  ------------------
  |  Branch (238:13): [True: 24, False: 0]
  ------------------
  239|     24|            newlen = writer->min_length;
  240|       |
  241|     24|        writer->buffer = PyUnicode_New(newlen, maxchar);
  242|     24|        if (writer->buffer == NULL)
  ------------------
  |  Branch (242:13): [True: 0, False: 24]
  ------------------
  243|      0|            return -1;
  244|     24|    }
  245|      2|    else if (newlen > writer->size) {
  ------------------
  |  Branch (245:14): [True: 0, False: 2]
  ------------------
  246|      0|        if (writer->overallocate
  ------------------
  |  Branch (246:13): [True: 0, False: 0]
  ------------------
  247|      0|            && newlen <= (PY_SSIZE_T_MAX - newlen / OVERALLOCATE_FACTOR)) {
  ------------------
  |  |  137|      0|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
                          && newlen <= (PY_SSIZE_T_MAX - newlen / OVERALLOCATE_FACTOR)) {
  ------------------
  |  |   52|      0|#  define OVERALLOCATE_FACTOR 4
  ------------------
  |  Branch (247:16): [True: 0, False: 0]
  ------------------
  248|       |            /* overallocate to limit the number of realloc() */
  249|      0|            newlen += newlen / OVERALLOCATE_FACTOR;
  ------------------
  |  |   52|      0|#  define OVERALLOCATE_FACTOR 4
  ------------------
  250|      0|        }
  251|      0|        if (newlen < writer->min_length)
  ------------------
  |  Branch (251:13): [True: 0, False: 0]
  ------------------
  252|      0|            newlen = writer->min_length;
  253|       |
  254|      0|        if (maxchar > writer->maxchar || writer->readonly) {
  ------------------
  |  Branch (254:13): [True: 0, False: 0]
  |  Branch (254:42): [True: 0, False: 0]
  ------------------
  255|       |            /* resize + widen */
  256|      0|            maxchar = Py_MAX(maxchar, writer->maxchar);
  ------------------
  |  |  115|      0|#define Py_MAX(x, y) (((x) > (y)) ? (x) : (y))
  |  |  ------------------
  |  |  |  Branch (115:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  257|      0|            newbuffer = PyUnicode_New(newlen, maxchar);
  258|      0|            if (newbuffer == NULL)
  ------------------
  |  Branch (258:17): [True: 0, False: 0]
  ------------------
  259|      0|                return -1;
  260|      0|            _PyUnicode_FastCopyCharacters(newbuffer, 0,
  261|      0|                                          writer->buffer, 0, writer->pos);
  262|      0|            Py_DECREF(writer->buffer);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  263|      0|            writer->readonly = 0;
  264|      0|        }
  265|      0|        else {
  266|      0|            newbuffer = _PyUnicode_ResizeCompact(writer->buffer, newlen);
  267|      0|            if (newbuffer == NULL)
  ------------------
  |  Branch (267:17): [True: 0, False: 0]
  ------------------
  268|      0|                return -1;
  269|      0|        }
  270|      0|        writer->buffer = newbuffer;
  271|      0|    }
  272|      2|    else if (maxchar > writer->maxchar) {
  ------------------
  |  Branch (272:14): [True: 2, False: 0]
  ------------------
  273|      2|        assert(!writer->readonly);
  ------------------
  |  Branch (273:9): [True: 2, False: 0]
  ------------------
  274|      2|        newbuffer = PyUnicode_New(writer->size, maxchar);
  275|      2|        if (newbuffer == NULL)
  ------------------
  |  Branch (275:13): [True: 0, False: 2]
  ------------------
  276|      0|            return -1;
  277|      2|        _PyUnicode_FastCopyCharacters(newbuffer, 0,
  278|      2|                                      writer->buffer, 0, writer->pos);
  279|      2|        Py_SETREF(writer->buffer, newbuffer);
  ------------------
  |  |  352|      2|    do { \
  |  |  353|      2|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      2|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  354|      2|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      2|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  355|      2|        *_tmp_dst_ptr = (src); \
  |  |  356|      2|        Py_DECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  357|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (357:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
  280|      2|    }
  281|     26|    _PyUnicodeWriter_Update(writer);
  282|     26|    return 0;
  283|       |
  284|     26|#undef OVERALLOCATE_FACTOR
  285|     26|}
_PyUnicodeWriter_WriteStr:
  331|     34|{
  332|     34|    assert(PyUnicode_Check(str));
  ------------------
  |  Branch (332:5): [True: 34, False: 0]
  ------------------
  333|       |
  334|     34|    Py_UCS4 maxchar;
  335|     34|    Py_ssize_t len;
  336|       |
  337|     34|    len = PyUnicode_GET_LENGTH(str);
  ------------------
  |  |  299|     34|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     34|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     34|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  338|     34|    if (len == 0)
  ------------------
  |  Branch (338:9): [True: 0, False: 34]
  ------------------
  339|      0|        return 0;
  340|     34|    maxchar = PyUnicode_MAX_CHAR_VALUE(str);
  ------------------
  |  |  405|     34|    PyUnicode_MAX_CHAR_VALUE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     34|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     34|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  341|     34|    if (maxchar > writer->maxchar || len > writer->size - writer->pos) {
  ------------------
  |  Branch (341:9): [True: 3, False: 31]
  |  Branch (341:38): [True: 0, False: 31]
  ------------------
  342|      3|        if (writer->buffer == NULL && !writer->overallocate) {
  ------------------
  |  Branch (342:13): [True: 3, False: 0]
  |  Branch (342:39): [True: 0, False: 3]
  ------------------
  343|      0|            assert(_PyUnicode_CheckConsistency(str, 1));
  ------------------
  |  Branch (343:13): [True: 0, False: 0]
  ------------------
  344|      0|            writer->readonly = 1;
  345|      0|            writer->buffer = Py_NewRef(str);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  346|      0|            _PyUnicodeWriter_Update(writer);
  347|      0|            writer->pos += len;
  348|      0|            return 0;
  349|      0|        }
  350|      3|        if (_PyUnicodeWriter_PrepareInternal(writer, len, maxchar) == -1)
  ------------------
  |  Branch (350:13): [True: 0, False: 3]
  ------------------
  351|      0|            return -1;
  352|      3|    }
  353|     34|    _PyUnicode_FastCopyCharacters(writer->buffer, writer->pos,
  354|     34|                                  str, 0, len);
  355|     34|    writer->pos += len;
  356|     34|    return 0;
  357|     34|}
_PyUnicodeWriter_WriteASCIIString:
  464|     66|{
  465|     66|    if (len == -1)
  ------------------
  |  Branch (465:9): [True: 0, False: 66]
  ------------------
  466|      0|        len = strlen(ascii);
  467|       |
  468|     66|    if (len == 0) {
  ------------------
  |  Branch (468:9): [True: 0, False: 66]
  ------------------
  469|      0|        return 0;
  470|      0|    }
  471|       |
  472|     66|    assert(ucs1lib_find_max_char((const Py_UCS1*)ascii, (const Py_UCS1*)ascii + len) < 128);
  ------------------
  |  Branch (472:5): [True: 66, False: 0]
  ------------------
  473|       |
  474|     66|    if (writer->buffer == NULL && !writer->overallocate) {
  ------------------
  |  Branch (474:9): [True: 21, False: 45]
  |  Branch (474:35): [True: 0, False: 21]
  ------------------
  475|      0|        PyObject *str;
  476|       |
  477|      0|        str = _PyUnicode_FromASCII(ascii, len);
  478|      0|        if (str == NULL)
  ------------------
  |  Branch (478:13): [True: 0, False: 0]
  ------------------
  479|      0|            return -1;
  480|       |
  481|      0|        writer->readonly = 1;
  482|      0|        writer->buffer = str;
  483|      0|        _PyUnicodeWriter_Update(writer);
  484|      0|        writer->pos += len;
  485|      0|        return 0;
  486|      0|    }
  487|       |
  488|     66|    if (_PyUnicodeWriter_Prepare(writer, len, 127) == -1)
  ------------------
  |  |  562|     66|    (((MAXCHAR) <= (WRITER)->maxchar                                  \
  |  |  ------------------
  |  |  |  Branch (562:7): [True: 45, False: 21]
  |  |  ------------------
  |  |  563|     66|      && (LENGTH) <= (WRITER)->size - (WRITER)->pos)                  \
  |  |  ------------------
  |  |  |  Branch (563:10): [True: 45, False: 0]
  |  |  ------------------
  |  |  564|     66|     ? 0                                                              \
  |  |  565|     66|     : (((LENGTH) == 0)                                               \
  |  |  ------------------
  |  |  |  Branch (565:9): [True: 0, False: 21]
  |  |  ------------------
  |  |  566|     21|        ? 0                                                           \
  |  |  567|     21|        : _PyUnicodeWriter_PrepareInternal((WRITER), (LENGTH), (MAXCHAR))))
  ------------------
  |  Branch (488:9): [True: 0, False: 66]
  ------------------
  489|      0|        return -1;
  490|       |
  491|     66|    switch (writer->kind)
  492|     66|    {
  493|     66|    case PyUnicode_1BYTE_KIND:
  ------------------
  |  Branch (493:5): [True: 66, False: 0]
  ------------------
  494|     66|    {
  495|     66|        const Py_UCS1 *str = (const Py_UCS1 *)ascii;
  496|     66|        Py_UCS1 *data = writer->data;
  497|       |
  498|     66|        memcpy(data + writer->pos, str, len);
  499|     66|        break;
  500|      0|    }
  501|      0|    case PyUnicode_2BYTE_KIND:
  ------------------
  |  Branch (501:5): [True: 0, False: 66]
  ------------------
  502|      0|    {
  503|      0|        _PyUnicode_CONVERT_BYTES(
  ------------------
  |  |   45|      0|    do {                                                \
  |  |   46|      0|        to_type *_to = (to_type *)(to);                 \
  |  |   47|      0|        const from_type *_iter = (const from_type *)(begin);\
  |  |   48|      0|        const from_type *_end = (const from_type *)(end);\
  |  |   49|      0|        Py_ssize_t n = (_end) - (_iter);                \
  |  |   50|      0|        const from_type *_unrolled_end =                \
  |  |   51|      0|            _iter + _Py_SIZE_ROUND_DOWN(n, 4);          \
  |  |  ------------------
  |  |  |  |  211|      0|#define _Py_SIZE_ROUND_DOWN(n, a) ((size_t)(n) & ~(size_t)((a) - 1))
  |  |  ------------------
  |  |   52|      0|        while (_iter < (_unrolled_end)) {               \
  |  |  ------------------
  |  |  |  Branch (52:16): [True: 0, False: 0]
  |  |  ------------------
  |  |   53|      0|            _to[0] = (to_type) _iter[0];                \
  |  |   54|      0|            _to[1] = (to_type) _iter[1];                \
  |  |   55|      0|            _to[2] = (to_type) _iter[2];                \
  |  |   56|      0|            _to[3] = (to_type) _iter[3];                \
  |  |   57|      0|            _iter += 4; _to += 4;                       \
  |  |   58|      0|        }                                               \
  |  |   59|      0|        while (_iter < (_end))                          \
  |  |  ------------------
  |  |  |  Branch (59:16): [True: 0, False: 0]
  |  |  ------------------
  |  |   60|      0|            *_to++ = (to_type) *_iter++;                \
  |  |   61|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (61:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  504|      0|            Py_UCS1, Py_UCS2,
  505|      0|            ascii, ascii + len,
  506|      0|            (Py_UCS2 *)writer->data + writer->pos);
  507|      0|        break;
  508|      0|    }
  509|      0|    case PyUnicode_4BYTE_KIND:
  ------------------
  |  Branch (509:5): [True: 0, False: 66]
  ------------------
  510|      0|    {
  511|      0|        _PyUnicode_CONVERT_BYTES(
  ------------------
  |  |   45|      0|    do {                                                \
  |  |   46|      0|        to_type *_to = (to_type *)(to);                 \
  |  |   47|      0|        const from_type *_iter = (const from_type *)(begin);\
  |  |   48|      0|        const from_type *_end = (const from_type *)(end);\
  |  |   49|      0|        Py_ssize_t n = (_end) - (_iter);                \
  |  |   50|      0|        const from_type *_unrolled_end =                \
  |  |   51|      0|            _iter + _Py_SIZE_ROUND_DOWN(n, 4);          \
  |  |  ------------------
  |  |  |  |  211|      0|#define _Py_SIZE_ROUND_DOWN(n, a) ((size_t)(n) & ~(size_t)((a) - 1))
  |  |  ------------------
  |  |   52|      0|        while (_iter < (_unrolled_end)) {               \
  |  |  ------------------
  |  |  |  Branch (52:16): [True: 0, False: 0]
  |  |  ------------------
  |  |   53|      0|            _to[0] = (to_type) _iter[0];                \
  |  |   54|      0|            _to[1] = (to_type) _iter[1];                \
  |  |   55|      0|            _to[2] = (to_type) _iter[2];                \
  |  |   56|      0|            _to[3] = (to_type) _iter[3];                \
  |  |   57|      0|            _iter += 4; _to += 4;                       \
  |  |   58|      0|        }                                               \
  |  |   59|      0|        while (_iter < (_end))                          \
  |  |  ------------------
  |  |  |  Branch (59:16): [True: 0, False: 0]
  |  |  ------------------
  |  |   60|      0|            *_to++ = (to_type) *_iter++;                \
  |  |   61|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (61:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  512|      0|            Py_UCS1, Py_UCS4,
  513|      0|            ascii, ascii + len,
  514|      0|            (Py_UCS4 *)writer->data + writer->pos);
  515|      0|        break;
  516|      0|    }
  517|      0|    default:
  ------------------
  |  Branch (517:5): [True: 0, False: 66]
  ------------------
  518|      0|        Py_UNREACHABLE();
  ------------------
  |  |  264|      0|#  define Py_UNREACHABLE() __builtin_unreachable()
  ------------------
  519|     66|    }
  520|       |
  521|     66|    writer->pos += len;
  522|     66|    return 0;
  523|     66|}
_PyUnicodeWriter_Finish:
  602|     25|{
  603|     25|    PyObject *str;
  604|       |
  605|     25|    if (writer->pos == 0) {
  ------------------
  |  Branch (605:9): [True: 0, False: 25]
  ------------------
  606|      0|        Py_CLEAR(writer->buffer);
  ------------------
  |  |  484|      0|    do { \
  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  607|      0|        return _PyUnicode_GetEmpty();
  608|      0|    }
  609|       |
  610|     25|    str = writer->buffer;
  611|     25|    writer->buffer = NULL;
  612|       |
  613|     25|    if (writer->readonly) {
  ------------------
  |  Branch (613:9): [True: 0, False: 25]
  ------------------
  614|      0|        assert(PyUnicode_GET_LENGTH(str) == writer->pos);
  ------------------
  |  Branch (614:9): [True: 0, False: 0]
  ------------------
  615|      0|        return str;
  616|      0|    }
  617|       |
  618|     25|    if (PyUnicode_GET_LENGTH(str) != writer->pos) {
  ------------------
  |  |  299|     25|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     25|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     25|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (618:9): [True: 25, False: 0]
  ------------------
  619|     25|        PyObject *str2;
  620|     25|        str2 = _PyUnicode_ResizeCompact(str, writer->pos);
  621|     25|        if (str2 == NULL) {
  ------------------
  |  Branch (621:13): [True: 0, False: 25]
  ------------------
  622|      0|            Py_DECREF(str);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  623|      0|            return NULL;
  624|      0|        }
  625|     25|        str = str2;
  626|     25|    }
  627|       |
  628|     25|    assert(_PyUnicode_CheckConsistency(str, 1));
  ------------------
  |  Branch (628:5): [True: 25, False: 0]
  ------------------
  629|     25|    return _PyUnicode_Result(str);
  630|     25|}
unicode_writer.c:_PyUnicodeWriter_Update:
  120|     27|{
  121|     27|    writer->maxchar = PyUnicode_MAX_CHAR_VALUE(writer->buffer);
  ------------------
  |  |  405|     27|    PyUnicode_MAX_CHAR_VALUE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     27|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     27|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  122|     27|    writer->data = PyUnicode_DATA(writer->buffer);
  ------------------
  |  |  284|     27|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     27|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     27|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  123|       |
  124|     27|    if (!writer->readonly) {
  ------------------
  |  Branch (124:9): [True: 27, False: 0]
  ------------------
  125|     27|        writer->kind = PyUnicode_KIND(writer->buffer);
  ------------------
  |  |  258|     27|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|     54|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 27, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  126|     27|        writer->size = PyUnicode_GET_LENGTH(writer->buffer);
  ------------------
  |  |  299|     27|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     27|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     27|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  127|     27|    }
  128|      0|    else {
  129|       |        /* use a value smaller than PyUnicode_1BYTE_KIND() so
  130|       |           _PyUnicodeWriter_PrepareKind() will copy the buffer. */
  131|      0|        writer->kind = 0;
  132|      0|        assert(writer->kind <= PyUnicode_1BYTE_KIND);
  ------------------
  |  Branch (132:9): [True: 0, False: 0]
  ------------------
  133|       |
  134|       |        /* Copy-on-write mode: set buffer size to 0 so
  135|       |         * _PyUnicodeWriter_Prepare() will copy (and enlarge) the buffer on
  136|       |         * next write. */
  137|      0|        writer->size = 0;
  138|      0|    }
  139|     27|}

_PyUnicode_IsXidStart:
   86|      6|{
   87|      6|    const _PyUnicode_TypeRecord *ctype = gettyperecord(ch);
   88|       |
   89|      6|    return (ctype->flags & XID_START_MASK) != 0;
  ------------------
  |  |   20|      6|#define XID_START_MASK 0x100
  ------------------
   90|      6|}
_PyUnicode_IsXidContinue:
   96|     49|{
   97|     49|    const _PyUnicode_TypeRecord *ctype = gettyperecord(ch);
   98|       |
   99|     49|    return (ctype->flags & XID_CONTINUE_MASK) != 0;
  ------------------
  |  |   21|     49|#define XID_CONTINUE_MASK 0x200
  ------------------
  100|     49|}
unicodectype.c:gettyperecord:
   46|     55|{
   47|     55|    int index;
   48|       |
   49|     55|    if (code >= 0x110000)
  ------------------
  |  Branch (49:9): [True: 0, False: 55]
  ------------------
   50|      0|        index = 0;
   51|     55|    else
   52|     55|    {
   53|     55|        index = index1[(code>>SHIFT)];
  ------------------
  |  | 1760|     55|#define SHIFT 7
  ------------------
   54|     55|        index = index2[(index<<SHIFT)+(code&((1<<SHIFT)-1))];
  ------------------
  |  | 1760|     55|#define SHIFT 7
  ------------------
                      index = index2[(index<<SHIFT)+(code&((1<<SHIFT)-1))];
  ------------------
  |  | 1760|     55|#define SHIFT 7
  ------------------
   55|     55|    }
   56|       |
   57|     55|    return &_PyUnicode_TypeRecords[index];
   58|     55|}

_PyUnicode_GetEmpty:
  203|    168|{
  204|    168|    _Py_DECLARE_STR(empty, "");
  205|    168|    return &_Py_STR(empty);
  ------------------
  |  |  919|    168|     (_Py_SINGLETON(strings.literals._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|    168|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|    168|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  206|    168|}
_Py_GetErrorHandler:
  470|     10|{
  471|     10|    if (errors == NULL || strcmp(errors, "strict") == 0) {
  ------------------
  |  Branch (471:9): [True: 0, False: 10]
  |  Branch (471:27): [True: 0, False: 10]
  ------------------
  472|      0|        return _Py_ERROR_STRICT;
  473|      0|    }
  474|     10|    if (strcmp(errors, "surrogateescape") == 0) {
  ------------------
  |  Branch (474:9): [True: 10, False: 0]
  ------------------
  475|     10|        return _Py_ERROR_SURROGATEESCAPE;
  476|     10|    }
  477|      0|    if (strcmp(errors, "replace") == 0) {
  ------------------
  |  Branch (477:9): [True: 0, False: 0]
  ------------------
  478|      0|        return _Py_ERROR_REPLACE;
  479|      0|    }
  480|      0|    if (strcmp(errors, "ignore") == 0) {
  ------------------
  |  Branch (480:9): [True: 0, False: 0]
  ------------------
  481|      0|        return _Py_ERROR_IGNORE;
  482|      0|    }
  483|      0|    if (strcmp(errors, "backslashreplace") == 0) {
  ------------------
  |  Branch (483:9): [True: 0, False: 0]
  ------------------
  484|      0|        return _Py_ERROR_BACKSLASHREPLACE;
  485|      0|    }
  486|      0|    if (strcmp(errors, "surrogatepass") == 0) {
  ------------------
  |  Branch (486:9): [True: 0, False: 0]
  ------------------
  487|      0|        return _Py_ERROR_SURROGATEPASS;
  488|      0|    }
  489|      0|    if (strcmp(errors, "xmlcharrefreplace") == 0) {
  ------------------
  |  Branch (489:9): [True: 0, False: 0]
  ------------------
  490|      0|        return _Py_ERROR_XMLCHARREFREPLACE;
  491|      0|    }
  492|      0|    return _Py_ERROR_OTHER;
  493|      0|}
_PyUnicode_CheckConsistency:
  589|  15.4k|{
  590|  15.4k|#define CHECK(expr) \
  591|  15.4k|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  592|       |#ifdef Py_GIL_DISABLED
  593|       |# define CHECK_IF_GIL(expr) (void)(expr)
  594|       |# define CHECK_IF_FT(expr) CHECK(expr)
  595|       |#else
  596|  15.4k|# define CHECK_IF_GIL(expr) CHECK(expr)
  597|  15.4k|# define CHECK_IF_FT(expr) (void)(expr)
  598|  15.4k|#endif
  599|       |
  600|       |
  601|  15.4k|    assert(op != NULL);
  ------------------
  |  Branch (601:5): [True: 15.4k, False: 0]
  ------------------
  602|  15.4k|    CHECK(PyUnicode_Check(op));
  ------------------
  |  |  591|  15.4k|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (591:14): [True: 0, False: 15.4k]
  |  |  |  Branch (591:89): [Folded, False: 15.4k]
  |  |  ------------------
  ------------------
  603|       |
  604|  15.4k|    PyASCIIObject *ascii = _PyASCIIObject_CAST(op);
  ------------------
  |  |  186|  15.4k|    (assert(PyUnicode_Check(op)), \
  |  |  187|  15.4k|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|  15.4k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (604:28): [True: 15.4k, False: 0]
  ------------------
  605|      0|    int kind = ascii->state.kind;
  606|       |
  607|  15.4k|    if (ascii->state.ascii == 1 && ascii->state.compact == 1) {
  ------------------
  |  Branch (607:9): [True: 15.3k, False: 5]
  |  Branch (607:36): [True: 15.3k, False: 0]
  ------------------
  608|  15.3k|        CHECK(kind == PyUnicode_1BYTE_KIND);
  ------------------
  |  |  591|  15.3k|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (591:14): [True: 0, False: 15.3k]
  |  |  |  Branch (591:89): [Folded, False: 15.3k]
  |  |  ------------------
  ------------------
  609|  15.3k|    }
  610|      5|    else {
  611|      5|        PyCompactUnicodeObject *compact = _PyCompactUnicodeObject_CAST(op);
  ------------------
  |  |  189|      5|    (assert(PyUnicode_Check(op)), \
  |  |  190|      5|     _Py_CAST(PyCompactUnicodeObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (611:43): [True: 5, False: 0]
  ------------------
  612|      0|        void *data;
  613|       |
  614|      5|        if (ascii->state.compact == 1) {
  ------------------
  |  Branch (614:13): [True: 5, False: 0]
  ------------------
  615|      5|            data = compact + 1;
  616|      5|            CHECK(kind == PyUnicode_1BYTE_KIND
  ------------------
  |  |  591|     14|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (591:16): [True: 1, False: 4]
  |  |  |  Branch (591:16): [True: 4, False: 0]
  |  |  |  Branch (591:16): [True: 0, False: 0]
  |  |  |  Branch (591:89): [Folded, False: 5]
  |  |  ------------------
  ------------------
  617|      5|                                 || kind == PyUnicode_2BYTE_KIND
  618|      5|                                 || kind == PyUnicode_4BYTE_KIND);
  619|      5|            CHECK(ascii->state.ascii == 0);
  ------------------
  |  |  591|      5|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (591:14): [True: 0, False: 5]
  |  |  |  Branch (591:89): [Folded, False: 5]
  |  |  ------------------
  ------------------
  620|      5|            CHECK(_PyUnicode_UTF8(op) != data);
  ------------------
  |  |  591|      5|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (591:14): [True: 0, False: 5]
  |  |  |  Branch (591:89): [Folded, False: 5]
  |  |  ------------------
  ------------------
  621|      5|        }
  622|      0|        else {
  623|      0|            PyUnicodeObject *unicode = _PyUnicodeObject_CAST(op);
  ------------------
  |  |  192|      0|    (assert(PyUnicode_Check(op)), \
  |  |  193|      0|     _Py_CAST(PyUnicodeObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (623:40): [True: 0, False: 0]
  ------------------
  624|       |
  625|      0|            data = unicode->data.any;
  626|      0|            CHECK(kind == PyUnicode_1BYTE_KIND
  ------------------
  |  |  591|      0|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (591:16): [True: 0, False: 0]
  |  |  |  Branch (591:16): [True: 0, False: 0]
  |  |  |  Branch (591:16): [True: 0, False: 0]
  |  |  |  Branch (591:89): [Folded, False: 0]
  |  |  ------------------
  ------------------
  627|      0|                     || kind == PyUnicode_2BYTE_KIND
  628|      0|                     || kind == PyUnicode_4BYTE_KIND);
  629|      0|            CHECK(ascii->state.compact == 0);
  ------------------
  |  |  591|      0|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (591:14): [True: 0, False: 0]
  |  |  |  Branch (591:89): [Folded, False: 0]
  |  |  ------------------
  ------------------
  630|      0|            CHECK(data != NULL);
  ------------------
  |  |  591|      0|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (591:14): [True: 0, False: 0]
  |  |  |  Branch (591:89): [Folded, False: 0]
  |  |  ------------------
  ------------------
  631|      0|            if (ascii->state.ascii) {
  ------------------
  |  Branch (631:17): [True: 0, False: 0]
  ------------------
  632|      0|                CHECK(_PyUnicode_UTF8(op) == data);
  ------------------
  |  |  591|      0|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (591:14): [True: 0, False: 0]
  |  |  |  Branch (591:89): [Folded, False: 0]
  |  |  ------------------
  ------------------
  633|      0|                CHECK(compact->utf8_length == ascii->length);
  ------------------
  |  |  591|      0|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (591:14): [True: 0, False: 0]
  |  |  |  Branch (591:89): [Folded, False: 0]
  |  |  ------------------
  ------------------
  634|      0|            }
  635|      0|            else {
  636|      0|                CHECK(_PyUnicode_UTF8(op) != data);
  ------------------
  |  |  591|      0|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (591:14): [True: 0, False: 0]
  |  |  |  Branch (591:89): [Folded, False: 0]
  |  |  ------------------
  ------------------
  637|      0|            }
  638|      0|        }
  639|      5|#ifndef Py_GIL_DISABLED
  640|      5|        if (_PyUnicode_UTF8(op) == NULL)
  ------------------
  |  Branch (640:13): [True: 5, False: 0]
  ------------------
  641|      5|            CHECK(compact->utf8_length == 0);
  ------------------
  |  |  591|      5|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (591:14): [True: 0, False: 5]
  |  |  |  Branch (591:89): [Folded, False: 5]
  |  |  ------------------
  ------------------
  642|      5|#endif
  643|      5|    }
  644|       |
  645|       |    /* check that the best kind is used: O(n) operation */
  646|  15.4k|    if (check_content) {
  ------------------
  |  Branch (646:9): [True: 5.55k, False: 9.85k]
  ------------------
  647|  5.55k|        Py_ssize_t i;
  648|  5.55k|        Py_UCS4 maxchar = 0;
  649|  5.55k|        const void *data;
  650|  5.55k|        Py_UCS4 ch;
  651|       |
  652|  5.55k|        data = PyUnicode_DATA(ascii);
  ------------------
  |  |  284|  5.55k|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  5.55k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  5.55k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  653|   137k|        for (i=0; i < ascii->length; i++)
  ------------------
  |  Branch (653:19): [True: 132k, False: 5.55k]
  ------------------
  654|   132k|        {
  655|   132k|            ch = PyUnicode_READ(kind, data, i);
  ------------------
  |  |  354|   132k|    PyUnicode_READ(_Py_STATIC_CAST(int, kind), \
  |  |  ------------------
  |  |  |  |   34|   132k|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  355|   132k|                   _Py_STATIC_CAST(const void*, data), \
  |  |  ------------------
  |  |  |  |   34|   132k|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  356|   132k|                   (index))
  ------------------
  656|   132k|            if (ch > maxchar)
  ------------------
  |  Branch (656:17): [True: 17.0k, False: 115k]
  ------------------
  657|  17.0k|                maxchar = ch;
  658|   132k|        }
  659|  5.55k|        if (kind == PyUnicode_1BYTE_KIND) {
  ------------------
  |  Branch (659:13): [True: 5.54k, False: 2]
  ------------------
  660|  5.54k|            if (ascii->state.ascii == 0) {
  ------------------
  |  Branch (660:17): [True: 0, False: 5.54k]
  ------------------
  661|      0|                CHECK(maxchar >= 128);
  ------------------
  |  |  591|      0|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (591:14): [True: 0, False: 0]
  |  |  |  Branch (591:89): [Folded, False: 0]
  |  |  ------------------
  ------------------
  662|      0|                CHECK(maxchar <= 255);
  ------------------
  |  |  591|      0|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (591:14): [True: 0, False: 0]
  |  |  |  Branch (591:89): [Folded, False: 0]
  |  |  ------------------
  ------------------
  663|      0|            }
  664|  5.54k|            else
  665|  5.54k|                CHECK(maxchar < 128);
  ------------------
  |  |  591|  5.54k|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (591:14): [True: 0, False: 5.54k]
  |  |  |  Branch (591:89): [Folded, False: 5.54k]
  |  |  ------------------
  ------------------
  666|  5.54k|        }
  667|      2|        else if (kind == PyUnicode_2BYTE_KIND) {
  ------------------
  |  Branch (667:18): [True: 2, False: 0]
  ------------------
  668|      2|            CHECK(maxchar >= 0x100);
  ------------------
  |  |  591|      2|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (591:14): [True: 0, False: 2]
  |  |  |  Branch (591:89): [Folded, False: 2]
  |  |  ------------------
  ------------------
  669|      2|            CHECK(maxchar <= 0xFFFF);
  ------------------
  |  |  591|      2|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (591:14): [True: 0, False: 2]
  |  |  |  Branch (591:89): [Folded, False: 2]
  |  |  ------------------
  ------------------
  670|      2|        }
  671|      0|        else {
  672|      0|            CHECK(maxchar >= 0x10000);
  ------------------
  |  |  591|      0|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (591:14): [True: 0, False: 0]
  |  |  |  Branch (591:89): [Folded, False: 0]
  |  |  ------------------
  ------------------
  673|      0|            CHECK(maxchar <= MAX_UNICODE);
  ------------------
  |  |  591|      0|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (591:14): [True: 0, False: 0]
  |  |  |  Branch (591:89): [Folded, False: 0]
  |  |  ------------------
  ------------------
  674|      0|        }
  675|  5.55k|        CHECK(PyUnicode_READ(kind, data, ascii->length) == 0);
  ------------------
  |  |  591|  5.55k|    do { if (!(expr)) { _PyObject_ASSERT_FAILED_MSG(op, Py_STRINGIFY(expr)); } } while (0)
  |  |  ------------------
  |  |  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  Branch (591:14): [True: 0, False: 5.55k]
  |  |  |  Branch (591:89): [Folded, False: 5.55k]
  |  |  ------------------
  ------------------
  676|  5.55k|    }
  677|       |
  678|       |    /* Check interning state */
  679|       |#ifdef Py_DEBUG
  680|       |    // Note that we do not check `_Py_IsImmortal(op)` in the GIL-enabled build
  681|       |    // since stable ABI extensions can make immortal strings mortal (but with a
  682|       |    // high enough refcount).
  683|       |    switch (PyUnicode_CHECK_INTERNED(op)) {
  684|       |        case SSTATE_NOT_INTERNED:
  685|       |            if (ascii->state.statically_allocated) {
  686|       |                // This state is for two exceptions:
  687|       |                // - strings are currently checked before they're interned
  688|       |                // - the 256 one-latin1-character strings
  689|       |                //   are static but use SSTATE_NOT_INTERNED
  690|       |            }
  691|       |            else {
  692|       |                CHECK_IF_GIL(!_Py_IsImmortal(op));
  693|       |            }
  694|       |            break;
  695|       |        case SSTATE_INTERNED_MORTAL:
  696|       |            CHECK(!ascii->state.statically_allocated);
  697|       |            CHECK_IF_GIL(!_Py_IsImmortal(op));
  698|       |            break;
  699|       |        case SSTATE_INTERNED_IMMORTAL:
  700|       |            CHECK(!ascii->state.statically_allocated);
  701|       |            CHECK_IF_FT(_Py_IsImmortal(op));
  702|       |            break;
  703|       |        case SSTATE_INTERNED_IMMORTAL_STATIC:
  704|       |            CHECK(ascii->state.statically_allocated);
  705|       |            CHECK_IF_FT(_Py_IsImmortal(op));
  706|       |            break;
  707|       |        default:
  708|       |            Py_UNREACHABLE();
  709|       |    }
  710|       |#endif
  711|       |
  712|  15.4k|    return 1;
  713|       |
  714|  15.4k|#undef CHECK
  715|  15.4k|}
_PyUnicode_Result:
  719|     86|{
  720|     86|    assert(_PyUnicode_CHECK(unicode));
  ------------------
  |  Branch (720:5): [True: 86, False: 0]
  ------------------
  721|       |
  722|     86|    Py_ssize_t length = PyUnicode_GET_LENGTH(unicode);
  ------------------
  |  |  299|     86|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     86|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     86|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  723|     86|    if (length == 0) {
  ------------------
  |  Branch (723:9): [True: 0, False: 86]
  ------------------
  724|      0|        PyObject *empty = _PyUnicode_GetEmpty();
  725|      0|        if (unicode != empty) {
  ------------------
  |  Branch (725:13): [True: 0, False: 0]
  ------------------
  726|      0|            Py_DECREF(unicode);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  727|      0|        }
  728|      0|        return empty;
  729|      0|    }
  730|       |
  731|     86|    if (length == 1) {
  ------------------
  |  Branch (731:9): [True: 0, False: 86]
  ------------------
  732|      0|        int kind = PyUnicode_KIND(unicode);
  ------------------
  |  |  258|      0|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|      0|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  733|      0|        if (kind == PyUnicode_1BYTE_KIND) {
  ------------------
  |  Branch (733:13): [True: 0, False: 0]
  ------------------
  734|      0|            const Py_UCS1 *data = PyUnicode_1BYTE_DATA(unicode);
  ------------------
  |  |  291|      0|#define PyUnicode_1BYTE_DATA(op) _Py_STATIC_CAST(Py_UCS1*, PyUnicode_DATA(op))
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  735|      0|            Py_UCS1 ch = data[0];
  736|      0|            PyObject *latin1_char = LATIN1(ch);
  ------------------
  |  |  184|      0|#define LATIN1 _Py_LATIN1_CHR
  |  |  ------------------
  |  |  |  |  921|      0|    ((CH) < 128 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (921:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  922|      0|     ? (PyObject*)&_Py_SINGLETON(strings).ascii[(CH)] \
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  923|      0|     : (PyObject*)&_Py_SINGLETON(strings).latin1[(CH) - 128])
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  737|      0|            if (unicode != latin1_char) {
  ------------------
  |  Branch (737:17): [True: 0, False: 0]
  ------------------
  738|      0|                Py_DECREF(unicode);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  739|      0|            }
  740|      0|            return latin1_char;
  741|      0|        }
  742|      0|    }
  743|       |
  744|     86|    assert(_PyUnicode_CheckConsistency(unicode, 1));
  ------------------
  |  Branch (744:5): [True: 86, False: 0]
  ------------------
  745|     86|    return unicode;
  746|     86|}
_PyUnicode_ResizeCompact:
 1069|     27|{
 1070|     27|    Py_ssize_t char_size;
 1071|     27|    Py_ssize_t struct_size;
 1072|     27|    Py_ssize_t new_size;
 1073|     27|    PyObject *new_unicode;
 1074|       |#ifdef Py_DEBUG
 1075|       |    Py_ssize_t old_length = _PyUnicode_LENGTH(unicode);
 1076|       |#endif
 1077|       |
 1078|     27|    if (!_PyUnicode_IsModifiable(unicode)) {
  ------------------
  |  Branch (1078:9): [True: 0, False: 27]
  ------------------
 1079|      0|        PyObject *copy = resize_copy(unicode, length);
 1080|      0|        if (copy == NULL) {
  ------------------
  |  Branch (1080:13): [True: 0, False: 0]
  ------------------
 1081|      0|            return NULL;
 1082|      0|        }
 1083|      0|        Py_DECREF(unicode);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1084|      0|        return copy;
 1085|      0|    }
 1086|     27|    assert(PyUnicode_IS_COMPACT(unicode));
  ------------------
  |  Branch (1086:5): [True: 27, False: 0]
  ------------------
 1087|       |
 1088|     27|    char_size = PyUnicode_KIND(unicode);
  ------------------
  |  |  258|     27|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|     54|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 27, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1089|     27|    if (PyUnicode_IS_ASCII(unicode))
  ------------------
  |  |  227|     27|#define PyUnicode_IS_ASCII(op) PyUnicode_IS_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     27|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     27|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (227:32): [True: 26, False: 1]
  |  |  ------------------
  ------------------
 1090|     26|        struct_size = sizeof(PyASCIIObject);
 1091|      1|    else
 1092|      1|        struct_size = sizeof(PyCompactUnicodeObject);
 1093|       |
 1094|     27|    if (length > ((PY_SSIZE_T_MAX - struct_size) / char_size - 1)) {
  ------------------
  |  |  137|     27|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (1094:9): [True: 0, False: 27]
  ------------------
 1095|      0|        PyErr_NoMemory();
 1096|      0|        return NULL;
 1097|      0|    }
 1098|     27|    new_size = (struct_size + (length + 1) * char_size);
 1099|       |
 1100|     27|    if (_PyUnicode_HAS_UTF8_MEMORY(unicode)) {
  ------------------
  |  Branch (1100:9): [True: 0, False: 27]
  ------------------
 1101|      0|        PyMem_Free(_PyUnicode_UTF8(unicode));
 1102|      0|        PyUnicode_SET_UTF8_LENGTH(unicode, 0);
 1103|      0|        PyUnicode_SET_UTF8(unicode, NULL);
 1104|      0|    }
 1105|       |#ifdef Py_TRACE_REFS
 1106|       |    _Py_ForgetReference(unicode);
 1107|       |#endif
 1108|     27|    _PyReftracerTrack(unicode, PyRefTracer_DESTROY);
  ------------------
  |  |  112|     27|    do { \
  |  |  113|     27|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  114|     27|        if (tracer->tracer_func != NULL) { \
  |  |  ------------------
  |  |  |  Branch (114:13): [True: 0, False: 27]
  |  |  ------------------
  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  117|      0|        } \
  |  |  118|     27|    } while(0)
  |  |  ------------------
  |  |  |  Branch (118:13): [Folded, False: 27]
  |  |  ------------------
  ------------------
 1109|       |
 1110|     27|    new_unicode = (PyObject *)PyObject_Realloc(unicode, new_size);
 1111|     27|    if (new_unicode == NULL) {
  ------------------
  |  Branch (1111:9): [True: 0, False: 27]
  ------------------
 1112|      0|        _Py_NewReferenceNoTotal(unicode);
 1113|      0|        PyErr_NoMemory();
 1114|      0|        return NULL;
 1115|      0|    }
 1116|     27|    unicode = new_unicode;
 1117|     27|    _Py_NewReferenceNoTotal(unicode);
 1118|       |
 1119|     27|    _PyUnicode_LENGTH(unicode) = length;
  ------------------
  |  |  151|     27|    (_PyASCIIObject_CAST(op)->length)
  |  |  ------------------
  |  |  |  |  186|     27|    (assert(PyUnicode_Check(op)), \
  |  |  |  |  187|     27|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     27|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1119:5): [True: 27, False: 0]
  ------------------
 1120|       |#ifdef Py_DEBUG
 1121|       |    unicode_fill_invalid(unicode, old_length);
 1122|       |#endif
 1123|     27|    PyUnicode_WRITE(PyUnicode_KIND(unicode), PyUnicode_DATA(unicode),
  ------------------
  |  |  335|     27|    PyUnicode_WRITE(_Py_STATIC_CAST(int, kind), _Py_CAST(void*, data), \
  |  |  ------------------
  |  |  |  |   34|     54|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (34:47): [True: 27, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   PyUnicode_WRITE(_Py_STATIC_CAST(int, kind), _Py_CAST(void*, data), \
  |  |  ------------------
  |  |  |  |   37|     27|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  336|     27|                    (index), _Py_STATIC_CAST(Py_UCS4, value))
  |  |  ------------------
  |  |  |  |   34|     27|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
 1124|     27|                    length, 0);
 1125|     27|    assert(_PyUnicode_CheckConsistency(unicode, 0));
  ------------------
  |  Branch (1125:5): [True: 27, False: 0]
  ------------------
 1126|     27|    return unicode;
 1127|     27|}
PyUnicode_New:
 1273|  9.82k|{
 1274|       |    /* Optimization for empty strings */
 1275|  9.82k|    if (size == 0) {
  ------------------
  |  Branch (1275:9): [True: 2, False: 9.82k]
  ------------------
 1276|      2|        return _PyUnicode_GetEmpty();
 1277|      2|    }
 1278|       |
 1279|  9.82k|    PyObject *obj;
 1280|  9.82k|    PyCompactUnicodeObject *unicode;
 1281|  9.82k|    void *data;
 1282|  9.82k|    int kind;
 1283|  9.82k|    int is_ascii;
 1284|  9.82k|    Py_ssize_t char_size;
 1285|  9.82k|    Py_ssize_t struct_size;
 1286|       |
 1287|  9.82k|    is_ascii = 0;
 1288|  9.82k|    struct_size = sizeof(PyCompactUnicodeObject);
 1289|  9.82k|    if (maxchar < 128) {
  ------------------
  |  Branch (1289:9): [True: 9.82k, False: 2]
  ------------------
 1290|  9.82k|        kind = PyUnicode_1BYTE_KIND;
 1291|  9.82k|        char_size = 1;
 1292|  9.82k|        is_ascii = 1;
 1293|  9.82k|        struct_size = sizeof(PyASCIIObject);
 1294|  9.82k|    }
 1295|      2|    else if (maxchar < 256) {
  ------------------
  |  Branch (1295:14): [True: 1, False: 1]
  ------------------
 1296|      1|        kind = PyUnicode_1BYTE_KIND;
 1297|      1|        char_size = 1;
 1298|      1|    }
 1299|      1|    else if (maxchar < 65536) {
  ------------------
  |  Branch (1299:14): [True: 1, False: 0]
  ------------------
 1300|      1|        kind = PyUnicode_2BYTE_KIND;
 1301|      1|        char_size = 2;
 1302|      1|    }
 1303|      0|    else {
 1304|      0|        if (maxchar > MAX_UNICODE) {
  ------------------
  |  |  104|      0|#define MAX_UNICODE _Py_MAX_UNICODE
  |  |  ------------------
  |  |  |  |   16|      0|#define _Py_MAX_UNICODE 0x10ffff
  |  |  ------------------
  ------------------
  |  Branch (1304:13): [True: 0, False: 0]
  ------------------
 1305|      0|            PyErr_SetString(PyExc_SystemError,
 1306|      0|                            "invalid maximum character passed to PyUnicode_New");
 1307|      0|            return NULL;
 1308|      0|        }
 1309|      0|        kind = PyUnicode_4BYTE_KIND;
 1310|      0|        char_size = 4;
 1311|      0|    }
 1312|       |
 1313|       |    /* Ensure we won't overflow the size. */
 1314|  9.82k|    if (size < 0) {
  ------------------
  |  Branch (1314:9): [True: 0, False: 9.82k]
  ------------------
 1315|      0|        PyErr_SetString(PyExc_SystemError,
 1316|      0|                        "Negative size passed to PyUnicode_New");
 1317|      0|        return NULL;
 1318|      0|    }
 1319|  9.82k|    if (size > ((PY_SSIZE_T_MAX - struct_size) / char_size - 1))
  ------------------
  |  |  137|  9.82k|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (1319:9): [True: 0, False: 9.82k]
  ------------------
 1320|      0|        return PyErr_NoMemory();
 1321|       |
 1322|       |    /* Duplicated allocation code from _PyObject_New() instead of a call to
 1323|       |     * PyObject_New() so we are able to allocate space for the object and
 1324|       |     * it's data buffer.
 1325|       |     */
 1326|  9.82k|    obj = (PyObject *) PyObject_Malloc(struct_size + (size + 1) * char_size);
 1327|  9.82k|    if (obj == NULL) {
  ------------------
  |  Branch (1327:9): [True: 0, False: 9.82k]
  ------------------
 1328|      0|        return PyErr_NoMemory();
 1329|      0|    }
 1330|  9.82k|    _PyObject_Init(obj, &PyUnicode_Type);
 1331|       |
 1332|  9.82k|    unicode = (PyCompactUnicodeObject *)obj;
 1333|  9.82k|    if (is_ascii)
  ------------------
  |  Branch (1333:9): [True: 9.82k, False: 2]
  ------------------
 1334|  9.82k|        data = ((PyASCIIObject*)obj) + 1;
 1335|      2|    else
 1336|      2|        data = unicode + 1;
 1337|  9.82k|    _PyUnicode_LENGTH(unicode) = size;
  ------------------
  |  |  151|  9.82k|    (_PyASCIIObject_CAST(op)->length)
  |  |  ------------------
  |  |  |  |  186|  9.82k|    (assert(PyUnicode_Check(op)), \
  |  |  |  |  187|  9.82k|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  9.82k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1337:5): [True: 9.82k, False: 0]
  ------------------
 1338|  9.82k|    _PyUnicode_HASH(unicode) = -1;
  ------------------
  |  |  155|  9.82k|    (_PyASCIIObject_CAST(op)->hash)
  |  |  ------------------
  |  |  |  |  186|  9.82k|    (assert(PyUnicode_Check(op)), \
  |  |  |  |  187|  9.82k|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  9.82k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1338:5): [True: 9.82k, False: 0]
  ------------------
 1339|  9.82k|    _PyUnicode_STATE(unicode).interned = 0;
  ------------------
  |  |  153|  9.82k|    (_PyASCIIObject_CAST(op)->state)
  |  |  ------------------
  |  |  |  |  186|  9.82k|    (assert(PyUnicode_Check(op)), \
  |  |  |  |  187|  9.82k|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  9.82k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1339:5): [True: 9.82k, False: 0]
  ------------------
 1340|  9.82k|    _PyUnicode_STATE(unicode).kind = kind;
  ------------------
  |  |  153|  9.82k|    (_PyASCIIObject_CAST(op)->state)
  |  |  ------------------
  |  |  |  |  186|  9.82k|    (assert(PyUnicode_Check(op)), \
  |  |  |  |  187|  9.82k|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  9.82k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1340:5): [True: 9.82k, False: 0]
  ------------------
 1341|  9.82k|    _PyUnicode_STATE(unicode).compact = 1;
  ------------------
  |  |  153|  9.82k|    (_PyASCIIObject_CAST(op)->state)
  |  |  ------------------
  |  |  |  |  186|  9.82k|    (assert(PyUnicode_Check(op)), \
  |  |  |  |  187|  9.82k|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  9.82k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1341:5): [True: 9.82k, False: 0]
  ------------------
 1342|  9.82k|    _PyUnicode_STATE(unicode).ascii = is_ascii;
  ------------------
  |  |  153|  9.82k|    (_PyASCIIObject_CAST(op)->state)
  |  |  ------------------
  |  |  |  |  186|  9.82k|    (assert(PyUnicode_Check(op)), \
  |  |  |  |  187|  9.82k|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  9.82k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1342:5): [True: 9.82k, False: 0]
  ------------------
 1343|  9.82k|    _PyUnicode_STATE(unicode).statically_allocated = 0;
  ------------------
  |  |  153|  9.82k|    (_PyASCIIObject_CAST(op)->state)
  |  |  ------------------
  |  |  |  |  186|  9.82k|    (assert(PyUnicode_Check(op)), \
  |  |  |  |  187|  9.82k|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  9.82k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1343:5): [True: 9.82k, False: 0]
  ------------------
 1344|  9.82k|    if (is_ascii) {
  ------------------
  |  Branch (1344:9): [True: 9.82k, False: 2]
  ------------------
 1345|  9.82k|        ((char*)data)[size] = 0;
 1346|  9.82k|    }
 1347|      2|    else if (kind == PyUnicode_1BYTE_KIND) {
  ------------------
  |  Branch (1347:14): [True: 1, False: 1]
  ------------------
 1348|      1|        ((char*)data)[size] = 0;
 1349|      1|        unicode->utf8 = NULL;
 1350|      1|        unicode->utf8_length = 0;
 1351|      1|    }
 1352|      1|    else {
 1353|      1|        unicode->utf8 = NULL;
 1354|      1|        unicode->utf8_length = 0;
 1355|      1|        if (kind == PyUnicode_2BYTE_KIND)
  ------------------
  |  Branch (1355:13): [True: 1, False: 0]
  ------------------
 1356|      1|            ((Py_UCS2*)data)[size] = 0;
 1357|      0|        else /* kind == PyUnicode_4BYTE_KIND */
 1358|      0|            ((Py_UCS4*)data)[size] = 0;
 1359|      1|    }
 1360|       |#ifdef Py_DEBUG
 1361|       |    unicode_fill_invalid((PyObject*)unicode, 0);
 1362|       |#endif
 1363|  9.82k|    assert(_PyUnicode_CheckConsistency((PyObject*)unicode, 0));
  ------------------
  |  Branch (1363:5): [True: 9.82k, False: 0]
  ------------------
 1364|  9.82k|    return obj;
 1365|  9.82k|}
_PyUnicode_FastCopyCharacters:
 1525|    250|{
 1526|    250|    (void)_copy_characters(to, to_start, from, from_start, how_many, 0);
 1527|    250|}
_PyUnicode_IsModifiable:
 1734|     41|{
 1735|     41|    assert(_PyUnicode_CHECK(unicode));
  ------------------
  |  Branch (1735:5): [True: 41, False: 0]
  ------------------
 1736|     41|    if (!_PyObject_IsUniquelyReferenced(unicode))
  ------------------
  |  Branch (1736:9): [True: 10, False: 31]
  ------------------
 1737|     10|        return 0;
 1738|     31|    if (PyUnicode_HASH(unicode) != -1)
  ------------------
  |  |  157|     31|#define PyUnicode_HASH PyUnstable_Unicode_GET_CACHED_HASH
  ------------------
  |  Branch (1738:9): [True: 0, False: 31]
  ------------------
 1739|      0|        return 0;
 1740|     31|    if (PyUnicode_CHECK_INTERNED(unicode))
  ------------------
  |  |  214|     31|#define PyUnicode_CHECK_INTERNED(op) PyUnicode_CHECK_INTERNED(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     31|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     31|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (214:38): [True: 0, False: 31]
  |  |  ------------------
  ------------------
 1741|      0|        return 0;
 1742|     31|    if (!PyUnicode_CheckExact(unicode))
  ------------------
  |  |  104|     31|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  ------------------
  |  |  |  |  215|     31|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     31|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     31|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1742:9): [True: 0, False: 31]
  ------------------
 1743|      0|        return 0;
 1744|       |#ifdef Py_DEBUG
 1745|       |    /* singleton refcount is greater than 1 */
 1746|       |    assert(!unicode_is_singleton(unicode));
 1747|       |#endif
 1748|     31|    return 1;
 1749|     31|}
PyUnicode_FromWideChar:
 1900|     63|{
 1901|     63|    PyObject *unicode;
 1902|     63|    Py_UCS4 maxchar = 0;
 1903|     63|    Py_ssize_t num_surrogates;
 1904|       |
 1905|     63|    if (u == NULL && size != 0) {
  ------------------
  |  Branch (1905:9): [True: 0, False: 63]
  |  Branch (1905:22): [True: 0, False: 0]
  ------------------
 1906|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
 1907|      0|        return NULL;
 1908|      0|    }
 1909|       |
 1910|     63|    if (size == -1) {
  ------------------
  |  Branch (1910:9): [True: 42, False: 21]
  ------------------
 1911|     42|        size = wcslen(u);
 1912|     42|    }
 1913|       |
 1914|       |    /* If the Unicode data is known at construction time, we can apply
 1915|       |       some optimizations which share commonly used objects. */
 1916|       |
 1917|       |    /* Optimization for empty strings */
 1918|     63|    if (size == 0)
  ------------------
  |  Branch (1918:9): [True: 2, False: 61]
  ------------------
 1919|      2|        _Py_RETURN_UNICODE_EMPTY();
  ------------------
  |  |  375|      2|    do {                             \
  |  |  376|      2|        return _PyUnicode_GetEmpty();\
  |  |  377|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (377:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1920|       |
 1921|       |#ifdef HAVE_NON_UNICODE_WCHAR_T_REPRESENTATION
 1922|       |    /* Oracle Solaris uses non-Unicode internal wchar_t form for
 1923|       |       non-Unicode locales and hence needs conversion to UCS-4 first. */
 1924|       |    if (_Py_LocaleUsesNonUnicodeWchar()) {
 1925|       |        wchar_t* converted = _Py_DecodeNonUnicodeWchar(u, size);
 1926|       |        if (!converted) {
 1927|       |            return NULL;
 1928|       |        }
 1929|       |        PyObject *unicode = _PyUnicode_FromUCS4(converted, size);
 1930|       |        PyMem_Free(converted);
 1931|       |        return unicode;
 1932|       |    }
 1933|       |#endif
 1934|       |
 1935|       |    /* Single character Unicode objects in the Latin-1 range are
 1936|       |       shared when using this constructor */
 1937|     61|    if (size == 1 && (Py_UCS4)*u < 256)
  ------------------
  |  Branch (1937:9): [True: 0, False: 61]
  |  Branch (1937:22): [True: 0, False: 0]
  ------------------
 1938|      0|        return get_latin1_char((unsigned char)*u);
 1939|       |
 1940|       |    /* If not empty and not single character, copy the Unicode data
 1941|       |       into the new object */
 1942|     61|    if (find_maxchar_surrogates(u, u + size,
  ------------------
  |  Branch (1942:9): [True: 0, False: 61]
  ------------------
 1943|     61|                                &maxchar, &num_surrogates) == -1)
 1944|      0|        return NULL;
 1945|       |
 1946|     61|    unicode = PyUnicode_New(size - num_surrogates, maxchar);
 1947|     61|    if (!unicode)
  ------------------
  |  Branch (1947:9): [True: 0, False: 61]
  ------------------
 1948|      0|        return NULL;
 1949|       |
 1950|     61|    unicode_write_widechar(PyUnicode_KIND(unicode), PyUnicode_DATA(unicode),
  ------------------
  |  |  258|     61|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|    122|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 61, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  unicode_write_widechar(PyUnicode_KIND(unicode), PyUnicode_DATA(unicode),
  ------------------
  |  |  284|     61|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     61|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     61|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1951|     61|                           u, size, num_surrogates);
 1952|       |
 1953|     61|    return unicode_result(unicode);
  ------------------
  |  |  747|     61|#define unicode_result _PyUnicode_Result
  ------------------
 1954|     61|}
PyUnicode_FromStringAndSize:
 2009|     72|{
 2010|     72|    if (size < 0) {
  ------------------
  |  Branch (2010:9): [True: 0, False: 72]
  ------------------
 2011|      0|        PyErr_SetString(PyExc_SystemError,
 2012|      0|                        "Negative size passed to PyUnicode_FromStringAndSize");
 2013|      0|        return NULL;
 2014|      0|    }
 2015|     72|    if (u != NULL) {
  ------------------
  |  Branch (2015:9): [True: 72, False: 0]
  ------------------
 2016|     72|        return PyUnicode_DecodeUTF8Stateful(u, size, NULL, NULL);
 2017|     72|    }
 2018|      0|    if (size > 0) {
  ------------------
  |  Branch (2018:9): [True: 0, False: 0]
  ------------------
 2019|      0|        PyErr_SetString(PyExc_SystemError,
 2020|      0|            "NULL string with positive size with NULL passed to PyUnicode_FromStringAndSize");
 2021|      0|        return NULL;
 2022|      0|    }
 2023|      0|    return _PyUnicode_GetEmpty();
 2024|      0|}
PyUnicode_FromString:
 2028|  4.80k|{
 2029|  4.80k|    size_t size = strlen(u);
 2030|  4.80k|    if (size > PY_SSIZE_T_MAX) {
  ------------------
  |  |  137|  4.80k|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (2030:9): [True: 0, False: 4.80k]
  ------------------
 2031|      0|        PyErr_SetString(PyExc_OverflowError, "input too long");
 2032|      0|        return NULL;
 2033|      0|    }
 2034|  4.80k|    return PyUnicode_DecodeUTF8Stateful(u, (Py_ssize_t)size, NULL, NULL);
 2035|  4.80k|}
_PyUnicode_FromASCII:
 2123|     30|{
 2124|     30|    const unsigned char *s = (const unsigned char *)buffer;
 2125|     30|    PyObject *unicode;
 2126|     30|    if (size == 1) {
  ------------------
  |  Branch (2126:9): [True: 0, False: 30]
  ------------------
 2127|       |#ifdef Py_DEBUG
 2128|       |        assert((unsigned char)s[0] < 128);
 2129|       |#endif
 2130|      0|        return get_latin1_char(s[0]);
 2131|      0|    }
 2132|     30|    unicode = PyUnicode_New(size, 127);
 2133|     30|    if (!unicode)
  ------------------
  |  Branch (2133:9): [True: 0, False: 30]
  ------------------
 2134|      0|        return NULL;
 2135|     30|    memcpy(PyUnicode_1BYTE_DATA(unicode), s, size);
  ------------------
  |  |  291|     30|#define PyUnicode_1BYTE_DATA(op) _Py_STATIC_CAST(Py_UCS1*, PyUnicode_DATA(op))
  |  |  ------------------
  |  |  |  |   34|     30|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
 2136|     30|    assert(_PyUnicode_CheckConsistency(unicode, 1));
  ------------------
  |  Branch (2136:5): [True: 30, False: 0]
  ------------------
 2137|     30|    return unicode;
 2138|     30|}
PyUnicode_FromKindAndData:
 2279|  4.48k|{
 2280|  4.48k|    if (size < 0) {
  ------------------
  |  Branch (2280:9): [True: 0, False: 4.48k]
  ------------------
 2281|      0|        PyErr_SetString(PyExc_ValueError, "size must be positive");
 2282|      0|        return NULL;
 2283|      0|    }
 2284|  4.48k|    switch (kind) {
 2285|  4.48k|    case PyUnicode_1BYTE_KIND:
  ------------------
  |  Branch (2285:5): [True: 4.48k, False: 0]
  ------------------
 2286|  4.48k|        return _PyUnicode_FromUCS1(buffer, size);
 2287|      0|    case PyUnicode_2BYTE_KIND:
  ------------------
  |  Branch (2287:5): [True: 0, False: 4.48k]
  ------------------
 2288|      0|        return _PyUnicode_FromUCS2(buffer, size);
 2289|      0|    case PyUnicode_4BYTE_KIND:
  ------------------
  |  Branch (2289:5): [True: 0, False: 4.48k]
  ------------------
 2290|      0|        return _PyUnicode_FromUCS4(buffer, size);
 2291|      0|    default:
  ------------------
  |  Branch (2291:5): [True: 0, False: 4.48k]
  ------------------
 2292|      0|        PyErr_SetString(PyExc_SystemError, "invalid kind");
 2293|       |        return NULL;
 2294|  4.48k|    }
 2295|  4.48k|}
PyUnicode_FromFormatV:
 3111|     24|{
 3112|     24|    _PyUnicodeWriter writer;
 3113|     24|    _PyUnicodeWriter_Init(&writer);
 3114|       |
 3115|     24|    if (unicode_from_format(&writer, format, vargs) < 0) {
  ------------------
  |  Branch (3115:9): [True: 0, False: 24]
  ------------------
 3116|      0|        _PyUnicodeWriter_Dealloc(&writer);
 3117|      0|        return NULL;
 3118|      0|    }
 3119|     24|    return _PyUnicodeWriter_Finish(&writer);
 3120|     24|}
PyUnicode_FromFormat:
 3124|      3|{
 3125|      3|    PyObject* ret;
 3126|      3|    va_list vargs;
 3127|       |
 3128|      3|    va_start(vargs, format);
 3129|      3|    ret = PyUnicode_FromFormatV(format, vargs);
 3130|       |    va_end(vargs);
 3131|      3|    return ret;
 3132|      3|}
PyUnicode_AsWideCharString:
 3282|     68|{
 3283|     68|    wchar_t *buffer;
 3284|     68|    Py_ssize_t buflen;
 3285|       |
 3286|     68|    if (unicode == NULL) {
  ------------------
  |  Branch (3286:9): [True: 0, False: 68]
  ------------------
 3287|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
 3288|      0|        return NULL;
 3289|      0|    }
 3290|     68|    if (!PyUnicode_Check(unicode)) {
  ------------------
  |  |  103|     68|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     68|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (3290:9): [True: 0, False: 68]
  ------------------
 3291|      0|        PyErr_BadArgument();
 3292|      0|        return NULL;
 3293|      0|    }
 3294|       |
 3295|     68|    buflen = unicode_get_widechar_size(unicode);
 3296|     68|    buffer = (wchar_t *) PyMem_New(wchar_t, (buflen + 1));
  ------------------
  |  |   64|     68|  ( ((size_t)(n) > PY_SSIZE_T_MAX / sizeof(type)) ? NULL :      \
  |  |  ------------------
  |  |  |  |  137|     68|#   define PY_SSIZE_T_MAX SSIZE_MAX
  |  |  ------------------
  |  |  |  Branch (64:5): [True: 0, False: 68]
  |  |  ------------------
  |  |   65|     68|        ( (type *) PyMem_Malloc((n) * sizeof(type)) ) )
  ------------------
 3297|     68|    if (buffer == NULL) {
  ------------------
  |  Branch (3297:9): [True: 0, False: 68]
  ------------------
 3298|      0|        PyErr_NoMemory();
 3299|      0|        return NULL;
 3300|      0|    }
 3301|     68|    unicode_copy_as_widechar(unicode, buffer, buflen + 1);
 3302|       |
 3303|       |#ifdef HAVE_NON_UNICODE_WCHAR_T_REPRESENTATION
 3304|       |    /* Oracle Solaris uses non-Unicode internal wchar_t form for
 3305|       |       non-Unicode locales and hence needs conversion first. */
 3306|       |    if (_Py_LocaleUsesNonUnicodeWchar()) {
 3307|       |        if (_Py_EncodeNonUnicodeWchar_InPlace(buffer, (buflen + 1)) < 0) {
 3308|       |            return NULL;
 3309|       |        }
 3310|       |    }
 3311|       |#endif
 3312|       |
 3313|     68|    if (size != NULL) {
  ------------------
  |  Branch (3313:9): [True: 32, False: 36]
  ------------------
 3314|     32|        *size = buflen;
 3315|     32|    }
 3316|     36|    else if (wcslen(buffer) != (size_t)buflen) {
  ------------------
  |  Branch (3316:14): [True: 0, False: 36]
  ------------------
 3317|      0|        PyMem_Free(buffer);
 3318|      0|        PyErr_SetString(PyExc_ValueError,
 3319|      0|                        "embedded null character");
 3320|      0|        return NULL;
 3321|      0|    }
 3322|     68|    return buffer;
 3323|     68|}
PyUnicode_FromEncodedObject:
 3410|      2|{
 3411|      2|    Py_buffer buffer;
 3412|      2|    PyObject *v;
 3413|       |
 3414|      2|    if (obj == NULL) {
  ------------------
  |  Branch (3414:9): [True: 0, False: 2]
  ------------------
 3415|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
 3416|      0|        return NULL;
 3417|      0|    }
 3418|       |
 3419|       |    /* Decoding bytes objects is the most common case and should be fast */
 3420|      2|    if (PyBytes_Check(obj)) {
  ------------------
  |  |   28|      2|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_BYTES_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      2|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3421|      2|        if (PyBytes_GET_SIZE(obj) == 0) {
  ------------------
  |  |   33|      2|#define PyBytes_GET_SIZE(self) PyBytes_GET_SIZE(_PyObject_CAST(self))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3421:13): [True: 0, False: 2]
  ------------------
 3422|      0|            if (unicode_check_encoding_errors(encoding, errors) < 0) {
  ------------------
  |  Branch (3422:17): [True: 0, False: 0]
  ------------------
 3423|      0|                return NULL;
 3424|      0|            }
 3425|      0|            _Py_RETURN_UNICODE_EMPTY();
  ------------------
  |  |  375|      0|    do {                             \
  |  |  376|      0|        return _PyUnicode_GetEmpty();\
  |  |  377|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (377:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3426|      0|        }
 3427|      2|        return PyUnicode_Decode(
 3428|      2|                PyBytes_AS_STRING(obj), PyBytes_GET_SIZE(obj),
  ------------------
  |  |   27|      2|#define PyBytes_AS_STRING(op) PyBytes_AS_STRING(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                              PyBytes_AS_STRING(obj), PyBytes_GET_SIZE(obj),
  ------------------
  |  |   33|      2|#define PyBytes_GET_SIZE(self) PyBytes_GET_SIZE(_PyObject_CAST(self))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3429|      2|                encoding, errors);
 3430|      2|    }
 3431|       |
 3432|      0|    if (PyUnicode_Check(obj)) {
  ------------------
  |  |  103|      0|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3433|      0|        PyErr_SetString(PyExc_TypeError,
 3434|      0|                        "decoding str is not supported");
 3435|      0|        return NULL;
 3436|      0|    }
 3437|       |
 3438|       |    /* Retrieve a bytes buffer view through the PEP 3118 buffer interface */
 3439|      0|    if (PyObject_GetBuffer(obj, &buffer, PyBUF_SIMPLE) < 0) {
  ------------------
  |  |  108|      0|#define PyBUF_SIMPLE 0
  ------------------
  |  Branch (3439:9): [True: 0, False: 0]
  ------------------
 3440|      0|        PyErr_Format(PyExc_TypeError,
 3441|      0|                     "decoding to str: need a bytes-like object, %.80s found",
 3442|      0|                     Py_TYPE(obj)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3443|      0|        return NULL;
 3444|      0|    }
 3445|       |
 3446|      0|    if (buffer.len == 0) {
  ------------------
  |  Branch (3446:9): [True: 0, False: 0]
  ------------------
 3447|      0|        PyBuffer_Release(&buffer);
 3448|      0|        if (unicode_check_encoding_errors(encoding, errors) < 0) {
  ------------------
  |  Branch (3448:13): [True: 0, False: 0]
  ------------------
 3449|      0|            return NULL;
 3450|      0|        }
 3451|      0|        _Py_RETURN_UNICODE_EMPTY();
  ------------------
  |  |  375|      0|    do {                             \
  |  |  376|      0|        return _PyUnicode_GetEmpty();\
  |  |  377|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (377:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3452|      0|    }
 3453|       |
 3454|      0|    v = PyUnicode_Decode((char*) buffer.buf, buffer.len, encoding, errors);
 3455|      0|    PyBuffer_Release(&buffer);
 3456|      0|    return v;
 3457|      0|}
_Py_normalize_encoding:
 3467|     18|{
 3468|     18|    const char *e;
 3469|     18|    char *l;
 3470|     18|    char *l_end;
 3471|     18|    int punct;
 3472|       |
 3473|     18|    assert(encoding != NULL);
  ------------------
  |  Branch (3473:5): [True: 18, False: 0]
  ------------------
 3474|       |
 3475|     18|    e = encoding;
 3476|     18|    l = lower;
 3477|     18|    l_end = &lower[lower_len - 1];
 3478|     18|    punct = 0;
 3479|    108|    while (1) {
  ------------------
  |  Branch (3479:12): [True: 108, Folded]
  ------------------
 3480|    108|        char c = *e;
 3481|    108|        if (c == 0) {
  ------------------
  |  Branch (3481:13): [True: 18, False: 90]
  ------------------
 3482|     18|            break;
 3483|     18|        }
 3484|       |
 3485|     90|        if (Py_ISALNUM(c) || c == '.') {
  ------------------
  |  |   26|    180|#define Py_ISALNUM(c)  (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_ALNUM)
  |  |  ------------------
  |  |  |  |  138|     90|#define Py_CHARMASK(c) ((unsigned char)((c) & 0xff))
  |  |  ------------------
  |  |               #define Py_ISALNUM(c)  (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_ALNUM)
  |  |  ------------------
  |  |  |  |   12|     90|#define PY_CTF_ALNUM  (PY_CTF_ALPHA|PY_CTF_DIGIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   10|     90|#define PY_CTF_ALPHA  (PY_CTF_LOWER|PY_CTF_UPPER)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |    8|     90|#define PY_CTF_LOWER  0x01
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define PY_CTF_ALPHA  (PY_CTF_LOWER|PY_CTF_UPPER)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |    9|     90|#define PY_CTF_UPPER  0x02
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define PY_CTF_ALNUM  (PY_CTF_ALPHA|PY_CTF_DIGIT)
  |  |  |  |  ------------------
  |  |  |  |  |  |   11|     90|#define PY_CTF_DIGIT  0x04
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (26:24): [True: 84, False: 6]
  |  |  ------------------
  ------------------
  |  Branch (3485:30): [True: 0, False: 6]
  ------------------
 3486|     84|            if (punct && l != lower) {
  ------------------
  |  Branch (3486:17): [True: 6, False: 78]
  |  Branch (3486:26): [True: 6, False: 0]
  ------------------
 3487|      6|                if (l == l_end) {
  ------------------
  |  Branch (3487:21): [True: 0, False: 6]
  ------------------
 3488|      0|                    return 0;
 3489|      0|                }
 3490|      6|                *l++ = '_';
 3491|      6|            }
 3492|     84|            punct = 0;
 3493|       |
 3494|     84|            if (l == l_end) {
  ------------------
  |  Branch (3494:17): [True: 0, False: 84]
  ------------------
 3495|      0|                return 0;
 3496|      0|            }
 3497|     84|            *l++ = to_lower ? Py_TOLOWER(c) : c;
  ------------------
  |  |   32|     80|#define Py_TOLOWER(c) (_Py_ctype_tolower[Py_CHARMASK(c)])
  |  |  ------------------
  |  |  |  |  138|     80|#define Py_CHARMASK(c) ((unsigned char)((c) & 0xff))
  |  |  ------------------
  ------------------
  |  Branch (3497:20): [True: 80, False: 4]
  ------------------
 3498|     84|        }
 3499|      6|        else {
 3500|      6|            punct = 1;
 3501|      6|        }
 3502|       |
 3503|     90|        e++;
 3504|     90|    }
 3505|     18|    *l = '\0';
 3506|     18|    return 1;
 3507|     18|}
PyUnicode_Decode:
 3514|      2|{
 3515|      2|    PyObject *buffer = NULL, *unicode;
 3516|      2|    Py_buffer info;
 3517|      2|    char buflower[11];   /* strlen("iso-8859-1\0") == 11, longest shortcut */
 3518|       |
 3519|      2|    if (unicode_check_encoding_errors(encoding, errors) < 0) {
  ------------------
  |  Branch (3519:9): [True: 0, False: 2]
  ------------------
 3520|      0|        return NULL;
 3521|      0|    }
 3522|       |
 3523|      2|    if (size == 0) {
  ------------------
  |  Branch (3523:9): [True: 0, False: 2]
  ------------------
 3524|      0|        _Py_RETURN_UNICODE_EMPTY();
  ------------------
  |  |  375|      0|    do {                             \
  |  |  376|      0|        return _PyUnicode_GetEmpty();\
  |  |  377|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (377:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3525|      0|    }
 3526|       |
 3527|      2|    if (encoding == NULL) {
  ------------------
  |  Branch (3527:9): [True: 0, False: 2]
  ------------------
 3528|      0|        return PyUnicode_DecodeUTF8Stateful(s, size, errors, NULL);
 3529|      0|    }
 3530|       |
 3531|       |    /* Shortcuts for common default encodings */
 3532|      2|    if (_Py_normalize_encoding(encoding, buflower, sizeof(buflower), 1)) {
  ------------------
  |  Branch (3532:9): [True: 2, False: 0]
  ------------------
 3533|      2|        char *lower = buflower;
 3534|       |
 3535|       |        /* Fast paths */
 3536|      2|        if (lower[0] == 'u' && lower[1] == 't' && lower[2] == 'f') {
  ------------------
  |  Branch (3536:13): [True: 2, False: 0]
  |  Branch (3536:32): [True: 2, False: 0]
  |  Branch (3536:51): [True: 2, False: 0]
  ------------------
 3537|      2|            lower += 3;
 3538|      2|            if (*lower == '_') {
  ------------------
  |  Branch (3538:17): [True: 2, False: 0]
  ------------------
 3539|       |                /* Match "utf8" and "utf_8" */
 3540|      2|                lower++;
 3541|      2|            }
 3542|       |
 3543|      2|            if (lower[0] == '8' && lower[1] == 0) {
  ------------------
  |  Branch (3543:17): [True: 2, False: 0]
  |  Branch (3543:36): [True: 2, False: 0]
  ------------------
 3544|      2|                return PyUnicode_DecodeUTF8Stateful(s, size, errors, NULL);
 3545|      2|            }
 3546|      0|            else if (lower[0] == '1' && lower[1] == '6' && lower[2] == 0) {
  ------------------
  |  Branch (3546:22): [True: 0, False: 0]
  |  Branch (3546:41): [True: 0, False: 0]
  |  Branch (3546:60): [True: 0, False: 0]
  ------------------
 3547|      0|                return PyUnicode_DecodeUTF16(s, size, errors, 0);
 3548|      0|            }
 3549|      0|            else if (lower[0] == '3' && lower[1] == '2' && lower[2] == 0) {
  ------------------
  |  Branch (3549:22): [True: 0, False: 0]
  |  Branch (3549:41): [True: 0, False: 0]
  |  Branch (3549:60): [True: 0, False: 0]
  ------------------
 3550|      0|                return PyUnicode_DecodeUTF32(s, size, errors, 0);
 3551|      0|            }
 3552|      2|        }
 3553|      0|        else {
 3554|      0|            if (strcmp(lower, "ascii") == 0
  ------------------
  |  Branch (3554:17): [True: 0, False: 0]
  ------------------
 3555|      0|                || strcmp(lower, "us_ascii") == 0) {
  ------------------
  |  Branch (3555:20): [True: 0, False: 0]
  ------------------
 3556|      0|                return PyUnicode_DecodeASCII(s, size, errors);
 3557|      0|            }
 3558|       |    #ifdef MS_WINDOWS
 3559|       |            else if (strcmp(lower, "mbcs") == 0) {
 3560|       |                return PyUnicode_DecodeMBCS(s, size, errors);
 3561|       |            }
 3562|       |    #endif
 3563|      0|            else if (strcmp(lower, "latin1") == 0
  ------------------
  |  Branch (3563:22): [True: 0, False: 0]
  ------------------
 3564|      0|                     || strcmp(lower, "latin_1") == 0
  ------------------
  |  Branch (3564:25): [True: 0, False: 0]
  ------------------
 3565|      0|                     || strcmp(lower, "iso_8859_1") == 0
  ------------------
  |  Branch (3565:25): [True: 0, False: 0]
  ------------------
 3566|      0|                     || strcmp(lower, "iso8859_1") == 0) {
  ------------------
  |  Branch (3566:25): [True: 0, False: 0]
  ------------------
 3567|      0|                return PyUnicode_DecodeLatin1(s, size, errors);
 3568|      0|            }
 3569|      0|        }
 3570|      2|    }
 3571|       |
 3572|       |    /* Decode via the codec registry */
 3573|      0|    buffer = NULL;
 3574|      0|    if (PyBuffer_FillInfo(&info, NULL, (void *)s, size, 1, PyBUF_FULL_RO) < 0)
  ------------------
  |  |  134|      0|#define PyBUF_FULL_RO (PyBUF_INDIRECT | PyBUF_FORMAT)
  |  |  ------------------
  |  |  |  |  122|      0|#define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)
  |  |  |  |  ------------------
  |  |  |  |  |  |  118|      0|#define PyBUF_STRIDES (0x0010 | PyBUF_ND)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  117|      0|#define PyBUF_ND 0x0008
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define PyBUF_FULL_RO (PyBUF_INDIRECT | PyBUF_FORMAT)
  |  |  ------------------
  |  |  |  |  116|      0|#define PyBUF_FORMAT 0x0004
  |  |  ------------------
  ------------------
  |  Branch (3574:9): [True: 0, False: 0]
  ------------------
 3575|      0|        goto onError;
 3576|      0|    buffer = PyMemoryView_FromBuffer(&info);
 3577|      0|    if (buffer == NULL)
  ------------------
  |  Branch (3577:9): [True: 0, False: 0]
  ------------------
 3578|      0|        goto onError;
 3579|      0|    unicode = _PyCodec_DecodeText(buffer, encoding, errors);
 3580|      0|    if (unicode == NULL)
  ------------------
  |  Branch (3580:9): [True: 0, False: 0]
  ------------------
 3581|      0|        goto onError;
 3582|      0|    if (!PyUnicode_Check(unicode)) {
  ------------------
  |  |  103|      0|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (3582:9): [True: 0, False: 0]
  ------------------
 3583|      0|        PyErr_Format(PyExc_TypeError,
 3584|      0|                     "'%.400s' decoder returned '%.400s' instead of 'str'; "
 3585|      0|                     "use codecs.decode() to decode to arbitrary types",
 3586|      0|                     encoding,
 3587|      0|                     Py_TYPE(unicode)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3588|      0|        Py_DECREF(unicode);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3589|      0|        goto onError;
 3590|      0|    }
 3591|      0|    Py_DECREF(buffer);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3592|      0|    return unicode_result(unicode);
  ------------------
  |  |  747|      0|#define unicode_result _PyUnicode_Result
  ------------------
 3593|       |
 3594|      0|  onError:
 3595|      0|    Py_XDECREF(buffer);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3596|       |    return NULL;
 3597|      0|}
PyUnicode_EncodeFSDefault:
 3735|     23|{
 3736|     23|    PyInterpreterState *interp = _PyInterpreterState_GET();
 3737|     23|    struct _Py_unicode_fs_codec *fs_codec = &interp->unicode.fs_codec;
 3738|     23|    if (fs_codec->utf8) {
  ------------------
  |  Branch (3738:9): [True: 23, False: 0]
  ------------------
 3739|     23|        return unicode_encode_utf8(unicode,
 3740|     23|                                   fs_codec->error_handler,
 3741|     23|                                   fs_codec->errors);
 3742|     23|    }
 3743|      0|#ifndef _Py_FORCE_UTF8_FS_ENCODING
 3744|      0|    else if (fs_codec->encoding) {
  ------------------
  |  Branch (3744:14): [True: 0, False: 0]
  ------------------
 3745|      0|        return PyUnicode_AsEncodedString(unicode,
 3746|      0|                                         fs_codec->encoding,
 3747|      0|                                         fs_codec->errors);
 3748|      0|    }
 3749|      0|#endif
 3750|      0|    else {
 3751|       |        /* Before _PyUnicode_InitEncodings() is called, the Python codec
 3752|       |           machinery is not ready and so cannot be used:
 3753|       |           use wcstombs() in this case. */
 3754|      0|        const PyConfig *config = _PyInterpreterState_GetConfig(interp);
 3755|      0|        const wchar_t *filesystem_errors = config->filesystem_errors;
 3756|      0|        assert(filesystem_errors != NULL);
  ------------------
  |  Branch (3756:9): [True: 0, False: 0]
  ------------------
 3757|      0|        _Py_error_handler errors = get_error_handler_wide(filesystem_errors);
 3758|      0|        assert(errors != _Py_ERROR_UNKNOWN);
  ------------------
  |  Branch (3758:9): [True: 0, False: 0]
  ------------------
 3759|       |#ifdef _Py_FORCE_UTF8_FS_ENCODING
 3760|       |        return unicode_encode_utf8(unicode, errors, NULL);
 3761|       |#else
 3762|      0|        return unicode_encode_locale(unicode, errors, 0);
 3763|      0|#endif
 3764|      0|    }
 3765|     23|}
PyUnicode_AsEncodedString:
 3771|     15|{
 3772|     15|    PyObject *v;
 3773|     15|    char buflower[11];   /* strlen("iso_8859_1\0") == 11, longest shortcut */
 3774|       |
 3775|     15|    if (!PyUnicode_Check(unicode)) {
  ------------------
  |  |  103|     15|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     15|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (3775:9): [True: 0, False: 15]
  ------------------
 3776|      0|        PyErr_BadArgument();
 3777|      0|        return NULL;
 3778|      0|    }
 3779|       |
 3780|     15|    if (unicode_check_encoding_errors(encoding, errors) < 0) {
  ------------------
  |  Branch (3780:9): [True: 0, False: 15]
  ------------------
 3781|      0|        return NULL;
 3782|      0|    }
 3783|       |
 3784|     15|    if (encoding == NULL) {
  ------------------
  |  Branch (3784:9): [True: 0, False: 15]
  ------------------
 3785|      0|        return _PyUnicode_AsUTF8String(unicode, errors);
 3786|      0|    }
 3787|       |
 3788|       |    /* Shortcuts for common default encodings */
 3789|     15|    if (_Py_normalize_encoding(encoding, buflower, sizeof(buflower), 1)) {
  ------------------
  |  Branch (3789:9): [True: 15, False: 0]
  ------------------
 3790|     15|        char *lower = buflower;
 3791|       |
 3792|       |        /* Fast paths */
 3793|     15|        if (lower[0] == 'u' && lower[1] == 't' && lower[2] == 'f') {
  ------------------
  |  Branch (3793:13): [True: 3, False: 12]
  |  Branch (3793:32): [True: 3, False: 0]
  |  Branch (3793:51): [True: 3, False: 0]
  ------------------
 3794|      3|            lower += 3;
 3795|      3|            if (*lower == '_') {
  ------------------
  |  Branch (3795:17): [True: 3, False: 0]
  ------------------
 3796|       |                /* Match "utf8" and "utf_8" */
 3797|      3|                lower++;
 3798|      3|            }
 3799|       |
 3800|      3|            if (lower[0] == '8' && lower[1] == 0) {
  ------------------
  |  Branch (3800:17): [True: 3, False: 0]
  |  Branch (3800:36): [True: 3, False: 0]
  ------------------
 3801|      3|                return _PyUnicode_AsUTF8String(unicode, errors);
 3802|      3|            }
 3803|      0|            else if (lower[0] == '1' && lower[1] == '6' && lower[2] == 0) {
  ------------------
  |  Branch (3803:22): [True: 0, False: 0]
  |  Branch (3803:41): [True: 0, False: 0]
  |  Branch (3803:60): [True: 0, False: 0]
  ------------------
 3804|      0|                return _PyUnicode_EncodeUTF16(unicode, errors, 0);
 3805|      0|            }
 3806|      0|            else if (lower[0] == '3' && lower[1] == '2' && lower[2] == 0) {
  ------------------
  |  Branch (3806:22): [True: 0, False: 0]
  |  Branch (3806:41): [True: 0, False: 0]
  |  Branch (3806:60): [True: 0, False: 0]
  ------------------
 3807|      0|                return _PyUnicode_EncodeUTF32(unicode, errors, 0);
 3808|      0|            }
 3809|      3|        }
 3810|     12|        else {
 3811|     12|            if (strcmp(lower, "ascii") == 0
  ------------------
  |  Branch (3811:17): [True: 12, False: 0]
  ------------------
 3812|     12|                || strcmp(lower, "us_ascii") == 0) {
  ------------------
  |  Branch (3812:20): [True: 0, False: 0]
  ------------------
 3813|     12|                return _PyUnicode_AsASCIIString(unicode, errors);
 3814|     12|            }
 3815|       |#ifdef MS_WINDOWS
 3816|       |            else if (strcmp(lower, "mbcs") == 0) {
 3817|       |                return PyUnicode_EncodeCodePage(CP_ACP, unicode, errors);
 3818|       |            }
 3819|       |#endif
 3820|      0|            else if (strcmp(lower, "latin1") == 0 ||
  ------------------
  |  Branch (3820:22): [True: 0, False: 0]
  ------------------
 3821|      0|                     strcmp(lower, "latin_1") == 0 ||
  ------------------
  |  Branch (3821:22): [True: 0, False: 0]
  ------------------
 3822|      0|                     strcmp(lower, "iso_8859_1") == 0 ||
  ------------------
  |  Branch (3822:22): [True: 0, False: 0]
  ------------------
 3823|      0|                     strcmp(lower, "iso8859_1") == 0) {
  ------------------
  |  Branch (3823:22): [True: 0, False: 0]
  ------------------
 3824|      0|                return _PyUnicode_AsLatin1String(unicode, errors);
 3825|      0|            }
 3826|     12|        }
 3827|     15|    }
 3828|       |
 3829|       |    /* Encode via the codec registry */
 3830|      0|    v = _PyCodec_EncodeText(unicode, encoding, errors);
 3831|      0|    if (v == NULL)
  ------------------
  |  Branch (3831:9): [True: 0, False: 0]
  ------------------
 3832|      0|        return NULL;
 3833|       |
 3834|       |    /* The normal path */
 3835|      0|    if (PyBytes_Check(v))
  ------------------
  |  |   28|      0|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_BYTES_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3836|      0|        return v;
 3837|       |
 3838|       |    /* If the codec returns a buffer, raise a warning and convert to bytes */
 3839|      0|    if (PyByteArray_Check(v)) {
  ------------------
  |  |   24|      0|#define PyByteArray_Check(self) PyObject_TypeCheck((self), &PyByteArray_Type)
  |  |  ------------------
  |  |  |  |  378|      0|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (378:40): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3840|      0|        int error;
 3841|      0|        PyObject *b;
 3842|       |
 3843|      0|        error = PyErr_WarnFormat(PyExc_RuntimeWarning, 1,
 3844|      0|            "encoder %s returned bytearray instead of bytes; "
 3845|      0|            "use codecs.encode() to encode to arbitrary types",
 3846|      0|            encoding);
 3847|      0|        if (error) {
  ------------------
  |  Branch (3847:13): [True: 0, False: 0]
  ------------------
 3848|      0|            Py_DECREF(v);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3849|      0|            return NULL;
 3850|      0|        }
 3851|       |
 3852|      0|        b = PyBytes_FromStringAndSize(PyByteArray_AS_STRING(v),
  ------------------
  |  |   28|      0|#define PyByteArray_AS_STRING(self) PyByteArray_AS_STRING(_PyObject_CAST(self))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3853|      0|                                      PyByteArray_GET_SIZE(v));
  ------------------
  |  |   38|      0|#define PyByteArray_GET_SIZE(self) PyByteArray_GET_SIZE(_PyObject_CAST(self))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3854|      0|        Py_DECREF(v);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3855|      0|        return b;
 3856|      0|    }
 3857|       |
 3858|      0|    PyErr_Format(PyExc_TypeError,
 3859|      0|                 "'%.400s' encoder returned '%.400s' instead of 'bytes'; "
 3860|      0|                 "use codecs.encode() to encode to arbitrary types",
 3861|      0|                 encoding,
 3862|      0|                 Py_TYPE(v)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3863|      0|    Py_DECREF(v);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3864|       |    return NULL;
 3865|      0|}
PyUnicode_DecodeLocale:
 3952|     10|{
 3953|     10|    Py_ssize_t size = (Py_ssize_t)strlen(str);
 3954|     10|    _Py_error_handler error_handler = _Py_GetErrorHandler(errors);
 3955|     10|    return unicode_decode_locale(str, size, error_handler, 1);
 3956|     10|}
PyUnicode_DecodeFSDefaultAndSize:
 3967|    277|{
 3968|    277|    PyInterpreterState *interp = _PyInterpreterState_GET();
 3969|    277|    struct _Py_unicode_fs_codec *fs_codec = &interp->unicode.fs_codec;
 3970|    277|    if (fs_codec->utf8) {
  ------------------
  |  Branch (3970:9): [True: 276, False: 1]
  ------------------
 3971|    276|        return unicode_decode_utf8(s, size,
 3972|    276|                                   fs_codec->error_handler,
 3973|    276|                                   fs_codec->errors,
 3974|    276|                                   NULL);
 3975|    276|    }
 3976|      1|#ifndef _Py_FORCE_UTF8_FS_ENCODING
 3977|      1|    else if (fs_codec->encoding) {
  ------------------
  |  Branch (3977:14): [True: 0, False: 1]
  ------------------
 3978|      0|        return PyUnicode_Decode(s, size,
 3979|      0|                                fs_codec->encoding,
 3980|      0|                                fs_codec->errors);
 3981|      0|    }
 3982|      1|#endif
 3983|      1|    else {
 3984|       |        /* Before _PyUnicode_InitEncodings() is called, the Python codec
 3985|       |           machinery is not ready and so cannot be used:
 3986|       |           use mbstowcs() in this case. */
 3987|      1|        const PyConfig *config = _PyInterpreterState_GetConfig(interp);
 3988|      1|        const wchar_t *filesystem_errors = config->filesystem_errors;
 3989|      1|        assert(filesystem_errors != NULL);
  ------------------
  |  Branch (3989:9): [True: 1, False: 0]
  ------------------
 3990|      1|        _Py_error_handler errors = get_error_handler_wide(filesystem_errors);
 3991|      1|        assert(errors != _Py_ERROR_UNKNOWN);
  ------------------
  |  Branch (3991:9): [True: 1, False: 0]
  ------------------
 3992|       |#ifdef _Py_FORCE_UTF8_FS_ENCODING
 3993|       |        return unicode_decode_utf8(s, size, errors, NULL, NULL);
 3994|       |#else
 3995|      1|        return unicode_decode_locale(s, size, errors, 0);
 3996|      1|#endif
 3997|      1|    }
 3998|    277|}
PyUnicode_AsUTF8AndSize:
 4105|    272|{
 4106|    272|    if (!PyUnicode_Check(unicode)) {
  ------------------
  |  |  103|    272|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|    272|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (4106:9): [True: 0, False: 272]
  ------------------
 4107|      0|        PyErr_BadArgument();
 4108|      0|        if (psize) {
  ------------------
  |  Branch (4108:13): [True: 0, False: 0]
  ------------------
 4109|      0|            *psize = -1;
 4110|      0|        }
 4111|      0|        return NULL;
 4112|      0|    }
 4113|       |
 4114|    272|    if (unicode_ensure_utf8(unicode) == -1) {
  ------------------
  |  Branch (4114:9): [True: 0, False: 272]
  ------------------
 4115|      0|        if (psize) {
  ------------------
  |  Branch (4115:13): [True: 0, False: 0]
  ------------------
 4116|      0|            *psize = -1;
 4117|      0|        }
 4118|      0|        return NULL;
 4119|      0|    }
 4120|       |
 4121|    272|    if (psize) {
  ------------------
  |  Branch (4121:9): [True: 175, False: 97]
  ------------------
 4122|    175|        *psize = PyUnicode_UTF8_LENGTH(unicode);
 4123|    175|    }
 4124|    272|    return PyUnicode_UTF8(unicode);
 4125|    272|}
PyUnicode_AsUTF8:
 4129|     97|{
 4130|       |    return PyUnicode_AsUTF8AndSize(unicode, NULL);
 4131|     97|}
_PyUnicode_AsUTF8NoNUL:
 4135|     35|{
 4136|     35|    Py_ssize_t size;
 4137|     35|    const char *s = PyUnicode_AsUTF8AndSize(unicode, &size);
 4138|     35|    if (s && strlen(s) != (size_t)size) {
  ------------------
  |  Branch (4138:9): [True: 35, False: 0]
  |  Branch (4138:14): [True: 0, False: 35]
  ------------------
 4139|      0|        PyErr_SetString(PyExc_ValueError, "embedded null character");
 4140|      0|        return NULL;
 4141|      0|    }
 4142|     35|    return s;
 4143|     35|}
PyUnicode_GetLength:
 4163|     23|{
 4164|     23|    if (!PyUnicode_Check(unicode)) {
  ------------------
  |  |  103|     23|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     23|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (4164:9): [True: 0, False: 23]
  ------------------
 4165|      0|        PyErr_BadArgument();
 4166|      0|        return -1;
 4167|      0|    }
 4168|     23|    return PyUnicode_GET_LENGTH(unicode);
  ------------------
  |  |  299|     23|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     23|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     23|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4169|     23|}
PyUnicode_DecodeUTF8:
 4864|      1|{
 4865|       |    return PyUnicode_DecodeUTF8Stateful(s, size, errors, NULL);
 4866|      1|}
_PyUnicode_DecodeUTF8Writer:
 5348|     14|{
 5349|     14|    if (size == 0) {
  ------------------
  |  Branch (5349:9): [True: 0, False: 14]
  ------------------
 5350|      0|        if (consumed) {
  ------------------
  |  Branch (5350:13): [True: 0, False: 0]
  ------------------
 5351|      0|            *consumed = 0;
 5352|      0|        }
 5353|      0|        return 0;
 5354|      0|    }
 5355|       |
 5356|       |    // fast path: try ASCII string.
 5357|     14|    if (_PyUnicodeWriter_Prepare(writer, size, 127) < 0) {
  ------------------
  |  |  562|     14|    (((MAXCHAR) <= (WRITER)->maxchar                                  \
  |  |  ------------------
  |  |  |  Branch (562:7): [True: 14, False: 0]
  |  |  ------------------
  |  |  563|     14|      && (LENGTH) <= (WRITER)->size - (WRITER)->pos)                  \
  |  |  ------------------
  |  |  |  Branch (563:10): [True: 14, False: 0]
  |  |  ------------------
  |  |  564|     14|     ? 0                                                              \
  |  |  565|     14|     : (((LENGTH) == 0)                                               \
  |  |  ------------------
  |  |  |  Branch (565:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  566|      0|        ? 0                                                           \
  |  |  567|      0|        : _PyUnicodeWriter_PrepareInternal((WRITER), (LENGTH), (MAXCHAR))))
  ------------------
  |  Branch (5357:9): [True: 0, False: 14]
  ------------------
 5358|      0|        return -1;
 5359|      0|    }
 5360|       |
 5361|     14|    const char *starts = s;
 5362|     14|    const char *end = s + size;
 5363|     14|    Py_ssize_t decoded = 0;
 5364|     14|    Py_UCS1 *dest = (Py_UCS1*)writer->data + writer->pos * writer->kind;
 5365|     14|    if (writer->kind == PyUnicode_1BYTE_KIND) {
  ------------------
  |  Branch (5365:9): [True: 14, False: 0]
  ------------------
 5366|     14|        decoded = ascii_decode(s, end, dest);
 5367|     14|        writer->pos += decoded;
 5368|       |
 5369|     14|        if (decoded == size) {
  ------------------
  |  Branch (5369:13): [True: 14, False: 0]
  ------------------
 5370|     14|            if (consumed) {
  ------------------
  |  Branch (5370:17): [True: 0, False: 14]
  ------------------
 5371|      0|                *consumed = size;
 5372|      0|            }
 5373|     14|            return 0;
 5374|     14|        }
 5375|      0|        s += decoded;
 5376|      0|    }
 5377|       |
 5378|      0|    return unicode_decode_utf8_impl(writer, starts, s, end,
 5379|      0|                                    error_handler, errors, consumed);
 5380|     14|}
PyUnicode_DecodeUTF8Stateful:
 5388|  4.88k|{
 5389|  4.88k|    return unicode_decode_utf8(s, size,
 5390|  4.88k|                               errors ? _Py_ERROR_UNKNOWN : _Py_ERROR_STRICT,
  ------------------
  |  Branch (5390:32): [True: 3, False: 4.87k]
  ------------------
 5391|  4.88k|                               errors, consumed);
 5392|  4.88k|}
_Py_DecodeUTF8Ex:
 5410|      7|{
 5411|      7|    const char *orig_s = s;
 5412|      7|    const char *e;
 5413|      7|    wchar_t *unicode;
 5414|      7|    Py_ssize_t outpos;
 5415|       |
 5416|      7|    int surrogateescape = 0;
 5417|      7|    int surrogatepass = 0;
 5418|      7|    switch (errors)
 5419|      7|    {
 5420|      0|    case _Py_ERROR_STRICT:
  ------------------
  |  Branch (5420:5): [True: 0, False: 7]
  ------------------
 5421|      0|        break;
 5422|      7|    case _Py_ERROR_SURROGATEESCAPE:
  ------------------
  |  Branch (5422:5): [True: 7, False: 0]
  ------------------
 5423|      7|        surrogateescape = 1;
 5424|      7|        break;
 5425|      0|    case _Py_ERROR_SURROGATEPASS:
  ------------------
  |  Branch (5425:5): [True: 0, False: 7]
  ------------------
 5426|      0|        surrogatepass = 1;
 5427|      0|        break;
 5428|      0|    default:
  ------------------
  |  Branch (5428:5): [True: 0, False: 7]
  ------------------
 5429|      0|        return -3;
 5430|      7|    }
 5431|       |
 5432|       |    /* Note: size will always be longer than the resulting Unicode
 5433|       |       character count */
 5434|      7|    if (PY_SSIZE_T_MAX / (Py_ssize_t)sizeof(wchar_t) - 1 < size) {
  ------------------
  |  |  137|      7|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (5434:9): [True: 0, False: 7]
  ------------------
 5435|      0|        return -1;
 5436|      0|    }
 5437|       |
 5438|      7|    unicode = PyMem_RawMalloc((size + 1) * sizeof(wchar_t));
 5439|      7|    if (!unicode) {
  ------------------
  |  Branch (5439:9): [True: 0, False: 7]
  ------------------
 5440|      0|        return -1;
 5441|      0|    }
 5442|       |
 5443|       |    /* Unpack UTF-8 encoded data */
 5444|      7|    e = s + size;
 5445|      7|    outpos = 0;
 5446|      7|    while (s < e) {
  ------------------
  |  Branch (5446:12): [True: 7, False: 0]
  ------------------
 5447|      7|        Py_UCS4 ch;
 5448|      7|#if SIZEOF_WCHAR_T == 4
 5449|      7|        ch = ucs4lib_utf8_decode(&s, e, (Py_UCS4 *)unicode, &outpos);
 5450|       |#else
 5451|       |        ch = ucs2lib_utf8_decode(&s, e, (Py_UCS2 *)unicode, &outpos);
 5452|       |#endif
 5453|      7|        if (ch > 0xFF) {
  ------------------
  |  Branch (5453:13): [True: 0, False: 7]
  ------------------
 5454|      0|#if SIZEOF_WCHAR_T == 4
 5455|      0|            Py_UNREACHABLE();
  ------------------
  |  |  264|      0|#  define Py_UNREACHABLE() __builtin_unreachable()
  ------------------
 5456|       |#else
 5457|       |            assert(ch > 0xFFFF && ch <= MAX_UNICODE);
 5458|       |            /* write a surrogate pair */
 5459|       |            unicode[outpos++] = (wchar_t)Py_UNICODE_HIGH_SURROGATE(ch);
 5460|       |            unicode[outpos++] = (wchar_t)Py_UNICODE_LOW_SURROGATE(ch);
 5461|       |#endif
 5462|      0|        }
 5463|      7|        else {
 5464|      7|            if (!ch && s == e) {
  ------------------
  |  Branch (5464:17): [True: 7, False: 0]
  |  Branch (5464:24): [True: 7, False: 0]
  ------------------
 5465|      7|                break;
 5466|      7|            }
 5467|       |
 5468|      0|            if (surrogateescape) {
  ------------------
  |  Branch (5468:17): [True: 0, False: 0]
  ------------------
 5469|      0|                unicode[outpos++] = 0xDC00 + (unsigned char)*s++;
 5470|      0|            }
 5471|      0|            else {
 5472|       |                /* Is it a valid three-byte code? */
 5473|      0|                if (surrogatepass
  ------------------
  |  Branch (5473:21): [True: 0, False: 0]
  ------------------
 5474|      0|                    && (e - s) >= 3
  ------------------
  |  Branch (5474:24): [True: 0, False: 0]
  ------------------
 5475|      0|                    && (s[0] & 0xf0) == 0xe0
  ------------------
  |  Branch (5475:24): [True: 0, False: 0]
  ------------------
 5476|      0|                    && (s[1] & 0xc0) == 0x80
  ------------------
  |  Branch (5476:24): [True: 0, False: 0]
  ------------------
 5477|      0|                    && (s[2] & 0xc0) == 0x80)
  ------------------
  |  Branch (5477:24): [True: 0, False: 0]
  ------------------
 5478|      0|                {
 5479|      0|                    ch = ((s[0] & 0x0f) << 12) + ((s[1] & 0x3f) << 6) + (s[2] & 0x3f);
 5480|      0|                    s += 3;
 5481|      0|                    unicode[outpos++] = ch;
 5482|      0|                }
 5483|      0|                else {
 5484|      0|                    PyMem_RawFree(unicode );
 5485|      0|                    if (reason != NULL) {
  ------------------
  |  Branch (5485:25): [True: 0, False: 0]
  ------------------
 5486|      0|                        switch (ch) {
 5487|      0|                        case 0:
  ------------------
  |  Branch (5487:25): [True: 0, False: 0]
  ------------------
 5488|      0|                            *reason = "unexpected end of data";
 5489|      0|                            break;
 5490|      0|                        case 1:
  ------------------
  |  Branch (5490:25): [True: 0, False: 0]
  ------------------
 5491|      0|                            *reason = "invalid start byte";
 5492|      0|                            break;
 5493|       |                        /* 2, 3, 4 */
 5494|      0|                        default:
  ------------------
  |  Branch (5494:25): [True: 0, False: 0]
  ------------------
 5495|      0|                            *reason = "invalid continuation byte";
 5496|      0|                            break;
 5497|      0|                        }
 5498|      0|                    }
 5499|      0|                    if (wlen != NULL) {
  ------------------
  |  Branch (5499:25): [True: 0, False: 0]
  ------------------
 5500|      0|                        *wlen = s - orig_s;
 5501|      0|                    }
 5502|      0|                    return -2;
 5503|      0|                }
 5504|      0|            }
 5505|      0|        }
 5506|      7|    }
 5507|      7|    unicode[outpos] = L'\0';
 5508|      7|    if (wlen) {
  ------------------
  |  Branch (5508:9): [True: 7, False: 0]
  ------------------
 5509|      7|        *wlen = outpos;
 5510|      7|    }
 5511|      7|    *wstr = unicode;
 5512|      7|    return 0;
 5513|      7|}
_Py_EncodeUTF8Ex:
 5549|     20|{
 5550|     20|    const Py_ssize_t max_char_size = 4;
 5551|     20|    Py_ssize_t len = wcslen(text);
 5552|       |
 5553|     20|    assert(len >= 0);
  ------------------
  |  Branch (5553:5): [True: 20, False: 0]
  ------------------
 5554|       |
 5555|     20|    int surrogateescape = 0;
 5556|     20|    int surrogatepass = 0;
 5557|     20|    switch (errors)
 5558|     20|    {
 5559|      4|    case _Py_ERROR_STRICT:
  ------------------
  |  Branch (5559:5): [True: 4, False: 16]
  ------------------
 5560|      4|        break;
 5561|     16|    case _Py_ERROR_SURROGATEESCAPE:
  ------------------
  |  Branch (5561:5): [True: 16, False: 4]
  ------------------
 5562|     16|        surrogateescape = 1;
 5563|     16|        break;
 5564|      0|    case _Py_ERROR_SURROGATEPASS:
  ------------------
  |  Branch (5564:5): [True: 0, False: 20]
  ------------------
 5565|      0|        surrogatepass = 1;
 5566|      0|        break;
 5567|      0|    default:
  ------------------
  |  Branch (5567:5): [True: 0, False: 20]
  ------------------
 5568|      0|        return -3;
 5569|     20|    }
 5570|       |
 5571|     20|    if (len > PY_SSIZE_T_MAX / max_char_size - 1) {
  ------------------
  |  |  137|     20|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (5571:9): [True: 0, False: 20]
  ------------------
 5572|      0|        return -1;
 5573|      0|    }
 5574|     20|    char *bytes;
 5575|     20|    if (raw_malloc) {
  ------------------
  |  Branch (5575:9): [True: 20, False: 0]
  ------------------
 5576|     20|        bytes = PyMem_RawMalloc((len + 1) * max_char_size);
 5577|     20|    }
 5578|      0|    else {
 5579|      0|        bytes = PyMem_Malloc((len + 1) * max_char_size);
 5580|      0|    }
 5581|     20|    if (bytes == NULL) {
  ------------------
  |  Branch (5581:9): [True: 0, False: 20]
  ------------------
 5582|      0|        return -1;
 5583|      0|    }
 5584|       |
 5585|     20|    char *p = bytes;
 5586|     20|    Py_ssize_t i;
 5587|    927|    for (i = 0; i < len; ) {
  ------------------
  |  Branch (5587:17): [True: 907, False: 20]
  ------------------
 5588|    907|        Py_ssize_t ch_pos = i;
 5589|    907|        Py_UCS4 ch = text[i];
 5590|    907|        i++;
 5591|    907|        if (sizeof(wchar_t) == 2
  ------------------
  |  Branch (5591:13): [Folded, False: 907]
  ------------------
 5592|      0|            && Py_UNICODE_IS_HIGH_SURROGATE(ch)
  ------------------
  |  Branch (5592:16): [True: 0, False: 0]
  ------------------
 5593|      0|            && i < len
  ------------------
  |  Branch (5593:16): [True: 0, False: 0]
  ------------------
 5594|      0|            && Py_UNICODE_IS_LOW_SURROGATE(text[i]))
  ------------------
  |  Branch (5594:16): [True: 0, False: 0]
  ------------------
 5595|      0|        {
 5596|      0|            ch = Py_UNICODE_JOIN_SURROGATES(ch, text[i]);
 5597|      0|            i++;
 5598|      0|        }
 5599|       |
 5600|    907|        if (ch < 0x80) {
  ------------------
  |  Branch (5600:13): [True: 907, False: 0]
  ------------------
 5601|       |            /* Encode ASCII */
 5602|    907|            *p++ = (char) ch;
 5603|       |
 5604|    907|        }
 5605|      0|        else if (ch < 0x0800) {
  ------------------
  |  Branch (5605:18): [True: 0, False: 0]
  ------------------
 5606|       |            /* Encode Latin-1 */
 5607|      0|            *p++ = (char)(0xc0 | (ch >> 6));
 5608|      0|            *p++ = (char)(0x80 | (ch & 0x3f));
 5609|      0|        }
 5610|      0|        else if (Py_UNICODE_IS_SURROGATE(ch) && !surrogatepass) {
  ------------------
  |  Branch (5610:18): [True: 0, False: 0]
  |  Branch (5610:49): [True: 0, False: 0]
  ------------------
 5611|       |            /* surrogateescape error handler */
 5612|      0|            if (!surrogateescape || !(0xDC80 <= ch && ch <= 0xDCFF)) {
  ------------------
  |  Branch (5612:17): [True: 0, False: 0]
  |  Branch (5612:39): [True: 0, False: 0]
  |  Branch (5612:55): [True: 0, False: 0]
  ------------------
 5613|      0|                if (error_pos != NULL) {
  ------------------
  |  Branch (5613:21): [True: 0, False: 0]
  ------------------
 5614|      0|                    *error_pos = (size_t)ch_pos;
 5615|      0|                }
 5616|      0|                if (reason != NULL) {
  ------------------
  |  Branch (5616:21): [True: 0, False: 0]
  ------------------
 5617|      0|                    *reason = "encoding error";
 5618|      0|                }
 5619|      0|                if (raw_malloc) {
  ------------------
  |  Branch (5619:21): [True: 0, False: 0]
  ------------------
 5620|      0|                    PyMem_RawFree(bytes);
 5621|      0|                }
 5622|      0|                else {
 5623|      0|                    PyMem_Free(bytes);
 5624|      0|                }
 5625|      0|                return -2;
 5626|      0|            }
 5627|      0|            *p++ = (char)(ch & 0xff);
 5628|      0|        }
 5629|      0|        else if (ch < 0x10000) {
  ------------------
  |  Branch (5629:18): [True: 0, False: 0]
  ------------------
 5630|      0|            *p++ = (char)(0xe0 | (ch >> 12));
 5631|      0|            *p++ = (char)(0x80 | ((ch >> 6) & 0x3f));
 5632|      0|            *p++ = (char)(0x80 | (ch & 0x3f));
 5633|      0|        }
 5634|      0|        else {  /* ch >= 0x10000 */
 5635|      0|            assert(ch <= MAX_UNICODE);
  ------------------
  |  Branch (5635:13): [True: 0, False: 0]
  ------------------
 5636|       |            /* Encode UCS4 Unicode ordinals */
 5637|      0|            *p++ = (char)(0xf0 | (ch >> 18));
 5638|      0|            *p++ = (char)(0x80 | ((ch >> 12) & 0x3f));
 5639|      0|            *p++ = (char)(0x80 | ((ch >> 6) & 0x3f));
 5640|      0|            *p++ = (char)(0x80 | (ch & 0x3f));
 5641|      0|        }
 5642|    907|    }
 5643|     20|    *p++ = '\0';
 5644|       |
 5645|     20|    size_t final_size = (p - bytes);
 5646|     20|    char *bytes2;
 5647|     20|    if (raw_malloc) {
  ------------------
  |  Branch (5647:9): [True: 20, False: 0]
  ------------------
 5648|     20|        bytes2 = PyMem_RawRealloc(bytes, final_size);
 5649|     20|    }
 5650|      0|    else {
 5651|      0|        bytes2 = PyMem_Realloc(bytes, final_size);
 5652|      0|    }
 5653|     20|    if (bytes2 == NULL) {
  ------------------
  |  Branch (5653:9): [True: 0, False: 20]
  ------------------
 5654|      0|        if (error_pos != NULL) {
  ------------------
  |  Branch (5654:13): [True: 0, False: 0]
  ------------------
 5655|      0|            *error_pos = (size_t)-1;
 5656|      0|        }
 5657|      0|        if (raw_malloc) {
  ------------------
  |  Branch (5657:13): [True: 0, False: 0]
  ------------------
 5658|      0|            PyMem_RawFree(bytes);
 5659|      0|        }
 5660|      0|        else {
 5661|      0|            PyMem_Free(bytes);
 5662|      0|        }
 5663|      0|        return -1;
 5664|      0|    }
 5665|     20|    *str = bytes2;
 5666|     20|    return 0;
 5667|     20|}
_PyUnicode_AsUTF8String:
 5776|      3|{
 5777|      3|    return unicode_encode_utf8(unicode, _Py_ERROR_UNKNOWN, errors);
 5778|      3|}
PyUnicode_DecodeASCII:
 7395|     32|{
 7396|     32|    const char *starts = s;
 7397|     32|    const char *e = s + size;
 7398|     32|    PyObject *error_handler_obj = NULL;
 7399|     32|    PyObject *exc = NULL;
 7400|     32|    _Py_error_handler error_handler = _Py_ERROR_UNKNOWN;
 7401|       |
 7402|     32|    if (size == 0)
  ------------------
  |  Branch (7402:9): [True: 0, False: 32]
  ------------------
 7403|      0|        _Py_RETURN_UNICODE_EMPTY();
  ------------------
  |  |  375|      0|    do {                             \
  |  |  376|      0|        return _PyUnicode_GetEmpty();\
  |  |  377|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (377:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 7404|       |
 7405|       |    /* ASCII is equivalent to the first 128 ordinals in Unicode. */
 7406|     32|    if (size == 1 && (unsigned char)s[0] < 128) {
  ------------------
  |  Branch (7406:9): [True: 0, False: 32]
  |  Branch (7406:22): [True: 0, False: 0]
  ------------------
 7407|      0|        return get_latin1_char((unsigned char)s[0]);
 7408|      0|    }
 7409|       |
 7410|       |    // Shortcut for simple case
 7411|     32|    PyObject *u = PyUnicode_New(size, 127);
 7412|     32|    if (u == NULL) {
  ------------------
  |  Branch (7412:9): [True: 0, False: 32]
  ------------------
 7413|      0|        return NULL;
 7414|      0|    }
 7415|     32|    Py_ssize_t outpos = ascii_decode(s, e, PyUnicode_1BYTE_DATA(u));
  ------------------
  |  |  291|     32|#define PyUnicode_1BYTE_DATA(op) _Py_STATIC_CAST(Py_UCS1*, PyUnicode_DATA(op))
  |  |  ------------------
  |  |  |  |   34|     32|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
 7416|     32|    if (outpos == size) {
  ------------------
  |  Branch (7416:9): [True: 32, False: 0]
  ------------------
 7417|     32|        return u;
 7418|     32|    }
 7419|       |
 7420|      0|    _PyUnicodeWriter writer;
 7421|      0|    _PyUnicodeWriter_InitWithBuffer(&writer, u);
 7422|      0|    writer.pos = outpos;
 7423|       |
 7424|      0|    s += outpos;
 7425|      0|    int kind = writer.kind;
 7426|      0|    void *data = writer.data;
 7427|      0|    Py_ssize_t startinpos, endinpos;
 7428|       |
 7429|      0|    while (s < e) {
  ------------------
  |  Branch (7429:12): [True: 0, False: 0]
  ------------------
 7430|      0|        unsigned char c = (unsigned char)*s;
 7431|      0|        if (c < 128) {
  ------------------
  |  Branch (7431:13): [True: 0, False: 0]
  ------------------
 7432|      0|            PyUnicode_WRITE(kind, data, writer.pos, c);
  ------------------
  |  |  335|      0|    PyUnicode_WRITE(_Py_STATIC_CAST(int, kind), _Py_CAST(void*, data), \
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |                   PyUnicode_WRITE(_Py_STATIC_CAST(int, kind), _Py_CAST(void*, data), \
  |  |  ------------------
  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  336|      0|                    (index), _Py_STATIC_CAST(Py_UCS4, value))
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
 7433|      0|            writer.pos++;
 7434|      0|            ++s;
 7435|      0|            continue;
 7436|      0|        }
 7437|       |
 7438|       |        /* byte outsize range 0x00..0x7f: call the error handler */
 7439|       |
 7440|      0|        if (error_handler == _Py_ERROR_UNKNOWN)
  ------------------
  |  Branch (7440:13): [True: 0, False: 0]
  ------------------
 7441|      0|            error_handler = _Py_GetErrorHandler(errors);
 7442|       |
 7443|      0|        switch (error_handler)
 7444|      0|        {
 7445|      0|        case _Py_ERROR_REPLACE:
  ------------------
  |  Branch (7445:9): [True: 0, False: 0]
  ------------------
 7446|      0|        case _Py_ERROR_SURROGATEESCAPE:
  ------------------
  |  Branch (7446:9): [True: 0, False: 0]
  ------------------
 7447|       |            /* Fast-path: the error handler only writes one character,
 7448|       |               but we may switch to UCS2 at the first write */
 7449|      0|            if (_PyUnicodeWriter_PrepareKind(&writer, PyUnicode_2BYTE_KIND) < 0)
  ------------------
  |  |  582|      0|    ((KIND) <= (WRITER)->kind                                         \
  |  |  ------------------
  |  |  |  Branch (582:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  583|      0|     ? 0                                                              \
  |  |  584|      0|     : _PyUnicodeWriter_PrepareKindInternal((WRITER), (KIND)))
  ------------------
  |  Branch (7449:17): [True: 0, False: 0]
  ------------------
 7450|      0|                goto onError;
 7451|      0|            kind = writer.kind;
 7452|      0|            data = writer.data;
 7453|       |
 7454|      0|            if (error_handler == _Py_ERROR_REPLACE)
  ------------------
  |  Branch (7454:17): [True: 0, False: 0]
  ------------------
 7455|      0|                PyUnicode_WRITE(kind, data, writer.pos, 0xfffd);
  ------------------
  |  |  335|      0|    PyUnicode_WRITE(_Py_STATIC_CAST(int, kind), _Py_CAST(void*, data), \
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |                   PyUnicode_WRITE(_Py_STATIC_CAST(int, kind), _Py_CAST(void*, data), \
  |  |  ------------------
  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  336|      0|                    (index), _Py_STATIC_CAST(Py_UCS4, value))
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
 7456|      0|            else
 7457|      0|                PyUnicode_WRITE(kind, data, writer.pos, c + 0xdc00);
  ------------------
  |  |  335|      0|    PyUnicode_WRITE(_Py_STATIC_CAST(int, kind), _Py_CAST(void*, data), \
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |                   PyUnicode_WRITE(_Py_STATIC_CAST(int, kind), _Py_CAST(void*, data), \
  |  |  ------------------
  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  336|      0|                    (index), _Py_STATIC_CAST(Py_UCS4, value))
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
 7458|      0|            writer.pos++;
 7459|      0|            ++s;
 7460|      0|            break;
 7461|       |
 7462|      0|        case _Py_ERROR_IGNORE:
  ------------------
  |  Branch (7462:9): [True: 0, False: 0]
  ------------------
 7463|      0|            ++s;
 7464|      0|            break;
 7465|       |
 7466|      0|        default:
  ------------------
  |  Branch (7466:9): [True: 0, False: 0]
  ------------------
 7467|      0|            startinpos = s-starts;
 7468|      0|            endinpos = startinpos + 1;
 7469|      0|            if (unicode_decode_call_errorhandler_writer(
  ------------------
  |  Branch (7469:17): [True: 0, False: 0]
  ------------------
 7470|      0|                    errors, &error_handler_obj,
 7471|      0|                    "ascii", "ordinal not in range(128)",
 7472|      0|                    &starts, &e, &startinpos, &endinpos, &exc, &s,
 7473|      0|                    &writer))
 7474|      0|                goto onError;
 7475|      0|            kind = writer.kind;
 7476|      0|            data = writer.data;
 7477|      0|        }
 7478|      0|    }
 7479|      0|    Py_XDECREF(error_handler_obj);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7480|      0|    Py_XDECREF(exc);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7481|      0|    return _PyUnicodeWriter_Finish(&writer);
 7482|       |
 7483|      0|  onError:
 7484|      0|    _PyUnicodeWriter_Dealloc(&writer);
 7485|      0|    Py_XDECREF(error_handler_obj);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7486|      0|    Py_XDECREF(exc);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7487|       |    return NULL;
 7488|      0|}
_PyUnicode_AsASCIIString:
 7492|     12|{
 7493|     12|    if (!PyUnicode_Check(unicode)) {
  ------------------
  |  |  103|     12|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     12|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (7493:9): [True: 0, False: 12]
  ------------------
 7494|      0|        PyErr_BadArgument();
 7495|      0|        return NULL;
 7496|      0|    }
 7497|       |    /* Fast path: if it is an ASCII-only string, construct bytes object
 7498|       |       directly. Else defer to above function to raise the exception. */
 7499|     12|    if (PyUnicode_IS_ASCII(unicode))
  ------------------
  |  |  227|     12|#define PyUnicode_IS_ASCII(op) PyUnicode_IS_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     12|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     12|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (227:32): [True: 12, False: 0]
  |  |  ------------------
  ------------------
 7500|     12|        return PyBytes_FromStringAndSize(PyUnicode_DATA(unicode),
  ------------------
  |  |  284|     12|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     12|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     12|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7501|     12|                                         PyUnicode_GET_LENGTH(unicode));
  ------------------
  |  |  299|     12|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     12|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     12|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7502|      0|    return unicode_encode_ucs1(unicode, errors, 128);
 7503|     12|}
PyUnicode_FindChar:
 9634|     95|{
 9635|     95|    int kind;
 9636|     95|    Py_ssize_t len, result;
 9637|     95|    len = PyUnicode_GET_LENGTH(str);
  ------------------
  |  |  299|     95|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     95|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     95|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9638|     95|    ADJUST_INDICES(start, end, len);
  ------------------
  |  | 9503|     95|    do {                                \
  |  | 9504|     95|        if (end > len) {                \
  |  |  ------------------
  |  |  |  Branch (9504:13): [True: 0, False: 95]
  |  |  ------------------
  |  | 9505|      0|            end = len;                  \
  |  | 9506|      0|        }                               \
  |  | 9507|     95|        else if (end < 0) {             \
  |  |  ------------------
  |  |  |  Branch (9507:18): [True: 0, False: 95]
  |  |  ------------------
  |  | 9508|      0|            end += len;                 \
  |  | 9509|      0|            if (end < 0) {              \
  |  |  ------------------
  |  |  |  Branch (9509:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 9510|      0|                end = 0;                \
  |  | 9511|      0|            }                           \
  |  | 9512|      0|        }                               \
  |  | 9513|     95|        if (start < 0) {                \
  |  |  ------------------
  |  |  |  Branch (9513:13): [True: 0, False: 95]
  |  |  ------------------
  |  | 9514|      0|            start += len;               \
  |  | 9515|      0|            if (start < 0) {            \
  |  |  ------------------
  |  |  |  Branch (9515:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 9516|      0|                start = 0;              \
  |  | 9517|      0|            }                           \
  |  | 9518|      0|        }                               \
  |  | 9519|     95|    } while (0)
  |  |  ------------------
  |  |  |  Branch (9519:14): [Folded, False: 95]
  |  |  ------------------
  ------------------
 9639|     95|    if (end - start < 1)
  ------------------
  |  Branch (9639:9): [True: 0, False: 95]
  ------------------
 9640|      0|        return -1;
 9641|     95|    kind = PyUnicode_KIND(str);
  ------------------
  |  |  258|     95|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|    190|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 95, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9642|     95|    result = findchar(PyUnicode_1BYTE_DATA(str) + kind*start,
  ------------------
  |  |  291|     95|#define PyUnicode_1BYTE_DATA(op) _Py_STATIC_CAST(Py_UCS1*, PyUnicode_DATA(op))
  |  |  ------------------
  |  |  |  |   34|     95|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
 9643|     95|                      kind, end-start, ch, direction);
 9644|     95|    if (result == -1)
  ------------------
  |  Branch (9644:9): [True: 86, False: 9]
  ------------------
 9645|     86|        return -1;
 9646|      9|    else
 9647|      9|        return start + result;
 9648|     95|}
PyUnicode_Join:
 9960|     41|{
 9961|     41|    PyObject *res;
 9962|     41|    PyObject *fseq;
 9963|     41|    Py_ssize_t seqlen;
 9964|     41|    PyObject **items;
 9965|       |
 9966|     41|    fseq = PySequence_Fast(seq, "can only join an iterable");
 9967|     41|    if (fseq == NULL) {
  ------------------
  |  Branch (9967:9): [True: 0, False: 41]
  ------------------
 9968|      0|        return NULL;
 9969|      0|    }
 9970|       |
 9971|     41|    Py_BEGIN_CRITICAL_SECTION_SEQUENCE_FAST(seq);
  ------------------
  |  |   77|     41|# define Py_BEGIN_CRITICAL_SECTION_SEQUENCE_FAST(original) {
  ------------------
 9972|       |
 9973|     41|    items = PySequence_Fast_ITEMS(fseq);
  ------------------
  |  |  102|     41|    (PyList_Check(sf) ? ((PyListObject *)(sf))->ob_item \
  |  |  ------------------
  |  |  |  |   25|     41|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LIST_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|     41|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (760:41): [True: 41, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|     41|                      : ((PyTupleObject *)(sf))->ob_item)
  ------------------
 9974|     41|    seqlen = PySequence_Fast_GET_SIZE(fseq);
  ------------------
  |  |   92|     41|    (PyList_Check(o) ? PyList_GET_SIZE(o) : PyTuple_GET_SIZE(o))
  |  |  ------------------
  |  |  |  |   25|     41|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LIST_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|     41|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (760:41): [True: 41, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (PyList_Check(o) ? PyList_GET_SIZE(o) : PyTuple_GET_SIZE(o))
  |  |  ------------------
  |  |  |  |   38|     41|#define PyList_GET_SIZE(op) PyList_GET_SIZE(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     41|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     41|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (PyList_Check(o) ? PyList_GET_SIZE(o) : PyTuple_GET_SIZE(o))
  |  |  ------------------
  |  |  |  |   27|      0|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9975|     41|    res = _PyUnicode_JoinArray(separator, items, seqlen);
 9976|       |
 9977|     41|    Py_END_CRITICAL_SECTION_SEQUENCE_FAST();
  ------------------
  |  |   78|     41|# define Py_END_CRITICAL_SECTION_SEQUENCE_FAST() }
  ------------------
 9978|       |
 9979|     41|    Py_DECREF(fseq);
  ------------------
  |  |  430|     41|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     41|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     41|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9980|     41|    return res;
 9981|     41|}
_PyUnicode_JoinArray:
 9985|     72|{
 9986|     72|    PyObject *res = NULL; /* the result */
 9987|     72|    PyObject *sep = NULL;
 9988|     72|    Py_ssize_t seplen;
 9989|     72|    PyObject *item;
 9990|     72|    Py_ssize_t sz, i, res_offset;
 9991|     72|    Py_UCS4 maxchar;
 9992|     72|    Py_UCS4 item_maxchar;
 9993|     72|    int use_memcpy;
 9994|     72|    unsigned char *res_data = NULL, *sep_data = NULL;
 9995|     72|    PyObject *last_obj;
 9996|     72|    int kind = 0;
 9997|       |
 9998|       |    /* If empty sequence, return u"". */
 9999|     72|    if (seqlen == 0) {
  ------------------
  |  Branch (9999:9): [True: 0, False: 72]
  ------------------
10000|      0|        _Py_RETURN_UNICODE_EMPTY();
  ------------------
  |  |  375|      0|    do {                             \
  |  |  376|      0|        return _PyUnicode_GetEmpty();\
  |  |  377|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (377:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
10001|      0|    }
10002|       |
10003|       |    /* If singleton sequence with an exact Unicode, return that. */
10004|     72|    last_obj = NULL;
10005|     72|    if (seqlen == 1) {
  ------------------
  |  Branch (10005:9): [True: 3, False: 69]
  ------------------
10006|      3|        if (PyUnicode_CheckExact(items[0])) {
  ------------------
  |  |  104|      3|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  ------------------
  |  |  |  |  215|      3|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 3, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10007|      3|            res = items[0];
10008|      3|            return Py_NewRef(res);
  ------------------
  |  |  550|      3|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10009|      3|        }
10010|      0|        seplen = 0;
10011|      0|        maxchar = 0;
10012|      0|    }
10013|     69|    else {
10014|       |        /* Set up sep and seplen */
10015|     69|        if (separator == NULL) {
  ------------------
  |  Branch (10015:13): [True: 0, False: 69]
  ------------------
10016|       |            /* fall back to a blank space separator */
10017|      0|            sep = PyUnicode_FromOrdinal(' ');
10018|      0|            if (!sep)
  ------------------
  |  Branch (10018:17): [True: 0, False: 0]
  ------------------
10019|      0|                goto onError;
10020|      0|            seplen = 1;
10021|      0|            maxchar = 32;
10022|      0|        }
10023|     69|        else {
10024|     69|            if (!PyUnicode_Check(separator)) {
  ------------------
  |  |  103|     69|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     69|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (10024:17): [True: 0, False: 69]
  ------------------
10025|      0|                PyErr_Format(PyExc_TypeError,
10026|      0|                             "separator: expected str instance,"
10027|      0|                             " %.80s found",
10028|      0|                             Py_TYPE(separator)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10029|      0|                goto onError;
10030|      0|            }
10031|     69|            sep = separator;
10032|     69|            seplen = PyUnicode_GET_LENGTH(separator);
  ------------------
  |  |  299|     69|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     69|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     69|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10033|     69|            maxchar = PyUnicode_MAX_CHAR_VALUE(separator);
  ------------------
  |  |  405|     69|    PyUnicode_MAX_CHAR_VALUE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     69|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     69|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10034|       |            /* inc refcount to keep this code path symmetric with the
10035|       |               above case of a blank separator */
10036|     69|            Py_INCREF(sep);
  ------------------
  |  |  310|     69|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     69|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     69|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10037|     69|        }
10038|     69|        last_obj = sep;
10039|     69|    }
10040|       |
10041|       |    /* There are at least two things to join, or else we have a subclass
10042|       |     * of str in the sequence.
10043|       |     * Do a pre-pass to figure out the total amount of space we'll
10044|       |     * need (sz), and see whether all argument are strings.
10045|       |     */
10046|     69|    sz = 0;
10047|       |#ifdef Py_DEBUG
10048|       |    use_memcpy = 0;
10049|       |#else
10050|     69|    use_memcpy = 1;
10051|     69|#endif
10052|    259|    for (i = 0; i < seqlen; i++) {
  ------------------
  |  Branch (10052:17): [True: 190, False: 69]
  ------------------
10053|    190|        size_t add_sz;
10054|    190|        item = items[i];
10055|    190|        if (!PyUnicode_Check(item)) {
  ------------------
  |  |  103|    190|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|    190|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (10055:13): [True: 0, False: 190]
  ------------------
10056|      0|            PyErr_Format(PyExc_TypeError,
10057|      0|                         "sequence item %zd: expected str instance,"
10058|      0|                         " %.80s found",
10059|      0|                         i, Py_TYPE(item)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10060|      0|            goto onError;
10061|      0|        }
10062|    190|        add_sz = PyUnicode_GET_LENGTH(item);
  ------------------
  |  |  299|    190|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    190|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    190|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10063|    190|        item_maxchar = PyUnicode_MAX_CHAR_VALUE(item);
  ------------------
  |  |  405|    190|    PyUnicode_MAX_CHAR_VALUE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    190|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    190|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10064|    190|        maxchar = Py_MAX(maxchar, item_maxchar);
  ------------------
  |  |  115|    190|#define Py_MAX(x, y) (((x) > (y)) ? (x) : (y))
  |  |  ------------------
  |  |  |  Branch (115:23): [True: 0, False: 190]
  |  |  ------------------
  ------------------
10065|    190|        if (i != 0) {
  ------------------
  |  Branch (10065:13): [True: 121, False: 69]
  ------------------
10066|    121|            add_sz += seplen;
10067|    121|        }
10068|    190|        if (add_sz > (size_t)(PY_SSIZE_T_MAX - sz)) {
  ------------------
  |  |  137|    190|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (10068:13): [True: 0, False: 190]
  ------------------
10069|      0|            PyErr_SetString(PyExc_OverflowError,
10070|      0|                            "join() result is too long for a Python string");
10071|      0|            goto onError;
10072|      0|        }
10073|    190|        sz += add_sz;
10074|    190|        if (use_memcpy && last_obj != NULL) {
  ------------------
  |  Branch (10074:13): [True: 190, False: 0]
  |  Branch (10074:27): [True: 190, False: 0]
  ------------------
10075|    380|            if (PyUnicode_KIND(last_obj) != PyUnicode_KIND(item))
  ------------------
  |  |  258|    190|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|    380|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 190, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                          if (PyUnicode_KIND(last_obj) != PyUnicode_KIND(item))
  ------------------
  |  |  258|    190|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|    380|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 190, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (10075:17): [True: 0, False: 190]
  ------------------
10076|      0|                use_memcpy = 0;
10077|    190|        }
10078|      0|        last_obj = item;
10079|    190|    }
10080|       |
10081|     69|    res = PyUnicode_New(sz, maxchar);
10082|     69|    if (res == NULL)
  ------------------
  |  Branch (10082:9): [True: 0, False: 69]
  ------------------
10083|      0|        goto onError;
10084|       |
10085|       |    /* Catenate everything. */
10086|       |#ifdef Py_DEBUG
10087|       |    use_memcpy = 0;
10088|       |#else
10089|     69|    if (use_memcpy) {
  ------------------
  |  Branch (10089:9): [True: 69, False: 0]
  ------------------
10090|     69|        res_data = PyUnicode_1BYTE_DATA(res);
  ------------------
  |  |  291|     69|#define PyUnicode_1BYTE_DATA(op) _Py_STATIC_CAST(Py_UCS1*, PyUnicode_DATA(op))
  |  |  ------------------
  |  |  |  |   34|     69|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
10091|     69|        kind = PyUnicode_KIND(res);
  ------------------
  |  |  258|     69|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|    138|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 69, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10092|     69|        if (seplen != 0)
  ------------------
  |  Branch (10092:13): [True: 38, False: 31]
  ------------------
10093|     38|            sep_data = PyUnicode_1BYTE_DATA(sep);
  ------------------
  |  |  291|     38|#define PyUnicode_1BYTE_DATA(op) _Py_STATIC_CAST(Py_UCS1*, PyUnicode_DATA(op))
  |  |  ------------------
  |  |  |  |   34|     38|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
10094|     69|    }
10095|     69|#endif
10096|     69|    if (use_memcpy) {
  ------------------
  |  Branch (10096:9): [True: 69, False: 0]
  ------------------
10097|    259|        for (i = 0; i < seqlen; ++i) {
  ------------------
  |  Branch (10097:21): [True: 190, False: 69]
  ------------------
10098|    190|            Py_ssize_t itemlen;
10099|    190|            item = items[i];
10100|       |
10101|       |            /* Copy item, and maybe the separator. */
10102|    190|            if (i && seplen != 0) {
  ------------------
  |  Branch (10102:17): [True: 121, False: 69]
  |  Branch (10102:22): [True: 38, False: 83]
  ------------------
10103|     38|                memcpy(res_data,
10104|     38|                          sep_data,
10105|     38|                          kind * seplen);
10106|     38|                res_data += kind * seplen;
10107|     38|            }
10108|       |
10109|    190|            itemlen = PyUnicode_GET_LENGTH(item);
  ------------------
  |  |  299|    190|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    190|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    190|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10110|    190|            if (itemlen != 0) {
  ------------------
  |  Branch (10110:17): [True: 185, False: 5]
  ------------------
10111|    185|                memcpy(res_data,
10112|    185|                          PyUnicode_DATA(item),
  ------------------
  |  |  284|    185|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    185|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    185|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10113|    185|                          kind * itemlen);
10114|    185|                res_data += kind * itemlen;
10115|    185|            }
10116|    190|        }
10117|     69|        assert(res_data == PyUnicode_1BYTE_DATA(res)
  ------------------
  |  Branch (10117:9): [True: 69, False: 0]
  ------------------
10118|     69|                           + kind * PyUnicode_GET_LENGTH(res));
10119|     69|    }
10120|      0|    else {
10121|      0|        for (i = 0, res_offset = 0; i < seqlen; ++i) {
  ------------------
  |  Branch (10121:37): [True: 0, False: 0]
  ------------------
10122|      0|            Py_ssize_t itemlen;
10123|      0|            item = items[i];
10124|       |
10125|       |            /* Copy item, and maybe the separator. */
10126|      0|            if (i && seplen != 0) {
  ------------------
  |  Branch (10126:17): [True: 0, False: 0]
  |  Branch (10126:22): [True: 0, False: 0]
  ------------------
10127|      0|                _PyUnicode_FastCopyCharacters(res, res_offset, sep, 0, seplen);
10128|      0|                res_offset += seplen;
10129|      0|            }
10130|       |
10131|      0|            itemlen = PyUnicode_GET_LENGTH(item);
  ------------------
  |  |  299|      0|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10132|      0|            if (itemlen != 0) {
  ------------------
  |  Branch (10132:17): [True: 0, False: 0]
  ------------------
10133|      0|                _PyUnicode_FastCopyCharacters(res, res_offset, item, 0, itemlen);
10134|      0|                res_offset += itemlen;
10135|      0|            }
10136|      0|        }
10137|      0|        assert(res_offset == PyUnicode_GET_LENGTH(res));
  ------------------
  |  Branch (10137:9): [True: 0, False: 0]
  ------------------
10138|      0|    }
10139|       |
10140|     69|    Py_XDECREF(sep);
  ------------------
  |  |  524|     69|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     69|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     69|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10141|     69|    assert(_PyUnicode_CheckConsistency(res, 1));
  ------------------
  |  Branch (10141:5): [True: 69, False: 0]
  ------------------
10142|     69|    return res;
10143|       |
10144|      0|  onError:
10145|      0|    Py_XDECREF(sep);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10146|      0|    Py_XDECREF(res);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10147|       |    return NULL;
10148|     69|}
_PyUnicode_Equal:
11018|    422|{
11019|    422|    assert(PyUnicode_Check(str1));
  ------------------
  |  Branch (11019:5): [True: 422, False: 0]
  ------------------
11020|    422|    assert(PyUnicode_Check(str2));
  ------------------
  |  Branch (11020:5): [True: 422, False: 0]
  ------------------
11021|    422|    if (str1 == str2) {
  ------------------
  |  Branch (11021:9): [True: 20, False: 402]
  ------------------
11022|     20|        return 1;
11023|     20|    }
11024|    402|    return unicode_eq(str1, str2);
11025|    422|}
PyUnicode_CompareWithASCIIString:
11065|    233|{
11066|    233|    Py_ssize_t i;
11067|    233|    int kind;
11068|    233|    Py_UCS4 chr;
11069|       |
11070|    233|    assert(_PyUnicode_CHECK(uni));
  ------------------
  |  Branch (11070:5): [True: 233, False: 0]
  ------------------
11071|    233|    kind = PyUnicode_KIND(uni);
  ------------------
  |  |  258|    233|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|    466|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 233, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11072|    233|    if (kind == PyUnicode_1BYTE_KIND) {
  ------------------
  |  Branch (11072:9): [True: 233, False: 0]
  ------------------
11073|    233|        const void *data = PyUnicode_1BYTE_DATA(uni);
  ------------------
  |  |  291|    233|#define PyUnicode_1BYTE_DATA(op) _Py_STATIC_CAST(Py_UCS1*, PyUnicode_DATA(op))
  |  |  ------------------
  |  |  |  |   34|    233|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
11074|    233|        size_t len1 = (size_t)PyUnicode_GET_LENGTH(uni);
  ------------------
  |  |  299|    233|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    233|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    233|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11075|    233|        size_t len, len2 = strlen(str);
11076|    233|        int cmp;
11077|       |
11078|    233|        len = Py_MIN(len1, len2);
  ------------------
  |  |  112|    233|#define Py_MIN(x, y) (((x) > (y)) ? (y) : (x))
  |  |  ------------------
  |  |  |  Branch (112:23): [True: 77, False: 156]
  |  |  ------------------
  ------------------
11079|    233|        cmp = memcmp(data, str, len);
11080|    233|        if (cmp != 0) {
  ------------------
  |  Branch (11080:13): [True: 229, False: 4]
  ------------------
11081|    229|            if (cmp < 0)
  ------------------
  |  Branch (11081:17): [True: 29, False: 200]
  ------------------
11082|     29|                return -1;
11083|    200|            else
11084|    200|                return 1;
11085|    229|        }
11086|      4|        if (len1 > len2)
  ------------------
  |  Branch (11086:13): [True: 0, False: 4]
  ------------------
11087|      0|            return 1; /* uni is longer */
11088|      4|        if (len1 < len2)
  ------------------
  |  Branch (11088:13): [True: 0, False: 4]
  ------------------
11089|      0|            return -1; /* str is longer */
11090|      4|        return 0;
11091|      4|    }
11092|      0|    else {
11093|      0|        const void *data = PyUnicode_DATA(uni);
  ------------------
  |  |  284|      0|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11094|       |        /* Compare Unicode string and source character set string */
11095|      0|        for (i = 0; (chr = PyUnicode_READ(kind, data, i)) && str[i]; i++)
  ------------------
  |  |  354|      0|    PyUnicode_READ(_Py_STATIC_CAST(int, kind), \
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  355|      0|                   _Py_STATIC_CAST(const void*, data), \
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  356|      0|                   (index))
  ------------------
  |  Branch (11095:21): [True: 0, False: 0]
  |  Branch (11095:62): [True: 0, False: 0]
  ------------------
11096|      0|            if (chr != (unsigned char)str[i])
  ------------------
  |  Branch (11096:17): [True: 0, False: 0]
  ------------------
11097|      0|                return (chr < (unsigned char)(str[i])) ? -1 : 1;
  ------------------
  |  Branch (11097:24): [True: 0, False: 0]
  ------------------
11098|       |        /* This check keeps Python strings that end in '\0' from comparing equal
11099|       |         to C strings identical up to that point. */
11100|      0|        if (PyUnicode_GET_LENGTH(uni) != i || chr)
  ------------------
  |  |  299|      0|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (11100:13): [True: 0, False: 0]
  |  Branch (11100:47): [True: 0, False: 0]
  ------------------
11101|      0|            return 1; /* uni is longer */
11102|      0|        if (str[i])
  ------------------
  |  Branch (11102:13): [True: 0, False: 0]
  ------------------
11103|      0|            return -1; /* str is longer */
11104|      0|        return 0;
11105|      0|    }
11106|    233|}
_PyUnicode_EqualToASCIIString:
11186|  1.05k|{
11187|  1.05k|    size_t len;
11188|  1.05k|    assert(_PyUnicode_CHECK(unicode));
  ------------------
  |  Branch (11188:5): [True: 1.05k, False: 0]
  ------------------
11189|  1.05k|    assert(str);
  ------------------
  |  Branch (11189:5): [True: 1.05k, False: 0]
  ------------------
11190|  1.05k|#ifndef NDEBUG
11191|  8.86k|    for (const char *p = str; *p; p++) {
  ------------------
  |  Branch (11191:31): [True: 7.81k, False: 1.05k]
  ------------------
11192|  7.81k|        assert((unsigned char)*p < 128);
  ------------------
  |  Branch (11192:9): [True: 7.81k, False: 0]
  ------------------
11193|  7.81k|    }
11194|  1.05k|#endif
11195|  1.05k|    if (!PyUnicode_IS_ASCII(unicode))
  ------------------
  |  |  227|  1.05k|#define PyUnicode_IS_ASCII(op) PyUnicode_IS_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  1.05k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.05k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (11195:9): [True: 0, False: 1.05k]
  ------------------
11196|      0|        return 0;
11197|  1.05k|    len = (size_t)PyUnicode_GET_LENGTH(unicode);
  ------------------
  |  |  299|  1.05k|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  1.05k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.05k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11198|  1.05k|    return strlen(str) == len &&
  ------------------
  |  Branch (11198:12): [True: 110, False: 942]
  ------------------
11199|    110|           memcmp(PyUnicode_1BYTE_DATA(unicode), str, len) == 0;
  ------------------
  |  |  291|    110|#define PyUnicode_1BYTE_DATA(op) _Py_STATIC_CAST(Py_UCS1*, PyUnicode_DATA(op))
  |  |  ------------------
  |  |  |  |   34|    110|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (11199:12): [True: 29, False: 81]
  ------------------
11200|  1.05k|}
PyUnicode_RichCompare:
11204|  3.97k|{
11205|  3.97k|    int result;
11206|       |
11207|  3.97k|    if (!PyUnicode_Check(left) || !PyUnicode_Check(right))
  ------------------
  |  |  103|  3.97k|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|  7.95k|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
                  if (!PyUnicode_Check(left) || !PyUnicode_Check(right))
  ------------------
  |  |  103|  3.97k|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|  3.97k|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (11207:9): [True: 0, False: 3.97k]
  |  Branch (11207:35): [True: 0, False: 3.97k]
  ------------------
11208|      0|        Py_RETURN_NOTIMPLEMENTED;
  ------------------
  |  |  648|      0|#  define Py_RETURN_NOTIMPLEMENTED return Py_NotImplemented
  |  |  ------------------
  |  |  |  |  640|      0|#  define Py_NotImplemented (&_Py_NotImplementedStruct)
  |  |  ------------------
  ------------------
11209|       |
11210|  3.97k|    if (left == right) {
  ------------------
  |  Branch (11210:9): [True: 5, False: 3.97k]
  ------------------
11211|      5|        switch (op) {
11212|      4|        case Py_EQ:
  ------------------
  |  |  654|      4|#define Py_EQ 2
  ------------------
  |  Branch (11212:9): [True: 4, False: 1]
  ------------------
11213|      4|        case Py_LE:
  ------------------
  |  |  653|      4|#define Py_LE 1
  ------------------
  |  Branch (11213:9): [True: 0, False: 5]
  ------------------
11214|      4|        case Py_GE:
  ------------------
  |  |  657|      4|#define Py_GE 5
  ------------------
  |  Branch (11214:9): [True: 0, False: 5]
  ------------------
11215|       |            /* a string is equal to itself */
11216|      4|            Py_RETURN_TRUE;
  ------------------
  |  |   44|      4|#  define Py_RETURN_TRUE return Py_True
  |  |  ------------------
  |  |  |  |   26|      4|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11217|      1|        case Py_NE:
  ------------------
  |  |  655|      1|#define Py_NE 3
  ------------------
  |  Branch (11217:9): [True: 1, False: 4]
  ------------------
11218|      1|        case Py_LT:
  ------------------
  |  |  652|      1|#define Py_LT 0
  ------------------
  |  Branch (11218:9): [True: 0, False: 5]
  ------------------
11219|      1|        case Py_GT:
  ------------------
  |  |  656|      1|#define Py_GT 4
  ------------------
  |  Branch (11219:9): [True: 0, False: 5]
  ------------------
11220|      1|            Py_RETURN_FALSE;
  ------------------
  |  |   45|      1|#  define Py_RETURN_FALSE return Py_False
  |  |  ------------------
  |  |  |  |   25|      1|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11221|      0|        default:
  ------------------
  |  Branch (11221:9): [True: 0, False: 5]
  ------------------
11222|      0|            PyErr_BadArgument();
11223|      0|            return NULL;
11224|      5|        }
11225|      5|    }
11226|  3.97k|    else if (op == Py_EQ || op == Py_NE) {
  ------------------
  |  |  654|  7.94k|#define Py_EQ 2
  ------------------
                  else if (op == Py_EQ || op == Py_NE) {
  ------------------
  |  |  655|  2.56k|#define Py_NE 3
  ------------------
  |  Branch (11226:14): [True: 1.40k, False: 2.56k]
  |  Branch (11226:29): [True: 7, False: 2.55k]
  ------------------
11227|  1.41k|        result = unicode_eq(left, right);
11228|  1.41k|        result ^= (op == Py_NE);
  ------------------
  |  |  655|  1.41k|#define Py_NE 3
  ------------------
11229|  1.41k|        return PyBool_FromLong(result);
11230|  1.41k|    }
11231|  2.55k|    else {
11232|  2.55k|        result = unicode_compare(left, right);
11233|  2.55k|        Py_RETURN_RICHCOMPARE(result, 0, op);
  ------------------
  |  |  674|  2.55k|    do {                                                                    \
  |  |  675|  2.55k|        switch (op) {                                                       \
  |  |  676|      0|        case Py_EQ: if ((val1) == (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |  654|      0|#define Py_EQ 2
  |  |  ------------------
  |  |                       case Py_EQ: if ((val1) == (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |   44|      0|#  define Py_RETURN_TRUE return Py_True
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       case Py_EQ: if ((val1) == (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |   45|      0|#  define Py_RETURN_FALSE return Py_False
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (676:9): [True: 0, False: 2.55k]
  |  |  |  Branch (676:25): [True: 0, False: 0]
  |  |  ------------------
  |  |  677|      0|        case Py_NE: if ((val1) != (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |  655|      0|#define Py_NE 3
  |  |  ------------------
  |  |                       case Py_NE: if ((val1) != (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |   44|      0|#  define Py_RETURN_TRUE return Py_True
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       case Py_NE: if ((val1) != (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |   45|      0|#  define Py_RETURN_FALSE return Py_False
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (677:9): [True: 0, False: 2.55k]
  |  |  |  Branch (677:25): [True: 0, False: 0]
  |  |  ------------------
  |  |  678|  2.55k|        case Py_LT: if ((val1) < (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;   \
  |  |  ------------------
  |  |  |  |  652|  2.55k|#define Py_LT 0
  |  |  ------------------
  |  |                       case Py_LT: if ((val1) < (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;   \
  |  |  ------------------
  |  |  |  |   44|  1.28k|#  define Py_RETURN_TRUE return Py_True
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  1.28k|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|  1.28k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|  1.28k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       case Py_LT: if ((val1) < (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;   \
  |  |  ------------------
  |  |  |  |   45|  1.27k|#  define Py_RETURN_FALSE return Py_False
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|  1.27k|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|  1.27k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|  1.27k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (678:9): [True: 2.55k, False: 0]
  |  |  |  Branch (678:25): [True: 1.28k, False: 1.27k]
  |  |  ------------------
  |  |  679|  2.55k|        case Py_GT: if ((val1) > (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;   \
  |  |  ------------------
  |  |  |  |  656|      0|#define Py_GT 4
  |  |  ------------------
  |  |                       case Py_GT: if ((val1) > (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;   \
  |  |  ------------------
  |  |  |  |   44|      0|#  define Py_RETURN_TRUE return Py_True
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       case Py_GT: if ((val1) > (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;   \
  |  |  ------------------
  |  |  |  |   45|      0|#  define Py_RETURN_FALSE return Py_False
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (679:9): [True: 0, False: 2.55k]
  |  |  |  Branch (679:25): [True: 0, False: 0]
  |  |  ------------------
  |  |  680|      0|        case Py_LE: if ((val1) <= (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |  653|      0|#define Py_LE 1
  |  |  ------------------
  |  |                       case Py_LE: if ((val1) <= (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |   44|      0|#  define Py_RETURN_TRUE return Py_True
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       case Py_LE: if ((val1) <= (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |   45|      0|#  define Py_RETURN_FALSE return Py_False
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (680:9): [True: 0, False: 2.55k]
  |  |  |  Branch (680:25): [True: 0, False: 0]
  |  |  ------------------
  |  |  681|      0|        case Py_GE: if ((val1) >= (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |  657|      0|#define Py_GE 5
  |  |  ------------------
  |  |                       case Py_GE: if ((val1) >= (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |   44|      0|#  define Py_RETURN_TRUE return Py_True
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       case Py_GE: if ((val1) >= (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE;  \
  |  |  ------------------
  |  |  |  |   45|      0|#  define Py_RETURN_FALSE return Py_False
  |  |  |  |  ------------------
  |  |  |  |  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (681:9): [True: 0, False: 2.55k]
  |  |  |  Branch (681:25): [True: 0, False: 0]
  |  |  ------------------
  |  |  682|      0|        default:                                                            \
  |  |  ------------------
  |  |  |  Branch (682:9): [True: 0, False: 2.55k]
  |  |  ------------------
  |  |  683|      0|            Py_UNREACHABLE();                                               \
  |  |  ------------------
  |  |  |  |  264|      0|#  define Py_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |  684|  2.55k|        }                                                                   \
  |  |  685|  2.55k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (685:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
11234|  2.55k|    }
11235|  3.97k|}
PyUnicode_Contains:
11239|     28|{
11240|     28|    int kind1, kind2;
11241|     28|    const void *buf1, *buf2;
11242|     28|    Py_ssize_t len1, len2;
11243|     28|    int result;
11244|       |
11245|     28|    if (!PyUnicode_Check(substr)) {
  ------------------
  |  |  103|     28|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     28|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (11245:9): [True: 0, False: 28]
  ------------------
11246|      0|        PyErr_Format(PyExc_TypeError,
11247|      0|                     "'in <string>' requires string as left operand, not %.100s",
11248|      0|                     Py_TYPE(substr)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11249|      0|        return -1;
11250|      0|    }
11251|     28|    if (ensure_unicode(str) < 0)
  ------------------
  |  |  105|     28|#define ensure_unicode _PyUnicode_EnsureUnicode
  ------------------
  |  Branch (11251:9): [True: 0, False: 28]
  ------------------
11252|      0|        return -1;
11253|       |
11254|     28|    kind1 = PyUnicode_KIND(str);
  ------------------
  |  |  258|     28|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|     56|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 28, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11255|     28|    kind2 = PyUnicode_KIND(substr);
  ------------------
  |  |  258|     28|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|     56|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 28, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11256|     28|    if (kind1 < kind2)
  ------------------
  |  Branch (11256:9): [True: 0, False: 28]
  ------------------
11257|      0|        return 0;
11258|     28|    len1 = PyUnicode_GET_LENGTH(str);
  ------------------
  |  |  299|     28|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     28|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     28|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11259|     28|    len2 = PyUnicode_GET_LENGTH(substr);
  ------------------
  |  |  299|     28|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     28|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     28|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11260|     28|    if (len1 < len2)
  ------------------
  |  Branch (11260:9): [True: 2, False: 26]
  ------------------
11261|      2|        return 0;
11262|     26|    buf1 = PyUnicode_DATA(str);
  ------------------
  |  |  284|     26|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     26|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     26|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11263|     26|    buf2 = PyUnicode_DATA(substr);
  ------------------
  |  |  284|     26|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     26|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     26|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11264|     26|    if (len2 == 1) {
  ------------------
  |  Branch (11264:9): [True: 26, False: 0]
  ------------------
11265|     26|        Py_UCS4 ch = PyUnicode_READ(kind2, buf2, 0);
  ------------------
  |  |  354|     26|    PyUnicode_READ(_Py_STATIC_CAST(int, kind), \
  |  |  ------------------
  |  |  |  |   34|     26|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  355|     26|                   _Py_STATIC_CAST(const void*, data), \
  |  |  ------------------
  |  |  |  |   34|     26|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  356|     26|                   (index))
  ------------------
11266|     26|        result = findchar((const char *)buf1, kind1, len1, ch, 1) != -1;
11267|     26|        return result;
11268|     26|    }
11269|      0|    if (kind2 != kind1) {
  ------------------
  |  Branch (11269:9): [True: 0, False: 0]
  ------------------
11270|      0|        buf2 = unicode_askind(kind2, buf2, len2, kind1);
11271|      0|        if (!buf2)
  ------------------
  |  Branch (11271:13): [True: 0, False: 0]
  ------------------
11272|      0|            return -1;
11273|      0|    }
11274|       |
11275|      0|    switch (kind1) {
11276|      0|    case PyUnicode_1BYTE_KIND:
  ------------------
  |  Branch (11276:5): [True: 0, False: 0]
  ------------------
11277|      0|        result = ucs1lib_find(buf1, len1, buf2, len2, 0) != -1;
11278|      0|        break;
11279|      0|    case PyUnicode_2BYTE_KIND:
  ------------------
  |  Branch (11279:5): [True: 0, False: 0]
  ------------------
11280|      0|        result = ucs2lib_find(buf1, len1, buf2, len2, 0) != -1;
11281|      0|        break;
11282|      0|    case PyUnicode_4BYTE_KIND:
  ------------------
  |  Branch (11282:5): [True: 0, False: 0]
  ------------------
11283|      0|        result = ucs4lib_find(buf1, len1, buf2, len2, 0) != -1;
11284|      0|        break;
11285|      0|    default:
  ------------------
  |  Branch (11285:5): [True: 0, False: 0]
  ------------------
11286|      0|        Py_UNREACHABLE();
  ------------------
  |  |  264|      0|#  define Py_UNREACHABLE() __builtin_unreachable()
  ------------------
11287|      0|    }
11288|       |
11289|      0|    assert((kind2 == kind1) == (buf2 == PyUnicode_DATA(substr)));
  ------------------
  |  Branch (11289:5): [True: 0, False: 0]
  ------------------
11290|      0|    if (kind2 != kind1)
  ------------------
  |  Branch (11290:9): [True: 0, False: 0]
  ------------------
11291|      0|        PyMem_Free((void *)buf2);
11292|       |
11293|      0|    return result;
11294|      0|}
PyUnicode_Concat:
11300|     92|{
11301|     92|    PyObject *result;
11302|     92|    Py_UCS4 maxchar, maxchar2;
11303|     92|    Py_ssize_t left_len, right_len, new_len;
11304|       |
11305|     92|    if (ensure_unicode(left) < 0)
  ------------------
  |  |  105|     92|#define ensure_unicode _PyUnicode_EnsureUnicode
  ------------------
  |  Branch (11305:9): [True: 0, False: 92]
  ------------------
11306|      0|        return NULL;
11307|       |
11308|     92|    if (!PyUnicode_Check(right)) {
  ------------------
  |  |  103|     92|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     92|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (11308:9): [True: 0, False: 92]
  ------------------
11309|      0|        PyErr_Format(PyExc_TypeError,
11310|      0|            "can only concatenate str (not \"%.200s\") to str",
11311|      0|            Py_TYPE(right)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11312|      0|        return NULL;
11313|      0|    }
11314|       |
11315|       |    /* Shortcuts */
11316|     92|    PyObject *empty = _PyUnicode_GetEmpty();  // Borrowed reference
11317|     92|    if (left == empty) {
  ------------------
  |  Branch (11317:9): [True: 0, False: 92]
  ------------------
11318|      0|        return PyUnicode_FromObject(right);
11319|      0|    }
11320|     92|    if (right == empty) {
  ------------------
  |  Branch (11320:9): [True: 0, False: 92]
  ------------------
11321|      0|        return PyUnicode_FromObject(left);
11322|      0|    }
11323|       |
11324|     92|    left_len = PyUnicode_GET_LENGTH(left);
  ------------------
  |  |  299|     92|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     92|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     92|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11325|     92|    right_len = PyUnicode_GET_LENGTH(right);
  ------------------
  |  |  299|     92|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     92|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     92|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11326|     92|    if (left_len > PY_SSIZE_T_MAX - right_len) {
  ------------------
  |  |  137|     92|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (11326:9): [True: 0, False: 92]
  ------------------
11327|      0|        PyErr_SetString(PyExc_OverflowError,
11328|      0|                        "strings are too large to concat");
11329|      0|        return NULL;
11330|      0|    }
11331|     92|    new_len = left_len + right_len;
11332|       |
11333|     92|    maxchar = PyUnicode_MAX_CHAR_VALUE(left);
  ------------------
  |  |  405|     92|    PyUnicode_MAX_CHAR_VALUE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     92|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     92|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11334|     92|    maxchar2 = PyUnicode_MAX_CHAR_VALUE(right);
  ------------------
  |  |  405|     92|    PyUnicode_MAX_CHAR_VALUE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     92|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     92|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11335|     92|    maxchar = Py_MAX(maxchar, maxchar2);
  ------------------
  |  |  115|     92|#define Py_MAX(x, y) (((x) > (y)) ? (x) : (y))
  |  |  ------------------
  |  |  |  Branch (115:23): [True: 0, False: 92]
  |  |  ------------------
  ------------------
11336|       |
11337|       |    /* Concat the two Unicode strings */
11338|     92|    result = PyUnicode_New(new_len, maxchar);
11339|     92|    if (result == NULL)
  ------------------
  |  Branch (11339:9): [True: 0, False: 92]
  ------------------
11340|      0|        return NULL;
11341|     92|    _PyUnicode_FastCopyCharacters(result, 0, left, 0, left_len);
11342|     92|    _PyUnicode_FastCopyCharacters(result, left_len, right, 0, right_len);
11343|     92|    assert(_PyUnicode_CheckConsistency(result, 1));
  ------------------
  |  Branch (11343:5): [True: 92, False: 0]
  ------------------
11344|     92|    return result;
11345|     92|}
PyUnicode_Append:
11349|     12|{
11350|     12|    PyObject *left, *res;
11351|     12|    Py_UCS4 maxchar, maxchar2;
11352|     12|    Py_ssize_t left_len, right_len, new_len;
11353|       |
11354|     12|    if (p_left == NULL) {
  ------------------
  |  Branch (11354:9): [True: 0, False: 12]
  ------------------
11355|      0|        if (!PyErr_Occurred())
  ------------------
  |  Branch (11355:13): [True: 0, False: 0]
  ------------------
11356|      0|            PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
11357|      0|        return;
11358|      0|    }
11359|     12|    left = *p_left;
11360|     12|    if (right == NULL || left == NULL
  ------------------
  |  Branch (11360:9): [True: 0, False: 12]
  |  Branch (11360:26): [True: 0, False: 12]
  ------------------
11361|     12|        || !PyUnicode_Check(left) || !PyUnicode_Check(right)) {
  ------------------
  |  |  103|     12|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     24|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
                      || !PyUnicode_Check(left) || !PyUnicode_Check(right)) {
  ------------------
  |  |  103|     12|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     12|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (11361:12): [True: 0, False: 12]
  |  Branch (11361:38): [True: 0, False: 12]
  ------------------
11362|      0|        if (!PyErr_Occurred())
  ------------------
  |  Branch (11362:13): [True: 0, False: 0]
  ------------------
11363|      0|            PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
11364|      0|        goto error;
11365|      0|    }
11366|       |
11367|       |    /* Shortcuts */
11368|     12|    PyObject *empty = _PyUnicode_GetEmpty();  // Borrowed reference
11369|     12|    if (left == empty) {
  ------------------
  |  Branch (11369:9): [True: 0, False: 12]
  ------------------
11370|      0|        Py_DECREF(left);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11371|      0|        *p_left = Py_NewRef(right);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11372|      0|        return;
11373|      0|    }
11374|     12|    if (right == empty) {
  ------------------
  |  Branch (11374:9): [True: 0, False: 12]
  ------------------
11375|      0|        return;
11376|      0|    }
11377|       |
11378|     12|    left_len = PyUnicode_GET_LENGTH(left);
  ------------------
  |  |  299|     12|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     12|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     12|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11379|     12|    right_len = PyUnicode_GET_LENGTH(right);
  ------------------
  |  |  299|     12|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     12|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     12|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11380|     12|    if (left_len > PY_SSIZE_T_MAX - right_len) {
  ------------------
  |  |  137|     12|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (11380:9): [True: 0, False: 12]
  ------------------
11381|      0|        PyErr_SetString(PyExc_OverflowError,
11382|      0|                        "strings are too large to concat");
11383|      0|        goto error;
11384|      0|    }
11385|     12|    new_len = left_len + right_len;
11386|       |
11387|     12|    if (_PyUnicode_IsModifiable(left)
  ------------------
  |  Branch (11387:9): [True: 2, False: 10]
  ------------------
11388|     12|        && PyUnicode_CheckExact(right)
  ------------------
  |  |  104|      2|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  ------------------
  |  |  |  |  215|     14|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11389|     12|        && PyUnicode_KIND(right) <= PyUnicode_KIND(left)
  ------------------
  |  |  258|      2|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|      4|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      && PyUnicode_KIND(right) <= PyUnicode_KIND(left)
  ------------------
  |  |  258|      2|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|     14|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (11389:12): [True: 2, False: 0]
  ------------------
11390|       |        /* Don't resize for ascii += latin1. Convert ascii to latin1 requires
11391|       |           to change the structure size, but characters are stored just after
11392|       |           the structure, and so it requires to move all characters which is
11393|       |           not so different than duplicating the string. */
11394|      2|        && !(PyUnicode_IS_ASCII(left) && !PyUnicode_IS_ASCII(right)))
  ------------------
  |  |  227|      4|#define PyUnicode_IS_ASCII(op) PyUnicode_IS_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (227:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
                      && !(PyUnicode_IS_ASCII(left) && !PyUnicode_IS_ASCII(right)))
  ------------------
  |  |  227|      2|#define PyUnicode_IS_ASCII(op) PyUnicode_IS_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (11394:42): [True: 0, False: 2]
  ------------------
11395|      2|    {
11396|       |        /* append inplace */
11397|      2|        if (unicode_resize(p_left, new_len) != 0)
  ------------------
  |  Branch (11397:13): [True: 0, False: 2]
  ------------------
11398|      0|            goto error;
11399|       |
11400|       |        /* copy 'right' into the newly allocated area of 'left' */
11401|      2|        _PyUnicode_FastCopyCharacters(*p_left, left_len, right, 0, right_len);
11402|      2|    }
11403|     10|    else {
11404|     10|        maxchar = PyUnicode_MAX_CHAR_VALUE(left);
  ------------------
  |  |  405|     10|    PyUnicode_MAX_CHAR_VALUE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     10|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11405|     10|        maxchar2 = PyUnicode_MAX_CHAR_VALUE(right);
  ------------------
  |  |  405|     10|    PyUnicode_MAX_CHAR_VALUE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     10|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11406|     10|        maxchar = Py_MAX(maxchar, maxchar2);
  ------------------
  |  |  115|     10|#define Py_MAX(x, y) (((x) > (y)) ? (x) : (y))
  |  |  ------------------
  |  |  |  Branch (115:23): [True: 0, False: 10]
  |  |  ------------------
  ------------------
11407|       |
11408|       |        /* Concat the two Unicode strings */
11409|     10|        res = PyUnicode_New(new_len, maxchar);
11410|     10|        if (res == NULL)
  ------------------
  |  Branch (11410:13): [True: 0, False: 10]
  ------------------
11411|      0|            goto error;
11412|     10|        _PyUnicode_FastCopyCharacters(res, 0, left, 0, left_len);
11413|     10|        _PyUnicode_FastCopyCharacters(res, left_len, right, 0, right_len);
11414|     10|        Py_DECREF(left);
  ------------------
  |  |  430|     10|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     10|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11415|     10|        *p_left = res;
11416|     10|    }
11417|     12|    assert(_PyUnicode_CheckConsistency(*p_left, 1));
  ------------------
  |  Branch (11417:5): [True: 12, False: 0]
  ------------------
11418|     12|    return;
11419|       |
11420|     12|error:
11421|       |    Py_CLEAR(*p_left);
  ------------------
  |  |  484|      0|    do { \
  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
11422|      0|}
_PyUnicode_ScanIdentifier:
12106|      6|{
12107|      6|    Py_ssize_t i;
12108|      6|    Py_ssize_t len = PyUnicode_GET_LENGTH(self);
  ------------------
  |  |  299|      6|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      6|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12109|      6|    if (len == 0) {
  ------------------
  |  Branch (12109:9): [True: 0, False: 6]
  ------------------
12110|       |        /* an empty string is not a valid identifier */
12111|      0|        return 0;
12112|      0|    }
12113|       |
12114|      6|    int kind = PyUnicode_KIND(self);
  ------------------
  |  |  258|      6|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|     12|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 6, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12115|      6|    const void *data = PyUnicode_DATA(self);
  ------------------
  |  |  284|      6|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      6|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12116|      6|    Py_UCS4 ch = PyUnicode_READ(kind, data, 0);
  ------------------
  |  |  354|      6|    PyUnicode_READ(_Py_STATIC_CAST(int, kind), \
  |  |  ------------------
  |  |  |  |   34|      6|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  355|      6|                   _Py_STATIC_CAST(const void*, data), \
  |  |  ------------------
  |  |  |  |   34|      6|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  356|      6|                   (index))
  ------------------
12117|       |    /* PEP 3131 says that the first character must be in
12118|       |       XID_Start and subsequent characters in XID_Continue,
12119|       |       and for the ASCII range, the 2.x rules apply (i.e
12120|       |       start with letters and underscore, continue with
12121|       |       letters, digits, underscore). However, given the current
12122|       |       definition of XID_Start and XID_Continue, it is sufficient
12123|       |       to check just for these, except that _ must be allowed
12124|       |       as starting an identifier.  */
12125|      6|    if (!_PyUnicode_IsXidStart(ch) && ch != 0x5F /* LOW LINE */) {
  ------------------
  |  Branch (12125:9): [True: 5, False: 1]
  |  Branch (12125:39): [True: 0, False: 5]
  ------------------
12126|      0|        return 0;
12127|      0|    }
12128|       |
12129|     55|    for (i = 1; i < len; i++) {
  ------------------
  |  Branch (12129:17): [True: 49, False: 6]
  ------------------
12130|     49|        ch = PyUnicode_READ(kind, data, i);
  ------------------
  |  |  354|     49|    PyUnicode_READ(_Py_STATIC_CAST(int, kind), \
  |  |  ------------------
  |  |  |  |   34|     49|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  355|     49|                   _Py_STATIC_CAST(const void*, data), \
  |  |  ------------------
  |  |  |  |   34|     49|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  356|     49|                   (index))
  ------------------
12131|     49|        if (!_PyUnicode_IsXidContinue(ch)) {
  ------------------
  |  Branch (12131:13): [True: 0, False: 49]
  ------------------
12132|      0|            return i;
12133|      0|        }
12134|     49|    }
12135|      6|    return i;
12136|      6|}
PyUnicode_IsIdentifier:
12140|      6|{
12141|      6|    Py_ssize_t i = _PyUnicode_ScanIdentifier(self);
12142|      6|    Py_ssize_t len = PyUnicode_GET_LENGTH(self);
  ------------------
  |  |  299|      6|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      6|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12143|       |    /* an empty string is not a valid identifier */
12144|      6|    return len && i == len;
  ------------------
  |  Branch (12144:12): [True: 6, False: 0]
  |  Branch (12144:19): [True: 6, False: 0]
  ------------------
12145|      6|}
_PyUnicode_XStrip:
12275|     75|{
12276|     75|    const void *data;
12277|     75|    int kind;
12278|     75|    Py_ssize_t i, j, len;
12279|     75|    BLOOM_MASK sepmask;
  ------------------
  |  |  905|     75|#define BLOOM_MASK unsigned long
  ------------------
12280|     75|    Py_ssize_t seplen;
12281|       |
12282|     75|    kind = PyUnicode_KIND(self);
  ------------------
  |  |  258|     75|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|    150|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 75, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12283|     75|    data = PyUnicode_DATA(self);
  ------------------
  |  |  284|     75|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     75|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     75|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12284|     75|    len = PyUnicode_GET_LENGTH(self);
  ------------------
  |  |  299|     75|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     75|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     75|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12285|     75|    seplen = PyUnicode_GET_LENGTH(sepobj);
  ------------------
  |  |  299|     75|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     75|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     75|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12286|     75|    sepmask = make_bloom_mask(PyUnicode_KIND(sepobj),
  ------------------
  |  |  258|     75|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|    150|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 75, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12287|     75|                              PyUnicode_DATA(sepobj),
  ------------------
  |  |  284|     75|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     75|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     75|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12288|     75|                              seplen);
12289|       |
12290|      0|    i = 0;
12291|     75|    if (striptype != RIGHTSTRIP) {
  ------------------
  |  |12264|     75|#define RIGHTSTRIP 1
  ------------------
  |  Branch (12291:9): [True: 0, False: 75]
  ------------------
12292|      0|        while (i < len) {
  ------------------
  |  Branch (12292:16): [True: 0, False: 0]
  ------------------
12293|      0|            Py_UCS4 ch = PyUnicode_READ(kind, data, i);
  ------------------
  |  |  354|      0|    PyUnicode_READ(_Py_STATIC_CAST(int, kind), \
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  355|      0|                   _Py_STATIC_CAST(const void*, data), \
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  356|      0|                   (index))
  ------------------
12294|      0|            if (!BLOOM(sepmask, ch))
  ------------------
  |  |  909|      0|#define BLOOM(mask, ch)     ((mask &  (1UL << ((ch) & (BLOOM_WIDTH - 1)))))
  |  |  ------------------
  |  |  |  |  898|      0|#define BLOOM_WIDTH 64
  |  |  ------------------
  ------------------
  |  Branch (12294:17): [True: 0, False: 0]
  ------------------
12295|      0|                break;
12296|      0|            if (PyUnicode_FindChar(sepobj, ch, 0, seplen, 1) < 0)
  ------------------
  |  Branch (12296:17): [True: 0, False: 0]
  ------------------
12297|      0|                break;
12298|      0|            i++;
12299|      0|        }
12300|      0|    }
12301|       |
12302|     75|    j = len;
12303|     75|    if (striptype != LEFTSTRIP) {
  ------------------
  |  |12263|     75|#define LEFTSTRIP 0
  ------------------
  |  Branch (12303:9): [True: 75, False: 0]
  ------------------
12304|     75|        j--;
12305|     77|        while (j >= i) {
  ------------------
  |  Branch (12305:16): [True: 77, False: 0]
  ------------------
12306|     77|            Py_UCS4 ch = PyUnicode_READ(kind, data, j);
  ------------------
  |  |  354|     77|    PyUnicode_READ(_Py_STATIC_CAST(int, kind), \
  |  |  ------------------
  |  |  |  |   34|     77|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  355|     77|                   _Py_STATIC_CAST(const void*, data), \
  |  |  ------------------
  |  |  |  |   34|     77|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  356|     77|                   (index))
  ------------------
12307|     77|            if (!BLOOM(sepmask, ch))
  ------------------
  |  |  909|     77|#define BLOOM(mask, ch)     ((mask &  (1UL << ((ch) & (BLOOM_WIDTH - 1)))))
  |  |  ------------------
  |  |  |  |  898|     77|#define BLOOM_WIDTH 64
  |  |  ------------------
  ------------------
  |  Branch (12307:17): [True: 51, False: 26]
  ------------------
12308|     51|                break;
12309|     26|            if (PyUnicode_FindChar(sepobj, ch, 0, seplen, 1) < 0)
  ------------------
  |  Branch (12309:17): [True: 24, False: 2]
  ------------------
12310|     24|                break;
12311|      2|            j--;
12312|      2|        }
12313|       |
12314|     75|        j++;
12315|     75|    }
12316|       |
12317|     75|    return PyUnicode_Substring(self, i, j);
12318|     75|}
_PyUnicode_BinarySlice:
12322|      5|{
12323|      5|    assert(PyUnicode_CheckExact(container));
  ------------------
  |  Branch (12323:5): [True: 5, False: 0]
  ------------------
12324|      5|    Py_ssize_t len = PyUnicode_GET_LENGTH(container);
  ------------------
  |  |  299|      5|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12325|      5|    Py_ssize_t istart, istop;
12326|      5|    if (!_PyEval_UnpackIndices(start_o, stop_o, len, &istart, &istop)) {
  ------------------
  |  Branch (12326:9): [True: 0, False: 5]
  ------------------
12327|      0|        return NULL;
12328|      0|    }
12329|      5|    return PyUnicode_Substring(container, istart, istop);
12330|      5|}
PyUnicode_Substring:
12334|     88|{
12335|     88|    const unsigned char *data;
12336|     88|    int kind;
12337|     88|    Py_ssize_t length;
12338|       |
12339|     88|    length = PyUnicode_GET_LENGTH(self);
  ------------------
  |  |  299|     88|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     88|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     88|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12340|     88|    end = Py_MIN(end, length);
  ------------------
  |  |  112|     88|#define Py_MIN(x, y) (((x) > (y)) ? (y) : (x))
  |  |  ------------------
  |  |  |  Branch (112:23): [True: 0, False: 88]
  |  |  ------------------
  ------------------
12341|       |
12342|     88|    if (start == 0 && end == length)
  ------------------
  |  Branch (12342:9): [True: 86, False: 2]
  |  Branch (12342:23): [True: 74, False: 12]
  ------------------
12343|     74|        return unicode_result_unchanged(self);
12344|       |
12345|     14|    if (start < 0 || end < 0) {
  ------------------
  |  Branch (12345:9): [True: 0, False: 14]
  |  Branch (12345:22): [True: 0, False: 14]
  ------------------
12346|      0|        PyErr_SetString(PyExc_IndexError, "string index out of range");
12347|      0|        return NULL;
12348|      0|    }
12349|     14|    if (start >= length || end < start)
  ------------------
  |  Branch (12349:9): [True: 0, False: 14]
  |  Branch (12349:28): [True: 0, False: 14]
  ------------------
12350|      0|        _Py_RETURN_UNICODE_EMPTY();
  ------------------
  |  |  375|      0|    do {                             \
  |  |  376|      0|        return _PyUnicode_GetEmpty();\
  |  |  377|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (377:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
12351|       |
12352|     14|    length = end - start;
12353|     14|    if (PyUnicode_IS_ASCII(self)) {
  ------------------
  |  |  227|     14|#define PyUnicode_IS_ASCII(op) PyUnicode_IS_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     14|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     14|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (227:32): [True: 14, False: 0]
  |  |  ------------------
  ------------------
12354|     14|        data = PyUnicode_1BYTE_DATA(self);
  ------------------
  |  |  291|     14|#define PyUnicode_1BYTE_DATA(op) _Py_STATIC_CAST(Py_UCS1*, PyUnicode_DATA(op))
  |  |  ------------------
  |  |  |  |   34|     14|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
12355|     14|        return _PyUnicode_FromASCII((const char*)(data + start), length);
12356|     14|    }
12357|      0|    else {
12358|      0|        kind = PyUnicode_KIND(self);
  ------------------
  |  |  258|      0|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|      0|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12359|      0|        data = PyUnicode_1BYTE_DATA(self);
  ------------------
  |  |  291|      0|#define PyUnicode_1BYTE_DATA(op) _Py_STATIC_CAST(Py_UCS1*, PyUnicode_DATA(op))
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
12360|      0|        return PyUnicode_FromKindAndData(kind,
12361|      0|                                         data + kind * start,
12362|      0|                                         length);
12363|      0|    }
12364|     14|}
_PyUnicode_Repeat:
12507|      2|{
12508|      2|    PyObject *u;
12509|      2|    Py_ssize_t nchars, n;
12510|       |
12511|      2|    if (len < 1)
  ------------------
  |  Branch (12511:9): [True: 0, False: 2]
  ------------------
12512|      0|        _Py_RETURN_UNICODE_EMPTY();
  ------------------
  |  |  375|      0|    do {                             \
  |  |  376|      0|        return _PyUnicode_GetEmpty();\
  |  |  377|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (377:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
12513|       |
12514|       |    /* no repeat, return original string */
12515|      2|    if (len == 1)
  ------------------
  |  Branch (12515:9): [True: 0, False: 2]
  ------------------
12516|      0|        return unicode_result_unchanged(str);
12517|       |
12518|      2|    if (PyUnicode_GET_LENGTH(str) > PY_SSIZE_T_MAX / len) {
  ------------------
  |  |  299|      2|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  if (PyUnicode_GET_LENGTH(str) > PY_SSIZE_T_MAX / len) {
  ------------------
  |  |  137|      2|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (12518:9): [True: 0, False: 2]
  ------------------
12519|      0|        PyErr_SetString(PyExc_OverflowError,
12520|      0|                        "repeated string is too long");
12521|      0|        return NULL;
12522|      0|    }
12523|      2|    nchars = len * PyUnicode_GET_LENGTH(str);
  ------------------
  |  |  299|      2|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12524|       |
12525|      2|    u = PyUnicode_New(nchars, PyUnicode_MAX_CHAR_VALUE(str));
  ------------------
  |  |  405|      2|    PyUnicode_MAX_CHAR_VALUE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12526|      2|    if (!u)
  ------------------
  |  Branch (12526:9): [True: 0, False: 2]
  ------------------
12527|      0|        return NULL;
12528|      2|    assert(PyUnicode_KIND(u) == PyUnicode_KIND(str));
  ------------------
  |  Branch (12528:5): [True: 2, False: 0]
  |  Branch (12528:5): [True: 2, False: 0]
  |  Branch (12528:5): [True: 2, False: 0]
  ------------------
12529|       |
12530|      2|    if (PyUnicode_GET_LENGTH(str) == 1) {
  ------------------
  |  |  299|      2|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (12530:9): [True: 2, False: 0]
  ------------------
12531|      2|        int kind = PyUnicode_KIND(str);
  ------------------
  |  |  258|      2|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|      4|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12532|      2|        Py_UCS4 fill_char = PyUnicode_READ(kind, PyUnicode_DATA(str), 0);
  ------------------
  |  |  354|      2|    PyUnicode_READ(_Py_STATIC_CAST(int, kind), \
  |  |  ------------------
  |  |  |  |   34|      2|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  355|      2|                   _Py_STATIC_CAST(const void*, data), \
  |  |  ------------------
  |  |  |  |   34|      2|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  356|      2|                   (index))
  ------------------
12533|      2|        if (kind == PyUnicode_1BYTE_KIND) {
  ------------------
  |  Branch (12533:13): [True: 2, False: 0]
  ------------------
12534|      2|            void *to = PyUnicode_DATA(u);
  ------------------
  |  |  284|      2|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12535|      2|            memset(to, (unsigned char)fill_char, len);
12536|      2|        }
12537|      0|        else if (kind == PyUnicode_2BYTE_KIND) {
  ------------------
  |  Branch (12537:18): [True: 0, False: 0]
  ------------------
12538|      0|            Py_UCS2 *ucs2 = PyUnicode_2BYTE_DATA(u);
  ------------------
  |  |  292|      0|#define PyUnicode_2BYTE_DATA(op) _Py_STATIC_CAST(Py_UCS2*, PyUnicode_DATA(op))
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
12539|      0|            for (n = 0; n < len; ++n)
  ------------------
  |  Branch (12539:25): [True: 0, False: 0]
  ------------------
12540|      0|                ucs2[n] = fill_char;
12541|      0|        } else {
12542|      0|            Py_UCS4 *ucs4 = PyUnicode_4BYTE_DATA(u);
  ------------------
  |  |  293|      0|#define PyUnicode_4BYTE_DATA(op) _Py_STATIC_CAST(Py_UCS4*, PyUnicode_DATA(op))
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
12543|      0|            assert(kind == PyUnicode_4BYTE_KIND);
  ------------------
  |  Branch (12543:13): [True: 0, False: 0]
  ------------------
12544|      0|            for (n = 0; n < len; ++n)
  ------------------
  |  Branch (12544:25): [True: 0, False: 0]
  ------------------
12545|      0|                ucs4[n] = fill_char;
12546|      0|        }
12547|      2|    }
12548|      0|    else {
12549|      0|        Py_ssize_t char_size = PyUnicode_KIND(str);
  ------------------
  |  |  258|      0|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|      0|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12550|      0|        char *to = (char *) PyUnicode_DATA(u);
  ------------------
  |  |  284|      0|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12551|      0|        _PyBytes_RepeatBuffer(to, nchars * char_size, PyUnicode_DATA(str),
  ------------------
  |  |  284|      0|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12552|      0|            PyUnicode_GET_LENGTH(str) * char_size);
  ------------------
  |  |  299|      0|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12553|      0|    }
12554|       |
12555|      2|    assert(_PyUnicode_CheckConsistency(u, 1));
  ------------------
  |  Branch (12555:5): [True: 2, False: 0]
  ------------------
12556|      2|    return u;
12557|      2|}
PyUnicode_RPartition:
12913|     60|{
12914|     60|    PyObject* out;
12915|     60|    int kind1, kind2;
12916|     60|    const void *buf1, *buf2;
12917|     60|    Py_ssize_t len1, len2;
12918|       |
12919|     60|    if (ensure_unicode(str_obj) < 0 || ensure_unicode(sep_obj) < 0)
  ------------------
  |  |  105|     60|#define ensure_unicode _PyUnicode_EnsureUnicode
  ------------------
                  if (ensure_unicode(str_obj) < 0 || ensure_unicode(sep_obj) < 0)
  ------------------
  |  |  105|     60|#define ensure_unicode _PyUnicode_EnsureUnicode
  ------------------
  |  Branch (12919:9): [True: 0, False: 60]
  |  Branch (12919:40): [True: 0, False: 60]
  ------------------
12920|      0|        return NULL;
12921|       |
12922|     60|    kind1 = PyUnicode_KIND(str_obj);
  ------------------
  |  |  258|     60|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|    120|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 60, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12923|     60|    kind2 = PyUnicode_KIND(sep_obj);
  ------------------
  |  |  258|     60|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|    120|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 60, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12924|     60|    len1 = PyUnicode_GET_LENGTH(str_obj);
  ------------------
  |  |  299|     60|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     60|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     60|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12925|     60|    len2 = PyUnicode_GET_LENGTH(sep_obj);
  ------------------
  |  |  299|     60|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     60|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     60|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12926|     60|    if (kind1 < kind2 || len1 < len2) {
  ------------------
  |  Branch (12926:9): [True: 0, False: 60]
  |  Branch (12926:26): [True: 0, False: 60]
  ------------------
12927|      0|        PyObject *empty = _PyUnicode_GetEmpty();  // Borrowed reference
12928|      0|        return PyTuple_Pack(3, empty, empty, str_obj);
12929|      0|    }
12930|     60|    buf1 = PyUnicode_DATA(str_obj);
  ------------------
  |  |  284|     60|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     60|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     60|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12931|     60|    buf2 = PyUnicode_DATA(sep_obj);
  ------------------
  |  |  284|     60|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     60|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     60|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12932|     60|    if (kind2 != kind1) {
  ------------------
  |  Branch (12932:9): [True: 0, False: 60]
  ------------------
12933|      0|        buf2 = unicode_askind(kind2, buf2, len2, kind1);
12934|      0|        if (!buf2)
  ------------------
  |  Branch (12934:13): [True: 0, False: 0]
  ------------------
12935|      0|            return NULL;
12936|      0|    }
12937|       |
12938|     60|    switch (kind1) {
12939|     60|    case PyUnicode_1BYTE_KIND:
  ------------------
  |  Branch (12939:5): [True: 60, False: 0]
  ------------------
12940|     60|        if (PyUnicode_IS_ASCII(str_obj) && PyUnicode_IS_ASCII(sep_obj))
  ------------------
  |  |  227|    120|#define PyUnicode_IS_ASCII(op) PyUnicode_IS_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     60|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     60|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (227:32): [True: 60, False: 0]
  |  |  ------------------
  ------------------
                      if (PyUnicode_IS_ASCII(str_obj) && PyUnicode_IS_ASCII(sep_obj))
  ------------------
  |  |  227|     60|#define PyUnicode_IS_ASCII(op) PyUnicode_IS_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     60|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     60|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (227:32): [True: 60, False: 0]
  |  |  ------------------
  ------------------
12941|     60|            out = asciilib_rpartition(str_obj, buf1, len1, sep_obj, buf2, len2);
12942|      0|        else
12943|      0|            out = ucs1lib_rpartition(str_obj, buf1, len1, sep_obj, buf2, len2);
12944|     60|        break;
12945|      0|    case PyUnicode_2BYTE_KIND:
  ------------------
  |  Branch (12945:5): [True: 0, False: 60]
  ------------------
12946|      0|        out = ucs2lib_rpartition(str_obj, buf1, len1, sep_obj, buf2, len2);
12947|      0|        break;
12948|      0|    case PyUnicode_4BYTE_KIND:
  ------------------
  |  Branch (12948:5): [True: 0, False: 60]
  ------------------
12949|      0|        out = ucs4lib_rpartition(str_obj, buf1, len1, sep_obj, buf2, len2);
12950|      0|        break;
12951|      0|    default:
  ------------------
  |  Branch (12951:5): [True: 0, False: 60]
  ------------------
12952|      0|        Py_UNREACHABLE();
  ------------------
  |  |  264|      0|#  define Py_UNREACHABLE() __builtin_unreachable()
  ------------------
12953|     60|    }
12954|       |
12955|     60|    assert((kind2 == kind1) == (buf2 == PyUnicode_DATA(sep_obj)));
  ------------------
  |  Branch (12955:5): [True: 60, False: 0]
  ------------------
12956|     60|    if (kind2 != kind1)
  ------------------
  |  Branch (12956:9): [True: 0, False: 60]
  ------------------
12957|      0|        PyMem_Free((void *)buf2);
12958|       |
12959|     60|    return out;
12960|     60|}
_PyUnicode_ExactDealloc:
14009|     13|{
14010|     13|    assert(PyUnicode_CheckExact(op));
  ------------------
  |  Branch (14010:5): [True: 13, False: 0]
  ------------------
14011|     13|    unicode_dealloc(op);
14012|     13|}
_PyUnicode_InitState:
14104|      1|{
14105|      1|    if (!_Py_IsMainInterpreter(interp)) {
  ------------------
  |  Branch (14105:9): [True: 0, False: 1]
  ------------------
14106|      0|        return;
14107|      0|    }
14108|      1|    _init_global_state();
14109|      1|}
_PyUnicode_InitGlobalObjects:
14114|      1|{
14115|      1|    if (_Py_IsMainInterpreter(interp)) {
  ------------------
  |  Branch (14115:9): [True: 1, False: 0]
  ------------------
14116|      1|        PyStatus status = init_global_interned_strings(interp);
14117|      1|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
14118|      0|            return status;
14119|      0|        }
14120|      1|    }
14121|      1|    assert(INTERNED_STRINGS);
  ------------------
  |  Branch (14121:5): [True: 1, False: 0]
  ------------------
14122|       |
14123|      1|    if (init_interned_dict(interp)) {
  ------------------
  |  Branch (14123:9): [True: 0, False: 1]
  ------------------
14124|      0|        PyErr_Clear();
14125|      0|        return _PyStatus_ERR("failed to create interned dict");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
14126|      0|    }
14127|       |
14128|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
14129|      1|}
_PyUnicode_InitTypes:
14134|      1|{
14135|      1|    if (_PyStaticType_InitBuiltin(interp, &EncodingMapType) < 0) {
  ------------------
  |  Branch (14135:9): [True: 0, False: 1]
  ------------------
14136|      0|        goto error;
14137|      0|    }
14138|      1|    if (_PyStaticType_InitBuiltin(interp, &PyFieldNameIter_Type) < 0) {
  ------------------
  |  Branch (14138:9): [True: 0, False: 1]
  ------------------
14139|      0|        goto error;
14140|      0|    }
14141|      1|    if (_PyStaticType_InitBuiltin(interp, &PyFormatterIter_Type) < 0) {
  ------------------
  |  Branch (14141:9): [True: 0, False: 1]
  ------------------
14142|      0|        goto error;
14143|      0|    }
14144|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
14145|       |
14146|      0|error:
14147|      0|    return _PyStatus_ERR("Can't initialize unicode types");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
14148|      1|}
_PyUnicode_InternStatic:
14191|  1.12k|{
14192|       |    // This should only be called as part of runtime initialization
14193|  1.12k|    assert(!Py_IsInitialized());
  ------------------
  |  Branch (14193:5): [True: 1.12k, False: 0]
  ------------------
14194|       |
14195|  1.12k|    *p = intern_static(interp, *p);
14196|       |    assert(*p);
  ------------------
  |  Branch (14196:5): [True: 1.12k, False: 0]
  ------------------
14197|  1.12k|}
_PyUnicode_InternImmortal:
14405|  11.6k|{
14406|  11.6k|    *p = intern_common(interp, *p, 1);
14407|       |    assert(*p);
  ------------------
  |  Branch (14407:5): [True: 11.6k, False: 0]
  ------------------
14408|  11.6k|}
_PyUnicode_InternMortal:
14412|  7.65k|{
14413|  7.65k|    *p = intern_common(interp, *p, 0);
14414|       |    assert(*p);
  ------------------
  |  Branch (14414:5): [True: 7.65k, False: 0]
  ------------------
14415|  7.65k|}
PyUnicode_InternFromString:
14443|  2.86k|{
14444|  2.86k|    PyObject *s = PyUnicode_FromString(cp);
14445|  2.86k|    if (s == NULL) {
  ------------------
  |  Branch (14445:9): [True: 0, False: 2.86k]
  ------------------
14446|      0|        return NULL;
14447|      0|    }
14448|  2.86k|    PyInterpreterState *interp = _PyInterpreterState_GET();
14449|  2.86k|    _PyUnicode_InternMortal(interp, &s);
14450|  2.86k|    return s;
14451|  2.86k|}
_PyUnicode_InitEncodings:
14905|      1|{
14906|      1|    PyStatus status = _PyCodec_InitRegistry(tstate->interp);
14907|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
14908|      0|        return status;
14909|      0|    }
14910|      1|    status = init_fs_encoding(tstate);
14911|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
14912|      0|        return status;
14913|      0|    }
14914|       |
14915|      1|    return init_stdio_encoding(tstate->interp);
14916|      1|}
unicodeobject.c:get_interned_dict:
  212|  4.63k|{
  213|  4.63k|    return _Py_INTERP_CACHED_OBJECT(interp, interned_strings);
  ------------------
  |  |   22|  4.63k|    (interp)->cached_objects.NAME
  ------------------
  214|  4.63k|}
unicodeobject.c:_PyUnicode_UTF8:
  114|     12|{
  115|     12|    return FT_ATOMIC_LOAD_PTR_ACQUIRE(_PyCompactUnicodeObject_CAST(op)->utf8);
  ------------------
  |  |  150|     36|#define FT_ATOMIC_LOAD_PTR_ACQUIRE(value) value
  |  |  ------------------
  |  |  |  Branch (150:43): [True: 12, False: 0]
  |  |  ------------------
  ------------------
  116|     12|}
unicodeobject.c:_PyUnicode_HAS_UTF8_MEMORY:
  177|  4.41k|{
  178|  4.41k|    return (!PyUnicode_IS_COMPACT_ASCII(op)
  ------------------
  |  |  241|  8.83k|#define PyUnicode_IS_COMPACT_ASCII(op) PyUnicode_IS_COMPACT_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  4.41k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  4.41k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (178:13): [True: 2, False: 4.41k]
  ------------------
  179|      2|            && _PyUnicode_UTF8(op) != NULL
  ------------------
  |  Branch (179:16): [True: 0, False: 2]
  ------------------
  180|      0|            && _PyUnicode_UTF8(op) != PyUnicode_DATA(op));
  ------------------
  |  |  284|      0|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (180:16): [True: 0, False: 0]
  ------------------
  181|  4.41k|}
unicodeobject.c:_copy_characters:
 1382|    250|{
 1383|    250|    int from_kind, to_kind;
 1384|    250|    const void *from_data;
 1385|    250|    void *to_data;
 1386|       |
 1387|    250|    assert(0 <= how_many);
  ------------------
  |  Branch (1387:5): [True: 250, False: 0]
  ------------------
 1388|    250|    assert(0 <= from_start);
  ------------------
  |  Branch (1388:5): [True: 250, False: 0]
  ------------------
 1389|    250|    assert(0 <= to_start);
  ------------------
  |  Branch (1389:5): [True: 250, False: 0]
  ------------------
 1390|    250|    assert(PyUnicode_Check(from));
  ------------------
  |  Branch (1390:5): [True: 250, False: 0]
  ------------------
 1391|    250|    assert(from_start + how_many <= PyUnicode_GET_LENGTH(from));
  ------------------
  |  Branch (1391:5): [True: 250, False: 0]
  ------------------
 1392|       |
 1393|    250|    assert(to == NULL || PyUnicode_Check(to));
  ------------------
  |  Branch (1393:5): [True: 0, False: 250]
  |  Branch (1393:5): [True: 250, False: 0]
  ------------------
 1394|       |
 1395|    250|    if (how_many == 0) {
  ------------------
  |  Branch (1395:9): [True: 0, False: 250]
  ------------------
 1396|      0|        return 0;
 1397|      0|    }
 1398|       |
 1399|    250|    assert(to != NULL);
  ------------------
  |  Branch (1399:5): [True: 250, False: 0]
  ------------------
 1400|    250|    assert(to_start + how_many <= PyUnicode_GET_LENGTH(to));
  ------------------
  |  Branch (1400:5): [True: 250, False: 0]
  ------------------
 1401|       |
 1402|    250|    from_kind = PyUnicode_KIND(from);
  ------------------
  |  |  258|    250|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|    500|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 250, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1403|    250|    from_data = PyUnicode_DATA(from);
  ------------------
  |  |  284|    250|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    250|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    250|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1404|    250|    to_kind = PyUnicode_KIND(to);
  ------------------
  |  |  258|    250|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|    500|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 250, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1405|    250|    to_data = PyUnicode_DATA(to);
  ------------------
  |  |  284|    250|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    250|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    250|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1406|       |
 1407|       |#ifdef Py_DEBUG
 1408|       |    if (!check_maxchar
 1409|       |        && PyUnicode_MAX_CHAR_VALUE(from) > PyUnicode_MAX_CHAR_VALUE(to))
 1410|       |    {
 1411|       |        Py_UCS4 to_maxchar = PyUnicode_MAX_CHAR_VALUE(to);
 1412|       |        Py_UCS4 ch;
 1413|       |        Py_ssize_t i;
 1414|       |        for (i=0; i < how_many; i++) {
 1415|       |            ch = PyUnicode_READ(from_kind, from_data, from_start + i);
 1416|       |            assert(ch <= to_maxchar);
 1417|       |        }
 1418|       |    }
 1419|       |#endif
 1420|       |
 1421|    250|    if (from_kind == to_kind) {
  ------------------
  |  Branch (1421:9): [True: 249, False: 1]
  ------------------
 1422|    249|        if (check_maxchar
  ------------------
  |  Branch (1422:13): [True: 0, False: 249]
  ------------------
 1423|      0|            && !PyUnicode_IS_ASCII(from) && PyUnicode_IS_ASCII(to))
  ------------------
  |  |  227|    249|#define PyUnicode_IS_ASCII(op) PyUnicode_IS_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                          && !PyUnicode_IS_ASCII(from) && PyUnicode_IS_ASCII(to))
  ------------------
  |  |  227|      0|#define PyUnicode_IS_ASCII(op) PyUnicode_IS_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (227:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1423:16): [True: 0, False: 0]
  ------------------
 1424|      0|        {
 1425|       |            /* Writing Latin-1 characters into an ASCII string requires to
 1426|       |               check that all written characters are pure ASCII */
 1427|      0|            Py_UCS4 max_char;
 1428|      0|            max_char = ucs1lib_find_max_char(from_data,
 1429|      0|                                             (const Py_UCS1*)from_data + how_many);
 1430|      0|            if (max_char >= 128)
  ------------------
  |  Branch (1430:17): [True: 0, False: 0]
  ------------------
 1431|      0|                return -1;
 1432|      0|        }
 1433|    249|        memcpy((char*)to_data + to_kind * to_start,
 1434|    249|                  (const char*)from_data + from_kind * from_start,
 1435|    249|                  to_kind * how_many);
 1436|    249|    }
 1437|      1|    else if (from_kind == PyUnicode_1BYTE_KIND
  ------------------
  |  Branch (1437:14): [True: 1, False: 0]
  ------------------
 1438|      1|             && to_kind == PyUnicode_2BYTE_KIND)
  ------------------
  |  Branch (1438:17): [True: 1, False: 0]
  ------------------
 1439|      1|    {
 1440|      1|        _PyUnicode_CONVERT_BYTES(
  ------------------
  |  |   45|      1|    do {                                                \
  |  |   46|      1|        to_type *_to = (to_type *)(to);                 \
  |  |   47|      1|        const from_type *_iter = (const from_type *)(begin);\
  |  |   48|      1|        const from_type *_end = (const from_type *)(end);\
  |  |   49|      1|        Py_ssize_t n = (_end) - (_iter);                \
  |  |   50|      1|        const from_type *_unrolled_end =                \
  |  |   51|      1|            _iter + _Py_SIZE_ROUND_DOWN(n, 4);          \
  |  |  ------------------
  |  |  |  |  211|      1|#define _Py_SIZE_ROUND_DOWN(n, a) ((size_t)(n) & ~(size_t)((a) - 1))
  |  |  ------------------
  |  |   52|     40|        while (_iter < (_unrolled_end)) {               \
  |  |  ------------------
  |  |  |  Branch (52:16): [True: 39, False: 1]
  |  |  ------------------
  |  |   53|     39|            _to[0] = (to_type) _iter[0];                \
  |  |   54|     39|            _to[1] = (to_type) _iter[1];                \
  |  |   55|     39|            _to[2] = (to_type) _iter[2];                \
  |  |   56|     39|            _to[3] = (to_type) _iter[3];                \
  |  |   57|     39|            _iter += 4; _to += 4;                       \
  |  |   58|     39|        }                                               \
  |  |   59|      3|        while (_iter < (_end))                          \
  |  |  ------------------
  |  |  |  Branch (59:16): [True: 2, False: 1]
  |  |  ------------------
  |  |   60|      2|            *_to++ = (to_type) *_iter++;                \
  |  |   61|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (61:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1441|      1|            Py_UCS1, Py_UCS2,
 1442|      1|            PyUnicode_1BYTE_DATA(from) + from_start,
 1443|      1|            PyUnicode_1BYTE_DATA(from) + from_start + how_many,
 1444|      1|            PyUnicode_2BYTE_DATA(to) + to_start
 1445|      1|            );
 1446|      1|    }
 1447|      0|    else if (from_kind == PyUnicode_1BYTE_KIND
  ------------------
  |  Branch (1447:14): [True: 0, False: 0]
  ------------------
 1448|      0|             && to_kind == PyUnicode_4BYTE_KIND)
  ------------------
  |  Branch (1448:17): [True: 0, False: 0]
  ------------------
 1449|      0|    {
 1450|      0|        _PyUnicode_CONVERT_BYTES(
  ------------------
  |  |   45|      0|    do {                                                \
  |  |   46|      0|        to_type *_to = (to_type *)(to);                 \
  |  |   47|      0|        const from_type *_iter = (const from_type *)(begin);\
  |  |   48|      0|        const from_type *_end = (const from_type *)(end);\
  |  |   49|      0|        Py_ssize_t n = (_end) - (_iter);                \
  |  |   50|      0|        const from_type *_unrolled_end =                \
  |  |   51|      0|            _iter + _Py_SIZE_ROUND_DOWN(n, 4);          \
  |  |  ------------------
  |  |  |  |  211|      0|#define _Py_SIZE_ROUND_DOWN(n, a) ((size_t)(n) & ~(size_t)((a) - 1))
  |  |  ------------------
  |  |   52|      0|        while (_iter < (_unrolled_end)) {               \
  |  |  ------------------
  |  |  |  Branch (52:16): [True: 0, False: 0]
  |  |  ------------------
  |  |   53|      0|            _to[0] = (to_type) _iter[0];                \
  |  |   54|      0|            _to[1] = (to_type) _iter[1];                \
  |  |   55|      0|            _to[2] = (to_type) _iter[2];                \
  |  |   56|      0|            _to[3] = (to_type) _iter[3];                \
  |  |   57|      0|            _iter += 4; _to += 4;                       \
  |  |   58|      0|        }                                               \
  |  |   59|      0|        while (_iter < (_end))                          \
  |  |  ------------------
  |  |  |  Branch (59:16): [True: 0, False: 0]
  |  |  ------------------
  |  |   60|      0|            *_to++ = (to_type) *_iter++;                \
  |  |   61|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (61:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1451|      0|            Py_UCS1, Py_UCS4,
 1452|      0|            PyUnicode_1BYTE_DATA(from) + from_start,
 1453|      0|            PyUnicode_1BYTE_DATA(from) + from_start + how_many,
 1454|      0|            PyUnicode_4BYTE_DATA(to) + to_start
 1455|      0|            );
 1456|      0|    }
 1457|      0|    else if (from_kind == PyUnicode_2BYTE_KIND
  ------------------
  |  Branch (1457:14): [True: 0, False: 0]
  ------------------
 1458|      0|             && to_kind == PyUnicode_4BYTE_KIND)
  ------------------
  |  Branch (1458:17): [True: 0, False: 0]
  ------------------
 1459|      0|    {
 1460|      0|        _PyUnicode_CONVERT_BYTES(
  ------------------
  |  |   45|      0|    do {                                                \
  |  |   46|      0|        to_type *_to = (to_type *)(to);                 \
  |  |   47|      0|        const from_type *_iter = (const from_type *)(begin);\
  |  |   48|      0|        const from_type *_end = (const from_type *)(end);\
  |  |   49|      0|        Py_ssize_t n = (_end) - (_iter);                \
  |  |   50|      0|        const from_type *_unrolled_end =                \
  |  |   51|      0|            _iter + _Py_SIZE_ROUND_DOWN(n, 4);          \
  |  |  ------------------
  |  |  |  |  211|      0|#define _Py_SIZE_ROUND_DOWN(n, a) ((size_t)(n) & ~(size_t)((a) - 1))
  |  |  ------------------
  |  |   52|      0|        while (_iter < (_unrolled_end)) {               \
  |  |  ------------------
  |  |  |  Branch (52:16): [True: 0, False: 0]
  |  |  ------------------
  |  |   53|      0|            _to[0] = (to_type) _iter[0];                \
  |  |   54|      0|            _to[1] = (to_type) _iter[1];                \
  |  |   55|      0|            _to[2] = (to_type) _iter[2];                \
  |  |   56|      0|            _to[3] = (to_type) _iter[3];                \
  |  |   57|      0|            _iter += 4; _to += 4;                       \
  |  |   58|      0|        }                                               \
  |  |   59|      0|        while (_iter < (_end))                          \
  |  |  ------------------
  |  |  |  Branch (59:16): [True: 0, False: 0]
  |  |  ------------------
  |  |   60|      0|            *_to++ = (to_type) *_iter++;                \
  |  |   61|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (61:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1461|      0|            Py_UCS2, Py_UCS4,
 1462|      0|            PyUnicode_2BYTE_DATA(from) + from_start,
 1463|      0|            PyUnicode_2BYTE_DATA(from) + from_start + how_many,
 1464|      0|            PyUnicode_4BYTE_DATA(to) + to_start
 1465|      0|            );
 1466|      0|    }
 1467|      0|    else {
 1468|      0|        assert (PyUnicode_MAX_CHAR_VALUE(from) > PyUnicode_MAX_CHAR_VALUE(to));
  ------------------
  |  Branch (1468:9): [True: 0, False: 0]
  ------------------
 1469|       |
 1470|      0|        if (!check_maxchar) {
  ------------------
  |  Branch (1470:13): [True: 0, False: 0]
  ------------------
 1471|      0|            if (from_kind == PyUnicode_2BYTE_KIND
  ------------------
  |  Branch (1471:17): [True: 0, False: 0]
  ------------------
 1472|      0|                && to_kind == PyUnicode_1BYTE_KIND)
  ------------------
  |  Branch (1472:20): [True: 0, False: 0]
  ------------------
 1473|      0|            {
 1474|      0|                _PyUnicode_CONVERT_BYTES(
  ------------------
  |  |   45|      0|    do {                                                \
  |  |   46|      0|        to_type *_to = (to_type *)(to);                 \
  |  |   47|      0|        const from_type *_iter = (const from_type *)(begin);\
  |  |   48|      0|        const from_type *_end = (const from_type *)(end);\
  |  |   49|      0|        Py_ssize_t n = (_end) - (_iter);                \
  |  |   50|      0|        const from_type *_unrolled_end =                \
  |  |   51|      0|            _iter + _Py_SIZE_ROUND_DOWN(n, 4);          \
  |  |  ------------------
  |  |  |  |  211|      0|#define _Py_SIZE_ROUND_DOWN(n, a) ((size_t)(n) & ~(size_t)((a) - 1))
  |  |  ------------------
  |  |   52|      0|        while (_iter < (_unrolled_end)) {               \
  |  |  ------------------
  |  |  |  Branch (52:16): [True: 0, False: 0]
  |  |  ------------------
  |  |   53|      0|            _to[0] = (to_type) _iter[0];                \
  |  |   54|      0|            _to[1] = (to_type) _iter[1];                \
  |  |   55|      0|            _to[2] = (to_type) _iter[2];                \
  |  |   56|      0|            _to[3] = (to_type) _iter[3];                \
  |  |   57|      0|            _iter += 4; _to += 4;                       \
  |  |   58|      0|        }                                               \
  |  |   59|      0|        while (_iter < (_end))                          \
  |  |  ------------------
  |  |  |  Branch (59:16): [True: 0, False: 0]
  |  |  ------------------
  |  |   60|      0|            *_to++ = (to_type) *_iter++;                \
  |  |   61|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (61:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1475|      0|                    Py_UCS2, Py_UCS1,
 1476|      0|                    PyUnicode_2BYTE_DATA(from) + from_start,
 1477|      0|                    PyUnicode_2BYTE_DATA(from) + from_start + how_many,
 1478|      0|                    PyUnicode_1BYTE_DATA(to) + to_start
 1479|      0|                    );
 1480|      0|            }
 1481|      0|            else if (from_kind == PyUnicode_4BYTE_KIND
  ------------------
  |  Branch (1481:22): [True: 0, False: 0]
  ------------------
 1482|      0|                     && to_kind == PyUnicode_1BYTE_KIND)
  ------------------
  |  Branch (1482:25): [True: 0, False: 0]
  ------------------
 1483|      0|            {
 1484|      0|                _PyUnicode_CONVERT_BYTES(
  ------------------
  |  |   45|      0|    do {                                                \
  |  |   46|      0|        to_type *_to = (to_type *)(to);                 \
  |  |   47|      0|        const from_type *_iter = (const from_type *)(begin);\
  |  |   48|      0|        const from_type *_end = (const from_type *)(end);\
  |  |   49|      0|        Py_ssize_t n = (_end) - (_iter);                \
  |  |   50|      0|        const from_type *_unrolled_end =                \
  |  |   51|      0|            _iter + _Py_SIZE_ROUND_DOWN(n, 4);          \
  |  |  ------------------
  |  |  |  |  211|      0|#define _Py_SIZE_ROUND_DOWN(n, a) ((size_t)(n) & ~(size_t)((a) - 1))
  |  |  ------------------
  |  |   52|      0|        while (_iter < (_unrolled_end)) {               \
  |  |  ------------------
  |  |  |  Branch (52:16): [True: 0, False: 0]
  |  |  ------------------
  |  |   53|      0|            _to[0] = (to_type) _iter[0];                \
  |  |   54|      0|            _to[1] = (to_type) _iter[1];                \
  |  |   55|      0|            _to[2] = (to_type) _iter[2];                \
  |  |   56|      0|            _to[3] = (to_type) _iter[3];                \
  |  |   57|      0|            _iter += 4; _to += 4;                       \
  |  |   58|      0|        }                                               \
  |  |   59|      0|        while (_iter < (_end))                          \
  |  |  ------------------
  |  |  |  Branch (59:16): [True: 0, False: 0]
  |  |  ------------------
  |  |   60|      0|            *_to++ = (to_type) *_iter++;                \
  |  |   61|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (61:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1485|      0|                    Py_UCS4, Py_UCS1,
 1486|      0|                    PyUnicode_4BYTE_DATA(from) + from_start,
 1487|      0|                    PyUnicode_4BYTE_DATA(from) + from_start + how_many,
 1488|      0|                    PyUnicode_1BYTE_DATA(to) + to_start
 1489|      0|                    );
 1490|      0|            }
 1491|      0|            else if (from_kind == PyUnicode_4BYTE_KIND
  ------------------
  |  Branch (1491:22): [True: 0, False: 0]
  ------------------
 1492|      0|                     && to_kind == PyUnicode_2BYTE_KIND)
  ------------------
  |  Branch (1492:25): [True: 0, False: 0]
  ------------------
 1493|      0|            {
 1494|      0|                _PyUnicode_CONVERT_BYTES(
  ------------------
  |  |   45|      0|    do {                                                \
  |  |   46|      0|        to_type *_to = (to_type *)(to);                 \
  |  |   47|      0|        const from_type *_iter = (const from_type *)(begin);\
  |  |   48|      0|        const from_type *_end = (const from_type *)(end);\
  |  |   49|      0|        Py_ssize_t n = (_end) - (_iter);                \
  |  |   50|      0|        const from_type *_unrolled_end =                \
  |  |   51|      0|            _iter + _Py_SIZE_ROUND_DOWN(n, 4);          \
  |  |  ------------------
  |  |  |  |  211|      0|#define _Py_SIZE_ROUND_DOWN(n, a) ((size_t)(n) & ~(size_t)((a) - 1))
  |  |  ------------------
  |  |   52|      0|        while (_iter < (_unrolled_end)) {               \
  |  |  ------------------
  |  |  |  Branch (52:16): [True: 0, False: 0]
  |  |  ------------------
  |  |   53|      0|            _to[0] = (to_type) _iter[0];                \
  |  |   54|      0|            _to[1] = (to_type) _iter[1];                \
  |  |   55|      0|            _to[2] = (to_type) _iter[2];                \
  |  |   56|      0|            _to[3] = (to_type) _iter[3];                \
  |  |   57|      0|            _iter += 4; _to += 4;                       \
  |  |   58|      0|        }                                               \
  |  |   59|      0|        while (_iter < (_end))                          \
  |  |  ------------------
  |  |  |  Branch (59:16): [True: 0, False: 0]
  |  |  ------------------
  |  |   60|      0|            *_to++ = (to_type) *_iter++;                \
  |  |   61|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (61:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1495|      0|                    Py_UCS4, Py_UCS2,
 1496|      0|                    PyUnicode_4BYTE_DATA(from) + from_start,
 1497|      0|                    PyUnicode_4BYTE_DATA(from) + from_start + how_many,
 1498|      0|                    PyUnicode_2BYTE_DATA(to) + to_start
 1499|      0|                    );
 1500|      0|            }
 1501|      0|            else {
 1502|      0|                Py_UNREACHABLE();
  ------------------
  |  |  264|      0|#  define Py_UNREACHABLE() __builtin_unreachable()
  ------------------
 1503|      0|            }
 1504|      0|        }
 1505|      0|        else {
 1506|      0|            const Py_UCS4 to_maxchar = PyUnicode_MAX_CHAR_VALUE(to);
  ------------------
  |  |  405|      0|    PyUnicode_MAX_CHAR_VALUE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1507|      0|            Py_UCS4 ch;
 1508|      0|            Py_ssize_t i;
 1509|       |
 1510|      0|            for (i=0; i < how_many; i++) {
  ------------------
  |  Branch (1510:23): [True: 0, False: 0]
  ------------------
 1511|      0|                ch = PyUnicode_READ(from_kind, from_data, from_start + i);
  ------------------
  |  |  354|      0|    PyUnicode_READ(_Py_STATIC_CAST(int, kind), \
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  355|      0|                   _Py_STATIC_CAST(const void*, data), \
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  356|      0|                   (index))
  ------------------
 1512|      0|                if (ch > to_maxchar)
  ------------------
  |  Branch (1512:21): [True: 0, False: 0]
  ------------------
 1513|      0|                    return -1;
 1514|      0|                PyUnicode_WRITE(to_kind, to_data, to_start + i, ch);
  ------------------
  |  |  335|      0|    PyUnicode_WRITE(_Py_STATIC_CAST(int, kind), _Py_CAST(void*, data), \
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |                   PyUnicode_WRITE(_Py_STATIC_CAST(int, kind), _Py_CAST(void*, data), \
  |  |  ------------------
  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  336|      0|                    (index), _Py_STATIC_CAST(Py_UCS4, value))
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
 1515|      0|            }
 1516|      0|        }
 1517|      0|    }
 1518|    250|    return 0;
 1519|    250|}
unicodeobject.c:unicode_resize:
 1753|      2|{
 1754|      2|    PyObject *unicode;
 1755|      2|    Py_ssize_t old_length;
 1756|       |
 1757|      2|    assert(p_unicode != NULL);
  ------------------
  |  Branch (1757:5): [True: 2, False: 0]
  ------------------
 1758|      2|    unicode = *p_unicode;
 1759|       |
 1760|      2|    assert(unicode != NULL);
  ------------------
  |  Branch (1760:5): [True: 2, False: 0]
  ------------------
 1761|      2|    assert(PyUnicode_Check(unicode));
  ------------------
  |  Branch (1761:5): [True: 2, False: 0]
  ------------------
 1762|      2|    assert(0 <= length);
  ------------------
  |  Branch (1762:5): [True: 2, False: 0]
  ------------------
 1763|       |
 1764|      2|    old_length = PyUnicode_GET_LENGTH(unicode);
  ------------------
  |  |  299|      2|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1765|      2|    if (old_length == length)
  ------------------
  |  Branch (1765:9): [True: 0, False: 2]
  ------------------
 1766|      0|        return 0;
 1767|       |
 1768|      2|    if (length == 0) {
  ------------------
  |  Branch (1768:9): [True: 0, False: 2]
  ------------------
 1769|      0|        PyObject *empty = _PyUnicode_GetEmpty();
 1770|      0|        Py_SETREF(*p_unicode, empty);
  ------------------
  |  |  352|      0|    do { \
  |  |  353|      0|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  354|      0|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  355|      0|        *_tmp_dst_ptr = (src); \
  |  |  356|      0|        Py_DECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  357|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (357:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1771|      0|        return 0;
 1772|      0|    }
 1773|       |
 1774|      2|    if (!_PyUnicode_IsModifiable(unicode)) {
  ------------------
  |  Branch (1774:9): [True: 0, False: 2]
  ------------------
 1775|      0|        PyObject *copy = resize_copy(unicode, length);
 1776|      0|        if (copy == NULL)
  ------------------
  |  Branch (1776:13): [True: 0, False: 0]
  ------------------
 1777|      0|            return -1;
 1778|      0|        Py_SETREF(*p_unicode, copy);
  ------------------
  |  |  352|      0|    do { \
  |  |  353|      0|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  354|      0|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  355|      0|        *_tmp_dst_ptr = (src); \
  |  |  356|      0|        Py_DECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  357|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (357:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1779|      0|        return 0;
 1780|      0|    }
 1781|       |
 1782|      2|    if (PyUnicode_IS_COMPACT(unicode)) {
  ------------------
  |  |  234|      2|#define PyUnicode_IS_COMPACT(op) PyUnicode_IS_COMPACT(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (234:34): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 1783|      2|        PyObject *new_unicode = _PyUnicode_ResizeCompact(unicode, length);
 1784|      2|        if (new_unicode == NULL)
  ------------------
  |  Branch (1784:13): [True: 0, False: 2]
  ------------------
 1785|      0|            return -1;
 1786|      2|        *p_unicode = new_unicode;
 1787|      2|        return 0;
 1788|      2|    }
 1789|      0|    return resize_inplace(unicode, length);
 1790|      2|}
unicodeobject.c:get_latin1_char:
 1811|    153|{
 1812|    153|    PyObject *o = LATIN1(ch);
  ------------------
  |  |  184|    153|#define LATIN1 _Py_LATIN1_CHR
  |  |  ------------------
  |  |  |  |  921|    153|    ((CH) < 128 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (921:6): [True: 153, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  922|    153|     ? (PyObject*)&_Py_SINGLETON(strings).ascii[(CH)] \
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|    153|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|    153|    _PyRuntime.static_objects.NAME
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  923|    153|     : (PyObject*)&_Py_SINGLETON(strings).latin1[(CH) - 128])
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1813|    153|    return o;
 1814|    153|}
unicodeobject.c:find_maxchar_surrogates:
 1588|     61|{
 1589|     61|    const wchar_t *iter;
 1590|     61|    Py_UCS4 ch;
 1591|       |
 1592|     61|    assert(num_surrogates != NULL && maxchar != NULL);
  ------------------
  |  Branch (1592:5): [True: 61, False: 0]
  |  Branch (1592:5): [True: 61, False: 0]
  ------------------
 1593|     61|    *num_surrogates = 0;
 1594|     61|    *maxchar = 0;
 1595|       |
 1596|  2.35k|    for (iter = begin; iter < end; ) {
  ------------------
  |  Branch (1596:24): [True: 2.29k, False: 61]
  ------------------
 1597|       |#if SIZEOF_WCHAR_T == 2
 1598|       |        if (Py_UNICODE_IS_HIGH_SURROGATE(iter[0])
 1599|       |            && (iter+1) < end
 1600|       |            && Py_UNICODE_IS_LOW_SURROGATE(iter[1]))
 1601|       |        {
 1602|       |            ch = Py_UNICODE_JOIN_SURROGATES(iter[0], iter[1]);
 1603|       |            ++(*num_surrogates);
 1604|       |            iter += 2;
 1605|       |        }
 1606|       |        else
 1607|       |#endif
 1608|  2.29k|        {
 1609|  2.29k|            ch = *iter;
 1610|  2.29k|            iter++;
 1611|  2.29k|        }
 1612|  2.29k|        if (ch > *maxchar) {
  ------------------
  |  Branch (1612:13): [True: 189, False: 2.10k]
  ------------------
 1613|    189|            *maxchar = ch;
 1614|    189|            if (*maxchar > MAX_UNICODE) {
  ------------------
  |  |  104|    189|#define MAX_UNICODE _Py_MAX_UNICODE
  |  |  ------------------
  |  |  |  |   16|    189|#define _Py_MAX_UNICODE 0x10ffff
  |  |  ------------------
  ------------------
  |  Branch (1614:17): [True: 0, False: 189]
  ------------------
 1615|      0|                PyErr_Format(PyExc_ValueError,
 1616|      0|                             "character U+%x is not in range [U+0000; U+%x]",
 1617|      0|                             ch, MAX_UNICODE);
  ------------------
  |  |  104|      0|#define MAX_UNICODE _Py_MAX_UNICODE
  |  |  ------------------
  |  |  |  |   16|      0|#define _Py_MAX_UNICODE 0x10ffff
  |  |  ------------------
  ------------------
 1618|      0|                return -1;
 1619|      0|            }
 1620|    189|        }
 1621|  2.29k|    }
 1622|     61|    return 0;
 1623|     61|}
unicodeobject.c:unicode_write_widechar:
 1847|     61|{
 1848|     61|    switch (kind) {
 1849|     61|    case PyUnicode_1BYTE_KIND:
  ------------------
  |  Branch (1849:5): [True: 61, False: 0]
  ------------------
 1850|     61|        _PyUnicode_CONVERT_BYTES(wchar_t, unsigned char, u, u + size, data);
  ------------------
  |  |   45|     61|    do {                                                \
  |  |   46|     61|        to_type *_to = (to_type *)(to);                 \
  |  |   47|     61|        const from_type *_iter = (const from_type *)(begin);\
  |  |   48|     61|        const from_type *_end = (const from_type *)(end);\
  |  |   49|     61|        Py_ssize_t n = (_end) - (_iter);                \
  |  |   50|     61|        const from_type *_unrolled_end =                \
  |  |   51|     61|            _iter + _Py_SIZE_ROUND_DOWN(n, 4);          \
  |  |  ------------------
  |  |  |  |  211|     61|#define _Py_SIZE_ROUND_DOWN(n, a) ((size_t)(n) & ~(size_t)((a) - 1))
  |  |  ------------------
  |  |   52|    610|        while (_iter < (_unrolled_end)) {               \
  |  |  ------------------
  |  |  |  Branch (52:16): [True: 549, False: 61]
  |  |  ------------------
  |  |   53|    549|            _to[0] = (to_type) _iter[0];                \
  |  |   54|    549|            _to[1] = (to_type) _iter[1];                \
  |  |   55|    549|            _to[2] = (to_type) _iter[2];                \
  |  |   56|    549|            _to[3] = (to_type) _iter[3];                \
  |  |   57|    549|            _iter += 4; _to += 4;                       \
  |  |   58|    549|        }                                               \
  |  |   59|    156|        while (_iter < (_end))                          \
  |  |  ------------------
  |  |  |  Branch (59:16): [True: 95, False: 61]
  |  |  ------------------
  |  |   60|     95|            *_to++ = (to_type) *_iter++;                \
  |  |   61|     61|    } while (0)
  |  |  ------------------
  |  |  |  Branch (61:14): [Folded, False: 61]
  |  |  ------------------
  ------------------
 1851|     61|        break;
 1852|       |
 1853|      0|    case PyUnicode_2BYTE_KIND:
  ------------------
  |  Branch (1853:5): [True: 0, False: 61]
  ------------------
 1854|       |#if SIZEOF_WCHAR_T == 2
 1855|       |        memcpy(data, u, size * 2);
 1856|       |#else
 1857|      0|        _PyUnicode_CONVERT_BYTES(wchar_t, Py_UCS2, u, u + size, data);
  ------------------
  |  |   45|      0|    do {                                                \
  |  |   46|      0|        to_type *_to = (to_type *)(to);                 \
  |  |   47|      0|        const from_type *_iter = (const from_type *)(begin);\
  |  |   48|      0|        const from_type *_end = (const from_type *)(end);\
  |  |   49|      0|        Py_ssize_t n = (_end) - (_iter);                \
  |  |   50|      0|        const from_type *_unrolled_end =                \
  |  |   51|      0|            _iter + _Py_SIZE_ROUND_DOWN(n, 4);          \
  |  |  ------------------
  |  |  |  |  211|      0|#define _Py_SIZE_ROUND_DOWN(n, a) ((size_t)(n) & ~(size_t)((a) - 1))
  |  |  ------------------
  |  |   52|      0|        while (_iter < (_unrolled_end)) {               \
  |  |  ------------------
  |  |  |  Branch (52:16): [True: 0, False: 0]
  |  |  ------------------
  |  |   53|      0|            _to[0] = (to_type) _iter[0];                \
  |  |   54|      0|            _to[1] = (to_type) _iter[1];                \
  |  |   55|      0|            _to[2] = (to_type) _iter[2];                \
  |  |   56|      0|            _to[3] = (to_type) _iter[3];                \
  |  |   57|      0|            _iter += 4; _to += 4;                       \
  |  |   58|      0|        }                                               \
  |  |   59|      0|        while (_iter < (_end))                          \
  |  |  ------------------
  |  |  |  Branch (59:16): [True: 0, False: 0]
  |  |  ------------------
  |  |   60|      0|            *_to++ = (to_type) *_iter++;                \
  |  |   61|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (61:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1858|      0|#endif
 1859|      0|        break;
 1860|       |
 1861|      0|    case PyUnicode_4BYTE_KIND:
  ------------------
  |  Branch (1861:5): [True: 0, False: 61]
  ------------------
 1862|      0|    {
 1863|       |#if SIZEOF_WCHAR_T == 2
 1864|       |        // Convert a 16-bits wchar_t representation to UCS4, this will decode
 1865|       |        // surrogate pairs.
 1866|       |        const wchar_t *end = u + size;
 1867|       |        Py_UCS4 *ucs4_out = (Py_UCS4*)data;
 1868|       |#  ifndef NDEBUG
 1869|       |        Py_UCS4 *ucs4_end = (Py_UCS4*)data + (size - num_surrogates);
 1870|       |#  endif
 1871|       |        for (const wchar_t *iter = u; iter < end; ) {
 1872|       |            assert(ucs4_out < ucs4_end);
 1873|       |            if (Py_UNICODE_IS_HIGH_SURROGATE(iter[0])
 1874|       |                && (iter+1) < end
 1875|       |                && Py_UNICODE_IS_LOW_SURROGATE(iter[1]))
 1876|       |            {
 1877|       |                *ucs4_out++ = Py_UNICODE_JOIN_SURROGATES(iter[0], iter[1]);
 1878|       |                iter += 2;
 1879|       |            }
 1880|       |            else {
 1881|       |                *ucs4_out++ = *iter;
 1882|       |                iter++;
 1883|       |            }
 1884|       |        }
 1885|       |        assert(ucs4_out == ucs4_end);
 1886|       |#else
 1887|      0|        assert(num_surrogates == 0);
  ------------------
  |  Branch (1887:9): [True: 0, False: 0]
  ------------------
 1888|      0|        memcpy(data, u, size * 4);
 1889|      0|#endif
 1890|      0|        break;
 1891|      0|    }
 1892|      0|    default:
  ------------------
  |  Branch (1892:5): [True: 0, False: 61]
  ------------------
 1893|      0|        Py_UNREACHABLE();
  ------------------
  |  |  264|      0|#  define Py_UNREACHABLE() __builtin_unreachable()
  ------------------
 1894|     61|    }
 1895|     61|}
unicodeobject.c:_PyUnicode_FromUCS1:
 2157|  4.48k|{
 2158|  4.48k|    PyObject *res;
 2159|  4.48k|    unsigned char max_char;
 2160|       |
 2161|  4.48k|    if (size == 0) {
  ------------------
  |  Branch (2161:9): [True: 3, False: 4.47k]
  ------------------
 2162|      3|        _Py_RETURN_UNICODE_EMPTY();
  ------------------
  |  |  375|      3|    do {                             \
  |  |  376|      3|        return _PyUnicode_GetEmpty();\
  |  |  377|      3|    } while (0)
  |  |  ------------------
  |  |  |  Branch (377:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2163|      3|    }
 2164|  4.48k|    assert(size > 0);
  ------------------
  |  Branch (2164:5): [True: 4.47k, False: 0]
  ------------------
 2165|  4.47k|    if (size == 1) {
  ------------------
  |  Branch (2165:9): [True: 138, False: 4.34k]
  ------------------
 2166|    138|        return get_latin1_char(u[0]);
 2167|    138|    }
 2168|       |
 2169|  4.34k|    max_char = ucs1lib_find_max_char(u, u + size);
 2170|  4.34k|    res = PyUnicode_New(size, max_char);
 2171|  4.34k|    if (!res)
  ------------------
  |  Branch (2171:9): [True: 0, False: 4.34k]
  ------------------
 2172|      0|        return NULL;
 2173|  4.34k|    memcpy(PyUnicode_1BYTE_DATA(res), u, size);
  ------------------
  |  |  291|  4.34k|#define PyUnicode_1BYTE_DATA(op) _Py_STATIC_CAST(Py_UCS1*, PyUnicode_DATA(op))
  |  |  ------------------
  |  |  |  |   34|  4.34k|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
 2174|  4.34k|    assert(_PyUnicode_CheckConsistency(res, 1));
  ------------------
  |  Branch (2174:5): [True: 4.34k, False: 0]
  ------------------
 2175|  4.34k|    return res;
 2176|  4.34k|}
unicodeobject.c:unicode_from_format:
 3057|     24|{
 3058|     24|    Py_ssize_t len = strlen(format);
 3059|     24|    writer->min_length += len + 100;
 3060|     24|    writer->overallocate = 1;
 3061|       |
 3062|       |    // Copy varags to be able to pass a reference to a subfunction.
 3063|     24|    va_list vargs2;
 3064|     24|    va_copy(vargs2, vargs);
 3065|       |
 3066|       |    // _PyUnicodeWriter_WriteASCIIString() below requires the format string
 3067|       |    // to be encoded to ASCII.
 3068|     24|    int is_ascii = (ucs1lib_find_max_char((Py_UCS1*)format, (Py_UCS1*)format + len) < 128);
 3069|     24|    if (!is_ascii) {
  ------------------
  |  Branch (3069:9): [True: 0, False: 24]
  ------------------
 3070|      0|        Py_ssize_t i;
 3071|      0|        for (i=0; i < len && (unsigned char)format[i] <= 127; i++);
  ------------------
  |  Branch (3071:19): [True: 0, False: 0]
  |  Branch (3071:30): [True: 0, False: 0]
  ------------------
 3072|      0|        PyErr_Format(PyExc_ValueError,
 3073|      0|            "PyUnicode_FromFormatV() expects an ASCII-encoded format "
 3074|      0|            "string, got a non-ASCII byte: 0x%02x",
 3075|      0|            (unsigned char)format[i]);
 3076|      0|        goto fail;
 3077|      0|    }
 3078|       |
 3079|    138|    for (const char *f = format; *f; ) {
  ------------------
  |  Branch (3079:34): [True: 114, False: 24]
  ------------------
 3080|    114|        if (*f == '%') {
  ------------------
  |  Branch (3080:13): [True: 48, False: 66]
  ------------------
 3081|     48|            f = unicode_fromformat_arg(writer, f, &vargs2);
 3082|     48|            if (f == NULL)
  ------------------
  |  Branch (3082:17): [True: 0, False: 48]
  ------------------
 3083|      0|                goto fail;
 3084|     48|        }
 3085|     66|        else {
 3086|     66|            const char *p = strchr(f, '%');
 3087|     66|            if (p != NULL) {
  ------------------
  |  Branch (3087:17): [True: 45, False: 21]
  ------------------
 3088|     45|                len = p - f;
 3089|     45|            }
 3090|     21|            else {
 3091|     21|                len = strlen(f);
 3092|     21|                writer->overallocate = 0;
 3093|     21|            }
 3094|       |
 3095|     66|            if (_PyUnicodeWriter_WriteASCIIString(writer, f, len) < 0) {
  ------------------
  |  Branch (3095:17): [True: 0, False: 66]
  ------------------
 3096|      0|                goto fail;
 3097|      0|            }
 3098|     66|            f += len;
 3099|     66|        }
 3100|    114|    }
 3101|     24|    va_end(vargs2);
 3102|     24|    return 0;
 3103|       |
 3104|      0|  fail:
 3105|       |    va_end(vargs2);
 3106|      0|    return -1;
 3107|     24|}
unicodeobject.c:unicode_fromformat_arg:
 2643|     48|{
 2644|     48|    const char *p;
 2645|     48|    Py_ssize_t len;
 2646|     48|    int flags = 0;
 2647|     48|    Py_ssize_t width;
 2648|     48|    Py_ssize_t precision;
 2649|       |
 2650|     48|    p = f;
 2651|     48|    f++;
 2652|     48|    if (*f == '%') {
  ------------------
  |  Branch (2652:9): [True: 0, False: 48]
  ------------------
 2653|      0|        if (_PyUnicodeWriter_WriteCharInline(writer, '%') < 0)
  ------------------
  |  Branch (2653:13): [True: 0, False: 0]
  ------------------
 2654|      0|            return NULL;
 2655|      0|        f++;
 2656|      0|        return f;
 2657|      0|    }
 2658|       |
 2659|       |    /* Parse flags. Example: "%-i" => flags=F_LJUST. */
 2660|       |    /* Flags '+', ' ' and '#' are not particularly useful.
 2661|       |     * They are not worth the implementation and maintenance costs.
 2662|       |     * In addition, '#' should add "0" for "o" conversions for compatibility
 2663|       |     * with printf, but it would confuse Python users. */
 2664|     48|    while (1) {
  ------------------
  |  Branch (2664:12): [True: 48, Folded]
  ------------------
 2665|     48|        switch (*f++) {
  ------------------
  |  Branch (2665:17): [True: 0, False: 48]
  ------------------
 2666|      0|        case '-': flags |= F_LJUST; continue;
  ------------------
  |  |   18|      0|#define F_LJUST (1<<0)
  ------------------
  |  Branch (2666:9): [True: 0, False: 48]
  ------------------
 2667|      0|        case '0': flags |= F_ZERO; continue;
  ------------------
  |  |   22|      0|#define F_ZERO  (1<<4)
  ------------------
  |  Branch (2667:9): [True: 0, False: 48]
  ------------------
 2668|      0|        case '#': flags |= F_ALT; continue;
  ------------------
  |  |   21|      0|#define F_ALT   (1<<3)
  ------------------
  |  Branch (2668:9): [True: 0, False: 48]
  ------------------
 2669|     48|        }
 2670|     48|        f--;
 2671|     48|        break;
 2672|     48|    }
 2673|       |
 2674|       |    /* parse the width.precision part, e.g. "%2.5s" => width=2, precision=5 */
 2675|     48|    width = -1;
 2676|     48|    if (*f == '*') {
  ------------------
  |  Branch (2676:9): [True: 0, False: 48]
  ------------------
 2677|      0|        width = va_arg(*vargs, int);
 2678|      0|        if (width < 0) {
  ------------------
  |  Branch (2678:13): [True: 0, False: 0]
  ------------------
 2679|      0|            flags |= F_LJUST;
  ------------------
  |  |   18|      0|#define F_LJUST (1<<0)
  ------------------
 2680|      0|            width = -width;
 2681|      0|        }
 2682|      0|        f++;
 2683|      0|    }
 2684|     48|    else if (Py_ISDIGIT((unsigned)*f)) {
  ------------------
  |  |   24|     48|#define Py_ISDIGIT(c)  (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_DIGIT)
  |  |  ------------------
  |  |  |  |  138|     48|#define Py_CHARMASK(c) ((unsigned char)((c) & 0xff))
  |  |  ------------------
  |  |               #define Py_ISDIGIT(c)  (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_DIGIT)
  |  |  ------------------
  |  |  |  |   11|     48|#define PY_CTF_DIGIT  0x04
  |  |  ------------------
  |  |  |  Branch (24:24): [True: 0, False: 48]
  |  |  ------------------
  ------------------
 2685|      0|        width = *f - '0';
 2686|      0|        f++;
 2687|      0|        while (Py_ISDIGIT((unsigned)*f)) {
  ------------------
  |  |   24|      0|#define Py_ISDIGIT(c)  (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_DIGIT)
  |  |  ------------------
  |  |  |  |  138|      0|#define Py_CHARMASK(c) ((unsigned char)((c) & 0xff))
  |  |  ------------------
  |  |               #define Py_ISDIGIT(c)  (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_DIGIT)
  |  |  ------------------
  |  |  |  |   11|      0|#define PY_CTF_DIGIT  0x04
  |  |  ------------------
  |  |  |  Branch (24:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2688|      0|            if (width > (PY_SSIZE_T_MAX - ((int)*f - '0')) / 10) {
  ------------------
  |  |  137|      0|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (2688:17): [True: 0, False: 0]
  ------------------
 2689|      0|                PyErr_SetString(PyExc_ValueError,
 2690|      0|                                "width too big");
 2691|      0|                return NULL;
 2692|      0|            }
 2693|      0|            width = (width * 10) + (*f - '0');
 2694|      0|            f++;
 2695|      0|        }
 2696|      0|    }
 2697|     48|    precision = -1;
 2698|     48|    if (*f == '.') {
  ------------------
  |  Branch (2698:9): [True: 11, False: 37]
  ------------------
 2699|     11|        f++;
 2700|     11|        if (*f == '*') {
  ------------------
  |  Branch (2700:13): [True: 0, False: 11]
  ------------------
 2701|      0|            precision = va_arg(*vargs, int);
 2702|      0|            if (precision < 0) {
  ------------------
  |  Branch (2702:17): [True: 0, False: 0]
  ------------------
 2703|      0|                precision = -2;
 2704|      0|            }
 2705|      0|            f++;
 2706|      0|        }
 2707|     11|        else if (Py_ISDIGIT((unsigned)*f)) {
  ------------------
  |  |   24|     11|#define Py_ISDIGIT(c)  (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_DIGIT)
  |  |  ------------------
  |  |  |  |  138|     11|#define Py_CHARMASK(c) ((unsigned char)((c) & 0xff))
  |  |  ------------------
  |  |               #define Py_ISDIGIT(c)  (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_DIGIT)
  |  |  ------------------
  |  |  |  |   11|     11|#define PY_CTF_DIGIT  0x04
  |  |  ------------------
  |  |  |  Branch (24:24): [True: 11, False: 0]
  |  |  ------------------
  ------------------
 2708|     11|            precision = (*f - '0');
 2709|     11|            f++;
 2710|     33|            while (Py_ISDIGIT((unsigned)*f)) {
  ------------------
  |  |   24|     33|#define Py_ISDIGIT(c)  (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_DIGIT)
  |  |  ------------------
  |  |  |  |  138|     33|#define Py_CHARMASK(c) ((unsigned char)((c) & 0xff))
  |  |  ------------------
  |  |               #define Py_ISDIGIT(c)  (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_DIGIT)
  |  |  ------------------
  |  |  |  |   11|     33|#define PY_CTF_DIGIT  0x04
  |  |  ------------------
  |  |  |  Branch (24:24): [True: 22, False: 11]
  |  |  ------------------
  ------------------
 2711|     22|                if (precision > (PY_SSIZE_T_MAX - ((int)*f - '0')) / 10) {
  ------------------
  |  |  137|     22|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (2711:21): [True: 0, False: 22]
  ------------------
 2712|      0|                    PyErr_SetString(PyExc_ValueError,
 2713|      0|                                    "precision too big");
 2714|      0|                    return NULL;
 2715|      0|                }
 2716|     22|                precision = (precision * 10) + (*f - '0');
 2717|     22|                f++;
 2718|     22|            }
 2719|     11|        }
 2720|     11|    }
 2721|       |
 2722|     48|    int sizemod = 0;
 2723|     48|    if (*f == 'l') {
  ------------------
  |  Branch (2723:9): [True: 0, False: 48]
  ------------------
 2724|      0|        if (f[1] == 'l') {
  ------------------
  |  Branch (2724:13): [True: 0, False: 0]
  ------------------
 2725|      0|            sizemod = F_LONGLONG;
  ------------------
  |  | 2635|      0|#define F_LONGLONG 2
  ------------------
 2726|      0|            f += 2;
 2727|      0|        }
 2728|      0|        else {
 2729|      0|            sizemod = F_LONG;
  ------------------
  |  | 2634|      0|#define F_LONG 1
  ------------------
 2730|      0|            ++f;
 2731|      0|        }
 2732|      0|    }
 2733|     48|    else if (*f == 'z') {
  ------------------
  |  Branch (2733:14): [True: 0, False: 48]
  ------------------
 2734|      0|        sizemod = F_SIZE;
  ------------------
  |  | 2636|      0|#define F_SIZE 3
  ------------------
 2735|      0|        ++f;
 2736|      0|    }
 2737|     48|    else if (*f == 't') {
  ------------------
  |  Branch (2737:14): [True: 0, False: 48]
  ------------------
 2738|      0|        sizemod = F_PTRDIFF;
  ------------------
  |  | 2637|      0|#define F_PTRDIFF 4
  ------------------
 2739|      0|        ++f;
 2740|      0|    }
 2741|     48|    else if (*f == 'j') {
  ------------------
  |  Branch (2741:14): [True: 0, False: 48]
  ------------------
 2742|      0|        sizemod = F_INTMAX;
  ------------------
  |  | 2638|      0|#define F_INTMAX 5
  ------------------
 2743|      0|        ++f;
 2744|      0|    }
 2745|     48|    if (f[0] != '\0' && f[1] == '\0')
  ------------------
  |  Branch (2745:9): [True: 48, False: 0]
  |  Branch (2745:25): [True: 3, False: 45]
  ------------------
 2746|      3|        writer->overallocate = 0;
 2747|       |
 2748|     48|    switch (*f) {
 2749|      0|    case 'd': case 'i': case 'o': case 'u': case 'x': case 'X':
  ------------------
  |  Branch (2749:5): [True: 0, False: 48]
  |  Branch (2749:15): [True: 0, False: 48]
  |  Branch (2749:25): [True: 0, False: 48]
  |  Branch (2749:35): [True: 0, False: 48]
  |  Branch (2749:45): [True: 0, False: 48]
  |  Branch (2749:55): [True: 0, False: 48]
  ------------------
 2750|      0|        break;
 2751|      0|    case 'c': case 'p':
  ------------------
  |  Branch (2751:5): [True: 0, False: 48]
  |  Branch (2751:15): [True: 0, False: 48]
  ------------------
 2752|      0|        if (sizemod || width >= 0 || precision >= 0) goto invalid_format;
  ------------------
  |  Branch (2752:13): [True: 0, False: 0]
  |  Branch (2752:24): [True: 0, False: 0]
  |  Branch (2752:38): [True: 0, False: 0]
  ------------------
 2753|      0|        break;
 2754|     14|    case 's':
  ------------------
  |  Branch (2754:5): [True: 14, False: 34]
  ------------------
 2755|     14|    case 'V':
  ------------------
  |  Branch (2755:5): [True: 0, False: 48]
  ------------------
 2756|     14|        if (sizemod && sizemod != F_LONG) goto invalid_format;
  ------------------
  |  | 2634|      0|#define F_LONG 1
  ------------------
  |  Branch (2756:13): [True: 0, False: 14]
  |  Branch (2756:24): [True: 0, False: 0]
  ------------------
 2757|     14|        break;
 2758|     34|    default:
  ------------------
  |  Branch (2758:5): [True: 34, False: 14]
  ------------------
 2759|     34|        if (sizemod) goto invalid_format;
  ------------------
  |  Branch (2759:13): [True: 0, False: 34]
  ------------------
 2760|     34|        break;
 2761|     48|    }
 2762|       |
 2763|     48|    switch (*f) {
 2764|      0|    case 'c':
  ------------------
  |  Branch (2764:5): [True: 0, False: 48]
  ------------------
 2765|      0|    {
 2766|      0|        int ordinal = va_arg(*vargs, int);
 2767|      0|        if (ordinal < 0 || ordinal > MAX_UNICODE) {
  ------------------
  |  |  104|      0|#define MAX_UNICODE _Py_MAX_UNICODE
  |  |  ------------------
  |  |  |  |   16|      0|#define _Py_MAX_UNICODE 0x10ffff
  |  |  ------------------
  ------------------
  |  Branch (2767:13): [True: 0, False: 0]
  |  Branch (2767:28): [True: 0, False: 0]
  ------------------
 2768|      0|            PyErr_SetString(PyExc_OverflowError,
 2769|      0|                            "character argument not in range(0x110000)");
 2770|      0|            return NULL;
 2771|      0|        }
 2772|      0|        if (_PyUnicodeWriter_WriteCharInline(writer, ordinal) < 0)
  ------------------
  |  Branch (2772:13): [True: 0, False: 0]
  ------------------
 2773|      0|            return NULL;
 2774|      0|        break;
 2775|      0|    }
 2776|       |
 2777|      0|    case 'd': case 'i':
  ------------------
  |  Branch (2777:5): [True: 0, False: 48]
  |  Branch (2777:15): [True: 0, False: 48]
  ------------------
 2778|      0|    case 'o': case 'u': case 'x': case 'X':
  ------------------
  |  Branch (2778:5): [True: 0, False: 48]
  |  Branch (2778:15): [True: 0, False: 48]
  |  Branch (2778:25): [True: 0, False: 48]
  |  Branch (2778:35): [True: 0, False: 48]
  ------------------
 2779|      0|    {
 2780|      0|        char buffer[MAX_INTMAX_CHARS];
 2781|       |
 2782|       |        // Fill buffer using sprinf, with one of many possible format
 2783|       |        // strings, like "%llX" for `long long` in hexadecimal.
 2784|       |        // The type/size is in `sizemod`; the format is in `*f`.
 2785|       |
 2786|       |        // Use macros with nested switches to keep the sprintf format strings
 2787|       |        // as compile-time literals, avoiding warnings and maybe allowing
 2788|       |        // optimizations.
 2789|       |
 2790|       |        // `SPRINT` macro does one sprintf
 2791|       |        // Example usage: SPRINT("l", "X", unsigned long) expands to
 2792|       |        // sprintf(buffer, "%" "l" "X", va_arg(*vargs, unsigned long))
 2793|      0|        #define SPRINT(SIZE_SPEC, FMT_CHAR, TYPE) \
 2794|      0|            sprintf(buffer, "%" SIZE_SPEC FMT_CHAR, va_arg(*vargs, TYPE))
 2795|       |
 2796|       |        // One inner switch to handle all format variants
 2797|      0|        #define DO_SPRINTS(SIZE_SPEC, SIGNED_TYPE, UNSIGNED_TYPE)             \
 2798|      0|            switch (*f) {                                                     \
 2799|      0|                case 'o': len = SPRINT(SIZE_SPEC, "o", UNSIGNED_TYPE); break; \
 2800|      0|                case 'u': len = SPRINT(SIZE_SPEC, "u", UNSIGNED_TYPE); break; \
 2801|      0|                case 'x': len = SPRINT(SIZE_SPEC, "x", UNSIGNED_TYPE); break; \
 2802|      0|                case 'X': len = SPRINT(SIZE_SPEC, "X", UNSIGNED_TYPE); break; \
 2803|      0|                default:  len = SPRINT(SIZE_SPEC, "d", SIGNED_TYPE); break;   \
 2804|      0|            }
 2805|       |
 2806|       |        // Outer switch to handle all the sizes/types
 2807|      0|        switch (sizemod) {
 2808|      0|            case F_LONG:     DO_SPRINTS("l", long, unsigned long); break;
  ------------------
  |  | 2634|      0|#define F_LONG 1
  ------------------
                          case F_LONG:     DO_SPRINTS("l", long, unsigned long); break;
  ------------------
  |  | 2798|      0|            switch (*f) {                                                     \
  |  | 2799|      0|                case 'o': len = SPRINT(SIZE_SPEC, "o", UNSIGNED_TYPE); break; \
  |  |  ------------------
  |  |  |  | 2794|      0|            sprintf(buffer, "%" SIZE_SPEC FMT_CHAR, va_arg(*vargs, TYPE))
  |  |  ------------------
  |  |  |  Branch (2799:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 2800|      0|                case 'u': len = SPRINT(SIZE_SPEC, "u", UNSIGNED_TYPE); break; \
  |  |  ------------------
  |  |  |  | 2794|      0|            sprintf(buffer, "%" SIZE_SPEC FMT_CHAR, va_arg(*vargs, TYPE))
  |  |  ------------------
  |  |  |  Branch (2800:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 2801|      0|                case 'x': len = SPRINT(SIZE_SPEC, "x", UNSIGNED_TYPE); break; \
  |  |  ------------------
  |  |  |  | 2794|      0|            sprintf(buffer, "%" SIZE_SPEC FMT_CHAR, va_arg(*vargs, TYPE))
  |  |  ------------------
  |  |  |  Branch (2801:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 2802|      0|                case 'X': len = SPRINT(SIZE_SPEC, "X", UNSIGNED_TYPE); break; \
  |  |  ------------------
  |  |  |  | 2794|      0|            sprintf(buffer, "%" SIZE_SPEC FMT_CHAR, va_arg(*vargs, TYPE))
  |  |  ------------------
  |  |  |  Branch (2802:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 2803|      0|                default:  len = SPRINT(SIZE_SPEC, "d", SIGNED_TYPE); break;   \
  |  |  ------------------
  |  |  |  | 2794|      0|            sprintf(buffer, "%" SIZE_SPEC FMT_CHAR, va_arg(*vargs, TYPE))
  |  |  ------------------
  |  |  |  Branch (2803:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 2804|      0|            }
  ------------------
  |  Branch (2808:13): [True: 0, False: 0]
  ------------------
 2809|      0|            case F_LONGLONG: DO_SPRINTS("ll", long long, unsigned long long); break;
  ------------------
  |  | 2635|      0|#define F_LONGLONG 2
  ------------------
                          case F_LONGLONG: DO_SPRINTS("ll", long long, unsigned long long); break;
  ------------------
  |  | 2798|      0|            switch (*f) {                                                     \
  |  | 2799|      0|                case 'o': len = SPRINT(SIZE_SPEC, "o", UNSIGNED_TYPE); break; \
  |  |  ------------------
  |  |  |  | 2794|      0|            sprintf(buffer, "%" SIZE_SPEC FMT_CHAR, va_arg(*vargs, TYPE))
  |  |  ------------------
  |  |  |  Branch (2799:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 2800|      0|                case 'u': len = SPRINT(SIZE_SPEC, "u", UNSIGNED_TYPE); break; \
  |  |  ------------------
  |  |  |  | 2794|      0|            sprintf(buffer, "%" SIZE_SPEC FMT_CHAR, va_arg(*vargs, TYPE))
  |  |  ------------------
  |  |  |  Branch (2800:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 2801|      0|                case 'x': len = SPRINT(SIZE_SPEC, "x", UNSIGNED_TYPE); break; \
  |  |  ------------------
  |  |  |  | 2794|      0|            sprintf(buffer, "%" SIZE_SPEC FMT_CHAR, va_arg(*vargs, TYPE))
  |  |  ------------------
  |  |  |  Branch (2801:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 2802|      0|                case 'X': len = SPRINT(SIZE_SPEC, "X", UNSIGNED_TYPE); break; \
  |  |  ------------------
  |  |  |  | 2794|      0|            sprintf(buffer, "%" SIZE_SPEC FMT_CHAR, va_arg(*vargs, TYPE))
  |  |  ------------------
  |  |  |  Branch (2802:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 2803|      0|                default:  len = SPRINT(SIZE_SPEC, "d", SIGNED_TYPE); break;   \
  |  |  ------------------
  |  |  |  | 2794|      0|            sprintf(buffer, "%" SIZE_SPEC FMT_CHAR, va_arg(*vargs, TYPE))
  |  |  ------------------
  |  |  |  Branch (2803:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 2804|      0|            }
  ------------------
  |  Branch (2809:13): [True: 0, False: 0]
  ------------------
 2810|      0|            case F_SIZE:     DO_SPRINTS("z", Py_ssize_t, size_t); break;
  ------------------
  |  | 2636|      0|#define F_SIZE 3
  ------------------
                          case F_SIZE:     DO_SPRINTS("z", Py_ssize_t, size_t); break;
  ------------------
  |  | 2798|      0|            switch (*f) {                                                     \
  |  | 2799|      0|                case 'o': len = SPRINT(SIZE_SPEC, "o", UNSIGNED_TYPE); break; \
  |  |  ------------------
  |  |  |  | 2794|      0|            sprintf(buffer, "%" SIZE_SPEC FMT_CHAR, va_arg(*vargs, TYPE))
  |  |  ------------------
  |  |  |  Branch (2799:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 2800|      0|                case 'u': len = SPRINT(SIZE_SPEC, "u", UNSIGNED_TYPE); break; \
  |  |  ------------------
  |  |  |  | 2794|      0|            sprintf(buffer, "%" SIZE_SPEC FMT_CHAR, va_arg(*vargs, TYPE))
  |  |  ------------------
  |  |  |  Branch (2800:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 2801|      0|                case 'x': len = SPRINT(SIZE_SPEC, "x", UNSIGNED_TYPE); break; \
  |  |  ------------------
  |  |  |  | 2794|      0|            sprintf(buffer, "%" SIZE_SPEC FMT_CHAR, va_arg(*vargs, TYPE))
  |  |  ------------------
  |  |  |  Branch (2801:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 2802|      0|                case 'X': len = SPRINT(SIZE_SPEC, "X", UNSIGNED_TYPE); break; \
  |  |  ------------------
  |  |  |  | 2794|      0|            sprintf(buffer, "%" SIZE_SPEC FMT_CHAR, va_arg(*vargs, TYPE))
  |  |  ------------------
  |  |  |  Branch (2802:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 2803|      0|                default:  len = SPRINT(SIZE_SPEC, "d", SIGNED_TYPE); break;   \
  |  |  ------------------
  |  |  |  | 2794|      0|            sprintf(buffer, "%" SIZE_SPEC FMT_CHAR, va_arg(*vargs, TYPE))
  |  |  ------------------
  |  |  |  Branch (2803:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 2804|      0|            }
  ------------------
  |  Branch (2810:13): [True: 0, False: 0]
  ------------------
 2811|      0|            case F_PTRDIFF:  DO_SPRINTS("t", ptrdiff_t, ptrdiff_t); break;
  ------------------
  |  | 2637|      0|#define F_PTRDIFF 4
  ------------------
                          case F_PTRDIFF:  DO_SPRINTS("t", ptrdiff_t, ptrdiff_t); break;
  ------------------
  |  | 2798|      0|            switch (*f) {                                                     \
  |  | 2799|      0|                case 'o': len = SPRINT(SIZE_SPEC, "o", UNSIGNED_TYPE); break; \
  |  |  ------------------
  |  |  |  | 2794|      0|            sprintf(buffer, "%" SIZE_SPEC FMT_CHAR, va_arg(*vargs, TYPE))
  |  |  ------------------
  |  |  |  Branch (2799:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 2800|      0|                case 'u': len = SPRINT(SIZE_SPEC, "u", UNSIGNED_TYPE); break; \
  |  |  ------------------
  |  |  |  | 2794|      0|            sprintf(buffer, "%" SIZE_SPEC FMT_CHAR, va_arg(*vargs, TYPE))
  |  |  ------------------
  |  |  |  Branch (2800:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 2801|      0|                case 'x': len = SPRINT(SIZE_SPEC, "x", UNSIGNED_TYPE); break; \
  |  |  ------------------
  |  |  |  | 2794|      0|            sprintf(buffer, "%" SIZE_SPEC FMT_CHAR, va_arg(*vargs, TYPE))
  |  |  ------------------
  |  |  |  Branch (2801:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 2802|      0|                case 'X': len = SPRINT(SIZE_SPEC, "X", UNSIGNED_TYPE); break; \
  |  |  ------------------
  |  |  |  | 2794|      0|            sprintf(buffer, "%" SIZE_SPEC FMT_CHAR, va_arg(*vargs, TYPE))
  |  |  ------------------
  |  |  |  Branch (2802:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 2803|      0|                default:  len = SPRINT(SIZE_SPEC, "d", SIGNED_TYPE); break;   \
  |  |  ------------------
  |  |  |  | 2794|      0|            sprintf(buffer, "%" SIZE_SPEC FMT_CHAR, va_arg(*vargs, TYPE))
  |  |  ------------------
  |  |  |  Branch (2803:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 2804|      0|            }
  ------------------
  |  Branch (2811:13): [True: 0, False: 0]
  ------------------
 2812|      0|            case F_INTMAX:   DO_SPRINTS("j", intmax_t, uintmax_t); break;
  ------------------
  |  | 2638|      0|#define F_INTMAX 5
  ------------------
                          case F_INTMAX:   DO_SPRINTS("j", intmax_t, uintmax_t); break;
  ------------------
  |  | 2798|      0|            switch (*f) {                                                     \
  |  | 2799|      0|                case 'o': len = SPRINT(SIZE_SPEC, "o", UNSIGNED_TYPE); break; \
  |  |  ------------------
  |  |  |  | 2794|      0|            sprintf(buffer, "%" SIZE_SPEC FMT_CHAR, va_arg(*vargs, TYPE))
  |  |  ------------------
  |  |  |  Branch (2799:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 2800|      0|                case 'u': len = SPRINT(SIZE_SPEC, "u", UNSIGNED_TYPE); break; \
  |  |  ------------------
  |  |  |  | 2794|      0|            sprintf(buffer, "%" SIZE_SPEC FMT_CHAR, va_arg(*vargs, TYPE))
  |  |  ------------------
  |  |  |  Branch (2800:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 2801|      0|                case 'x': len = SPRINT(SIZE_SPEC, "x", UNSIGNED_TYPE); break; \
  |  |  ------------------
  |  |  |  | 2794|      0|            sprintf(buffer, "%" SIZE_SPEC FMT_CHAR, va_arg(*vargs, TYPE))
  |  |  ------------------
  |  |  |  Branch (2801:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 2802|      0|                case 'X': len = SPRINT(SIZE_SPEC, "X", UNSIGNED_TYPE); break; \
  |  |  ------------------
  |  |  |  | 2794|      0|            sprintf(buffer, "%" SIZE_SPEC FMT_CHAR, va_arg(*vargs, TYPE))
  |  |  ------------------
  |  |  |  Branch (2802:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 2803|      0|                default:  len = SPRINT(SIZE_SPEC, "d", SIGNED_TYPE); break;   \
  |  |  ------------------
  |  |  |  | 2794|      0|            sprintf(buffer, "%" SIZE_SPEC FMT_CHAR, va_arg(*vargs, TYPE))
  |  |  ------------------
  |  |  |  Branch (2803:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 2804|      0|            }
  ------------------
  |  Branch (2812:13): [True: 0, False: 0]
  ------------------
 2813|      0|            default:         DO_SPRINTS("", int, unsigned int); break;
  ------------------
  |  | 2798|      0|            switch (*f) {                                                     \
  |  | 2799|      0|                case 'o': len = SPRINT(SIZE_SPEC, "o", UNSIGNED_TYPE); break; \
  |  |  ------------------
  |  |  |  | 2794|      0|            sprintf(buffer, "%" SIZE_SPEC FMT_CHAR, va_arg(*vargs, TYPE))
  |  |  ------------------
  |  |  |  Branch (2799:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 2800|      0|                case 'u': len = SPRINT(SIZE_SPEC, "u", UNSIGNED_TYPE); break; \
  |  |  ------------------
  |  |  |  | 2794|      0|            sprintf(buffer, "%" SIZE_SPEC FMT_CHAR, va_arg(*vargs, TYPE))
  |  |  ------------------
  |  |  |  Branch (2800:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 2801|      0|                case 'x': len = SPRINT(SIZE_SPEC, "x", UNSIGNED_TYPE); break; \
  |  |  ------------------
  |  |  |  | 2794|      0|            sprintf(buffer, "%" SIZE_SPEC FMT_CHAR, va_arg(*vargs, TYPE))
  |  |  ------------------
  |  |  |  Branch (2801:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 2802|      0|                case 'X': len = SPRINT(SIZE_SPEC, "X", UNSIGNED_TYPE); break; \
  |  |  ------------------
  |  |  |  | 2794|      0|            sprintf(buffer, "%" SIZE_SPEC FMT_CHAR, va_arg(*vargs, TYPE))
  |  |  ------------------
  |  |  |  Branch (2802:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 2803|      0|                default:  len = SPRINT(SIZE_SPEC, "d", SIGNED_TYPE); break;   \
  |  |  ------------------
  |  |  |  | 2794|      0|            sprintf(buffer, "%" SIZE_SPEC FMT_CHAR, va_arg(*vargs, TYPE))
  |  |  ------------------
  |  |  |  Branch (2803:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 2804|      0|            }
  ------------------
  |  Branch (2813:13): [True: 0, False: 0]
  ------------------
 2814|      0|        }
 2815|      0|        #undef SPRINT
 2816|      0|        #undef DO_SPRINTS
 2817|       |
 2818|      0|        assert(len >= 0);
  ------------------
  |  Branch (2818:9): [True: 0, False: 0]
  ------------------
 2819|       |
 2820|      0|        int sign = (buffer[0] == '-');
 2821|      0|        len -= sign;
 2822|       |
 2823|      0|        precision = Py_MAX(precision, len);
  ------------------
  |  |  115|      0|#define Py_MAX(x, y) (((x) > (y)) ? (x) : (y))
  |  |  ------------------
  |  |  |  Branch (115:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2824|      0|        width = Py_MAX(width, precision + sign);
  ------------------
  |  |  115|      0|#define Py_MAX(x, y) (((x) > (y)) ? (x) : (y))
  |  |  ------------------
  |  |  |  Branch (115:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2825|      0|        if ((flags & F_ZERO) && !(flags & F_LJUST)) {
  ------------------
  |  |   22|      0|#define F_ZERO  (1<<4)
  ------------------
                      if ((flags & F_ZERO) && !(flags & F_LJUST)) {
  ------------------
  |  |   18|      0|#define F_LJUST (1<<0)
  ------------------
  |  Branch (2825:13): [True: 0, False: 0]
  |  Branch (2825:33): [True: 0, False: 0]
  ------------------
 2826|      0|            precision = width - sign;
 2827|      0|        }
 2828|       |
 2829|      0|        Py_ssize_t spacepad = Py_MAX(width - precision - sign, 0);
  ------------------
  |  |  115|      0|#define Py_MAX(x, y) (((x) > (y)) ? (x) : (y))
  |  |  ------------------
  |  |  |  Branch (115:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2830|      0|        Py_ssize_t zeropad = Py_MAX(precision - len, 0);
  ------------------
  |  |  115|      0|#define Py_MAX(x, y) (((x) > (y)) ? (x) : (y))
  |  |  ------------------
  |  |  |  Branch (115:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2831|       |
 2832|      0|        if (_PyUnicodeWriter_Prepare(writer, width, 127) == -1)
  ------------------
  |  |  562|      0|    (((MAXCHAR) <= (WRITER)->maxchar                                  \
  |  |  ------------------
  |  |  |  Branch (562:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  563|      0|      && (LENGTH) <= (WRITER)->size - (WRITER)->pos)                  \
  |  |  ------------------
  |  |  |  Branch (563:10): [True: 0, False: 0]
  |  |  ------------------
  |  |  564|      0|     ? 0                                                              \
  |  |  565|      0|     : (((LENGTH) == 0)                                               \
  |  |  ------------------
  |  |  |  Branch (565:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  566|      0|        ? 0                                                           \
  |  |  567|      0|        : _PyUnicodeWriter_PrepareInternal((WRITER), (LENGTH), (MAXCHAR))))
  ------------------
  |  Branch (2832:13): [True: 0, False: 0]
  ------------------
 2833|      0|            return NULL;
 2834|       |
 2835|      0|        if (spacepad && !(flags & F_LJUST)) {
  ------------------
  |  |   18|      0|#define F_LJUST (1<<0)
  ------------------
  |  Branch (2835:13): [True: 0, False: 0]
  |  Branch (2835:25): [True: 0, False: 0]
  ------------------
 2836|      0|            if (PyUnicode_Fill(writer->buffer, writer->pos, spacepad, ' ') == -1)
  ------------------
  |  Branch (2836:17): [True: 0, False: 0]
  ------------------
 2837|      0|                return NULL;
 2838|      0|            writer->pos += spacepad;
 2839|      0|        }
 2840|       |
 2841|      0|        if (sign) {
  ------------------
  |  Branch (2841:13): [True: 0, False: 0]
  ------------------
 2842|      0|            if (_PyUnicodeWriter_WriteChar(writer, '-') == -1)
  ------------------
  |  Branch (2842:17): [True: 0, False: 0]
  ------------------
 2843|      0|                return NULL;
 2844|      0|        }
 2845|       |
 2846|      0|        if (zeropad) {
  ------------------
  |  Branch (2846:13): [True: 0, False: 0]
  ------------------
 2847|      0|            if (PyUnicode_Fill(writer->buffer, writer->pos, zeropad, '0') == -1)
  ------------------
  |  Branch (2847:17): [True: 0, False: 0]
  ------------------
 2848|      0|                return NULL;
 2849|      0|            writer->pos += zeropad;
 2850|      0|        }
 2851|       |
 2852|      0|        if (_PyUnicodeWriter_WriteASCIIString(writer, &buffer[sign], len) < 0)
  ------------------
  |  Branch (2852:13): [True: 0, False: 0]
  ------------------
 2853|      0|            return NULL;
 2854|       |
 2855|      0|        if (spacepad && (flags & F_LJUST)) {
  ------------------
  |  |   18|      0|#define F_LJUST (1<<0)
  ------------------
  |  Branch (2855:13): [True: 0, False: 0]
  |  Branch (2855:25): [True: 0, False: 0]
  ------------------
 2856|      0|            if (PyUnicode_Fill(writer->buffer, writer->pos, spacepad, ' ') == -1)
  ------------------
  |  Branch (2856:17): [True: 0, False: 0]
  ------------------
 2857|      0|                return NULL;
 2858|      0|            writer->pos += spacepad;
 2859|      0|        }
 2860|      0|        break;
 2861|      0|    }
 2862|       |
 2863|      0|    case 'p':
  ------------------
  |  Branch (2863:5): [True: 0, False: 48]
  ------------------
 2864|      0|    {
 2865|      0|        char number[MAX_INTMAX_CHARS];
 2866|       |
 2867|      0|        len = sprintf(number, "%p", va_arg(*vargs, void*));
 2868|      0|        assert(len >= 0);
  ------------------
  |  Branch (2868:9): [True: 0, False: 0]
  ------------------
 2869|       |
 2870|       |        /* %p is ill-defined:  ensure leading 0x. */
 2871|      0|        if (number[1] == 'X')
  ------------------
  |  Branch (2871:13): [True: 0, False: 0]
  ------------------
 2872|      0|            number[1] = 'x';
 2873|      0|        else if (number[1] != 'x') {
  ------------------
  |  Branch (2873:18): [True: 0, False: 0]
  ------------------
 2874|      0|            memmove(number + 2, number,
 2875|      0|                    strlen(number) + 1);
 2876|      0|            number[0] = '0';
 2877|      0|            number[1] = 'x';
 2878|      0|            len += 2;
 2879|      0|        }
 2880|       |
 2881|      0|        if (_PyUnicodeWriter_WriteASCIIString(writer, number, len) < 0)
  ------------------
  |  Branch (2881:13): [True: 0, False: 0]
  ------------------
 2882|      0|            return NULL;
 2883|      0|        break;
 2884|      0|    }
 2885|       |
 2886|     14|    case 's':
  ------------------
  |  Branch (2886:5): [True: 14, False: 34]
  ------------------
 2887|     14|    {
 2888|     14|        if (sizemod) {
  ------------------
  |  Branch (2888:13): [True: 0, False: 14]
  ------------------
 2889|      0|            const wchar_t *s = va_arg(*vargs, const wchar_t*);
 2890|      0|            if (unicode_fromformat_write_wcstr(writer, s, width, precision, flags) < 0)
  ------------------
  |  Branch (2890:17): [True: 0, False: 0]
  ------------------
 2891|      0|                return NULL;
 2892|      0|        }
 2893|     14|        else {
 2894|       |            /* UTF-8 */
 2895|     14|            const char *s = va_arg(*vargs, const char*);
 2896|     14|            if (unicode_fromformat_write_utf8(writer, s, width, precision, flags) < 0)
  ------------------
  |  Branch (2896:17): [True: 0, False: 14]
  ------------------
 2897|      0|                return NULL;
 2898|     14|        }
 2899|     14|        break;
 2900|     14|    }
 2901|       |
 2902|     31|    case 'U':
  ------------------
  |  Branch (2902:5): [True: 31, False: 17]
  ------------------
 2903|     31|    {
 2904|     31|        PyObject *obj = va_arg(*vargs, PyObject *);
 2905|     31|        assert(obj && _PyUnicode_CHECK(obj));
  ------------------
  |  Branch (2905:9): [True: 31, False: 0]
  |  Branch (2905:9): [True: 31, False: 0]
  ------------------
 2906|       |
 2907|     31|        if (unicode_fromformat_write_str(writer, obj, width, precision, flags) == -1)
  ------------------
  |  Branch (2907:13): [True: 0, False: 31]
  ------------------
 2908|      0|            return NULL;
 2909|     31|        break;
 2910|     31|    }
 2911|       |
 2912|     31|    case 'V':
  ------------------
  |  Branch (2912:5): [True: 0, False: 48]
  ------------------
 2913|      0|    {
 2914|      0|        PyObject *obj = va_arg(*vargs, PyObject *);
 2915|      0|        const char *str;
 2916|      0|        const wchar_t *wstr;
 2917|      0|        if (sizemod) {
  ------------------
  |  Branch (2917:13): [True: 0, False: 0]
  ------------------
 2918|      0|            wstr = va_arg(*vargs, const wchar_t*);
 2919|      0|        }
 2920|      0|        else {
 2921|      0|            str = va_arg(*vargs, const char *);
 2922|      0|        }
 2923|      0|        if (obj) {
  ------------------
  |  Branch (2923:13): [True: 0, False: 0]
  ------------------
 2924|      0|            assert(_PyUnicode_CHECK(obj));
  ------------------
  |  Branch (2924:13): [True: 0, False: 0]
  ------------------
 2925|      0|            if (unicode_fromformat_write_str(writer, obj, width, precision, flags) == -1)
  ------------------
  |  Branch (2925:17): [True: 0, False: 0]
  ------------------
 2926|      0|                return NULL;
 2927|      0|        }
 2928|      0|        else if (sizemod) {
  ------------------
  |  Branch (2928:18): [True: 0, False: 0]
  ------------------
 2929|      0|            assert(wstr != NULL);
  ------------------
  |  Branch (2929:13): [True: 0, False: 0]
  ------------------
 2930|      0|            if (unicode_fromformat_write_wcstr(writer, wstr, width, precision, flags) < 0)
  ------------------
  |  Branch (2930:17): [True: 0, False: 0]
  ------------------
 2931|      0|                return NULL;
 2932|      0|        }
 2933|      0|        else {
 2934|      0|            assert(str != NULL);
  ------------------
  |  Branch (2934:13): [True: 0, False: 0]
  ------------------
 2935|      0|            if (unicode_fromformat_write_utf8(writer, str, width, precision, flags) < 0)
  ------------------
  |  Branch (2935:17): [True: 0, False: 0]
  ------------------
 2936|      0|                return NULL;
 2937|      0|        }
 2938|      0|        break;
 2939|      0|    }
 2940|       |
 2941|      3|    case 'S':
  ------------------
  |  Branch (2941:5): [True: 3, False: 45]
  ------------------
 2942|      3|    {
 2943|      3|        PyObject *obj = va_arg(*vargs, PyObject *);
 2944|      3|        PyObject *str;
 2945|      3|        assert(obj);
  ------------------
  |  Branch (2945:9): [True: 3, False: 0]
  ------------------
 2946|      3|        str = PyObject_Str(obj);
 2947|      3|        if (!str)
  ------------------
  |  Branch (2947:13): [True: 0, False: 3]
  ------------------
 2948|      0|            return NULL;
 2949|      3|        if (unicode_fromformat_write_str(writer, str, width, precision, flags) == -1) {
  ------------------
  |  Branch (2949:13): [True: 0, False: 3]
  ------------------
 2950|      0|            Py_DECREF(str);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2951|      0|            return NULL;
 2952|      0|        }
 2953|      3|        Py_DECREF(str);
  ------------------
  |  |  430|      3|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2954|      3|        break;
 2955|      3|    }
 2956|       |
 2957|      0|    case 'R':
  ------------------
  |  Branch (2957:5): [True: 0, False: 48]
  ------------------
 2958|      0|    {
 2959|      0|        PyObject *obj = va_arg(*vargs, PyObject *);
 2960|      0|        PyObject *repr;
 2961|      0|        assert(obj);
  ------------------
  |  Branch (2961:9): [True: 0, False: 0]
  ------------------
 2962|      0|        repr = PyObject_Repr(obj);
 2963|      0|        if (!repr)
  ------------------
  |  Branch (2963:13): [True: 0, False: 0]
  ------------------
 2964|      0|            return NULL;
 2965|      0|        if (unicode_fromformat_write_str(writer, repr, width, precision, flags) == -1) {
  ------------------
  |  Branch (2965:13): [True: 0, False: 0]
  ------------------
 2966|      0|            Py_DECREF(repr);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2967|      0|            return NULL;
 2968|      0|        }
 2969|      0|        Py_DECREF(repr);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2970|      0|        break;
 2971|      0|    }
 2972|       |
 2973|      0|    case 'A':
  ------------------
  |  Branch (2973:5): [True: 0, False: 48]
  ------------------
 2974|      0|    {
 2975|      0|        PyObject *obj = va_arg(*vargs, PyObject *);
 2976|      0|        PyObject *ascii;
 2977|      0|        assert(obj);
  ------------------
  |  Branch (2977:9): [True: 0, False: 0]
  ------------------
 2978|      0|        ascii = PyObject_ASCII(obj);
 2979|      0|        if (!ascii)
  ------------------
  |  Branch (2979:13): [True: 0, False: 0]
  ------------------
 2980|      0|            return NULL;
 2981|      0|        if (unicode_fromformat_write_str(writer, ascii, width, precision, flags) == -1) {
  ------------------
  |  Branch (2981:13): [True: 0, False: 0]
  ------------------
 2982|      0|            Py_DECREF(ascii);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2983|      0|            return NULL;
 2984|      0|        }
 2985|      0|        Py_DECREF(ascii);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2986|      0|        break;
 2987|      0|    }
 2988|       |
 2989|      0|    case 'T':
  ------------------
  |  Branch (2989:5): [True: 0, False: 48]
  ------------------
 2990|      0|    {
 2991|      0|        PyObject *obj = va_arg(*vargs, PyObject *);
 2992|      0|        PyTypeObject *type = (PyTypeObject *)Py_NewRef(Py_TYPE(obj));
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2993|       |
 2994|      0|        PyObject *type_name;
 2995|      0|        if (flags & F_ALT) {
  ------------------
  |  |   21|      0|#define F_ALT   (1<<3)
  ------------------
  |  Branch (2995:13): [True: 0, False: 0]
  ------------------
 2996|      0|            type_name = _PyType_GetFullyQualifiedName(type, ':');
 2997|      0|        }
 2998|      0|        else {
 2999|      0|            type_name = PyType_GetFullyQualifiedName(type);
 3000|      0|        }
 3001|      0|        Py_DECREF(type);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3002|      0|        if (!type_name) {
  ------------------
  |  Branch (3002:13): [True: 0, False: 0]
  ------------------
 3003|      0|            return NULL;
 3004|      0|        }
 3005|       |
 3006|      0|        if (unicode_fromformat_write_str(writer, type_name,
  ------------------
  |  Branch (3006:13): [True: 0, False: 0]
  ------------------
 3007|      0|                                         width, precision, flags) == -1) {
 3008|      0|            Py_DECREF(type_name);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3009|      0|            return NULL;
 3010|      0|        }
 3011|      0|        Py_DECREF(type_name);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3012|      0|        break;
 3013|      0|    }
 3014|       |
 3015|      0|    case 'N':
  ------------------
  |  Branch (3015:5): [True: 0, False: 48]
  ------------------
 3016|      0|    {
 3017|      0|        PyObject *type_raw = va_arg(*vargs, PyObject *);
 3018|      0|        assert(type_raw != NULL);
  ------------------
  |  Branch (3018:9): [True: 0, False: 0]
  ------------------
 3019|       |
 3020|      0|        if (!PyType_Check(type_raw)) {
  ------------------
  |  |  766|      0|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3020:13): [True: 0, False: 0]
  ------------------
 3021|      0|            PyErr_SetString(PyExc_TypeError, "%N argument must be a type");
 3022|      0|            return NULL;
 3023|      0|        }
 3024|      0|        PyTypeObject *type = (PyTypeObject*)type_raw;
 3025|       |
 3026|      0|        PyObject *type_name;
 3027|      0|        if (flags & F_ALT) {
  ------------------
  |  |   21|      0|#define F_ALT   (1<<3)
  ------------------
  |  Branch (3027:13): [True: 0, False: 0]
  ------------------
 3028|      0|            type_name = _PyType_GetFullyQualifiedName(type, ':');
 3029|      0|        }
 3030|      0|        else {
 3031|      0|            type_name = PyType_GetFullyQualifiedName(type);
 3032|      0|        }
 3033|      0|        if (!type_name) {
  ------------------
  |  Branch (3033:13): [True: 0, False: 0]
  ------------------
 3034|      0|            return NULL;
 3035|      0|        }
 3036|      0|        if (unicode_fromformat_write_str(writer, type_name,
  ------------------
  |  Branch (3036:13): [True: 0, False: 0]
  ------------------
 3037|      0|                                         width, precision, flags) == -1) {
 3038|      0|            Py_DECREF(type_name);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3039|      0|            return NULL;
 3040|      0|        }
 3041|      0|        Py_DECREF(type_name);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3042|      0|        break;
 3043|      0|    }
 3044|       |
 3045|      0|    default:
  ------------------
  |  Branch (3045:5): [True: 0, False: 48]
  ------------------
 3046|      0|    invalid_format:
 3047|      0|        PyErr_Format(PyExc_SystemError, "invalid format string: %s", p);
 3048|      0|        return NULL;
 3049|     48|    }
 3050|       |
 3051|     48|    f++;
 3052|     48|    return f;
 3053|     48|}
unicodeobject.c:unicode_fromformat_write_utf8:
 2567|     14|{
 2568|       |    /* UTF-8 */
 2569|     14|    Py_ssize_t *pconsumed = NULL;
 2570|     14|    Py_ssize_t length;
 2571|     14|    if (precision == -1) {
  ------------------
  |  Branch (2571:9): [True: 3, False: 11]
  ------------------
 2572|      3|        length = strlen(str);
 2573|      3|    }
 2574|     11|    else {
 2575|     11|        length = 0;
 2576|     85|        while (length < precision && str[length]) {
  ------------------
  |  Branch (2576:16): [True: 85, False: 0]
  |  Branch (2576:38): [True: 74, False: 11]
  ------------------
 2577|     74|            length++;
 2578|     74|        }
 2579|     11|        if (length == precision) {
  ------------------
  |  Branch (2579:13): [True: 0, False: 11]
  ------------------
 2580|       |            /* The input string is not NUL-terminated.  If it ends with an
 2581|       |             * incomplete UTF-8 sequence, truncate the string just before it.
 2582|       |             * Incomplete sequences in the middle and sequences which cannot
 2583|       |             * be valid prefixes are still treated as errors and replaced
 2584|       |             * with \xfffd. */
 2585|      0|            pconsumed = &length;
 2586|      0|        }
 2587|     11|    }
 2588|       |
 2589|     14|    if (width < 0) {
  ------------------
  |  Branch (2589:9): [True: 14, False: 0]
  ------------------
 2590|     14|        return _PyUnicode_DecodeUTF8Writer(writer, str, length,
 2591|     14|                                           _Py_ERROR_REPLACE, "replace", pconsumed);
 2592|     14|    }
 2593|       |
 2594|      0|    PyObject *unicode = PyUnicode_DecodeUTF8Stateful(str, length,
 2595|      0|                                                     "replace", pconsumed);
 2596|      0|    if (unicode == NULL)
  ------------------
  |  Branch (2596:9): [True: 0, False: 0]
  ------------------
 2597|      0|        return -1;
 2598|       |
 2599|      0|    int res = unicode_fromformat_write_str(writer, unicode,
 2600|      0|                                           width, -1, flags);
 2601|      0|    Py_DECREF(unicode);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2602|      0|    return res;
 2603|      0|}
unicodeobject.c:unicode_fromformat_write_str:
 2523|     34|{
 2524|     34|    Py_ssize_t length, fill, arglen;
 2525|     34|    Py_UCS4 maxchar;
 2526|       |
 2527|     34|    length = PyUnicode_GET_LENGTH(str);
  ------------------
  |  |  299|     34|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     34|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     34|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2528|     34|    if ((precision == -1 || precision >= length)
  ------------------
  |  Branch (2528:10): [True: 34, False: 0]
  |  Branch (2528:29): [True: 0, False: 0]
  ------------------
 2529|     34|        && width <= length)
  ------------------
  |  Branch (2529:12): [True: 34, False: 0]
  ------------------
 2530|     34|        return _PyUnicodeWriter_WriteStr(writer, str);
 2531|       |
 2532|      0|    if (precision != -1)
  ------------------
  |  Branch (2532:9): [True: 0, False: 0]
  ------------------
 2533|      0|        length = Py_MIN(precision, length);
  ------------------
  |  |  112|      0|#define Py_MIN(x, y) (((x) > (y)) ? (y) : (x))
  |  |  ------------------
  |  |  |  Branch (112:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2534|       |
 2535|      0|    arglen = Py_MAX(length, width);
  ------------------
  |  |  115|      0|#define Py_MAX(x, y) (((x) > (y)) ? (x) : (y))
  |  |  ------------------
  |  |  |  Branch (115:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2536|      0|    if (PyUnicode_MAX_CHAR_VALUE(str) > writer->maxchar)
  ------------------
  |  |  405|      0|    PyUnicode_MAX_CHAR_VALUE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2536:9): [True: 0, False: 0]
  ------------------
 2537|      0|        maxchar = _PyUnicode_FindMaxChar(str, 0, length);
 2538|      0|    else
 2539|      0|        maxchar = writer->maxchar;
 2540|       |
 2541|      0|    if (_PyUnicodeWriter_Prepare(writer, arglen, maxchar) == -1)
  ------------------
  |  |  562|      0|    (((MAXCHAR) <= (WRITER)->maxchar                                  \
  |  |  ------------------
  |  |  |  Branch (562:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  563|      0|      && (LENGTH) <= (WRITER)->size - (WRITER)->pos)                  \
  |  |  ------------------
  |  |  |  Branch (563:10): [True: 0, False: 0]
  |  |  ------------------
  |  |  564|      0|     ? 0                                                              \
  |  |  565|      0|     : (((LENGTH) == 0)                                               \
  |  |  ------------------
  |  |  |  Branch (565:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  566|      0|        ? 0                                                           \
  |  |  567|      0|        : _PyUnicodeWriter_PrepareInternal((WRITER), (LENGTH), (MAXCHAR))))
  ------------------
  |  Branch (2541:9): [True: 0, False: 0]
  ------------------
 2542|      0|        return -1;
 2543|       |
 2544|      0|    fill = Py_MAX(width - length, 0);
  ------------------
  |  |  115|      0|#define Py_MAX(x, y) (((x) > (y)) ? (x) : (y))
  |  |  ------------------
  |  |  |  Branch (115:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2545|      0|    if (fill && !(flags & F_LJUST)) {
  ------------------
  |  |   18|      0|#define F_LJUST (1<<0)
  ------------------
  |  Branch (2545:9): [True: 0, False: 0]
  |  Branch (2545:17): [True: 0, False: 0]
  ------------------
 2546|      0|        if (PyUnicode_Fill(writer->buffer, writer->pos, fill, ' ') == -1)
  ------------------
  |  Branch (2546:13): [True: 0, False: 0]
  ------------------
 2547|      0|            return -1;
 2548|      0|        writer->pos += fill;
 2549|      0|    }
 2550|       |
 2551|      0|    _PyUnicode_FastCopyCharacters(writer->buffer, writer->pos,
 2552|      0|                                  str, 0, length);
 2553|      0|    writer->pos += length;
 2554|       |
 2555|      0|    if (fill && (flags & F_LJUST)) {
  ------------------
  |  |   18|      0|#define F_LJUST (1<<0)
  ------------------
  |  Branch (2555:9): [True: 0, False: 0]
  |  Branch (2555:17): [True: 0, False: 0]
  ------------------
 2556|      0|        if (PyUnicode_Fill(writer->buffer, writer->pos, fill, ' ') == -1)
  ------------------
  |  Branch (2556:13): [True: 0, False: 0]
  ------------------
 2557|      0|            return -1;
 2558|      0|        writer->pos += fill;
 2559|      0|    }
 2560|       |
 2561|      0|    return 0;
 2562|      0|}
unicodeobject.c:unicode_get_widechar_size:
 3161|     68|{
 3162|     68|    Py_ssize_t res;
 3163|       |
 3164|     68|    assert(unicode != NULL);
  ------------------
  |  Branch (3164:5): [True: 68, False: 0]
  ------------------
 3165|     68|    assert(_PyUnicode_CHECK(unicode));
  ------------------
  |  Branch (3165:5): [True: 68, False: 0]
  ------------------
 3166|       |
 3167|     68|    res = _PyUnicode_LENGTH(unicode);
  ------------------
  |  |  151|     68|    (_PyASCIIObject_CAST(op)->length)
  |  |  ------------------
  |  |  |  |  186|     68|    (assert(PyUnicode_Check(op)), \
  |  |  |  |  187|     68|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     68|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3167:11): [True: 68, False: 0]
  ------------------
 3168|       |#if SIZEOF_WCHAR_T == 2
 3169|       |    if (PyUnicode_KIND(unicode) == PyUnicode_4BYTE_KIND) {
 3170|       |        const Py_UCS4 *s = PyUnicode_4BYTE_DATA(unicode);
 3171|       |        const Py_UCS4 *end = s + res;
 3172|       |        for (; s < end; ++s) {
 3173|       |            if (*s > 0xFFFF) {
 3174|       |                ++res;
 3175|       |            }
 3176|       |        }
 3177|       |    }
 3178|       |#endif
 3179|      0|    return res;
 3180|     68|}
unicodeobject.c:unicode_copy_as_widechar:
 3184|     68|{
 3185|     68|    assert(unicode != NULL);
  ------------------
  |  Branch (3185:5): [True: 68, False: 0]
  ------------------
 3186|     68|    assert(_PyUnicode_CHECK(unicode));
  ------------------
  |  Branch (3186:5): [True: 68, False: 0]
  ------------------
 3187|       |
 3188|    136|    if (PyUnicode_KIND(unicode) == sizeof(wchar_t)) {
  ------------------
  |  |  258|     68|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|    136|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 68, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3188:9): [True: 0, False: 68]
  ------------------
 3189|      0|        memcpy(w, PyUnicode_DATA(unicode), size * sizeof(wchar_t));
  ------------------
  |  |  284|      0|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3190|      0|        return;
 3191|      0|    }
 3192|       |
 3193|    136|    if (PyUnicode_KIND(unicode) == PyUnicode_1BYTE_KIND) {
  ------------------
  |  |  258|     68|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|    136|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 68, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3193:9): [True: 68, False: 0]
  ------------------
 3194|     68|        const Py_UCS1 *s = PyUnicode_1BYTE_DATA(unicode);
  ------------------
  |  |  291|     68|#define PyUnicode_1BYTE_DATA(op) _Py_STATIC_CAST(Py_UCS1*, PyUnicode_DATA(op))
  |  |  ------------------
  |  |  |  |   34|     68|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
 3195|  2.69k|        for (; size--; ++s, ++w) {
  ------------------
  |  Branch (3195:16): [True: 2.62k, False: 68]
  ------------------
 3196|  2.62k|            *w = *s;
 3197|  2.62k|        }
 3198|     68|    }
 3199|      0|    else {
 3200|      0|#if SIZEOF_WCHAR_T == 4
 3201|      0|        assert(PyUnicode_KIND(unicode) == PyUnicode_2BYTE_KIND);
  ------------------
  |  Branch (3201:9): [True: 0, False: 0]
  |  Branch (3201:9): [True: 0, False: 0]
  ------------------
 3202|      0|        const Py_UCS2 *s = PyUnicode_2BYTE_DATA(unicode);
  ------------------
  |  |  292|      0|#define PyUnicode_2BYTE_DATA(op) _Py_STATIC_CAST(Py_UCS2*, PyUnicode_DATA(op))
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
 3203|      0|        for (; size--; ++s, ++w) {
  ------------------
  |  Branch (3203:16): [True: 0, False: 0]
  ------------------
 3204|      0|            *w = *s;
 3205|      0|        }
 3206|       |#else
 3207|       |        assert(PyUnicode_KIND(unicode) == PyUnicode_4BYTE_KIND);
 3208|       |        const Py_UCS4 *s = PyUnicode_4BYTE_DATA(unicode);
 3209|       |        for (; size--; ++s, ++w) {
 3210|       |            Py_UCS4 ch = *s;
 3211|       |            if (ch > 0xFFFF) {
 3212|       |                assert(ch <= MAX_UNICODE);
 3213|       |                /* encode surrogate pair in this case */
 3214|       |                *w++ = Py_UNICODE_HIGH_SURROGATE(ch);
 3215|       |                if (!size--)
 3216|       |                    break;
 3217|       |                *w = Py_UNICODE_LOW_SURROGATE(ch);
 3218|       |            }
 3219|       |            else {
 3220|       |                *w = ch;
 3221|       |            }
 3222|       |        }
 3223|       |#endif
 3224|      0|    }
 3225|     68|}
unicodeobject.c:unicode_char:
 1818|      3|{
 1819|      3|    PyObject *unicode;
 1820|       |
 1821|      3|    assert(ch <= MAX_UNICODE);
  ------------------
  |  Branch (1821:5): [True: 3, False: 0]
  ------------------
 1822|       |
 1823|      3|    if (ch < 256) {
  ------------------
  |  Branch (1823:9): [True: 3, False: 0]
  ------------------
 1824|      3|        return get_latin1_char(ch);
 1825|      3|    }
 1826|       |
 1827|      0|    unicode = PyUnicode_New(1, ch);
 1828|      0|    if (unicode == NULL)
  ------------------
  |  Branch (1828:9): [True: 0, False: 0]
  ------------------
 1829|      0|        return NULL;
 1830|       |
 1831|      0|    assert(PyUnicode_KIND(unicode) != PyUnicode_1BYTE_KIND);
  ------------------
  |  Branch (1831:5): [True: 0, False: 0]
  |  Branch (1831:5): [True: 0, False: 0]
  ------------------
 1832|      0|    if (PyUnicode_KIND(unicode) == PyUnicode_2BYTE_KIND) {
  ------------------
  |  |  258|      0|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|      0|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1832:9): [True: 0, False: 0]
  ------------------
 1833|      0|        PyUnicode_2BYTE_DATA(unicode)[0] = (Py_UCS2)ch;
  ------------------
  |  |  292|      0|#define PyUnicode_2BYTE_DATA(op) _Py_STATIC_CAST(Py_UCS2*, PyUnicode_DATA(op))
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
 1834|      0|    } else {
 1835|      0|        assert(PyUnicode_KIND(unicode) == PyUnicode_4BYTE_KIND);
  ------------------
  |  Branch (1835:9): [True: 0, False: 0]
  |  Branch (1835:9): [True: 0, False: 0]
  ------------------
 1836|      0|        PyUnicode_4BYTE_DATA(unicode)[0] = ch;
  ------------------
  |  |  293|      0|#define PyUnicode_4BYTE_DATA(op) _Py_STATIC_CAST(Py_UCS4*, PyUnicode_DATA(op))
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
 1837|      0|    }
 1838|      0|    assert(_PyUnicode_CheckConsistency(unicode, 1));
  ------------------
  |  Branch (1838:5): [True: 0, False: 0]
  ------------------
 1839|      0|    return unicode;
 1840|      0|}
unicodeobject.c:unicode_check_encoding_errors:
  526|     17|{
  527|     17|    if (encoding == NULL && errors == NULL) {
  ------------------
  |  Branch (527:9): [True: 0, False: 17]
  |  Branch (527:29): [True: 0, False: 0]
  ------------------
  528|      0|        return 0;
  529|      0|    }
  530|       |
  531|     17|    PyInterpreterState *interp = _PyInterpreterState_GET();
  532|     17|#ifndef Py_DEBUG
  533|       |    /* In release mode, only check in development mode (-X dev) */
  534|     17|    if (!_PyInterpreterState_GetConfig(interp)->dev_mode) {
  ------------------
  |  Branch (534:9): [True: 17, False: 0]
  ------------------
  535|     17|        return 0;
  536|     17|    }
  537|       |#else
  538|       |    /* Always check in debug mode */
  539|       |#endif
  540|       |
  541|       |    /* Avoid calling _PyCodec_Lookup() and PyCodec_LookupError() before the
  542|       |       codec registry is ready: before_PyUnicode_InitEncodings() is called. */
  543|      0|    if (!interp->unicode.fs_codec.encoding) {
  ------------------
  |  Branch (543:9): [True: 0, False: 0]
  ------------------
  544|      0|        return 0;
  545|      0|    }
  546|       |
  547|       |    /* Disable checks during Python finalization. For example, it allows to
  548|       |     * call PyObject_Dump() during finalization for debugging purpose.
  549|       |     */
  550|      0|    if (_PyInterpreterState_GetFinalizing(interp) != NULL) {
  ------------------
  |  Branch (550:9): [True: 0, False: 0]
  ------------------
  551|      0|        return 0;
  552|      0|    }
  553|       |
  554|      0|    if (encoding != NULL
  ------------------
  |  Branch (554:9): [True: 0, False: 0]
  ------------------
  555|       |        // Fast path for the most common built-in encodings. Even if the codec
  556|       |        // is cached, _PyCodec_Lookup() decodes the bytes string from UTF-8 to
  557|       |        // create a temporary Unicode string (the key in the cache).
  558|      0|        && strcmp(encoding, "utf-8") != 0
  ------------------
  |  Branch (558:12): [True: 0, False: 0]
  ------------------
  559|      0|        && strcmp(encoding, "utf8") != 0
  ------------------
  |  Branch (559:12): [True: 0, False: 0]
  ------------------
  560|      0|        && strcmp(encoding, "ascii") != 0)
  ------------------
  |  Branch (560:12): [True: 0, False: 0]
  ------------------
  561|      0|    {
  562|      0|        PyObject *handler = _PyCodec_Lookup(encoding);
  563|      0|        if (handler == NULL) {
  ------------------
  |  Branch (563:13): [True: 0, False: 0]
  ------------------
  564|      0|            return -1;
  565|      0|        }
  566|      0|        Py_DECREF(handler);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  567|      0|    }
  568|       |
  569|      0|    if (errors != NULL
  ------------------
  |  Branch (569:9): [True: 0, False: 0]
  ------------------
  570|       |        // Fast path for the most common built-in error handlers.
  571|      0|        && strcmp(errors, "strict") != 0
  ------------------
  |  Branch (571:12): [True: 0, False: 0]
  ------------------
  572|      0|        && strcmp(errors, "ignore") != 0
  ------------------
  |  Branch (572:12): [True: 0, False: 0]
  ------------------
  573|      0|        && strcmp(errors, "replace") != 0
  ------------------
  |  Branch (573:12): [True: 0, False: 0]
  ------------------
  574|      0|        && strcmp(errors, "surrogateescape") != 0
  ------------------
  |  Branch (574:12): [True: 0, False: 0]
  ------------------
  575|      0|        && strcmp(errors, "surrogatepass") != 0)
  ------------------
  |  Branch (575:12): [True: 0, False: 0]
  ------------------
  576|      0|    {
  577|      0|        PyObject *handler = PyCodec_LookupError(errors);
  578|      0|        if (handler == NULL) {
  ------------------
  |  Branch (578:13): [True: 0, False: 0]
  ------------------
  579|      0|            return -1;
  580|      0|        }
  581|      0|        Py_DECREF(handler);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  582|      0|    }
  583|      0|    return 0;
  584|      0|}
unicodeobject.c:get_error_handler_wide:
  498|      2|{
  499|      2|    if (errors == NULL || wcscmp(errors, L"strict") == 0) {
  ------------------
  |  Branch (499:9): [True: 0, False: 2]
  |  Branch (499:27): [True: 0, False: 2]
  ------------------
  500|      0|        return _Py_ERROR_STRICT;
  501|      0|    }
  502|      2|    if (wcscmp(errors, L"surrogateescape") == 0) {
  ------------------
  |  Branch (502:9): [True: 2, False: 0]
  ------------------
  503|      2|        return _Py_ERROR_SURROGATEESCAPE;
  504|      2|    }
  505|      0|    if (wcscmp(errors, L"replace") == 0) {
  ------------------
  |  Branch (505:9): [True: 0, False: 0]
  ------------------
  506|      0|        return _Py_ERROR_REPLACE;
  507|      0|    }
  508|      0|    if (wcscmp(errors, L"ignore") == 0) {
  ------------------
  |  Branch (508:9): [True: 0, False: 0]
  ------------------
  509|      0|        return _Py_ERROR_IGNORE;
  510|      0|    }
  511|      0|    if (wcscmp(errors, L"backslashreplace") == 0) {
  ------------------
  |  Branch (511:9): [True: 0, False: 0]
  ------------------
  512|      0|        return _Py_ERROR_BACKSLASHREPLACE;
  513|      0|    }
  514|      0|    if (wcscmp(errors, L"surrogatepass") == 0) {
  ------------------
  |  Branch (514:9): [True: 0, False: 0]
  ------------------
  515|      0|        return _Py_ERROR_SURROGATEPASS;
  516|      0|    }
  517|      0|    if (wcscmp(errors, L"xmlcharrefreplace") == 0) {
  ------------------
  |  Branch (517:9): [True: 0, False: 0]
  ------------------
  518|      0|        return _Py_ERROR_XMLCHARREFREPLACE;
  519|      0|    }
  520|      0|    return _Py_ERROR_OTHER;
  521|      0|}
unicodeobject.c:unicode_decode_locale:
 3904|     11|{
 3905|     11|    if (str[len] != '\0' || (size_t)len != strlen(str))  {
  ------------------
  |  Branch (3905:9): [True: 0, False: 11]
  |  Branch (3905:29): [True: 0, False: 11]
  ------------------
 3906|      0|        PyErr_SetString(PyExc_ValueError, "embedded null byte");
 3907|      0|        return NULL;
 3908|      0|    }
 3909|       |
 3910|     11|    wchar_t *wstr;
 3911|     11|    size_t wlen;
 3912|     11|    const char *reason;
 3913|     11|    int res = _Py_DecodeLocaleEx(str, &wstr, &wlen, &reason,
 3914|     11|                                 current_locale, errors);
 3915|     11|    if (res != 0) {
  ------------------
  |  Branch (3915:9): [True: 0, False: 11]
  ------------------
 3916|      0|        if (res == -2) {
  ------------------
  |  Branch (3916:13): [True: 0, False: 0]
  ------------------
 3917|      0|            PyObject *exc;
 3918|      0|            exc = PyObject_CallFunction(PyExc_UnicodeDecodeError, "sy#nns",
 3919|      0|                                        "locale", str, len,
 3920|      0|                                        (Py_ssize_t)wlen,
 3921|      0|                                        (Py_ssize_t)(wlen + 1),
 3922|      0|                                        reason);
 3923|      0|            if (exc != NULL) {
  ------------------
  |  Branch (3923:17): [True: 0, False: 0]
  ------------------
 3924|      0|                PyCodec_StrictErrors(exc);
 3925|      0|                Py_DECREF(exc);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3926|      0|            }
 3927|      0|        }
 3928|      0|        else if (res == -3) {
  ------------------
  |  Branch (3928:18): [True: 0, False: 0]
  ------------------
 3929|      0|            PyErr_SetString(PyExc_ValueError, "unsupported error handler");
 3930|      0|        }
 3931|      0|        else {
 3932|      0|            PyErr_NoMemory();
 3933|      0|        }
 3934|      0|        return NULL;
 3935|      0|    }
 3936|       |
 3937|     11|    PyObject *unicode = PyUnicode_FromWideChar(wstr, wlen);
 3938|     11|    PyMem_RawFree(wstr);
 3939|     11|    return unicode;
 3940|     11|}
unicodeobject.c:findchar:
 1007|    140|{
 1008|    140|    switch (kind) {
 1009|    140|    case PyUnicode_1BYTE_KIND:
  ------------------
  |  Branch (1009:5): [True: 140, False: 0]
  ------------------
 1010|    140|        if ((Py_UCS1) ch != ch)
  ------------------
  |  Branch (1010:13): [True: 0, False: 140]
  ------------------
 1011|      0|            return -1;
 1012|    140|        if (direction > 0)
  ------------------
  |  Branch (1012:13): [True: 127, False: 13]
  ------------------
 1013|    127|            return ucs1lib_find_char((const Py_UCS1 *) s, size, (Py_UCS1) ch);
 1014|     13|        else
 1015|     13|            return ucs1lib_rfind_char((const Py_UCS1 *) s, size, (Py_UCS1) ch);
 1016|      0|    case PyUnicode_2BYTE_KIND:
  ------------------
  |  Branch (1016:5): [True: 0, False: 140]
  ------------------
 1017|      0|        if ((Py_UCS2) ch != ch)
  ------------------
  |  Branch (1017:13): [True: 0, False: 0]
  ------------------
 1018|      0|            return -1;
 1019|      0|        if (direction > 0)
  ------------------
  |  Branch (1019:13): [True: 0, False: 0]
  ------------------
 1020|      0|            return ucs2lib_find_char((const Py_UCS2 *) s, size, (Py_UCS2) ch);
 1021|      0|        else
 1022|      0|            return ucs2lib_rfind_char((const Py_UCS2 *) s, size, (Py_UCS2) ch);
 1023|      0|    case PyUnicode_4BYTE_KIND:
  ------------------
  |  Branch (1023:5): [True: 0, False: 140]
  ------------------
 1024|      0|        if (direction > 0)
  ------------------
  |  Branch (1024:13): [True: 0, False: 0]
  ------------------
 1025|      0|            return ucs4lib_find_char((const Py_UCS4 *) s, size, ch);
 1026|      0|        else
 1027|      0|            return ucs4lib_rfind_char((const Py_UCS4 *) s, size, ch);
 1028|      0|    default:
  ------------------
  |  Branch (1028:5): [True: 0, False: 140]
  ------------------
 1029|      0|        Py_UNREACHABLE();
  ------------------
  |  |  264|      0|#  define Py_UNREACHABLE() __builtin_unreachable()
  ------------------
 1030|    140|    }
 1031|    140|}
unicodeobject.c:unicode_ensure_utf8:
 4091|    272|{
 4092|    272|    int err = 0;
 4093|    272|    if (PyUnicode_UTF8(unicode) == NULL) {
  ------------------
  |  Branch (4093:9): [True: 0, False: 272]
  ------------------
 4094|      0|        Py_BEGIN_CRITICAL_SECTION(unicode);
  ------------------
  |  |   51|      0|    {
  ------------------
 4095|      0|        if (PyUnicode_UTF8(unicode) == NULL) {
  ------------------
  |  Branch (4095:13): [True: 0, False: 0]
  ------------------
 4096|      0|            err = unicode_fill_utf8(unicode);
 4097|      0|        }
 4098|      0|        Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|      0|    }
  ------------------
 4099|      0|    }
 4100|    272|    return err;
 4101|    272|}
unicodeobject.c:PyUnicode_UTF8_LENGTH:
  135|    201|{
  136|    201|    assert(_PyUnicode_CHECK(op));
  ------------------
  |  Branch (136:5): [True: 201, False: 0]
  ------------------
  137|    201|    if (PyUnicode_IS_COMPACT_ASCII(op)) {
  ------------------
  |  |  241|    201|#define PyUnicode_IS_COMPACT_ASCII(op) PyUnicode_IS_COMPACT_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    201|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    201|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (241:40): [True: 201, False: 0]
  |  |  ------------------
  ------------------
  138|    201|         return _PyASCIIObject_CAST(op)->length;
  ------------------
  |  |  186|    201|    (assert(PyUnicode_Check(op)), \
  |  |  187|    201|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|    201|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (138:17): [True: 201, False: 0]
  ------------------
  139|    201|    }
  140|      0|    else {
  141|      0|         return _PyCompactUnicodeObject_CAST(op)->utf8_length;
  ------------------
  |  |  189|      0|    (assert(PyUnicode_Check(op)), \
  |  |  190|      0|     _Py_CAST(PyCompactUnicodeObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (141:17): [True: 0, False: 0]
  ------------------
  142|      0|    }
  143|    201|}
unicodeobject.c:PyUnicode_UTF8:
  119|    596|{
  120|    596|    assert(_PyUnicode_CHECK(op));
  ------------------
  |  Branch (120:5): [True: 596, False: 0]
  ------------------
  121|    596|    if (PyUnicode_IS_COMPACT_ASCII(op)) {
  ------------------
  |  |  241|    596|#define PyUnicode_IS_COMPACT_ASCII(op) PyUnicode_IS_COMPACT_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    596|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    596|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (241:40): [True: 596, False: 0]
  |  |  ------------------
  ------------------
  122|    596|        return ((char*)(_PyASCIIObject_CAST(op) + 1));
  ------------------
  |  |  186|    596|    (assert(PyUnicode_Check(op)), \
  |  |  187|    596|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|    596|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (122:25): [True: 596, False: 0]
  ------------------
  123|    596|    }
  124|      0|    else {
  125|      0|         return _PyUnicode_UTF8(op);
  126|      0|    }
  127|    596|}
unicodeobject.c:unicode_decode_utf8:
 5253|  5.15k|{
 5254|  5.15k|    if (size == 0) {
  ------------------
  |  Branch (5254:9): [True: 2, False: 5.15k]
  ------------------
 5255|      2|        if (consumed) {
  ------------------
  |  Branch (5255:13): [True: 0, False: 2]
  ------------------
 5256|      0|            *consumed = 0;
 5257|      0|        }
 5258|      2|        _Py_RETURN_UNICODE_EMPTY();
  ------------------
  |  |  375|      2|    do {                             \
  |  |  376|      2|        return _PyUnicode_GetEmpty();\
  |  |  377|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (377:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 5259|      2|    }
 5260|       |
 5261|       |    /* ASCII is equivalent to the first 128 ordinals in Unicode. */
 5262|  5.15k|    if (size == 1 && (unsigned char)s[0] < 128) {
  ------------------
  |  Branch (5262:9): [True: 12, False: 5.14k]
  |  Branch (5262:22): [True: 12, False: 0]
  ------------------
 5263|     12|        if (consumed) {
  ------------------
  |  Branch (5263:13): [True: 0, False: 12]
  ------------------
 5264|      0|            *consumed = 1;
 5265|      0|        }
 5266|     12|        return get_latin1_char((unsigned char)s[0]);
 5267|     12|    }
 5268|       |
 5269|       |    // I don't know this check is necessary or not. But there is a test
 5270|       |    // case that requires size=PY_SSIZE_T_MAX cause MemoryError.
 5271|  5.14k|    if (PY_SSIZE_T_MAX - sizeof(PyCompactUnicodeObject) < (size_t)size) {
  ------------------
  |  |  137|  5.14k|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (5271:9): [True: 0, False: 5.14k]
  ------------------
 5272|      0|        PyErr_NoMemory();
 5273|      0|        return NULL;
 5274|      0|    }
 5275|       |
 5276|  5.14k|    const char *starts = s;
 5277|  5.14k|    const char *end = s + size;
 5278|       |
 5279|  5.14k|    Py_ssize_t pos = find_first_nonascii((const unsigned char*)starts, (const unsigned char*)end);
 5280|  5.14k|    if (pos == size) {  // fast path: ASCII string.
  ------------------
  |  Branch (5280:9): [True: 5.14k, False: 1]
  ------------------
 5281|  5.14k|        PyObject *u = PyUnicode_New(size, 127);
 5282|  5.14k|        if (u == NULL) {
  ------------------
  |  Branch (5282:13): [True: 0, False: 5.14k]
  ------------------
 5283|      0|            return NULL;
 5284|      0|        }
 5285|  5.14k|        memcpy(PyUnicode_1BYTE_DATA(u), s, size);
  ------------------
  |  |  291|  5.14k|#define PyUnicode_1BYTE_DATA(op) _Py_STATIC_CAST(Py_UCS1*, PyUnicode_DATA(op))
  |  |  ------------------
  |  |  |  |   34|  5.14k|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
 5286|  5.14k|        if (consumed) {
  ------------------
  |  Branch (5286:13): [True: 0, False: 5.14k]
  ------------------
 5287|      0|            *consumed = size;
 5288|      0|        }
 5289|  5.14k|        return u;
 5290|  5.14k|    }
 5291|       |
 5292|      1|    int maxchr = 127;
 5293|      1|    Py_ssize_t maxsize = size;
 5294|       |
 5295|      1|    unsigned char ch = (unsigned char)(s[pos]);
 5296|       |    // error handler other than strict may remove/replace the invalid byte.
 5297|       |    // consumed != NULL allows 1~3 bytes remainings.
 5298|       |    // 0x80 <= ch < 0xc2 is invalid start byte that cause UnicodeDecodeError.
 5299|       |    // otherwise: check the input and decide the maxchr and maxsize to reduce
 5300|       |    // reallocation and copy.
 5301|      1|    if (error_handler == _Py_ERROR_STRICT && !consumed && ch >= 0xc2) {
  ------------------
  |  Branch (5301:9): [True: 0, False: 1]
  |  Branch (5301:46): [True: 0, False: 0]
  |  Branch (5301:59): [True: 0, False: 0]
  ------------------
 5302|       |        // we only calculate the number of codepoints and don't determine the exact maxchr.
 5303|       |        // This is because writing fast and portable SIMD code to find maxchr is difficult.
 5304|       |        // If reallocation occurs for a larger maxchar, knowing the exact number of codepoints
 5305|       |        // means that it is no longer necessary to allocate several times the required amount
 5306|       |        // of memory.
 5307|      0|        maxsize = utf8_count_codepoints((const unsigned char *)s, (const unsigned char *)end);
 5308|      0|        if (ch < 0xc4) { // latin1
  ------------------
  |  Branch (5308:13): [True: 0, False: 0]
  ------------------
 5309|      0|            maxchr = 0xff;
 5310|      0|        }
 5311|      0|        else if (ch < 0xf0) { // ucs2
  ------------------
  |  Branch (5311:18): [True: 0, False: 0]
  ------------------
 5312|      0|            maxchr = 0xffff;
 5313|      0|        }
 5314|      0|        else { // ucs4
 5315|      0|            maxchr = 0x10ffff;
 5316|      0|        }
 5317|      0|    }
 5318|      1|    PyObject *u = PyUnicode_New(maxsize, maxchr);
 5319|      1|    if (!u) {
  ------------------
  |  Branch (5319:9): [True: 0, False: 1]
  ------------------
 5320|      0|        return NULL;
 5321|      0|    }
 5322|       |
 5323|       |    // Use _PyUnicodeWriter after fast path is failed.
 5324|      1|    _PyUnicodeWriter writer;
 5325|      1|    _PyUnicodeWriter_InitWithBuffer(&writer, u);
 5326|      1|    if (maxchr <= 255) {
  ------------------
  |  Branch (5326:9): [True: 1, False: 0]
  ------------------
 5327|      1|        memcpy(PyUnicode_1BYTE_DATA(u), s, pos);
  ------------------
  |  |  291|      1|#define PyUnicode_1BYTE_DATA(op) _Py_STATIC_CAST(Py_UCS1*, PyUnicode_DATA(op))
  |  |  ------------------
  |  |  |  |   34|      1|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
 5328|      1|        s += pos;
 5329|      1|        writer.pos = pos;
 5330|      1|    }
 5331|       |
 5332|      1|    if (unicode_decode_utf8_impl(&writer, starts, s, end,
  ------------------
  |  Branch (5332:9): [True: 0, False: 1]
  ------------------
 5333|      1|                                 error_handler, errors,
 5334|      1|                                 consumed) < 0) {
 5335|      0|        _PyUnicodeWriter_Dealloc(&writer);
 5336|      0|        return NULL;
 5337|      0|    }
 5338|      1|    return _PyUnicodeWriter_Finish(&writer);
 5339|      1|}
unicodeobject.c:find_first_nonascii:
 4981|  5.18k|{
 4982|       |    // The search is done in `size_t` chunks.
 4983|       |    // The start and end might not be aligned at `size_t` boundaries,
 4984|       |    // so they're handled specially.
 4985|       |
 4986|  5.18k|    const unsigned char *p = start;
 4987|       |
 4988|  5.18k|    if (end - start >= SIZEOF_SIZE_T) {
  ------------------
  |  | 1838|  5.18k|#define SIZEOF_SIZE_T 8
  ------------------
  |  Branch (4988:9): [True: 3.29k, False: 1.88k]
  ------------------
 4989|       |        // Avoid unaligned read.
 4990|  3.29k|#if PY_LITTLE_ENDIAN && HAVE_CTZ
 4991|  3.29k|        size_t u;
 4992|  3.29k|        memcpy(&u, p, sizeof(size_t));
 4993|  3.29k|        u &= ASCII_CHAR_MASK;
  ------------------
  |  | 4887|  3.29k|# define ASCII_CHAR_MASK 0x8080808080808080ULL
  ------------------
 4994|  3.29k|        if (u) {
  ------------------
  |  Branch (4994:13): [True: 0, False: 3.29k]
  ------------------
 4995|      0|            return (ctz(u) - 7) / 8;
 4996|      0|        }
 4997|  3.29k|        p = _Py_ALIGN_DOWN(p + SIZEOF_SIZE_T, SIZEOF_SIZE_T);
  ------------------
  |  |  216|  3.29k|#define _Py_ALIGN_DOWN(p, a) ((void *)((uintptr_t)(p) & ~(uintptr_t)((a) - 1)))
  ------------------
 4998|       |#else /* PY_LITTLE_ENDIAN && HAVE_CTZ */
 4999|       |        const unsigned char *p2 = _Py_ALIGN_UP(p, SIZEOF_SIZE_T);
 5000|       |        while (p < p2) {
 5001|       |            if (*p & 0x80) {
 5002|       |                return p - start;
 5003|       |            }
 5004|       |            p++;
 5005|       |        }
 5006|       |#endif
 5007|       |
 5008|  3.29k|        const unsigned char *e = end - SIZEOF_SIZE_T;
  ------------------
  |  | 1838|  3.29k|#define SIZEOF_SIZE_T 8
  ------------------
 5009|  11.5k|        while (p <= e) {
  ------------------
  |  Branch (5009:16): [True: 8.25k, False: 3.29k]
  ------------------
 5010|  8.25k|            size_t u = (*(const size_t *)p) & ASCII_CHAR_MASK;
  ------------------
  |  | 4887|  8.25k|# define ASCII_CHAR_MASK 0x8080808080808080ULL
  ------------------
 5011|  8.25k|            if (u) {
  ------------------
  |  Branch (5011:17): [True: 1, False: 8.25k]
  ------------------
 5012|      1|#if PY_LITTLE_ENDIAN && HAVE_CTZ
 5013|      1|                return p - start + (ctz(u) - 7) / 8;
 5014|       |#else
 5015|       |                // big endian and minor compilers are difficult to test.
 5016|       |                // fallback to per byte check.
 5017|       |                break;
 5018|       |#endif
 5019|      1|            }
 5020|  8.25k|            p += SIZEOF_SIZE_T;
  ------------------
  |  | 1838|  8.25k|#define SIZEOF_SIZE_T 8
  ------------------
 5021|  8.25k|        }
 5022|  3.29k|    }
 5023|  5.18k|#if PY_LITTLE_ENDIAN && HAVE_CTZ
 5024|  5.18k|    assert((end - p) < SIZEOF_SIZE_T);
  ------------------
  |  Branch (5024:5): [True: 5.18k, False: 0]
  ------------------
 5025|       |    // we can not use *(const size_t*)p to avoid buffer overrun.
 5026|  5.18k|    size_t u = load_unaligned(p, end - p) & ASCII_CHAR_MASK;
  ------------------
  |  | 4887|  5.18k|# define ASCII_CHAR_MASK 0x8080808080808080ULL
  ------------------
 5027|  5.18k|    if (u) {
  ------------------
  |  Branch (5027:9): [True: 0, False: 5.18k]
  ------------------
 5028|      0|        return p - start + (ctz(u) - 7) / 8;
 5029|      0|    }
 5030|  5.18k|    return end - start;
 5031|       |#else
 5032|       |    while (p < end) {
 5033|       |        if (*p & 0x80) {
 5034|       |            break;
 5035|       |        }
 5036|       |        p++;
 5037|       |    }
 5038|       |    return p - start;
 5039|       |#endif
 5040|  5.18k|}
unicodeobject.c:ctz:
 4903|      1|{
 4904|      1|    return __builtin_ctzll((unsigned long long)v);
 4905|      1|}
unicodeobject.c:load_unaligned:
 4927|  5.18k|{
 4928|  5.18k|    union {
 4929|  5.18k|        size_t s;
 4930|  5.18k|        unsigned char b[SIZEOF_SIZE_T];
 4931|  5.18k|    } u;
 4932|  5.18k|    u.s = 0;
 4933|       |    // This switch statement assumes little endian because:
 4934|       |    // * union is faster than bitwise or and shift.
 4935|       |    // * big endian machine is rare and hard to maintain.
 4936|  5.18k|    switch (size) {
 4937|      0|    default:
  ------------------
  |  Branch (4937:5): [True: 0, False: 5.18k]
  ------------------
 4938|      0|#if SIZEOF_SIZE_T == 8
 4939|      0|    case 8:
  ------------------
  |  Branch (4939:5): [True: 0, False: 5.18k]
  ------------------
 4940|      0|        u.b[7] = p[7];
 4941|      0|        _Py_FALLTHROUGH;
  ------------------
  |  |  644|      0|#  define _Py_FALLTHROUGH __attribute__((fallthrough))
  ------------------
 4942|  1.00k|    case 7:
  ------------------
  |  Branch (4942:5): [True: 1.00k, False: 4.17k]
  ------------------
 4943|  1.00k|        u.b[6] = p[6];
 4944|  1.00k|        _Py_FALLTHROUGH;
  ------------------
  |  |  644|  1.00k|#  define _Py_FALLTHROUGH __attribute__((fallthrough))
  ------------------
 4945|  1.98k|    case 6:
  ------------------
  |  Branch (4945:5): [True: 980, False: 4.20k]
  ------------------
 4946|  1.98k|        u.b[5] = p[5];
 4947|  1.98k|        _Py_FALLTHROUGH;
  ------------------
  |  |  644|  1.98k|#  define _Py_FALLTHROUGH __attribute__((fallthrough))
  ------------------
 4948|  2.75k|    case 5:
  ------------------
  |  Branch (4948:5): [True: 768, False: 4.41k]
  ------------------
 4949|  2.75k|        u.b[4] = p[4];
 4950|  2.75k|        _Py_FALLTHROUGH;
  ------------------
  |  |  644|  2.75k|#  define _Py_FALLTHROUGH __attribute__((fallthrough))
  ------------------
 4951|  2.75k|#endif
 4952|  3.37k|    case 4:
  ------------------
  |  Branch (4952:5): [True: 615, False: 4.57k]
  ------------------
 4953|  3.37k|        u.b[3] = p[3];
 4954|  3.37k|        _Py_FALLTHROUGH;
  ------------------
  |  |  644|  3.37k|#  define _Py_FALLTHROUGH __attribute__((fallthrough))
  ------------------
 4955|  3.91k|    case 3:
  ------------------
  |  Branch (4955:5): [True: 548, False: 4.63k]
  ------------------
 4956|  3.91k|        u.b[2] = p[2];
 4957|  3.91k|        _Py_FALLTHROUGH;
  ------------------
  |  |  644|  3.91k|#  define _Py_FALLTHROUGH __attribute__((fallthrough))
  ------------------
 4958|  4.44k|    case 2:
  ------------------
  |  Branch (4958:5): [True: 527, False: 4.65k]
  ------------------
 4959|  4.44k|        u.b[1] = p[1];
 4960|  4.44k|        _Py_FALLTHROUGH;
  ------------------
  |  |  644|  4.44k|#  define _Py_FALLTHROUGH __attribute__((fallthrough))
  ------------------
 4961|  4.84k|    case 1:
  ------------------
  |  Branch (4961:5): [True: 398, False: 4.78k]
  ------------------
 4962|  4.84k|        u.b[0] = p[0];
 4963|  4.84k|        break;
 4964|    341|    case 0:
  ------------------
  |  Branch (4964:5): [True: 341, False: 4.84k]
  ------------------
 4965|    341|        break;
 4966|  5.18k|    }
 4967|  5.18k|    return u.s;
 4968|  5.18k|}
unicodeobject.c:ascii_decode:
 5095|     46|{
 5096|     46|#if SIZEOF_SIZE_T <= SIZEOF_VOID_P
 5097|     46|    if (_Py_IS_ALIGNED(start, ALIGNOF_SIZE_T)
  ------------------
  |  |  221|     92|#define _Py_IS_ALIGNED(p, a) (!((uintptr_t)(p) & (uintptr_t)((a) - 1)))
  |  |  ------------------
  |  |  |  Branch (221:30): [True: 4, False: 42]
  |  |  ------------------
  ------------------
 5098|      4|        && _Py_IS_ALIGNED(dest, ALIGNOF_SIZE_T))
  ------------------
  |  |  221|      4|#define _Py_IS_ALIGNED(p, a) (!((uintptr_t)(p) & (uintptr_t)((a) - 1)))
  |  |  ------------------
  |  |  |  Branch (221:30): [True: 3, False: 1]
  |  |  ------------------
  ------------------
 5099|      3|    {
 5100|       |        /* Fast path, see in STRINGLIB(utf8_decode) for
 5101|       |           an explanation. */
 5102|      3|        const char *p = start;
 5103|      3|        Py_UCS1 *q = dest;
 5104|      6|        while (p + SIZEOF_SIZE_T <= end) {
  ------------------
  |  | 1838|      6|#define SIZEOF_SIZE_T 8
  ------------------
  |  Branch (5104:16): [True: 3, False: 3]
  ------------------
 5105|      3|            size_t value = *(const size_t *) p;
 5106|      3|            if (value & ASCII_CHAR_MASK)
  ------------------
  |  | 4887|      3|# define ASCII_CHAR_MASK 0x8080808080808080ULL
  ------------------
  |  Branch (5106:17): [True: 0, False: 3]
  ------------------
 5107|      0|                break;
 5108|      3|            *((size_t *)q) = value;
 5109|      3|            p += SIZEOF_SIZE_T;
  ------------------
  |  | 1838|      3|#define SIZEOF_SIZE_T 8
  ------------------
 5110|      3|            q += SIZEOF_SIZE_T;
  ------------------
  |  | 1838|      3|#define SIZEOF_SIZE_T 8
  ------------------
 5111|      3|        }
 5112|     16|        while (p < end) {
  ------------------
  |  Branch (5112:16): [True: 13, False: 3]
  ------------------
 5113|     13|            if ((unsigned char)*p & 0x80)
  ------------------
  |  Branch (5113:17): [True: 0, False: 13]
  ------------------
 5114|      0|                break;
 5115|     13|            *q++ = *p++;
 5116|     13|        }
 5117|      3|        return p - start;
 5118|      3|    }
 5119|     43|#endif
 5120|     43|    Py_ssize_t pos = find_first_nonascii((const unsigned char*)start,
 5121|     43|                                         (const unsigned char*)end);
 5122|     43|    memcpy(dest, start, pos);
 5123|     43|    return pos;
 5124|     46|}
unicodeobject.c:unicode_decode_utf8_impl:
 5132|      1|{
 5133|      1|    Py_ssize_t startinpos, endinpos;
 5134|      1|    const char *errmsg = "";
 5135|      1|    PyObject *error_handler_obj = NULL;
 5136|      1|    PyObject *exc = NULL;
 5137|       |
 5138|      3|    while (s < end) {
  ------------------
  |  Branch (5138:12): [True: 3, False: 0]
  ------------------
 5139|      3|        Py_UCS4 ch;
 5140|      3|        int kind = writer->kind;
 5141|       |
 5142|      3|        if (kind == PyUnicode_1BYTE_KIND) {
  ------------------
  |  Branch (5142:13): [True: 2, False: 1]
  ------------------
 5143|      2|            if (PyUnicode_IS_ASCII(writer->buffer))
  ------------------
  |  |  227|      2|#define PyUnicode_IS_ASCII(op) PyUnicode_IS_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (227:32): [True: 1, False: 1]
  |  |  ------------------
  ------------------
 5144|      1|                ch = asciilib_utf8_decode(&s, end, writer->data, &writer->pos);
 5145|      1|            else
 5146|      1|                ch = ucs1lib_utf8_decode(&s, end, writer->data, &writer->pos);
 5147|      2|        } else if (kind == PyUnicode_2BYTE_KIND) {
  ------------------
  |  Branch (5147:20): [True: 1, False: 0]
  ------------------
 5148|      1|            ch = ucs2lib_utf8_decode(&s, end, writer->data, &writer->pos);
 5149|      1|        } else {
 5150|      0|            assert(kind == PyUnicode_4BYTE_KIND);
  ------------------
  |  Branch (5150:13): [True: 0, False: 0]
  ------------------
 5151|      0|            ch = ucs4lib_utf8_decode(&s, end, writer->data, &writer->pos);
 5152|      0|        }
 5153|       |
 5154|      3|        switch (ch) {
 5155|      1|        case 0:
  ------------------
  |  Branch (5155:9): [True: 1, False: 2]
  ------------------
 5156|      1|            if (s == end || consumed)
  ------------------
  |  Branch (5156:17): [True: 1, False: 0]
  |  Branch (5156:29): [True: 0, False: 0]
  ------------------
 5157|      1|                goto End;
 5158|      0|            errmsg = "unexpected end of data";
 5159|      0|            startinpos = s - starts;
 5160|      0|            endinpos = end - starts;
 5161|      0|            break;
 5162|      0|        case 1:
  ------------------
  |  Branch (5162:9): [True: 0, False: 3]
  ------------------
 5163|      0|            errmsg = "invalid start byte";
 5164|      0|            startinpos = s - starts;
 5165|      0|            endinpos = startinpos + 1;
 5166|      0|            break;
 5167|      0|        case 2:
  ------------------
  |  Branch (5167:9): [True: 0, False: 3]
  ------------------
 5168|      0|            if (consumed && (unsigned char)s[0] == 0xED && end - s == 2
  ------------------
  |  Branch (5168:17): [True: 0, False: 0]
  |  Branch (5168:29): [True: 0, False: 0]
  |  Branch (5168:60): [True: 0, False: 0]
  ------------------
 5169|      0|                && (unsigned char)s[1] >= 0xA0 && (unsigned char)s[1] <= 0xBF)
  ------------------
  |  Branch (5169:20): [True: 0, False: 0]
  |  Branch (5169:51): [True: 0, False: 0]
  ------------------
 5170|      0|            {
 5171|       |                /* Truncated surrogate code in range D800-DFFF */
 5172|      0|                goto End;
 5173|      0|            }
 5174|      0|            _Py_FALLTHROUGH;
  ------------------
  |  |  644|      0|#  define _Py_FALLTHROUGH __attribute__((fallthrough))
  ------------------
 5175|      0|        case 3:
  ------------------
  |  Branch (5175:9): [True: 0, False: 3]
  ------------------
 5176|      0|        case 4:
  ------------------
  |  Branch (5176:9): [True: 0, False: 3]
  ------------------
 5177|      0|            errmsg = "invalid continuation byte";
 5178|      0|            startinpos = s - starts;
 5179|      0|            endinpos = startinpos + ch - 1;
 5180|      0|            break;
 5181|      2|        default:
  ------------------
  |  Branch (5181:9): [True: 2, False: 1]
  ------------------
 5182|       |            // ch doesn't fit into kind, so change the buffer kind to write
 5183|       |            // the character
 5184|      2|            if (_PyUnicodeWriter_WriteCharInline(writer, ch) < 0)
  ------------------
  |  Branch (5184:17): [True: 0, False: 2]
  ------------------
 5185|      0|                goto onError;
 5186|      2|            continue;
 5187|      3|        }
 5188|       |
 5189|      0|        if (error_handler == _Py_ERROR_UNKNOWN)
  ------------------
  |  Branch (5189:13): [True: 0, False: 0]
  ------------------
 5190|      0|            error_handler = _Py_GetErrorHandler(errors);
 5191|       |
 5192|      0|        switch (error_handler) {
 5193|      0|        case _Py_ERROR_IGNORE:
  ------------------
  |  Branch (5193:9): [True: 0, False: 0]
  ------------------
 5194|      0|            s += (endinpos - startinpos);
 5195|      0|            break;
 5196|       |
 5197|      0|        case _Py_ERROR_REPLACE:
  ------------------
  |  Branch (5197:9): [True: 0, False: 0]
  ------------------
 5198|      0|            if (_PyUnicodeWriter_WriteCharInline(writer, 0xfffd) < 0)
  ------------------
  |  Branch (5198:17): [True: 0, False: 0]
  ------------------
 5199|      0|                goto onError;
 5200|      0|            s += (endinpos - startinpos);
 5201|      0|            break;
 5202|       |
 5203|      0|        case _Py_ERROR_SURROGATEESCAPE:
  ------------------
  |  Branch (5203:9): [True: 0, False: 0]
  ------------------
 5204|      0|        {
 5205|      0|            Py_ssize_t i;
 5206|       |
 5207|      0|            if (_PyUnicodeWriter_PrepareKind(writer, PyUnicode_2BYTE_KIND) < 0)
  ------------------
  |  |  582|      0|    ((KIND) <= (WRITER)->kind                                         \
  |  |  ------------------
  |  |  |  Branch (582:6): [True: 0, False: 0]
  |  |  ------------------
  |  |  583|      0|     ? 0                                                              \
  |  |  584|      0|     : _PyUnicodeWriter_PrepareKindInternal((WRITER), (KIND)))
  ------------------
  |  Branch (5207:17): [True: 0, False: 0]
  ------------------
 5208|      0|                goto onError;
 5209|      0|            for (i=startinpos; i<endinpos; i++) {
  ------------------
  |  Branch (5209:32): [True: 0, False: 0]
  ------------------
 5210|      0|                ch = (Py_UCS4)(unsigned char)(starts[i]);
 5211|      0|                PyUnicode_WRITE(writer->kind, writer->data, writer->pos,
  ------------------
  |  |  335|      0|    PyUnicode_WRITE(_Py_STATIC_CAST(int, kind), _Py_CAST(void*, data), \
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |                   PyUnicode_WRITE(_Py_STATIC_CAST(int, kind), _Py_CAST(void*, data), \
  |  |  ------------------
  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  336|      0|                    (index), _Py_STATIC_CAST(Py_UCS4, value))
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
 5212|      0|                                ch + 0xdc00);
 5213|      0|                writer->pos++;
 5214|      0|            }
 5215|      0|            s += (endinpos - startinpos);
 5216|      0|            break;
 5217|      0|        }
 5218|       |
 5219|      0|        default:
  ------------------
  |  Branch (5219:9): [True: 0, False: 0]
  ------------------
 5220|      0|            if (unicode_decode_call_errorhandler_writer(
  ------------------
  |  Branch (5220:17): [True: 0, False: 0]
  ------------------
 5221|      0|                    errors, &error_handler_obj,
 5222|      0|                    "utf-8", errmsg,
 5223|      0|                    &starts, &end, &startinpos, &endinpos, &exc, &s,
 5224|      0|                    writer)) {
 5225|      0|                goto onError;
 5226|      0|            }
 5227|       |
 5228|      0|            if (_PyUnicodeWriter_Prepare(writer, end - s, 127) < 0) {
  ------------------
  |  |  562|      0|    (((MAXCHAR) <= (WRITER)->maxchar                                  \
  |  |  ------------------
  |  |  |  Branch (562:7): [True: 0, False: 0]
  |  |  ------------------
  |  |  563|      0|      && (LENGTH) <= (WRITER)->size - (WRITER)->pos)                  \
  |  |  ------------------
  |  |  |  Branch (563:10): [True: 0, False: 0]
  |  |  ------------------
  |  |  564|      0|     ? 0                                                              \
  |  |  565|      0|     : (((LENGTH) == 0)                                               \
  |  |  ------------------
  |  |  |  Branch (565:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  566|      0|        ? 0                                                           \
  |  |  567|      0|        : _PyUnicodeWriter_PrepareInternal((WRITER), (LENGTH), (MAXCHAR))))
  ------------------
  |  Branch (5228:17): [True: 0, False: 0]
  ------------------
 5229|      0|                goto onError;
 5230|      0|            }
 5231|      0|        }
 5232|      0|    }
 5233|       |
 5234|      1|End:
 5235|      1|    if (consumed)
  ------------------
  |  Branch (5235:9): [True: 0, False: 1]
  ------------------
 5236|      0|        *consumed = s - starts;
 5237|       |
 5238|      1|    Py_XDECREF(error_handler_obj);
  ------------------
  |  |  524|      1|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5239|      1|    Py_XDECREF(exc);
  ------------------
  |  |  524|      1|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5240|      1|    return 0;
 5241|       |
 5242|      0|onError:
 5243|      0|    Py_XDECREF(error_handler_obj);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5244|      0|    Py_XDECREF(exc);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5245|      0|    return -1;
 5246|      1|}
unicodeobject.c:unicode_encode_utf8:
 5680|     26|{
 5681|     26|    if (!PyUnicode_Check(unicode)) {
  ------------------
  |  |  103|     26|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     26|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (5681:9): [True: 0, False: 26]
  ------------------
 5682|      0|        PyErr_BadArgument();
 5683|      0|        return NULL;
 5684|      0|    }
 5685|       |
 5686|     26|    if (PyUnicode_UTF8(unicode))
  ------------------
  |  Branch (5686:9): [True: 26, False: 0]
  ------------------
 5687|     26|        return PyBytes_FromStringAndSize(PyUnicode_UTF8(unicode),
 5688|     26|                                         PyUnicode_UTF8_LENGTH(unicode));
 5689|       |
 5690|      0|    int kind = PyUnicode_KIND(unicode);
  ------------------
  |  |  258|      0|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|      0|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5691|      0|    const void *data = PyUnicode_DATA(unicode);
  ------------------
  |  |  284|      0|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5692|      0|    Py_ssize_t size = PyUnicode_GET_LENGTH(unicode);
  ------------------
  |  |  299|      0|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5693|       |
 5694|      0|    PyBytesWriter *writer;
 5695|      0|    char *end;
 5696|       |
 5697|      0|    switch (kind) {
 5698|      0|    default:
  ------------------
  |  Branch (5698:5): [True: 0, False: 0]
  ------------------
 5699|      0|        Py_UNREACHABLE();
  ------------------
  |  |  264|      0|#  define Py_UNREACHABLE() __builtin_unreachable()
  ------------------
 5700|      0|    case PyUnicode_1BYTE_KIND:
  ------------------
  |  Branch (5700:5): [True: 0, False: 0]
  ------------------
 5701|       |        /* the string cannot be ASCII, or PyUnicode_UTF8() would be set */
 5702|      0|        assert(!PyUnicode_IS_ASCII(unicode));
  ------------------
  |  Branch (5702:9): [True: 0, False: 0]
  ------------------
 5703|      0|        writer = ucs1lib_utf8_encoder(unicode, data, size,
 5704|      0|                                      error_handler, errors, &end);
 5705|      0|        break;
 5706|      0|    case PyUnicode_2BYTE_KIND:
  ------------------
  |  Branch (5706:5): [True: 0, False: 0]
  ------------------
 5707|      0|        writer = ucs2lib_utf8_encoder(unicode, data, size,
 5708|      0|                                      error_handler, errors, &end);
 5709|      0|        break;
 5710|      0|    case PyUnicode_4BYTE_KIND:
  ------------------
  |  Branch (5710:5): [True: 0, False: 0]
  ------------------
 5711|      0|        writer = ucs4lib_utf8_encoder(unicode, data, size,
 5712|      0|                                      error_handler, errors, &end);
 5713|      0|        break;
 5714|      0|    }
 5715|       |
 5716|      0|    if (writer == NULL) {
  ------------------
  |  Branch (5716:9): [True: 0, False: 0]
  ------------------
 5717|      0|        PyBytesWriter_Discard(writer);
 5718|      0|        return NULL;
 5719|      0|    }
 5720|      0|    return PyBytesWriter_FinishWithPointer(writer, end);
 5721|      0|}
unicodeobject.c:any_find_slice:
 9526|      4|{
 9527|      4|    int kind1, kind2;
 9528|      4|    const void *buf1, *buf2;
 9529|      4|    Py_ssize_t len1, len2, result;
 9530|       |
 9531|      4|    kind1 = PyUnicode_KIND(s1);
  ------------------
  |  |  258|      4|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|      8|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9532|      4|    kind2 = PyUnicode_KIND(s2);
  ------------------
  |  |  258|      4|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|      8|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9533|      4|    if (kind1 < kind2)
  ------------------
  |  Branch (9533:9): [True: 0, False: 4]
  ------------------
 9534|      0|        return -1;
 9535|       |
 9536|      4|    len1 = PyUnicode_GET_LENGTH(s1);
  ------------------
  |  |  299|      4|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9537|      4|    len2 = PyUnicode_GET_LENGTH(s2);
  ------------------
  |  |  299|      4|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9538|      4|    ADJUST_INDICES(start, end, len1);
  ------------------
  |  | 9503|      4|    do {                                \
  |  | 9504|      4|        if (end > len) {                \
  |  |  ------------------
  |  |  |  Branch (9504:13): [True: 4, False: 0]
  |  |  ------------------
  |  | 9505|      4|            end = len;                  \
  |  | 9506|      4|        }                               \
  |  | 9507|      4|        else if (end < 0) {             \
  |  |  ------------------
  |  |  |  Branch (9507:18): [True: 0, False: 0]
  |  |  ------------------
  |  | 9508|      0|            end += len;                 \
  |  | 9509|      0|            if (end < 0) {              \
  |  |  ------------------
  |  |  |  Branch (9509:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 9510|      0|                end = 0;                \
  |  | 9511|      0|            }                           \
  |  | 9512|      0|        }                               \
  |  | 9513|      4|        if (start < 0) {                \
  |  |  ------------------
  |  |  |  Branch (9513:13): [True: 0, False: 4]
  |  |  ------------------
  |  | 9514|      0|            start += len;               \
  |  | 9515|      0|            if (start < 0) {            \
  |  |  ------------------
  |  |  |  Branch (9515:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 9516|      0|                start = 0;              \
  |  | 9517|      0|            }                           \
  |  | 9518|      0|        }                               \
  |  | 9519|      4|    } while (0)
  |  |  ------------------
  |  |  |  Branch (9519:14): [Folded, False: 4]
  |  |  ------------------
  ------------------
 9539|      4|    if (end - start < len2)
  ------------------
  |  Branch (9539:9): [True: 0, False: 4]
  ------------------
 9540|      0|        return -1;
 9541|       |
 9542|      4|    buf1 = PyUnicode_DATA(s1);
  ------------------
  |  |  284|      4|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9543|      4|    buf2 = PyUnicode_DATA(s2);
  ------------------
  |  |  284|      4|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9544|      4|    if (len2 == 1) {
  ------------------
  |  Branch (9544:9): [True: 4, False: 0]
  ------------------
 9545|      4|        Py_UCS4 ch = PyUnicode_READ(kind2, buf2, 0);
  ------------------
  |  |  354|      4|    PyUnicode_READ(_Py_STATIC_CAST(int, kind), \
  |  |  ------------------
  |  |  |  |   34|      4|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  355|      4|                   _Py_STATIC_CAST(const void*, data), \
  |  |  ------------------
  |  |  |  |   34|      4|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  356|      4|                   (index))
  ------------------
 9546|      4|        result = findchar((const char *)buf1 + kind1*start,
 9547|      4|                          kind1, end - start, ch, direction);
 9548|      4|        if (result == -1)
  ------------------
  |  Branch (9548:13): [True: 0, False: 4]
  ------------------
 9549|      0|            return -1;
 9550|      4|        else
 9551|      4|            return start + result;
 9552|      4|    }
 9553|       |
 9554|      0|    if (kind2 != kind1) {
  ------------------
  |  Branch (9554:9): [True: 0, False: 0]
  ------------------
 9555|      0|        buf2 = unicode_askind(kind2, buf2, len2, kind1);
 9556|      0|        if (!buf2)
  ------------------
  |  Branch (9556:13): [True: 0, False: 0]
  ------------------
 9557|      0|            return -2;
 9558|      0|    }
 9559|       |
 9560|      0|    if (direction > 0) {
  ------------------
  |  Branch (9560:9): [True: 0, False: 0]
  ------------------
 9561|      0|        switch (kind1) {
 9562|      0|        case PyUnicode_1BYTE_KIND:
  ------------------
  |  Branch (9562:9): [True: 0, False: 0]
  ------------------
 9563|      0|            if (PyUnicode_IS_ASCII(s1) && PyUnicode_IS_ASCII(s2))
  ------------------
  |  |  227|      0|#define PyUnicode_IS_ASCII(op) PyUnicode_IS_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (227:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
                          if (PyUnicode_IS_ASCII(s1) && PyUnicode_IS_ASCII(s2))
  ------------------
  |  |  227|      0|#define PyUnicode_IS_ASCII(op) PyUnicode_IS_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (227:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 9564|      0|                result = asciilib_find_slice(buf1, len1, buf2, len2, start, end);
 9565|      0|            else
 9566|      0|                result = ucs1lib_find_slice(buf1, len1, buf2, len2, start, end);
 9567|      0|            break;
 9568|      0|        case PyUnicode_2BYTE_KIND:
  ------------------
  |  Branch (9568:9): [True: 0, False: 0]
  ------------------
 9569|      0|            result = ucs2lib_find_slice(buf1, len1, buf2, len2, start, end);
 9570|      0|            break;
 9571|      0|        case PyUnicode_4BYTE_KIND:
  ------------------
  |  Branch (9571:9): [True: 0, False: 0]
  ------------------
 9572|      0|            result = ucs4lib_find_slice(buf1, len1, buf2, len2, start, end);
 9573|      0|            break;
 9574|      0|        default:
  ------------------
  |  Branch (9574:9): [True: 0, False: 0]
  ------------------
 9575|      0|            Py_UNREACHABLE();
  ------------------
  |  |  264|      0|#  define Py_UNREACHABLE() __builtin_unreachable()
  ------------------
 9576|      0|        }
 9577|      0|    }
 9578|      0|    else {
 9579|      0|        switch (kind1) {
 9580|      0|        case PyUnicode_1BYTE_KIND:
  ------------------
  |  Branch (9580:9): [True: 0, False: 0]
  ------------------
 9581|      0|            if (PyUnicode_IS_ASCII(s1) && PyUnicode_IS_ASCII(s2))
  ------------------
  |  |  227|      0|#define PyUnicode_IS_ASCII(op) PyUnicode_IS_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (227:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
                          if (PyUnicode_IS_ASCII(s1) && PyUnicode_IS_ASCII(s2))
  ------------------
  |  |  227|      0|#define PyUnicode_IS_ASCII(op) PyUnicode_IS_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (227:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 9582|      0|                result = asciilib_rfind_slice(buf1, len1, buf2, len2, start, end);
 9583|      0|            else
 9584|      0|                result = ucs1lib_rfind_slice(buf1, len1, buf2, len2, start, end);
 9585|      0|            break;
 9586|      0|        case PyUnicode_2BYTE_KIND:
  ------------------
  |  Branch (9586:9): [True: 0, False: 0]
  ------------------
 9587|      0|            result = ucs2lib_rfind_slice(buf1, len1, buf2, len2, start, end);
 9588|      0|            break;
 9589|      0|        case PyUnicode_4BYTE_KIND:
  ------------------
  |  Branch (9589:9): [True: 0, False: 0]
  ------------------
 9590|      0|            result = ucs4lib_rfind_slice(buf1, len1, buf2, len2, start, end);
 9591|      0|            break;
 9592|      0|        default:
  ------------------
  |  Branch (9592:9): [True: 0, False: 0]
  ------------------
 9593|      0|            Py_UNREACHABLE();
  ------------------
  |  |  264|      0|#  define Py_UNREACHABLE() __builtin_unreachable()
  ------------------
 9594|      0|        }
 9595|      0|    }
 9596|       |
 9597|      0|    assert((kind2 != kind1) == (buf2 != PyUnicode_DATA(s2)));
  ------------------
  |  Branch (9597:5): [True: 0, False: 0]
  ------------------
 9598|      0|    if (kind2 != kind1)
  ------------------
  |  Branch (9598:9): [True: 0, False: 0]
  ------------------
 9599|      0|        PyMem_Free((void *)buf2);
 9600|       |
 9601|      0|    return result;
 9602|      0|}
unicodeobject.c:tailmatch:
 9656|     69|{
 9657|     69|    int kind_self;
 9658|     69|    int kind_sub;
 9659|     69|    const void *data_self;
 9660|     69|    const void *data_sub;
 9661|     69|    Py_ssize_t offset;
 9662|     69|    Py_ssize_t i;
 9663|     69|    Py_ssize_t end_sub;
 9664|       |
 9665|     69|    ADJUST_INDICES(start, end, PyUnicode_GET_LENGTH(self));
  ------------------
  |  | 9503|     69|    do {                                \
  |  | 9504|     69|        if (end > len) {                \
  |  |  ------------------
  |  |  |  Branch (9504:13): [True: 69, False: 0]
  |  |  ------------------
  |  | 9505|     69|            end = len;                  \
  |  | 9506|     69|        }                               \
  |  | 9507|     69|        else if (end < 0) {             \
  |  |  ------------------
  |  |  |  Branch (9507:18): [True: 0, False: 0]
  |  |  ------------------
  |  | 9508|      0|            end += len;                 \
  |  | 9509|      0|            if (end < 0) {              \
  |  |  ------------------
  |  |  |  Branch (9509:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 9510|      0|                end = 0;                \
  |  | 9511|      0|            }                           \
  |  | 9512|      0|        }                               \
  |  | 9513|     69|        if (start < 0) {                \
  |  |  ------------------
  |  |  |  Branch (9513:13): [True: 0, False: 69]
  |  |  ------------------
  |  | 9514|      0|            start += len;               \
  |  | 9515|      0|            if (start < 0) {            \
  |  |  ------------------
  |  |  |  Branch (9515:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 9516|      0|                start = 0;              \
  |  | 9517|      0|            }                           \
  |  | 9518|      0|        }                               \
  |  | 9519|     69|    } while (0)
  |  |  ------------------
  |  |  |  Branch (9519:14): [Folded, False: 69]
  |  |  ------------------
  ------------------
 9666|     69|    end -= PyUnicode_GET_LENGTH(substring);
  ------------------
  |  |  299|     69|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     69|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     69|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9667|     69|    if (end < start)
  ------------------
  |  Branch (9667:9): [True: 14, False: 55]
  ------------------
 9668|     14|        return 0;
 9669|       |
 9670|     55|    if (PyUnicode_GET_LENGTH(substring) == 0)
  ------------------
  |  |  299|     55|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     55|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     55|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (9670:9): [True: 0, False: 55]
  ------------------
 9671|      0|        return 1;
 9672|       |
 9673|     55|    kind_self = PyUnicode_KIND(self);
  ------------------
  |  |  258|     55|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|    110|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 55, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9674|     55|    data_self = PyUnicode_DATA(self);
  ------------------
  |  |  284|     55|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     55|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     55|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9675|     55|    kind_sub = PyUnicode_KIND(substring);
  ------------------
  |  |  258|     55|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|    110|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 55, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9676|     55|    data_sub = PyUnicode_DATA(substring);
  ------------------
  |  |  284|     55|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     55|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     55|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9677|     55|    end_sub = PyUnicode_GET_LENGTH(substring) - 1;
  ------------------
  |  |  299|     55|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     55|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     55|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9678|       |
 9679|     55|    if (direction > 0)
  ------------------
  |  Branch (9679:9): [True: 17, False: 38]
  ------------------
 9680|     17|        offset = end;
 9681|     38|    else
 9682|     38|        offset = start;
 9683|       |
 9684|     55|    if (PyUnicode_READ(kind_self, data_self, offset) ==
  ------------------
  |  |  354|     55|    PyUnicode_READ(_Py_STATIC_CAST(int, kind), \
  |  |  ------------------
  |  |  |  |   34|     55|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  355|     55|                   _Py_STATIC_CAST(const void*, data), \
  |  |  ------------------
  |  |  |  |   34|     55|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  356|     55|                   (index))
  ------------------
  |  Branch (9684:9): [True: 10, False: 45]
  ------------------
 9685|     55|        PyUnicode_READ(kind_sub, data_sub, 0) &&
  ------------------
  |  |  354|    110|    PyUnicode_READ(_Py_STATIC_CAST(int, kind), \
  |  |  ------------------
  |  |  |  |   34|     55|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  355|    110|                   _Py_STATIC_CAST(const void*, data), \
  |  |  ------------------
  |  |  |  |   34|     55|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  356|    110|                   (index))
  ------------------
 9686|     10|        PyUnicode_READ(kind_self, data_self, offset + end_sub) ==
  ------------------
  |  |  354|     10|    PyUnicode_READ(_Py_STATIC_CAST(int, kind), \
  |  |  ------------------
  |  |  |  |   34|     10|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  355|     10|                   _Py_STATIC_CAST(const void*, data), \
  |  |  ------------------
  |  |  |  |   34|     10|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  356|     10|                   (index))
  ------------------
  |  Branch (9686:9): [True: 9, False: 1]
  ------------------
 9687|     10|        PyUnicode_READ(kind_sub, data_sub, end_sub)) {
  ------------------
  |  |  354|     10|    PyUnicode_READ(_Py_STATIC_CAST(int, kind), \
  |  |  ------------------
  |  |  |  |   34|     10|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  355|     10|                   _Py_STATIC_CAST(const void*, data), \
  |  |  ------------------
  |  |  |  |   34|     10|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  356|     10|                   (index))
  ------------------
 9688|       |        /* If both are of the same kind, memcmp is sufficient */
 9689|      9|        if (kind_self == kind_sub) {
  ------------------
  |  Branch (9689:13): [True: 9, False: 0]
  ------------------
 9690|      9|            return ! memcmp((char *)data_self +
 9691|      9|                                (offset * PyUnicode_KIND(substring)),
  ------------------
  |  |  258|      9|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|     18|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 9, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9692|      0|                            data_sub,
 9693|      9|                            PyUnicode_GET_LENGTH(substring) *
  ------------------
  |  |  299|      9|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      9|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      9|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9694|      9|                                PyUnicode_KIND(substring));
  ------------------
  |  |  258|      9|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|     18|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 9, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9695|      9|        }
 9696|       |        /* otherwise we have to compare each character by first accessing it */
 9697|      0|        else {
 9698|       |            /* We do not need to compare 0 and len(substring)-1 because
 9699|       |               the if statement above ensured already that they are equal
 9700|       |               when we end up here. */
 9701|      0|            for (i = 1; i < end_sub; ++i) {
  ------------------
  |  Branch (9701:25): [True: 0, False: 0]
  ------------------
 9702|      0|                if (PyUnicode_READ(kind_self, data_self, offset + i) !=
  ------------------
  |  |  354|      0|    PyUnicode_READ(_Py_STATIC_CAST(int, kind), \
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  355|      0|                   _Py_STATIC_CAST(const void*, data), \
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  356|      0|                   (index))
  ------------------
  |  Branch (9702:21): [True: 0, False: 0]
  ------------------
 9703|      0|                    PyUnicode_READ(kind_sub, data_sub, i))
  ------------------
  |  |  354|      0|    PyUnicode_READ(_Py_STATIC_CAST(int, kind), \
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  355|      0|                   _Py_STATIC_CAST(const void*, data), \
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  356|      0|                   (index))
  ------------------
 9704|      0|                    return 0;
 9705|      0|            }
 9706|      0|            return 1;
 9707|      0|        }
 9708|      9|    }
 9709|       |
 9710|     46|    return 0;
 9711|     55|}
unicodeobject.c:unicode_compare:
10901|  2.55k|{
10902|  2.55k|#define COMPARE(TYPE1, TYPE2) \
10903|  2.55k|    do { \
10904|  2.55k|        TYPE1* p1 = (TYPE1 *)data1; \
10905|  2.55k|        TYPE2* p2 = (TYPE2 *)data2; \
10906|  2.55k|        TYPE1* end = p1 + len; \
10907|  2.55k|        Py_UCS4 c1, c2; \
10908|  2.55k|        for (; p1 != end; p1++, p2++) { \
10909|  2.55k|            c1 = *p1; \
10910|  2.55k|            c2 = *p2; \
10911|  2.55k|            if (c1 != c2) \
10912|  2.55k|                return (c1 < c2) ? -1 : 1; \
10913|  2.55k|        } \
10914|  2.55k|    } \
10915|  2.55k|    while (0)
10916|       |
10917|  2.55k|    int kind1, kind2;
10918|  2.55k|    const void *data1, *data2;
10919|  2.55k|    Py_ssize_t len1, len2, len;
10920|       |
10921|  2.55k|    kind1 = PyUnicode_KIND(str1);
  ------------------
  |  |  258|  2.55k|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|  5.11k|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 2.55k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10922|  2.55k|    kind2 = PyUnicode_KIND(str2);
  ------------------
  |  |  258|  2.55k|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|  5.11k|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 2.55k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10923|  2.55k|    data1 = PyUnicode_DATA(str1);
  ------------------
  |  |  284|  2.55k|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  2.55k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.55k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10924|  2.55k|    data2 = PyUnicode_DATA(str2);
  ------------------
  |  |  284|  2.55k|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  2.55k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.55k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10925|  2.55k|    len1 = PyUnicode_GET_LENGTH(str1);
  ------------------
  |  |  299|  2.55k|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  2.55k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.55k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10926|  2.55k|    len2 = PyUnicode_GET_LENGTH(str2);
  ------------------
  |  |  299|  2.55k|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  2.55k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.55k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10927|  2.55k|    len = Py_MIN(len1, len2);
  ------------------
  |  |  112|  2.55k|#define Py_MIN(x, y) (((x) > (y)) ? (y) : (x))
  |  |  ------------------
  |  |  |  Branch (112:23): [True: 1.29k, False: 1.25k]
  |  |  ------------------
  ------------------
10928|       |
10929|  2.55k|    switch(kind1) {
10930|  2.55k|    case PyUnicode_1BYTE_KIND:
  ------------------
  |  Branch (10930:5): [True: 2.55k, False: 0]
  ------------------
10931|  2.55k|    {
10932|  2.55k|        switch(kind2) {
10933|  2.55k|        case PyUnicode_1BYTE_KIND:
  ------------------
  |  Branch (10933:9): [True: 2.55k, False: 0]
  ------------------
10934|  2.55k|        {
10935|  2.55k|            int cmp = memcmp(data1, data2, len);
10936|       |            /* normalize result of memcmp() into the range [-1; 1] */
10937|  2.55k|            if (cmp < 0)
  ------------------
  |  Branch (10937:17): [True: 1.28k, False: 1.27k]
  ------------------
10938|  1.28k|                return -1;
10939|  1.27k|            if (cmp > 0)
  ------------------
  |  Branch (10939:17): [True: 1.23k, False: 36]
  ------------------
10940|  1.23k|                return 1;
10941|     36|            break;
10942|  1.27k|        }
10943|     36|        case PyUnicode_2BYTE_KIND:
  ------------------
  |  Branch (10943:9): [True: 0, False: 2.55k]
  ------------------
10944|      0|            COMPARE(Py_UCS1, Py_UCS2);
  ------------------
  |  |10903|      0|    do { \
  |  |10904|      0|        TYPE1* p1 = (TYPE1 *)data1; \
  |  |10905|      0|        TYPE2* p2 = (TYPE2 *)data2; \
  |  |10906|      0|        TYPE1* end = p1 + len; \
  |  |10907|      0|        Py_UCS4 c1, c2; \
  |  |10908|      0|        for (; p1 != end; p1++, p2++) { \
  |  |  ------------------
  |  |  |  Branch (10908:16): [True: 0, False: 0]
  |  |  ------------------
  |  |10909|      0|            c1 = *p1; \
  |  |10910|      0|            c2 = *p2; \
  |  |10911|      0|            if (c1 != c2) \
  |  |  ------------------
  |  |  |  Branch (10911:17): [True: 0, False: 0]
  |  |  ------------------
  |  |10912|      0|                return (c1 < c2) ? -1 : 1; \
  |  |  ------------------
  |  |  |  Branch (10912:24): [True: 0, False: 0]
  |  |  ------------------
  |  |10913|      0|        } \
  |  |10914|      0|    } \
  |  |10915|      0|    while (0)
  |  |  ------------------
  |  |  |  Branch (10915:12): [Folded, False: 0]
  |  |  ------------------
  ------------------
10945|      0|            break;
10946|      0|        case PyUnicode_4BYTE_KIND:
  ------------------
  |  Branch (10946:9): [True: 0, False: 2.55k]
  ------------------
10947|      0|            COMPARE(Py_UCS1, Py_UCS4);
  ------------------
  |  |10903|      0|    do { \
  |  |10904|      0|        TYPE1* p1 = (TYPE1 *)data1; \
  |  |10905|      0|        TYPE2* p2 = (TYPE2 *)data2; \
  |  |10906|      0|        TYPE1* end = p1 + len; \
  |  |10907|      0|        Py_UCS4 c1, c2; \
  |  |10908|      0|        for (; p1 != end; p1++, p2++) { \
  |  |  ------------------
  |  |  |  Branch (10908:16): [True: 0, False: 0]
  |  |  ------------------
  |  |10909|      0|            c1 = *p1; \
  |  |10910|      0|            c2 = *p2; \
  |  |10911|      0|            if (c1 != c2) \
  |  |  ------------------
  |  |  |  Branch (10911:17): [True: 0, False: 0]
  |  |  ------------------
  |  |10912|      0|                return (c1 < c2) ? -1 : 1; \
  |  |  ------------------
  |  |  |  Branch (10912:24): [True: 0, False: 0]
  |  |  ------------------
  |  |10913|      0|        } \
  |  |10914|      0|    } \
  |  |10915|      0|    while (0)
  |  |  ------------------
  |  |  |  Branch (10915:12): [Folded, False: 0]
  |  |  ------------------
  ------------------
10948|      0|            break;
10949|      0|        default:
  ------------------
  |  Branch (10949:9): [True: 0, False: 2.55k]
  ------------------
10950|      0|            Py_UNREACHABLE();
  ------------------
  |  |  264|      0|#  define Py_UNREACHABLE() __builtin_unreachable()
  ------------------
10951|  2.55k|        }
10952|     36|        break;
10953|  2.55k|    }
10954|     36|    case PyUnicode_2BYTE_KIND:
  ------------------
  |  Branch (10954:5): [True: 0, False: 2.55k]
  ------------------
10955|      0|    {
10956|      0|        switch(kind2) {
10957|      0|        case PyUnicode_1BYTE_KIND:
  ------------------
  |  Branch (10957:9): [True: 0, False: 0]
  ------------------
10958|      0|            COMPARE(Py_UCS2, Py_UCS1);
  ------------------
  |  |10903|      0|    do { \
  |  |10904|      0|        TYPE1* p1 = (TYPE1 *)data1; \
  |  |10905|      0|        TYPE2* p2 = (TYPE2 *)data2; \
  |  |10906|      0|        TYPE1* end = p1 + len; \
  |  |10907|      0|        Py_UCS4 c1, c2; \
  |  |10908|      0|        for (; p1 != end; p1++, p2++) { \
  |  |  ------------------
  |  |  |  Branch (10908:16): [True: 0, False: 0]
  |  |  ------------------
  |  |10909|      0|            c1 = *p1; \
  |  |10910|      0|            c2 = *p2; \
  |  |10911|      0|            if (c1 != c2) \
  |  |  ------------------
  |  |  |  Branch (10911:17): [True: 0, False: 0]
  |  |  ------------------
  |  |10912|      0|                return (c1 < c2) ? -1 : 1; \
  |  |  ------------------
  |  |  |  Branch (10912:24): [True: 0, False: 0]
  |  |  ------------------
  |  |10913|      0|        } \
  |  |10914|      0|    } \
  |  |10915|      0|    while (0)
  |  |  ------------------
  |  |  |  Branch (10915:12): [Folded, False: 0]
  |  |  ------------------
  ------------------
10959|      0|            break;
10960|      0|        case PyUnicode_2BYTE_KIND:
  ------------------
  |  Branch (10960:9): [True: 0, False: 0]
  ------------------
10961|      0|        {
10962|      0|            COMPARE(Py_UCS2, Py_UCS2);
  ------------------
  |  |10903|      0|    do { \
  |  |10904|      0|        TYPE1* p1 = (TYPE1 *)data1; \
  |  |10905|      0|        TYPE2* p2 = (TYPE2 *)data2; \
  |  |10906|      0|        TYPE1* end = p1 + len; \
  |  |10907|      0|        Py_UCS4 c1, c2; \
  |  |10908|      0|        for (; p1 != end; p1++, p2++) { \
  |  |  ------------------
  |  |  |  Branch (10908:16): [True: 0, False: 0]
  |  |  ------------------
  |  |10909|      0|            c1 = *p1; \
  |  |10910|      0|            c2 = *p2; \
  |  |10911|      0|            if (c1 != c2) \
  |  |  ------------------
  |  |  |  Branch (10911:17): [True: 0, False: 0]
  |  |  ------------------
  |  |10912|      0|                return (c1 < c2) ? -1 : 1; \
  |  |  ------------------
  |  |  |  Branch (10912:24): [True: 0, False: 0]
  |  |  ------------------
  |  |10913|      0|        } \
  |  |10914|      0|    } \
  |  |10915|      0|    while (0)
  |  |  ------------------
  |  |  |  Branch (10915:12): [Folded, False: 0]
  |  |  ------------------
  ------------------
10963|      0|            break;
10964|      0|        }
10965|      0|        case PyUnicode_4BYTE_KIND:
  ------------------
  |  Branch (10965:9): [True: 0, False: 0]
  ------------------
10966|      0|            COMPARE(Py_UCS2, Py_UCS4);
  ------------------
  |  |10903|      0|    do { \
  |  |10904|      0|        TYPE1* p1 = (TYPE1 *)data1; \
  |  |10905|      0|        TYPE2* p2 = (TYPE2 *)data2; \
  |  |10906|      0|        TYPE1* end = p1 + len; \
  |  |10907|      0|        Py_UCS4 c1, c2; \
  |  |10908|      0|        for (; p1 != end; p1++, p2++) { \
  |  |  ------------------
  |  |  |  Branch (10908:16): [True: 0, False: 0]
  |  |  ------------------
  |  |10909|      0|            c1 = *p1; \
  |  |10910|      0|            c2 = *p2; \
  |  |10911|      0|            if (c1 != c2) \
  |  |  ------------------
  |  |  |  Branch (10911:17): [True: 0, False: 0]
  |  |  ------------------
  |  |10912|      0|                return (c1 < c2) ? -1 : 1; \
  |  |  ------------------
  |  |  |  Branch (10912:24): [True: 0, False: 0]
  |  |  ------------------
  |  |10913|      0|        } \
  |  |10914|      0|    } \
  |  |10915|      0|    while (0)
  |  |  ------------------
  |  |  |  Branch (10915:12): [Folded, False: 0]
  |  |  ------------------
  ------------------
10967|      0|            break;
10968|      0|        default:
  ------------------
  |  Branch (10968:9): [True: 0, False: 0]
  ------------------
10969|      0|            Py_UNREACHABLE();
  ------------------
  |  |  264|      0|#  define Py_UNREACHABLE() __builtin_unreachable()
  ------------------
10970|      0|        }
10971|      0|        break;
10972|      0|    }
10973|      0|    case PyUnicode_4BYTE_KIND:
  ------------------
  |  Branch (10973:5): [True: 0, False: 2.55k]
  ------------------
10974|      0|    {
10975|      0|        switch(kind2) {
10976|      0|        case PyUnicode_1BYTE_KIND:
  ------------------
  |  Branch (10976:9): [True: 0, False: 0]
  ------------------
10977|      0|            COMPARE(Py_UCS4, Py_UCS1);
  ------------------
  |  |10903|      0|    do { \
  |  |10904|      0|        TYPE1* p1 = (TYPE1 *)data1; \
  |  |10905|      0|        TYPE2* p2 = (TYPE2 *)data2; \
  |  |10906|      0|        TYPE1* end = p1 + len; \
  |  |10907|      0|        Py_UCS4 c1, c2; \
  |  |10908|      0|        for (; p1 != end; p1++, p2++) { \
  |  |  ------------------
  |  |  |  Branch (10908:16): [True: 0, False: 0]
  |  |  ------------------
  |  |10909|      0|            c1 = *p1; \
  |  |10910|      0|            c2 = *p2; \
  |  |10911|      0|            if (c1 != c2) \
  |  |  ------------------
  |  |  |  Branch (10911:17): [True: 0, False: 0]
  |  |  ------------------
  |  |10912|      0|                return (c1 < c2) ? -1 : 1; \
  |  |  ------------------
  |  |  |  Branch (10912:24): [True: 0, False: 0]
  |  |  ------------------
  |  |10913|      0|        } \
  |  |10914|      0|    } \
  |  |10915|      0|    while (0)
  |  |  ------------------
  |  |  |  Branch (10915:12): [Folded, False: 0]
  |  |  ------------------
  ------------------
10978|      0|            break;
10979|      0|        case PyUnicode_2BYTE_KIND:
  ------------------
  |  Branch (10979:9): [True: 0, False: 0]
  ------------------
10980|      0|            COMPARE(Py_UCS4, Py_UCS2);
  ------------------
  |  |10903|      0|    do { \
  |  |10904|      0|        TYPE1* p1 = (TYPE1 *)data1; \
  |  |10905|      0|        TYPE2* p2 = (TYPE2 *)data2; \
  |  |10906|      0|        TYPE1* end = p1 + len; \
  |  |10907|      0|        Py_UCS4 c1, c2; \
  |  |10908|      0|        for (; p1 != end; p1++, p2++) { \
  |  |  ------------------
  |  |  |  Branch (10908:16): [True: 0, False: 0]
  |  |  ------------------
  |  |10909|      0|            c1 = *p1; \
  |  |10910|      0|            c2 = *p2; \
  |  |10911|      0|            if (c1 != c2) \
  |  |  ------------------
  |  |  |  Branch (10911:17): [True: 0, False: 0]
  |  |  ------------------
  |  |10912|      0|                return (c1 < c2) ? -1 : 1; \
  |  |  ------------------
  |  |  |  Branch (10912:24): [True: 0, False: 0]
  |  |  ------------------
  |  |10913|      0|        } \
  |  |10914|      0|    } \
  |  |10915|      0|    while (0)
  |  |  ------------------
  |  |  |  Branch (10915:12): [Folded, False: 0]
  |  |  ------------------
  ------------------
10981|      0|            break;
10982|      0|        case PyUnicode_4BYTE_KIND:
  ------------------
  |  Branch (10982:9): [True: 0, False: 0]
  ------------------
10983|      0|        {
10984|      0|#if defined(HAVE_WMEMCMP) && SIZEOF_WCHAR_T == 4
10985|      0|            int cmp = wmemcmp((wchar_t *)data1, (wchar_t *)data2, len);
10986|       |            /* normalize result of wmemcmp() into the range [-1; 1] */
10987|      0|            if (cmp < 0)
  ------------------
  |  Branch (10987:17): [True: 0, False: 0]
  ------------------
10988|      0|                return -1;
10989|      0|            if (cmp > 0)
  ------------------
  |  Branch (10989:17): [True: 0, False: 0]
  ------------------
10990|      0|                return 1;
10991|       |#else
10992|       |            COMPARE(Py_UCS4, Py_UCS4);
10993|       |#endif
10994|      0|            break;
10995|      0|        }
10996|      0|        default:
  ------------------
  |  Branch (10996:9): [True: 0, False: 0]
  ------------------
10997|      0|            Py_UNREACHABLE();
  ------------------
  |  |  264|      0|#  define Py_UNREACHABLE() __builtin_unreachable()
  ------------------
10998|      0|        }
10999|      0|        break;
11000|      0|    }
11001|      0|    default:
  ------------------
  |  Branch (11001:5): [True: 0, False: 2.55k]
  ------------------
11002|      0|        Py_UNREACHABLE();
  ------------------
  |  |  264|      0|#  define Py_UNREACHABLE() __builtin_unreachable()
  ------------------
11003|  2.55k|    }
11004|       |
11005|     36|    if (len1 == len2)
  ------------------
  |  Branch (11005:9): [True: 0, False: 36]
  ------------------
11006|      0|        return 0;
11007|     36|    if (len1 < len2)
  ------------------
  |  Branch (11007:9): [True: 1, False: 35]
  ------------------
11008|      1|        return -1;
11009|     35|    else
11010|     35|        return 1;
11011|       |
11012|     36|#undef COMPARE
11013|     36|}
unicodeobject.c:make_bloom_mask:
  917|     76|{
  918|     76|#define BLOOM_UPDATE(TYPE, MASK, PTR, LEN)             \
  919|     76|    do {                                               \
  920|     76|        TYPE *data = (TYPE *)PTR;                      \
  921|     76|        TYPE *end = data + LEN;                        \
  922|     76|        Py_UCS4 ch;                                    \
  923|     76|        for (; data != end; data++) {                  \
  924|     76|            ch = *data;                                \
  925|     76|            MASK |= (1UL << (ch & (BLOOM_WIDTH - 1))); \
  926|     76|        }                                              \
  927|     76|        break;                                         \
  928|     76|    } while (0)
  929|       |
  930|       |    /* calculate simple bloom-style bitmask for a given unicode string */
  931|       |
  932|     76|    BLOOM_MASK mask;
  ------------------
  |  |  905|     76|#define BLOOM_MASK unsigned long
  ------------------
  933|       |
  934|     76|    mask = 0;
  935|     76|    switch (kind) {
  936|     75|    case PyUnicode_1BYTE_KIND:
  ------------------
  |  Branch (936:5): [True: 75, False: 1]
  ------------------
  937|     75|        BLOOM_UPDATE(Py_UCS1, mask, ptr, len);
  ------------------
  |  |  919|     75|    do {                                               \
  |  |  920|     75|        TYPE *data = (TYPE *)PTR;                      \
  |  |  921|     75|        TYPE *end = data + LEN;                        \
  |  |  922|     75|        Py_UCS4 ch;                                    \
  |  |  923|    150|        for (; data != end; data++) {                  \
  |  |  ------------------
  |  |  |  Branch (923:16): [True: 75, False: 75]
  |  |  ------------------
  |  |  924|     75|            ch = *data;                                \
  |  |  925|     75|            MASK |= (1UL << (ch & (BLOOM_WIDTH - 1))); \
  |  |  ------------------
  |  |  |  |  898|     75|#define BLOOM_WIDTH 64
  |  |  ------------------
  |  |  926|     75|        }                                              \
  |  |  927|     75|        break;                                         \
  |  |  928|     75|    } while (0)
  |  |  ------------------
  |  |  |  Branch (928:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  938|     75|        break;
  939|      1|    case PyUnicode_2BYTE_KIND:
  ------------------
  |  Branch (939:5): [True: 1, False: 75]
  ------------------
  940|      1|        BLOOM_UPDATE(Py_UCS2, mask, ptr, len);
  ------------------
  |  |  919|      1|    do {                                               \
  |  |  920|      1|        TYPE *data = (TYPE *)PTR;                      \
  |  |  921|      1|        TYPE *end = data + LEN;                        \
  |  |  922|      1|        Py_UCS4 ch;                                    \
  |  |  923|      9|        for (; data != end; data++) {                  \
  |  |  ------------------
  |  |  |  Branch (923:16): [True: 8, False: 1]
  |  |  ------------------
  |  |  924|      8|            ch = *data;                                \
  |  |  925|      8|            MASK |= (1UL << (ch & (BLOOM_WIDTH - 1))); \
  |  |  ------------------
  |  |  |  |  898|      8|#define BLOOM_WIDTH 64
  |  |  ------------------
  |  |  926|      8|        }                                              \
  |  |  927|      1|        break;                                         \
  |  |  928|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (928:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  941|      1|        break;
  942|      0|    case PyUnicode_4BYTE_KIND:
  ------------------
  |  Branch (942:5): [True: 0, False: 76]
  ------------------
  943|      0|        BLOOM_UPDATE(Py_UCS4, mask, ptr, len);
  ------------------
  |  |  919|      0|    do {                                               \
  |  |  920|      0|        TYPE *data = (TYPE *)PTR;                      \
  |  |  921|      0|        TYPE *end = data + LEN;                        \
  |  |  922|      0|        Py_UCS4 ch;                                    \
  |  |  923|      0|        for (; data != end; data++) {                  \
  |  |  ------------------
  |  |  |  Branch (923:16): [True: 0, False: 0]
  |  |  ------------------
  |  |  924|      0|            ch = *data;                                \
  |  |  925|      0|            MASK |= (1UL << (ch & (BLOOM_WIDTH - 1))); \
  |  |  ------------------
  |  |  |  |  898|      0|#define BLOOM_WIDTH 64
  |  |  ------------------
  |  |  926|      0|        }                                              \
  |  |  927|      0|        break;                                         \
  |  |  928|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (928:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  944|      0|        break;
  945|      0|    default:
  ------------------
  |  Branch (945:5): [True: 0, False: 76]
  ------------------
  946|      0|        Py_UNREACHABLE();
  ------------------
  |  |  264|      0|#  define Py_UNREACHABLE() __builtin_unreachable()
  ------------------
  947|     76|    }
  948|     76|    return mask;
  949|       |
  950|     76|#undef BLOOM_UPDATE
  951|     76|}
unicodeobject.c:unicode_result_unchanged:
  751|     86|{
  752|     86|    if (PyUnicode_CheckExact(unicode)) {
  ------------------
  |  |  104|     86|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  ------------------
  |  |  |  |  215|     86|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     86|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     86|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 86, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  753|     86|        return Py_NewRef(unicode);
  ------------------
  |  |  550|     86|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     86|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     86|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  754|     86|    }
  755|      0|    else
  756|       |        /* Subtype -- return genuine unicode string with the same value. */
  757|      0|        return _PyUnicode_Copy(unicode);
  758|     86|}
unicodeobject.c:replace:
10518|     15|{
10519|     15|    PyObject *u;
10520|     15|    const char *sbuf = PyUnicode_DATA(self);
  ------------------
  |  |  284|     15|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     15|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     15|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10521|     15|    const void *buf1 = PyUnicode_DATA(str1);
  ------------------
  |  |  284|     15|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     15|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     15|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10522|     15|    const void *buf2 = PyUnicode_DATA(str2);
  ------------------
  |  |  284|     15|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     15|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     15|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10523|     15|    int srelease = 0, release1 = 0, release2 = 0;
10524|     15|    int skind = PyUnicode_KIND(self);
  ------------------
  |  |  258|     15|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|     30|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 15, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10525|     15|    int kind1 = PyUnicode_KIND(str1);
  ------------------
  |  |  258|     15|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|     30|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 15, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10526|     15|    int kind2 = PyUnicode_KIND(str2);
  ------------------
  |  |  258|     15|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|     30|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 15, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10527|     15|    Py_ssize_t slen = PyUnicode_GET_LENGTH(self);
  ------------------
  |  |  299|     15|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     15|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     15|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10528|     15|    Py_ssize_t len1 = PyUnicode_GET_LENGTH(str1);
  ------------------
  |  |  299|     15|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     15|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     15|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10529|     15|    Py_ssize_t len2 = PyUnicode_GET_LENGTH(str2);
  ------------------
  |  |  299|     15|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     15|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     15|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10530|     15|    int mayshrink;
10531|     15|    Py_UCS4 maxchar, maxchar_str1, maxchar_str2;
10532|       |
10533|     15|    if (slen < len1)
  ------------------
  |  Branch (10533:9): [True: 0, False: 15]
  ------------------
10534|      0|        goto nothing;
10535|       |
10536|     15|    if (maxcount < 0)
  ------------------
  |  Branch (10536:9): [True: 15, False: 0]
  ------------------
10537|     15|        maxcount = PY_SSIZE_T_MAX;
  ------------------
  |  |  137|     15|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
10538|      0|    else if (maxcount == 0)
  ------------------
  |  Branch (10538:14): [True: 0, False: 0]
  ------------------
10539|      0|        goto nothing;
10540|       |
10541|     15|    if (str1 == str2)
  ------------------
  |  Branch (10541:9): [True: 0, False: 15]
  ------------------
10542|      0|        goto nothing;
10543|       |
10544|     15|    maxchar = PyUnicode_MAX_CHAR_VALUE(self);
  ------------------
  |  |  405|     15|    PyUnicode_MAX_CHAR_VALUE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     15|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     15|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10545|     15|    maxchar_str1 = PyUnicode_MAX_CHAR_VALUE(str1);
  ------------------
  |  |  405|     15|    PyUnicode_MAX_CHAR_VALUE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     15|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     15|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10546|     15|    if (maxchar < maxchar_str1)
  ------------------
  |  Branch (10546:9): [True: 0, False: 15]
  ------------------
10547|       |        /* substring too wide to be present */
10548|      0|        goto nothing;
10549|     15|    maxchar_str2 = PyUnicode_MAX_CHAR_VALUE(str2);
  ------------------
  |  |  405|     15|    PyUnicode_MAX_CHAR_VALUE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     15|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     15|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10550|       |    /* Replacing str1 with str2 may cause a maxchar reduction in the
10551|       |       result string. */
10552|     15|    mayshrink = (maxchar_str2 < maxchar_str1) && (maxchar == maxchar_str1);
  ------------------
  |  Branch (10552:17): [True: 0, False: 15]
  |  Branch (10552:50): [True: 0, False: 0]
  ------------------
10553|     15|    maxchar = Py_MAX(maxchar, maxchar_str2);
  ------------------
  |  |  115|     15|#define Py_MAX(x, y) (((x) > (y)) ? (x) : (y))
  |  |  ------------------
  |  |  |  Branch (115:23): [True: 0, False: 15]
  |  |  ------------------
  ------------------
10554|       |
10555|     15|    if (len1 == len2) {
  ------------------
  |  Branch (10555:9): [True: 15, False: 0]
  ------------------
10556|       |        /* same length */
10557|     15|        if (len1 == 0)
  ------------------
  |  Branch (10557:13): [True: 0, False: 15]
  ------------------
10558|      0|            goto nothing;
10559|     15|        if (len1 == 1) {
  ------------------
  |  Branch (10559:13): [True: 15, False: 0]
  ------------------
10560|       |            /* replace characters */
10561|     15|            Py_UCS4 u1, u2;
10562|     15|            Py_ssize_t pos;
10563|       |
10564|     15|            u1 = PyUnicode_READ(kind1, buf1, 0);
  ------------------
  |  |  354|     15|    PyUnicode_READ(_Py_STATIC_CAST(int, kind), \
  |  |  ------------------
  |  |  |  |   34|     15|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  355|     15|                   _Py_STATIC_CAST(const void*, data), \
  |  |  ------------------
  |  |  |  |   34|     15|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  356|     15|                   (index))
  ------------------
10565|     15|            pos = findchar(sbuf, skind, slen, u1, 1);
10566|     15|            if (pos < 0)
  ------------------
  |  Branch (10566:17): [True: 12, False: 3]
  ------------------
10567|     12|                goto nothing;
10568|      3|            u2 = PyUnicode_READ(kind2, buf2, 0);
  ------------------
  |  |  354|      3|    PyUnicode_READ(_Py_STATIC_CAST(int, kind), \
  |  |  ------------------
  |  |  |  |   34|      3|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  355|      3|                   _Py_STATIC_CAST(const void*, data), \
  |  |  ------------------
  |  |  |  |   34|      3|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  356|      3|                   (index))
  ------------------
10569|      3|            u = PyUnicode_New(slen, maxchar);
10570|      3|            if (!u)
  ------------------
  |  Branch (10570:17): [True: 0, False: 3]
  ------------------
10571|      0|                goto error;
10572|       |
10573|      3|            _PyUnicode_FastCopyCharacters(u, 0, self, 0, slen);
10574|      3|            replace_1char_inplace(u, pos, u1, u2, maxcount);
10575|      3|        }
10576|      0|        else {
10577|      0|            int rkind = skind;
10578|      0|            char *res;
10579|      0|            Py_ssize_t i;
10580|       |
10581|      0|            if (kind1 < rkind) {
  ------------------
  |  Branch (10581:17): [True: 0, False: 0]
  ------------------
10582|       |                /* widen substring */
10583|      0|                buf1 = unicode_askind(kind1, buf1, len1, rkind);
10584|      0|                if (!buf1) goto error;
  ------------------
  |  Branch (10584:21): [True: 0, False: 0]
  ------------------
10585|      0|                release1 = 1;
10586|      0|            }
10587|      0|            i = anylib_find(rkind, self, sbuf, slen, str1, buf1, len1, 0);
10588|      0|            if (i < 0)
  ------------------
  |  Branch (10588:17): [True: 0, False: 0]
  ------------------
10589|      0|                goto nothing;
10590|      0|            if (rkind > kind2) {
  ------------------
  |  Branch (10590:17): [True: 0, False: 0]
  ------------------
10591|       |                /* widen replacement */
10592|      0|                buf2 = unicode_askind(kind2, buf2, len2, rkind);
10593|      0|                if (!buf2) goto error;
  ------------------
  |  Branch (10593:21): [True: 0, False: 0]
  ------------------
10594|      0|                release2 = 1;
10595|      0|            }
10596|      0|            else if (rkind < kind2) {
  ------------------
  |  Branch (10596:22): [True: 0, False: 0]
  ------------------
10597|       |                /* widen self and buf1 */
10598|      0|                rkind = kind2;
10599|      0|                if (release1) {
  ------------------
  |  Branch (10599:21): [True: 0, False: 0]
  ------------------
10600|      0|                    assert(buf1 != PyUnicode_DATA(str1));
  ------------------
  |  Branch (10600:21): [True: 0, False: 0]
  ------------------
10601|      0|                    PyMem_Free((void *)buf1);
10602|      0|                    buf1 = PyUnicode_DATA(str1);
  ------------------
  |  |  284|      0|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10603|      0|                    release1 = 0;
10604|      0|                }
10605|      0|                sbuf = unicode_askind(skind, sbuf, slen, rkind);
10606|      0|                if (!sbuf) goto error;
  ------------------
  |  Branch (10606:21): [True: 0, False: 0]
  ------------------
10607|      0|                srelease = 1;
10608|      0|                buf1 = unicode_askind(kind1, buf1, len1, rkind);
10609|      0|                if (!buf1) goto error;
  ------------------
  |  Branch (10609:21): [True: 0, False: 0]
  ------------------
10610|      0|                release1 = 1;
10611|      0|            }
10612|      0|            u = PyUnicode_New(slen, maxchar);
10613|      0|            if (!u)
  ------------------
  |  Branch (10613:17): [True: 0, False: 0]
  ------------------
10614|      0|                goto error;
10615|      0|            assert(PyUnicode_KIND(u) == rkind);
  ------------------
  |  Branch (10615:13): [True: 0, False: 0]
  |  Branch (10615:13): [True: 0, False: 0]
  ------------------
10616|      0|            res = PyUnicode_DATA(u);
  ------------------
  |  |  284|      0|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10617|       |
10618|      0|            memcpy(res, sbuf, rkind * slen);
10619|       |            /* change everything in-place, starting with this one */
10620|      0|            memcpy(res + rkind * i,
10621|      0|                   buf2,
10622|      0|                   rkind * len2);
10623|      0|            i += len1;
10624|       |
10625|      0|            while ( --maxcount > 0) {
  ------------------
  |  Branch (10625:21): [True: 0, False: 0]
  ------------------
10626|      0|                i = anylib_find(rkind, self,
10627|      0|                                sbuf+rkind*i, slen-i,
10628|      0|                                str1, buf1, len1, i);
10629|      0|                if (i == -1)
  ------------------
  |  Branch (10629:21): [True: 0, False: 0]
  ------------------
10630|      0|                    break;
10631|      0|                memcpy(res + rkind * i,
10632|      0|                       buf2,
10633|      0|                       rkind * len2);
10634|      0|                i += len1;
10635|      0|            }
10636|      0|        }
10637|     15|    }
10638|      0|    else {
10639|      0|        Py_ssize_t n, i, j, ires;
10640|      0|        Py_ssize_t new_size;
10641|      0|        int rkind = skind;
10642|      0|        char *res;
10643|       |
10644|      0|        if (kind1 < rkind) {
  ------------------
  |  Branch (10644:13): [True: 0, False: 0]
  ------------------
10645|       |            /* widen substring */
10646|      0|            buf1 = unicode_askind(kind1, buf1, len1, rkind);
10647|      0|            if (!buf1) goto error;
  ------------------
  |  Branch (10647:17): [True: 0, False: 0]
  ------------------
10648|      0|            release1 = 1;
10649|      0|        }
10650|      0|        n = anylib_count(rkind, self, sbuf, slen, str1, buf1, len1, maxcount);
10651|      0|        if (n == 0)
  ------------------
  |  Branch (10651:13): [True: 0, False: 0]
  ------------------
10652|      0|            goto nothing;
10653|      0|        if (kind2 < rkind) {
  ------------------
  |  Branch (10653:13): [True: 0, False: 0]
  ------------------
10654|       |            /* widen replacement */
10655|      0|            buf2 = unicode_askind(kind2, buf2, len2, rkind);
10656|      0|            if (!buf2) goto error;
  ------------------
  |  Branch (10656:17): [True: 0, False: 0]
  ------------------
10657|      0|            release2 = 1;
10658|      0|        }
10659|      0|        else if (kind2 > rkind) {
  ------------------
  |  Branch (10659:18): [True: 0, False: 0]
  ------------------
10660|       |            /* widen self and buf1 */
10661|      0|            rkind = kind2;
10662|      0|            sbuf = unicode_askind(skind, sbuf, slen, rkind);
10663|      0|            if (!sbuf) goto error;
  ------------------
  |  Branch (10663:17): [True: 0, False: 0]
  ------------------
10664|      0|            srelease = 1;
10665|      0|            if (release1) {
  ------------------
  |  Branch (10665:17): [True: 0, False: 0]
  ------------------
10666|      0|                assert(buf1 != PyUnicode_DATA(str1));
  ------------------
  |  Branch (10666:17): [True: 0, False: 0]
  ------------------
10667|      0|                PyMem_Free((void *)buf1);
10668|      0|                buf1 = PyUnicode_DATA(str1);
  ------------------
  |  |  284|      0|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10669|      0|                release1 = 0;
10670|      0|            }
10671|      0|            buf1 = unicode_askind(kind1, buf1, len1, rkind);
10672|      0|            if (!buf1) goto error;
  ------------------
  |  Branch (10672:17): [True: 0, False: 0]
  ------------------
10673|      0|            release1 = 1;
10674|      0|        }
10675|       |        /* new_size = PyUnicode_GET_LENGTH(self) + n * (PyUnicode_GET_LENGTH(str2) -
10676|       |           PyUnicode_GET_LENGTH(str1)); */
10677|      0|        if (len1 < len2 && len2 - len1 > (PY_SSIZE_T_MAX - slen) / n) {
  ------------------
  |  |  137|      0|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (10677:13): [True: 0, False: 0]
  |  Branch (10677:28): [True: 0, False: 0]
  ------------------
10678|      0|                PyErr_SetString(PyExc_OverflowError,
10679|      0|                                "replace string is too long");
10680|      0|                goto error;
10681|      0|        }
10682|      0|        new_size = slen + n * (len2 - len1);
10683|      0|        if (new_size == 0) {
  ------------------
  |  Branch (10683:13): [True: 0, False: 0]
  ------------------
10684|      0|            u = _PyUnicode_GetEmpty();
10685|      0|            goto done;
10686|      0|        }
10687|      0|        if (new_size > (PY_SSIZE_T_MAX / rkind)) {
  ------------------
  |  |  137|      0|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (10687:13): [True: 0, False: 0]
  ------------------
10688|      0|            PyErr_SetString(PyExc_OverflowError,
10689|      0|                            "replace string is too long");
10690|      0|            goto error;
10691|      0|        }
10692|      0|        u = PyUnicode_New(new_size, maxchar);
10693|      0|        if (!u)
  ------------------
  |  Branch (10693:13): [True: 0, False: 0]
  ------------------
10694|      0|            goto error;
10695|      0|        assert(PyUnicode_KIND(u) == rkind);
  ------------------
  |  Branch (10695:9): [True: 0, False: 0]
  |  Branch (10695:9): [True: 0, False: 0]
  ------------------
10696|      0|        res = PyUnicode_DATA(u);
  ------------------
  |  |  284|      0|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10697|      0|        ires = i = 0;
10698|      0|        if (len1 > 0) {
  ------------------
  |  Branch (10698:13): [True: 0, False: 0]
  ------------------
10699|      0|            while (n-- > 0) {
  ------------------
  |  Branch (10699:20): [True: 0, False: 0]
  ------------------
10700|       |                /* look for next match */
10701|      0|                j = anylib_find(rkind, self,
10702|      0|                                sbuf + rkind * i, slen-i,
10703|      0|                                str1, buf1, len1, i);
10704|      0|                if (j == -1)
  ------------------
  |  Branch (10704:21): [True: 0, False: 0]
  ------------------
10705|      0|                    break;
10706|      0|                else if (j > i) {
  ------------------
  |  Branch (10706:26): [True: 0, False: 0]
  ------------------
10707|       |                    /* copy unchanged part [i:j] */
10708|      0|                    memcpy(res + rkind * ires,
10709|      0|                           sbuf + rkind * i,
10710|      0|                           rkind * (j-i));
10711|      0|                    ires += j - i;
10712|      0|                }
10713|       |                /* copy substitution string */
10714|      0|                if (len2 > 0) {
  ------------------
  |  Branch (10714:21): [True: 0, False: 0]
  ------------------
10715|      0|                    memcpy(res + rkind * ires,
10716|      0|                           buf2,
10717|      0|                           rkind * len2);
10718|      0|                    ires += len2;
10719|      0|                }
10720|      0|                i = j + len1;
10721|      0|            }
10722|      0|            if (i < slen)
  ------------------
  |  Branch (10722:17): [True: 0, False: 0]
  ------------------
10723|       |                /* copy tail [i:] */
10724|      0|                memcpy(res + rkind * ires,
10725|      0|                       sbuf + rkind * i,
10726|      0|                       rkind * (slen-i));
10727|      0|        }
10728|      0|        else {
10729|       |            /* interleave */
10730|      0|            while (n > 0) {
  ------------------
  |  Branch (10730:20): [True: 0, False: 0]
  ------------------
10731|      0|                memcpy(res + rkind * ires,
10732|      0|                       buf2,
10733|      0|                       rkind * len2);
10734|      0|                ires += len2;
10735|      0|                if (--n <= 0)
  ------------------
  |  Branch (10735:21): [True: 0, False: 0]
  ------------------
10736|      0|                    break;
10737|      0|                memcpy(res + rkind * ires,
10738|      0|                       sbuf + rkind * i,
10739|      0|                       rkind);
10740|      0|                ires++;
10741|      0|                i++;
10742|      0|            }
10743|      0|            memcpy(res + rkind * ires,
10744|      0|                   sbuf + rkind * i,
10745|      0|                   rkind * (slen-i));
10746|      0|        }
10747|      0|    }
10748|       |
10749|      3|    if (mayshrink) {
  ------------------
  |  Branch (10749:9): [True: 0, False: 3]
  ------------------
10750|      0|        unicode_adjust_maxchar(&u);
10751|      0|        if (u == NULL)
  ------------------
  |  Branch (10751:13): [True: 0, False: 0]
  ------------------
10752|      0|            goto error;
10753|      0|    }
10754|       |
10755|      3|  done:
10756|      3|    assert(srelease == (sbuf != PyUnicode_DATA(self)));
  ------------------
  |  Branch (10756:5): [True: 3, False: 0]
  ------------------
10757|      3|    assert(release1 == (buf1 != PyUnicode_DATA(str1)));
  ------------------
  |  Branch (10757:5): [True: 3, False: 0]
  ------------------
10758|      3|    assert(release2 == (buf2 != PyUnicode_DATA(str2)));
  ------------------
  |  Branch (10758:5): [True: 3, False: 0]
  ------------------
10759|      3|    if (srelease)
  ------------------
  |  Branch (10759:9): [True: 0, False: 3]
  ------------------
10760|      0|        PyMem_Free((void *)sbuf);
10761|      3|    if (release1)
  ------------------
  |  Branch (10761:9): [True: 0, False: 3]
  ------------------
10762|      0|        PyMem_Free((void *)buf1);
10763|      3|    if (release2)
  ------------------
  |  Branch (10763:9): [True: 0, False: 3]
  ------------------
10764|      0|        PyMem_Free((void *)buf2);
10765|      3|    assert(_PyUnicode_CheckConsistency(u, 1));
  ------------------
  |  Branch (10765:5): [True: 3, False: 0]
  ------------------
10766|      3|    return u;
10767|       |
10768|     12|  nothing:
10769|       |    /* nothing to replace; return original string (when possible) */
10770|     12|    assert(srelease == (sbuf != PyUnicode_DATA(self)));
  ------------------
  |  Branch (10770:5): [True: 12, False: 0]
  ------------------
10771|     12|    assert(release1 == (buf1 != PyUnicode_DATA(str1)));
  ------------------
  |  Branch (10771:5): [True: 12, False: 0]
  ------------------
10772|     12|    assert(release2 == (buf2 != PyUnicode_DATA(str2)));
  ------------------
  |  Branch (10772:5): [True: 12, False: 0]
  ------------------
10773|     12|    if (srelease)
  ------------------
  |  Branch (10773:9): [True: 0, False: 12]
  ------------------
10774|      0|        PyMem_Free((void *)sbuf);
10775|     12|    if (release1)
  ------------------
  |  Branch (10775:9): [True: 0, False: 12]
  ------------------
10776|      0|        PyMem_Free((void *)buf1);
10777|     12|    if (release2)
  ------------------
  |  Branch (10777:9): [True: 0, False: 12]
  ------------------
10778|      0|        PyMem_Free((void *)buf2);
10779|     12|    return unicode_result_unchanged(self);
10780|       |
10781|      0|  error:
10782|      0|    assert(srelease == (sbuf != PyUnicode_DATA(self)));
  ------------------
  |  Branch (10782:5): [True: 0, False: 0]
  ------------------
10783|      0|    assert(release1 == (buf1 != PyUnicode_DATA(str1)));
  ------------------
  |  Branch (10783:5): [True: 0, False: 0]
  ------------------
10784|      0|    assert(release2 == (buf2 != PyUnicode_DATA(str2)));
  ------------------
  |  Branch (10784:5): [True: 0, False: 0]
  ------------------
10785|      0|    if (srelease)
  ------------------
  |  Branch (10785:9): [True: 0, False: 0]
  ------------------
10786|      0|        PyMem_Free((void *)sbuf);
10787|      0|    if (release1)
  ------------------
  |  Branch (10787:9): [True: 0, False: 0]
  ------------------
10788|      0|        PyMem_Free((void *)buf1);
10789|      0|    if (release2)
  ------------------
  |  Branch (10789:9): [True: 0, False: 0]
  ------------------
10790|      0|        PyMem_Free((void *)buf2);
10791|       |    return NULL;
10792|      0|}
unicodeobject.c:replace_1char_inplace:
10493|      3|{
10494|      3|    int kind = PyUnicode_KIND(u);
  ------------------
  |  |  258|      3|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|      6|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 3, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10495|      3|    void *data = PyUnicode_DATA(u);
  ------------------
  |  |  284|      3|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10496|      3|    Py_ssize_t len = PyUnicode_GET_LENGTH(u);
  ------------------
  |  |  299|      3|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10497|      3|    if (kind == PyUnicode_1BYTE_KIND) {
  ------------------
  |  Branch (10497:9): [True: 3, False: 0]
  ------------------
10498|      3|        ucs1lib_replace_1char_inplace((Py_UCS1 *)data + pos,
10499|      3|                                      (Py_UCS1 *)data + len,
10500|      3|                                      u1, u2, maxcount);
10501|      3|    }
10502|      0|    else if (kind == PyUnicode_2BYTE_KIND) {
  ------------------
  |  Branch (10502:14): [True: 0, False: 0]
  ------------------
10503|      0|        ucs2lib_replace_1char_inplace((Py_UCS2 *)data + pos,
10504|      0|                                      (Py_UCS2 *)data + len,
10505|      0|                                      u1, u2, maxcount);
10506|      0|    }
10507|      0|    else {
10508|      0|        assert(kind == PyUnicode_4BYTE_KIND);
  ------------------
  |  Branch (10508:9): [True: 0, False: 0]
  ------------------
10509|      0|        ucs4lib_replace_1char_inplace((Py_UCS4 *)data + pos,
10510|      0|                                      (Py_UCS4 *)data + len,
10511|      0|                                      u1, u2, maxcount);
10512|      0|    }
10513|      3|}
unicodeobject.c:split:
10277|      2|{
10278|      2|    int kind1, kind2;
10279|      2|    const void *buf1, *buf2;
10280|      2|    Py_ssize_t len1, len2;
10281|      2|    PyObject* out;
10282|      2|    len1 = PyUnicode_GET_LENGTH(self);
  ------------------
  |  |  299|      2|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10283|      2|    kind1 = PyUnicode_KIND(self);
  ------------------
  |  |  258|      2|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|      4|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10284|       |
10285|      2|    if (substring == NULL) {
  ------------------
  |  Branch (10285:9): [True: 0, False: 2]
  ------------------
10286|      0|        if (maxcount < 0) {
  ------------------
  |  Branch (10286:13): [True: 0, False: 0]
  ------------------
10287|      0|            maxcount = (len1 - 1) / 2 + 1;
10288|      0|        }
10289|      0|        switch (kind1) {
10290|      0|        case PyUnicode_1BYTE_KIND:
  ------------------
  |  Branch (10290:9): [True: 0, False: 0]
  ------------------
10291|      0|            if (PyUnicode_IS_ASCII(self))
  ------------------
  |  |  227|      0|#define PyUnicode_IS_ASCII(op) PyUnicode_IS_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (227:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
10292|      0|                return asciilib_split_whitespace(
10293|      0|                    self,  PyUnicode_1BYTE_DATA(self),
  ------------------
  |  |  291|      0|#define PyUnicode_1BYTE_DATA(op) _Py_STATIC_CAST(Py_UCS1*, PyUnicode_DATA(op))
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
10294|      0|                    len1, maxcount
10295|      0|                    );
10296|      0|            else
10297|      0|                return ucs1lib_split_whitespace(
10298|      0|                    self,  PyUnicode_1BYTE_DATA(self),
  ------------------
  |  |  291|      0|#define PyUnicode_1BYTE_DATA(op) _Py_STATIC_CAST(Py_UCS1*, PyUnicode_DATA(op))
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
10299|      0|                    len1, maxcount
10300|      0|                    );
10301|      0|        case PyUnicode_2BYTE_KIND:
  ------------------
  |  Branch (10301:9): [True: 0, False: 0]
  ------------------
10302|      0|            return ucs2lib_split_whitespace(
10303|      0|                self,  PyUnicode_2BYTE_DATA(self),
  ------------------
  |  |  292|      0|#define PyUnicode_2BYTE_DATA(op) _Py_STATIC_CAST(Py_UCS2*, PyUnicode_DATA(op))
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
10304|      0|                len1, maxcount
10305|      0|                );
10306|      0|        case PyUnicode_4BYTE_KIND:
  ------------------
  |  Branch (10306:9): [True: 0, False: 0]
  ------------------
10307|      0|            return ucs4lib_split_whitespace(
10308|      0|                self,  PyUnicode_4BYTE_DATA(self),
  ------------------
  |  |  293|      0|#define PyUnicode_4BYTE_DATA(op) _Py_STATIC_CAST(Py_UCS4*, PyUnicode_DATA(op))
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
10309|      0|                len1, maxcount
10310|      0|                );
10311|      0|        default:
  ------------------
  |  Branch (10311:9): [True: 0, False: 0]
  ------------------
10312|      0|            Py_UNREACHABLE();
  ------------------
  |  |  264|      0|#  define Py_UNREACHABLE() __builtin_unreachable()
  ------------------
10313|      0|        }
10314|      0|    }
10315|       |
10316|      2|    kind2 = PyUnicode_KIND(substring);
  ------------------
  |  |  258|      2|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|      4|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10317|      2|    len2 = PyUnicode_GET_LENGTH(substring);
  ------------------
  |  |  299|      2|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10318|      2|    if (maxcount < 0) {
  ------------------
  |  Branch (10318:9): [True: 2, False: 0]
  ------------------
10319|       |        // if len2 == 0, it will raise ValueError.
10320|      2|        maxcount = len2 == 0 ? 0 : (len1 / len2) + 1;
  ------------------
  |  Branch (10320:20): [True: 0, False: 2]
  ------------------
10321|       |        // handle expected overflow case: (Py_SSIZE_T_MAX / 1) + 1
10322|      2|        maxcount = maxcount < 0 ? len1 : maxcount;
  ------------------
  |  Branch (10322:20): [True: 0, False: 2]
  ------------------
10323|      2|    }
10324|      2|    if (kind1 < kind2 || len1 < len2) {
  ------------------
  |  Branch (10324:9): [True: 0, False: 2]
  |  Branch (10324:26): [True: 0, False: 2]
  ------------------
10325|      0|        out = PyList_New(1);
10326|      0|        if (out == NULL)
  ------------------
  |  Branch (10326:13): [True: 0, False: 0]
  ------------------
10327|      0|            return NULL;
10328|      0|        PyList_SET_ITEM(out, 0, Py_NewRef(self));
  ------------------
  |  |   50|      0|    PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10329|      0|        return out;
10330|      0|    }
10331|      2|    buf1 = PyUnicode_DATA(self);
  ------------------
  |  |  284|      2|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10332|      2|    buf2 = PyUnicode_DATA(substring);
  ------------------
  |  |  284|      2|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
10333|      2|    if (kind2 != kind1) {
  ------------------
  |  Branch (10333:9): [True: 0, False: 2]
  ------------------
10334|      0|        buf2 = unicode_askind(kind2, buf2, len2, kind1);
10335|      0|        if (!buf2)
  ------------------
  |  Branch (10335:13): [True: 0, False: 0]
  ------------------
10336|      0|            return NULL;
10337|      0|    }
10338|       |
10339|      2|    switch (kind1) {
10340|      2|    case PyUnicode_1BYTE_KIND:
  ------------------
  |  Branch (10340:5): [True: 2, False: 0]
  ------------------
10341|      2|        if (PyUnicode_IS_ASCII(self) && PyUnicode_IS_ASCII(substring))
  ------------------
  |  |  227|      4|#define PyUnicode_IS_ASCII(op) PyUnicode_IS_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (227:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
                      if (PyUnicode_IS_ASCII(self) && PyUnicode_IS_ASCII(substring))
  ------------------
  |  |  227|      2|#define PyUnicode_IS_ASCII(op) PyUnicode_IS_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (227:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
10342|      2|            out = asciilib_split(
10343|      2|                self,  buf1, len1, buf2, len2, maxcount);
10344|      0|        else
10345|      0|            out = ucs1lib_split(
10346|      0|                self,  buf1, len1, buf2, len2, maxcount);
10347|      2|        break;
10348|      0|    case PyUnicode_2BYTE_KIND:
  ------------------
  |  Branch (10348:5): [True: 0, False: 2]
  ------------------
10349|      0|        out = ucs2lib_split(
10350|      0|            self,  buf1, len1, buf2, len2, maxcount);
10351|      0|        break;
10352|      0|    case PyUnicode_4BYTE_KIND:
  ------------------
  |  Branch (10352:5): [True: 0, False: 2]
  ------------------
10353|      0|        out = ucs4lib_split(
10354|      0|            self,  buf1, len1, buf2, len2, maxcount);
10355|      0|        break;
10356|      0|    default:
  ------------------
  |  Branch (10356:5): [True: 0, False: 2]
  ------------------
10357|      0|        out = NULL;
10358|      2|    }
10359|      2|    assert((kind2 != kind1) == (buf2 != PyUnicode_DATA(substring)));
  ------------------
  |  Branch (10359:5): [True: 2, False: 0]
  ------------------
10360|      2|    if (kind2 != kind1)
  ------------------
  |  Branch (10360:9): [True: 0, False: 2]
  ------------------
10361|      0|        PyMem_Free((void *)buf2);
10362|      2|    return out;
10363|      2|}
unicodeobject.c:unicode_dealloc:
 1627|  4.38k|{
 1628|       |#ifdef Py_DEBUG
 1629|       |    if (!unicode_is_finalizing() && unicode_is_singleton(unicode)) {
 1630|       |        _Py_FatalRefcountError("deallocating an Unicode singleton");
 1631|       |    }
 1632|       |#endif
 1633|  8.77k|    if (_PyUnicode_STATE(unicode).statically_allocated) {
  ------------------
  |  |  153|  4.38k|    (_PyASCIIObject_CAST(op)->state)
  |  |  ------------------
  |  |  |  |  186|  4.38k|    (assert(PyUnicode_Check(op)), \
  |  |  |  |  187|  4.38k|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  4.38k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1633:9): [True: 4.38k, False: 0]
  |  Branch (1633:9): [True: 0, False: 4.38k]
  ------------------
 1634|       |        /* This should never get called, but we also don't want to SEGV if
 1635|       |        * we accidentally decref an immortal string out of existence. Since
 1636|       |        * the string is an immortal object, just re-set the reference count.
 1637|       |        */
 1638|       |#ifdef Py_DEBUG
 1639|       |        Py_UNREACHABLE();
 1640|       |#endif
 1641|      0|        _Py_SetImmortal(unicode);
 1642|      0|        return;
 1643|      0|    }
 1644|  4.38k|    switch (_PyUnicode_STATE(unicode).interned) {
  ------------------
  |  |  153|  4.38k|    (_PyASCIIObject_CAST(op)->state)
  |  |  ------------------
  |  |  |  |  186|  4.38k|    (assert(PyUnicode_Check(op)), \
  |  |  |  |  187|  4.38k|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  4.38k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1644:13): [True: 4.38k, False: 0]
  ------------------
 1645|  4.38k|        case SSTATE_NOT_INTERNED:
  ------------------
  |  |  201|  4.38k|#define SSTATE_NOT_INTERNED 0
  ------------------
  |  Branch (1645:9): [True: 4.38k, False: 0]
  ------------------
 1646|  4.38k|            break;
 1647|      0|        case SSTATE_INTERNED_MORTAL:
  ------------------
  |  |  202|      0|#define SSTATE_INTERNED_MORTAL 1
  ------------------
  |  Branch (1647:9): [True: 0, False: 4.38k]
  ------------------
 1648|       |            /* Remove the object from the intern dict.
 1649|       |             * Before doing so, we set the refcount to 2: the key and value
 1650|       |             * in the interned_dict.
 1651|       |             */
 1652|      0|            assert(Py_REFCNT(unicode) == 0);
  ------------------
  |  Branch (1652:13): [True: 0, False: 0]
  ------------------
 1653|      0|            Py_SET_REFCNT(unicode, 2);
  ------------------
  |  |  201|      0|#  define Py_SET_REFCNT(ob, refcnt) Py_SET_REFCNT(_PyObject_CAST(ob), (refcnt))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1654|       |#ifdef Py_REF_DEBUG
 1655|       |            /* let's be pedantic with the ref total */
 1656|       |            _Py_IncRefTotal(_PyThreadState_GET());
 1657|       |            _Py_IncRefTotal(_PyThreadState_GET());
 1658|       |#endif
 1659|      0|            PyInterpreterState *interp = _PyInterpreterState_GET();
 1660|      0|            PyObject *interned = get_interned_dict(interp);
 1661|      0|            assert(interned != NULL);
  ------------------
  |  Branch (1661:13): [True: 0, False: 0]
  ------------------
 1662|      0|            PyObject *popped;
 1663|      0|            int r = PyDict_Pop(interned, unicode, &popped);
 1664|      0|            if (r == -1) {
  ------------------
  |  Branch (1664:17): [True: 0, False: 0]
  ------------------
 1665|      0|                PyErr_FormatUnraisable("Exception ignored while "
 1666|      0|                                       "removing an interned string %R",
 1667|      0|                                       unicode);
 1668|       |                // We don't know what happened to the string. It's probably
 1669|       |                // best to leak it:
 1670|       |                // - if it was popped, there are no more references to it
 1671|       |                //   so it can't cause trouble (except wasted memory)
 1672|       |                // - if it wasn't popped, it'll remain interned
 1673|      0|                _Py_SetImmortal(unicode);
 1674|      0|                _PyUnicode_STATE(unicode).interned = SSTATE_INTERNED_IMMORTAL;
  ------------------
  |  |  153|      0|    (_PyASCIIObject_CAST(op)->state)
  |  |  ------------------
  |  |  |  |  186|      0|    (assert(PyUnicode_Check(op)), \
  |  |  |  |  187|      0|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                              _PyUnicode_STATE(unicode).interned = SSTATE_INTERNED_IMMORTAL;
  ------------------
  |  |  203|      0|#define SSTATE_INTERNED_IMMORTAL 2
  ------------------
  |  Branch (1674:17): [True: 0, False: 0]
  ------------------
 1675|      0|                return;
 1676|      0|            }
 1677|      0|            if (r == 0) {
  ------------------
  |  Branch (1677:17): [True: 0, False: 0]
  ------------------
 1678|       |                // The interned string was not found in the interned_dict.
 1679|       |#ifdef Py_DEBUG
 1680|       |                Py_UNREACHABLE();
 1681|       |#endif
 1682|      0|                _Py_SetImmortal(unicode);
 1683|      0|                return;
 1684|      0|            }
 1685|       |            // Successfully popped.
 1686|      0|            assert(popped == unicode);
  ------------------
  |  Branch (1686:13): [True: 0, False: 0]
  ------------------
 1687|       |            // Only our `popped` reference should be left; remove it too.
 1688|      0|            assert(Py_REFCNT(unicode) == 1);
  ------------------
  |  Branch (1688:13): [True: 0, False: 0]
  ------------------
 1689|      0|            Py_SET_REFCNT(unicode, 0);
  ------------------
  |  |  201|      0|#  define Py_SET_REFCNT(ob, refcnt) Py_SET_REFCNT(_PyObject_CAST(ob), (refcnt))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1690|       |#ifdef Py_REF_DEBUG
 1691|       |            /* let's be pedantic with the ref total */
 1692|       |            _Py_DecRefTotal(_PyThreadState_GET());
 1693|       |#endif
 1694|      0|            break;
 1695|      0|        default:
  ------------------
  |  Branch (1695:9): [True: 0, False: 4.38k]
  ------------------
 1696|       |            // As with `statically_allocated` above.
 1697|       |#ifdef Py_REF_DEBUG
 1698|       |            Py_UNREACHABLE();
 1699|       |#endif
 1700|      0|            _Py_SetImmortal(unicode);
 1701|      0|            return;
 1702|  4.38k|    }
 1703|  4.38k|    if (_PyUnicode_HAS_UTF8_MEMORY(unicode)) {
  ------------------
  |  Branch (1703:9): [True: 0, False: 4.38k]
  ------------------
 1704|      0|        PyMem_Free(_PyUnicode_UTF8(unicode));
 1705|      0|    }
 1706|  4.38k|    if (!PyUnicode_IS_COMPACT(unicode) && _PyUnicode_DATA_ANY(unicode)) {
  ------------------
  |  |  234|  8.77k|#define PyUnicode_IS_COMPACT(op) PyUnicode_IS_COMPACT(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  4.38k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  4.38k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  if (!PyUnicode_IS_COMPACT(unicode) && _PyUnicode_DATA_ANY(unicode)) {
  ------------------
  |  |  165|      0|    (_PyUnicodeObject_CAST(op)->data.any)
  |  |  ------------------
  |  |  |  |  192|      0|    (assert(PyUnicode_Check(op)), \
  |  |  |  |  193|      0|     _Py_CAST(PyUnicodeObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (165:5): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1706:9): [True: 0, False: 4.38k]
  |  Branch (1706:43): [True: 0, False: 0]
  ------------------
 1707|      0|        PyMem_Free(_PyUnicode_DATA_ANY(unicode));
  ------------------
  |  |  165|      0|    (_PyUnicodeObject_CAST(op)->data.any)
  |  |  ------------------
  |  |  |  |  192|      0|    (assert(PyUnicode_Check(op)), \
  |  |  |  |  193|      0|     _Py_CAST(PyUnicodeObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1707:20): [True: 0, False: 0]
  ------------------
 1708|      0|    }
 1709|       |
 1710|  4.38k|    Py_TYPE(unicode)->tp_free(unicode);
  ------------------
  |  |  213|  4.38k|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  4.38k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  4.38k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1711|  4.38k|}
unicodeobject.c:unicode_repr:
12653|      5|{
12654|      5|    Py_ssize_t isize = PyUnicode_GET_LENGTH(unicode);
  ------------------
  |  |  299|      5|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12655|      5|    const void *idata = PyUnicode_DATA(unicode);
  ------------------
  |  |  284|      5|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12656|       |
12657|       |    /* Compute length of output, quote characters, and
12658|       |       maximum character */
12659|      5|    Py_ssize_t osize = 0;
12660|      5|    Py_UCS4 maxch = 127;
12661|      5|    Py_ssize_t squote = 0;
12662|      5|    Py_ssize_t dquote = 0;
12663|      5|    int ikind = PyUnicode_KIND(unicode);
  ------------------
  |  |  258|      5|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|     10|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 5, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12664|    116|    for (Py_ssize_t i = 0; i < isize; i++) {
  ------------------
  |  Branch (12664:28): [True: 111, False: 5]
  ------------------
12665|    111|        Py_UCS4 ch = PyUnicode_READ(ikind, idata, i);
  ------------------
  |  |  354|    111|    PyUnicode_READ(_Py_STATIC_CAST(int, kind), \
  |  |  ------------------
  |  |  |  |   34|    111|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  355|    111|                   _Py_STATIC_CAST(const void*, data), \
  |  |  ------------------
  |  |  |  |   34|    111|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  356|    111|                   (index))
  ------------------
12666|    111|        Py_ssize_t incr = 1;
12667|    111|        switch (ch) {
12668|      0|        case '\'': squote++; break;
  ------------------
  |  Branch (12668:9): [True: 0, False: 111]
  ------------------
12669|      0|        case '"':  dquote++; break;
  ------------------
  |  Branch (12669:9): [True: 0, False: 111]
  ------------------
12670|      0|        case '\\': case '\t': case '\r': case '\n':
  ------------------
  |  Branch (12670:9): [True: 0, False: 111]
  |  Branch (12670:20): [True: 0, False: 111]
  |  Branch (12670:31): [True: 0, False: 111]
  |  Branch (12670:42): [True: 0, False: 111]
  ------------------
12671|      0|            incr = 2;
12672|      0|            break;
12673|    111|        default:
  ------------------
  |  Branch (12673:9): [True: 111, False: 0]
  ------------------
12674|       |            /* Fast-path ASCII */
12675|    111|            if (ch < ' ' || ch == 0x7f)
  ------------------
  |  Branch (12675:17): [True: 0, False: 111]
  |  Branch (12675:29): [True: 0, False: 111]
  ------------------
12676|      0|                incr = 4; /* \xHH */
12677|    111|            else if (ch < 0x7f)
  ------------------
  |  Branch (12677:22): [True: 111, False: 0]
  ------------------
12678|    111|                ;
12679|      0|            else if (Py_UNICODE_ISPRINTABLE(ch))
  ------------------
  |  |  761|      0|#define Py_UNICODE_ISPRINTABLE(ch) _PyUnicode_IsPrintable(ch)
  |  |  ------------------
  |  |  |  Branch (761:36): [True: 0, False: 0]
  |  |  ------------------
  ------------------
12680|      0|                maxch = (ch > maxch) ? ch : maxch;
  ------------------
  |  Branch (12680:25): [True: 0, False: 0]
  ------------------
12681|      0|            else if (ch < 0x100)
  ------------------
  |  Branch (12681:22): [True: 0, False: 0]
  ------------------
12682|      0|                incr = 4; /* \xHH */
12683|      0|            else if (ch < 0x10000)
  ------------------
  |  Branch (12683:22): [True: 0, False: 0]
  ------------------
12684|      0|                incr = 6; /* \uHHHH */
12685|      0|            else
12686|      0|                incr = 10; /* \uHHHHHHHH */
12687|    111|        }
12688|    111|        if (osize > PY_SSIZE_T_MAX - incr) {
  ------------------
  |  |  137|    111|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (12688:13): [True: 0, False: 111]
  ------------------
12689|      0|            PyErr_SetString(PyExc_OverflowError,
12690|      0|                            "string is too long to generate repr");
12691|      0|            return NULL;
12692|      0|        }
12693|    111|        osize += incr;
12694|    111|    }
12695|       |
12696|      5|    Py_UCS4 quote = '\'';
12697|      5|    int changed = (osize != isize);
12698|      5|    if (squote) {
  ------------------
  |  Branch (12698:9): [True: 0, False: 5]
  ------------------
12699|      0|        changed = 1;
12700|      0|        if (dquote)
  ------------------
  |  Branch (12700:13): [True: 0, False: 0]
  ------------------
12701|       |            /* Both squote and dquote present. Use squote,
12702|       |               and escape them */
12703|      0|            osize += squote;
12704|      0|        else
12705|      0|            quote = '"';
12706|      0|    }
12707|      5|    osize += 2;   /* quotes */
12708|       |
12709|      5|    PyObject *repr = PyUnicode_New(osize, maxch);
12710|      5|    if (repr == NULL)
  ------------------
  |  Branch (12710:9): [True: 0, False: 5]
  ------------------
12711|      0|        return NULL;
12712|      5|    int okind = PyUnicode_KIND(repr);
  ------------------
  |  |  258|      5|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|     10|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 5, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12713|      5|    void *odata = PyUnicode_DATA(repr);
  ------------------
  |  |  284|      5|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12714|       |
12715|      5|    if (!changed) {
  ------------------
  |  Branch (12715:9): [True: 5, False: 0]
  ------------------
12716|      5|        PyUnicode_WRITE(okind, odata, 0, quote);
  ------------------
  |  |  335|      5|    PyUnicode_WRITE(_Py_STATIC_CAST(int, kind), _Py_CAST(void*, data), \
  |  |  ------------------
  |  |  |  |   34|      5|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |                   PyUnicode_WRITE(_Py_STATIC_CAST(int, kind), _Py_CAST(void*, data), \
  |  |  ------------------
  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  336|      5|                    (index), _Py_STATIC_CAST(Py_UCS4, value))
  |  |  ------------------
  |  |  |  |   34|      5|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
12717|       |
12718|      5|        _PyUnicode_FastCopyCharacters(repr, 1,
12719|      5|                                      unicode, 0,
12720|      5|                                      isize);
12721|       |
12722|      5|        PyUnicode_WRITE(okind, odata, osize-1, quote);
  ------------------
  |  |  335|      5|    PyUnicode_WRITE(_Py_STATIC_CAST(int, kind), _Py_CAST(void*, data), \
  |  |  ------------------
  |  |  |  |   34|      5|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |                   PyUnicode_WRITE(_Py_STATIC_CAST(int, kind), _Py_CAST(void*, data), \
  |  |  ------------------
  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  336|      5|                    (index), _Py_STATIC_CAST(Py_UCS4, value))
  |  |  ------------------
  |  |  |  |   34|      5|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
12723|      5|    }
12724|      0|    else {
12725|      0|        switch (okind) {
12726|      0|        case PyUnicode_1BYTE_KIND:
  ------------------
  |  Branch (12726:9): [True: 0, False: 0]
  ------------------
12727|      0|            ucs1lib_repr(unicode, quote, odata);
12728|      0|            break;
12729|      0|        case PyUnicode_2BYTE_KIND:
  ------------------
  |  Branch (12729:9): [True: 0, False: 0]
  ------------------
12730|      0|            ucs2lib_repr(unicode, quote, odata);
12731|      0|            break;
12732|      0|        default:
  ------------------
  |  Branch (12732:9): [True: 0, False: 0]
  ------------------
12733|      0|            assert(okind == PyUnicode_4BYTE_KIND);
  ------------------
  |  Branch (12733:13): [True: 0, False: 0]
  ------------------
12734|      0|            ucs4lib_repr(unicode, quote, odata);
12735|      0|        }
12736|      0|    }
12737|       |
12738|      5|    assert(_PyUnicode_CheckConsistency(repr, 1));
  ------------------
  |  Branch (12738:5): [True: 5, False: 0]
  ------------------
12739|      5|    return repr;
12740|      5|}
unicodeobject.c:unicode_length:
12222|     61|{
12223|     61|    return PyUnicode_GET_LENGTH(self);
  ------------------
  |  |  299|     61|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     61|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     61|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12224|     61|}
unicodeobject.c:unicode_getitem:
11647|      1|{
11648|      1|    const void *data;
11649|      1|    int kind;
11650|      1|    Py_UCS4 ch;
11651|       |
11652|      1|    if (!PyUnicode_Check(self)) {
  ------------------
  |  |  103|      1|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      1|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (11652:9): [True: 0, False: 1]
  ------------------
11653|      0|        PyErr_BadArgument();
11654|      0|        return NULL;
11655|      0|    }
11656|      1|    if (index < 0 || index >= PyUnicode_GET_LENGTH(self)) {
  ------------------
  |  |  299|      1|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (11656:9): [True: 0, False: 1]
  |  Branch (11656:22): [True: 0, False: 1]
  ------------------
11657|      0|        PyErr_SetString(PyExc_IndexError, "string index out of range");
11658|      0|        return NULL;
11659|      0|    }
11660|      1|    kind = PyUnicode_KIND(self);
  ------------------
  |  |  258|      1|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|      2|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11661|      1|    data = PyUnicode_DATA(self);
  ------------------
  |  |  284|      1|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11662|      1|    ch = PyUnicode_READ(kind, data, index);
  ------------------
  |  |  354|      1|    PyUnicode_READ(_Py_STATIC_CAST(int, kind), \
  |  |  ------------------
  |  |  |  |   34|      1|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  355|      1|                   _Py_STATIC_CAST(const void*, data), \
  |  |  ------------------
  |  |  |  |   34|      1|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  356|      1|                   (index))
  ------------------
11663|      1|    return unicode_char(ch);
11664|      1|}
unicodeobject.c:unicode_subscript:
13747|      2|{
13748|      2|    if (_PyIndex_Check(item)) {
  ------------------
  |  Branch (13748:9): [True: 1, False: 1]
  ------------------
13749|      1|        Py_ssize_t i = PyNumber_AsSsize_t(item, PyExc_IndexError);
13750|      1|        if (i == -1 && PyErr_Occurred())
  ------------------
  |  Branch (13750:13): [True: 0, False: 1]
  |  Branch (13750:24): [True: 0, False: 0]
  ------------------
13751|      0|            return NULL;
13752|      1|        if (i < 0)
  ------------------
  |  Branch (13752:13): [True: 0, False: 1]
  ------------------
13753|      0|            i += PyUnicode_GET_LENGTH(self);
  ------------------
  |  |  299|      0|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13754|      1|        return unicode_getitem(self, i);
13755|      1|    } else if (PySlice_Check(item)) {
  ------------------
  |  |   22|      1|#define PySlice_Check(op) Py_IS_TYPE((op), &PySlice_Type)
  |  |  ------------------
  |  |  |  |  215|      1|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13756|      1|        Py_ssize_t start, stop, step, slicelength, i;
13757|      1|        size_t cur;
13758|      1|        PyObject *result;
13759|      1|        const void *src_data;
13760|      1|        void *dest_data;
13761|      1|        int src_kind, dest_kind;
13762|      1|        Py_UCS4 ch, max_char, kind_limit;
13763|       |
13764|      1|        if (PySlice_Unpack(item, &start, &stop, &step) < 0) {
  ------------------
  |  Branch (13764:13): [True: 0, False: 1]
  ------------------
13765|      0|            return NULL;
13766|      0|        }
13767|      1|        slicelength = PySlice_AdjustIndices(PyUnicode_GET_LENGTH(self),
  ------------------
  |  |  299|      1|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13768|      1|                                            &start, &stop, step);
13769|       |
13770|      1|        if (slicelength <= 0) {
  ------------------
  |  Branch (13770:13): [True: 1, False: 0]
  ------------------
13771|      1|            _Py_RETURN_UNICODE_EMPTY();
  ------------------
  |  |  375|      1|    do {                             \
  |  |  376|      1|        return _PyUnicode_GetEmpty();\
  |  |  377|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (377:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
13772|      1|        } else if (start == 0 && step == 1 &&
  ------------------
  |  Branch (13772:20): [True: 0, False: 0]
  |  Branch (13772:34): [True: 0, False: 0]
  ------------------
13773|      0|                   slicelength == PyUnicode_GET_LENGTH(self)) {
  ------------------
  |  |  299|      0|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13773:20): [True: 0, False: 0]
  ------------------
13774|      0|            return unicode_result_unchanged(self);
13775|      0|        } else if (step == 1) {
  ------------------
  |  Branch (13775:20): [True: 0, False: 0]
  ------------------
13776|      0|            return PyUnicode_Substring(self,
13777|      0|                                       start, start + slicelength);
13778|      0|        }
13779|       |        /* General case */
13780|      0|        src_kind = PyUnicode_KIND(self);
  ------------------
  |  |  258|      0|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|      0|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13781|      0|        src_data = PyUnicode_DATA(self);
  ------------------
  |  |  284|      0|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13782|      0|        if (!PyUnicode_IS_ASCII(self)) {
  ------------------
  |  |  227|      0|#define PyUnicode_IS_ASCII(op) PyUnicode_IS_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13782:13): [True: 0, False: 0]
  ------------------
13783|      0|            kind_limit = kind_maxchar_limit(src_kind);
13784|      0|            max_char = 0;
13785|      0|            for (cur = start, i = 0; i < slicelength; cur += step, i++) {
  ------------------
  |  Branch (13785:38): [True: 0, False: 0]
  ------------------
13786|      0|                ch = PyUnicode_READ(src_kind, src_data, cur);
  ------------------
  |  |  354|      0|    PyUnicode_READ(_Py_STATIC_CAST(int, kind), \
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  355|      0|                   _Py_STATIC_CAST(const void*, data), \
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  356|      0|                   (index))
  ------------------
13787|      0|                if (ch > max_char) {
  ------------------
  |  Branch (13787:21): [True: 0, False: 0]
  ------------------
13788|      0|                    max_char = ch;
13789|      0|                    if (max_char >= kind_limit)
  ------------------
  |  Branch (13789:25): [True: 0, False: 0]
  ------------------
13790|      0|                        break;
13791|      0|                }
13792|      0|            }
13793|      0|        }
13794|      0|        else
13795|      0|            max_char = 127;
13796|      0|        result = PyUnicode_New(slicelength, max_char);
13797|      0|        if (result == NULL)
  ------------------
  |  Branch (13797:13): [True: 0, False: 0]
  ------------------
13798|      0|            return NULL;
13799|      0|        dest_kind = PyUnicode_KIND(result);
  ------------------
  |  |  258|      0|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|      0|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13800|      0|        dest_data = PyUnicode_DATA(result);
  ------------------
  |  |  284|      0|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13801|       |
13802|      0|        for (cur = start, i = 0; i < slicelength; cur += step, i++) {
  ------------------
  |  Branch (13802:34): [True: 0, False: 0]
  ------------------
13803|      0|            Py_UCS4 ch = PyUnicode_READ(src_kind, src_data, cur);
  ------------------
  |  |  354|      0|    PyUnicode_READ(_Py_STATIC_CAST(int, kind), \
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  355|      0|                   _Py_STATIC_CAST(const void*, data), \
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  356|      0|                   (index))
  ------------------
13804|      0|            PyUnicode_WRITE(dest_kind, dest_data, i, ch);
  ------------------
  |  |  335|      0|    PyUnicode_WRITE(_Py_STATIC_CAST(int, kind), _Py_CAST(void*, data), \
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |                   PyUnicode_WRITE(_Py_STATIC_CAST(int, kind), _Py_CAST(void*, data), \
  |  |  ------------------
  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  336|      0|                    (index), _Py_STATIC_CAST(Py_UCS4, value))
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
13805|      0|        }
13806|      0|        assert(_PyUnicode_CheckConsistency(result, 1));
  ------------------
  |  Branch (13806:9): [True: 0, False: 0]
  ------------------
13807|      0|        return result;
13808|      0|    } else {
13809|      0|        PyErr_Format(PyExc_TypeError, "string indices must be integers, not '%.200s'",
13810|      0|                     Py_TYPE(item)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13811|       |        return NULL;
13812|      0|    }
13813|      2|}
unicodeobject.c:unicode_hash:
11670|  13.7k|{
11671|  13.7k|    Py_uhash_t x;  /* Unsigned for defined overflow behavior. */
11672|       |
11673|       |#ifdef Py_DEBUG
11674|       |    assert(_Py_HashSecret_Initialized);
11675|       |#endif
11676|  13.7k|    Py_hash_t hash = PyUnicode_HASH(self);
  ------------------
  |  |  157|  13.7k|#define PyUnicode_HASH PyUnstable_Unicode_GET_CACHED_HASH
  ------------------
11677|  13.7k|    if (hash != -1) {
  ------------------
  |  Branch (11677:9): [True: 4.28k, False: 9.43k]
  ------------------
11678|  4.28k|        return hash;
11679|  4.28k|    }
11680|  9.43k|    x = Py_HashBuffer(PyUnicode_DATA(self),
  ------------------
  |  |  284|  9.43k|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  9.43k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  9.43k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11681|  9.43k|                      PyUnicode_GET_LENGTH(self) * PyUnicode_KIND(self));
  ------------------
  |  |  299|  9.43k|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  9.43k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  9.43k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                                    PyUnicode_GET_LENGTH(self) * PyUnicode_KIND(self));
  ------------------
  |  |  258|  9.43k|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|  18.8k|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 9.43k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11682|       |
11683|      0|    PyUnicode_SET_HASH(self, x);
11684|  9.43k|    return x;
11685|  9.43k|}
unicodeobject.c:PyUnicode_SET_HASH:
  160|  9.43k|{
  161|  9.43k|    FT_ATOMIC_STORE_SSIZE_RELAXED(_PyASCIIObject_CAST(op)->hash, hash);
  ------------------
  |  |  194|  18.8k|#define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) value = new_value
  |  |  ------------------
  |  |  |  Branch (194:57): [True: 9.43k, False: 0]
  |  |  ------------------
  ------------------
  162|  9.43k|}
unicodeobject.c:unicode_encode_impl:
11533|      3|{
11534|      3|    return PyUnicode_AsEncodedString(self, encoding, errors);
11535|      3|}
unicodeobject.c:unicode_replace_impl:
12591|     15|{
12592|     15|    return replace(self, old, new, count);
12593|     15|}
unicodeobject.c:unicode_split_impl:
12847|      2|{
12848|      2|    if (sep == Py_None)
  ------------------
  |  |  616|      2|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (12848:9): [True: 0, False: 2]
  ------------------
12849|      0|        return split(self, NULL, maxsplit);
12850|      2|    if (PyUnicode_Check(sep))
  ------------------
  |  |  103|      2|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      2|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12851|      2|        return split(self, sep, maxsplit);
12852|       |
12853|      0|    PyErr_Format(PyExc_TypeError,
12854|      0|                 "must be str or None, not %.100s",
12855|      0|                 Py_TYPE(sep)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12856|       |    return NULL;
12857|      2|}
unicodeobject.c:unicode_join:
12216|     41|{
12217|     41|    return PyUnicode_Join(self, iterable);
12218|     41|}
unicodeobject.c:ascii_upper_or_lower:
 9728|      2|{
 9729|      2|    Py_ssize_t len = PyUnicode_GET_LENGTH(self);
  ------------------
  |  |  299|      2|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9730|      2|    const char *data = PyUnicode_DATA(self);
  ------------------
  |  |  284|      2|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9731|      2|    char *resdata;
 9732|      2|    PyObject *res;
 9733|       |
 9734|      2|    res = PyUnicode_New(len, 127);
 9735|      2|    if (res == NULL)
  ------------------
  |  Branch (9735:9): [True: 0, False: 2]
  ------------------
 9736|      0|        return NULL;
 9737|      2|    resdata = PyUnicode_DATA(res);
  ------------------
  |  |  284|      2|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9738|      2|    if (lower)
  ------------------
  |  Branch (9738:9): [True: 2, False: 0]
  ------------------
 9739|      2|        _Py_bytes_lower(resdata, data, len);
 9740|      0|    else
 9741|      0|        _Py_bytes_upper(resdata, data, len);
 9742|      2|    return res;
 9743|      2|}
unicodeobject.c:unicode_find_impl:
11637|      1|{
11638|      1|    Py_ssize_t result = any_find_slice(str, substr, start, end, 1);
11639|      1|    if (result < 0) {
  ------------------
  |  Branch (11639:9): [True: 0, False: 1]
  ------------------
11640|      0|        return -1;
11641|      0|    }
11642|      1|    return result;
11643|      1|}
unicodeobject.c:unicode_lower_impl:
12257|      2|{
12258|      2|    if (PyUnicode_IS_ASCII(self))
  ------------------
  |  |  227|      2|#define PyUnicode_IS_ASCII(op) PyUnicode_IS_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (227:32): [True: 2, False: 0]
  |  |  ------------------
  ------------------
12259|      2|        return ascii_upper_or_lower(self, 1);
12260|      0|    return case_operation(self, do_lower);
12261|      2|}
unicodeobject.c:do_argstrip:
12431|     75|{
12432|     75|    if (sep != Py_None) {
  ------------------
  |  |  616|     75|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (12432:9): [True: 75, False: 0]
  ------------------
12433|     75|        if (PyUnicode_Check(sep))
  ------------------
  |  |  103|     75|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     75|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 75, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
12434|     75|            return _PyUnicode_XStrip(self, striptype, sep);
12435|      0|        else {
12436|      0|            PyErr_Format(PyExc_TypeError,
12437|      0|                         "%s arg must be None or str",
12438|      0|                         STRIPNAME(striptype));
  ------------------
  |  |12270|      0|#define STRIPNAME(i) (stripfuncnames[i])
  ------------------
12439|      0|            return NULL;
12440|      0|        }
12441|     75|    }
12442|       |
12443|      0|    return do_strip(self, striptype);
12444|     75|}
unicodeobject.c:unicode_rfind_impl:
12756|      3|{
12757|      3|    Py_ssize_t result = any_find_slice(str, substr, start, end, -1);
12758|      3|    if (result < 0) {
  ------------------
  |  Branch (12758:9): [True: 0, False: 3]
  ------------------
12759|      0|        return -1;
12760|      0|    }
12761|      3|    return result;
12762|      3|}
unicodeobject.c:unicode_rstrip_impl:
12500|     75|{
12501|     75|    return do_argstrip(self, RIGHTSTRIP, chars);
  ------------------
  |  |12264|     75|#define RIGHTSTRIP 1
  ------------------
12502|     75|}
unicodeobject.c:unicode_rpartition:
13003|     60|{
13004|     60|    return PyUnicode_RPartition(self, sep);
13005|     60|}
unicodeobject.c:unicode_startswith_impl:
13327|     30|{
13328|     30|    if (PyTuple_Check(subobj)) {
  ------------------
  |  |   27|     30|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TUPLE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     30|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 4, False: 26]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13329|      4|        Py_ssize_t i;
13330|     28|        for (i = 0; i < PyTuple_GET_SIZE(subobj); i++) {
  ------------------
  |  |   27|     28|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     28|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     28|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13330:21): [True: 24, False: 4]
  ------------------
13331|     24|            PyObject *substring = PyTuple_GET_ITEM(subobj, i);
  ------------------
  |  |   29|     24|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|     24|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     24|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13331:35): [True: 24, False: 0]
  ------------------
13332|     24|            if (!PyUnicode_Check(substring)) {
  ------------------
  |  |  103|     24|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     24|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (13332:17): [True: 0, False: 24]
  ------------------
13333|      0|                PyErr_Format(PyExc_TypeError,
13334|      0|                             "tuple for startswith must only contain str, "
13335|      0|                             "not %.100s",
13336|      0|                             Py_TYPE(substring)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13337|      0|                return NULL;
13338|      0|            }
13339|     24|            int result = tailmatch(self, substring, start, end, -1);
13340|     24|            if (result < 0) {
  ------------------
  |  Branch (13340:17): [True: 0, False: 24]
  ------------------
13341|      0|                return NULL;
13342|      0|            }
13343|     24|            if (result) {
  ------------------
  |  Branch (13343:17): [True: 0, False: 24]
  ------------------
13344|      0|                Py_RETURN_TRUE;
  ------------------
  |  |   44|      0|#  define Py_RETURN_TRUE return Py_True
  |  |  ------------------
  |  |  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13345|      0|            }
13346|     24|        }
13347|       |        /* nothing matched */
13348|      4|        Py_RETURN_FALSE;
  ------------------
  |  |   45|      4|#  define Py_RETURN_FALSE return Py_False
  |  |  ------------------
  |  |  |  |   25|      4|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13349|      4|    }
13350|     26|    if (!PyUnicode_Check(subobj)) {
  ------------------
  |  |  103|     26|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     26|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (13350:9): [True: 0, False: 26]
  ------------------
13351|      0|        PyErr_Format(PyExc_TypeError,
13352|      0|                     "startswith first arg must be str or "
13353|      0|                     "a tuple of str, not %.100s", Py_TYPE(subobj)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13354|      0|        return NULL;
13355|      0|    }
13356|     26|    int result = tailmatch(self, subobj, start, end, -1);
13357|     26|    if (result < 0) {
  ------------------
  |  Branch (13357:9): [True: 0, False: 26]
  ------------------
13358|      0|        return NULL;
13359|      0|    }
13360|     26|    return PyBool_FromLong(result);
13361|     26|}
unicodeobject.c:unicode_endswith_impl:
13384|     19|{
13385|     19|    if (PyTuple_Check(subobj)) {
  ------------------
  |  |   27|     19|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TUPLE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     19|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 0, False: 19]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13386|      0|        Py_ssize_t i;
13387|      0|        for (i = 0; i < PyTuple_GET_SIZE(subobj); i++) {
  ------------------
  |  |   27|      0|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13387:21): [True: 0, False: 0]
  ------------------
13388|      0|            PyObject *substring = PyTuple_GET_ITEM(subobj, i);
  ------------------
  |  |   29|      0|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|      0|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13388:35): [True: 0, False: 0]
  ------------------
13389|      0|            if (!PyUnicode_Check(substring)) {
  ------------------
  |  |  103|      0|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (13389:17): [True: 0, False: 0]
  ------------------
13390|      0|                PyErr_Format(PyExc_TypeError,
13391|      0|                             "tuple for endswith must only contain str, "
13392|      0|                             "not %.100s",
13393|      0|                             Py_TYPE(substring)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13394|      0|                return NULL;
13395|      0|            }
13396|      0|            int result = tailmatch(self, substring, start, end, +1);
13397|      0|            if (result < 0) {
  ------------------
  |  Branch (13397:17): [True: 0, False: 0]
  ------------------
13398|      0|                return NULL;
13399|      0|            }
13400|      0|            if (result) {
  ------------------
  |  Branch (13400:17): [True: 0, False: 0]
  ------------------
13401|      0|                Py_RETURN_TRUE;
  ------------------
  |  |   44|      0|#  define Py_RETURN_TRUE return Py_True
  |  |  ------------------
  |  |  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13402|      0|            }
13403|      0|        }
13404|      0|        Py_RETURN_FALSE;
  ------------------
  |  |   45|      0|#  define Py_RETURN_FALSE return Py_False
  |  |  ------------------
  |  |  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13405|      0|    }
13406|     19|    if (!PyUnicode_Check(subobj)) {
  ------------------
  |  |  103|     19|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     19|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (13406:9): [True: 0, False: 19]
  ------------------
13407|      0|        PyErr_Format(PyExc_TypeError,
13408|      0|                     "endswith first arg must be str or "
13409|      0|                     "a tuple of str, not %.100s", Py_TYPE(subobj)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
13410|      0|        return NULL;
13411|      0|    }
13412|     19|    int result = tailmatch(self, subobj, start, end, +1);
13413|     19|    if (result < 0) {
  ------------------
  |  Branch (13413:9): [True: 0, False: 19]
  ------------------
13414|      0|        return NULL;
13415|      0|    }
13416|     19|    return PyBool_FromLong(result);
13417|     19|}
unicodeobject.c:unicode_isascii_impl:
11724|      1|{
11725|      1|    return PyBool_FromLong(PyUnicode_IS_ASCII(self));
  ------------------
  |  |  227|      1|#define PyUnicode_IS_ASCII(op) PyUnicode_IS_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
11726|      1|}
unicodeobject.c:unicode_iteritem:
13995|      4|{
13996|      4|    if (index >= PyUnicode_GET_LENGTH(obj)) {
  ------------------
  |  |  299|      4|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (13996:9): [True: 2, False: 2]
  ------------------
13997|      2|        return (_PyObjectIndexPair) { .object = NULL, .index = index };
13998|      2|    }
13999|      2|    const void *data = PyUnicode_DATA(obj);
  ------------------
  |  |  284|      2|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
14000|      2|    int kind = PyUnicode_KIND(obj);
  ------------------
  |  |  258|      2|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|      4|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
14001|      2|    Py_UCS4 ch = PyUnicode_READ(kind, data, index);
  ------------------
  |  |  354|      2|    PyUnicode_READ(_Py_STATIC_CAST(int, kind), \
  |  |  ------------------
  |  |  |  |   34|      2|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  355|      2|                   _Py_STATIC_CAST(const void*, data), \
  |  |  ------------------
  |  |  |  |   34|      2|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  356|      2|                   (index))
  ------------------
14002|      2|    PyObject *result = unicode_char(ch);
14003|      2|    index = (result == NULL) ? -1 : index + 1;
  ------------------
  |  Branch (14003:13): [True: 0, False: 2]
  ------------------
14004|      2|    return (_PyObjectIndexPair) { .object = result, .index = index };
14005|      2|}
unicodeobject.c:_init_global_state:
14079|      1|{
14080|      1|    static int initialized = 0;
14081|      1|    if (initialized) {
  ------------------
  |  Branch (14081:9): [True: 0, False: 1]
  ------------------
14082|      0|        return;
14083|      0|    }
14084|      1|    initialized = 1;
14085|       |
14086|       |    /* initialize the linebreak bloom filter */
14087|      1|    const Py_UCS2 linebreak[] = {
14088|      1|        0x000A, /* LINE FEED */
14089|      1|        0x000D, /* CARRIAGE RETURN */
14090|      1|        0x001C, /* FILE SEPARATOR */
14091|      1|        0x001D, /* GROUP SEPARATOR */
14092|      1|        0x001E, /* RECORD SEPARATOR */
14093|      1|        0x0085, /* NEXT LINE */
14094|      1|        0x2028, /* LINE SEPARATOR */
14095|      1|        0x2029, /* PARAGRAPH SEPARATOR */
14096|      1|    };
14097|      1|    bloom_linebreak = make_bloom_mask(
14098|      1|        PyUnicode_2BYTE_KIND, linebreak,
14099|      1|        Py_ARRAY_LENGTH(linebreak));
  ------------------
  |  |  196|      1|    (sizeof(array) / sizeof((array)[0]))
  ------------------
14100|      1|}
unicodeobject.c:init_global_interned_strings:
  324|      1|{
  325|      1|    assert(INTERNED_STRINGS == NULL);
  ------------------
  |  Branch (325:5): [True: 1, False: 0]
  ------------------
  326|      1|    _Py_hashtable_allocator_t hashtable_alloc = {PyMem_RawMalloc, PyMem_RawFree};
  327|       |
  328|      1|    INTERNED_STRINGS = _Py_hashtable_new_full(
  ------------------
  |  |  219|      1|#define INTERNED_STRINGS _PyRuntime.cached_objects.interned_strings
  ------------------
  329|      1|        hashtable_unicode_hash,
  330|      1|        hashtable_unicode_compare,
  331|       |        // Objects stored here are immortal and statically allocated,
  332|       |        // so we don't need key_destroy_func & value_destroy_func:
  333|      1|        NULL,
  334|      1|        NULL,
  335|      1|        &hashtable_alloc
  336|      1|    );
  337|      1|    if (INTERNED_STRINGS == NULL) {
  ------------------
  |  |  219|      1|#define INTERNED_STRINGS _PyRuntime.cached_objects.interned_strings
  ------------------
  |  Branch (337:9): [True: 0, False: 1]
  ------------------
  338|      0|        PyErr_Clear();
  339|      0|        return _PyStatus_ERR("failed to create global interned dict");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
  340|      0|    }
  341|       |
  342|       |    /* Intern statically allocated string identifiers, deepfreeze strings,
  343|       |        * and one-byte latin-1 strings.
  344|       |        * This must be done before any module initialization so that statically
  345|       |        * allocated string identifiers are used instead of heap allocated strings.
  346|       |        * Deepfreeze uses the interned identifiers if present to save space
  347|       |        * else generates them and they are interned to speed up dict lookups.
  348|       |    */
  349|      1|    _PyUnicode_InitStaticStrings(interp);
  350|       |
  351|    257|    for (int i = 0; i < 256; i++) {
  ------------------
  |  Branch (351:21): [True: 256, False: 1]
  ------------------
  352|    256|        PyObject *s = LATIN1(i);
  ------------------
  |  |  184|    256|#define LATIN1 _Py_LATIN1_CHR
  |  |  ------------------
  |  |  |  |  921|    256|    ((CH) < 128 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (921:6): [True: 128, False: 128]
  |  |  |  |  ------------------
  |  |  |  |  922|    256|     ? (PyObject*)&_Py_SINGLETON(strings).ascii[(CH)] \
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|    128|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|    128|    _PyRuntime.static_objects.NAME
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  923|    256|     : (PyObject*)&_Py_SINGLETON(strings).latin1[(CH) - 128])
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|    128|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|    128|    _PyRuntime.static_objects.NAME
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  353|    256|        _PyUnicode_InternStatic(interp, &s);
  354|    256|        assert(s == LATIN1(i));
  ------------------
  |  Branch (354:9): [True: 128, False: 128]
  |  Branch (354:9): [True: 256, False: 0]
  ------------------
  355|    256|    }
  356|       |#ifdef Py_DEBUG
  357|       |    assert(_PyUnicode_CheckConsistency(&_Py_STR(empty), 1));
  358|       |
  359|       |    for (int i = 0; i < 256; i++) {
  360|       |        assert(_PyUnicode_CheckConsistency(LATIN1(i), 1));
  361|       |    }
  362|       |#endif
  363|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
  364|      1|}
unicodeobject.c:hashtable_unicode_hash:
  255|  12.7k|{
  256|  12.7k|    return unicode_hash((PyObject *)key);
  257|  12.7k|}
unicodeobject.c:hashtable_unicode_compare:
  261|  2.74k|{
  262|  2.74k|    PyObject *obj1 = (PyObject *)key1;
  263|  2.74k|    PyObject *obj2 = (PyObject *)key2;
  264|  2.74k|    if (obj1 != NULL && obj2 != NULL) {
  ------------------
  |  Branch (264:9): [True: 2.74k, False: 0]
  |  Branch (264:25): [True: 2.74k, False: 0]
  ------------------
  265|  2.74k|        return unicode_eq(obj1, obj2);
  266|  2.74k|    }
  267|      0|    else {
  268|      0|        return obj1 == obj2;
  269|      0|    }
  270|  2.74k|}
unicodeobject.c:init_interned_dict:
  291|      1|{
  292|      1|    assert(get_interned_dict(interp) == NULL);
  ------------------
  |  Branch (292:5): [True: 1, False: 0]
  ------------------
  293|      1|    PyObject *interned;
  294|      1|    if (has_shared_intern_dict(interp)) {
  ------------------
  |  Branch (294:9): [True: 0, False: 1]
  ------------------
  295|      0|        interned = get_interned_dict(_PyInterpreterState_Main());
  296|      0|        Py_INCREF(interned);
  ------------------
  |  |  310|      0|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  297|      0|    }
  298|      1|    else {
  299|      1|        interned = PyDict_New();
  300|      1|        if (interned == NULL) {
  ------------------
  |  Branch (300:13): [True: 0, False: 1]
  ------------------
  301|      0|            return -1;
  302|      0|        }
  303|      1|    }
  304|      1|    _Py_INTERP_CACHED_OBJECT(interp, interned_strings) = interned;
  ------------------
  |  |   22|      1|    (interp)->cached_objects.NAME
  ------------------
  305|      1|    return 0;
  306|      1|}
unicodeobject.c:intern_static:
14152|  1.12k|{
14153|       |    // Note that this steals a reference to `s`, but in many cases that
14154|       |    // stolen ref is returned, requiring no decref/incref.
14155|       |
14156|  1.12k|    assert(s != NULL);
  ------------------
  |  Branch (14156:5): [True: 1.12k, False: 0]
  ------------------
14157|  1.12k|    assert(_PyUnicode_CHECK(s));
  ------------------
  |  Branch (14157:5): [True: 1.12k, False: 0]
  ------------------
14158|  1.12k|    assert(_PyUnicode_STATE(s).statically_allocated);
  ------------------
  |  Branch (14158:5): [True: 1.12k, False: 0]
  |  Branch (14158:5): [True: 1.12k, False: 0]
  ------------------
14159|  1.12k|    assert(!PyUnicode_CHECK_INTERNED(s));
  ------------------
  |  Branch (14159:5): [True: 1.12k, False: 0]
  ------------------
14160|       |
14161|       |#ifdef Py_DEBUG
14162|       |    /* We must not add process-global interned string if there's already a
14163|       |     * per-interpreter interned_dict, which might contain duplicates.
14164|       |     */
14165|       |    PyObject *interned = get_interned_dict(interp);
14166|       |    assert(interned == NULL);
14167|       |#endif
14168|       |
14169|       |    /* Look in the global cache first. */
14170|  1.12k|    PyObject *r = (PyObject *)_Py_hashtable_get(INTERNED_STRINGS, s);
  ------------------
  |  |  219|  1.12k|#define INTERNED_STRINGS _PyRuntime.cached_objects.interned_strings
  ------------------
14171|       |    /* We should only init each string once */
14172|  1.12k|    assert(r == NULL);
  ------------------
  |  Branch (14172:5): [True: 1.12k, False: 0]
  ------------------
14173|       |    /* but just in case (for the non-debug build), handle this */
14174|  1.12k|    if (r != NULL && r != s) {
  ------------------
  |  Branch (14174:9): [True: 0, False: 1.12k]
  |  Branch (14174:22): [True: 0, False: 0]
  ------------------
14175|      0|        assert(_PyUnicode_STATE(r).interned == SSTATE_INTERNED_IMMORTAL_STATIC);
  ------------------
  |  Branch (14175:9): [True: 0, False: 0]
  |  Branch (14175:9): [True: 0, False: 0]
  ------------------
14176|      0|        assert(_PyUnicode_CHECK(r));
  ------------------
  |  Branch (14176:9): [True: 0, False: 0]
  ------------------
14177|      0|        Py_DECREF(s);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
14178|      0|        return Py_NewRef(r);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
14179|      0|    }
14180|       |
14181|  1.12k|    if (_Py_hashtable_set(INTERNED_STRINGS, s, s) < -1) {
  ------------------
  |  |  219|  1.12k|#define INTERNED_STRINGS _PyRuntime.cached_objects.interned_strings
  ------------------
  |  Branch (14181:9): [True: 0, False: 1.12k]
  ------------------
14182|      0|        Py_FatalError("failed to intern static string");
  ------------------
  |  |  133|      0|#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))
  ------------------
14183|      0|    }
14184|       |
14185|  1.12k|    _PyUnicode_STATE(s).interned = SSTATE_INTERNED_IMMORTAL_STATIC;
  ------------------
  |  |  153|  1.12k|    (_PyASCIIObject_CAST(op)->state)
  |  |  ------------------
  |  |  |  |  186|  1.12k|    (assert(PyUnicode_Check(op)), \
  |  |  |  |  187|  1.12k|     _Py_CAST(PyASCIIObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.12k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  _PyUnicode_STATE(s).interned = SSTATE_INTERNED_IMMORTAL_STATIC;
  ------------------
  |  |  204|  1.12k|#define SSTATE_INTERNED_IMMORTAL_STATIC 3
  ------------------
  |  Branch (14185:5): [True: 1.12k, False: 0]
  ------------------
14186|      0|    return s;
14187|  1.12k|}
unicodeobject.c:intern_common:
14234|  19.2k|{
14235|       |    // Note that this steals a reference to `s`, but in many cases that
14236|       |    // stolen ref is returned, requiring no decref/incref.
14237|       |
14238|       |#ifdef Py_DEBUG
14239|       |    assert(s != NULL);
14240|       |    assert(_PyUnicode_CHECK(s));
14241|       |#else
14242|  19.2k|    if (s == NULL || !PyUnicode_Check(s)) {
  ------------------
  |  |  103|  19.2k|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|  19.2k|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (14242:9): [True: 0, False: 19.2k]
  |  Branch (14242:22): [True: 0, False: 19.2k]
  ------------------
14243|      0|        return s;
14244|      0|    }
14245|  19.2k|#endif
14246|       |
14247|       |    /* If it's a subclass, we don't really know what putting
14248|       |       it in the interned dict might do. */
14249|  19.2k|    if (!PyUnicode_CheckExact(s)) {
  ------------------
  |  |  104|  19.2k|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  ------------------
  |  |  |  |  215|  19.2k|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|  19.2k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|  19.2k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (14249:9): [True: 0, False: 19.2k]
  ------------------
14250|      0|        return s;
14251|      0|    }
14252|       |
14253|       |    /* Is it already interned? */
14254|  19.2k|    switch (PyUnicode_CHECK_INTERNED(s)) {
  ------------------
  |  |  214|  19.2k|#define PyUnicode_CHECK_INTERNED(op) PyUnicode_CHECK_INTERNED(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  19.2k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  19.2k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
14255|  7.37k|        case SSTATE_NOT_INTERNED:
  ------------------
  |  |  201|  7.37k|#define SSTATE_NOT_INTERNED 0
  ------------------
  |  Branch (14255:9): [True: 7.37k, False: 11.8k]
  ------------------
14256|       |            // no, go on
14257|  7.37k|            break;
14258|    374|        case SSTATE_INTERNED_MORTAL:
  ------------------
  |  |  202|    374|#define SSTATE_INTERNED_MORTAL 1
  ------------------
  |  Branch (14258:9): [True: 374, False: 18.8k]
  ------------------
14259|    374|#ifndef Py_GIL_DISABLED
14260|       |            // yes but we might need to make it immortal
14261|    374|            if (immortalize) {
  ------------------
  |  Branch (14261:17): [True: 0, False: 374]
  ------------------
14262|      0|                immortalize_interned(s);
14263|      0|            }
14264|    374|            return s;
14265|       |#else
14266|       |            // not fully interned yet; fall through to the locking path
14267|       |            break;
14268|       |#endif
14269|  11.5k|        default:
  ------------------
  |  Branch (14269:9): [True: 11.5k, False: 7.74k]
  ------------------
14270|       |            // all done
14271|  11.5k|            return s;
14272|  19.2k|    }
14273|       |
14274|       |    /* Statically allocated strings must be already interned. */
14275|  19.2k|    assert(!_PyUnicode_STATE(s).statically_allocated);
  ------------------
  |  Branch (14275:5): [True: 7.37k, False: 0]
  |  Branch (14275:5): [True: 7.37k, False: 0]
  ------------------
14276|       |
14277|       |#if Py_GIL_DISABLED
14278|       |    /* In the free-threaded build, all interned strings are immortal */
14279|       |    immortalize = 1;
14280|       |#endif
14281|       |
14282|       |    /* If it's already immortal, intern it as such */
14283|  7.37k|    if (_Py_IsImmortal(s)) {
  ------------------
  |  |  137|  7.37k|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  7.37k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  7.37k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 0, False: 7.37k]
  |  |  ------------------
  ------------------
14284|      0|        immortalize = 1;
14285|      0|    }
14286|       |
14287|       |    /* if it's a short string, get the singleton */
14288|  7.37k|    if (PyUnicode_GET_LENGTH(s) == 1 &&
  ------------------
  |  |  299|  7.37k|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  7.37k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  7.37k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (14288:9): [True: 0, False: 7.37k]
  ------------------
14289|      0|                PyUnicode_KIND(s) == PyUnicode_1BYTE_KIND) {
  ------------------
  |  |  258|      0|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|      0|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (14289:17): [True: 0, False: 0]
  ------------------
14290|      0|        PyObject *r = LATIN1(*(unsigned char*)PyUnicode_DATA(s));
  ------------------
  |  |  184|      0|#define LATIN1 _Py_LATIN1_CHR
  |  |  ------------------
  |  |  |  |  921|      0|    ((CH) < 128 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (921:6): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  922|      0|     ? (PyObject*)&_Py_SINGLETON(strings).ascii[(CH)] \
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  923|      0|     : (PyObject*)&_Py_SINGLETON(strings).latin1[(CH) - 128])
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
14291|      0|        assert(PyUnicode_CHECK_INTERNED(r));
  ------------------
  |  Branch (14291:9): [True: 0, False: 0]
  ------------------
14292|      0|        Py_DECREF(s);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
14293|      0|        return r;
14294|      0|    }
14295|       |#ifdef Py_DEBUG
14296|       |    assert(!unicode_is_singleton(s));
14297|       |#endif
14298|       |
14299|       |    /* Look in the global cache now. */
14300|  7.37k|    {
14301|  7.37k|        PyObject *r = (PyObject *)_Py_hashtable_get(INTERNED_STRINGS, s);
  ------------------
  |  |  219|  7.37k|#define INTERNED_STRINGS _PyRuntime.cached_objects.interned_strings
  ------------------
14302|  7.37k|        if (r != NULL) {
  ------------------
  |  Branch (14302:13): [True: 2.74k, False: 4.63k]
  ------------------
14303|  2.74k|            assert(_PyUnicode_STATE(r).statically_allocated);
  ------------------
  |  Branch (14303:13): [True: 2.74k, False: 0]
  |  Branch (14303:13): [True: 2.74k, False: 0]
  ------------------
14304|  2.74k|            assert(r != s);  // r must be statically_allocated; s is not
  ------------------
  |  Branch (14304:13): [True: 2.74k, False: 0]
  ------------------
14305|  2.74k|            Py_DECREF(s);
  ------------------
  |  |  430|  2.74k|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  2.74k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.74k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
14306|  2.74k|            return Py_NewRef(r);
  ------------------
  |  |  550|  2.74k|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|  2.74k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.74k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
14307|  2.74k|        }
14308|  7.37k|    }
14309|       |
14310|       |    /* Do a setdefault on the per-interpreter cache. */
14311|  4.63k|    PyObject *interned = get_interned_dict(interp);
14312|  4.63k|    assert(interned != NULL);
  ------------------
  |  Branch (14312:5): [True: 4.63k, False: 0]
  ------------------
14313|       |#ifdef Py_GIL_DISABLED
14314|       |#  define INTERN_MUTEX &_Py_INTERP_CACHED_OBJECT(interp, interned_mutex)
14315|       |    // Lock-free fast path: check if there's already an interned copy that
14316|       |    // is in its final immortal state.
14317|       |    PyObject *r;
14318|       |    int res = PyDict_GetItemRef(interned, s, &r);
14319|       |    if (res < 0) {
14320|       |        PyErr_Clear();
14321|       |        return s;
14322|       |    }
14323|       |    if (res > 0) {
14324|       |        unsigned int state = _Py_atomic_load_uint8(&_PyUnicode_STATE(r).interned);
14325|       |        if (state == SSTATE_INTERNED_IMMORTAL) {
14326|       |            Py_DECREF(s);
14327|       |            return r;
14328|       |        }
14329|       |        // Not yet fully interned; fall through to the locking path.
14330|       |        Py_DECREF(r);
14331|       |    }
14332|       |#endif
14333|       |
14334|       |#ifdef Py_GIL_DISABLED
14335|       |    // Immortalization writes to the refcount fields non-atomically. That
14336|       |    // races with Py_INCREF / Py_DECREF on the thread that owns `s`. If we
14337|       |    // don't own it (and its refcount hasn't been merged), intern a copy
14338|       |    // we own instead.
14339|       |    if (!can_immortalize_safely(s)) {
14340|       |        PyObject *copy = _PyUnicode_Copy(s);
14341|       |        if (copy == NULL) {
14342|       |            PyErr_Clear();
14343|       |            return s;
14344|       |        }
14345|       |        Py_DECREF(s);
14346|       |        s = copy;
14347|       |    }
14348|       |#endif
14349|       |
14350|  4.63k|    FT_MUTEX_LOCK(INTERN_MUTEX);
  ------------------
  |  |  204|  4.63k|#define FT_MUTEX_LOCK(lock) do {} while (0)
  |  |  ------------------
  |  |  |  Branch (204:42): [Folded, False: 4.63k]
  |  |  ------------------
  ------------------
14351|  4.63k|    PyObject *t;
14352|  4.63k|    {
14353|  4.63k|        int res = PyDict_SetDefaultRef(interned, s, s, &t);
14354|  4.63k|        if (res < 0) {
  ------------------
  |  Branch (14354:13): [True: 0, False: 4.63k]
  ------------------
14355|      0|            PyErr_Clear();
14356|      0|            FT_MUTEX_UNLOCK(INTERN_MUTEX);
  ------------------
  |  |  206|      0|#define FT_MUTEX_UNLOCK(lock) do {} while (0)
  |  |  ------------------
  |  |  |  Branch (206:44): [Folded, False: 0]
  |  |  ------------------
  ------------------
14357|      0|            return s;
14358|      0|        }
14359|  4.63k|        else if (res == 1) {
  ------------------
  |  Branch (14359:18): [True: 1.15k, False: 3.47k]
  ------------------
14360|       |            // value was already present (not inserted)
14361|  1.15k|            Py_DECREF(s);
  ------------------
  |  |  430|  1.15k|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  1.15k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.15k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
14362|  1.15k|            if (immortalize &&
  ------------------
  |  Branch (14362:17): [True: 892, False: 262]
  ------------------
14363|    892|                    PyUnicode_CHECK_INTERNED(t) == SSTATE_INTERNED_MORTAL) {
  ------------------
  |  |  214|    892|#define PyUnicode_CHECK_INTERNED(op) PyUnicode_CHECK_INTERNED(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    892|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    892|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                                  PyUnicode_CHECK_INTERNED(t) == SSTATE_INTERNED_MORTAL) {
  ------------------
  |  |  202|    892|#define SSTATE_INTERNED_MORTAL 1
  ------------------
  |  Branch (14363:21): [True: 136, False: 756]
  ------------------
14364|    136|                immortalize_interned(t);
14365|    136|            }
14366|  1.15k|            FT_MUTEX_UNLOCK(INTERN_MUTEX);
  ------------------
  |  |  206|  1.15k|#define FT_MUTEX_UNLOCK(lock) do {} while (0)
  |  |  ------------------
  |  |  |  Branch (206:44): [Folded, False: 1.15k]
  |  |  ------------------
  ------------------
14367|  1.15k|            return t;
14368|  1.15k|        }
14369|  3.47k|        else {
14370|       |            // value was newly inserted
14371|  3.47k|            assert (s == t);
  ------------------
  |  Branch (14371:13): [True: 3.47k, False: 0]
  ------------------
14372|  3.47k|            Py_DECREF(t);
  ------------------
  |  |  430|  3.47k|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  3.47k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  3.47k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
14373|  3.47k|        }
14374|  4.63k|    }
14375|       |
14376|       |    /* NOT_INTERNED -> INTERNED_MORTAL */
14377|       |
14378|  4.63k|    assert(_PyUnicode_STATE(s).interned == SSTATE_NOT_INTERNED);
  ------------------
  |  Branch (14378:5): [True: 3.47k, False: 0]
  |  Branch (14378:5): [True: 3.47k, False: 0]
  ------------------
14379|       |
14380|  3.47k|    if (!_Py_IsImmortal(s)) {
  ------------------
  |  |  137|  3.47k|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  3.47k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  3.47k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (14380:9): [True: 3.47k, False: 0]
  ------------------
14381|       |        /* The two references in interned dict (key and value) are not counted.
14382|       |        unicode_dealloc() and _PyUnicode_ClearInterned() take care of this. */
14383|  3.47k|        Py_DECREF(s);
  ------------------
  |  |  430|  3.47k|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  3.47k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  3.47k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
14384|  3.47k|        Py_DECREF(s);
  ------------------
  |  |  430|  3.47k|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  3.47k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  3.47k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
14385|  3.47k|    }
14386|  3.47k|    FT_ATOMIC_STORE_UINT8(_PyUnicode_STATE(s).interned, SSTATE_INTERNED_MORTAL);
  ------------------
  |  |  155|  6.95k|#define FT_ATOMIC_STORE_UINT8(value, new_value) value = new_value
  |  |  ------------------
  |  |  |  Branch (155:49): [True: 3.47k, False: 0]
  |  |  ------------------
  ------------------
14387|       |
14388|       |    /* INTERNED_MORTAL -> INTERNED_IMMORTAL (if needed) */
14389|       |
14390|       |#ifdef Py_DEBUG
14391|       |    if (_Py_IsImmortal(s)) {
14392|       |        assert(immortalize);
14393|       |    }
14394|       |#endif
14395|  3.47k|    if (immortalize) {
  ------------------
  |  Branch (14395:9): [True: 2.74k, False: 729]
  ------------------
14396|  2.74k|        immortalize_interned(s);
14397|  2.74k|    }
14398|       |
14399|  3.47k|    FT_MUTEX_UNLOCK(INTERN_MUTEX);
  ------------------
  |  |  206|  3.47k|#define FT_MUTEX_UNLOCK(lock) do {} while (0)
  |  |  ------------------
  |  |  |  Branch (206:44): [Folded, False: 3.47k]
  |  |  ------------------
  ------------------
14400|  3.47k|    return s;
14401|  3.47k|}
unicodeobject.c:immortalize_interned:
14201|  2.88k|{
14202|  2.88k|    assert(PyUnicode_CHECK_INTERNED(s) == SSTATE_INTERNED_MORTAL);
  ------------------
  |  Branch (14202:5): [True: 2.88k, False: 0]
  ------------------
14203|  2.88k|    assert(!_Py_IsImmortal(s));
  ------------------
  |  Branch (14203:5): [True: 2.88k, False: 0]
  ------------------
14204|       |#ifdef Py_REF_DEBUG
14205|       |    /* The reference count value should be excluded from the RefTotal.
14206|       |       The decrements to these objects will not be registered so they
14207|       |       need to be accounted for in here. */
14208|       |    for (Py_ssize_t i = 0; i < Py_REFCNT(s); i++) {
14209|       |        _Py_DecRefTotal(_PyThreadState_GET());
14210|       |    }
14211|       |#endif
14212|  2.88k|    _Py_SetImmortal(s);
14213|       |    // The switch to SSTATE_INTERNED_IMMORTAL must be the last thing done here
14214|       |    // to synchronize with the check in intern_common() that avoids locking if
14215|       |    // the string is already immortal.
14216|  2.88k|    FT_ATOMIC_STORE_UINT8(_PyUnicode_STATE(s).interned, SSTATE_INTERNED_IMMORTAL);
  ------------------
  |  |  155|  5.77k|#define FT_ATOMIC_STORE_UINT8(value, new_value) value = new_value
  |  |  ------------------
  |  |  |  Branch (155:49): [True: 2.88k, False: 0]
  |  |  ------------------
  ------------------
14217|  2.88k|}
unicodeobject.c:has_shared_intern_dict:
  284|      1|{
  285|      1|    PyInterpreterState *main_interp = _PyInterpreterState_Main();
  286|      1|    return interp != main_interp  && interp->feature_flags & Py_RTFLAGS_USE_MAIN_OBMALLOC;
  ------------------
  |  |   79|      1|#define Py_RTFLAGS_USE_MAIN_OBMALLOC (1UL << 5)
  ------------------
  |  Branch (286:12): [True: 0, False: 1]
  |  Branch (286:38): [True: 0, False: 0]
  ------------------
  287|      1|}
unicodeobject.c:unicodeiter_dealloc:
14553|      1|{
14554|      1|    unicodeiterobject *it = (unicodeiterobject *)op;
14555|      1|    _PyObject_GC_UNTRACK(it);
  ------------------
  |  |  515|      1|        _PyObject_GC_UNTRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
14556|      1|    Py_XDECREF(it->it_seq);
  ------------------
  |  |  524|      1|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
14557|      1|    PyObject_GC_Del(it);
14558|      1|}
unicodeobject.c:unicode_iter:
14726|      1|{
14727|      1|    unicodeiterobject *it;
14728|       |
14729|      1|    if (!PyUnicode_Check(seq)) {
  ------------------
  |  |  103|      1|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      1|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (14729:9): [True: 0, False: 1]
  ------------------
14730|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
14731|      0|        return NULL;
14732|      0|    }
14733|      1|    if (PyUnicode_IS_COMPACT_ASCII(seq)) {
  ------------------
  |  |  241|      1|#define PyUnicode_IS_COMPACT_ASCII(op) PyUnicode_IS_COMPACT_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (241:40): [True: 1, False: 0]
  |  |  ------------------
  ------------------
14734|      1|        it = PyObject_GC_New(unicodeiterobject, &_PyUnicodeASCIIIter_Type);
  ------------------
  |  |  181|      1|    _Py_CAST(type*, _PyObject_GC_New(typeobj))
  |  |  ------------------
  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
14735|      1|    }
14736|      0|    else {
14737|      0|        it = PyObject_GC_New(unicodeiterobject, &PyUnicodeIter_Type);
  ------------------
  |  |  181|      0|    _Py_CAST(type*, _PyObject_GC_New(typeobj))
  |  |  ------------------
  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
14738|      0|    }
14739|      1|    if (it == NULL)
  ------------------
  |  Branch (14739:9): [True: 0, False: 1]
  ------------------
14740|      0|        return NULL;
14741|      1|    it->it_index = 0;
14742|      1|    it->it_seq = Py_NewRef(seq);
  ------------------
  |  |  550|      1|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
14743|      1|    _PyObject_GC_TRACK(it);
  ------------------
  |  |  513|      1|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
14744|      1|    return (PyObject *)it;
14745|      1|}
unicodeobject.c:init_fs_encoding:
14883|      1|{
14884|      1|    PyInterpreterState *interp = tstate->interp;
14885|       |
14886|       |    /* Update the filesystem encoding to the normalized Python codec name.
14887|       |       For example, replace "ANSI_X3.4-1968" (locale encoding) with "ascii"
14888|       |       (Python codec name). */
14889|      1|    PyConfig *config = (PyConfig*)_PyInterpreterState_GetConfig(interp);
14890|      1|    if (config_get_codec_name(&config->filesystem_encoding) < 0) {
  ------------------
  |  Branch (14890:9): [True: 0, False: 1]
  ------------------
14891|      0|        _Py_DumpPathConfig(tstate);
14892|      0|        return _PyStatus_ERR("failed to get the Python codec "
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
14893|      0|                             "of the filesystem encoding");
14894|      0|    }
14895|       |
14896|      1|    if (init_fs_codec(interp) < 0) {
  ------------------
  |  Branch (14896:9): [True: 0, False: 1]
  ------------------
14897|      0|        return _PyStatus_ERR("cannot initialize filesystem codec");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
14898|      0|    }
14899|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
14900|      1|}
unicodeobject.c:config_get_codec_name:
14766|      2|{
14767|      2|    char *encoding;
14768|      2|    if (encode_wstr_utf8(*config_encoding, &encoding, "stdio_encoding") < 0) {
  ------------------
  |  Branch (14768:9): [True: 0, False: 2]
  ------------------
14769|      0|        return -1;
14770|      0|    }
14771|       |
14772|      2|    PyObject *name_obj = NULL;
14773|      2|    PyObject *codec = _PyCodec_Lookup(encoding);
14774|      2|    PyMem_RawFree(encoding);
14775|       |
14776|      2|    if (!codec)
  ------------------
  |  Branch (14776:9): [True: 0, False: 2]
  ------------------
14777|      0|        goto error;
14778|       |
14779|      2|    name_obj = PyObject_GetAttrString(codec, "name");
14780|      2|    Py_CLEAR(codec);
  ------------------
  |  |  484|      2|    do { \
  |  |  485|      2|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      2|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      2|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      2|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      2|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 2, False: 0]
  |  |  ------------------
  |  |  488|      2|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      2|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      2|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      2|        } \
  |  |  491|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
14781|      2|    if (!name_obj) {
  ------------------
  |  Branch (14781:9): [True: 0, False: 2]
  ------------------
14782|      0|        goto error;
14783|      0|    }
14784|       |
14785|      2|    wchar_t *wname = PyUnicode_AsWideCharString(name_obj, NULL);
14786|      2|    Py_DECREF(name_obj);
  ------------------
  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
14787|      2|    if (wname == NULL) {
  ------------------
  |  Branch (14787:9): [True: 0, False: 2]
  ------------------
14788|      0|        goto error;
14789|      0|    }
14790|       |
14791|      2|    wchar_t *raw_wname = _PyMem_RawWcsdup(wname);
14792|      2|    if (raw_wname == NULL) {
  ------------------
  |  Branch (14792:9): [True: 0, False: 2]
  ------------------
14793|      0|        PyMem_Free(wname);
14794|      0|        PyErr_NoMemory();
14795|      0|        goto error;
14796|      0|    }
14797|       |
14798|      2|    PyMem_RawFree(*config_encoding);
14799|      2|    *config_encoding = raw_wname;
14800|       |
14801|      2|    PyMem_Free(wname);
14802|      2|    return 0;
14803|       |
14804|      0|error:
14805|      0|    Py_XDECREF(codec);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
14806|      0|    Py_XDECREF(name_obj);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
14807|      0|    return -1;
14808|      2|}
unicodeobject.c:encode_wstr_utf8:
14749|      4|{
14750|      4|    int res;
14751|      4|    res = _Py_EncodeUTF8Ex(wstr, str, NULL, NULL, 1, _Py_ERROR_STRICT);
14752|      4|    if (res == -2) {
  ------------------
  |  Branch (14752:9): [True: 0, False: 4]
  ------------------
14753|      0|        PyErr_Format(PyExc_RuntimeError, "cannot encode %s", name);
14754|      0|        return -1;
14755|      0|    }
14756|      4|    if (res < 0) {
  ------------------
  |  Branch (14756:9): [True: 0, False: 4]
  ------------------
14757|      0|        PyErr_NoMemory();
14758|      0|        return -1;
14759|      0|    }
14760|      4|    return 0;
14761|      4|}
unicodeobject.c:init_fs_codec:
14826|      1|{
14827|      1|    const PyConfig *config = _PyInterpreterState_GetConfig(interp);
14828|       |
14829|      1|    _Py_error_handler error_handler;
14830|      1|    error_handler = get_error_handler_wide(config->filesystem_errors);
14831|      1|    if (error_handler == _Py_ERROR_UNKNOWN) {
  ------------------
  |  Branch (14831:9): [True: 0, False: 1]
  ------------------
14832|      0|        PyErr_SetString(PyExc_RuntimeError, "unknown filesystem error handler");
14833|      0|        return -1;
14834|      0|    }
14835|       |
14836|      1|    char *encoding, *errors;
14837|      1|    if (encode_wstr_utf8(config->filesystem_encoding,
  ------------------
  |  Branch (14837:9): [True: 0, False: 1]
  ------------------
14838|      1|                         &encoding,
14839|      1|                         "filesystem_encoding") < 0) {
14840|      0|        return -1;
14841|      0|    }
14842|       |
14843|      1|    if (encode_wstr_utf8(config->filesystem_errors,
  ------------------
  |  Branch (14843:9): [True: 0, False: 1]
  ------------------
14844|      1|                         &errors,
14845|      1|                         "filesystem_errors") < 0) {
14846|      0|        PyMem_RawFree(encoding);
14847|      0|        return -1;
14848|      0|    }
14849|       |
14850|      1|    struct _Py_unicode_fs_codec *fs_codec = &interp->unicode.fs_codec;
14851|      1|    PyMem_RawFree(fs_codec->encoding);
14852|      1|    fs_codec->encoding = encoding;
14853|       |    /* encoding has been normalized by init_fs_encoding() */
14854|      1|    fs_codec->utf8 = (strcmp(encoding, "utf-8") == 0);
14855|      1|    PyMem_RawFree(fs_codec->errors);
14856|      1|    fs_codec->errors = errors;
14857|      1|    fs_codec->error_handler = error_handler;
14858|       |
14859|       |#ifdef _Py_FORCE_UTF8_FS_ENCODING
14860|       |    assert(fs_codec->utf8 == 1);
14861|       |#endif
14862|       |
14863|       |    /* At this point, PyUnicode_EncodeFSDefault() and
14864|       |       PyUnicode_DecodeFSDefault() can now use the Python codec rather than
14865|       |       the C implementation of the filesystem encoding. */
14866|       |
14867|       |    /* Set Py_FileSystemDefaultEncoding and Py_FileSystemDefaultEncodeErrors
14868|       |       global configuration variables. */
14869|      1|    if (_Py_IsMainInterpreter(interp)) {
  ------------------
  |  Branch (14869:9): [True: 1, False: 0]
  ------------------
14870|       |
14871|      1|        if (_Py_SetFileSystemEncoding(fs_codec->encoding,
  ------------------
  |  Branch (14871:13): [True: 0, False: 1]
  ------------------
14872|      1|                                      fs_codec->errors) < 0) {
14873|      0|            PyErr_NoMemory();
14874|      0|            return -1;
14875|      0|        }
14876|      1|    }
14877|      1|    return 0;
14878|      1|}
unicodeobject.c:init_stdio_encoding:
14813|      1|{
14814|       |    /* Update the stdio encoding to the normalized Python codec name. */
14815|      1|    PyConfig *config = (PyConfig*)_PyInterpreterState_GetConfig(interp);
14816|      1|    if (config_get_codec_name(&config->stdio_encoding) < 0) {
  ------------------
  |  Branch (14816:9): [True: 0, False: 1]
  ------------------
14817|      0|        return _PyStatus_ERR("failed to get the Python codec name "
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
14818|      0|                             "of the stdio encoding");
14819|      0|    }
14820|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
14821|      1|}

_PyWeakref_GetWeakrefCount:
   43|     54|{
   44|     54|    if (!_PyType_SUPPORTS_WEAKREFS(Py_TYPE(obj))) {
  ------------------
  |  |  213|     54|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     54|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     54|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (44:9): [True: 0, False: 54]
  ------------------
   45|      0|        return 0;
   46|      0|    }
   47|       |
   48|     54|    LOCK_WEAKREFS(obj);
   49|     54|    Py_ssize_t count = 0;
   50|     54|    PyWeakReference *head = *GET_WEAKREFS_LISTPTR(obj);
  ------------------
  |  |   38|     54|        ((PyWeakReference **) _PyObject_GET_WEAKREFS_LISTPTR(o))
  ------------------
   51|    108|    while (head != NULL) {
  ------------------
  |  Branch (51:12): [True: 54, False: 54]
  ------------------
   52|     54|        ++count;
   53|     54|        head = head->wr_next;
   54|     54|    }
   55|     54|    UNLOCK_WEAKREFS(obj);
   56|     54|    return count;
   57|     54|}
PyWeakref_NewRef:
  920|    469|{
  921|    469|    return (PyObject *)get_or_create_weakref(&_PyWeakref_RefType, ob,
  922|    469|                                             callback);
  923|    469|}
PyWeakref_GetRef:
  951|     15|{
  952|     15|    if (ref == NULL) {
  ------------------
  |  Branch (952:9): [True: 0, False: 15]
  ------------------
  953|      0|        *pobj = NULL;
  954|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
  955|      0|        return -1;
  956|      0|    }
  957|     15|    if (!PyWeakref_Check(ref)) {
  ------------------
  |  |   23|     15|        (PyWeakref_CheckRef(op) || PyWeakref_CheckProxy(op))
  |  |  ------------------
  |  |  |  |   15|     15|#define PyWeakref_CheckRef(op) PyObject_TypeCheck((op), &_PyWeakref_RefType)
  |  |  |  |  ------------------
  |  |  |  |  |  |  378|     30|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|     15|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     15|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (378:40): [True: 15, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       (PyWeakref_CheckRef(op) || PyWeakref_CheckProxy(op))
  |  |  ------------------
  |  |  |  |   19|      0|        (Py_IS_TYPE((op), &_PyWeakref_ProxyType) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   20|      0|         || Py_IS_TYPE((op), &_PyWeakref_CallableProxyType))
  |  |  |  |  ------------------
  |  |  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  958|      0|        *pobj = NULL;
  959|      0|        PyErr_SetString(PyExc_TypeError, "expected a weakref");
  960|      0|        return -1;
  961|      0|    }
  962|     15|    *pobj = _PyWeakref_GET_REF(ref);
  963|       |    return (*pobj != NULL);
  964|     15|}
PyObject_ClearWeakRefs:
 1008|    208|{
 1009|    208|    PyWeakReference **list;
 1010|       |
 1011|    208|    if (object == NULL
  ------------------
  |  Branch (1011:9): [True: 0, False: 208]
  ------------------
 1012|    208|        || !_PyType_SUPPORTS_WEAKREFS(Py_TYPE(object))
  ------------------
  |  |  213|    208|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    208|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    208|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1012:12): [True: 0, False: 208]
  ------------------
 1013|    208|        || Py_REFCNT(object) != 0)
  ------------------
  |  |  119|    208|    #  define Py_REFCNT(ob) _Py_REFCNT(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    208|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    208|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1013:12): [True: 0, False: 208]
  ------------------
 1014|      0|    {
 1015|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
 1016|      0|        return;
 1017|      0|    }
 1018|       |
 1019|    208|    list = GET_WEAKREFS_LISTPTR(object);
  ------------------
  |  |   38|    208|        ((PyWeakReference **) _PyObject_GET_WEAKREFS_LISTPTR(o))
  ------------------
 1020|    208|    if (FT_ATOMIC_LOAD_PTR(*list) == NULL) {
  ------------------
  |  |  145|    208|#define FT_ATOMIC_LOAD_PTR(value) value
  ------------------
  |  Branch (1020:9): [True: 154, False: 54]
  ------------------
 1021|       |        // Fast path for the common case
 1022|    154|        return;
 1023|    154|    }
 1024|       |
 1025|       |    /* Remove the callback-less basic and proxy references, which always appear
 1026|       |       at the head of the list.
 1027|       |    */
 1028|    108|    for (int done = 0; !done;) {
  ------------------
  |  Branch (1028:24): [True: 54, False: 54]
  ------------------
 1029|     54|        LOCK_WEAKREFS(object);
 1030|     54|        if (*list != NULL && is_basic_ref_or_proxy(*list)) {
  ------------------
  |  Branch (1030:13): [True: 54, False: 0]
  |  Branch (1030:30): [True: 0, False: 54]
  ------------------
 1031|      0|            PyObject *callback;
 1032|      0|            clear_weakref_lock_held(*list, &callback);
 1033|      0|            assert(callback == NULL);
  ------------------
  |  Branch (1033:13): [True: 0, False: 0]
  ------------------
 1034|      0|        }
 1035|     54|        done = (*list == NULL) || !is_basic_ref_or_proxy(*list);
  ------------------
  |  Branch (1035:16): [True: 0, False: 54]
  |  Branch (1035:35): [True: 54, False: 0]
  ------------------
 1036|     54|        UNLOCK_WEAKREFS(object);
 1037|     54|    }
 1038|       |
 1039|       |    /* Deal with non-canonical (subtypes or refs with callbacks) references. */
 1040|     54|    Py_ssize_t num_weakrefs = _PyWeakref_GetWeakrefCount(object);
 1041|     54|    if (num_weakrefs == 0) {
  ------------------
  |  Branch (1041:9): [True: 0, False: 54]
  ------------------
 1042|      0|        return;
 1043|      0|    }
 1044|       |
 1045|     54|    PyObject *exc = PyErr_GetRaisedException();
 1046|     54|    PyObject *tuple = PyTuple_New(num_weakrefs * 2);
 1047|     54|    if (tuple == NULL) {
  ------------------
  |  Branch (1047:9): [True: 0, False: 54]
  ------------------
 1048|      0|        _PyWeakref_ClearWeakRefsNoCallbacks(object);
 1049|      0|        PyErr_FormatUnraisable("Exception ignored while "
 1050|      0|                               "clearing object weakrefs");
 1051|      0|        PyErr_SetRaisedException(exc);
 1052|      0|        return;
 1053|      0|    }
 1054|       |
 1055|     54|    Py_ssize_t num_items = 0;
 1056|    108|    for (int done = 0; !done;) {
  ------------------
  |  Branch (1056:24): [True: 54, False: 54]
  ------------------
 1057|     54|        PyObject *callback = NULL;
 1058|     54|        LOCK_WEAKREFS(object);
 1059|     54|        PyWeakReference *cur = *list;
 1060|     54|        if (cur != NULL) {
  ------------------
  |  Branch (1060:13): [True: 54, False: 0]
  ------------------
 1061|     54|            clear_weakref_lock_held(cur, &callback);
 1062|     54|            if (_Py_TryIncref((PyObject *) cur)) {
  ------------------
  |  Branch (1062:17): [True: 54, False: 0]
  ------------------
 1063|     54|                assert(num_items / 2 < num_weakrefs);
  ------------------
  |  Branch (1063:17): [True: 54, False: 0]
  ------------------
 1064|     54|                PyTuple_SET_ITEM(tuple, num_items, (PyObject *) cur);
  ------------------
  |  |   40|     54|    PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|     54|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     54|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|     54|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     54|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1065|     54|                PyTuple_SET_ITEM(tuple, num_items + 1, callback);
  ------------------
  |  |   40|     54|    PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|     54|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     54|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|     54|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     54|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1066|     54|                num_items += 2;
 1067|     54|                callback = NULL;
 1068|     54|            }
 1069|     54|        }
 1070|     54|        done = (*list == NULL);
 1071|     54|        UNLOCK_WEAKREFS(object);
 1072|       |
 1073|     54|        Py_XDECREF(callback);
  ------------------
  |  |  524|     54|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     54|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     54|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1074|     54|    }
 1075|       |
 1076|    108|    for (Py_ssize_t i = 0; i < num_items; i += 2) {
  ------------------
  |  Branch (1076:28): [True: 54, False: 54]
  ------------------
 1077|     54|        PyObject *callback = PyTuple_GET_ITEM(tuple, i + 1);
  ------------------
  |  |   29|     54|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|     54|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     54|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1077:30): [True: 54, False: 0]
  ------------------
 1078|     54|        if (callback != NULL) {
  ------------------
  |  Branch (1078:13): [True: 54, False: 0]
  ------------------
 1079|     54|            PyObject *weakref = PyTuple_GET_ITEM(tuple, i);
  ------------------
  |  |   29|     54|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|     54|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     54|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1079:33): [True: 54, False: 0]
  ------------------
 1080|      0|            handle_callback((PyWeakReference *)weakref, callback);
 1081|     54|        }
 1082|     54|    }
 1083|       |
 1084|     54|    Py_DECREF(tuple);
  ------------------
  |  |  430|     54|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     54|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     54|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1085|       |
 1086|     54|    assert(!PyErr_Occurred());
  ------------------
  |  Branch (1086:5): [True: 54, False: 0]
  ------------------
 1087|     54|    PyErr_SetRaisedException(exc);
 1088|     54|}
weakrefobject.c:clear_weakref_lock_held:
   80|    125|{
   81|    125|    if (self->wr_object != Py_None) {
  ------------------
  |  |  616|    125|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (81:9): [True: 71, False: 54]
  ------------------
   82|     71|        PyWeakReference **list = GET_WEAKREFS_LISTPTR(self->wr_object);
  ------------------
  |  |   38|     71|        ((PyWeakReference **) _PyObject_GET_WEAKREFS_LISTPTR(o))
  ------------------
   83|     71|        if (*list == self) {
  ------------------
  |  Branch (83:13): [True: 63, False: 8]
  ------------------
   84|       |            /* If 'self' is the end of the list (and thus self->wr_next ==
   85|       |               NULL) then the weakref list itself (and thus the value of *list)
   86|       |               will end up being set to NULL. */
   87|     63|            FT_ATOMIC_STORE_PTR(*list, self->wr_next);
  ------------------
  |  |  146|     63|#define FT_ATOMIC_STORE_PTR(value, new_value) value = new_value
  ------------------
   88|     63|        }
   89|     71|        FT_ATOMIC_STORE_PTR(self->wr_object, Py_None);
  ------------------
  |  |  146|     71|#define FT_ATOMIC_STORE_PTR(value, new_value) value = new_value
  ------------------
   90|     71|        if (self->wr_prev != NULL) {
  ------------------
  |  Branch (90:13): [True: 8, False: 63]
  ------------------
   91|      8|            self->wr_prev->wr_next = self->wr_next;
   92|      8|        }
   93|     71|        if (self->wr_next != NULL) {
  ------------------
  |  Branch (93:13): [True: 1, False: 70]
  ------------------
   94|      1|            self->wr_next->wr_prev = self->wr_prev;
   95|      1|        }
   96|     71|        self->wr_prev = NULL;
   97|     71|        self->wr_next = NULL;
   98|     71|    }
   99|    125|    if (callback != NULL) {
  ------------------
  |  Branch (99:9): [True: 125, False: 0]
  ------------------
  100|    125|        *callback = self->wr_callback;
  101|       |        self->wr_callback = NULL;
  102|    125|    }
  103|    125|}
weakrefobject.c:weakref_dealloc:
  142|     71|{
  143|     71|    PyObject_GC_UnTrack(self);
  144|     71|    clear_weakref(self);
  145|     71|    Py_TYPE(self)->tp_free(self);
  ------------------
  |  |  213|     71|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     71|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     71|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  146|     71|}
weakrefobject.c:clear_weakref:
  108|     71|{
  109|     71|    PyWeakReference *self = _PyWeakref_CAST(op);
  ------------------
  |  |   46|     71|    (assert(PyWeakref_Check(op)), _Py_CAST(PyWeakReference*, (op)))
  |  |  ------------------
  |  |  |  |   37|     71|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (109:29): [True: 0, False: 0]
  |  Branch (109:29): [True: 0, False: 0]
  |  Branch (109:29): [True: 71, False: 0]
  ------------------
  110|     71|    PyObject *callback = NULL;
  111|       |
  112|       |    // self->wr_object may be Py_None if the GC cleared the weakref, so lock
  113|       |    // using the pointer in the weakref.
  114|     71|    LOCK_WEAKREFS_FOR_WR(self);
  115|     71|    clear_weakref_lock_held(self, &callback);
  116|     71|    UNLOCK_WEAKREFS_FOR_WR(self);
  117|     71|    Py_XDECREF(callback);
  ------------------
  |  |  524|     71|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     71|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     71|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  118|     71|}
weakrefobject.c:weakref_hash:
  206|     72|{
  207|     72|    PyWeakReference *self = _PyWeakref_CAST(op);
  ------------------
  |  |   46|     72|    (assert(PyWeakref_Check(op)), _Py_CAST(PyWeakReference*, (op)))
  |  |  ------------------
  |  |  |  |   37|     72|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (207:29): [True: 0, False: 0]
  |  Branch (207:29): [True: 0, False: 0]
  |  Branch (207:29): [True: 72, False: 0]
  ------------------
  208|      0|    Py_hash_t hash;
  209|     72|    Py_BEGIN_CRITICAL_SECTION(self);
  ------------------
  |  |   51|     72|    {
  ------------------
  210|     72|    hash = weakref_hash_lock_held(self);
  211|     72|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|     72|    }
  ------------------
  212|     72|    return hash;
  213|     72|}
weakrefobject.c:weakref_hash_lock_held:
  191|     72|{
  192|     72|    if (self->hash != -1)
  ------------------
  |  Branch (192:9): [True: 1, False: 71]
  ------------------
  193|      1|        return self->hash;
  194|     71|    PyObject* obj = _PyWeakref_GET_REF((PyObject*)self);
  195|     71|    if (obj == NULL) {
  ------------------
  |  Branch (195:9): [True: 0, False: 71]
  ------------------
  196|      0|        PyErr_SetString(PyExc_TypeError, "weak object has gone away");
  197|      0|        return -1;
  198|      0|    }
  199|     71|    self->hash = PyObject_Hash(obj);
  200|     71|    Py_DECREF(obj);
  ------------------
  |  |  430|     71|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     71|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     71|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  201|     71|    return self->hash;
  202|     71|}
weakrefobject.c:gc_traverse:
  151|    554|{
  152|    554|    PyWeakReference *self = _PyWeakref_CAST(op);
  ------------------
  |  |   46|    554|    (assert(PyWeakref_Check(op)), _Py_CAST(PyWeakReference*, (op)))
  |  |  ------------------
  |  |  |  |   37|    554|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (152:29): [True: 0, False: 0]
  |  Branch (152:29): [True: 0, False: 0]
  |  Branch (152:29): [True: 554, False: 0]
  ------------------
  153|    554|    Py_VISIT(self->wr_callback);
  ------------------
  |  |  194|    554|    do {                                                                \
  |  |  195|    554|        if (op) {                                                       \
  |  |  ------------------
  |  |  |  Branch (195:13): [True: 4, False: 550]
  |  |  ------------------
  |  |  196|      4|            int vret = visit(_PyObject_CAST(op), arg);                  \
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  197|      4|            if (vret)                                                   \
  |  |  ------------------
  |  |  |  Branch (197:17): [True: 0, False: 4]
  |  |  ------------------
  |  |  198|      4|                return vret;                                            \
  |  |  199|      4|        }                                                               \
  |  |  200|    554|    } while (0)
  |  |  ------------------
  |  |  |  Branch (200:14): [Folded, False: 554]
  |  |  ------------------
  ------------------
  154|    554|    return 0;
  155|    554|}
weakrefobject.c:weakref___init__:
  474|     55|{
  475|     55|    PyObject *tmp;
  476|       |
  477|     55|    if (!_PyArg_NoKeywords("ref", kwargs))
  ------------------
  |  |   25|     55|    ((kwargs) == NULL || _PyArg_NoKeywords((funcname), (kwargs)))
  |  |  ------------------
  |  |  |  Branch (25:6): [True: 55, False: 0]
  |  |  |  Branch (25:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  478|      0|        return -1;
  479|       |
  480|     55|    if (parse_weakref_init_args("__init__", args, kwargs, &tmp, &tmp))
  ------------------
  |  Branch (480:9): [True: 55, False: 0]
  ------------------
  481|     55|        return 0;
  482|      0|    else
  483|      0|        return -1;
  484|     55|}
weakrefobject.c:parse_weakref_init_args:
  458|    110|{
  459|    110|    return PyArg_UnpackTuple(args, funcname, 1, 2, obp, callbackp);
  460|    110|}
weakrefobject.c:weakref___new__:
  464|     55|{
  465|     55|    PyObject *ob, *callback = NULL;
  466|     55|    if (parse_weakref_init_args("__new__", args, kwargs, &ob, &callback)) {
  ------------------
  |  Branch (466:9): [True: 55, False: 0]
  ------------------
  467|     55|        return (PyObject *)get_or_create_weakref(type, ob, callback);
  468|     55|    }
  469|      0|    return NULL;
  470|     55|}
weakrefobject.c:get_or_create_weakref:
  412|    524|{
  413|    524|    if (!_PyType_SUPPORTS_WEAKREFS(Py_TYPE(obj))) {
  ------------------
  |  |  213|    524|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    524|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    524|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (413:9): [True: 0, False: 524]
  ------------------
  414|      0|        PyErr_Format(PyExc_TypeError,
  415|      0|                     "cannot create weak reference to '%s' object",
  416|      0|                     Py_TYPE(obj)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  417|      0|        return NULL;
  418|      0|    }
  419|    524|    if (callback == Py_None)
  ------------------
  |  |  616|    524|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (419:9): [True: 0, False: 524]
  ------------------
  420|      0|        callback = NULL;
  421|       |
  422|    524|    PyWeakReference **list = GET_WEAKREFS_LISTPTR(obj);
  ------------------
  |  |   38|    524|        ((PyWeakReference **) _PyObject_GET_WEAKREFS_LISTPTR(o))
  ------------------
  423|    524|    if ((type == &_PyWeakref_RefType) ||
  ------------------
  |  Branch (423:9): [True: 494, False: 30]
  ------------------
  424|     30|        (type == &_PyWeakref_ProxyType) ||
  ------------------
  |  Branch (424:9): [True: 0, False: 30]
  ------------------
  425|     30|        (type == &_PyWeakref_CallableProxyType))
  ------------------
  |  Branch (425:9): [True: 0, False: 30]
  ------------------
  426|    494|    {
  427|    494|        LOCK_WEAKREFS(obj);
  428|    494|        PyWeakReference *basic_ref = try_reuse_basic_ref(*list, type, callback);
  429|    494|        if (basic_ref != NULL) {
  ------------------
  |  Branch (429:13): [True: 52, False: 442]
  ------------------
  430|     52|            UNLOCK_WEAKREFS(obj);
  431|     52|            return basic_ref;
  432|     52|        }
  433|    442|        PyWeakReference *newref = allocate_weakref(type, obj, callback);
  434|    442|        if (newref == NULL) {
  ------------------
  |  Branch (434:13): [True: 0, False: 442]
  ------------------
  435|      0|            UNLOCK_WEAKREFS(obj);
  436|      0|            return NULL;
  437|      0|        }
  438|    442|        insert_weakref(newref, list);
  439|    442|        UNLOCK_WEAKREFS(obj);
  440|    442|        return newref;
  441|    442|    }
  442|     30|    else {
  443|       |        // We may not be able to safely allocate inside the lock
  444|     30|        PyWeakReference *newref = allocate_weakref(type, obj, callback);
  445|     30|        if (newref == NULL) {
  ------------------
  |  Branch (445:13): [True: 0, False: 30]
  ------------------
  446|      0|            return NULL;
  447|      0|        }
  448|     30|        LOCK_WEAKREFS(obj);
  449|     30|        insert_weakref(newref, list);
  450|     30|        UNLOCK_WEAKREFS(obj);
  451|     30|        return newref;
  452|     30|    }
  453|    524|}
weakrefobject.c:try_reuse_basic_ref:
  332|    494|{
  333|    494|    if (callback != NULL) {
  ------------------
  |  Branch (333:9): [True: 76, False: 418]
  ------------------
  334|     76|        return NULL;
  335|     76|    }
  336|       |
  337|    418|    PyWeakReference *ref, *proxy;
  338|    418|    get_basic_refs(list, &ref, &proxy);
  339|       |
  340|    418|    PyWeakReference *cand = NULL;
  341|    418|    if (type == &_PyWeakref_RefType) {
  ------------------
  |  Branch (341:9): [True: 418, False: 0]
  ------------------
  342|    418|        cand = ref;
  343|    418|    }
  344|    418|    if ((type == &_PyWeakref_ProxyType) ||
  ------------------
  |  Branch (344:9): [True: 0, False: 418]
  ------------------
  345|    418|        (type == &_PyWeakref_CallableProxyType)) {
  ------------------
  |  Branch (345:9): [True: 0, False: 418]
  ------------------
  346|      0|        cand = proxy;
  347|      0|    }
  348|       |
  349|    418|    if (cand != NULL && _Py_TryIncref((PyObject *) cand)) {
  ------------------
  |  Branch (349:9): [True: 52, False: 366]
  |  Branch (349:25): [True: 52, False: 0]
  ------------------
  350|     52|        return cand;
  351|     52|    }
  352|    366|    return NULL;
  353|    418|}
weakrefobject.c:get_basic_refs:
  279|    890|{
  280|    890|    *refp = NULL;
  281|    890|    *proxyp = NULL;
  282|       |
  283|    890|    if (head != NULL && head->wr_callback == NULL) {
  ------------------
  |  Branch (283:9): [True: 104, False: 786]
  |  Branch (283:25): [True: 104, False: 0]
  ------------------
  284|       |        /* We need to be careful that the "basic refs" aren't
  285|       |           subclasses of the main types.  That complicates this a
  286|       |           little. */
  287|    104|        if (PyWeakref_CheckRefExact(head)) {
  ------------------
  |  |   17|    104|        Py_IS_TYPE((op), &_PyWeakref_RefType)
  |  |  ------------------
  |  |  |  |  215|    104|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    104|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    104|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 104, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  288|    104|            *refp = head;
  289|    104|            head = head->wr_next;
  290|    104|        }
  291|    104|        if (head != NULL
  ------------------
  |  Branch (291:13): [True: 21, False: 83]
  ------------------
  292|     21|            && head->wr_callback == NULL
  ------------------
  |  Branch (292:16): [True: 0, False: 21]
  ------------------
  293|      0|            && PyWeakref_CheckProxy(head)) {
  ------------------
  |  |   19|      0|        (Py_IS_TYPE((op), &_PyWeakref_ProxyType) \
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   20|      0|         || Py_IS_TYPE((op), &_PyWeakref_CallableProxyType))
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  294|      0|            *proxyp = head;
  295|       |            /* head = head->wr_next; */
  296|      0|        }
  297|    104|    }
  298|    890|}
weakrefobject.c:allocate_weakref:
  401|    472|{
  402|    472|    PyWeakReference *newref = (PyWeakReference *) type->tp_alloc(type, 0);
  403|    472|    if (newref == NULL) {
  ------------------
  |  Branch (403:9): [True: 0, False: 472]
  ------------------
  404|      0|        return NULL;
  405|      0|    }
  406|    472|    init_weakref(newref, obj, callback);
  407|    472|    return newref;
  408|    472|}
weakrefobject.c:init_weakref:
   63|    472|{
   64|    472|    self->hash = -1;
   65|    472|    self->wr_object = ob;
   66|    472|    self->wr_prev = NULL;
   67|    472|    self->wr_next = NULL;
   68|    472|    self->wr_callback = Py_XNewRef(callback);
  ------------------
  |  |  551|    472|#  define Py_XNewRef(obj) _Py_XNewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    472|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    472|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   69|    472|    self->vectorcall = weakref_vectorcall;
   70|       |#ifdef Py_GIL_DISABLED
   71|       |    self->weakrefs_lock = &WEAKREF_LIST_LOCK(ob);
   72|       |    _PyObject_SetMaybeWeakref(ob);
   73|       |    _PyObject_SetMaybeWeakref((PyObject *)self);
   74|       |#endif
   75|    472|}
weakrefobject.c:weakref_vectorcall:
  174|     36|{
  175|     36|    if (!_PyArg_NoKwnames("weakref", kwnames)) {
  ------------------
  |  |   15|     36|    ((kwnames) == NULL || _PyArg_NoKwnames((funcname), (kwnames)))
  |  |  ------------------
  |  |  |  Branch (15:6): [True: 36, False: 0]
  |  |  |  Branch (15:27): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  176|      0|        return NULL;
  177|      0|    }
  178|     36|    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
  ------------------
  |  |   37|     36|#define PyVectorcall_NARGS(n) _PyVectorcall_NARGS(n)
  ------------------
  179|     36|    if (!_PyArg_CheckPositional("weakref", nargs, 0, 0)) {
  ------------------
  |  |   31|     36|    (((min) <= (nargs) && (nargs) <= (max)) \
  |  |  ------------------
  |  |  |  Branch (31:7): [True: 36, False: 0]
  |  |  |  Branch (31:27): [True: 36, False: 0]
  |  |  ------------------
  |  |   32|     36|     || _PyArg_CheckPositional((funcname), (nargs), (min), (max)))
  |  |  ------------------
  |  |  |  Branch (32:9): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  180|      0|        return NULL;
  181|      0|    }
  182|     36|    PyObject *obj = _PyWeakref_GET_REF(self);
  183|     36|    if (obj == NULL) {
  ------------------
  |  Branch (183:9): [True: 0, False: 36]
  ------------------
  184|      0|        Py_RETURN_NONE;
  ------------------
  |  |  628|      0|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
  185|      0|    }
  186|     36|    return obj;
  187|     36|}
weakrefobject.c:insert_weakref:
  376|    472|{
  377|    472|    PyWeakReference *ref, *proxy;
  378|    472|    get_basic_refs(*list, &ref, &proxy);
  379|       |
  380|    472|    PyWeakReference *prev;
  381|    472|    if (is_basic_ref(newref)) {
  ------------------
  |  Branch (381:9): [True: 366, False: 106]
  ------------------
  382|    366|        prev = NULL;
  383|    366|    }
  384|    106|    else if (is_basic_proxy(newref)) {
  ------------------
  |  Branch (384:14): [True: 0, False: 106]
  ------------------
  385|      0|        prev = ref;
  386|      0|    }
  387|    106|    else {
  388|    106|        prev = (proxy == NULL) ? ref : proxy;
  ------------------
  |  Branch (388:16): [True: 106, False: 0]
  ------------------
  389|    106|    }
  390|       |
  391|    472|    if (prev == NULL) {
  ------------------
  |  Branch (391:9): [True: 420, False: 52]
  ------------------
  392|    420|        insert_head(newref, list);
  393|    420|    }
  394|     52|    else {
  395|     52|        insert_after(newref, prev);
  396|     52|    }
  397|    472|}
weakrefobject.c:is_basic_ref:
  357|    580|{
  358|    580|    return (ref->wr_callback == NULL) && PyWeakref_CheckRefExact(ref);
  ------------------
  |  |   17|    366|        Py_IS_TYPE((op), &_PyWeakref_RefType)
  |  |  ------------------
  |  |  |  |  215|    366|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    366|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    366|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 366, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (358:12): [True: 366, False: 214]
  ------------------
  359|    580|}
weakrefobject.c:is_basic_proxy:
  363|    214|{
  364|    214|    return (proxy->wr_callback == NULL) && PyWeakref_CheckProxy(proxy);
  ------------------
  |  |   19|      0|        (Py_IS_TYPE((op), &_PyWeakref_ProxyType) \
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   20|      0|         || Py_IS_TYPE((op), &_PyWeakref_CallableProxyType))
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (364:12): [True: 0, False: 214]
  ------------------
  365|    214|}
weakrefobject.c:insert_head:
  316|    420|{
  317|    420|    PyWeakReference *next = *list;
  318|       |
  319|    420|    newref->wr_prev = NULL;
  320|    420|    newref->wr_next = next;
  321|    420|    if (next != NULL)
  ------------------
  |  Branch (321:9): [True: 0, False: 420]
  ------------------
  322|      0|        next->wr_prev = newref;
  323|    420|    *list = newref;
  324|    420|}
weakrefobject.c:insert_after:
  303|     52|{
  304|     52|    newref->wr_prev = prev;
  305|     52|    newref->wr_next = prev->wr_next;
  306|     52|    if (prev->wr_next != NULL)
  ------------------
  |  Branch (306:9): [True: 20, False: 32]
  ------------------
  307|     20|        prev->wr_next->wr_prev = newref;
  308|     52|    prev->wr_next = newref;
  309|     52|}
weakrefobject.c:is_basic_ref_or_proxy:
  369|    108|{
  370|    108|    return is_basic_ref(wr) || is_basic_proxy(wr);
  ------------------
  |  Branch (370:12): [True: 0, False: 108]
  |  Branch (370:32): [True: 0, False: 108]
  ------------------
  371|    108|}
weakrefobject.c:handle_callback:
  988|     54|{
  989|     54|    PyObject *cbresult = PyObject_CallOneArg(callback, (PyObject *)ref);
  990|       |
  991|     54|    if (cbresult == NULL) {
  ------------------
  |  Branch (991:9): [True: 0, False: 54]
  ------------------
  992|      0|        PyErr_FormatUnraisable("Exception ignored while "
  993|      0|                               "calling weakref callback %R", callback);
  994|      0|    }
  995|     54|    else {
  996|     54|        Py_DECREF(cbresult);
  ------------------
  |  |  430|     54|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     54|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     54|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  997|     54|    }
  998|     54|}

_PyWarnings_InitState:
  136|      1|{
  137|      1|    WarningsState *st = &interp->warnings;
  138|       |
  139|      1|    if (st->filters == NULL) {
  ------------------
  |  Branch (139:9): [True: 1, False: 0]
  ------------------
  140|      1|        st->filters = init_filters(interp);
  141|      1|        if (st->filters == NULL) {
  ------------------
  |  Branch (141:13): [True: 0, False: 1]
  ------------------
  142|      0|            return -1;
  143|      0|        }
  144|      1|    }
  145|       |
  146|      1|    if (st->once_registry == NULL) {
  ------------------
  |  Branch (146:9): [True: 1, False: 0]
  ------------------
  147|      1|        st->once_registry = PyDict_New();
  148|      1|        if (st->once_registry == NULL) {
  ------------------
  |  Branch (148:13): [True: 0, False: 1]
  ------------------
  149|      0|            return -1;
  150|      0|        }
  151|      1|    }
  152|       |
  153|      1|    if (st->default_action == NULL) {
  ------------------
  |  Branch (153:9): [True: 1, False: 0]
  ------------------
  154|      1|        st->default_action = PyUnicode_FromString("default");
  155|      1|        if (st->default_action == NULL) {
  ------------------
  |  Branch (155:13): [True: 0, False: 1]
  ------------------
  156|      0|            return -1;
  157|      0|        }
  158|      1|    }
  159|       |
  160|      1|    if (st->context == NULL) {
  ------------------
  |  Branch (160:9): [True: 1, False: 0]
  ------------------
  161|      1|        st->context = PyContextVar_New("_warnings_context", NULL);
  162|      1|        if (st->context == NULL) {
  ------------------
  |  Branch (162:13): [True: 0, False: 1]
  ------------------
  163|      0|            return -1;
  164|      0|        }
  165|      1|    }
  166|       |
  167|      1|    st->filters_version = 0;
  168|      1|    return 0;
  169|      1|}
_PyWarnings_Init:
 1649|      1|{
 1650|      1|    return PyModuleDef_Init(&warnings_module);
 1651|      1|}
_warnings.c:init_filters:
  101|      1|{
  102|       |#ifdef Py_DEBUG
  103|       |    /* Py_DEBUG builds show all warnings by default */
  104|       |    return PyList_New(0);
  105|       |#else
  106|       |    /* Other builds ignore a number of warning categories by default */
  107|      1|    PyObject *filters = PyList_New(5);
  108|      1|    if (filters == NULL) {
  ------------------
  |  Branch (108:9): [True: 0, False: 1]
  ------------------
  109|      0|        return NULL;
  110|      0|    }
  111|       |
  112|      1|    size_t pos = 0;  /* Post-incremented in each use. */
  113|      1|#define ADD(TYPE, ACTION, MODNAME) \
  114|      1|    PyList_SET_ITEM(filters, pos++, \
  115|      1|                    create_filter(TYPE, &_Py_ID(ACTION), MODNAME));
  116|      1|    ADD(PyExc_DeprecationWarning, default, "__main__");
  ------------------
  |  |  114|      1|    PyList_SET_ITEM(filters, pos++, \
  |  |  ------------------
  |  |  |  |   50|      1|    PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                   PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  115|      1|                    create_filter(TYPE, &_Py_ID(ACTION), MODNAME));
  ------------------
  117|      1|    ADD(PyExc_DeprecationWarning, ignore, NULL);
  ------------------
  |  |  114|      1|    PyList_SET_ITEM(filters, pos++, \
  |  |  ------------------
  |  |  |  |   50|      1|    PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                   PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  115|      1|                    create_filter(TYPE, &_Py_ID(ACTION), MODNAME));
  ------------------
  118|      1|    ADD(PyExc_PendingDeprecationWarning, ignore, NULL);
  ------------------
  |  |  114|      1|    PyList_SET_ITEM(filters, pos++, \
  |  |  ------------------
  |  |  |  |   50|      1|    PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                   PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  115|      1|                    create_filter(TYPE, &_Py_ID(ACTION), MODNAME));
  ------------------
  119|      1|    ADD(PyExc_ImportWarning, ignore, NULL);
  ------------------
  |  |  114|      1|    PyList_SET_ITEM(filters, pos++, \
  |  |  ------------------
  |  |  |  |   50|      1|    PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                   PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  115|      1|                    create_filter(TYPE, &_Py_ID(ACTION), MODNAME));
  ------------------
  120|      1|    ADD(PyExc_ResourceWarning, ignore, NULL);
  ------------------
  |  |  114|      1|    PyList_SET_ITEM(filters, pos++, \
  |  |  ------------------
  |  |  |  |   50|      1|    PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                   PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  115|      1|                    create_filter(TYPE, &_Py_ID(ACTION), MODNAME));
  ------------------
  121|      1|#undef ADD
  122|       |
  123|      6|    for (size_t x = 0; x < pos; x++) {
  ------------------
  |  Branch (123:24): [True: 5, False: 1]
  ------------------
  124|     10|        if (PyList_GET_ITEM(filters, x) == NULL) {
  ------------------
  |  |   40|      5|#define PyList_GET_ITEM(op, index) (_PyList_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   26|      5|    (assert(PyList_Check(op)), _Py_CAST(PyListObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (124:13): [True: 5, False: 0]
  |  Branch (124:13): [True: 0, False: 5]
  ------------------
  125|      0|            Py_DECREF(filters);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  126|      0|            return NULL;
  127|      0|        }
  128|      5|    }
  129|      1|    return filters;
  130|      1|#endif
  131|      1|}
_warnings.c:create_filter:
   78|      5|{
   79|      5|    PyObject *modname_obj = NULL;
   80|       |
   81|       |    /* Default to "no module name" for initial filter set */
   82|      5|    if (modname != NULL) {
  ------------------
  |  Branch (82:9): [True: 1, False: 4]
  ------------------
   83|      1|        modname_obj = PyUnicode_InternFromString(modname);
   84|      1|        if (modname_obj == NULL) {
  ------------------
  |  Branch (84:13): [True: 0, False: 1]
  ------------------
   85|      0|            return NULL;
   86|      0|        }
   87|      4|    } else {
   88|      4|        modname_obj = Py_NewRef(Py_None);
  ------------------
  |  |  550|      4|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   89|      4|    }
   90|       |
   91|       |    /* This assumes the line number is zero for now. */
   92|      5|    PyObject *filter = PyTuple_Pack(5, action_str, Py_None,
  ------------------
  |  |  616|      5|#  define Py_None (&_Py_NoneStruct)
  ------------------
   93|      5|                                    category, modname_obj, _PyLong_GetZero());
   94|      5|    Py_DECREF(modname_obj);
  ------------------
  |  |  430|      5|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   95|      5|    return filter;
   96|      5|}
_warnings.c:check_interp:
   30|      1|{
   31|      1|    if (interp == NULL) {
  ------------------
  |  Branch (31:9): [True: 0, False: 1]
  ------------------
   32|      0|        PyErr_SetString(PyExc_RuntimeError,
   33|      0|                        "warnings_get_state: could not identify "
   34|      0|                        "current interpreter");
   35|      0|        return 0;
   36|      0|    }
   37|      1|    return 1;
   38|      1|}
_warnings.c:warnings_get_state:
   61|      1|{
   62|      1|    return &interp->warnings;
   63|      1|}
_warnings.c:get_current_interp:
   42|      1|{
   43|      1|    PyInterpreterState *interp = _PyInterpreterState_GET();
   44|      1|    return check_interp(interp) ? interp : NULL;
  ------------------
  |  Branch (44:12): [True: 1, False: 0]
  ------------------
   45|      1|}
_warnings.c:warnings_module_exec:
 1604|      1|{
 1605|      1|    PyInterpreterState *interp = get_current_interp();
 1606|      1|    if (interp == NULL) {
  ------------------
  |  Branch (1606:9): [True: 0, False: 1]
  ------------------
 1607|      0|        return -1;
 1608|      0|    }
 1609|      1|    WarningsState *st = warnings_get_state(interp);
 1610|      1|    if (st == NULL) {
  ------------------
  |  Branch (1610:9): [True: 0, False: 1]
  ------------------
 1611|      0|        return -1;
 1612|      0|    }
 1613|      1|    if (PyModule_AddObjectRef(module, "filters", st->filters) < 0) {
  ------------------
  |  Branch (1613:9): [True: 0, False: 1]
  ------------------
 1614|      0|        return -1;
 1615|      0|    }
 1616|      1|    if (PyModule_AddObjectRef(module, "_onceregistry", st->once_registry) < 0) {
  ------------------
  |  Branch (1616:9): [True: 0, False: 1]
  ------------------
 1617|      0|        return -1;
 1618|      0|    }
 1619|      1|    if (PyModule_AddObjectRef(module, "_defaultaction", st->default_action) < 0) {
  ------------------
  |  Branch (1619:9): [True: 0, False: 1]
  ------------------
 1620|      0|        return -1;
 1621|      0|    }
 1622|      1|    if (PyModule_AddObjectRef(module, "_warnings_context", st->context) < 0) {
  ------------------
  |  Branch (1622:9): [True: 0, False: 1]
  ------------------
 1623|      0|        return -1;
 1624|      0|    }
 1625|      1|    return 0;
 1626|      1|}

_PyBuiltin_Init:
 3504|      1|{
 3505|      1|    PyObject *mod, *dict, *debug;
 3506|       |
 3507|      1|    const PyConfig *config = _PyInterpreterState_GetConfig(interp);
 3508|       |
 3509|      1|    mod = _PyModule_CreateInitialized(&builtinsmodule, PYTHON_API_VERSION);
  ------------------
  |  |   59|      1|#define PYTHON_API_VERSION 1013
  ------------------
 3510|      1|    if (mod == NULL)
  ------------------
  |  Branch (3510:9): [True: 0, False: 1]
  ------------------
 3511|      0|        return NULL;
 3512|       |#ifdef Py_GIL_DISABLED
 3513|       |    PyUnstable_Module_SetGIL(mod, Py_MOD_GIL_NOT_USED);
 3514|       |#endif
 3515|      1|    dict = PyModule_GetDict(mod);
 3516|       |
 3517|       |#ifdef Py_TRACE_REFS
 3518|       |    /* "builtins" exposes a number of statically allocated objects
 3519|       |     * that, before this code was added in 2.3, never showed up in
 3520|       |     * the list of "all objects" maintained by Py_TRACE_REFS.  As a
 3521|       |     * result, programs leaking references to None and False (etc)
 3522|       |     * couldn't be diagnosed by examining sys.getobjects(0).
 3523|       |     */
 3524|       |#define ADD_TO_ALL(OBJECT) _Py_AddToAllObjects((PyObject *)(OBJECT))
 3525|       |#else
 3526|      1|#define ADD_TO_ALL(OBJECT) (void)0
 3527|      1|#endif
 3528|       |
 3529|      1|#define SETBUILTIN(NAME, OBJECT) \
 3530|      1|    if (PyDict_SetItemString(dict, NAME, (PyObject *)OBJECT) < 0)       \
 3531|      1|        return NULL;                                                    \
 3532|      1|    ADD_TO_ALL(OBJECT)
 3533|       |
 3534|      1|    SETBUILTIN("None",                  Py_None);
  ------------------
  |  | 3530|      1|    if (PyDict_SetItemString(dict, NAME, (PyObject *)OBJECT) < 0)       \
  |  |  ------------------
  |  |  |  Branch (3530:9): [True: 0, False: 1]
  |  |  ------------------
  |  | 3531|      1|        return NULL;                                                    \
  |  | 3532|      1|    ADD_TO_ALL(OBJECT)
  |  |  ------------------
  |  |  |  | 3526|      1|#define ADD_TO_ALL(OBJECT) (void)0
  |  |  ------------------
  ------------------
 3535|      1|    SETBUILTIN("Ellipsis",              Py_Ellipsis);
  ------------------
  |  | 3530|      1|    if (PyDict_SetItemString(dict, NAME, (PyObject *)OBJECT) < 0)       \
  |  |  ------------------
  |  |  |  Branch (3530:9): [True: 0, False: 1]
  |  |  ------------------
  |  | 3531|      1|        return NULL;                                                    \
  |  | 3532|      1|    ADD_TO_ALL(OBJECT)
  |  |  ------------------
  |  |  |  | 3526|      1|#define ADD_TO_ALL(OBJECT) (void)0
  |  |  ------------------
  ------------------
 3536|      1|    SETBUILTIN("NotImplemented",        Py_NotImplemented);
  ------------------
  |  | 3530|      1|    if (PyDict_SetItemString(dict, NAME, (PyObject *)OBJECT) < 0)       \
  |  |  ------------------
  |  |  |  Branch (3530:9): [True: 0, False: 1]
  |  |  ------------------
  |  | 3531|      1|        return NULL;                                                    \
  |  | 3532|      1|    ADD_TO_ALL(OBJECT)
  |  |  ------------------
  |  |  |  | 3526|      1|#define ADD_TO_ALL(OBJECT) (void)0
  |  |  ------------------
  ------------------
 3537|      1|    SETBUILTIN("False",                 Py_False);
  ------------------
  |  | 3530|      1|    if (PyDict_SetItemString(dict, NAME, (PyObject *)OBJECT) < 0)       \
  |  |  ------------------
  |  |  |  Branch (3530:9): [True: 0, False: 1]
  |  |  ------------------
  |  | 3531|      1|        return NULL;                                                    \
  |  | 3532|      1|    ADD_TO_ALL(OBJECT)
  |  |  ------------------
  |  |  |  | 3526|      1|#define ADD_TO_ALL(OBJECT) (void)0
  |  |  ------------------
  ------------------
 3538|      1|    SETBUILTIN("True",                  Py_True);
  ------------------
  |  | 3530|      1|    if (PyDict_SetItemString(dict, NAME, (PyObject *)OBJECT) < 0)       \
  |  |  ------------------
  |  |  |  Branch (3530:9): [True: 0, False: 1]
  |  |  ------------------
  |  | 3531|      1|        return NULL;                                                    \
  |  | 3532|      1|    ADD_TO_ALL(OBJECT)
  |  |  ------------------
  |  |  |  | 3526|      1|#define ADD_TO_ALL(OBJECT) (void)0
  |  |  ------------------
  ------------------
 3539|      1|    SETBUILTIN("bool",                  &PyBool_Type);
  ------------------
  |  | 3530|      1|    if (PyDict_SetItemString(dict, NAME, (PyObject *)OBJECT) < 0)       \
  |  |  ------------------
  |  |  |  Branch (3530:9): [True: 0, False: 1]
  |  |  ------------------
  |  | 3531|      1|        return NULL;                                                    \
  |  | 3532|      1|    ADD_TO_ALL(OBJECT)
  |  |  ------------------
  |  |  |  | 3526|      1|#define ADD_TO_ALL(OBJECT) (void)0
  |  |  ------------------
  ------------------
 3540|      1|    SETBUILTIN("memoryview",            &PyMemoryView_Type);
  ------------------
  |  | 3530|      1|    if (PyDict_SetItemString(dict, NAME, (PyObject *)OBJECT) < 0)       \
  |  |  ------------------
  |  |  |  Branch (3530:9): [True: 0, False: 1]
  |  |  ------------------
  |  | 3531|      1|        return NULL;                                                    \
  |  | 3532|      1|    ADD_TO_ALL(OBJECT)
  |  |  ------------------
  |  |  |  | 3526|      1|#define ADD_TO_ALL(OBJECT) (void)0
  |  |  ------------------
  ------------------
 3541|      1|    SETBUILTIN("bytearray",             &PyByteArray_Type);
  ------------------
  |  | 3530|      1|    if (PyDict_SetItemString(dict, NAME, (PyObject *)OBJECT) < 0)       \
  |  |  ------------------
  |  |  |  Branch (3530:9): [True: 0, False: 1]
  |  |  ------------------
  |  | 3531|      1|        return NULL;                                                    \
  |  | 3532|      1|    ADD_TO_ALL(OBJECT)
  |  |  ------------------
  |  |  |  | 3526|      1|#define ADD_TO_ALL(OBJECT) (void)0
  |  |  ------------------
  ------------------
 3542|      1|    SETBUILTIN("bytes",                 &PyBytes_Type);
  ------------------
  |  | 3530|      1|    if (PyDict_SetItemString(dict, NAME, (PyObject *)OBJECT) < 0)       \
  |  |  ------------------
  |  |  |  Branch (3530:9): [True: 0, False: 1]
  |  |  ------------------
  |  | 3531|      1|        return NULL;                                                    \
  |  | 3532|      1|    ADD_TO_ALL(OBJECT)
  |  |  ------------------
  |  |  |  | 3526|      1|#define ADD_TO_ALL(OBJECT) (void)0
  |  |  ------------------
  ------------------
 3543|      1|    SETBUILTIN("classmethod",           &PyClassMethod_Type);
  ------------------
  |  | 3530|      1|    if (PyDict_SetItemString(dict, NAME, (PyObject *)OBJECT) < 0)       \
  |  |  ------------------
  |  |  |  Branch (3530:9): [True: 0, False: 1]
  |  |  ------------------
  |  | 3531|      1|        return NULL;                                                    \
  |  | 3532|      1|    ADD_TO_ALL(OBJECT)
  |  |  ------------------
  |  |  |  | 3526|      1|#define ADD_TO_ALL(OBJECT) (void)0
  |  |  ------------------
  ------------------
 3544|      1|    SETBUILTIN("complex",               &PyComplex_Type);
  ------------------
  |  | 3530|      1|    if (PyDict_SetItemString(dict, NAME, (PyObject *)OBJECT) < 0)       \
  |  |  ------------------
  |  |  |  Branch (3530:9): [True: 0, False: 1]
  |  |  ------------------
  |  | 3531|      1|        return NULL;                                                    \
  |  | 3532|      1|    ADD_TO_ALL(OBJECT)
  |  |  ------------------
  |  |  |  | 3526|      1|#define ADD_TO_ALL(OBJECT) (void)0
  |  |  ------------------
  ------------------
 3545|      1|    SETBUILTIN("dict",                  &PyDict_Type);
  ------------------
  |  | 3530|      1|    if (PyDict_SetItemString(dict, NAME, (PyObject *)OBJECT) < 0)       \
  |  |  ------------------
  |  |  |  Branch (3530:9): [True: 0, False: 1]
  |  |  ------------------
  |  | 3531|      1|        return NULL;                                                    \
  |  | 3532|      1|    ADD_TO_ALL(OBJECT)
  |  |  ------------------
  |  |  |  | 3526|      1|#define ADD_TO_ALL(OBJECT) (void)0
  |  |  ------------------
  ------------------
 3546|      1|    SETBUILTIN("enumerate",             &PyEnum_Type);
  ------------------
  |  | 3530|      1|    if (PyDict_SetItemString(dict, NAME, (PyObject *)OBJECT) < 0)       \
  |  |  ------------------
  |  |  |  Branch (3530:9): [True: 0, False: 1]
  |  |  ------------------
  |  | 3531|      1|        return NULL;                                                    \
  |  | 3532|      1|    ADD_TO_ALL(OBJECT)
  |  |  ------------------
  |  |  |  | 3526|      1|#define ADD_TO_ALL(OBJECT) (void)0
  |  |  ------------------
  ------------------
 3547|      1|    SETBUILTIN("filter",                &PyFilter_Type);
  ------------------
  |  | 3530|      1|    if (PyDict_SetItemString(dict, NAME, (PyObject *)OBJECT) < 0)       \
  |  |  ------------------
  |  |  |  Branch (3530:9): [True: 0, False: 1]
  |  |  ------------------
  |  | 3531|      1|        return NULL;                                                    \
  |  | 3532|      1|    ADD_TO_ALL(OBJECT)
  |  |  ------------------
  |  |  |  | 3526|      1|#define ADD_TO_ALL(OBJECT) (void)0
  |  |  ------------------
  ------------------
 3548|      1|    SETBUILTIN("float",                 &PyFloat_Type);
  ------------------
  |  | 3530|      1|    if (PyDict_SetItemString(dict, NAME, (PyObject *)OBJECT) < 0)       \
  |  |  ------------------
  |  |  |  Branch (3530:9): [True: 0, False: 1]
  |  |  ------------------
  |  | 3531|      1|        return NULL;                                                    \
  |  | 3532|      1|    ADD_TO_ALL(OBJECT)
  |  |  ------------------
  |  |  |  | 3526|      1|#define ADD_TO_ALL(OBJECT) (void)0
  |  |  ------------------
  ------------------
 3549|      1|    SETBUILTIN("frozendict",            &PyFrozenDict_Type);
  ------------------
  |  | 3530|      1|    if (PyDict_SetItemString(dict, NAME, (PyObject *)OBJECT) < 0)       \
  |  |  ------------------
  |  |  |  Branch (3530:9): [True: 0, False: 1]
  |  |  ------------------
  |  | 3531|      1|        return NULL;                                                    \
  |  | 3532|      1|    ADD_TO_ALL(OBJECT)
  |  |  ------------------
  |  |  |  | 3526|      1|#define ADD_TO_ALL(OBJECT) (void)0
  |  |  ------------------
  ------------------
 3550|      1|    SETBUILTIN("frozenset",             &PyFrozenSet_Type);
  ------------------
  |  | 3530|      1|    if (PyDict_SetItemString(dict, NAME, (PyObject *)OBJECT) < 0)       \
  |  |  ------------------
  |  |  |  Branch (3530:9): [True: 0, False: 1]
  |  |  ------------------
  |  | 3531|      1|        return NULL;                                                    \
  |  | 3532|      1|    ADD_TO_ALL(OBJECT)
  |  |  ------------------
  |  |  |  | 3526|      1|#define ADD_TO_ALL(OBJECT) (void)0
  |  |  ------------------
  ------------------
 3551|      1|    SETBUILTIN("property",              &PyProperty_Type);
  ------------------
  |  | 3530|      1|    if (PyDict_SetItemString(dict, NAME, (PyObject *)OBJECT) < 0)       \
  |  |  ------------------
  |  |  |  Branch (3530:9): [True: 0, False: 1]
  |  |  ------------------
  |  | 3531|      1|        return NULL;                                                    \
  |  | 3532|      1|    ADD_TO_ALL(OBJECT)
  |  |  ------------------
  |  |  |  | 3526|      1|#define ADD_TO_ALL(OBJECT) (void)0
  |  |  ------------------
  ------------------
 3552|      1|    SETBUILTIN("int",                   &PyLong_Type);
  ------------------
  |  | 3530|      1|    if (PyDict_SetItemString(dict, NAME, (PyObject *)OBJECT) < 0)       \
  |  |  ------------------
  |  |  |  Branch (3530:9): [True: 0, False: 1]
  |  |  ------------------
  |  | 3531|      1|        return NULL;                                                    \
  |  | 3532|      1|    ADD_TO_ALL(OBJECT)
  |  |  ------------------
  |  |  |  | 3526|      1|#define ADD_TO_ALL(OBJECT) (void)0
  |  |  ------------------
  ------------------
 3553|      1|    SETBUILTIN("list",                  &PyList_Type);
  ------------------
  |  | 3530|      1|    if (PyDict_SetItemString(dict, NAME, (PyObject *)OBJECT) < 0)       \
  |  |  ------------------
  |  |  |  Branch (3530:9): [True: 0, False: 1]
  |  |  ------------------
  |  | 3531|      1|        return NULL;                                                    \
  |  | 3532|      1|    ADD_TO_ALL(OBJECT)
  |  |  ------------------
  |  |  |  | 3526|      1|#define ADD_TO_ALL(OBJECT) (void)0
  |  |  ------------------
  ------------------
 3554|      1|    SETBUILTIN("map",                   &PyMap_Type);
  ------------------
  |  | 3530|      1|    if (PyDict_SetItemString(dict, NAME, (PyObject *)OBJECT) < 0)       \
  |  |  ------------------
  |  |  |  Branch (3530:9): [True: 0, False: 1]
  |  |  ------------------
  |  | 3531|      1|        return NULL;                                                    \
  |  | 3532|      1|    ADD_TO_ALL(OBJECT)
  |  |  ------------------
  |  |  |  | 3526|      1|#define ADD_TO_ALL(OBJECT) (void)0
  |  |  ------------------
  ------------------
 3555|      1|    SETBUILTIN("object",                &PyBaseObject_Type);
  ------------------
  |  | 3530|      1|    if (PyDict_SetItemString(dict, NAME, (PyObject *)OBJECT) < 0)       \
  |  |  ------------------
  |  |  |  Branch (3530:9): [True: 0, False: 1]
  |  |  ------------------
  |  | 3531|      1|        return NULL;                                                    \
  |  | 3532|      1|    ADD_TO_ALL(OBJECT)
  |  |  ------------------
  |  |  |  | 3526|      1|#define ADD_TO_ALL(OBJECT) (void)0
  |  |  ------------------
  ------------------
 3556|      1|    SETBUILTIN("range",                 &PyRange_Type);
  ------------------
  |  | 3530|      1|    if (PyDict_SetItemString(dict, NAME, (PyObject *)OBJECT) < 0)       \
  |  |  ------------------
  |  |  |  Branch (3530:9): [True: 0, False: 1]
  |  |  ------------------
  |  | 3531|      1|        return NULL;                                                    \
  |  | 3532|      1|    ADD_TO_ALL(OBJECT)
  |  |  ------------------
  |  |  |  | 3526|      1|#define ADD_TO_ALL(OBJECT) (void)0
  |  |  ------------------
  ------------------
 3557|      1|    SETBUILTIN("reversed",              &PyReversed_Type);
  ------------------
  |  | 3530|      1|    if (PyDict_SetItemString(dict, NAME, (PyObject *)OBJECT) < 0)       \
  |  |  ------------------
  |  |  |  Branch (3530:9): [True: 0, False: 1]
  |  |  ------------------
  |  | 3531|      1|        return NULL;                                                    \
  |  | 3532|      1|    ADD_TO_ALL(OBJECT)
  |  |  ------------------
  |  |  |  | 3526|      1|#define ADD_TO_ALL(OBJECT) (void)0
  |  |  ------------------
  ------------------
 3558|      1|    SETBUILTIN("sentinel",              &PySentinel_Type);
  ------------------
  |  | 3530|      1|    if (PyDict_SetItemString(dict, NAME, (PyObject *)OBJECT) < 0)       \
  |  |  ------------------
  |  |  |  Branch (3530:9): [True: 0, False: 1]
  |  |  ------------------
  |  | 3531|      1|        return NULL;                                                    \
  |  | 3532|      1|    ADD_TO_ALL(OBJECT)
  |  |  ------------------
  |  |  |  | 3526|      1|#define ADD_TO_ALL(OBJECT) (void)0
  |  |  ------------------
  ------------------
 3559|      1|    SETBUILTIN("set",                   &PySet_Type);
  ------------------
  |  | 3530|      1|    if (PyDict_SetItemString(dict, NAME, (PyObject *)OBJECT) < 0)       \
  |  |  ------------------
  |  |  |  Branch (3530:9): [True: 0, False: 1]
  |  |  ------------------
  |  | 3531|      1|        return NULL;                                                    \
  |  | 3532|      1|    ADD_TO_ALL(OBJECT)
  |  |  ------------------
  |  |  |  | 3526|      1|#define ADD_TO_ALL(OBJECT) (void)0
  |  |  ------------------
  ------------------
 3560|      1|    SETBUILTIN("slice",                 &PySlice_Type);
  ------------------
  |  | 3530|      1|    if (PyDict_SetItemString(dict, NAME, (PyObject *)OBJECT) < 0)       \
  |  |  ------------------
  |  |  |  Branch (3530:9): [True: 0, False: 1]
  |  |  ------------------
  |  | 3531|      1|        return NULL;                                                    \
  |  | 3532|      1|    ADD_TO_ALL(OBJECT)
  |  |  ------------------
  |  |  |  | 3526|      1|#define ADD_TO_ALL(OBJECT) (void)0
  |  |  ------------------
  ------------------
 3561|      1|    SETBUILTIN("staticmethod",          &PyStaticMethod_Type);
  ------------------
  |  | 3530|      1|    if (PyDict_SetItemString(dict, NAME, (PyObject *)OBJECT) < 0)       \
  |  |  ------------------
  |  |  |  Branch (3530:9): [True: 0, False: 1]
  |  |  ------------------
  |  | 3531|      1|        return NULL;                                                    \
  |  | 3532|      1|    ADD_TO_ALL(OBJECT)
  |  |  ------------------
  |  |  |  | 3526|      1|#define ADD_TO_ALL(OBJECT) (void)0
  |  |  ------------------
  ------------------
 3562|      1|    SETBUILTIN("str",                   &PyUnicode_Type);
  ------------------
  |  | 3530|      1|    if (PyDict_SetItemString(dict, NAME, (PyObject *)OBJECT) < 0)       \
  |  |  ------------------
  |  |  |  Branch (3530:9): [True: 0, False: 1]
  |  |  ------------------
  |  | 3531|      1|        return NULL;                                                    \
  |  | 3532|      1|    ADD_TO_ALL(OBJECT)
  |  |  ------------------
  |  |  |  | 3526|      1|#define ADD_TO_ALL(OBJECT) (void)0
  |  |  ------------------
  ------------------
 3563|      1|    SETBUILTIN("super",                 &PySuper_Type);
  ------------------
  |  | 3530|      1|    if (PyDict_SetItemString(dict, NAME, (PyObject *)OBJECT) < 0)       \
  |  |  ------------------
  |  |  |  Branch (3530:9): [True: 0, False: 1]
  |  |  ------------------
  |  | 3531|      1|        return NULL;                                                    \
  |  | 3532|      1|    ADD_TO_ALL(OBJECT)
  |  |  ------------------
  |  |  |  | 3526|      1|#define ADD_TO_ALL(OBJECT) (void)0
  |  |  ------------------
  ------------------
 3564|      1|    SETBUILTIN("tuple",                 &PyTuple_Type);
  ------------------
  |  | 3530|      1|    if (PyDict_SetItemString(dict, NAME, (PyObject *)OBJECT) < 0)       \
  |  |  ------------------
  |  |  |  Branch (3530:9): [True: 0, False: 1]
  |  |  ------------------
  |  | 3531|      1|        return NULL;                                                    \
  |  | 3532|      1|    ADD_TO_ALL(OBJECT)
  |  |  ------------------
  |  |  |  | 3526|      1|#define ADD_TO_ALL(OBJECT) (void)0
  |  |  ------------------
  ------------------
 3565|      1|    SETBUILTIN("type",                  &PyType_Type);
  ------------------
  |  | 3530|      1|    if (PyDict_SetItemString(dict, NAME, (PyObject *)OBJECT) < 0)       \
  |  |  ------------------
  |  |  |  Branch (3530:9): [True: 0, False: 1]
  |  |  ------------------
  |  | 3531|      1|        return NULL;                                                    \
  |  | 3532|      1|    ADD_TO_ALL(OBJECT)
  |  |  ------------------
  |  |  |  | 3526|      1|#define ADD_TO_ALL(OBJECT) (void)0
  |  |  ------------------
  ------------------
 3566|      1|    SETBUILTIN("zip",                   &PyZip_Type);
  ------------------
  |  | 3530|      1|    if (PyDict_SetItemString(dict, NAME, (PyObject *)OBJECT) < 0)       \
  |  |  ------------------
  |  |  |  Branch (3530:9): [True: 0, False: 1]
  |  |  ------------------
  |  | 3531|      1|        return NULL;                                                    \
  |  | 3532|      1|    ADD_TO_ALL(OBJECT)
  |  |  ------------------
  |  |  |  | 3526|      1|#define ADD_TO_ALL(OBJECT) (void)0
  |  |  ------------------
  ------------------
 3567|      1|    debug = PyBool_FromLong(config->optimization_level == 0);
 3568|      1|    if (PyDict_SetItemString(dict, "__debug__", debug) < 0) {
  ------------------
  |  Branch (3568:9): [True: 0, False: 1]
  ------------------
 3569|      0|        Py_DECREF(debug);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3570|      0|        return NULL;
 3571|      0|    }
 3572|      1|    Py_DECREF(debug);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3573|       |
 3574|      1|    return mod;
 3575|      1|#undef ADD_TO_ALL
 3576|      1|#undef SETBUILTIN
 3577|      1|}
bltinmodule.c:zip_dealloc:
 3230|      1|{
 3231|      1|    zipobject *lz = _zipobject_CAST(self);
  ------------------
  |  | 3159|      1|#define _zipobject_CAST(op)     ((zipobject *)(op))
  ------------------
 3232|      1|    PyObject_GC_UnTrack(lz);
 3233|      1|    Py_XDECREF(lz->ittuple);
  ------------------
  |  |  524|      1|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3234|      1|    Py_XDECREF(lz->result);
  ------------------
  |  |  524|      1|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3235|      1|    Py_TYPE(lz)->tp_free(lz);
  ------------------
  |  |  213|      1|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3236|      1|}
bltinmodule.c:zip_new:
 3163|      1|{
 3164|      1|    zipobject *lz;
 3165|      1|    Py_ssize_t i;
 3166|      1|    PyObject *ittuple;  /* tuple of iterators */
 3167|      1|    PyObject *result;
 3168|      1|    Py_ssize_t tuplesize;
 3169|      1|    int strict = 0;
 3170|       |
 3171|      1|    if (kwds) {
  ------------------
  |  Branch (3171:9): [True: 0, False: 1]
  ------------------
 3172|      0|        PyObject *empty = PyTuple_New(0);
 3173|      0|        if (empty == NULL) {
  ------------------
  |  Branch (3173:13): [True: 0, False: 0]
  ------------------
 3174|      0|            return NULL;
 3175|      0|        }
 3176|      0|        static char *kwlist[] = {"strict", NULL};
 3177|      0|        int parsed = PyArg_ParseTupleAndKeywords(
 3178|      0|                empty, kwds, "|$p:zip", kwlist, &strict);
 3179|      0|        Py_DECREF(empty);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3180|      0|        if (!parsed) {
  ------------------
  |  Branch (3180:13): [True: 0, False: 0]
  ------------------
 3181|      0|            return NULL;
 3182|      0|        }
 3183|      0|    }
 3184|       |
 3185|       |    /* args must be a tuple */
 3186|      1|    assert(PyTuple_Check(args));
  ------------------
  |  Branch (3186:5): [True: 1, False: 0]
  ------------------
 3187|      1|    tuplesize = PyTuple_GET_SIZE(args);
  ------------------
  |  |   27|      1|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3188|       |
 3189|       |    /* obtain iterators */
 3190|      1|    ittuple = PyTuple_New(tuplesize);
 3191|      1|    if (ittuple == NULL)
  ------------------
  |  Branch (3191:9): [True: 0, False: 1]
  ------------------
 3192|      0|        return NULL;
 3193|      1|    for (i=0; i < tuplesize; ++i) {
  ------------------
  |  Branch (3193:15): [True: 0, False: 1]
  ------------------
 3194|      0|        PyObject *item = PyTuple_GET_ITEM(args, i);
  ------------------
  |  |   29|      0|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|      0|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3194:26): [True: 0, False: 0]
  ------------------
 3195|      0|        PyObject *it = PyObject_GetIter(item);
 3196|      0|        if (it == NULL) {
  ------------------
  |  Branch (3196:13): [True: 0, False: 0]
  ------------------
 3197|      0|            Py_DECREF(ittuple);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3198|      0|            return NULL;
 3199|      0|        }
 3200|      0|        PyTuple_SET_ITEM(ittuple, i, it);
  ------------------
  |  |   40|      0|    PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3201|      0|    }
 3202|       |
 3203|       |    /* create a result holder */
 3204|      1|    result = PyTuple_New(tuplesize);
 3205|      1|    if (result == NULL) {
  ------------------
  |  Branch (3205:9): [True: 0, False: 1]
  ------------------
 3206|      0|        Py_DECREF(ittuple);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3207|      0|        return NULL;
 3208|      0|    }
 3209|      1|    for (i=0 ; i < tuplesize ; i++) {
  ------------------
  |  Branch (3209:16): [True: 0, False: 1]
  ------------------
 3210|      0|        PyTuple_SET_ITEM(result, i, Py_NewRef(Py_None));
  ------------------
  |  |   40|      0|    PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3211|      0|    }
 3212|       |
 3213|       |    /* create zipobject structure */
 3214|      1|    lz = (zipobject *)type->tp_alloc(type, 0);
 3215|      1|    if (lz == NULL) {
  ------------------
  |  Branch (3215:9): [True: 0, False: 1]
  ------------------
 3216|      0|        Py_DECREF(ittuple);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3217|      0|        Py_DECREF(result);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3218|      0|        return NULL;
 3219|      0|    }
 3220|      1|    lz->ittuple = ittuple;
 3221|      1|    lz->tuplesize = tuplesize;
 3222|      1|    lz->result = result;
 3223|      1|    lz->strict = strict;
 3224|       |
 3225|      1|    return (PyObject *)lz;
 3226|      1|}
bltinmodule.c:builtin___build_class__:
  104|     84|{
  105|     84|    PyObject *func, *name, *winner, *prep;
  106|     84|    PyObject *cls = NULL, *cell = NULL, *ns = NULL, *meta = NULL, *orig_bases = NULL;
  107|     84|    PyObject *mkw = NULL, *bases = NULL;
  108|     84|    int isclass = 0;   /* initialize to prevent gcc warning */
  109|       |
  110|     84|    if (nargs < 2) {
  ------------------
  |  Branch (110:9): [True: 0, False: 84]
  ------------------
  111|      0|        PyErr_SetString(PyExc_TypeError,
  112|      0|                        "__build_class__: not enough arguments");
  113|      0|        return NULL;
  114|      0|    }
  115|     84|    func = args[0];   /* Better be callable */
  116|     84|    if (!PyFunction_Check(func)) {
  ------------------
  |  |   68|     84|#define PyFunction_Check(op) Py_IS_TYPE((op), &PyFunction_Type)
  |  |  ------------------
  |  |  |  |  215|     84|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     84|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     84|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (116:9): [True: 0, False: 84]
  ------------------
  117|      0|        PyErr_SetString(PyExc_TypeError,
  118|      0|                        "__build_class__: func must be a function");
  119|      0|        return NULL;
  120|      0|    }
  121|     84|    name = args[1];
  122|     84|    if (!PyUnicode_Check(name)) {
  ------------------
  |  |  103|     84|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     84|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (122:9): [True: 0, False: 84]
  ------------------
  123|      0|        PyErr_SetString(PyExc_TypeError,
  124|      0|                        "__build_class__: name is not a string");
  125|      0|        return NULL;
  126|      0|    }
  127|     84|    orig_bases = PyTuple_FromArray(args + 2, nargs - 2);
  128|     84|    if (orig_bases == NULL)
  ------------------
  |  Branch (128:9): [True: 0, False: 84]
  ------------------
  129|      0|        return NULL;
  130|       |
  131|     84|    bases = update_bases(orig_bases, args + 2, nargs - 2);
  132|     84|    if (bases == NULL) {
  ------------------
  |  Branch (132:9): [True: 0, False: 84]
  ------------------
  133|      0|        Py_DECREF(orig_bases);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  134|      0|        return NULL;
  135|      0|    }
  136|       |
  137|     84|    if (kwnames == NULL) {
  ------------------
  |  Branch (137:9): [True: 74, False: 10]
  ------------------
  138|     74|        meta = NULL;
  139|     74|        mkw = NULL;
  140|     74|    }
  141|     10|    else {
  142|     10|        mkw = _PyStack_AsDict(args + nargs, kwnames);
  143|     10|        if (mkw == NULL) {
  ------------------
  |  Branch (143:13): [True: 0, False: 10]
  ------------------
  144|      0|            goto error;
  145|      0|        }
  146|       |
  147|     10|        if (PyDict_Pop(mkw, &_Py_ID(metaclass), &meta) < 0) {
  ------------------
  |  |  917|     10|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     10|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     10|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (147:13): [True: 0, False: 10]
  ------------------
  148|      0|            goto error;
  149|      0|        }
  150|     10|        if (meta != NULL) {
  ------------------
  |  Branch (150:13): [True: 10, False: 0]
  ------------------
  151|       |            /* metaclass is explicitly given, check if it's indeed a class */
  152|     10|            isclass = PyType_Check(meta);
  ------------------
  |  |  766|     10|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     10|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  153|     10|        }
  154|     10|    }
  155|     84|    if (meta == NULL) {
  ------------------
  |  Branch (155:9): [True: 74, False: 10]
  ------------------
  156|       |        /* if there are no bases, use type: */
  157|     74|        if (PyTuple_GET_SIZE(bases) == 0) {
  ------------------
  |  |   27|     74|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     74|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     74|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (157:13): [True: 24, False: 50]
  ------------------
  158|     24|            meta = (PyObject *) (&PyType_Type);
  159|     24|        }
  160|       |        /* else get the type of the first base */
  161|     50|        else {
  162|     50|            PyObject *base0 = PyTuple_GET_ITEM(bases, 0);
  ------------------
  |  |   29|     50|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|     50|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     50|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (162:31): [True: 50, False: 0]
  ------------------
  163|     50|            meta = (PyObject *)Py_TYPE(base0);
  ------------------
  |  |  213|     50|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     50|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     50|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  164|     50|        }
  165|     74|        Py_INCREF(meta);
  ------------------
  |  |  310|     74|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     74|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     74|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  166|     74|        isclass = 1;  /* meta is really a class */
  167|     74|    }
  168|       |
  169|     84|    if (isclass) {
  ------------------
  |  Branch (169:9): [True: 84, False: 0]
  ------------------
  170|       |        /* meta is really a class, so check for a more derived
  171|       |           metaclass, or possible metaclass conflicts: */
  172|     84|        winner = (PyObject *)_PyType_CalculateMetaclass((PyTypeObject *)meta,
  173|     84|                                                        bases);
  174|     84|        if (winner == NULL) {
  ------------------
  |  Branch (174:13): [True: 0, False: 84]
  ------------------
  175|      0|            goto error;
  176|      0|        }
  177|     84|        if (winner != meta) {
  ------------------
  |  Branch (177:13): [True: 0, False: 84]
  ------------------
  178|      0|            Py_SETREF(meta, Py_NewRef(winner));
  ------------------
  |  |  352|      0|    do { \
  |  |  353|      0|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  354|      0|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  355|      0|        *_tmp_dst_ptr = (src); \
  |  |  356|      0|        Py_DECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  357|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (357:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  179|      0|        }
  180|     84|    }
  181|       |    /* else: meta is not a class, so we cannot do the metaclass
  182|       |       calculation, so we will use the explicitly given object as it is */
  183|     84|    if (PyObject_GetOptionalAttr(meta, &_Py_ID(__prepare__), &prep) < 0) {
  ------------------
  |  |  917|     84|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     84|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     84|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (183:9): [True: 0, False: 84]
  ------------------
  184|      0|        ns = NULL;
  185|      0|    }
  186|     84|    else if (prep == NULL) {
  ------------------
  |  Branch (186:14): [True: 0, False: 84]
  ------------------
  187|      0|        ns = PyDict_New();
  188|      0|    }
  189|     84|    else {
  190|     84|        PyObject *pargs[2] = {name, bases};
  191|     84|        ns = PyObject_VectorcallDict(prep, pargs, 2, mkw);
  192|     84|        Py_DECREF(prep);
  ------------------
  |  |  430|     84|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     84|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     84|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  193|     84|    }
  194|     84|    if (ns == NULL) {
  ------------------
  |  Branch (194:9): [True: 0, False: 84]
  ------------------
  195|      0|        goto error;
  196|      0|    }
  197|     84|    if (!PyMapping_Check(ns)) {
  ------------------
  |  Branch (197:9): [True: 0, False: 84]
  ------------------
  198|      0|        PyErr_Format(PyExc_TypeError,
  199|      0|                     "%.200s.__prepare__() must return a mapping, not %.200s",
  200|      0|                     isclass ? ((PyTypeObject *)meta)->tp_name : "<metaclass>",
  ------------------
  |  Branch (200:22): [True: 0, False: 0]
  ------------------
  201|      0|                     Py_TYPE(ns)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  202|      0|        goto error;
  203|      0|    }
  204|     84|    PyThreadState *tstate = _PyThreadState_GET();
  205|     84|    EVAL_CALL_STAT_INC(EVAL_CALL_BUILD_CLASS);
  ------------------
  |  |   79|     84|#define EVAL_CALL_STAT_INC(name) ((void)0)
  ------------------
  206|     84|    cell = _PyEval_Vector(tstate, (PyFunctionObject *)func, ns, NULL, 0, NULL);
  207|     84|    if (cell != NULL) {
  ------------------
  |  Branch (207:9): [True: 84, False: 0]
  ------------------
  208|     84|        if (bases != orig_bases) {
  ------------------
  |  Branch (208:13): [True: 0, False: 84]
  ------------------
  209|      0|            if (PyMapping_SetItemString(ns, "__orig_bases__", orig_bases) < 0) {
  ------------------
  |  Branch (209:17): [True: 0, False: 0]
  ------------------
  210|      0|                goto error;
  211|      0|            }
  212|      0|        }
  213|     84|        PyObject *margs[3] = {name, bases, ns};
  214|     84|        cls = PyObject_VectorcallDict(meta, margs, 3, mkw);
  215|     84|        if (cls != NULL && PyType_Check(cls) && PyCell_Check(cell)) {
  ------------------
  |  |  766|    168|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     84|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     84|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (766:28): [True: 84, False: 0]
  |  |  ------------------
  ------------------
                      if (cls != NULL && PyType_Check(cls) && PyCell_Check(cell)) {
  ------------------
  |  |   18|     84|#define PyCell_Check(op) Py_IS_TYPE((op), &PyCell_Type)
  |  |  ------------------
  |  |  |  |  215|     84|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     84|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     84|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 6, False: 78]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (215:13): [True: 84, False: 0]
  ------------------
  216|      6|            PyObject *cell_cls = PyCell_GetRef((PyCellObject *)cell);
  217|      6|            if (cell_cls != cls) {
  ------------------
  |  Branch (217:17): [True: 0, False: 6]
  ------------------
  218|      0|                if (cell_cls == NULL) {
  ------------------
  |  Branch (218:21): [True: 0, False: 0]
  ------------------
  219|      0|                    const char *msg =
  220|      0|                        "__class__ not set defining %.200R as %.200R. "
  221|      0|                        "Was __classcell__ propagated to type.__new__?";
  222|      0|                    PyErr_Format(PyExc_RuntimeError, msg, name, cls);
  223|      0|                } else {
  224|      0|                    const char *msg =
  225|      0|                        "__class__ set to %.200R defining %.200R as %.200R";
  226|      0|                    PyErr_Format(PyExc_TypeError, msg, cell_cls, name, cls);
  227|      0|                }
  228|      0|                Py_XDECREF(cell_cls);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  229|      0|                Py_SETREF(cls, NULL);
  ------------------
  |  |  352|      0|    do { \
  |  |  353|      0|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  354|      0|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  355|      0|        *_tmp_dst_ptr = (src); \
  |  |  356|      0|        Py_DECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  357|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (357:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  230|      0|                goto error;
  231|      0|            }
  232|      6|            else {
  233|      6|                Py_DECREF(cell_cls);
  ------------------
  |  |  430|      6|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      6|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  234|      6|            }
  235|      6|        }
  236|     84|    }
  237|     84|error:
  238|     84|    Py_XDECREF(cell);
  ------------------
  |  |  524|     84|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     84|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     84|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  239|     84|    Py_XDECREF(ns);
  ------------------
  |  |  524|     84|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     84|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     84|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  240|     84|    Py_XDECREF(meta);
  ------------------
  |  |  524|     84|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     84|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     84|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  241|     84|    Py_XDECREF(mkw);
  ------------------
  |  |  524|     84|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     84|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     84|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  242|     84|    if (bases != orig_bases) {
  ------------------
  |  Branch (242:9): [True: 0, False: 84]
  ------------------
  243|      0|        Py_DECREF(orig_bases);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  244|      0|    }
  245|     84|    Py_DECREF(bases);
  ------------------
  |  |  430|     84|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     84|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     84|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  246|     84|    return cls;
  247|     84|}
bltinmodule.c:update_bases:
   30|     84|{
   31|     84|    Py_ssize_t i, j;
   32|     84|    PyObject *base, *meth, *new_base, *result, *new_bases = NULL;
   33|     84|    assert(PyTuple_Check(bases));
  ------------------
  |  Branch (33:5): [True: 84, False: 0]
  ------------------
   34|       |
   35|    145|    for (i = 0; i < nargs; i++) {
  ------------------
  |  Branch (35:17): [True: 61, False: 84]
  ------------------
   36|     61|        base  = args[i];
   37|     61|        if (PyType_Check(base)) {
  ------------------
  |  |  766|     61|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     61|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     61|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (766:28): [True: 61, False: 0]
  |  |  ------------------
  ------------------
   38|     61|            if (new_bases) {
  ------------------
  |  Branch (38:17): [True: 0, False: 61]
  ------------------
   39|       |                /* If we already have made a replacement, then we append every normal base,
   40|       |                   otherwise just skip it. */
   41|      0|                if (PyList_Append(new_bases, base) < 0) {
  ------------------
  |  Branch (41:21): [True: 0, False: 0]
  ------------------
   42|      0|                    goto error;
   43|      0|                }
   44|      0|            }
   45|     61|            continue;
   46|     61|        }
   47|      0|        if (PyObject_GetOptionalAttr(base, &_Py_ID(__mro_entries__), &meth) < 0) {
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (47:13): [True: 0, False: 0]
  ------------------
   48|      0|            goto error;
   49|      0|        }
   50|      0|        if (!meth) {
  ------------------
  |  Branch (50:13): [True: 0, False: 0]
  ------------------
   51|      0|            if (new_bases) {
  ------------------
  |  Branch (51:17): [True: 0, False: 0]
  ------------------
   52|      0|                if (PyList_Append(new_bases, base) < 0) {
  ------------------
  |  Branch (52:21): [True: 0, False: 0]
  ------------------
   53|      0|                    goto error;
   54|      0|                }
   55|      0|            }
   56|      0|            continue;
   57|      0|        }
   58|      0|        new_base = PyObject_CallOneArg(meth, bases);
   59|      0|        Py_DECREF(meth);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   60|      0|        if (!new_base) {
  ------------------
  |  Branch (60:13): [True: 0, False: 0]
  ------------------
   61|      0|            goto error;
   62|      0|        }
   63|      0|        if (!PyTuple_Check(new_base)) {
  ------------------
  |  |   27|      0|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TUPLE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (63:13): [True: 0, False: 0]
  ------------------
   64|      0|            PyErr_SetString(PyExc_TypeError,
   65|      0|                            "__mro_entries__ must return a tuple");
   66|      0|            Py_DECREF(new_base);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   67|      0|            goto error;
   68|      0|        }
   69|      0|        if (!new_bases) {
  ------------------
  |  Branch (69:13): [True: 0, False: 0]
  ------------------
   70|       |            /* If this is a first successful replacement, create new_bases list and
   71|       |               copy previously encountered bases. */
   72|      0|            if (!(new_bases = PyList_New(i))) {
  ------------------
  |  Branch (72:17): [True: 0, False: 0]
  ------------------
   73|      0|                Py_DECREF(new_base);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   74|      0|                goto error;
   75|      0|            }
   76|      0|            for (j = 0; j < i; j++) {
  ------------------
  |  Branch (76:25): [True: 0, False: 0]
  ------------------
   77|      0|                base = args[j];
   78|      0|                PyList_SET_ITEM(new_bases, j, Py_NewRef(base));
  ------------------
  |  |   50|      0|    PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   79|      0|            }
   80|      0|        }
   81|      0|        j = PyList_GET_SIZE(new_bases);
  ------------------
  |  |   38|      0|#define PyList_GET_SIZE(op) PyList_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   82|      0|        if (PyList_SetSlice(new_bases, j, j, new_base) < 0) {
  ------------------
  |  Branch (82:13): [True: 0, False: 0]
  ------------------
   83|      0|            Py_DECREF(new_base);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   84|      0|            goto error;
   85|      0|        }
   86|      0|        Py_DECREF(new_base);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   87|      0|    }
   88|     84|    if (!new_bases) {
  ------------------
  |  Branch (88:9): [True: 84, False: 0]
  ------------------
   89|     84|        return bases;
   90|     84|    }
   91|      0|    result = PyList_AsTuple(new_bases);
   92|      0|    Py_DECREF(new_bases);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   93|      0|    return result;
   94|       |
   95|      0|error:
   96|      0|    Py_XDECREF(new_bases);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   97|       |    return NULL;
   98|     84|}
bltinmodule.c:builtin___import___impl:
  285|     10|{
  286|     10|    return PyImport_ImportModuleLevelObject(name, globals, locals,
  287|     10|                                            fromlist, level);
  288|     10|}
bltinmodule.c:builtin_dir:
  973|      1|{
  974|      1|    PyObject *arg = NULL;
  975|       |
  976|      1|    if (!PyArg_UnpackTuple(args, "dir", 0, 1, &arg))
  ------------------
  |  Branch (976:9): [True: 0, False: 1]
  ------------------
  977|      0|        return NULL;
  978|      1|    return PyObject_Dir(arg);
  979|      1|}
bltinmodule.c:builtin_exec_impl:
 1160|     14|{
 1161|     14|    PyThreadState *tstate = _PyThreadState_GET();
 1162|     14|    PyObject *v;
 1163|       |
 1164|     14|    int fromframe = 0;
 1165|     14|    if (globals != Py_None) {
  ------------------
  |  |  616|     14|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (1165:9): [True: 14, False: 0]
  ------------------
 1166|     14|        Py_INCREF(globals);
  ------------------
  |  |  310|     14|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     14|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     14|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1167|     14|    }
 1168|      0|    else if (_PyEval_GetFrame() != NULL) {
  ------------------
  |  Branch (1168:14): [True: 0, False: 0]
  ------------------
 1169|      0|        fromframe = 1;
 1170|      0|        globals = PyEval_GetGlobals();
 1171|      0|        assert(globals != NULL);
  ------------------
  |  Branch (1171:9): [True: 0, False: 0]
  ------------------
 1172|      0|        Py_INCREF(globals);
  ------------------
  |  |  310|      0|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1173|      0|    }
 1174|      0|    else {
 1175|      0|        globals = _PyEval_GetGlobalsFromRunningMain(tstate);
 1176|      0|        if (globals == NULL) {
  ------------------
  |  Branch (1176:13): [True: 0, False: 0]
  ------------------
 1177|      0|            if (!_PyErr_Occurred(tstate)) {
  ------------------
  |  Branch (1177:17): [True: 0, False: 0]
  ------------------
 1178|      0|                PyErr_SetString(PyExc_SystemError,
 1179|      0|                                "globals and locals cannot be NULL");
 1180|      0|            }
 1181|      0|            goto error;
 1182|      0|        }
 1183|      0|        Py_INCREF(globals);
  ------------------
  |  |  310|      0|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1184|      0|    }
 1185|       |
 1186|     14|    if (locals != Py_None) {
  ------------------
  |  |  616|     14|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (1186:9): [True: 0, False: 14]
  ------------------
 1187|      0|        Py_INCREF(locals);
  ------------------
  |  |  310|      0|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1188|      0|    }
 1189|     14|    else if (fromframe) {
  ------------------
  |  Branch (1189:14): [True: 0, False: 14]
  ------------------
 1190|      0|        locals = _PyEval_GetFrameLocals();
 1191|      0|        if (locals == NULL) {
  ------------------
  |  Branch (1191:13): [True: 0, False: 0]
  ------------------
 1192|      0|            assert(PyErr_Occurred());
  ------------------
  |  Branch (1192:13): [True: 0, False: 0]
  ------------------
 1193|      0|            Py_DECREF(globals);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1194|      0|            return NULL;
 1195|      0|        }
 1196|      0|    }
 1197|     14|    else {
 1198|     14|        locals = Py_NewRef(globals);
  ------------------
  |  |  550|     14|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     14|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     14|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1199|     14|    }
 1200|       |
 1201|     14|    if (!PyAnyDict_Check(globals)) {
  ------------------
  |  |   43|     14|    (PyDict_Check(ob) || PyFrozenDict_Check(ob))
  |  |  ------------------
  |  |  |  |   18|     14|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|     28|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (760:41): [True: 14, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (PyDict_Check(ob) || PyFrozenDict_Check(ob))
  |  |  ------------------
  |  |  |  |   37|      0|#define PyFrozenDict_Check(op) PyObject_TypeCheck((op), &PyFrozenDict_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |  378|      0|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (378:40): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1202|      0|        PyErr_Format(PyExc_TypeError,
 1203|      0|                     "exec() globals must be a dict or a frozendict, not %T",
 1204|      0|                     globals);
 1205|      0|        goto error;
 1206|      0|    }
 1207|     14|    if (!PyMapping_Check(locals)) {
  ------------------
  |  Branch (1207:9): [True: 0, False: 14]
  ------------------
 1208|      0|        PyErr_Format(PyExc_TypeError,
 1209|      0|            "locals must be a mapping or None, not %.100s",
 1210|      0|            Py_TYPE(locals)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1211|      0|        goto error;
 1212|      0|    }
 1213|       |
 1214|     14|    if (_PyEval_EnsureBuiltins(tstate, globals, NULL) < 0) {
  ------------------
  |  Branch (1214:9): [True: 0, False: 14]
  ------------------
 1215|      0|        goto error;
 1216|      0|    }
 1217|       |
 1218|     14|    if (closure == Py_None) {
  ------------------
  |  |  616|     14|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (1218:9): [True: 0, False: 14]
  ------------------
 1219|      0|        closure = NULL;
 1220|      0|    }
 1221|       |
 1222|     14|    if (PyCode_Check(source)) {
  ------------------
  |  |  164|     14|#define PyCode_Check(op) Py_IS_TYPE((op), &PyCode_Type)
  |  |  ------------------
  |  |  |  |  215|     14|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     14|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     14|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 14, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1223|     14|        Py_ssize_t num_free = PyCode_GetNumFree((PyCodeObject *)source);
 1224|     14|        if (num_free == 0) {
  ------------------
  |  Branch (1224:13): [True: 14, False: 0]
  ------------------
 1225|     14|            if (closure) {
  ------------------
  |  Branch (1225:17): [True: 0, False: 14]
  ------------------
 1226|      0|                PyErr_SetString(PyExc_TypeError,
 1227|      0|                    "cannot use a closure with this code object");
 1228|      0|                goto error;
 1229|      0|            }
 1230|     14|        } else {
 1231|      0|            int closure_is_ok =
 1232|      0|                closure
  ------------------
  |  Branch (1232:17): [True: 0, False: 0]
  ------------------
 1233|      0|                && PyTuple_CheckExact(closure)
  ------------------
  |  |   28|      0|#define PyTuple_CheckExact(op) Py_IS_TYPE((op), &PyTuple_Type)
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1234|      0|                && (PyTuple_GET_SIZE(closure) == num_free);
  ------------------
  |  |   27|      0|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1234:20): [True: 0, False: 0]
  ------------------
 1235|      0|            if (closure_is_ok) {
  ------------------
  |  Branch (1235:17): [True: 0, False: 0]
  ------------------
 1236|      0|                for (Py_ssize_t i = 0; i < num_free; i++) {
  ------------------
  |  Branch (1236:40): [True: 0, False: 0]
  ------------------
 1237|      0|                    PyObject *cell = PyTuple_GET_ITEM(closure, i);
  ------------------
  |  |   29|      0|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|      0|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1237:38): [True: 0, False: 0]
  ------------------
 1238|      0|                    if (!PyCell_Check(cell)) {
  ------------------
  |  |   18|      0|#define PyCell_Check(op) Py_IS_TYPE((op), &PyCell_Type)
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1238:25): [True: 0, False: 0]
  ------------------
 1239|      0|                        closure_is_ok = 0;
 1240|      0|                        break;
 1241|      0|                    }
 1242|      0|                }
 1243|      0|            }
 1244|      0|            if (!closure_is_ok) {
  ------------------
  |  Branch (1244:17): [True: 0, False: 0]
  ------------------
 1245|      0|                PyErr_Format(PyExc_TypeError,
 1246|      0|                    "code object requires a closure of exactly length %zd",
 1247|      0|                    num_free);
 1248|      0|                goto error;
 1249|      0|            }
 1250|      0|        }
 1251|       |
 1252|     14|        if (PySys_Audit("exec", "O", source) < 0) {
  ------------------
  |  Branch (1252:13): [True: 0, False: 14]
  ------------------
 1253|      0|            goto error;
 1254|      0|        }
 1255|       |
 1256|     14|        if (!closure) {
  ------------------
  |  Branch (1256:13): [True: 14, False: 0]
  ------------------
 1257|     14|            v = PyEval_EvalCode(source, globals, locals);
 1258|     14|        } else {
 1259|      0|            v = PyEval_EvalCodeEx(source, globals, locals,
 1260|      0|                NULL, 0,
 1261|      0|                NULL, 0,
 1262|      0|                NULL, 0,
 1263|      0|                NULL,
 1264|      0|                closure);
 1265|      0|        }
 1266|     14|    }
 1267|      0|    else {
 1268|      0|        if (closure != NULL) {
  ------------------
  |  Branch (1268:13): [True: 0, False: 0]
  ------------------
 1269|      0|            PyErr_SetString(PyExc_TypeError,
 1270|      0|                "closure can only be used when source is a code object");
 1271|      0|            goto error;
 1272|      0|        }
 1273|      0|        PyObject *source_copy;
 1274|      0|        const char *str;
 1275|      0|        PyCompilerFlags cf = _PyCompilerFlags_INIT;
  ------------------
  |  |   33|      0|    (PyCompilerFlags){.cf_flags = 0, .cf_feature_version = PY_MINOR_VERSION}
  |  |  ------------------
  |  |  |  |   24|      0|#define PY_MINOR_VERSION        16
  |  |  ------------------
  ------------------
 1276|      0|        cf.cf_flags = PyCF_SOURCE_IS_UTF8;
  ------------------
  |  |   15|      0|#define PyCF_SOURCE_IS_UTF8  0x0100
  ------------------
 1277|      0|        str = _Py_SourceAsString(source, "exec",
 1278|      0|                                       "string, bytes or code", &cf,
 1279|      0|                                       &source_copy);
 1280|      0|        if (str == NULL)
  ------------------
  |  Branch (1280:13): [True: 0, False: 0]
  ------------------
 1281|      0|            goto error;
 1282|      0|        if (PyEval_MergeCompilerFlags(&cf))
  ------------------
  |  Branch (1282:13): [True: 0, False: 0]
  ------------------
 1283|      0|            v = PyRun_StringFlags(str, Py_file_input, globals,
  ------------------
  |  |    9|      0|#define Py_file_input 257
  ------------------
 1284|      0|                                  locals, &cf);
 1285|      0|        else
 1286|      0|            v = PyRun_String(str, Py_file_input, globals, locals);
  ------------------
  |  |   76|      0|#define PyRun_String(str, s, g, l) PyRun_StringFlags((str), (s), (g), (l), NULL)
  ------------------
 1287|      0|        Py_XDECREF(source_copy);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1288|      0|    }
 1289|     14|    if (v == NULL)
  ------------------
  |  Branch (1289:9): [True: 0, False: 14]
  ------------------
 1290|      0|        goto error;
 1291|     14|    Py_DECREF(globals);
  ------------------
  |  |  430|     14|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     14|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     14|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1292|     14|    Py_DECREF(locals);
  ------------------
  |  |  430|     14|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     14|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     14|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1293|     14|    Py_DECREF(v);
  ------------------
  |  |  430|     14|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     14|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     14|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1294|     14|    Py_RETURN_NONE;
  ------------------
  |  |  628|     14|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|     14|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
 1295|       |
 1296|      0|  error:
 1297|      0|    Py_XDECREF(globals);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1298|      0|    Py_XDECREF(locals);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1299|       |    return NULL;
 1300|     14|}
bltinmodule.c:builtin_getattr:
 1306|    250|{
 1307|    250|    PyObject *v, *name, *result;
 1308|       |
 1309|    250|    if (!_PyArg_CheckPositional("getattr", nargs, 2, 3))
  ------------------
  |  |   31|    250|    (((min) <= (nargs) && (nargs) <= (max)) \
  |  |  ------------------
  |  |  |  Branch (31:7): [True: 250, False: 0]
  |  |  |  Branch (31:27): [True: 250, False: 0]
  |  |  ------------------
  |  |   32|    250|     || _PyArg_CheckPositional((funcname), (nargs), (min), (max)))
  |  |  ------------------
  |  |  |  Branch (32:9): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1310|      0|        return NULL;
 1311|       |
 1312|    250|    v = args[0];
 1313|    250|    name = args[1];
 1314|    250|    if (nargs > 2) {
  ------------------
  |  Branch (1314:9): [True: 214, False: 36]
  ------------------
 1315|    214|        if (PyObject_GetOptionalAttr(v, name, &result) == 0) {
  ------------------
  |  Branch (1315:13): [True: 30, False: 184]
  ------------------
 1316|     30|            PyObject *dflt = args[2];
 1317|     30|            return Py_NewRef(dflt);
  ------------------
  |  |  550|     30|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     30|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     30|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1318|     30|        }
 1319|    214|    }
 1320|     36|    else {
 1321|     36|        result = PyObject_GetAttr(v, name);
 1322|     36|    }
 1323|    220|    return result;
 1324|    250|}
bltinmodule.c:builtin_globals_impl:
 1346|     18|{
 1347|     18|    PyObject *globals;
 1348|     18|    if (_PyEval_GetFrame() != NULL) {
  ------------------
  |  Branch (1348:9): [True: 18, False: 0]
  ------------------
 1349|     18|        globals = PyEval_GetGlobals();
 1350|     18|        assert(globals != NULL);
  ------------------
  |  Branch (1350:9): [True: 18, False: 0]
  ------------------
 1351|     18|        return Py_NewRef(globals);
  ------------------
  |  |  550|     18|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     18|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     18|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1352|     18|    }
 1353|      0|    PyThreadState *tstate = _PyThreadState_GET();
 1354|      0|    globals = _PyEval_GetGlobalsFromRunningMain(tstate);
 1355|      0|    if (globals == NULL) {
  ------------------
  |  Branch (1355:9): [True: 0, False: 0]
  ------------------
 1356|      0|        if (_PyErr_Occurred(tstate)) {
  ------------------
  |  Branch (1356:13): [True: 0, False: 0]
  ------------------
 1357|      0|            return NULL;
 1358|      0|        }
 1359|      0|        Py_RETURN_NONE;
  ------------------
  |  |  628|      0|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
 1360|      0|    }
 1361|      0|    return Py_NewRef(globals);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1362|      0|}
bltinmodule.c:builtin_hasattr_impl:
 1380|     82|{
 1381|     82|    PyObject *v;
 1382|       |
 1383|     82|    if (PyObject_GetOptionalAttr(obj, name, &v) < 0) {
  ------------------
  |  Branch (1383:9): [True: 0, False: 82]
  ------------------
 1384|      0|        return NULL;
 1385|      0|    }
 1386|     82|    if (v == NULL) {
  ------------------
  |  Branch (1386:9): [True: 3, False: 79]
  ------------------
 1387|      3|        Py_RETURN_FALSE;
  ------------------
  |  |   45|      3|#  define Py_RETURN_FALSE return Py_False
  |  |  ------------------
  |  |  |  |   25|      3|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1388|      3|    }
 1389|     79|    Py_DECREF(v);
  ------------------
  |  |  430|     79|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     79|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     79|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1390|     79|    Py_RETURN_TRUE;
  ------------------
  |  |   44|     79|#  define Py_RETURN_TRUE return Py_True
  |  |  ------------------
  |  |  |  |   26|     79|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     79|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     79|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1391|     82|}
bltinmodule.c:builtin_isinstance_impl:
 3114|     11|{
 3115|     11|    int retval;
 3116|       |
 3117|     11|    retval = PyObject_IsInstance(obj, class_or_tuple);
 3118|     11|    if (retval < 0)
  ------------------
  |  Branch (3118:9): [True: 0, False: 11]
  ------------------
 3119|      0|        return NULL;
 3120|     11|    return PyBool_FromLong(retval);
 3121|     11|}
bltinmodule.c:builtin_iter:
 1887|     13|{
 1888|     13|    PyObject *v;
 1889|       |
 1890|     13|    if (!_PyArg_CheckPositional("iter", nargs, 1, 2))
  ------------------
  |  |   31|     13|    (((min) <= (nargs) && (nargs) <= (max)) \
  |  |  ------------------
  |  |  |  Branch (31:7): [True: 13, False: 0]
  |  |  |  Branch (31:27): [True: 13, False: 0]
  |  |  ------------------
  |  |   32|     13|     || _PyArg_CheckPositional((funcname), (nargs), (min), (max)))
  |  |  ------------------
  |  |  |  Branch (32:9): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1891|      0|        return NULL;
 1892|     13|    v = args[0];
 1893|     13|    if (nargs == 1)
  ------------------
  |  Branch (1893:9): [True: 13, False: 0]
  ------------------
 1894|     13|        return PyObject_GetIter(v);
 1895|      0|    if (!PyCallable_Check(v)) {
  ------------------
  |  Branch (1895:9): [True: 0, False: 0]
  ------------------
 1896|      0|        PyErr_SetString(PyExc_TypeError,
 1897|      0|                        "iter(v, w): v must be callable");
 1898|      0|        return NULL;
 1899|      0|    }
 1900|      0|    PyObject *sentinel = args[1];
 1901|      0|    return PyCallIter_New(v, sentinel);
 1902|      0|}
bltinmodule.c:builtin_len:
 1987|      7|{
 1988|      7|    Py_ssize_t res;
 1989|       |
 1990|      7|    res = PyObject_Size(obj);
 1991|      7|    if (res < 0) {
  ------------------
  |  Branch (1991:9): [True: 0, False: 7]
  ------------------
 1992|      0|        assert(PyErr_Occurred());
  ------------------
  |  Branch (1992:9): [True: 0, False: 0]
  ------------------
 1993|      0|        return NULL;
 1994|      0|    }
 1995|      7|    return PyLong_FromSsize_t(res);
 1996|      7|}
bltinmodule.c:builtin_max:
 2169|      1|{
 2170|      1|    return min_max(args, nargs, kwnames, Py_GT);
  ------------------
  |  |  656|      1|#define Py_GT 4
  ------------------
 2171|      1|}
bltinmodule.c:min_max:
 2033|      1|{
 2034|      1|    PyObject *it = NULL, *item, *val, *maxitem, *maxval, *keyfunc=NULL;
 2035|      1|    PyObject *defaultval = NULL;
 2036|      1|    static const char * const keywords[] = {"key", "default", NULL};
 2037|      1|    static _PyArg_Parser _parser_min = {"|$OO:min", keywords, 0};
 2038|      1|    static _PyArg_Parser _parser_max = {"|$OO:max", keywords, 0};
 2039|      1|    const char *name = (op == Py_LT) ? "min" : "max";
  ------------------
  |  |  652|      1|#define Py_LT 0
  ------------------
  |  Branch (2039:24): [True: 0, False: 1]
  ------------------
 2040|      1|    _PyArg_Parser *_parser = (op == Py_LT) ? &_parser_min : &_parser_max;
  ------------------
  |  |  652|      1|#define Py_LT 0
  ------------------
  |  Branch (2040:30): [True: 0, False: 1]
  ------------------
 2041|       |
 2042|      1|    if (nargs == 0) {
  ------------------
  |  Branch (2042:9): [True: 0, False: 1]
  ------------------
 2043|      0|        PyErr_Format(PyExc_TypeError, "%s expected at least 1 argument, got 0", name);
 2044|      0|        return NULL;
 2045|      0|    }
 2046|       |
 2047|      1|    if (kwnames != NULL && !_PyArg_ParseStackAndKeywords(args + nargs, 0, kwnames, _parser,
  ------------------
  |  Branch (2047:9): [True: 0, False: 1]
  |  Branch (2047:28): [True: 0, False: 0]
  ------------------
 2048|      0|                                                         &keyfunc, &defaultval)) {
 2049|      0|        return NULL;
 2050|      0|    }
 2051|       |
 2052|      1|    const int positional = nargs > 1; // False iff nargs == 1
 2053|      1|    if (positional && defaultval != NULL) {
  ------------------
  |  Branch (2053:9): [True: 0, False: 1]
  |  Branch (2053:23): [True: 0, False: 0]
  ------------------
 2054|      0|        PyErr_Format(PyExc_TypeError,
 2055|      0|                        "Cannot specify a default for %s() with multiple "
 2056|      0|                        "positional arguments", name);
 2057|      0|        return NULL;
 2058|      0|    }
 2059|       |
 2060|      1|    if (!positional) {
  ------------------
  |  Branch (2060:9): [True: 1, False: 0]
  ------------------
 2061|      1|        it = PyObject_GetIter(args[0]);
 2062|      1|        if (it == NULL) {
  ------------------
  |  Branch (2062:13): [True: 0, False: 1]
  ------------------
 2063|      0|            return NULL;
 2064|      0|        }
 2065|      1|    }
 2066|       |
 2067|      1|    if (keyfunc == Py_None) {
  ------------------
  |  |  616|      1|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (2067:9): [True: 0, False: 1]
  ------------------
 2068|      0|        keyfunc = NULL;
 2069|      0|    }
 2070|       |
 2071|      1|    maxitem = NULL; /* the result */
 2072|      1|    maxval = NULL;  /* the value associated with the result */
 2073|      2|    while (1) {
  ------------------
  |  Branch (2073:12): [True: 2, Folded]
  ------------------
 2074|      2|        if (it == NULL) {
  ------------------
  |  Branch (2074:13): [True: 0, False: 2]
  ------------------
 2075|      0|            if (nargs-- <= 0) {
  ------------------
  |  Branch (2075:17): [True: 0, False: 0]
  ------------------
 2076|      0|                break;
 2077|      0|            }
 2078|      0|            item = *args++;
 2079|      0|            Py_INCREF(item);
  ------------------
  |  |  310|      0|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2080|      0|        }
 2081|      2|        else {
 2082|      2|            item = PyIter_Next(it);
 2083|      2|            if (item == NULL) {
  ------------------
  |  Branch (2083:17): [True: 1, False: 1]
  ------------------
 2084|      1|                if (PyErr_Occurred()) {
  ------------------
  |  Branch (2084:21): [True: 0, False: 1]
  ------------------
 2085|      0|                    goto Fail_it;
 2086|      0|                }
 2087|      1|                break;
 2088|      1|            }
 2089|      2|        }
 2090|       |
 2091|       |        /* get the value from the key function */
 2092|      1|        if (keyfunc != NULL) {
  ------------------
  |  Branch (2092:13): [True: 0, False: 1]
  ------------------
 2093|      0|            val = PyObject_CallOneArg(keyfunc, item);
 2094|      0|            if (val == NULL)
  ------------------
  |  Branch (2094:17): [True: 0, False: 0]
  ------------------
 2095|      0|                goto Fail_it_item;
 2096|      0|        }
 2097|       |        /* no key function; the value is the item */
 2098|      1|        else {
 2099|      1|            val = Py_NewRef(item);
  ------------------
  |  |  550|      1|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2100|      1|        }
 2101|       |
 2102|       |        /* maximum value and item are unset; set them */
 2103|      1|        if (maxval == NULL) {
  ------------------
  |  Branch (2103:13): [True: 1, False: 0]
  ------------------
 2104|      1|            maxitem = item;
 2105|      1|            maxval = val;
 2106|      1|        }
 2107|       |        /* maximum value and item are set; update them as necessary */
 2108|      0|        else {
 2109|      0|            int cmp = PyObject_RichCompareBool(val, maxval, op);
 2110|      0|            if (cmp < 0)
  ------------------
  |  Branch (2110:17): [True: 0, False: 0]
  ------------------
 2111|      0|                goto Fail_it_item_and_val;
 2112|      0|            else if (cmp > 0) {
  ------------------
  |  Branch (2112:22): [True: 0, False: 0]
  ------------------
 2113|      0|                Py_DECREF(maxval);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2114|      0|                Py_DECREF(maxitem);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2115|      0|                maxval = val;
 2116|      0|                maxitem = item;
 2117|      0|            }
 2118|      0|            else {
 2119|      0|                Py_DECREF(item);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2120|      0|                Py_DECREF(val);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2121|      0|            }
 2122|      0|        }
 2123|      1|    }
 2124|      1|    if (maxval == NULL) {
  ------------------
  |  Branch (2124:9): [True: 0, False: 1]
  ------------------
 2125|      0|        assert(maxitem == NULL);
  ------------------
  |  Branch (2125:9): [True: 0, False: 0]
  ------------------
 2126|      0|        if (defaultval != NULL) {
  ------------------
  |  Branch (2126:13): [True: 0, False: 0]
  ------------------
 2127|      0|            maxitem = Py_NewRef(defaultval);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2128|      0|        } else {
 2129|      0|            PyErr_Format(PyExc_ValueError,
 2130|      0|                         "%s() iterable argument is empty", name);
 2131|      0|        }
 2132|      0|    }
 2133|      1|    else
 2134|      1|        Py_DECREF(maxval);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2135|      1|    Py_XDECREF(it);
  ------------------
  |  |  524|      1|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2136|      1|    return maxitem;
 2137|       |
 2138|      0|Fail_it_item_and_val:
 2139|      0|    Py_DECREF(val);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2140|      0|Fail_it_item:
 2141|      0|    Py_DECREF(item);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2142|      0|Fail_it:
 2143|      0|    Py_XDECREF(maxval);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2144|      0|    Py_XDECREF(maxitem);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2145|      0|    Py_XDECREF(it);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2146|       |    return NULL;
 2147|      0|}
bltinmodule.c:builtin_next:
 1750|      1|{
 1751|      1|    PyObject *it, *res;
 1752|       |
 1753|      1|    if (!_PyArg_CheckPositional("next", nargs, 1, 2))
  ------------------
  |  |   31|      1|    (((min) <= (nargs) && (nargs) <= (max)) \
  |  |  ------------------
  |  |  |  Branch (31:7): [True: 1, False: 0]
  |  |  |  Branch (31:27): [True: 1, False: 0]
  |  |  ------------------
  |  |   32|      1|     || _PyArg_CheckPositional((funcname), (nargs), (min), (max)))
  |  |  ------------------
  |  |  |  Branch (32:9): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1754|      0|        return NULL;
 1755|       |
 1756|      1|    it = args[0];
 1757|      1|    if (!PyIter_Check(it)) {
  ------------------
  |  Branch (1757:9): [True: 0, False: 1]
  ------------------
 1758|      0|        PyErr_Format(PyExc_TypeError,
 1759|      0|            "'%.200s' object is not an iterator",
 1760|      0|            Py_TYPE(it)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1761|      0|        return NULL;
 1762|      0|    }
 1763|       |
 1764|      1|    res = (*Py_TYPE(it)->tp_iternext)(it);
  ------------------
  |  |  213|      1|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1765|      1|    if (res != NULL) {
  ------------------
  |  Branch (1765:9): [True: 0, False: 1]
  ------------------
 1766|      0|        return res;
 1767|      1|    } else if (nargs > 1) {
  ------------------
  |  Branch (1767:16): [True: 1, False: 0]
  ------------------
 1768|      1|        PyObject *def = args[1];
 1769|      1|        if (PyErr_Occurred()) {
  ------------------
  |  Branch (1769:13): [True: 0, False: 1]
  ------------------
 1770|      0|            if(!PyErr_ExceptionMatches(PyExc_StopIteration))
  ------------------
  |  Branch (1770:16): [True: 0, False: 0]
  ------------------
 1771|      0|                return NULL;
 1772|      0|            PyErr_Clear();
 1773|      0|        }
 1774|      1|        return Py_NewRef(def);
  ------------------
  |  |  550|      1|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1775|      1|    } else if (PyErr_Occurred()) {
  ------------------
  |  Branch (1775:16): [True: 0, False: 0]
  ------------------
 1776|      0|        return NULL;
 1777|      0|    } else {
 1778|      0|        PyErr_SetNone(PyExc_StopIteration);
 1779|       |        return NULL;
 1780|      0|    }
 1781|      1|}
bltinmodule.c:builtin_setattr_impl:
 1807|     41|{
 1808|     41|    if (PyObject_SetAttr(obj, name, value) != 0)
  ------------------
  |  Branch (1808:9): [True: 0, False: 41]
  ------------------
 1809|      0|        return NULL;
 1810|     41|    Py_RETURN_NONE;
  ------------------
  |  |  628|     41|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|     41|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
 1811|     41|}
bltinmodule.c:builtin_sorted:
 2729|      2|{
 2730|      2|    PyObject *newlist, *v, *seq, *callable;
 2731|       |
 2732|       |    /* Keyword arguments are passed through list.sort() which will check
 2733|       |       them. */
 2734|      2|    if (!_PyArg_UnpackStack(args, nargs, "sorted", 1, 1, &seq))
  ------------------
  |  Branch (2734:9): [True: 0, False: 2]
  ------------------
 2735|      0|        return NULL;
 2736|       |
 2737|      2|    newlist = PySequence_List(seq);
 2738|      2|    if (newlist == NULL)
  ------------------
  |  Branch (2738:9): [True: 0, False: 2]
  ------------------
 2739|      0|        return NULL;
 2740|       |
 2741|      2|    callable = PyObject_GetAttr(newlist, &_Py_ID(sort));
  ------------------
  |  |  917|      2|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      2|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      2|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2742|      2|    if (callable == NULL) {
  ------------------
  |  Branch (2742:9): [True: 0, False: 2]
  ------------------
 2743|      0|        Py_DECREF(newlist);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2744|      0|        return NULL;
 2745|      0|    }
 2746|       |
 2747|      2|    assert(nargs >= 1);
  ------------------
  |  Branch (2747:5): [True: 2, False: 0]
  ------------------
 2748|      2|    v = PyObject_Vectorcall(callable, args + 1, nargs - 1, kwnames);
 2749|      2|    Py_DECREF(callable);
  ------------------
  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2750|      2|    if (v == NULL) {
  ------------------
  |  Branch (2750:9): [True: 0, False: 2]
  ------------------
 2751|      0|        Py_DECREF(newlist);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2752|      0|        return NULL;
 2753|      0|    }
 2754|      2|    Py_DECREF(v);
  ------------------
  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2755|      2|    return newlist;
 2756|      2|}
bltinmodule.c:builtin_vars:
 2762|      1|{
 2763|      1|    PyObject *v = NULL;
 2764|      1|    PyObject *d;
 2765|       |
 2766|      1|    if (!PyArg_UnpackTuple(args, "vars", 0, 1, &v))
  ------------------
  |  Branch (2766:9): [True: 0, False: 1]
  ------------------
 2767|      0|        return NULL;
 2768|      1|    if (v == NULL) {
  ------------------
  |  Branch (2768:9): [True: 0, False: 1]
  ------------------
 2769|      0|        if (_PyEval_GetFrame() != NULL) {
  ------------------
  |  Branch (2769:13): [True: 0, False: 0]
  ------------------
 2770|      0|            d = _PyEval_GetFrameLocals();
 2771|      0|        }
 2772|      0|        else {
 2773|      0|            PyThreadState *tstate = _PyThreadState_GET();
 2774|      0|            d = _PyEval_GetGlobalsFromRunningMain(tstate);
 2775|      0|            if (d == NULL) {
  ------------------
  |  Branch (2775:17): [True: 0, False: 0]
  ------------------
 2776|      0|                if (!_PyErr_Occurred(tstate)) {
  ------------------
  |  Branch (2776:21): [True: 0, False: 0]
  ------------------
 2777|      0|                    d = _PyEval_GetFrameLocals();
 2778|      0|                    assert(_PyErr_Occurred(tstate));
  ------------------
  |  Branch (2778:21): [True: 0, False: 0]
  ------------------
 2779|      0|                }
 2780|      0|            }
 2781|      0|            else {
 2782|      0|                Py_INCREF(d);
  ------------------
  |  |  310|      0|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2783|      0|            }
 2784|      0|        }
 2785|      0|    }
 2786|      1|    else {
 2787|      1|        if (PyObject_GetOptionalAttr(v, &_Py_ID(__dict__), &d) == 0) {
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2787:13): [True: 0, False: 1]
  ------------------
 2788|      0|            PyErr_SetString(PyExc_TypeError,
 2789|      0|                "vars() argument must have __dict__ attribute");
 2790|      0|        }
 2791|      1|    }
 2792|      1|    return d;
 2793|      1|}

_Py_HashRandomization_Init:
  554|      1|{
  555|      1|    void *secret = &_Py_HashSecret;
  556|      1|    Py_ssize_t secret_size = sizeof(_Py_HashSecret_t);
  557|       |
  558|      1|    if (_Py_HashSecret_Initialized) {
  ------------------
  |  Branch (558:9): [True: 0, False: 1]
  ------------------
  559|      0|        return _PyStatus_OK();
  ------------------
  |  |   24|      0|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
  560|      0|    }
  561|      1|    _Py_HashSecret_Initialized = 1;
  562|       |
  563|      1|    if (config->use_hash_seed) {
  ------------------
  |  Branch (563:9): [True: 0, False: 1]
  ------------------
  564|      0|        if (config->hash_seed == 0) {
  ------------------
  |  Branch (564:13): [True: 0, False: 0]
  ------------------
  565|       |            /* disable the randomized hash */
  566|      0|            memset(secret, 0, secret_size);
  567|      0|        }
  568|      0|        else {
  569|       |            /* use the specified hash seed */
  570|      0|            lcg_urandom(config->hash_seed, secret, secret_size);
  571|      0|        }
  572|      0|    }
  573|      1|    else {
  574|       |        /* use a random hash seed */
  575|      1|        int res;
  576|       |
  577|       |        /* _PyRandom_Init() is called very early in the Python initialization
  578|       |           and so exceptions cannot be used (use raise=0).
  579|       |
  580|       |           _PyRandom_Init() must not block Python initialization: call
  581|       |           pyurandom() is non-blocking mode (blocking=0): see the PEP 524. */
  582|      1|        res = pyurandom(secret, secret_size, 0, 0);
  583|      1|        if (res < 0) {
  ------------------
  |  Branch (583:13): [True: 0, False: 1]
  ------------------
  584|      0|            return _PyStatus_ERR("failed to get random numbers "
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
  585|      0|                                 "to initialize Python");
  586|      0|        }
  587|      1|    }
  588|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
  589|      1|}
bootstrap_hash.c:pyurandom:
  479|      1|{
  480|      1|#if defined(PY_GETRANDOM) || defined(PY_GETENTROPY)
  481|      1|    int res;
  482|      1|#endif
  483|       |
  484|      1|    if (size < 0) {
  ------------------
  |  Branch (484:9): [True: 0, False: 1]
  ------------------
  485|      0|        if (raise) {
  ------------------
  |  Branch (485:13): [True: 0, False: 0]
  ------------------
  486|      0|            PyErr_Format(PyExc_ValueError,
  487|      0|                         "negative argument not allowed");
  488|      0|        }
  489|      0|        return -1;
  490|      0|    }
  491|       |
  492|      1|    if (size == 0) {
  ------------------
  |  Branch (492:9): [True: 0, False: 1]
  ------------------
  493|      0|        return 0;
  494|      0|    }
  495|       |
  496|       |#ifdef MS_WINDOWS
  497|       |    return win32_urandom((unsigned char *)buffer, size, raise);
  498|       |#else
  499|       |
  500|      1|#if defined(PY_GETRANDOM) || defined(PY_GETENTROPY)
  501|      1|    if (HAVE_GETENTRYPY_GETRANDOM_RUNTIME) {
  ------------------
  |  |   40|      1|#  define HAVE_GETENTRYPY_GETRANDOM_RUNTIME 1
  |  |  ------------------
  |  |  |  Branch (40:45): [True: 1, Folded]
  |  |  ------------------
  ------------------
  502|      1|#ifdef PY_GETRANDOM
  503|      1|        res = py_getrandom(buffer, size, blocking, raise);
  504|       |#else
  505|       |        res = py_getentropy(buffer, size, raise);
  506|       |#endif
  507|      1|        if (res < 0) {
  ------------------
  |  Branch (507:13): [True: 0, False: 1]
  ------------------
  508|      0|            return -1;
  509|      0|        }
  510|      1|        if (res == 1) {
  ------------------
  |  Branch (510:13): [True: 1, False: 0]
  ------------------
  511|      1|            return 0;
  512|      1|        }
  513|       |        /* getrandom() or getentropy() function is not available: failed with
  514|       |           ENOSYS or EPERM. Fall back on reading from /dev/urandom. */
  515|      1|        } /* end of availability block */
  516|      0|#endif
  517|       |
  518|      0|    return dev_urandom(buffer, size, raise);
  519|      1|#endif
  520|      1|}
bootstrap_hash.c:py_getrandom:
   93|      1|{
   94|       |    /* Is getrandom() supported by the running kernel? Set to 0 if getrandom()
   95|       |       failed with ENOSYS or EPERM. Need Linux kernel 3.17 or newer, or Solaris
   96|       |       11.3 or newer */
   97|      1|    static int getrandom_works = 1;
   98|      1|    int flags;
   99|      1|    char *dest;
  100|      1|    long n;
  101|       |
  102|      1|    if (!getrandom_works) {
  ------------------
  |  Branch (102:9): [True: 0, False: 1]
  ------------------
  103|      0|        return 0;
  104|      0|    }
  105|       |
  106|      1|    flags = blocking ? 0 : GRND_NONBLOCK;
  ------------------
  |  Branch (106:13): [True: 0, False: 1]
  ------------------
  107|      1|    dest = buffer;
  108|      2|    while (0 < size) {
  ------------------
  |  Branch (108:12): [True: 1, False: 1]
  ------------------
  109|       |#if defined(__sun) && defined(__SVR4)
  110|       |        /* Issue #26735: On Solaris, getrandom() is limited to returning up
  111|       |           to 1024 bytes. Call it multiple times if more bytes are
  112|       |           requested. */
  113|       |        n = Py_MIN(size, 1024);
  114|       |#else
  115|      1|        n = Py_MIN(size, LONG_MAX);
  ------------------
  |  |  112|      1|#define Py_MIN(x, y) (((x) > (y)) ? (y) : (x))
  |  |  ------------------
  |  |  |  Branch (112:23): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  116|      1|#endif
  117|       |
  118|      1|        errno = 0;
  119|      1|#ifdef HAVE_GETRANDOM
  120|      1|        if (raise) {
  ------------------
  |  Branch (120:13): [True: 0, False: 1]
  ------------------
  121|      0|            Py_BEGIN_ALLOW_THREADS
  ------------------
  |  |  119|      0|#define Py_BEGIN_ALLOW_THREADS { \
  |  |  120|      0|                        PyThreadState *_save; \
  |  |  121|      0|                        _save = PyEval_SaveThread();
  ------------------
  122|      0|            n = getrandom(dest, n, flags);
  123|      0|            Py_END_ALLOW_THREADS
  ------------------
  |  |  124|      0|#define Py_END_ALLOW_THREADS    PyEval_RestoreThread(_save); \
  |  |  125|      0|                 }
  ------------------
  124|      0|        }
  125|      1|        else {
  126|      1|            n = getrandom(dest, n, flags);
  127|      1|        }
  128|       |#else
  129|       |        /* On Linux, use the syscall() function because the GNU libc doesn't
  130|       |           expose the Linux getrandom() syscall yet. See:
  131|       |           https://sourceware.org/bugzilla/show_bug.cgi?id=17252 */
  132|       |        if (raise) {
  133|       |            Py_BEGIN_ALLOW_THREADS
  134|       |            n = syscall(SYS_getrandom, dest, n, flags);
  135|       |            Py_END_ALLOW_THREADS
  136|       |        }
  137|       |        else {
  138|       |            n = syscall(SYS_getrandom, dest, n, flags);
  139|       |        }
  140|       |#  ifdef _Py_MEMORY_SANITIZER
  141|       |        if (n > 0) {
  142|       |             __msan_unpoison(dest, n);
  143|       |        }
  144|       |#  endif
  145|       |#endif
  146|       |
  147|      1|        if (n < 0) {
  ------------------
  |  Branch (147:13): [True: 0, False: 1]
  ------------------
  148|       |            /* ENOSYS: the syscall is not supported by the kernel.
  149|       |               EPERM: the syscall is blocked by a security policy (ex: SECCOMP)
  150|       |               or something else. */
  151|      0|            if (errno == ENOSYS || errno == EPERM) {
  ------------------
  |  Branch (151:17): [True: 0, False: 0]
  |  Branch (151:36): [True: 0, False: 0]
  ------------------
  152|      0|                getrandom_works = 0;
  153|      0|                return 0;
  154|      0|            }
  155|       |
  156|       |            /* getrandom(GRND_NONBLOCK) fails with EAGAIN if the system urandom
  157|       |               is not initialized yet. For _PyRandom_Init(), we ignore the
  158|       |               error and fall back on reading /dev/urandom which never blocks,
  159|       |               even if the system urandom is not initialized yet:
  160|       |               see the PEP 524. */
  161|      0|            if (errno == EAGAIN && !raise && !blocking) {
  ------------------
  |  Branch (161:17): [True: 0, False: 0]
  |  Branch (161:36): [True: 0, False: 0]
  |  Branch (161:46): [True: 0, False: 0]
  ------------------
  162|      0|                return 0;
  163|      0|            }
  164|       |
  165|      0|            if (errno == EINTR) {
  ------------------
  |  Branch (165:17): [True: 0, False: 0]
  ------------------
  166|      0|                if (raise) {
  ------------------
  |  Branch (166:21): [True: 0, False: 0]
  ------------------
  167|      0|                    if (PyErr_CheckSignals()) {
  ------------------
  |  Branch (167:25): [True: 0, False: 0]
  ------------------
  168|      0|                        return -1;
  169|      0|                    }
  170|      0|                }
  171|       |
  172|       |                /* retry getrandom() if it was interrupted by a signal */
  173|      0|                continue;
  174|      0|            }
  175|       |
  176|      0|            if (raise) {
  ------------------
  |  Branch (176:17): [True: 0, False: 0]
  ------------------
  177|      0|                PyErr_SetFromErrno(PyExc_OSError);
  178|      0|            }
  179|      0|            return -1;
  180|      0|        }
  181|       |
  182|      1|        dest += n;
  183|      1|        size -= n;
  184|      1|    }
  185|      1|    return 1;
  186|      1|}

_Py_InitializeRecursionLimits:
  234|      1|{
  235|      1|    uintptr_t base, top;
  236|      1|    uintptr_t here_addr = _Py_get_machine_stack_pointer();
  237|      1|    hardware_stack_limits(&base, &top, here_addr);
  238|      1|    assert(top != 0);
  ------------------
  |  Branch (238:5): [True: 1, False: 0]
  ------------------
  239|       |
  240|      1|    tstate_set_stack(tstate, base, top);
  241|      1|    _PyThreadStateImpl *ts = (_PyThreadStateImpl *)tstate;
  242|      1|    ts->c_stack_init_base = base;
  243|      1|    ts->c_stack_init_top = top;
  244|      1|}
PyEval_EvalCode:
  661|     16|{
  662|     16|    PyThreadState *tstate = _PyThreadState_GET();
  663|     16|    if (locals == NULL) {
  ------------------
  |  Branch (663:9): [True: 0, False: 16]
  ------------------
  664|      0|        locals = globals;
  665|      0|    }
  666|     16|    PyObject *builtins = _PyDict_LoadBuiltinsFromGlobals(globals);
  667|     16|    if (builtins == NULL) {
  ------------------
  |  Branch (667:9): [True: 0, False: 16]
  ------------------
  668|      0|        return NULL;
  669|      0|    }
  670|     16|    PyFrameConstructor desc = {
  671|     16|        .fc_globals = globals,
  672|     16|        .fc_builtins = builtins,
  673|     16|        .fc_name = ((PyCodeObject *)co)->co_name,
  674|     16|        .fc_qualname = ((PyCodeObject *)co)->co_name,
  675|     16|        .fc_code = co,
  676|     16|        .fc_defaults = NULL,
  677|     16|        .fc_kwdefaults = NULL,
  678|     16|        .fc_closure = NULL
  679|     16|    };
  680|     16|    PyFunctionObject *func = _PyFunction_FromConstructor(&desc);
  681|     16|    _Py_DECREF_BUILTINS(builtins);
  ------------------
  |  |  387|     16|#  define _Py_DECREF_BUILTINS Py_DECREF
  |  |  ------------------
  |  |  |  |   80|     16|    do { \
  |  |  |  |   81|     16|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     16|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     16|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   82|     16|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|     16|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|     16|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     16|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 16]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   84|      0|            break; \
  |  |  |  |   85|      0|        } \
  |  |  |  |   86|     16|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|     16|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   87|     16|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (87:13): [True: 0, False: 16]
  |  |  |  |  ------------------
  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |   91|      0|        } \
  |  |  |  |   92|     16|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (92:14): [Folded, False: 16]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  682|     16|    if (func == NULL) {
  ------------------
  |  Branch (682:9): [True: 0, False: 16]
  ------------------
  683|      0|        return NULL;
  684|      0|    }
  685|     16|    EVAL_CALL_STAT_INC(EVAL_CALL_LEGACY);
  ------------------
  |  |   79|     16|#define EVAL_CALL_STAT_INC(name) ((void)0)
  ------------------
  686|     16|    PyObject *res = _PyEval_Vector(tstate, func, locals, NULL, 0, NULL);
  687|       |    Py_DECREF(func);
  ------------------
  |  |   80|     16|    do { \
  |  |   81|     16|        PyObject *op = _PyObject_CAST(arg); \
  |  |  ------------------
  |  |  |  |  171|     16|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     16|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|     16|        if (_Py_IsImmortal(op)) { \
  |  |  ------------------
  |  |  |  |  137|     16|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     16|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     16|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:28): [True: 0, False: 16]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   84|      0|            break; \
  |  |   85|      0|        } \
  |  |   86|     16|        _Py_DECREF_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   20|     16|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   87|     16|        if (--op->ob_refcnt == 0) { \
  |  |  ------------------
  |  |  |  Branch (87:13): [True: 16, False: 0]
  |  |  ------------------
  |  |   88|     16|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  ------------------
  |  |  |  |  112|     16|    do { \
  |  |  |  |  113|     16|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  114|     16|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (114:13): [True: 0, False: 16]
  |  |  |  |  ------------------
  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  117|      0|        } \
  |  |  |  |  118|     16|    } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:13): [Folded, False: 16]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   89|     16|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  ------------------
  |  |  |  |  213|     16|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     16|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     16|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   90|     16|            (*dealloc)(op); \
  |  |   91|     16|        } \
  |  |   92|     16|    } while (0)
  |  |  ------------------
  |  |  |  Branch (92:14): [Folded, False: 16]
  |  |  ------------------
  ------------------
  688|     16|    return res;
  689|     16|}
_Py_VectorCall_StackRefSteal:
  720|    565|{
  721|    565|    PyObject *res;
  722|    565|    STACKREFS_TO_PYOBJECTS(arguments, total_args, args_o);
  ------------------
  |  |  500|    565|    PyObject *NAME##_temp[MAX_STACKREF_SCRATCH+1]; \
  |  |  501|    565|    PyObject **NAME = _PyObjectArray_FromStackRefArray(ARGS, ARG_COUNT, NAME##_temp);
  ------------------
  723|    565|    if (CONVERSION_FAILED(args_o)) {
  ------------------
  |  |  507|    565|#define CONVERSION_FAILED(NAME) ((NAME) == NULL)
  |  |  ------------------
  |  |  |  Branch (507:33): [True: 0, False: 565]
  |  |  ------------------
  ------------------
  724|      0|        res = NULL;
  725|      0|        goto cleanup;
  726|      0|    }
  727|    565|    PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  728|    565|    PyObject *kwnames_o = PyStackRef_AsPyObjectBorrow(kwnames);
  729|    565|    int positional_args = total_args;
  730|    565|    if (kwnames_o != NULL) {
  ------------------
  |  Branch (730:9): [True: 44, False: 521]
  ------------------
  731|     44|        positional_args -= (int)PyTuple_GET_SIZE(kwnames_o);
  ------------------
  |  |   27|     44|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     44|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     44|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  732|     44|    }
  733|    565|    res = PyObject_Vectorcall(
  734|    565|        callable_o, args_o,
  735|    565|        positional_args | PY_VECTORCALL_ARGUMENTS_OFFSET,
  ------------------
  |  |  287|    565|    (_Py_STATIC_CAST(size_t, 1) << (8 * sizeof(size_t) - 1))
  |  |  ------------------
  |  |  |  |   34|    565|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  736|    565|        kwnames_o);
  737|    565|    STACKREFS_TO_PYOBJECTS_CLEANUP(args_o);
  ------------------
  |  |  505|    565|    _PyObjectArray_Free(NAME - 1, NAME##_temp);
  ------------------
  738|    565|    assert((res != NULL) ^ (PyErr_Occurred() != NULL));
  ------------------
  |  Branch (738:5): [True: 565, False: 0]
  ------------------
  739|    565|cleanup:
  740|    565|    PyStackRef_XCLOSE(kwnames);
  741|       |    // arguments is a pointer into the GC visible stack,
  742|       |    // so we must NULL out values as we clear them.
  743|    937|    for (int i = total_args-1; i >= 0; i--) {
  ------------------
  |  Branch (743:32): [True: 372, False: 565]
  ------------------
  744|    372|        _PyStackRef tmp = arguments[i];
  745|    372|        arguments[i] = PyStackRef_NULL;
  746|    372|        PyStackRef_CLOSE(tmp);
  747|    372|    }
  748|    565|    PyStackRef_CLOSE(callable);
  749|    565|    return res;
  750|    565|}
_Py_VectorCallInstrumentation_StackRefSteal:
  762|    572|{
  763|    572|    PyObject* res;
  764|    572|    STACKREFS_TO_PYOBJECTS(arguments, total_args, args_o);
  ------------------
  |  |  500|    572|    PyObject *NAME##_temp[MAX_STACKREF_SCRATCH+1]; \
  |  |  501|    572|    PyObject **NAME = _PyObjectArray_FromStackRefArray(ARGS, ARG_COUNT, NAME##_temp);
  ------------------
  765|    572|    if (CONVERSION_FAILED(args_o)) {
  ------------------
  |  |  507|    572|#define CONVERSION_FAILED(NAME) ((NAME) == NULL)
  |  |  ------------------
  |  |  |  Branch (507:33): [True: 0, False: 572]
  |  |  ------------------
  ------------------
  766|      0|        res = NULL;
  767|      0|        goto cleanup;
  768|      0|    }
  769|    572|    PyObject* callable_o = PyStackRef_AsPyObjectBorrow(callable);
  770|    572|    PyObject* kwnames_o = PyStackRef_AsPyObjectBorrow(kwnames);
  771|    572|    int positional_args = total_args;
  772|    572|    if (kwnames_o != NULL) {
  ------------------
  |  Branch (772:9): [True: 19, False: 553]
  ------------------
  773|     19|        positional_args -= (int)PyTuple_GET_SIZE(kwnames_o);
  ------------------
  |  |   27|     19|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     19|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     19|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  774|     19|    }
  775|    572|    res = PyObject_Vectorcall(
  776|    572|        callable_o, args_o,
  777|    572|        positional_args | PY_VECTORCALL_ARGUMENTS_OFFSET,
  ------------------
  |  |  287|    572|    (_Py_STATIC_CAST(size_t, 1) << (8 * sizeof(size_t) - 1))
  |  |  ------------------
  |  |  |  |   34|    572|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  778|    572|        kwnames_o);
  779|    572|    STACKREFS_TO_PYOBJECTS_CLEANUP(args_o);
  ------------------
  |  |  505|    572|    _PyObjectArray_Free(NAME - 1, NAME##_temp);
  ------------------
  780|    572|    if (call_instrumentation) {
  ------------------
  |  Branch (780:9): [True: 0, False: 572]
  ------------------
  781|      0|        PyObject* arg = total_args == 0 ?
  ------------------
  |  Branch (781:25): [True: 0, False: 0]
  ------------------
  782|      0|            &_PyInstrumentation_MISSING : PyStackRef_AsPyObjectBorrow(arguments[0]);
  783|      0|        if (res == NULL) {
  ------------------
  |  Branch (783:13): [True: 0, False: 0]
  ------------------
  784|      0|            _Py_call_instrumentation_exc2(
  785|      0|                tstate, PY_MONITORING_EVENT_C_RAISE,
  ------------------
  |  |   45|      0|#define PY_MONITORING_EVENT_C_RAISE 17
  ------------------
  786|      0|                frame, this_instr, callable_o, arg);
  787|      0|        }
  788|      0|        else {
  789|      0|            int err = _Py_call_instrumentation_2args(
  790|      0|                tstate, PY_MONITORING_EVENT_C_RETURN,
  ------------------
  |  |   44|      0|#define PY_MONITORING_EVENT_C_RETURN 16
  ------------------
  791|      0|                frame, this_instr, callable_o, arg);
  792|      0|            if (err < 0) {
  ------------------
  |  Branch (792:17): [True: 0, False: 0]
  ------------------
  793|      0|                Py_CLEAR(res);
  ------------------
  |  |  484|      0|    do { \
  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |   80|      0|    do { \
  |  |  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   84|      0|            break; \
  |  |  |  |   85|      0|        } \
  |  |  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |   91|      0|        } \
  |  |  |  |   92|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  794|      0|            }
  795|      0|        }
  796|      0|    }
  797|    572|    assert((res != NULL) ^ (PyErr_Occurred() != NULL));
  ------------------
  |  Branch (797:5): [True: 572, False: 0]
  ------------------
  798|    572|cleanup:
  799|    572|    PyStackRef_XCLOSE(kwnames);
  800|       |    // arguments is a pointer into the GC visible stack,
  801|       |    // so we must NULL out values as we clear them.
  802|  1.55k|    for (int i = total_args - 1; i >= 0; i--) {
  ------------------
  |  Branch (802:34): [True: 980, False: 572]
  ------------------
  803|    980|        _PyStackRef tmp = arguments[i];
  804|    980|        arguments[i] = PyStackRef_NULL;
  805|    980|        PyStackRef_CLOSE(tmp);
  806|    980|    }
  807|    572|    PyStackRef_CLOSE(callable);
  808|    572|    return res;
  809|    572|}
_Py_BuiltinCallFast_StackRef:
  816|    479|{
  817|    479|    PyObject *res;
  818|    479|    STACKREFS_TO_PYOBJECTS(arguments, total_args, args_o);
  ------------------
  |  |  500|    479|    PyObject *NAME##_temp[MAX_STACKREF_SCRATCH+1]; \
  |  |  501|    479|    PyObject **NAME = _PyObjectArray_FromStackRefArray(ARGS, ARG_COUNT, NAME##_temp);
  ------------------
  819|    479|    if (CONVERSION_FAILED(args_o)) {
  ------------------
  |  |  507|    479|#define CONVERSION_FAILED(NAME) ((NAME) == NULL)
  |  |  ------------------
  |  |  |  Branch (507:33): [True: 0, False: 479]
  |  |  ------------------
  ------------------
  820|      0|        return NULL;
  821|      0|    }
  822|    479|    PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  823|    479|    PyCFunction cfunc = PyCFunction_GET_FUNCTION(callable_o);
  ------------------
  |  |   43|    479|#define PyCFunction_GET_FUNCTION(func) PyCFunction_GET_FUNCTION(_PyObject_CAST(func))
  |  |  ------------------
  |  |  |  |  171|    479|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    479|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  824|    479|    res = _PyCFunctionFast_CAST(cfunc)(
  ------------------
  |  |   58|    479|    _Py_FUNC_CAST(PyCFunctionFast, func)
  |  |  ------------------
  |  |  |  |   47|    479|#define _Py_FUNC_CAST(T, func) _Py_CAST(T, _Py_CAST(void(*)(void), (func)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    479|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  825|    479|        PyCFunction_GET_SELF(callable_o),
  ------------------
  |  |   52|    479|#define PyCFunction_GET_SELF(func) PyCFunction_GET_SELF(_PyObject_CAST(func))
  |  |  ------------------
  |  |  |  |  171|    479|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    479|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  826|    479|        args_o,
  827|    479|        total_args
  828|    479|    );
  829|    479|    STACKREFS_TO_PYOBJECTS_CLEANUP(args_o);
  ------------------
  |  |  505|    479|    _PyObjectArray_Free(NAME - 1, NAME##_temp);
  ------------------
  830|    479|    assert((res != NULL) ^ (PyErr_Occurred() != NULL));
  ------------------
  |  Branch (830:5): [True: 479, False: 0]
  ------------------
  831|    479|    return res;
  832|    479|}
_Py_BuiltinCallFastWithKeywords_StackRef:
  839|     98|{
  840|     98|    PyObject *res;
  841|     98|    STACKREFS_TO_PYOBJECTS(arguments, total_args, args_o);
  ------------------
  |  |  500|     98|    PyObject *NAME##_temp[MAX_STACKREF_SCRATCH+1]; \
  |  |  501|     98|    PyObject **NAME = _PyObjectArray_FromStackRefArray(ARGS, ARG_COUNT, NAME##_temp);
  ------------------
  842|     98|    if (CONVERSION_FAILED(args_o)) {
  ------------------
  |  |  507|     98|#define CONVERSION_FAILED(NAME) ((NAME) == NULL)
  |  |  ------------------
  |  |  |  Branch (507:33): [True: 0, False: 98]
  |  |  ------------------
  ------------------
  843|      0|        return NULL;
  844|      0|    }
  845|     98|    PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  846|     98|    PyCFunctionFastWithKeywords cfunc =
  847|     98|        _PyCFunctionFastWithKeywords_CAST(PyCFunction_GET_FUNCTION(callable_o));
  ------------------
  |  |   62|     98|    _Py_FUNC_CAST(PyCFunctionFastWithKeywords, func)
  |  |  ------------------
  |  |  |  |   47|     98|#define _Py_FUNC_CAST(T, func) _Py_CAST(T, _Py_CAST(void(*)(void), (func)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     98|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  848|     98|    res = cfunc(PyCFunction_GET_SELF(callable_o), args_o, total_args, NULL);
  ------------------
  |  |   52|     98|#define PyCFunction_GET_SELF(func) PyCFunction_GET_SELF(_PyObject_CAST(func))
  |  |  ------------------
  |  |  |  |  171|     98|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     98|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  849|     98|    STACKREFS_TO_PYOBJECTS_CLEANUP(args_o);
  ------------------
  |  |  505|     98|    _PyObjectArray_Free(NAME - 1, NAME##_temp);
  ------------------
  850|     98|    assert((res != NULL) ^ (PyErr_Occurred() != NULL));
  ------------------
  |  Branch (850:5): [True: 98, False: 0]
  ------------------
  851|     98|    return res;
  852|     98|}
_PyCallMethodDescriptorFast_StackRef:
  861|    297|{
  862|    297|    PyObject *res;
  863|    297|    STACKREFS_TO_PYOBJECTS(arguments, total_args, args_o);
  ------------------
  |  |  500|    297|    PyObject *NAME##_temp[MAX_STACKREF_SCRATCH+1]; \
  |  |  501|    297|    PyObject **NAME = _PyObjectArray_FromStackRefArray(ARGS, ARG_COUNT, NAME##_temp);
  ------------------
  864|    297|    if (CONVERSION_FAILED(args_o)) {
  ------------------
  |  |  507|    297|#define CONVERSION_FAILED(NAME) ((NAME) == NULL)
  |  |  ------------------
  |  |  |  Branch (507:33): [True: 0, False: 297]
  |  |  ------------------
  ------------------
  865|      0|        return NULL;
  866|      0|    }
  867|    297|    assert(self == PyStackRef_AsPyObjectBorrow(arguments[0]));
  ------------------
  |  Branch (867:5): [True: 297, False: 0]
  ------------------
  868|       |
  869|    297|    res = cfunc(self, (args_o + 1), total_args - 1);
  870|    297|    STACKREFS_TO_PYOBJECTS_CLEANUP(args_o);
  ------------------
  |  |  505|    297|    _PyObjectArray_Free(NAME - 1, NAME##_temp);
  ------------------
  871|    297|    assert((res != NULL) ^ (PyErr_Occurred() != NULL));
  ------------------
  |  Branch (871:5): [True: 297, False: 0]
  ------------------
  872|    297|    return res;
  873|    297|}
_PyCallMethodDescriptorFastWithKeywords_StackRef:
  882|     17|{
  883|     17|    PyObject *res;
  884|     17|    STACKREFS_TO_PYOBJECTS(arguments, total_args, args_o);
  ------------------
  |  |  500|     17|    PyObject *NAME##_temp[MAX_STACKREF_SCRATCH+1]; \
  |  |  501|     17|    PyObject **NAME = _PyObjectArray_FromStackRefArray(ARGS, ARG_COUNT, NAME##_temp);
  ------------------
  885|     17|    if (CONVERSION_FAILED(args_o)) {
  ------------------
  |  |  507|     17|#define CONVERSION_FAILED(NAME) ((NAME) == NULL)
  |  |  ------------------
  |  |  |  Branch (507:33): [True: 0, False: 17]
  |  |  ------------------
  ------------------
  886|      0|        return NULL;
  887|      0|    }
  888|     17|    assert(self == PyStackRef_AsPyObjectBorrow(arguments[0]));
  ------------------
  |  Branch (888:5): [True: 17, False: 0]
  ------------------
  889|       |
  890|     17|    res = cfunc(self, (args_o + 1), total_args-1, NULL);
  891|     17|    STACKREFS_TO_PYOBJECTS_CLEANUP(args_o);
  ------------------
  |  |  505|     17|    _PyObjectArray_Free(NAME - 1, NAME##_temp);
  ------------------
  892|     17|    assert((res != NULL) ^ (PyErr_Occurred() != NULL));
  ------------------
  |  Branch (892:5): [True: 17, False: 0]
  ------------------
  893|     17|    return res;
  894|     17|}
_Py_CallBuiltinClass_StackRef:
  901|     31|{
  902|     31|    PyObject *res;
  903|     31|    STACKREFS_TO_PYOBJECTS(arguments, total_args, args_o);
  ------------------
  |  |  500|     31|    PyObject *NAME##_temp[MAX_STACKREF_SCRATCH+1]; \
  |  |  501|     31|    PyObject **NAME = _PyObjectArray_FromStackRefArray(ARGS, ARG_COUNT, NAME##_temp);
  ------------------
  904|     31|    if (CONVERSION_FAILED(args_o)) {
  ------------------
  |  |  507|     31|#define CONVERSION_FAILED(NAME) ((NAME) == NULL)
  |  |  ------------------
  |  |  |  Branch (507:33): [True: 0, False: 31]
  |  |  ------------------
  ------------------
  905|      0|        return NULL;
  906|      0|    }
  907|     31|    PyTypeObject *tp = (PyTypeObject *)PyStackRef_AsPyObjectBorrow(callable);
  908|     31|    res = tp->tp_vectorcall((PyObject *)tp, args_o, total_args | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL);
  ------------------
  |  |  287|     31|    (_Py_STATIC_CAST(size_t, 1) << (8 * sizeof(size_t) - 1))
  |  |  ------------------
  |  |  |  |   34|     31|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  909|     31|    STACKREFS_TO_PYOBJECTS_CLEANUP(args_o);
  ------------------
  |  |  505|     31|    _PyObjectArray_Free(NAME - 1, NAME##_temp);
  ------------------
  910|     31|    assert((res != NULL) ^ (PyErr_Occurred() != NULL));
  ------------------
  |  Branch (910:5): [True: 31, False: 0]
  ------------------
  911|     31|    return res;
  912|     31|}
_Py_BuildString_StackRefSteal:
  918|     31|{
  919|     31|    PyObject *res;
  920|     31|    STACKREFS_TO_PYOBJECTS(arguments, total_args, args_o);
  ------------------
  |  |  500|     31|    PyObject *NAME##_temp[MAX_STACKREF_SCRATCH+1]; \
  |  |  501|     31|    PyObject **NAME = _PyObjectArray_FromStackRefArray(ARGS, ARG_COUNT, NAME##_temp);
  ------------------
  921|     31|    if (CONVERSION_FAILED(args_o)) {
  ------------------
  |  |  507|     31|#define CONVERSION_FAILED(NAME) ((NAME) == NULL)
  |  |  ------------------
  |  |  |  Branch (507:33): [True: 0, False: 31]
  |  |  ------------------
  ------------------
  922|      0|        res = NULL;
  923|      0|        goto cleanup;
  924|      0|    }
  925|     31|    res = _PyUnicode_JoinArray(&_Py_STR(empty), args_o, total_args);
  ------------------
  |  |  919|     31|     (_Py_SINGLETON(strings.literals._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     31|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     31|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  926|     31|    STACKREFS_TO_PYOBJECTS_CLEANUP(args_o);
  ------------------
  |  |  505|     31|    _PyObjectArray_Free(NAME - 1, NAME##_temp);
  ------------------
  927|     31|    assert((res != NULL) ^ (PyErr_Occurred() != NULL));
  ------------------
  |  Branch (927:5): [True: 31, False: 0]
  ------------------
  928|     31|cleanup:
  929|       |    // arguments is a pointer into the GC visible stack,
  930|       |    // so we must NULL out values as we clear them.
  931|    145|    for (int i = total_args-1; i >= 0; i--) {
  ------------------
  |  Branch (931:32): [True: 114, False: 31]
  ------------------
  932|    114|        _PyStackRef tmp = arguments[i];
  933|    114|        arguments[i] = PyStackRef_NULL;
  934|    114|        PyStackRef_CLOSE(tmp);
  935|    114|    }
  936|     31|    return res;
  937|     31|}
_Py_BuildMap_StackRefSteal:
  943|    135|{
  944|    135|    PyObject *res;
  945|    135|    STACKREFS_TO_PYOBJECTS(arguments, half_args*2, args_o);
  ------------------
  |  |  500|    135|    PyObject *NAME##_temp[MAX_STACKREF_SCRATCH+1]; \
  |  |  501|    135|    PyObject **NAME = _PyObjectArray_FromStackRefArray(ARGS, ARG_COUNT, NAME##_temp);
  ------------------
  946|    135|    if (CONVERSION_FAILED(args_o)) {
  ------------------
  |  |  507|    135|#define CONVERSION_FAILED(NAME) ((NAME) == NULL)
  |  |  ------------------
  |  |  |  Branch (507:33): [True: 0, False: 135]
  |  |  ------------------
  ------------------
  947|      0|        res = NULL;
  948|      0|        goto cleanup;
  949|      0|    }
  950|    135|    res = _PyDict_FromItems(
  951|    135|        args_o, 2,
  952|    135|        args_o+1, 2,
  953|    135|        half_args
  954|    135|    );
  955|    135|    STACKREFS_TO_PYOBJECTS_CLEANUP(args_o);
  ------------------
  |  |  505|    135|    _PyObjectArray_Free(NAME - 1, NAME##_temp);
  ------------------
  956|    135|    assert((res != NULL) ^ (PyErr_Occurred() != NULL));
  ------------------
  |  Branch (956:5): [True: 135, False: 0]
  ------------------
  957|    135|cleanup:
  958|       |    // arguments is a pointer into the GC visible stack,
  959|       |    // so we must NULL out values as we clear them.
  960|    201|    for (int i = half_args*2-1; i >= 0; i--) {
  ------------------
  |  Branch (960:33): [True: 66, False: 135]
  ------------------
  961|     66|        _PyStackRef tmp = arguments[i];
  962|     66|        arguments[i] = PyStackRef_NULL;
  963|     66|        PyStackRef_CLOSE(tmp);
  964|     66|    }
  965|    135|    return res;
  966|    135|}
_Py_LoadAttr_StackRefSteal:
  972|    315|{
  973|       |    // Use _PyCStackRefs to ensure that both method and self are visible to
  974|       |    // the GC. Even though self_or_null is on the evaluation stack, it may be
  975|       |    // after the stackpointer and therefore not visible to the GC.
  976|    315|    _PyCStackRef method, self;
  977|    315|    _PyThreadState_PushCStackRef(tstate, &method);
  978|    315|    _PyThreadState_PushCStackRef(tstate, &self);
  979|    315|    self.ref = owner;  // steal reference to owner
  980|       |    // NOTE: method.ref is initialized to PyStackRef_NULL and remains null on
  981|       |    // error, so we don't need to explicitly use the return code from the call.
  982|    315|    _PyObject_GetMethodStackRef(tstate, &self.ref, name, &method.ref);
  983|    315|    *self_or_null = _PyThreadState_PopCStackRefSteal(tstate, &self);
  984|    315|    return _PyThreadState_PopCStackRefSteal(tstate, &method);
  985|    315|}
_PyObjectArray_FromStackRefArray:
 1052|  2.22k|{
 1053|  2.22k|    PyObject **result;
 1054|  2.22k|    if (nargs > MAX_STACKREF_SCRATCH) {
  ------------------
  |  |  496|  2.22k|#define MAX_STACKREF_SCRATCH 10
  ------------------
  |  Branch (1054:9): [True: 1, False: 2.22k]
  ------------------
 1055|       |        // +1 in case PY_VECTORCALL_ARGUMENTS_OFFSET is set.
 1056|      1|        result = PyMem_Malloc((nargs + 1) * sizeof(PyObject *));
 1057|      1|        if (result == NULL) {
  ------------------
  |  Branch (1057:13): [True: 0, False: 1]
  ------------------
 1058|      0|            return NULL;
 1059|      0|        }
 1060|      1|    }
 1061|  2.22k|    else {
 1062|  2.22k|        result = scratch;
 1063|  2.22k|    }
 1064|  2.22k|    result++;
 1065|  2.22k|    result[0] = NULL; /* Keep GCC happy */
 1066|  6.01k|    for (int i = 0; i < nargs; i++) {
  ------------------
  |  Branch (1066:21): [True: 3.79k, False: 2.22k]
  ------------------
 1067|  3.79k|        result[i] = PyStackRef_AsPyObjectBorrow(input[i]);
 1068|  3.79k|    }
 1069|  2.22k|    return result;
 1070|  2.22k|}
_PyObjectArray_Free:
 1074|  2.22k|{
 1075|  2.22k|    if (array != scratch) {
  ------------------
  |  Branch (1075:9): [True: 1, False: 2.22k]
  ------------------
 1076|      1|        PyMem_Free(array);
 1077|      1|    }
 1078|  2.22k|}
_PyEval_GetIter:
 1116|     41|{
 1117|     41|    PyTypeObject *tp = PyStackRef_TYPE(iterable);
 1118|     41|    if (tp->_tp_iteritem != NULL) {
  ------------------
  |  Branch (1118:9): [True: 34, False: 7]
  ------------------
 1119|       |        /* Leave iterable on stack and pushed tagged 0 */
 1120|     34|        *index_or_null = PyStackRef_TagInt(0);
 1121|     34|        return iterable;
 1122|     34|    }
 1123|      7|    *index_or_null = PyStackRef_NULL;
 1124|      7|    if (tp->tp_iter == PyObject_SelfIter) {
  ------------------
  |  Branch (1124:9): [True: 1, False: 6]
  ------------------
 1125|      1|        return iterable;
 1126|      1|    }
 1127|      6|    if (yield_from && tp == &PyCoro_Type) {
  ------------------
  |  Branch (1127:9): [True: 0, False: 6]
  |  Branch (1127:23): [True: 0, False: 0]
  ------------------
 1128|      0|        assert(yield_from != GET_ITER_YIELD_FROM);
  ------------------
  |  Branch (1128:9): [True: 0, False: 0]
  ------------------
 1129|      0|        if (yield_from == GET_ITER_YIELD_FROM_CORO_CHECK) {
  ------------------
  |  |   97|      0|#define GET_ITER_YIELD_FROM_CORO_CHECK 3
  ------------------
  |  Branch (1129:13): [True: 0, False: 0]
  ------------------
 1130|       |            /* `iterable` is a coroutine and it is used in a 'yield from'
 1131|       |            * expression of a regular generator. */
 1132|      0|            PyErr_SetString(PyExc_TypeError,
 1133|      0|                            "cannot 'yield from' a coroutine object "
 1134|      0|                            "in a non-coroutine generator");
 1135|      0|            PyStackRef_CLOSE(iterable);
 1136|      0|            return PyStackRef_ERROR;
 1137|      0|        }
 1138|      0|        return iterable;
 1139|      0|    }
 1140|       |    /* Pop iterable, and push iterator then NULL */
 1141|      6|    PyObject *iter_o = PyObject_GetIter(PyStackRef_AsPyObjectBorrow(iterable));
 1142|      6|    PyStackRef_CLOSE(iterable);
 1143|      6|    if (iter_o == NULL) {
  ------------------
  |  Branch (1143:9): [True: 0, False: 6]
  ------------------
 1144|      0|        return PyStackRef_ERROR;
 1145|      0|    }
 1146|      6|    return PyStackRef_FromPyObjectSteal(iter_o);
 1147|      6|}
_Py_ReachedRecursionLimit:
 1150|    254|_Py_ReachedRecursionLimit(PyThreadState *tstate)  {
 1151|    254|    uintptr_t here_addr = _Py_get_machine_stack_pointer();
 1152|    254|    _PyThreadStateImpl *_tstate = (_PyThreadStateImpl *)tstate;
 1153|    254|    assert(_tstate->c_stack_hard_limit != 0);
  ------------------
  |  Branch (1153:5): [True: 254, False: 0]
  ------------------
 1154|    254|#if _Py_STACK_GROWS_DOWN
 1155|    254|    return here_addr <= _tstate->c_stack_soft_limit;
 1156|       |#else
 1157|       |    return here_addr >= _tstate->c_stack_soft_limit;
 1158|       |#endif
 1159|    254|}
_PyEval_EvalFrameDefault:
 1211|    452|{
 1212|    452|    _Py_EnsureTstateNotNULL(tstate);
  ------------------
  |  |  196|    452|    _Py_EnsureFuncTstateNotNULL(__func__, (tstate))
  ------------------
 1213|    452|    check_invalid_reentrancy();
 1214|    452|    CALL_STAT_INC(pyeval_calls);
  ------------------
  |  |   76|    452|#define CALL_STAT_INC(name) ((void)0)
  ------------------
 1215|       |
 1216|    452|#if USE_COMPUTED_GOTOS && !_Py_TAIL_CALL_INTERP
 1217|       |/* Import the static jump table */
 1218|    452|#include "opcode_targets.h"
  ------------------
  |  |    1|    452|#if !_Py_TAIL_CALL_INTERP
  |  |    2|    452|static void *opcode_targets_table[256] = {
  |  |    3|    452|    &&TARGET_CACHE,
  |  |    4|    452|    &&TARGET_BINARY_SLICE,
  |  |    5|    452|    &&TARGET_BUILD_TEMPLATE,
  |  |    6|    452|    &&TARGET_BINARY_OP_INPLACE_ADD_UNICODE,
  |  |    7|    452|    &&TARGET_CALL_FUNCTION_EX,
  |  |    8|    452|    &&TARGET_CHECK_EG_MATCH,
  |  |    9|    452|    &&TARGET_CHECK_EXC_MATCH,
  |  |   10|    452|    &&TARGET_CLEANUP_THROW,
  |  |   11|    452|    &&TARGET_DELETE_SUBSCR,
  |  |   12|    452|    &&TARGET_END_FOR,
  |  |   13|    452|    &&TARGET_END_SEND,
  |  |   14|    452|    &&TARGET_EXIT_INIT_CHECK,
  |  |   15|    452|    &&TARGET_FORMAT_SIMPLE,
  |  |   16|    452|    &&TARGET_FORMAT_WITH_SPEC,
  |  |   17|    452|    &&TARGET_GET_AITER,
  |  |   18|    452|    &&TARGET_GET_ANEXT,
  |  |   19|    452|    &&TARGET_GET_LEN,
  |  |   20|    452|    &&TARGET_RESERVED,
  |  |   21|    452|    &&TARGET_INTERPRETER_EXIT,
  |  |   22|    452|    &&TARGET_LOAD_BUILD_CLASS,
  |  |   23|    452|    &&TARGET_LOAD_LOCALS,
  |  |   24|    452|    &&TARGET_MAKE_FUNCTION,
  |  |   25|    452|    &&TARGET_MATCH_KEYS,
  |  |   26|    452|    &&TARGET_MATCH_MAPPING,
  |  |   27|    452|    &&TARGET_MATCH_SEQUENCE,
  |  |   28|    452|    &&TARGET_NOP,
  |  |   29|    452|    &&TARGET_NOT_TAKEN,
  |  |   30|    452|    &&TARGET_POP_EXCEPT,
  |  |   31|    452|    &&TARGET_POP_ITER,
  |  |   32|    452|    &&TARGET_POP_TOP,
  |  |   33|    452|    &&TARGET_PUSH_EXC_INFO,
  |  |   34|    452|    &&TARGET_PUSH_NULL,
  |  |   35|    452|    &&TARGET_RETURN_GENERATOR,
  |  |   36|    452|    &&TARGET_RETURN_VALUE,
  |  |   37|    452|    &&TARGET_SETUP_ANNOTATIONS,
  |  |   38|    452|    &&TARGET_STORE_SLICE,
  |  |   39|    452|    &&TARGET_STORE_SUBSCR,
  |  |   40|    452|    &&TARGET_TO_BOOL,
  |  |   41|    452|    &&TARGET_UNARY_INVERT,
  |  |   42|    452|    &&TARGET_UNARY_NEGATIVE,
  |  |   43|    452|    &&TARGET_UNARY_NOT,
  |  |   44|    452|    &&TARGET_WITH_EXCEPT_START,
  |  |   45|    452|    &&TARGET_BINARY_OP,
  |  |   46|    452|    &&TARGET_BUILD_INTERPOLATION,
  |  |   47|    452|    &&TARGET_BUILD_LIST,
  |  |   48|    452|    &&TARGET_BUILD_MAP,
  |  |   49|    452|    &&TARGET_BUILD_SET,
  |  |   50|    452|    &&TARGET_BUILD_SLICE,
  |  |   51|    452|    &&TARGET_BUILD_STRING,
  |  |   52|    452|    &&TARGET_BUILD_TUPLE,
  |  |   53|    452|    &&TARGET_CALL,
  |  |   54|    452|    &&TARGET_CALL_INTRINSIC_1,
  |  |   55|    452|    &&TARGET_CALL_INTRINSIC_2,
  |  |   56|    452|    &&TARGET_CALL_KW,
  |  |   57|    452|    &&TARGET_COMPARE_OP,
  |  |   58|    452|    &&TARGET_CONTAINS_OP,
  |  |   59|    452|    &&TARGET_CONVERT_VALUE,
  |  |   60|    452|    &&TARGET_COPY,
  |  |   61|    452|    &&TARGET_COPY_FREE_VARS,
  |  |   62|    452|    &&TARGET_DELETE_ATTR,
  |  |   63|    452|    &&TARGET_DELETE_DEREF,
  |  |   64|    452|    &&TARGET_DELETE_FAST,
  |  |   65|    452|    &&TARGET_DELETE_GLOBAL,
  |  |   66|    452|    &&TARGET_DELETE_NAME,
  |  |   67|    452|    &&TARGET_DICT_MERGE,
  |  |   68|    452|    &&TARGET_DICT_UPDATE,
  |  |   69|    452|    &&TARGET_END_ASYNC_FOR,
  |  |   70|    452|    &&TARGET_EXTENDED_ARG,
  |  |   71|    452|    &&TARGET_FOR_ITER,
  |  |   72|    452|    &&TARGET_GET_AWAITABLE,
  |  |   73|    452|    &&TARGET_GET_ITER,
  |  |   74|    452|    &&TARGET_IMPORT_FROM,
  |  |   75|    452|    &&TARGET_IMPORT_NAME,
  |  |   76|    452|    &&TARGET_IS_OP,
  |  |   77|    452|    &&TARGET_JUMP_BACKWARD,
  |  |   78|    452|    &&TARGET_JUMP_BACKWARD_NO_INTERRUPT,
  |  |   79|    452|    &&TARGET_JUMP_FORWARD,
  |  |   80|    452|    &&TARGET_LIST_APPEND,
  |  |   81|    452|    &&TARGET_LIST_EXTEND,
  |  |   82|    452|    &&TARGET_LOAD_ATTR,
  |  |   83|    452|    &&TARGET_LOAD_COMMON_CONSTANT,
  |  |   84|    452|    &&TARGET_LOAD_CONST,
  |  |   85|    452|    &&TARGET_LOAD_DEREF,
  |  |   86|    452|    &&TARGET_LOAD_FAST,
  |  |   87|    452|    &&TARGET_LOAD_FAST_AND_CLEAR,
  |  |   88|    452|    &&TARGET_LOAD_FAST_BORROW,
  |  |   89|    452|    &&TARGET_LOAD_FAST_BORROW_LOAD_FAST_BORROW,
  |  |   90|    452|    &&TARGET_LOAD_FAST_CHECK,
  |  |   91|    452|    &&TARGET_LOAD_FAST_LOAD_FAST,
  |  |   92|    452|    &&TARGET_LOAD_FROM_DICT_OR_DEREF,
  |  |   93|    452|    &&TARGET_LOAD_FROM_DICT_OR_GLOBALS,
  |  |   94|    452|    &&TARGET_LOAD_GLOBAL,
  |  |   95|    452|    &&TARGET_LOAD_NAME,
  |  |   96|    452|    &&TARGET_LOAD_SMALL_INT,
  |  |   97|    452|    &&TARGET_LOAD_SPECIAL,
  |  |   98|    452|    &&TARGET_LOAD_SUPER_ATTR,
  |  |   99|    452|    &&TARGET_MAKE_CELL,
  |  |  100|    452|    &&TARGET_MAP_ADD,
  |  |  101|    452|    &&TARGET_MATCH_CLASS,
  |  |  102|    452|    &&TARGET_POP_JUMP_IF_FALSE,
  |  |  103|    452|    &&TARGET_POP_JUMP_IF_NONE,
  |  |  104|    452|    &&TARGET_POP_JUMP_IF_NOT_NONE,
  |  |  105|    452|    &&TARGET_POP_JUMP_IF_TRUE,
  |  |  106|    452|    &&TARGET_RAISE_VARARGS,
  |  |  107|    452|    &&TARGET_RERAISE,
  |  |  108|    452|    &&TARGET_SEND,
  |  |  109|    452|    &&TARGET_SET_ADD,
  |  |  110|    452|    &&TARGET_SET_FUNCTION_ATTRIBUTE,
  |  |  111|    452|    &&TARGET_SET_UPDATE,
  |  |  112|    452|    &&TARGET_STORE_ATTR,
  |  |  113|    452|    &&TARGET_STORE_DEREF,
  |  |  114|    452|    &&TARGET_STORE_FAST,
  |  |  115|    452|    &&TARGET_STORE_FAST_LOAD_FAST,
  |  |  116|    452|    &&TARGET_STORE_FAST_STORE_FAST,
  |  |  117|    452|    &&TARGET_STORE_GLOBAL,
  |  |  118|    452|    &&TARGET_STORE_NAME,
  |  |  119|    452|    &&TARGET_SWAP,
  |  |  120|    452|    &&TARGET_UNPACK_EX,
  |  |  121|    452|    &&TARGET_UNPACK_SEQUENCE,
  |  |  122|    452|    &&TARGET_YIELD_VALUE,
  |  |  123|    452|    &&_unknown_opcode,
  |  |  124|    452|    &&_unknown_opcode,
  |  |  125|    452|    &&_unknown_opcode,
  |  |  126|    452|    &&_unknown_opcode,
  |  |  127|    452|    &&_unknown_opcode,
  |  |  128|    452|    &&_unknown_opcode,
  |  |  129|    452|    &&_unknown_opcode,
  |  |  130|    452|    &&_unknown_opcode,
  |  |  131|    452|    &&TARGET_RESUME,
  |  |  132|    452|    &&TARGET_BINARY_OP_ADD_FLOAT,
  |  |  133|    452|    &&TARGET_BINARY_OP_ADD_INT,
  |  |  134|    452|    &&TARGET_BINARY_OP_ADD_UNICODE,
  |  |  135|    452|    &&TARGET_BINARY_OP_EXTEND,
  |  |  136|    452|    &&TARGET_BINARY_OP_MULTIPLY_FLOAT,
  |  |  137|    452|    &&TARGET_BINARY_OP_MULTIPLY_INT,
  |  |  138|    452|    &&TARGET_BINARY_OP_SUBSCR_DICT,
  |  |  139|    452|    &&TARGET_BINARY_OP_SUBSCR_GETITEM,
  |  |  140|    452|    &&TARGET_BINARY_OP_SUBSCR_LIST_INT,
  |  |  141|    452|    &&TARGET_BINARY_OP_SUBSCR_LIST_SLICE,
  |  |  142|    452|    &&TARGET_BINARY_OP_SUBSCR_STR_INT,
  |  |  143|    452|    &&TARGET_BINARY_OP_SUBSCR_TUPLE_INT,
  |  |  144|    452|    &&TARGET_BINARY_OP_SUBSCR_USTR_INT,
  |  |  145|    452|    &&TARGET_BINARY_OP_SUBTRACT_FLOAT,
  |  |  146|    452|    &&TARGET_BINARY_OP_SUBTRACT_INT,
  |  |  147|    452|    &&TARGET_CALL_ALLOC_AND_ENTER_INIT,
  |  |  148|    452|    &&TARGET_CALL_BOUND_METHOD_EXACT_ARGS,
  |  |  149|    452|    &&TARGET_CALL_BOUND_METHOD_GENERAL,
  |  |  150|    452|    &&TARGET_CALL_BUILTIN_CLASS,
  |  |  151|    452|    &&TARGET_CALL_BUILTIN_FAST,
  |  |  152|    452|    &&TARGET_CALL_BUILTIN_FAST_WITH_KEYWORDS,
  |  |  153|    452|    &&TARGET_CALL_BUILTIN_O,
  |  |  154|    452|    &&TARGET_CALL_EX_NON_PY_GENERAL,
  |  |  155|    452|    &&TARGET_CALL_EX_PY,
  |  |  156|    452|    &&TARGET_CALL_ISINSTANCE,
  |  |  157|    452|    &&TARGET_CALL_KW_BOUND_METHOD,
  |  |  158|    452|    &&TARGET_CALL_KW_NON_PY,
  |  |  159|    452|    &&TARGET_CALL_KW_PY,
  |  |  160|    452|    &&TARGET_CALL_LEN,
  |  |  161|    452|    &&TARGET_CALL_LIST_APPEND,
  |  |  162|    452|    &&TARGET_CALL_METHOD_DESCRIPTOR_FAST,
  |  |  163|    452|    &&TARGET_CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS,
  |  |  164|    452|    &&TARGET_CALL_METHOD_DESCRIPTOR_NOARGS,
  |  |  165|    452|    &&TARGET_CALL_METHOD_DESCRIPTOR_O,
  |  |  166|    452|    &&TARGET_CALL_NON_PY_GENERAL,
  |  |  167|    452|    &&TARGET_CALL_PY_EXACT_ARGS,
  |  |  168|    452|    &&TARGET_CALL_PY_GENERAL,
  |  |  169|    452|    &&TARGET_CALL_STR_1,
  |  |  170|    452|    &&TARGET_CALL_TUPLE_1,
  |  |  171|    452|    &&TARGET_CALL_TYPE_1,
  |  |  172|    452|    &&TARGET_COMPARE_OP_FLOAT,
  |  |  173|    452|    &&TARGET_COMPARE_OP_INT,
  |  |  174|    452|    &&TARGET_COMPARE_OP_STR,
  |  |  175|    452|    &&TARGET_CONTAINS_OP_DICT,
  |  |  176|    452|    &&TARGET_CONTAINS_OP_SET,
  |  |  177|    452|    &&TARGET_FOR_ITER_GEN,
  |  |  178|    452|    &&TARGET_FOR_ITER_LIST,
  |  |  179|    452|    &&TARGET_FOR_ITER_RANGE,
  |  |  180|    452|    &&TARGET_FOR_ITER_TUPLE,
  |  |  181|    452|    &&TARGET_FOR_ITER_VIRTUAL,
  |  |  182|    452|    &&TARGET_GET_ITER_SELF,
  |  |  183|    452|    &&TARGET_GET_ITER_VIRTUAL,
  |  |  184|    452|    &&TARGET_JUMP_BACKWARD_JIT,
  |  |  185|    452|    &&TARGET_JUMP_BACKWARD_NO_JIT,
  |  |  186|    452|    &&TARGET_LOAD_ATTR_CLASS,
  |  |  187|    452|    &&TARGET_LOAD_ATTR_CLASS_WITH_METACLASS_CHECK,
  |  |  188|    452|    &&TARGET_LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN,
  |  |  189|    452|    &&TARGET_LOAD_ATTR_INSTANCE_VALUE,
  |  |  190|    452|    &&TARGET_LOAD_ATTR_METHOD_LAZY_DICT,
  |  |  191|    452|    &&TARGET_LOAD_ATTR_METHOD_NO_DICT,
  |  |  192|    452|    &&TARGET_LOAD_ATTR_METHOD_WITH_VALUES,
  |  |  193|    452|    &&TARGET_LOAD_ATTR_MODULE,
  |  |  194|    452|    &&TARGET_LOAD_ATTR_NONDESCRIPTOR_NO_DICT,
  |  |  195|    452|    &&TARGET_LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES,
  |  |  196|    452|    &&TARGET_LOAD_ATTR_PROPERTY,
  |  |  197|    452|    &&TARGET_LOAD_ATTR_SLOT,
  |  |  198|    452|    &&TARGET_LOAD_ATTR_WITH_HINT,
  |  |  199|    452|    &&TARGET_LOAD_GLOBAL_BUILTIN,
  |  |  200|    452|    &&TARGET_LOAD_GLOBAL_MODULE,
  |  |  201|    452|    &&TARGET_LOAD_SUPER_ATTR_ATTR,
  |  |  202|    452|    &&TARGET_LOAD_SUPER_ATTR_METHOD,
  |  |  203|    452|    &&TARGET_RESUME_CHECK,
  |  |  204|    452|    &&TARGET_RESUME_CHECK_JIT,
  |  |  205|    452|    &&TARGET_SEND_ASYNC_GEN,
  |  |  206|    452|    &&TARGET_SEND_GEN,
  |  |  207|    452|    &&TARGET_SEND_VIRTUAL,
  |  |  208|    452|    &&TARGET_STORE_ATTR_INSTANCE_VALUE,
  |  |  209|    452|    &&TARGET_STORE_ATTR_SLOT,
  |  |  210|    452|    &&TARGET_STORE_ATTR_WITH_HINT,
  |  |  211|    452|    &&TARGET_STORE_SUBSCR_DICT,
  |  |  212|    452|    &&TARGET_STORE_SUBSCR_LIST_INT,
  |  |  213|    452|    &&TARGET_TO_BOOL_ALWAYS_TRUE,
  |  |  214|    452|    &&TARGET_TO_BOOL_BOOL,
  |  |  215|    452|    &&TARGET_TO_BOOL_INT,
  |  |  216|    452|    &&TARGET_TO_BOOL_LIST,
  |  |  217|    452|    &&TARGET_TO_BOOL_NONE,
  |  |  218|    452|    &&TARGET_TO_BOOL_STR,
  |  |  219|    452|    &&TARGET_UNPACK_SEQUENCE_LIST,
  |  |  220|    452|    &&TARGET_UNPACK_SEQUENCE_TUPLE,
  |  |  221|    452|    &&TARGET_UNPACK_SEQUENCE_TWO_TUPLE,
  |  |  222|    452|    &&_unknown_opcode,
  |  |  223|    452|    &&_unknown_opcode,
  |  |  224|    452|    &&_unknown_opcode,
  |  |  225|    452|    &&_unknown_opcode,
  |  |  226|    452|    &&_unknown_opcode,
  |  |  227|    452|    &&_unknown_opcode,
  |  |  228|    452|    &&_unknown_opcode,
  |  |  229|    452|    &&_unknown_opcode,
  |  |  230|    452|    &&_unknown_opcode,
  |  |  231|    452|    &&_unknown_opcode,
  |  |  232|    452|    &&_unknown_opcode,
  |  |  233|    452|    &&_unknown_opcode,
  |  |  234|    452|    &&_unknown_opcode,
  |  |  235|    452|    &&_unknown_opcode,
  |  |  236|    452|    &&TARGET_INSTRUMENTED_END_FOR,
  |  |  237|    452|    &&TARGET_INSTRUMENTED_POP_ITER,
  |  |  238|    452|    &&TARGET_INSTRUMENTED_END_SEND,
  |  |  239|    452|    &&TARGET_INSTRUMENTED_FOR_ITER,
  |  |  240|    452|    &&TARGET_INSTRUMENTED_INSTRUCTION,
  |  |  241|    452|    &&TARGET_INSTRUMENTED_JUMP_FORWARD,
  |  |  242|    452|    &&TARGET_INSTRUMENTED_NOT_TAKEN,
  |  |  243|    452|    &&TARGET_INSTRUMENTED_POP_JUMP_IF_TRUE,
  |  |  244|    452|    &&TARGET_INSTRUMENTED_POP_JUMP_IF_FALSE,
  |  |  245|    452|    &&TARGET_INSTRUMENTED_POP_JUMP_IF_NONE,
  |  |  246|    452|    &&TARGET_INSTRUMENTED_POP_JUMP_IF_NOT_NONE,
  |  |  247|    452|    &&TARGET_INSTRUMENTED_RESUME,
  |  |  248|    452|    &&TARGET_INSTRUMENTED_RETURN_VALUE,
  |  |  249|    452|    &&TARGET_INSTRUMENTED_YIELD_VALUE,
  |  |  250|    452|    &&TARGET_INSTRUMENTED_END_ASYNC_FOR,
  |  |  251|    452|    &&TARGET_INSTRUMENTED_LOAD_SUPER_ATTR,
  |  |  252|    452|    &&TARGET_INSTRUMENTED_CALL,
  |  |  253|    452|    &&TARGET_INSTRUMENTED_CALL_KW,
  |  |  254|    452|    &&TARGET_INSTRUMENTED_CALL_FUNCTION_EX,
  |  |  255|    452|    &&TARGET_INSTRUMENTED_JUMP_BACKWARD,
  |  |  256|    452|    &&TARGET_INSTRUMENTED_LINE,
  |  |  257|    452|    &&TARGET_ENTER_EXECUTOR,
  |  |  258|    452|    &&TARGET_TRACE_RECORD,
  |  |  259|    452|};
  |  |  260|       |#if _Py_TIER2
  |  |  261|       |static void *opcode_tracing_targets_table[256] = {
  |  |  262|       |    &&TARGET_TRACE_RECORD,
  |  |  263|       |    &&TARGET_TRACE_RECORD,
  |  |  264|       |    &&TARGET_TRACE_RECORD,
  |  |  265|       |    &&TARGET_TRACE_RECORD,
  |  |  266|       |    &&TARGET_TRACE_RECORD,
  |  |  267|       |    &&TARGET_TRACE_RECORD,
  |  |  268|       |    &&TARGET_TRACE_RECORD,
  |  |  269|       |    &&TARGET_TRACE_RECORD,
  |  |  270|       |    &&TARGET_TRACE_RECORD,
  |  |  271|       |    &&TARGET_TRACE_RECORD,
  |  |  272|       |    &&TARGET_TRACE_RECORD,
  |  |  273|       |    &&TARGET_TRACE_RECORD,
  |  |  274|       |    &&TARGET_TRACE_RECORD,
  |  |  275|       |    &&TARGET_TRACE_RECORD,
  |  |  276|       |    &&TARGET_TRACE_RECORD,
  |  |  277|       |    &&TARGET_TRACE_RECORD,
  |  |  278|       |    &&TARGET_TRACE_RECORD,
  |  |  279|       |    &&TARGET_TRACE_RECORD,
  |  |  280|       |    &&TARGET_TRACE_RECORD,
  |  |  281|       |    &&TARGET_TRACE_RECORD,
  |  |  282|       |    &&TARGET_TRACE_RECORD,
  |  |  283|       |    &&TARGET_TRACE_RECORD,
  |  |  284|       |    &&TARGET_TRACE_RECORD,
  |  |  285|       |    &&TARGET_TRACE_RECORD,
  |  |  286|       |    &&TARGET_TRACE_RECORD,
  |  |  287|       |    &&TARGET_TRACE_RECORD,
  |  |  288|       |    &&TARGET_TRACE_RECORD,
  |  |  289|       |    &&TARGET_TRACE_RECORD,
  |  |  290|       |    &&TARGET_TRACE_RECORD,
  |  |  291|       |    &&TARGET_TRACE_RECORD,
  |  |  292|       |    &&TARGET_TRACE_RECORD,
  |  |  293|       |    &&TARGET_TRACE_RECORD,
  |  |  294|       |    &&TARGET_TRACE_RECORD,
  |  |  295|       |    &&TARGET_TRACE_RECORD,
  |  |  296|       |    &&TARGET_TRACE_RECORD,
  |  |  297|       |    &&TARGET_TRACE_RECORD,
  |  |  298|       |    &&TARGET_TRACE_RECORD,
  |  |  299|       |    &&TARGET_TRACE_RECORD,
  |  |  300|       |    &&TARGET_TRACE_RECORD,
  |  |  301|       |    &&TARGET_TRACE_RECORD,
  |  |  302|       |    &&TARGET_TRACE_RECORD,
  |  |  303|       |    &&TARGET_TRACE_RECORD,
  |  |  304|       |    &&TARGET_TRACE_RECORD,
  |  |  305|       |    &&TARGET_TRACE_RECORD,
  |  |  306|       |    &&TARGET_TRACE_RECORD,
  |  |  307|       |    &&TARGET_TRACE_RECORD,
  |  |  308|       |    &&TARGET_TRACE_RECORD,
  |  |  309|       |    &&TARGET_TRACE_RECORD,
  |  |  310|       |    &&TARGET_TRACE_RECORD,
  |  |  311|       |    &&TARGET_TRACE_RECORD,
  |  |  312|       |    &&TARGET_TRACE_RECORD,
  |  |  313|       |    &&TARGET_TRACE_RECORD,
  |  |  314|       |    &&TARGET_TRACE_RECORD,
  |  |  315|       |    &&TARGET_TRACE_RECORD,
  |  |  316|       |    &&TARGET_TRACE_RECORD,
  |  |  317|       |    &&TARGET_TRACE_RECORD,
  |  |  318|       |    &&TARGET_TRACE_RECORD,
  |  |  319|       |    &&TARGET_TRACE_RECORD,
  |  |  320|       |    &&TARGET_TRACE_RECORD,
  |  |  321|       |    &&TARGET_TRACE_RECORD,
  |  |  322|       |    &&TARGET_TRACE_RECORD,
  |  |  323|       |    &&TARGET_TRACE_RECORD,
  |  |  324|       |    &&TARGET_TRACE_RECORD,
  |  |  325|       |    &&TARGET_TRACE_RECORD,
  |  |  326|       |    &&TARGET_TRACE_RECORD,
  |  |  327|       |    &&TARGET_TRACE_RECORD,
  |  |  328|       |    &&TARGET_TRACE_RECORD,
  |  |  329|       |    &&TARGET_TRACE_RECORD,
  |  |  330|       |    &&TARGET_TRACE_RECORD,
  |  |  331|       |    &&TARGET_TRACE_RECORD,
  |  |  332|       |    &&TARGET_TRACE_RECORD,
  |  |  333|       |    &&TARGET_TRACE_RECORD,
  |  |  334|       |    &&TARGET_TRACE_RECORD,
  |  |  335|       |    &&TARGET_TRACE_RECORD,
  |  |  336|       |    &&TARGET_TRACE_RECORD,
  |  |  337|       |    &&TARGET_TRACE_RECORD,
  |  |  338|       |    &&TARGET_TRACE_RECORD,
  |  |  339|       |    &&TARGET_TRACE_RECORD,
  |  |  340|       |    &&TARGET_TRACE_RECORD,
  |  |  341|       |    &&TARGET_TRACE_RECORD,
  |  |  342|       |    &&TARGET_TRACE_RECORD,
  |  |  343|       |    &&TARGET_TRACE_RECORD,
  |  |  344|       |    &&TARGET_TRACE_RECORD,
  |  |  345|       |    &&TARGET_TRACE_RECORD,
  |  |  346|       |    &&TARGET_TRACE_RECORD,
  |  |  347|       |    &&TARGET_TRACE_RECORD,
  |  |  348|       |    &&TARGET_TRACE_RECORD,
  |  |  349|       |    &&TARGET_TRACE_RECORD,
  |  |  350|       |    &&TARGET_TRACE_RECORD,
  |  |  351|       |    &&TARGET_TRACE_RECORD,
  |  |  352|       |    &&TARGET_TRACE_RECORD,
  |  |  353|       |    &&TARGET_TRACE_RECORD,
  |  |  354|       |    &&TARGET_TRACE_RECORD,
  |  |  355|       |    &&TARGET_TRACE_RECORD,
  |  |  356|       |    &&TARGET_TRACE_RECORD,
  |  |  357|       |    &&TARGET_TRACE_RECORD,
  |  |  358|       |    &&TARGET_TRACE_RECORD,
  |  |  359|       |    &&TARGET_TRACE_RECORD,
  |  |  360|       |    &&TARGET_TRACE_RECORD,
  |  |  361|       |    &&TARGET_TRACE_RECORD,
  |  |  362|       |    &&TARGET_TRACE_RECORD,
  |  |  363|       |    &&TARGET_TRACE_RECORD,
  |  |  364|       |    &&TARGET_TRACE_RECORD,
  |  |  365|       |    &&TARGET_TRACE_RECORD,
  |  |  366|       |    &&TARGET_TRACE_RECORD,
  |  |  367|       |    &&TARGET_TRACE_RECORD,
  |  |  368|       |    &&TARGET_TRACE_RECORD,
  |  |  369|       |    &&TARGET_TRACE_RECORD,
  |  |  370|       |    &&TARGET_TRACE_RECORD,
  |  |  371|       |    &&TARGET_TRACE_RECORD,
  |  |  372|       |    &&TARGET_TRACE_RECORD,
  |  |  373|       |    &&TARGET_TRACE_RECORD,
  |  |  374|       |    &&TARGET_TRACE_RECORD,
  |  |  375|       |    &&TARGET_TRACE_RECORD,
  |  |  376|       |    &&TARGET_TRACE_RECORD,
  |  |  377|       |    &&TARGET_TRACE_RECORD,
  |  |  378|       |    &&TARGET_TRACE_RECORD,
  |  |  379|       |    &&TARGET_TRACE_RECORD,
  |  |  380|       |    &&TARGET_TRACE_RECORD,
  |  |  381|       |    &&TARGET_TRACE_RECORD,
  |  |  382|       |    &&_unknown_opcode,
  |  |  383|       |    &&_unknown_opcode,
  |  |  384|       |    &&_unknown_opcode,
  |  |  385|       |    &&_unknown_opcode,
  |  |  386|       |    &&_unknown_opcode,
  |  |  387|       |    &&_unknown_opcode,
  |  |  388|       |    &&_unknown_opcode,
  |  |  389|       |    &&_unknown_opcode,
  |  |  390|       |    &&TARGET_TRACE_RECORD,
  |  |  391|       |    &&TARGET_TRACE_RECORD,
  |  |  392|       |    &&TARGET_TRACE_RECORD,
  |  |  393|       |    &&TARGET_TRACE_RECORD,
  |  |  394|       |    &&TARGET_TRACE_RECORD,
  |  |  395|       |    &&TARGET_TRACE_RECORD,
  |  |  396|       |    &&TARGET_TRACE_RECORD,
  |  |  397|       |    &&TARGET_TRACE_RECORD,
  |  |  398|       |    &&TARGET_TRACE_RECORD,
  |  |  399|       |    &&TARGET_TRACE_RECORD,
  |  |  400|       |    &&TARGET_TRACE_RECORD,
  |  |  401|       |    &&TARGET_TRACE_RECORD,
  |  |  402|       |    &&TARGET_TRACE_RECORD,
  |  |  403|       |    &&TARGET_TRACE_RECORD,
  |  |  404|       |    &&TARGET_TRACE_RECORD,
  |  |  405|       |    &&TARGET_TRACE_RECORD,
  |  |  406|       |    &&TARGET_TRACE_RECORD,
  |  |  407|       |    &&TARGET_TRACE_RECORD,
  |  |  408|       |    &&TARGET_TRACE_RECORD,
  |  |  409|       |    &&TARGET_TRACE_RECORD,
  |  |  410|       |    &&TARGET_TRACE_RECORD,
  |  |  411|       |    &&TARGET_TRACE_RECORD,
  |  |  412|       |    &&TARGET_TRACE_RECORD,
  |  |  413|       |    &&TARGET_TRACE_RECORD,
  |  |  414|       |    &&TARGET_TRACE_RECORD,
  |  |  415|       |    &&TARGET_TRACE_RECORD,
  |  |  416|       |    &&TARGET_TRACE_RECORD,
  |  |  417|       |    &&TARGET_TRACE_RECORD,
  |  |  418|       |    &&TARGET_TRACE_RECORD,
  |  |  419|       |    &&TARGET_TRACE_RECORD,
  |  |  420|       |    &&TARGET_TRACE_RECORD,
  |  |  421|       |    &&TARGET_TRACE_RECORD,
  |  |  422|       |    &&TARGET_TRACE_RECORD,
  |  |  423|       |    &&TARGET_TRACE_RECORD,
  |  |  424|       |    &&TARGET_TRACE_RECORD,
  |  |  425|       |    &&TARGET_TRACE_RECORD,
  |  |  426|       |    &&TARGET_TRACE_RECORD,
  |  |  427|       |    &&TARGET_TRACE_RECORD,
  |  |  428|       |    &&TARGET_TRACE_RECORD,
  |  |  429|       |    &&TARGET_TRACE_RECORD,
  |  |  430|       |    &&TARGET_TRACE_RECORD,
  |  |  431|       |    &&TARGET_TRACE_RECORD,
  |  |  432|       |    &&TARGET_TRACE_RECORD,
  |  |  433|       |    &&TARGET_TRACE_RECORD,
  |  |  434|       |    &&TARGET_TRACE_RECORD,
  |  |  435|       |    &&TARGET_TRACE_RECORD,
  |  |  436|       |    &&TARGET_TRACE_RECORD,
  |  |  437|       |    &&TARGET_TRACE_RECORD,
  |  |  438|       |    &&TARGET_TRACE_RECORD,
  |  |  439|       |    &&TARGET_TRACE_RECORD,
  |  |  440|       |    &&TARGET_TRACE_RECORD,
  |  |  441|       |    &&TARGET_TRACE_RECORD,
  |  |  442|       |    &&TARGET_TRACE_RECORD,
  |  |  443|       |    &&TARGET_TRACE_RECORD,
  |  |  444|       |    &&TARGET_TRACE_RECORD,
  |  |  445|       |    &&TARGET_TRACE_RECORD,
  |  |  446|       |    &&TARGET_TRACE_RECORD,
  |  |  447|       |    &&TARGET_TRACE_RECORD,
  |  |  448|       |    &&TARGET_TRACE_RECORD,
  |  |  449|       |    &&TARGET_TRACE_RECORD,
  |  |  450|       |    &&TARGET_TRACE_RECORD,
  |  |  451|       |    &&TARGET_TRACE_RECORD,
  |  |  452|       |    &&TARGET_TRACE_RECORD,
  |  |  453|       |    &&TARGET_TRACE_RECORD,
  |  |  454|       |    &&TARGET_TRACE_RECORD,
  |  |  455|       |    &&TARGET_TRACE_RECORD,
  |  |  456|       |    &&TARGET_TRACE_RECORD,
  |  |  457|       |    &&TARGET_TRACE_RECORD,
  |  |  458|       |    &&TARGET_TRACE_RECORD,
  |  |  459|       |    &&TARGET_TRACE_RECORD,
  |  |  460|       |    &&TARGET_TRACE_RECORD,
  |  |  461|       |    &&TARGET_TRACE_RECORD,
  |  |  462|       |    &&TARGET_TRACE_RECORD,
  |  |  463|       |    &&TARGET_TRACE_RECORD,
  |  |  464|       |    &&TARGET_TRACE_RECORD,
  |  |  465|       |    &&TARGET_TRACE_RECORD,
  |  |  466|       |    &&TARGET_TRACE_RECORD,
  |  |  467|       |    &&TARGET_TRACE_RECORD,
  |  |  468|       |    &&TARGET_TRACE_RECORD,
  |  |  469|       |    &&TARGET_TRACE_RECORD,
  |  |  470|       |    &&TARGET_TRACE_RECORD,
  |  |  471|       |    &&TARGET_TRACE_RECORD,
  |  |  472|       |    &&TARGET_TRACE_RECORD,
  |  |  473|       |    &&TARGET_TRACE_RECORD,
  |  |  474|       |    &&TARGET_TRACE_RECORD,
  |  |  475|       |    &&TARGET_TRACE_RECORD,
  |  |  476|       |    &&TARGET_TRACE_RECORD,
  |  |  477|       |    &&TARGET_TRACE_RECORD,
  |  |  478|       |    &&TARGET_TRACE_RECORD,
  |  |  479|       |    &&TARGET_TRACE_RECORD,
  |  |  480|       |    &&TARGET_TRACE_RECORD,
  |  |  481|       |    &&_unknown_opcode,
  |  |  482|       |    &&_unknown_opcode,
  |  |  483|       |    &&_unknown_opcode,
  |  |  484|       |    &&_unknown_opcode,
  |  |  485|       |    &&_unknown_opcode,
  |  |  486|       |    &&_unknown_opcode,
  |  |  487|       |    &&_unknown_opcode,
  |  |  488|       |    &&_unknown_opcode,
  |  |  489|       |    &&_unknown_opcode,
  |  |  490|       |    &&_unknown_opcode,
  |  |  491|       |    &&_unknown_opcode,
  |  |  492|       |    &&_unknown_opcode,
  |  |  493|       |    &&_unknown_opcode,
  |  |  494|       |    &&_unknown_opcode,
  |  |  495|       |    &&TARGET_TRACE_RECORD,
  |  |  496|       |    &&TARGET_TRACE_RECORD,
  |  |  497|       |    &&TARGET_TRACE_RECORD,
  |  |  498|       |    &&TARGET_TRACE_RECORD,
  |  |  499|       |    &&TARGET_TRACE_RECORD,
  |  |  500|       |    &&TARGET_TRACE_RECORD,
  |  |  501|       |    &&TARGET_TRACE_RECORD,
  |  |  502|       |    &&TARGET_TRACE_RECORD,
  |  |  503|       |    &&TARGET_TRACE_RECORD,
  |  |  504|       |    &&TARGET_TRACE_RECORD,
  |  |  505|       |    &&TARGET_TRACE_RECORD,
  |  |  506|       |    &&TARGET_TRACE_RECORD,
  |  |  507|       |    &&TARGET_TRACE_RECORD,
  |  |  508|       |    &&TARGET_TRACE_RECORD,
  |  |  509|       |    &&TARGET_TRACE_RECORD,
  |  |  510|       |    &&TARGET_TRACE_RECORD,
  |  |  511|       |    &&TARGET_TRACE_RECORD,
  |  |  512|       |    &&TARGET_TRACE_RECORD,
  |  |  513|       |    &&TARGET_TRACE_RECORD,
  |  |  514|       |    &&TARGET_TRACE_RECORD,
  |  |  515|       |    &&TARGET_TRACE_RECORD,
  |  |  516|       |    &&TARGET_TRACE_RECORD,
  |  |  517|       |    &&TARGET_TRACE_RECORD,
  |  |  518|       |};
  |  |  519|       |#endif
  |  |  520|       |#else /* _Py_TAIL_CALL_INTERP */
  |  |  521|       |static py_tail_call_funcptr instruction_funcptr_handler_table[256];
  |  |  522|       |
  |  |  523|       |static py_tail_call_funcptr instruction_funcptr_tracing_table[256];
  |  |  524|       |
  |  |  525|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_pop_2_error(TAIL_CALL_PARAMS);
  |  |  526|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_pop_1_error(TAIL_CALL_PARAMS);
  |  |  527|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_error(TAIL_CALL_PARAMS);
  |  |  528|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_exception_unwind(TAIL_CALL_PARAMS);
  |  |  529|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_exit_unwind(TAIL_CALL_PARAMS);
  |  |  530|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_exit_unwind_notrace(TAIL_CALL_PARAMS);
  |  |  531|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_start_frame(TAIL_CALL_PARAMS);
  |  |  532|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_stop_tracing(TAIL_CALL_PARAMS);
  |  |  533|       |
  |  |  534|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_BINARY_OP(TAIL_CALL_PARAMS);
  |  |  535|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_BINARY_OP_ADD_FLOAT(TAIL_CALL_PARAMS);
  |  |  536|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_BINARY_OP_ADD_INT(TAIL_CALL_PARAMS);
  |  |  537|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_BINARY_OP_ADD_UNICODE(TAIL_CALL_PARAMS);
  |  |  538|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_BINARY_OP_EXTEND(TAIL_CALL_PARAMS);
  |  |  539|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_BINARY_OP_INPLACE_ADD_UNICODE(TAIL_CALL_PARAMS);
  |  |  540|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_BINARY_OP_MULTIPLY_FLOAT(TAIL_CALL_PARAMS);
  |  |  541|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_BINARY_OP_MULTIPLY_INT(TAIL_CALL_PARAMS);
  |  |  542|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_BINARY_OP_SUBSCR_DICT(TAIL_CALL_PARAMS);
  |  |  543|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_BINARY_OP_SUBSCR_GETITEM(TAIL_CALL_PARAMS);
  |  |  544|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_BINARY_OP_SUBSCR_LIST_INT(TAIL_CALL_PARAMS);
  |  |  545|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_BINARY_OP_SUBSCR_LIST_SLICE(TAIL_CALL_PARAMS);
  |  |  546|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_BINARY_OP_SUBSCR_STR_INT(TAIL_CALL_PARAMS);
  |  |  547|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_BINARY_OP_SUBSCR_TUPLE_INT(TAIL_CALL_PARAMS);
  |  |  548|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_BINARY_OP_SUBSCR_USTR_INT(TAIL_CALL_PARAMS);
  |  |  549|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_BINARY_OP_SUBTRACT_FLOAT(TAIL_CALL_PARAMS);
  |  |  550|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_BINARY_OP_SUBTRACT_INT(TAIL_CALL_PARAMS);
  |  |  551|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_BINARY_SLICE(TAIL_CALL_PARAMS);
  |  |  552|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_BUILD_INTERPOLATION(TAIL_CALL_PARAMS);
  |  |  553|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_BUILD_LIST(TAIL_CALL_PARAMS);
  |  |  554|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_BUILD_MAP(TAIL_CALL_PARAMS);
  |  |  555|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_BUILD_SET(TAIL_CALL_PARAMS);
  |  |  556|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_BUILD_SLICE(TAIL_CALL_PARAMS);
  |  |  557|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_BUILD_STRING(TAIL_CALL_PARAMS);
  |  |  558|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_BUILD_TEMPLATE(TAIL_CALL_PARAMS);
  |  |  559|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_BUILD_TUPLE(TAIL_CALL_PARAMS);
  |  |  560|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_CACHE(TAIL_CALL_PARAMS);
  |  |  561|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_CALL(TAIL_CALL_PARAMS);
  |  |  562|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_CALL_ALLOC_AND_ENTER_INIT(TAIL_CALL_PARAMS);
  |  |  563|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_CALL_BOUND_METHOD_EXACT_ARGS(TAIL_CALL_PARAMS);
  |  |  564|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_CALL_BOUND_METHOD_GENERAL(TAIL_CALL_PARAMS);
  |  |  565|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_CALL_BUILTIN_CLASS(TAIL_CALL_PARAMS);
  |  |  566|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_CALL_BUILTIN_FAST(TAIL_CALL_PARAMS);
  |  |  567|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_CALL_BUILTIN_FAST_WITH_KEYWORDS(TAIL_CALL_PARAMS);
  |  |  568|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_CALL_BUILTIN_O(TAIL_CALL_PARAMS);
  |  |  569|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_CALL_EX_NON_PY_GENERAL(TAIL_CALL_PARAMS);
  |  |  570|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_CALL_EX_PY(TAIL_CALL_PARAMS);
  |  |  571|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_CALL_FUNCTION_EX(TAIL_CALL_PARAMS);
  |  |  572|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_CALL_INTRINSIC_1(TAIL_CALL_PARAMS);
  |  |  573|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_CALL_INTRINSIC_2(TAIL_CALL_PARAMS);
  |  |  574|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_CALL_ISINSTANCE(TAIL_CALL_PARAMS);
  |  |  575|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_CALL_KW(TAIL_CALL_PARAMS);
  |  |  576|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_CALL_KW_BOUND_METHOD(TAIL_CALL_PARAMS);
  |  |  577|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_CALL_KW_NON_PY(TAIL_CALL_PARAMS);
  |  |  578|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_CALL_KW_PY(TAIL_CALL_PARAMS);
  |  |  579|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_CALL_LEN(TAIL_CALL_PARAMS);
  |  |  580|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_CALL_LIST_APPEND(TAIL_CALL_PARAMS);
  |  |  581|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_CALL_METHOD_DESCRIPTOR_FAST(TAIL_CALL_PARAMS);
  |  |  582|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS(TAIL_CALL_PARAMS);
  |  |  583|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_CALL_METHOD_DESCRIPTOR_NOARGS(TAIL_CALL_PARAMS);
  |  |  584|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_CALL_METHOD_DESCRIPTOR_O(TAIL_CALL_PARAMS);
  |  |  585|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_CALL_NON_PY_GENERAL(TAIL_CALL_PARAMS);
  |  |  586|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_CALL_PY_EXACT_ARGS(TAIL_CALL_PARAMS);
  |  |  587|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_CALL_PY_GENERAL(TAIL_CALL_PARAMS);
  |  |  588|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_CALL_STR_1(TAIL_CALL_PARAMS);
  |  |  589|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_CALL_TUPLE_1(TAIL_CALL_PARAMS);
  |  |  590|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_CALL_TYPE_1(TAIL_CALL_PARAMS);
  |  |  591|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_CHECK_EG_MATCH(TAIL_CALL_PARAMS);
  |  |  592|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_CHECK_EXC_MATCH(TAIL_CALL_PARAMS);
  |  |  593|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_CLEANUP_THROW(TAIL_CALL_PARAMS);
  |  |  594|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_COMPARE_OP(TAIL_CALL_PARAMS);
  |  |  595|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_COMPARE_OP_FLOAT(TAIL_CALL_PARAMS);
  |  |  596|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_COMPARE_OP_INT(TAIL_CALL_PARAMS);
  |  |  597|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_COMPARE_OP_STR(TAIL_CALL_PARAMS);
  |  |  598|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_CONTAINS_OP(TAIL_CALL_PARAMS);
  |  |  599|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_CONTAINS_OP_DICT(TAIL_CALL_PARAMS);
  |  |  600|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_CONTAINS_OP_SET(TAIL_CALL_PARAMS);
  |  |  601|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_CONVERT_VALUE(TAIL_CALL_PARAMS);
  |  |  602|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_COPY(TAIL_CALL_PARAMS);
  |  |  603|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_COPY_FREE_VARS(TAIL_CALL_PARAMS);
  |  |  604|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_DELETE_ATTR(TAIL_CALL_PARAMS);
  |  |  605|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_DELETE_DEREF(TAIL_CALL_PARAMS);
  |  |  606|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_DELETE_FAST(TAIL_CALL_PARAMS);
  |  |  607|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_DELETE_GLOBAL(TAIL_CALL_PARAMS);
  |  |  608|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_DELETE_NAME(TAIL_CALL_PARAMS);
  |  |  609|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_DELETE_SUBSCR(TAIL_CALL_PARAMS);
  |  |  610|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_DICT_MERGE(TAIL_CALL_PARAMS);
  |  |  611|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_DICT_UPDATE(TAIL_CALL_PARAMS);
  |  |  612|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_END_ASYNC_FOR(TAIL_CALL_PARAMS);
  |  |  613|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_END_FOR(TAIL_CALL_PARAMS);
  |  |  614|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_END_SEND(TAIL_CALL_PARAMS);
  |  |  615|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_ENTER_EXECUTOR(TAIL_CALL_PARAMS);
  |  |  616|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_EXIT_INIT_CHECK(TAIL_CALL_PARAMS);
  |  |  617|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_EXTENDED_ARG(TAIL_CALL_PARAMS);
  |  |  618|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_FORMAT_SIMPLE(TAIL_CALL_PARAMS);
  |  |  619|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_FORMAT_WITH_SPEC(TAIL_CALL_PARAMS);
  |  |  620|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_FOR_ITER(TAIL_CALL_PARAMS);
  |  |  621|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_FOR_ITER_GEN(TAIL_CALL_PARAMS);
  |  |  622|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_FOR_ITER_LIST(TAIL_CALL_PARAMS);
  |  |  623|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_FOR_ITER_RANGE(TAIL_CALL_PARAMS);
  |  |  624|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_FOR_ITER_TUPLE(TAIL_CALL_PARAMS);
  |  |  625|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_FOR_ITER_VIRTUAL(TAIL_CALL_PARAMS);
  |  |  626|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_GET_AITER(TAIL_CALL_PARAMS);
  |  |  627|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_GET_ANEXT(TAIL_CALL_PARAMS);
  |  |  628|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_GET_AWAITABLE(TAIL_CALL_PARAMS);
  |  |  629|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_GET_ITER(TAIL_CALL_PARAMS);
  |  |  630|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_GET_ITER_SELF(TAIL_CALL_PARAMS);
  |  |  631|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_GET_ITER_VIRTUAL(TAIL_CALL_PARAMS);
  |  |  632|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_GET_LEN(TAIL_CALL_PARAMS);
  |  |  633|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_IMPORT_FROM(TAIL_CALL_PARAMS);
  |  |  634|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_IMPORT_NAME(TAIL_CALL_PARAMS);
  |  |  635|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_INSTRUMENTED_CALL(TAIL_CALL_PARAMS);
  |  |  636|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_INSTRUMENTED_CALL_FUNCTION_EX(TAIL_CALL_PARAMS);
  |  |  637|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_INSTRUMENTED_CALL_KW(TAIL_CALL_PARAMS);
  |  |  638|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_INSTRUMENTED_END_ASYNC_FOR(TAIL_CALL_PARAMS);
  |  |  639|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_INSTRUMENTED_END_FOR(TAIL_CALL_PARAMS);
  |  |  640|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_INSTRUMENTED_END_SEND(TAIL_CALL_PARAMS);
  |  |  641|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_INSTRUMENTED_FOR_ITER(TAIL_CALL_PARAMS);
  |  |  642|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_INSTRUMENTED_INSTRUCTION(TAIL_CALL_PARAMS);
  |  |  643|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_INSTRUMENTED_JUMP_BACKWARD(TAIL_CALL_PARAMS);
  |  |  644|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_INSTRUMENTED_JUMP_FORWARD(TAIL_CALL_PARAMS);
  |  |  645|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_INSTRUMENTED_LINE(TAIL_CALL_PARAMS);
  |  |  646|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_INSTRUMENTED_LOAD_SUPER_ATTR(TAIL_CALL_PARAMS);
  |  |  647|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_INSTRUMENTED_NOT_TAKEN(TAIL_CALL_PARAMS);
  |  |  648|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_INSTRUMENTED_POP_ITER(TAIL_CALL_PARAMS);
  |  |  649|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_INSTRUMENTED_POP_JUMP_IF_FALSE(TAIL_CALL_PARAMS);
  |  |  650|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_INSTRUMENTED_POP_JUMP_IF_NONE(TAIL_CALL_PARAMS);
  |  |  651|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_INSTRUMENTED_POP_JUMP_IF_NOT_NONE(TAIL_CALL_PARAMS);
  |  |  652|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_INSTRUMENTED_POP_JUMP_IF_TRUE(TAIL_CALL_PARAMS);
  |  |  653|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_INSTRUMENTED_RESUME(TAIL_CALL_PARAMS);
  |  |  654|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_INSTRUMENTED_RETURN_VALUE(TAIL_CALL_PARAMS);
  |  |  655|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_INSTRUMENTED_YIELD_VALUE(TAIL_CALL_PARAMS);
  |  |  656|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_INTERPRETER_EXIT(TAIL_CALL_PARAMS);
  |  |  657|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_IS_OP(TAIL_CALL_PARAMS);
  |  |  658|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_JUMP_BACKWARD(TAIL_CALL_PARAMS);
  |  |  659|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_JUMP_BACKWARD_JIT(TAIL_CALL_PARAMS);
  |  |  660|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_JUMP_BACKWARD_NO_INTERRUPT(TAIL_CALL_PARAMS);
  |  |  661|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_JUMP_BACKWARD_NO_JIT(TAIL_CALL_PARAMS);
  |  |  662|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_JUMP_FORWARD(TAIL_CALL_PARAMS);
  |  |  663|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_LIST_APPEND(TAIL_CALL_PARAMS);
  |  |  664|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_LIST_EXTEND(TAIL_CALL_PARAMS);
  |  |  665|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_LOAD_ATTR(TAIL_CALL_PARAMS);
  |  |  666|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_LOAD_ATTR_CLASS(TAIL_CALL_PARAMS);
  |  |  667|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_LOAD_ATTR_CLASS_WITH_METACLASS_CHECK(TAIL_CALL_PARAMS);
  |  |  668|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN(TAIL_CALL_PARAMS);
  |  |  669|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_LOAD_ATTR_INSTANCE_VALUE(TAIL_CALL_PARAMS);
  |  |  670|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_LOAD_ATTR_METHOD_LAZY_DICT(TAIL_CALL_PARAMS);
  |  |  671|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_LOAD_ATTR_METHOD_NO_DICT(TAIL_CALL_PARAMS);
  |  |  672|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_LOAD_ATTR_METHOD_WITH_VALUES(TAIL_CALL_PARAMS);
  |  |  673|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_LOAD_ATTR_MODULE(TAIL_CALL_PARAMS);
  |  |  674|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_LOAD_ATTR_NONDESCRIPTOR_NO_DICT(TAIL_CALL_PARAMS);
  |  |  675|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES(TAIL_CALL_PARAMS);
  |  |  676|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_LOAD_ATTR_PROPERTY(TAIL_CALL_PARAMS);
  |  |  677|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_LOAD_ATTR_SLOT(TAIL_CALL_PARAMS);
  |  |  678|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_LOAD_ATTR_WITH_HINT(TAIL_CALL_PARAMS);
  |  |  679|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_LOAD_BUILD_CLASS(TAIL_CALL_PARAMS);
  |  |  680|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_LOAD_COMMON_CONSTANT(TAIL_CALL_PARAMS);
  |  |  681|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_LOAD_CONST(TAIL_CALL_PARAMS);
  |  |  682|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_LOAD_DEREF(TAIL_CALL_PARAMS);
  |  |  683|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_LOAD_FAST(TAIL_CALL_PARAMS);
  |  |  684|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_LOAD_FAST_AND_CLEAR(TAIL_CALL_PARAMS);
  |  |  685|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_LOAD_FAST_BORROW(TAIL_CALL_PARAMS);
  |  |  686|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_LOAD_FAST_BORROW_LOAD_FAST_BORROW(TAIL_CALL_PARAMS);
  |  |  687|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_LOAD_FAST_CHECK(TAIL_CALL_PARAMS);
  |  |  688|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_LOAD_FAST_LOAD_FAST(TAIL_CALL_PARAMS);
  |  |  689|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_LOAD_FROM_DICT_OR_DEREF(TAIL_CALL_PARAMS);
  |  |  690|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_LOAD_FROM_DICT_OR_GLOBALS(TAIL_CALL_PARAMS);
  |  |  691|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_LOAD_GLOBAL(TAIL_CALL_PARAMS);
  |  |  692|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_LOAD_GLOBAL_BUILTIN(TAIL_CALL_PARAMS);
  |  |  693|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_LOAD_GLOBAL_MODULE(TAIL_CALL_PARAMS);
  |  |  694|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_LOAD_LOCALS(TAIL_CALL_PARAMS);
  |  |  695|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_LOAD_NAME(TAIL_CALL_PARAMS);
  |  |  696|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_LOAD_SMALL_INT(TAIL_CALL_PARAMS);
  |  |  697|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_LOAD_SPECIAL(TAIL_CALL_PARAMS);
  |  |  698|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_LOAD_SUPER_ATTR(TAIL_CALL_PARAMS);
  |  |  699|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_LOAD_SUPER_ATTR_ATTR(TAIL_CALL_PARAMS);
  |  |  700|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_LOAD_SUPER_ATTR_METHOD(TAIL_CALL_PARAMS);
  |  |  701|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_MAKE_CELL(TAIL_CALL_PARAMS);
  |  |  702|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_MAKE_FUNCTION(TAIL_CALL_PARAMS);
  |  |  703|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_MAP_ADD(TAIL_CALL_PARAMS);
  |  |  704|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_MATCH_CLASS(TAIL_CALL_PARAMS);
  |  |  705|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_MATCH_KEYS(TAIL_CALL_PARAMS);
  |  |  706|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_MATCH_MAPPING(TAIL_CALL_PARAMS);
  |  |  707|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_MATCH_SEQUENCE(TAIL_CALL_PARAMS);
  |  |  708|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_NOP(TAIL_CALL_PARAMS);
  |  |  709|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_NOT_TAKEN(TAIL_CALL_PARAMS);
  |  |  710|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_POP_EXCEPT(TAIL_CALL_PARAMS);
  |  |  711|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_POP_ITER(TAIL_CALL_PARAMS);
  |  |  712|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_POP_JUMP_IF_FALSE(TAIL_CALL_PARAMS);
  |  |  713|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_POP_JUMP_IF_NONE(TAIL_CALL_PARAMS);
  |  |  714|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_POP_JUMP_IF_NOT_NONE(TAIL_CALL_PARAMS);
  |  |  715|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_POP_JUMP_IF_TRUE(TAIL_CALL_PARAMS);
  |  |  716|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_POP_TOP(TAIL_CALL_PARAMS);
  |  |  717|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_PUSH_EXC_INFO(TAIL_CALL_PARAMS);
  |  |  718|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_PUSH_NULL(TAIL_CALL_PARAMS);
  |  |  719|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_RAISE_VARARGS(TAIL_CALL_PARAMS);
  |  |  720|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_RERAISE(TAIL_CALL_PARAMS);
  |  |  721|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_RESERVED(TAIL_CALL_PARAMS);
  |  |  722|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_RESUME(TAIL_CALL_PARAMS);
  |  |  723|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_RESUME_CHECK(TAIL_CALL_PARAMS);
  |  |  724|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_RESUME_CHECK_JIT(TAIL_CALL_PARAMS);
  |  |  725|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_RETURN_GENERATOR(TAIL_CALL_PARAMS);
  |  |  726|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_RETURN_VALUE(TAIL_CALL_PARAMS);
  |  |  727|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_SEND(TAIL_CALL_PARAMS);
  |  |  728|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_SEND_ASYNC_GEN(TAIL_CALL_PARAMS);
  |  |  729|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_SEND_GEN(TAIL_CALL_PARAMS);
  |  |  730|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_SEND_VIRTUAL(TAIL_CALL_PARAMS);
  |  |  731|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_SETUP_ANNOTATIONS(TAIL_CALL_PARAMS);
  |  |  732|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_SET_ADD(TAIL_CALL_PARAMS);
  |  |  733|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_SET_FUNCTION_ATTRIBUTE(TAIL_CALL_PARAMS);
  |  |  734|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_SET_UPDATE(TAIL_CALL_PARAMS);
  |  |  735|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_STORE_ATTR(TAIL_CALL_PARAMS);
  |  |  736|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_STORE_ATTR_INSTANCE_VALUE(TAIL_CALL_PARAMS);
  |  |  737|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_STORE_ATTR_SLOT(TAIL_CALL_PARAMS);
  |  |  738|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_STORE_ATTR_WITH_HINT(TAIL_CALL_PARAMS);
  |  |  739|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_STORE_DEREF(TAIL_CALL_PARAMS);
  |  |  740|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_STORE_FAST(TAIL_CALL_PARAMS);
  |  |  741|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_STORE_FAST_LOAD_FAST(TAIL_CALL_PARAMS);
  |  |  742|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_STORE_FAST_STORE_FAST(TAIL_CALL_PARAMS);
  |  |  743|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_STORE_GLOBAL(TAIL_CALL_PARAMS);
  |  |  744|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_STORE_NAME(TAIL_CALL_PARAMS);
  |  |  745|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_STORE_SLICE(TAIL_CALL_PARAMS);
  |  |  746|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_STORE_SUBSCR(TAIL_CALL_PARAMS);
  |  |  747|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_STORE_SUBSCR_DICT(TAIL_CALL_PARAMS);
  |  |  748|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_STORE_SUBSCR_LIST_INT(TAIL_CALL_PARAMS);
  |  |  749|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_SWAP(TAIL_CALL_PARAMS);
  |  |  750|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_TO_BOOL(TAIL_CALL_PARAMS);
  |  |  751|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_TO_BOOL_ALWAYS_TRUE(TAIL_CALL_PARAMS);
  |  |  752|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_TO_BOOL_BOOL(TAIL_CALL_PARAMS);
  |  |  753|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_TO_BOOL_INT(TAIL_CALL_PARAMS);
  |  |  754|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_TO_BOOL_LIST(TAIL_CALL_PARAMS);
  |  |  755|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_TO_BOOL_NONE(TAIL_CALL_PARAMS);
  |  |  756|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_TO_BOOL_STR(TAIL_CALL_PARAMS);
  |  |  757|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_TRACE_RECORD(TAIL_CALL_PARAMS);
  |  |  758|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_UNARY_INVERT(TAIL_CALL_PARAMS);
  |  |  759|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_UNARY_NEGATIVE(TAIL_CALL_PARAMS);
  |  |  760|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_UNARY_NOT(TAIL_CALL_PARAMS);
  |  |  761|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_UNPACK_EX(TAIL_CALL_PARAMS);
  |  |  762|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_UNPACK_SEQUENCE(TAIL_CALL_PARAMS);
  |  |  763|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_UNPACK_SEQUENCE_LIST(TAIL_CALL_PARAMS);
  |  |  764|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_UNPACK_SEQUENCE_TUPLE(TAIL_CALL_PARAMS);
  |  |  765|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_UNPACK_SEQUENCE_TWO_TUPLE(TAIL_CALL_PARAMS);
  |  |  766|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_WITH_EXCEPT_START(TAIL_CALL_PARAMS);
  |  |  767|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_YIELD_VALUE(TAIL_CALL_PARAMS);
  |  |  768|       |
  |  |  769|       |static PyObject *Py_PRESERVE_NONE_CC _TAIL_CALL_UNKNOWN_OPCODE(TAIL_CALL_PARAMS) {
  |  |  770|       |    int opcode = next_instr->op.code;
  |  |  771|       |    _PyErr_Format(tstate, PyExc_SystemError,
  |  |  772|       |              "%U:%d: unknown opcode %d",
  |  |  773|       |              _PyFrame_GetCode(frame)->co_filename,
  |  |  774|       |              PyUnstable_InterpreterFrame_GetLine(frame),
  |  |  775|       |              opcode);
  |  |  776|       |JUMP_TO_LABEL(error);
  |  |  777|       |}
  |  |  778|       |
  |  |  779|       |static py_tail_call_funcptr instruction_funcptr_handler_table[256] = {
  |  |  780|       |    [BINARY_OP] = _TAIL_CALL_BINARY_OP,
  |  |  781|       |    [BINARY_OP_ADD_FLOAT] = _TAIL_CALL_BINARY_OP_ADD_FLOAT,
  |  |  782|       |    [BINARY_OP_ADD_INT] = _TAIL_CALL_BINARY_OP_ADD_INT,
  |  |  783|       |    [BINARY_OP_ADD_UNICODE] = _TAIL_CALL_BINARY_OP_ADD_UNICODE,
  |  |  784|       |    [BINARY_OP_EXTEND] = _TAIL_CALL_BINARY_OP_EXTEND,
  |  |  785|       |    [BINARY_OP_INPLACE_ADD_UNICODE] = _TAIL_CALL_BINARY_OP_INPLACE_ADD_UNICODE,
  |  |  786|       |    [BINARY_OP_MULTIPLY_FLOAT] = _TAIL_CALL_BINARY_OP_MULTIPLY_FLOAT,
  |  |  787|       |    [BINARY_OP_MULTIPLY_INT] = _TAIL_CALL_BINARY_OP_MULTIPLY_INT,
  |  |  788|       |    [BINARY_OP_SUBSCR_DICT] = _TAIL_CALL_BINARY_OP_SUBSCR_DICT,
  |  |  789|       |    [BINARY_OP_SUBSCR_GETITEM] = _TAIL_CALL_BINARY_OP_SUBSCR_GETITEM,
  |  |  790|       |    [BINARY_OP_SUBSCR_LIST_INT] = _TAIL_CALL_BINARY_OP_SUBSCR_LIST_INT,
  |  |  791|       |    [BINARY_OP_SUBSCR_LIST_SLICE] = _TAIL_CALL_BINARY_OP_SUBSCR_LIST_SLICE,
  |  |  792|       |    [BINARY_OP_SUBSCR_STR_INT] = _TAIL_CALL_BINARY_OP_SUBSCR_STR_INT,
  |  |  793|       |    [BINARY_OP_SUBSCR_TUPLE_INT] = _TAIL_CALL_BINARY_OP_SUBSCR_TUPLE_INT,
  |  |  794|       |    [BINARY_OP_SUBSCR_USTR_INT] = _TAIL_CALL_BINARY_OP_SUBSCR_USTR_INT,
  |  |  795|       |    [BINARY_OP_SUBTRACT_FLOAT] = _TAIL_CALL_BINARY_OP_SUBTRACT_FLOAT,
  |  |  796|       |    [BINARY_OP_SUBTRACT_INT] = _TAIL_CALL_BINARY_OP_SUBTRACT_INT,
  |  |  797|       |    [BINARY_SLICE] = _TAIL_CALL_BINARY_SLICE,
  |  |  798|       |    [BUILD_INTERPOLATION] = _TAIL_CALL_BUILD_INTERPOLATION,
  |  |  799|       |    [BUILD_LIST] = _TAIL_CALL_BUILD_LIST,
  |  |  800|       |    [BUILD_MAP] = _TAIL_CALL_BUILD_MAP,
  |  |  801|       |    [BUILD_SET] = _TAIL_CALL_BUILD_SET,
  |  |  802|       |    [BUILD_SLICE] = _TAIL_CALL_BUILD_SLICE,
  |  |  803|       |    [BUILD_STRING] = _TAIL_CALL_BUILD_STRING,
  |  |  804|       |    [BUILD_TEMPLATE] = _TAIL_CALL_BUILD_TEMPLATE,
  |  |  805|       |    [BUILD_TUPLE] = _TAIL_CALL_BUILD_TUPLE,
  |  |  806|       |    [CACHE] = _TAIL_CALL_CACHE,
  |  |  807|       |    [CALL] = _TAIL_CALL_CALL,
  |  |  808|       |    [CALL_ALLOC_AND_ENTER_INIT] = _TAIL_CALL_CALL_ALLOC_AND_ENTER_INIT,
  |  |  809|       |    [CALL_BOUND_METHOD_EXACT_ARGS] = _TAIL_CALL_CALL_BOUND_METHOD_EXACT_ARGS,
  |  |  810|       |    [CALL_BOUND_METHOD_GENERAL] = _TAIL_CALL_CALL_BOUND_METHOD_GENERAL,
  |  |  811|       |    [CALL_BUILTIN_CLASS] = _TAIL_CALL_CALL_BUILTIN_CLASS,
  |  |  812|       |    [CALL_BUILTIN_FAST] = _TAIL_CALL_CALL_BUILTIN_FAST,
  |  |  813|       |    [CALL_BUILTIN_FAST_WITH_KEYWORDS] = _TAIL_CALL_CALL_BUILTIN_FAST_WITH_KEYWORDS,
  |  |  814|       |    [CALL_BUILTIN_O] = _TAIL_CALL_CALL_BUILTIN_O,
  |  |  815|       |    [CALL_EX_NON_PY_GENERAL] = _TAIL_CALL_CALL_EX_NON_PY_GENERAL,
  |  |  816|       |    [CALL_EX_PY] = _TAIL_CALL_CALL_EX_PY,
  |  |  817|       |    [CALL_FUNCTION_EX] = _TAIL_CALL_CALL_FUNCTION_EX,
  |  |  818|       |    [CALL_INTRINSIC_1] = _TAIL_CALL_CALL_INTRINSIC_1,
  |  |  819|       |    [CALL_INTRINSIC_2] = _TAIL_CALL_CALL_INTRINSIC_2,
  |  |  820|       |    [CALL_ISINSTANCE] = _TAIL_CALL_CALL_ISINSTANCE,
  |  |  821|       |    [CALL_KW] = _TAIL_CALL_CALL_KW,
  |  |  822|       |    [CALL_KW_BOUND_METHOD] = _TAIL_CALL_CALL_KW_BOUND_METHOD,
  |  |  823|       |    [CALL_KW_NON_PY] = _TAIL_CALL_CALL_KW_NON_PY,
  |  |  824|       |    [CALL_KW_PY] = _TAIL_CALL_CALL_KW_PY,
  |  |  825|       |    [CALL_LEN] = _TAIL_CALL_CALL_LEN,
  |  |  826|       |    [CALL_LIST_APPEND] = _TAIL_CALL_CALL_LIST_APPEND,
  |  |  827|       |    [CALL_METHOD_DESCRIPTOR_FAST] = _TAIL_CALL_CALL_METHOD_DESCRIPTOR_FAST,
  |  |  828|       |    [CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS] = _TAIL_CALL_CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS,
  |  |  829|       |    [CALL_METHOD_DESCRIPTOR_NOARGS] = _TAIL_CALL_CALL_METHOD_DESCRIPTOR_NOARGS,
  |  |  830|       |    [CALL_METHOD_DESCRIPTOR_O] = _TAIL_CALL_CALL_METHOD_DESCRIPTOR_O,
  |  |  831|       |    [CALL_NON_PY_GENERAL] = _TAIL_CALL_CALL_NON_PY_GENERAL,
  |  |  832|       |    [CALL_PY_EXACT_ARGS] = _TAIL_CALL_CALL_PY_EXACT_ARGS,
  |  |  833|       |    [CALL_PY_GENERAL] = _TAIL_CALL_CALL_PY_GENERAL,
  |  |  834|       |    [CALL_STR_1] = _TAIL_CALL_CALL_STR_1,
  |  |  835|       |    [CALL_TUPLE_1] = _TAIL_CALL_CALL_TUPLE_1,
  |  |  836|       |    [CALL_TYPE_1] = _TAIL_CALL_CALL_TYPE_1,
  |  |  837|       |    [CHECK_EG_MATCH] = _TAIL_CALL_CHECK_EG_MATCH,
  |  |  838|       |    [CHECK_EXC_MATCH] = _TAIL_CALL_CHECK_EXC_MATCH,
  |  |  839|       |    [CLEANUP_THROW] = _TAIL_CALL_CLEANUP_THROW,
  |  |  840|       |    [COMPARE_OP] = _TAIL_CALL_COMPARE_OP,
  |  |  841|       |    [COMPARE_OP_FLOAT] = _TAIL_CALL_COMPARE_OP_FLOAT,
  |  |  842|       |    [COMPARE_OP_INT] = _TAIL_CALL_COMPARE_OP_INT,
  |  |  843|       |    [COMPARE_OP_STR] = _TAIL_CALL_COMPARE_OP_STR,
  |  |  844|       |    [CONTAINS_OP] = _TAIL_CALL_CONTAINS_OP,
  |  |  845|       |    [CONTAINS_OP_DICT] = _TAIL_CALL_CONTAINS_OP_DICT,
  |  |  846|       |    [CONTAINS_OP_SET] = _TAIL_CALL_CONTAINS_OP_SET,
  |  |  847|       |    [CONVERT_VALUE] = _TAIL_CALL_CONVERT_VALUE,
  |  |  848|       |    [COPY] = _TAIL_CALL_COPY,
  |  |  849|       |    [COPY_FREE_VARS] = _TAIL_CALL_COPY_FREE_VARS,
  |  |  850|       |    [DELETE_ATTR] = _TAIL_CALL_DELETE_ATTR,
  |  |  851|       |    [DELETE_DEREF] = _TAIL_CALL_DELETE_DEREF,
  |  |  852|       |    [DELETE_FAST] = _TAIL_CALL_DELETE_FAST,
  |  |  853|       |    [DELETE_GLOBAL] = _TAIL_CALL_DELETE_GLOBAL,
  |  |  854|       |    [DELETE_NAME] = _TAIL_CALL_DELETE_NAME,
  |  |  855|       |    [DELETE_SUBSCR] = _TAIL_CALL_DELETE_SUBSCR,
  |  |  856|       |    [DICT_MERGE] = _TAIL_CALL_DICT_MERGE,
  |  |  857|       |    [DICT_UPDATE] = _TAIL_CALL_DICT_UPDATE,
  |  |  858|       |    [END_ASYNC_FOR] = _TAIL_CALL_END_ASYNC_FOR,
  |  |  859|       |    [END_FOR] = _TAIL_CALL_END_FOR,
  |  |  860|       |    [END_SEND] = _TAIL_CALL_END_SEND,
  |  |  861|       |    [ENTER_EXECUTOR] = _TAIL_CALL_ENTER_EXECUTOR,
  |  |  862|       |    [EXIT_INIT_CHECK] = _TAIL_CALL_EXIT_INIT_CHECK,
  |  |  863|       |    [EXTENDED_ARG] = _TAIL_CALL_EXTENDED_ARG,
  |  |  864|       |    [FORMAT_SIMPLE] = _TAIL_CALL_FORMAT_SIMPLE,
  |  |  865|       |    [FORMAT_WITH_SPEC] = _TAIL_CALL_FORMAT_WITH_SPEC,
  |  |  866|       |    [FOR_ITER] = _TAIL_CALL_FOR_ITER,
  |  |  867|       |    [FOR_ITER_GEN] = _TAIL_CALL_FOR_ITER_GEN,
  |  |  868|       |    [FOR_ITER_LIST] = _TAIL_CALL_FOR_ITER_LIST,
  |  |  869|       |    [FOR_ITER_RANGE] = _TAIL_CALL_FOR_ITER_RANGE,
  |  |  870|       |    [FOR_ITER_TUPLE] = _TAIL_CALL_FOR_ITER_TUPLE,
  |  |  871|       |    [FOR_ITER_VIRTUAL] = _TAIL_CALL_FOR_ITER_VIRTUAL,
  |  |  872|       |    [GET_AITER] = _TAIL_CALL_GET_AITER,
  |  |  873|       |    [GET_ANEXT] = _TAIL_CALL_GET_ANEXT,
  |  |  874|       |    [GET_AWAITABLE] = _TAIL_CALL_GET_AWAITABLE,
  |  |  875|       |    [GET_ITER] = _TAIL_CALL_GET_ITER,
  |  |  876|       |    [GET_ITER_SELF] = _TAIL_CALL_GET_ITER_SELF,
  |  |  877|       |    [GET_ITER_VIRTUAL] = _TAIL_CALL_GET_ITER_VIRTUAL,
  |  |  878|       |    [GET_LEN] = _TAIL_CALL_GET_LEN,
  |  |  879|       |    [IMPORT_FROM] = _TAIL_CALL_IMPORT_FROM,
  |  |  880|       |    [IMPORT_NAME] = _TAIL_CALL_IMPORT_NAME,
  |  |  881|       |    [INSTRUMENTED_CALL] = _TAIL_CALL_INSTRUMENTED_CALL,
  |  |  882|       |    [INSTRUMENTED_CALL_FUNCTION_EX] = _TAIL_CALL_INSTRUMENTED_CALL_FUNCTION_EX,
  |  |  883|       |    [INSTRUMENTED_CALL_KW] = _TAIL_CALL_INSTRUMENTED_CALL_KW,
  |  |  884|       |    [INSTRUMENTED_END_ASYNC_FOR] = _TAIL_CALL_INSTRUMENTED_END_ASYNC_FOR,
  |  |  885|       |    [INSTRUMENTED_END_FOR] = _TAIL_CALL_INSTRUMENTED_END_FOR,
  |  |  886|       |    [INSTRUMENTED_END_SEND] = _TAIL_CALL_INSTRUMENTED_END_SEND,
  |  |  887|       |    [INSTRUMENTED_FOR_ITER] = _TAIL_CALL_INSTRUMENTED_FOR_ITER,
  |  |  888|       |    [INSTRUMENTED_INSTRUCTION] = _TAIL_CALL_INSTRUMENTED_INSTRUCTION,
  |  |  889|       |    [INSTRUMENTED_JUMP_BACKWARD] = _TAIL_CALL_INSTRUMENTED_JUMP_BACKWARD,
  |  |  890|       |    [INSTRUMENTED_JUMP_FORWARD] = _TAIL_CALL_INSTRUMENTED_JUMP_FORWARD,
  |  |  891|       |    [INSTRUMENTED_LINE] = _TAIL_CALL_INSTRUMENTED_LINE,
  |  |  892|       |    [INSTRUMENTED_LOAD_SUPER_ATTR] = _TAIL_CALL_INSTRUMENTED_LOAD_SUPER_ATTR,
  |  |  893|       |    [INSTRUMENTED_NOT_TAKEN] = _TAIL_CALL_INSTRUMENTED_NOT_TAKEN,
  |  |  894|       |    [INSTRUMENTED_POP_ITER] = _TAIL_CALL_INSTRUMENTED_POP_ITER,
  |  |  895|       |    [INSTRUMENTED_POP_JUMP_IF_FALSE] = _TAIL_CALL_INSTRUMENTED_POP_JUMP_IF_FALSE,
  |  |  896|       |    [INSTRUMENTED_POP_JUMP_IF_NONE] = _TAIL_CALL_INSTRUMENTED_POP_JUMP_IF_NONE,
  |  |  897|       |    [INSTRUMENTED_POP_JUMP_IF_NOT_NONE] = _TAIL_CALL_INSTRUMENTED_POP_JUMP_IF_NOT_NONE,
  |  |  898|       |    [INSTRUMENTED_POP_JUMP_IF_TRUE] = _TAIL_CALL_INSTRUMENTED_POP_JUMP_IF_TRUE,
  |  |  899|       |    [INSTRUMENTED_RESUME] = _TAIL_CALL_INSTRUMENTED_RESUME,
  |  |  900|       |    [INSTRUMENTED_RETURN_VALUE] = _TAIL_CALL_INSTRUMENTED_RETURN_VALUE,
  |  |  901|       |    [INSTRUMENTED_YIELD_VALUE] = _TAIL_CALL_INSTRUMENTED_YIELD_VALUE,
  |  |  902|       |    [INTERPRETER_EXIT] = _TAIL_CALL_INTERPRETER_EXIT,
  |  |  903|       |    [IS_OP] = _TAIL_CALL_IS_OP,
  |  |  904|       |    [JUMP_BACKWARD] = _TAIL_CALL_JUMP_BACKWARD,
  |  |  905|       |    [JUMP_BACKWARD_JIT] = _TAIL_CALL_JUMP_BACKWARD_JIT,
  |  |  906|       |    [JUMP_BACKWARD_NO_INTERRUPT] = _TAIL_CALL_JUMP_BACKWARD_NO_INTERRUPT,
  |  |  907|       |    [JUMP_BACKWARD_NO_JIT] = _TAIL_CALL_JUMP_BACKWARD_NO_JIT,
  |  |  908|       |    [JUMP_FORWARD] = _TAIL_CALL_JUMP_FORWARD,
  |  |  909|       |    [LIST_APPEND] = _TAIL_CALL_LIST_APPEND,
  |  |  910|       |    [LIST_EXTEND] = _TAIL_CALL_LIST_EXTEND,
  |  |  911|       |    [LOAD_ATTR] = _TAIL_CALL_LOAD_ATTR,
  |  |  912|       |    [LOAD_ATTR_CLASS] = _TAIL_CALL_LOAD_ATTR_CLASS,
  |  |  913|       |    [LOAD_ATTR_CLASS_WITH_METACLASS_CHECK] = _TAIL_CALL_LOAD_ATTR_CLASS_WITH_METACLASS_CHECK,
  |  |  914|       |    [LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN] = _TAIL_CALL_LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN,
  |  |  915|       |    [LOAD_ATTR_INSTANCE_VALUE] = _TAIL_CALL_LOAD_ATTR_INSTANCE_VALUE,
  |  |  916|       |    [LOAD_ATTR_METHOD_LAZY_DICT] = _TAIL_CALL_LOAD_ATTR_METHOD_LAZY_DICT,
  |  |  917|       |    [LOAD_ATTR_METHOD_NO_DICT] = _TAIL_CALL_LOAD_ATTR_METHOD_NO_DICT,
  |  |  918|       |    [LOAD_ATTR_METHOD_WITH_VALUES] = _TAIL_CALL_LOAD_ATTR_METHOD_WITH_VALUES,
  |  |  919|       |    [LOAD_ATTR_MODULE] = _TAIL_CALL_LOAD_ATTR_MODULE,
  |  |  920|       |    [LOAD_ATTR_NONDESCRIPTOR_NO_DICT] = _TAIL_CALL_LOAD_ATTR_NONDESCRIPTOR_NO_DICT,
  |  |  921|       |    [LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES] = _TAIL_CALL_LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES,
  |  |  922|       |    [LOAD_ATTR_PROPERTY] = _TAIL_CALL_LOAD_ATTR_PROPERTY,
  |  |  923|       |    [LOAD_ATTR_SLOT] = _TAIL_CALL_LOAD_ATTR_SLOT,
  |  |  924|       |    [LOAD_ATTR_WITH_HINT] = _TAIL_CALL_LOAD_ATTR_WITH_HINT,
  |  |  925|       |    [LOAD_BUILD_CLASS] = _TAIL_CALL_LOAD_BUILD_CLASS,
  |  |  926|       |    [LOAD_COMMON_CONSTANT] = _TAIL_CALL_LOAD_COMMON_CONSTANT,
  |  |  927|       |    [LOAD_CONST] = _TAIL_CALL_LOAD_CONST,
  |  |  928|       |    [LOAD_DEREF] = _TAIL_CALL_LOAD_DEREF,
  |  |  929|       |    [LOAD_FAST] = _TAIL_CALL_LOAD_FAST,
  |  |  930|       |    [LOAD_FAST_AND_CLEAR] = _TAIL_CALL_LOAD_FAST_AND_CLEAR,
  |  |  931|       |    [LOAD_FAST_BORROW] = _TAIL_CALL_LOAD_FAST_BORROW,
  |  |  932|       |    [LOAD_FAST_BORROW_LOAD_FAST_BORROW] = _TAIL_CALL_LOAD_FAST_BORROW_LOAD_FAST_BORROW,
  |  |  933|       |    [LOAD_FAST_CHECK] = _TAIL_CALL_LOAD_FAST_CHECK,
  |  |  934|       |    [LOAD_FAST_LOAD_FAST] = _TAIL_CALL_LOAD_FAST_LOAD_FAST,
  |  |  935|       |    [LOAD_FROM_DICT_OR_DEREF] = _TAIL_CALL_LOAD_FROM_DICT_OR_DEREF,
  |  |  936|       |    [LOAD_FROM_DICT_OR_GLOBALS] = _TAIL_CALL_LOAD_FROM_DICT_OR_GLOBALS,
  |  |  937|       |    [LOAD_GLOBAL] = _TAIL_CALL_LOAD_GLOBAL,
  |  |  938|       |    [LOAD_GLOBAL_BUILTIN] = _TAIL_CALL_LOAD_GLOBAL_BUILTIN,
  |  |  939|       |    [LOAD_GLOBAL_MODULE] = _TAIL_CALL_LOAD_GLOBAL_MODULE,
  |  |  940|       |    [LOAD_LOCALS] = _TAIL_CALL_LOAD_LOCALS,
  |  |  941|       |    [LOAD_NAME] = _TAIL_CALL_LOAD_NAME,
  |  |  942|       |    [LOAD_SMALL_INT] = _TAIL_CALL_LOAD_SMALL_INT,
  |  |  943|       |    [LOAD_SPECIAL] = _TAIL_CALL_LOAD_SPECIAL,
  |  |  944|       |    [LOAD_SUPER_ATTR] = _TAIL_CALL_LOAD_SUPER_ATTR,
  |  |  945|       |    [LOAD_SUPER_ATTR_ATTR] = _TAIL_CALL_LOAD_SUPER_ATTR_ATTR,
  |  |  946|       |    [LOAD_SUPER_ATTR_METHOD] = _TAIL_CALL_LOAD_SUPER_ATTR_METHOD,
  |  |  947|       |    [MAKE_CELL] = _TAIL_CALL_MAKE_CELL,
  |  |  948|       |    [MAKE_FUNCTION] = _TAIL_CALL_MAKE_FUNCTION,
  |  |  949|       |    [MAP_ADD] = _TAIL_CALL_MAP_ADD,
  |  |  950|       |    [MATCH_CLASS] = _TAIL_CALL_MATCH_CLASS,
  |  |  951|       |    [MATCH_KEYS] = _TAIL_CALL_MATCH_KEYS,
  |  |  952|       |    [MATCH_MAPPING] = _TAIL_CALL_MATCH_MAPPING,
  |  |  953|       |    [MATCH_SEQUENCE] = _TAIL_CALL_MATCH_SEQUENCE,
  |  |  954|       |    [NOP] = _TAIL_CALL_NOP,
  |  |  955|       |    [NOT_TAKEN] = _TAIL_CALL_NOT_TAKEN,
  |  |  956|       |    [POP_EXCEPT] = _TAIL_CALL_POP_EXCEPT,
  |  |  957|       |    [POP_ITER] = _TAIL_CALL_POP_ITER,
  |  |  958|       |    [POP_JUMP_IF_FALSE] = _TAIL_CALL_POP_JUMP_IF_FALSE,
  |  |  959|       |    [POP_JUMP_IF_NONE] = _TAIL_CALL_POP_JUMP_IF_NONE,
  |  |  960|       |    [POP_JUMP_IF_NOT_NONE] = _TAIL_CALL_POP_JUMP_IF_NOT_NONE,
  |  |  961|       |    [POP_JUMP_IF_TRUE] = _TAIL_CALL_POP_JUMP_IF_TRUE,
  |  |  962|       |    [POP_TOP] = _TAIL_CALL_POP_TOP,
  |  |  963|       |    [PUSH_EXC_INFO] = _TAIL_CALL_PUSH_EXC_INFO,
  |  |  964|       |    [PUSH_NULL] = _TAIL_CALL_PUSH_NULL,
  |  |  965|       |    [RAISE_VARARGS] = _TAIL_CALL_RAISE_VARARGS,
  |  |  966|       |    [RERAISE] = _TAIL_CALL_RERAISE,
  |  |  967|       |    [RESERVED] = _TAIL_CALL_RESERVED,
  |  |  968|       |    [RESUME] = _TAIL_CALL_RESUME,
  |  |  969|       |    [RESUME_CHECK] = _TAIL_CALL_RESUME_CHECK,
  |  |  970|       |    [RESUME_CHECK_JIT] = _TAIL_CALL_RESUME_CHECK_JIT,
  |  |  971|       |    [RETURN_GENERATOR] = _TAIL_CALL_RETURN_GENERATOR,
  |  |  972|       |    [RETURN_VALUE] = _TAIL_CALL_RETURN_VALUE,
  |  |  973|       |    [SEND] = _TAIL_CALL_SEND,
  |  |  974|       |    [SEND_ASYNC_GEN] = _TAIL_CALL_SEND_ASYNC_GEN,
  |  |  975|       |    [SEND_GEN] = _TAIL_CALL_SEND_GEN,
  |  |  976|       |    [SEND_VIRTUAL] = _TAIL_CALL_SEND_VIRTUAL,
  |  |  977|       |    [SETUP_ANNOTATIONS] = _TAIL_CALL_SETUP_ANNOTATIONS,
  |  |  978|       |    [SET_ADD] = _TAIL_CALL_SET_ADD,
  |  |  979|       |    [SET_FUNCTION_ATTRIBUTE] = _TAIL_CALL_SET_FUNCTION_ATTRIBUTE,
  |  |  980|       |    [SET_UPDATE] = _TAIL_CALL_SET_UPDATE,
  |  |  981|       |    [STORE_ATTR] = _TAIL_CALL_STORE_ATTR,
  |  |  982|       |    [STORE_ATTR_INSTANCE_VALUE] = _TAIL_CALL_STORE_ATTR_INSTANCE_VALUE,
  |  |  983|       |    [STORE_ATTR_SLOT] = _TAIL_CALL_STORE_ATTR_SLOT,
  |  |  984|       |    [STORE_ATTR_WITH_HINT] = _TAIL_CALL_STORE_ATTR_WITH_HINT,
  |  |  985|       |    [STORE_DEREF] = _TAIL_CALL_STORE_DEREF,
  |  |  986|       |    [STORE_FAST] = _TAIL_CALL_STORE_FAST,
  |  |  987|       |    [STORE_FAST_LOAD_FAST] = _TAIL_CALL_STORE_FAST_LOAD_FAST,
  |  |  988|       |    [STORE_FAST_STORE_FAST] = _TAIL_CALL_STORE_FAST_STORE_FAST,
  |  |  989|       |    [STORE_GLOBAL] = _TAIL_CALL_STORE_GLOBAL,
  |  |  990|       |    [STORE_NAME] = _TAIL_CALL_STORE_NAME,
  |  |  991|       |    [STORE_SLICE] = _TAIL_CALL_STORE_SLICE,
  |  |  992|       |    [STORE_SUBSCR] = _TAIL_CALL_STORE_SUBSCR,
  |  |  993|       |    [STORE_SUBSCR_DICT] = _TAIL_CALL_STORE_SUBSCR_DICT,
  |  |  994|       |    [STORE_SUBSCR_LIST_INT] = _TAIL_CALL_STORE_SUBSCR_LIST_INT,
  |  |  995|       |    [SWAP] = _TAIL_CALL_SWAP,
  |  |  996|       |    [TO_BOOL] = _TAIL_CALL_TO_BOOL,
  |  |  997|       |    [TO_BOOL_ALWAYS_TRUE] = _TAIL_CALL_TO_BOOL_ALWAYS_TRUE,
  |  |  998|       |    [TO_BOOL_BOOL] = _TAIL_CALL_TO_BOOL_BOOL,
  |  |  999|       |    [TO_BOOL_INT] = _TAIL_CALL_TO_BOOL_INT,
  |  | 1000|       |    [TO_BOOL_LIST] = _TAIL_CALL_TO_BOOL_LIST,
  |  | 1001|       |    [TO_BOOL_NONE] = _TAIL_CALL_TO_BOOL_NONE,
  |  | 1002|       |    [TO_BOOL_STR] = _TAIL_CALL_TO_BOOL_STR,
  |  | 1003|       |    [TRACE_RECORD] = _TAIL_CALL_TRACE_RECORD,
  |  | 1004|       |    [UNARY_INVERT] = _TAIL_CALL_UNARY_INVERT,
  |  | 1005|       |    [UNARY_NEGATIVE] = _TAIL_CALL_UNARY_NEGATIVE,
  |  | 1006|       |    [UNARY_NOT] = _TAIL_CALL_UNARY_NOT,
  |  | 1007|       |    [UNPACK_EX] = _TAIL_CALL_UNPACK_EX,
  |  | 1008|       |    [UNPACK_SEQUENCE] = _TAIL_CALL_UNPACK_SEQUENCE,
  |  | 1009|       |    [UNPACK_SEQUENCE_LIST] = _TAIL_CALL_UNPACK_SEQUENCE_LIST,
  |  | 1010|       |    [UNPACK_SEQUENCE_TUPLE] = _TAIL_CALL_UNPACK_SEQUENCE_TUPLE,
  |  | 1011|       |    [UNPACK_SEQUENCE_TWO_TUPLE] = _TAIL_CALL_UNPACK_SEQUENCE_TWO_TUPLE,
  |  | 1012|       |    [WITH_EXCEPT_START] = _TAIL_CALL_WITH_EXCEPT_START,
  |  | 1013|       |    [YIELD_VALUE] = _TAIL_CALL_YIELD_VALUE,
  |  | 1014|       |    [120] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1015|       |    [121] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1016|       |    [122] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1017|       |    [123] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1018|       |    [124] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1019|       |    [125] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1020|       |    [126] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1021|       |    [127] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1022|       |    [219] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1023|       |    [220] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1024|       |    [221] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1025|       |    [222] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1026|       |    [223] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1027|       |    [224] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1028|       |    [225] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1029|       |    [226] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1030|       |    [227] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1031|       |    [228] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1032|       |    [229] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1033|       |    [230] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1034|       |    [231] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1035|       |    [232] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1036|       |};
  |  | 1037|       |static py_tail_call_funcptr instruction_funcptr_tracing_table[256] = {
  |  | 1038|       |    [BINARY_OP] = _TAIL_CALL_TRACE_RECORD,
  |  | 1039|       |    [BINARY_OP_ADD_FLOAT] = _TAIL_CALL_TRACE_RECORD,
  |  | 1040|       |    [BINARY_OP_ADD_INT] = _TAIL_CALL_TRACE_RECORD,
  |  | 1041|       |    [BINARY_OP_ADD_UNICODE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1042|       |    [BINARY_OP_EXTEND] = _TAIL_CALL_TRACE_RECORD,
  |  | 1043|       |    [BINARY_OP_INPLACE_ADD_UNICODE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1044|       |    [BINARY_OP_MULTIPLY_FLOAT] = _TAIL_CALL_TRACE_RECORD,
  |  | 1045|       |    [BINARY_OP_MULTIPLY_INT] = _TAIL_CALL_TRACE_RECORD,
  |  | 1046|       |    [BINARY_OP_SUBSCR_DICT] = _TAIL_CALL_TRACE_RECORD,
  |  | 1047|       |    [BINARY_OP_SUBSCR_GETITEM] = _TAIL_CALL_TRACE_RECORD,
  |  | 1048|       |    [BINARY_OP_SUBSCR_LIST_INT] = _TAIL_CALL_TRACE_RECORD,
  |  | 1049|       |    [BINARY_OP_SUBSCR_LIST_SLICE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1050|       |    [BINARY_OP_SUBSCR_STR_INT] = _TAIL_CALL_TRACE_RECORD,
  |  | 1051|       |    [BINARY_OP_SUBSCR_TUPLE_INT] = _TAIL_CALL_TRACE_RECORD,
  |  | 1052|       |    [BINARY_OP_SUBSCR_USTR_INT] = _TAIL_CALL_TRACE_RECORD,
  |  | 1053|       |    [BINARY_OP_SUBTRACT_FLOAT] = _TAIL_CALL_TRACE_RECORD,
  |  | 1054|       |    [BINARY_OP_SUBTRACT_INT] = _TAIL_CALL_TRACE_RECORD,
  |  | 1055|       |    [BINARY_SLICE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1056|       |    [BUILD_INTERPOLATION] = _TAIL_CALL_TRACE_RECORD,
  |  | 1057|       |    [BUILD_LIST] = _TAIL_CALL_TRACE_RECORD,
  |  | 1058|       |    [BUILD_MAP] = _TAIL_CALL_TRACE_RECORD,
  |  | 1059|       |    [BUILD_SET] = _TAIL_CALL_TRACE_RECORD,
  |  | 1060|       |    [BUILD_SLICE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1061|       |    [BUILD_STRING] = _TAIL_CALL_TRACE_RECORD,
  |  | 1062|       |    [BUILD_TEMPLATE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1063|       |    [BUILD_TUPLE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1064|       |    [CACHE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1065|       |    [CALL] = _TAIL_CALL_TRACE_RECORD,
  |  | 1066|       |    [CALL_ALLOC_AND_ENTER_INIT] = _TAIL_CALL_TRACE_RECORD,
  |  | 1067|       |    [CALL_BOUND_METHOD_EXACT_ARGS] = _TAIL_CALL_TRACE_RECORD,
  |  | 1068|       |    [CALL_BOUND_METHOD_GENERAL] = _TAIL_CALL_TRACE_RECORD,
  |  | 1069|       |    [CALL_BUILTIN_CLASS] = _TAIL_CALL_TRACE_RECORD,
  |  | 1070|       |    [CALL_BUILTIN_FAST] = _TAIL_CALL_TRACE_RECORD,
  |  | 1071|       |    [CALL_BUILTIN_FAST_WITH_KEYWORDS] = _TAIL_CALL_TRACE_RECORD,
  |  | 1072|       |    [CALL_BUILTIN_O] = _TAIL_CALL_TRACE_RECORD,
  |  | 1073|       |    [CALL_EX_NON_PY_GENERAL] = _TAIL_CALL_TRACE_RECORD,
  |  | 1074|       |    [CALL_EX_PY] = _TAIL_CALL_TRACE_RECORD,
  |  | 1075|       |    [CALL_FUNCTION_EX] = _TAIL_CALL_TRACE_RECORD,
  |  | 1076|       |    [CALL_INTRINSIC_1] = _TAIL_CALL_TRACE_RECORD,
  |  | 1077|       |    [CALL_INTRINSIC_2] = _TAIL_CALL_TRACE_RECORD,
  |  | 1078|       |    [CALL_ISINSTANCE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1079|       |    [CALL_KW] = _TAIL_CALL_TRACE_RECORD,
  |  | 1080|       |    [CALL_KW_BOUND_METHOD] = _TAIL_CALL_TRACE_RECORD,
  |  | 1081|       |    [CALL_KW_NON_PY] = _TAIL_CALL_TRACE_RECORD,
  |  | 1082|       |    [CALL_KW_PY] = _TAIL_CALL_TRACE_RECORD,
  |  | 1083|       |    [CALL_LEN] = _TAIL_CALL_TRACE_RECORD,
  |  | 1084|       |    [CALL_LIST_APPEND] = _TAIL_CALL_TRACE_RECORD,
  |  | 1085|       |    [CALL_METHOD_DESCRIPTOR_FAST] = _TAIL_CALL_TRACE_RECORD,
  |  | 1086|       |    [CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS] = _TAIL_CALL_TRACE_RECORD,
  |  | 1087|       |    [CALL_METHOD_DESCRIPTOR_NOARGS] = _TAIL_CALL_TRACE_RECORD,
  |  | 1088|       |    [CALL_METHOD_DESCRIPTOR_O] = _TAIL_CALL_TRACE_RECORD,
  |  | 1089|       |    [CALL_NON_PY_GENERAL] = _TAIL_CALL_TRACE_RECORD,
  |  | 1090|       |    [CALL_PY_EXACT_ARGS] = _TAIL_CALL_TRACE_RECORD,
  |  | 1091|       |    [CALL_PY_GENERAL] = _TAIL_CALL_TRACE_RECORD,
  |  | 1092|       |    [CALL_STR_1] = _TAIL_CALL_TRACE_RECORD,
  |  | 1093|       |    [CALL_TUPLE_1] = _TAIL_CALL_TRACE_RECORD,
  |  | 1094|       |    [CALL_TYPE_1] = _TAIL_CALL_TRACE_RECORD,
  |  | 1095|       |    [CHECK_EG_MATCH] = _TAIL_CALL_TRACE_RECORD,
  |  | 1096|       |    [CHECK_EXC_MATCH] = _TAIL_CALL_TRACE_RECORD,
  |  | 1097|       |    [CLEANUP_THROW] = _TAIL_CALL_TRACE_RECORD,
  |  | 1098|       |    [COMPARE_OP] = _TAIL_CALL_TRACE_RECORD,
  |  | 1099|       |    [COMPARE_OP_FLOAT] = _TAIL_CALL_TRACE_RECORD,
  |  | 1100|       |    [COMPARE_OP_INT] = _TAIL_CALL_TRACE_RECORD,
  |  | 1101|       |    [COMPARE_OP_STR] = _TAIL_CALL_TRACE_RECORD,
  |  | 1102|       |    [CONTAINS_OP] = _TAIL_CALL_TRACE_RECORD,
  |  | 1103|       |    [CONTAINS_OP_DICT] = _TAIL_CALL_TRACE_RECORD,
  |  | 1104|       |    [CONTAINS_OP_SET] = _TAIL_CALL_TRACE_RECORD,
  |  | 1105|       |    [CONVERT_VALUE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1106|       |    [COPY] = _TAIL_CALL_TRACE_RECORD,
  |  | 1107|       |    [COPY_FREE_VARS] = _TAIL_CALL_TRACE_RECORD,
  |  | 1108|       |    [DELETE_ATTR] = _TAIL_CALL_TRACE_RECORD,
  |  | 1109|       |    [DELETE_DEREF] = _TAIL_CALL_TRACE_RECORD,
  |  | 1110|       |    [DELETE_FAST] = _TAIL_CALL_TRACE_RECORD,
  |  | 1111|       |    [DELETE_GLOBAL] = _TAIL_CALL_TRACE_RECORD,
  |  | 1112|       |    [DELETE_NAME] = _TAIL_CALL_TRACE_RECORD,
  |  | 1113|       |    [DELETE_SUBSCR] = _TAIL_CALL_TRACE_RECORD,
  |  | 1114|       |    [DICT_MERGE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1115|       |    [DICT_UPDATE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1116|       |    [END_ASYNC_FOR] = _TAIL_CALL_TRACE_RECORD,
  |  | 1117|       |    [END_FOR] = _TAIL_CALL_TRACE_RECORD,
  |  | 1118|       |    [END_SEND] = _TAIL_CALL_TRACE_RECORD,
  |  | 1119|       |    [ENTER_EXECUTOR] = _TAIL_CALL_TRACE_RECORD,
  |  | 1120|       |    [EXIT_INIT_CHECK] = _TAIL_CALL_TRACE_RECORD,
  |  | 1121|       |    [EXTENDED_ARG] = _TAIL_CALL_TRACE_RECORD,
  |  | 1122|       |    [FORMAT_SIMPLE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1123|       |    [FORMAT_WITH_SPEC] = _TAIL_CALL_TRACE_RECORD,
  |  | 1124|       |    [FOR_ITER] = _TAIL_CALL_TRACE_RECORD,
  |  | 1125|       |    [FOR_ITER_GEN] = _TAIL_CALL_TRACE_RECORD,
  |  | 1126|       |    [FOR_ITER_LIST] = _TAIL_CALL_TRACE_RECORD,
  |  | 1127|       |    [FOR_ITER_RANGE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1128|       |    [FOR_ITER_TUPLE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1129|       |    [FOR_ITER_VIRTUAL] = _TAIL_CALL_TRACE_RECORD,
  |  | 1130|       |    [GET_AITER] = _TAIL_CALL_TRACE_RECORD,
  |  | 1131|       |    [GET_ANEXT] = _TAIL_CALL_TRACE_RECORD,
  |  | 1132|       |    [GET_AWAITABLE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1133|       |    [GET_ITER] = _TAIL_CALL_TRACE_RECORD,
  |  | 1134|       |    [GET_ITER_SELF] = _TAIL_CALL_TRACE_RECORD,
  |  | 1135|       |    [GET_ITER_VIRTUAL] = _TAIL_CALL_TRACE_RECORD,
  |  | 1136|       |    [GET_LEN] = _TAIL_CALL_TRACE_RECORD,
  |  | 1137|       |    [IMPORT_FROM] = _TAIL_CALL_TRACE_RECORD,
  |  | 1138|       |    [IMPORT_NAME] = _TAIL_CALL_TRACE_RECORD,
  |  | 1139|       |    [INSTRUMENTED_CALL] = _TAIL_CALL_TRACE_RECORD,
  |  | 1140|       |    [INSTRUMENTED_CALL_FUNCTION_EX] = _TAIL_CALL_TRACE_RECORD,
  |  | 1141|       |    [INSTRUMENTED_CALL_KW] = _TAIL_CALL_TRACE_RECORD,
  |  | 1142|       |    [INSTRUMENTED_END_ASYNC_FOR] = _TAIL_CALL_TRACE_RECORD,
  |  | 1143|       |    [INSTRUMENTED_END_FOR] = _TAIL_CALL_TRACE_RECORD,
  |  | 1144|       |    [INSTRUMENTED_END_SEND] = _TAIL_CALL_TRACE_RECORD,
  |  | 1145|       |    [INSTRUMENTED_FOR_ITER] = _TAIL_CALL_TRACE_RECORD,
  |  | 1146|       |    [INSTRUMENTED_INSTRUCTION] = _TAIL_CALL_TRACE_RECORD,
  |  | 1147|       |    [INSTRUMENTED_JUMP_BACKWARD] = _TAIL_CALL_TRACE_RECORD,
  |  | 1148|       |    [INSTRUMENTED_JUMP_FORWARD] = _TAIL_CALL_TRACE_RECORD,
  |  | 1149|       |    [INSTRUMENTED_LINE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1150|       |    [INSTRUMENTED_LOAD_SUPER_ATTR] = _TAIL_CALL_TRACE_RECORD,
  |  | 1151|       |    [INSTRUMENTED_NOT_TAKEN] = _TAIL_CALL_TRACE_RECORD,
  |  | 1152|       |    [INSTRUMENTED_POP_ITER] = _TAIL_CALL_TRACE_RECORD,
  |  | 1153|       |    [INSTRUMENTED_POP_JUMP_IF_FALSE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1154|       |    [INSTRUMENTED_POP_JUMP_IF_NONE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1155|       |    [INSTRUMENTED_POP_JUMP_IF_NOT_NONE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1156|       |    [INSTRUMENTED_POP_JUMP_IF_TRUE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1157|       |    [INSTRUMENTED_RESUME] = _TAIL_CALL_TRACE_RECORD,
  |  | 1158|       |    [INSTRUMENTED_RETURN_VALUE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1159|       |    [INSTRUMENTED_YIELD_VALUE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1160|       |    [INTERPRETER_EXIT] = _TAIL_CALL_TRACE_RECORD,
  |  | 1161|       |    [IS_OP] = _TAIL_CALL_TRACE_RECORD,
  |  | 1162|       |    [JUMP_BACKWARD] = _TAIL_CALL_TRACE_RECORD,
  |  | 1163|       |    [JUMP_BACKWARD_JIT] = _TAIL_CALL_TRACE_RECORD,
  |  | 1164|       |    [JUMP_BACKWARD_NO_INTERRUPT] = _TAIL_CALL_TRACE_RECORD,
  |  | 1165|       |    [JUMP_BACKWARD_NO_JIT] = _TAIL_CALL_TRACE_RECORD,
  |  | 1166|       |    [JUMP_FORWARD] = _TAIL_CALL_TRACE_RECORD,
  |  | 1167|       |    [LIST_APPEND] = _TAIL_CALL_TRACE_RECORD,
  |  | 1168|       |    [LIST_EXTEND] = _TAIL_CALL_TRACE_RECORD,
  |  | 1169|       |    [LOAD_ATTR] = _TAIL_CALL_TRACE_RECORD,
  |  | 1170|       |    [LOAD_ATTR_CLASS] = _TAIL_CALL_TRACE_RECORD,
  |  | 1171|       |    [LOAD_ATTR_CLASS_WITH_METACLASS_CHECK] = _TAIL_CALL_TRACE_RECORD,
  |  | 1172|       |    [LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN] = _TAIL_CALL_TRACE_RECORD,
  |  | 1173|       |    [LOAD_ATTR_INSTANCE_VALUE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1174|       |    [LOAD_ATTR_METHOD_LAZY_DICT] = _TAIL_CALL_TRACE_RECORD,
  |  | 1175|       |    [LOAD_ATTR_METHOD_NO_DICT] = _TAIL_CALL_TRACE_RECORD,
  |  | 1176|       |    [LOAD_ATTR_METHOD_WITH_VALUES] = _TAIL_CALL_TRACE_RECORD,
  |  | 1177|       |    [LOAD_ATTR_MODULE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1178|       |    [LOAD_ATTR_NONDESCRIPTOR_NO_DICT] = _TAIL_CALL_TRACE_RECORD,
  |  | 1179|       |    [LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES] = _TAIL_CALL_TRACE_RECORD,
  |  | 1180|       |    [LOAD_ATTR_PROPERTY] = _TAIL_CALL_TRACE_RECORD,
  |  | 1181|       |    [LOAD_ATTR_SLOT] = _TAIL_CALL_TRACE_RECORD,
  |  | 1182|       |    [LOAD_ATTR_WITH_HINT] = _TAIL_CALL_TRACE_RECORD,
  |  | 1183|       |    [LOAD_BUILD_CLASS] = _TAIL_CALL_TRACE_RECORD,
  |  | 1184|       |    [LOAD_COMMON_CONSTANT] = _TAIL_CALL_TRACE_RECORD,
  |  | 1185|       |    [LOAD_CONST] = _TAIL_CALL_TRACE_RECORD,
  |  | 1186|       |    [LOAD_DEREF] = _TAIL_CALL_TRACE_RECORD,
  |  | 1187|       |    [LOAD_FAST] = _TAIL_CALL_TRACE_RECORD,
  |  | 1188|       |    [LOAD_FAST_AND_CLEAR] = _TAIL_CALL_TRACE_RECORD,
  |  | 1189|       |    [LOAD_FAST_BORROW] = _TAIL_CALL_TRACE_RECORD,
  |  | 1190|       |    [LOAD_FAST_BORROW_LOAD_FAST_BORROW] = _TAIL_CALL_TRACE_RECORD,
  |  | 1191|       |    [LOAD_FAST_CHECK] = _TAIL_CALL_TRACE_RECORD,
  |  | 1192|       |    [LOAD_FAST_LOAD_FAST] = _TAIL_CALL_TRACE_RECORD,
  |  | 1193|       |    [LOAD_FROM_DICT_OR_DEREF] = _TAIL_CALL_TRACE_RECORD,
  |  | 1194|       |    [LOAD_FROM_DICT_OR_GLOBALS] = _TAIL_CALL_TRACE_RECORD,
  |  | 1195|       |    [LOAD_GLOBAL] = _TAIL_CALL_TRACE_RECORD,
  |  | 1196|       |    [LOAD_GLOBAL_BUILTIN] = _TAIL_CALL_TRACE_RECORD,
  |  | 1197|       |    [LOAD_GLOBAL_MODULE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1198|       |    [LOAD_LOCALS] = _TAIL_CALL_TRACE_RECORD,
  |  | 1199|       |    [LOAD_NAME] = _TAIL_CALL_TRACE_RECORD,
  |  | 1200|       |    [LOAD_SMALL_INT] = _TAIL_CALL_TRACE_RECORD,
  |  | 1201|       |    [LOAD_SPECIAL] = _TAIL_CALL_TRACE_RECORD,
  |  | 1202|       |    [LOAD_SUPER_ATTR] = _TAIL_CALL_TRACE_RECORD,
  |  | 1203|       |    [LOAD_SUPER_ATTR_ATTR] = _TAIL_CALL_TRACE_RECORD,
  |  | 1204|       |    [LOAD_SUPER_ATTR_METHOD] = _TAIL_CALL_TRACE_RECORD,
  |  | 1205|       |    [MAKE_CELL] = _TAIL_CALL_TRACE_RECORD,
  |  | 1206|       |    [MAKE_FUNCTION] = _TAIL_CALL_TRACE_RECORD,
  |  | 1207|       |    [MAP_ADD] = _TAIL_CALL_TRACE_RECORD,
  |  | 1208|       |    [MATCH_CLASS] = _TAIL_CALL_TRACE_RECORD,
  |  | 1209|       |    [MATCH_KEYS] = _TAIL_CALL_TRACE_RECORD,
  |  | 1210|       |    [MATCH_MAPPING] = _TAIL_CALL_TRACE_RECORD,
  |  | 1211|       |    [MATCH_SEQUENCE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1212|       |    [NOP] = _TAIL_CALL_TRACE_RECORD,
  |  | 1213|       |    [NOT_TAKEN] = _TAIL_CALL_TRACE_RECORD,
  |  | 1214|       |    [POP_EXCEPT] = _TAIL_CALL_TRACE_RECORD,
  |  | 1215|       |    [POP_ITER] = _TAIL_CALL_TRACE_RECORD,
  |  | 1216|       |    [POP_JUMP_IF_FALSE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1217|       |    [POP_JUMP_IF_NONE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1218|       |    [POP_JUMP_IF_NOT_NONE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1219|       |    [POP_JUMP_IF_TRUE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1220|       |    [POP_TOP] = _TAIL_CALL_TRACE_RECORD,
  |  | 1221|       |    [PUSH_EXC_INFO] = _TAIL_CALL_TRACE_RECORD,
  |  | 1222|       |    [PUSH_NULL] = _TAIL_CALL_TRACE_RECORD,
  |  | 1223|       |    [RAISE_VARARGS] = _TAIL_CALL_TRACE_RECORD,
  |  | 1224|       |    [RERAISE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1225|       |    [RESERVED] = _TAIL_CALL_TRACE_RECORD,
  |  | 1226|       |    [RESUME] = _TAIL_CALL_TRACE_RECORD,
  |  | 1227|       |    [RESUME_CHECK] = _TAIL_CALL_TRACE_RECORD,
  |  | 1228|       |    [RESUME_CHECK_JIT] = _TAIL_CALL_TRACE_RECORD,
  |  | 1229|       |    [RETURN_GENERATOR] = _TAIL_CALL_TRACE_RECORD,
  |  | 1230|       |    [RETURN_VALUE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1231|       |    [SEND] = _TAIL_CALL_TRACE_RECORD,
  |  | 1232|       |    [SEND_ASYNC_GEN] = _TAIL_CALL_TRACE_RECORD,
  |  | 1233|       |    [SEND_GEN] = _TAIL_CALL_TRACE_RECORD,
  |  | 1234|       |    [SEND_VIRTUAL] = _TAIL_CALL_TRACE_RECORD,
  |  | 1235|       |    [SETUP_ANNOTATIONS] = _TAIL_CALL_TRACE_RECORD,
  |  | 1236|       |    [SET_ADD] = _TAIL_CALL_TRACE_RECORD,
  |  | 1237|       |    [SET_FUNCTION_ATTRIBUTE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1238|       |    [SET_UPDATE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1239|       |    [STORE_ATTR] = _TAIL_CALL_TRACE_RECORD,
  |  | 1240|       |    [STORE_ATTR_INSTANCE_VALUE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1241|       |    [STORE_ATTR_SLOT] = _TAIL_CALL_TRACE_RECORD,
  |  | 1242|       |    [STORE_ATTR_WITH_HINT] = _TAIL_CALL_TRACE_RECORD,
  |  | 1243|       |    [STORE_DEREF] = _TAIL_CALL_TRACE_RECORD,
  |  | 1244|       |    [STORE_FAST] = _TAIL_CALL_TRACE_RECORD,
  |  | 1245|       |    [STORE_FAST_LOAD_FAST] = _TAIL_CALL_TRACE_RECORD,
  |  | 1246|       |    [STORE_FAST_STORE_FAST] = _TAIL_CALL_TRACE_RECORD,
  |  | 1247|       |    [STORE_GLOBAL] = _TAIL_CALL_TRACE_RECORD,
  |  | 1248|       |    [STORE_NAME] = _TAIL_CALL_TRACE_RECORD,
  |  | 1249|       |    [STORE_SLICE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1250|       |    [STORE_SUBSCR] = _TAIL_CALL_TRACE_RECORD,
  |  | 1251|       |    [STORE_SUBSCR_DICT] = _TAIL_CALL_TRACE_RECORD,
  |  | 1252|       |    [STORE_SUBSCR_LIST_INT] = _TAIL_CALL_TRACE_RECORD,
  |  | 1253|       |    [SWAP] = _TAIL_CALL_TRACE_RECORD,
  |  | 1254|       |    [TO_BOOL] = _TAIL_CALL_TRACE_RECORD,
  |  | 1255|       |    [TO_BOOL_ALWAYS_TRUE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1256|       |    [TO_BOOL_BOOL] = _TAIL_CALL_TRACE_RECORD,
  |  | 1257|       |    [TO_BOOL_INT] = _TAIL_CALL_TRACE_RECORD,
  |  | 1258|       |    [TO_BOOL_LIST] = _TAIL_CALL_TRACE_RECORD,
  |  | 1259|       |    [TO_BOOL_NONE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1260|       |    [TO_BOOL_STR] = _TAIL_CALL_TRACE_RECORD,
  |  | 1261|       |    [TRACE_RECORD] = _TAIL_CALL_TRACE_RECORD,
  |  | 1262|       |    [UNARY_INVERT] = _TAIL_CALL_TRACE_RECORD,
  |  | 1263|       |    [UNARY_NEGATIVE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1264|       |    [UNARY_NOT] = _TAIL_CALL_TRACE_RECORD,
  |  | 1265|       |    [UNPACK_EX] = _TAIL_CALL_TRACE_RECORD,
  |  | 1266|       |    [UNPACK_SEQUENCE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1267|       |    [UNPACK_SEQUENCE_LIST] = _TAIL_CALL_TRACE_RECORD,
  |  | 1268|       |    [UNPACK_SEQUENCE_TUPLE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1269|       |    [UNPACK_SEQUENCE_TWO_TUPLE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1270|       |    [WITH_EXCEPT_START] = _TAIL_CALL_TRACE_RECORD,
  |  | 1271|       |    [YIELD_VALUE] = _TAIL_CALL_TRACE_RECORD,
  |  | 1272|       |    [120] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1273|       |    [121] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1274|       |    [122] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1275|       |    [123] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1276|       |    [124] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1277|       |    [125] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1278|       |    [126] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1279|       |    [127] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1280|       |    [219] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1281|       |    [220] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1282|       |    [221] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1283|       |    [222] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1284|       |    [223] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1285|       |    [224] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1286|       |    [225] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1287|       |    [226] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1288|       |    [227] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1289|       |    [228] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1290|       |    [229] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1291|       |    [230] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1292|       |    [231] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1293|       |    [232] = _TAIL_CALL_UNKNOWN_OPCODE,
  |  | 1294|       |};
  |  | 1295|       |#endif /* _Py_TAIL_CALL_INTERP */
  ------------------
 1219|    452|    void **opcode_targets = opcode_targets_table;
 1220|    452|#endif
 1221|       |
 1222|       |#ifdef Py_STATS
 1223|       |    int lastopcode = 0;
 1224|       |#endif
 1225|    452|#if !_Py_TAIL_CALL_INTERP
 1226|    452|    uint8_t opcode;    /* Current opcode */
 1227|    452|    int oparg;         /* Current opcode argument, if any */
 1228|    452|    assert(tstate->current_frame == NULL || tstate->current_frame->stackpointer != NULL);
  ------------------
  |  Branch (1228:5): [True: 0, False: 452]
  |  Branch (1228:5): [True: 452, False: 0]
  ------------------
 1229|       |#if !USE_COMPUTED_GOTOS
 1230|       |    uint8_t tracing_mode = 0;
 1231|       |    uint8_t dispatch_code;
 1232|       |#endif
 1233|    452|#endif
 1234|    452|    _PyEntryFrame entry;
 1235|       |
 1236|    452|    if (_Py_EnterRecursiveCallTstate(tstate, "")) {
  ------------------
  |  Branch (1236:9): [True: 0, False: 452]
  ------------------
 1237|      0|        assert(frame->owner != FRAME_OWNED_BY_INTERPRETER);
  ------------------
  |  Branch (1237:9): [True: 0, False: 0]
  ------------------
 1238|      0|        _PyEval_FrameClearAndPop(tstate, frame);
 1239|      0|        return NULL;
 1240|      0|    }
 1241|       |
 1242|       |    /* Local "register" variables.
 1243|       |     * These are cached values from the frame and code object.  */
 1244|    452|    _Py_CODEUNIT *next_instr;
 1245|    452|    _PyStackRef *stack_pointer;
 1246|    452|    entry.stack[0] = PyStackRef_NULL;
 1247|       |#ifdef Py_STACKREF_DEBUG
 1248|       |    entry.frame.f_funcobj = PyStackRef_None;
 1249|       |#elif defined(Py_DEBUG)
 1250|       |    /* Set these to invalid but identifiable values for debugging. */
 1251|       |    entry.frame.f_funcobj = (_PyStackRef){.bits = 0xaaa0};
 1252|       |    entry.frame.f_locals = (PyObject*)0xaaa1;
 1253|       |    entry.frame.frame_obj = (PyFrameObject*)0xaaa2;
 1254|       |    entry.frame.f_globals = (PyObject*)0xaaa3;
 1255|       |    entry.frame.f_builtins = (PyObject*)0xaaa4;
 1256|       |#endif
 1257|    452|    entry.frame.f_executable = PyStackRef_None;
  ------------------
  |  |  473|    452|#define PyStackRef_None ((_PyStackRef){.bits = ((uintptr_t)&_Py_NoneStruct) | Py_TAG_REFCNT })
  |  |  ------------------
  |  |  |  |   55|    452|#define Py_TAG_REFCNT 1
  |  |  ------------------
  ------------------
 1258|    452|    entry.frame.instr_ptr = (_Py_CODEUNIT *)_Py_INTERPRETER_TRAMPOLINE_INSTRUCTIONS + 1;
 1259|    452|    entry.frame.stackpointer = entry.stack;
 1260|    452|    entry.frame.owner = FRAME_OWNED_BY_INTERPRETER;
 1261|    452|    entry.frame.visited = 0;
 1262|    452|    entry.frame.return_offset = 0;
 1263|       |#ifdef Py_DEBUG
 1264|       |    entry.frame.lltrace = 0;
 1265|       |#endif
 1266|       |    /* Push frame */
 1267|    452|    entry.frame.previous = tstate->current_frame;
 1268|    452|    frame->previous = &entry.frame;
 1269|    452|    tstate->current_frame = frame;
 1270|    452|    entry.frame.localsplus[0] = PyStackRef_NULL;
 1271|       |#ifdef _Py_TIER2
 1272|       |    if (tstate->current_executor != NULL) {
 1273|       |        entry.frame.localsplus[0] = PyStackRef_FromPyObjectNew(tstate->current_executor);
 1274|       |        tstate->current_executor = NULL;
 1275|       |    }
 1276|       |#endif
 1277|       |
 1278|       |    /* support for generator.throw() */
 1279|    452|    if (throwflag) {
  ------------------
  |  Branch (1279:9): [True: 0, False: 452]
  ------------------
 1280|      0|        if (_Py_EnterRecursivePy(tstate)) {
  ------------------
  |  Branch (1280:13): [True: 0, False: 0]
  ------------------
 1281|      0|            goto early_exit;
 1282|      0|        }
 1283|       |#ifdef Py_GIL_DISABLED
 1284|       |        /* Load thread-local bytecode */
 1285|       |        if (frame->tlbc_index != ((_PyThreadStateImpl *)tstate)->tlbc_index) {
 1286|       |            _Py_CODEUNIT *bytecode =
 1287|       |                _PyEval_GetExecutableCode(tstate, _PyFrame_GetCode(frame));
 1288|       |            if (bytecode == NULL) {
 1289|       |                goto early_exit;
 1290|       |            }
 1291|       |            ptrdiff_t off = frame->instr_ptr - _PyFrame_GetBytecode(frame);
 1292|       |            frame->tlbc_index = ((_PyThreadStateImpl *)tstate)->tlbc_index;
 1293|       |            frame->instr_ptr = bytecode + off;
 1294|       |        }
 1295|       |#endif
 1296|       |        /* Because this avoids the RESUME, we need to update instrumentation */
 1297|      0|        _Py_Instrument(_PyFrame_GetCode(frame), tstate->interp);
 1298|      0|        next_instr = frame->instr_ptr;
 1299|      0|        monitor_throw(tstate, frame, next_instr);
 1300|      0|        stack_pointer = _PyFrame_GetStackPointer(frame);
 1301|       |#if _Py_TAIL_CALL_INTERP
 1302|       |#   if Py_STATS
 1303|       |        return _TAIL_CALL_error(frame, stack_pointer, tstate, next_instr, instruction_funcptr_handler_table, 0, lastopcode);
 1304|       |#   else
 1305|       |        return _TAIL_CALL_error(frame, stack_pointer, tstate, next_instr, instruction_funcptr_handler_table, 0);
 1306|       |#   endif
 1307|       |#else
 1308|      0|        goto error;
 1309|      0|#endif
 1310|      0|    }
 1311|       |
 1312|       |#if _Py_TAIL_CALL_INTERP
 1313|       |#   if Py_STATS
 1314|       |        return _TAIL_CALL_start_frame(frame, NULL, tstate, NULL, instruction_funcptr_handler_table, 0, lastopcode);
 1315|       |#   else
 1316|       |        return _TAIL_CALL_start_frame(frame, NULL, tstate, NULL, instruction_funcptr_handler_table, 0);
 1317|       |#   endif
 1318|       |#else
 1319|    452|    goto start_frame;
 1320|    452|#   include "generated_cases.c.h"
  ------------------
  |  |    1|       |// This file is generated by Tools/cases_generator/tier1_generator.py
  |  |    2|       |// from:
  |  |    3|       |//   Python/bytecodes.c
  |  |    4|       |// Do not edit!
  |  |    5|       |
  |  |    6|       |#ifdef TIER_TWO
  |  |    7|       |    #error "This file is for Tier 1 only"
  |  |    8|       |#endif
  |  |    9|      0|#define TIER_ONE 1
  |  |   10|       |
  |  |   11|      0|#if !_Py_TAIL_CALL_INTERP
  |  |   12|       |#if !USE_COMPUTED_GOTOS
  |  |   13|       |    dispatch_opcode:
  |  |   14|       |        switch (dispatch_code)
  |  |   15|       |#endif
  |  |   16|      0|        {
  |  |   17|      0|#endif /* _Py_TAIL_CALL_INTERP */
  |  |   18|       |            /* BEGIN INSTRUCTIONS */
  |  |   19|       |
  |  |   20|       |
  |  |   21|    113|        TARGET(BINARY_OP) {
  |  |  ------------------
  |  |  |  |  132|    113|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |   22|       |            #if _Py_TAIL_CALL_INTERP
  |  |   23|       |            int opcode = BINARY_OP;
  |  |   24|       |            (void)(opcode);
  |  |   25|       |            #endif
  |  |   26|    113|            frame->instr_ptr = next_instr;
  |  |   27|    113|            next_instr += 6;
  |  |   28|    113|            INSTRUCTION_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |   71|    113|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |   29|    113|            PREDICTED_BINARY_OP:;
  |  |   30|    113|            _Py_CODEUNIT* const this_instr = next_instr - 6;
  |  |   31|    113|            (void)this_instr;
  |  |   32|    113|            _PyStackRef lhs;
  |  |   33|    113|            _PyStackRef rhs;
  |  |   34|    113|            _PyStackRef res;
  |  |   35|    113|            _PyStackRef l;
  |  |   36|    113|            _PyStackRef r;
  |  |   37|    113|            _PyStackRef value;
  |  |   38|       |            // _SPECIALIZE_BINARY_OP
  |  |   39|    113|            {
  |  |   40|    113|                rhs = stack_pointer[-1];
  |  |   41|    113|                lhs = stack_pointer[-2];
  |  |   42|    113|                uint16_t counter = read_u16(&this_instr[1].cache);
  |  |   43|    113|                (void)counter;
  |  |   44|    113|                #if ENABLE_SPECIALIZATION
  |  |   45|    113|                if (ADAPTIVE_COUNTER_TRIGGERS(counter)) {
  |  |  ------------------
  |  |  |  |  354|    113|    backoff_counter_triggers(forge_backoff_counter((COUNTER)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (354:5): [True: 25, False: 88]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   46|     25|                    next_instr = this_instr;
  |  |   47|     25|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |   48|     25|                    _Py_Specialize_BinaryOp(lhs, rhs, next_instr, oparg, LOCALS_ARRAY);
  |  |  ------------------
  |  |  |  |  283|     25|#define LOCALS_ARRAY    (frame->localsplus)
  |  |  ------------------
  |  |   49|     25|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |   50|     25|                    DISPATCH_SAME_OPARG();
  |  |  ------------------
  |  |  |  |  216|     25|    { \
  |  |  |  |  217|     25|        opcode = next_instr->op.code; \
  |  |  |  |  218|     25|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     25|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  219|     25|        DISPATCH_GOTO_NON_TRACING(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  134|     25|#  define DISPATCH_GOTO_NON_TRACING() goto *DISPATCH_TABLE[opcode];
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  130|     25|#  define DISPATCH_TABLE opcode_targets_table
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  220|     25|    }
  |  |  ------------------
  |  |   51|     25|                }
  |  |   52|    113|                OPCODE_DEFERRED_INC(BINARY_OP);
  |  |  ------------------
  |  |  |  |   90|    113|#define OPCODE_DEFERRED_INC(opname) ((void)0)
  |  |  ------------------
  |  |   53|    113|                ADVANCE_ADAPTIVE_COUNTER(this_instr[1].counter);
  |  |  ------------------
  |  |  |  |  357|    113|    do { \
  |  |  |  |  358|    113|        (COUNTER) = advance_backoff_counter((COUNTER)); \
  |  |  |  |  359|    113|    } while (0);
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (359:14): [Folded, False: 113]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|    113|                #endif  /* ENABLE_SPECIALIZATION */
  |  |   55|    113|                assert(NB_ADD <= oparg);
  |  |  ------------------
  |  |  |  Branch (55:17): [True: 88, False: 25]
  |  |  ------------------
  |  |   56|    113|                assert(oparg <= NB_OPARG_LAST);
  |  |  ------------------
  |  |  |  Branch (56:17): [True: 88, False: 0]
  |  |  ------------------
  |  |   57|     88|            }
  |  |   58|       |            /* Skip 4 cache entries */
  |  |   59|       |            // _BINARY_OP
  |  |   60|     88|            {
  |  |   61|     88|                PyObject *lhs_o = PyStackRef_AsPyObjectBorrow(lhs);
  |  |   62|     88|                PyObject *rhs_o = PyStackRef_AsPyObjectBorrow(rhs);
  |  |   63|     88|                assert(_PyEval_BinaryOps[oparg]);
  |  |  ------------------
  |  |  |  Branch (63:17): [True: 88, False: 0]
  |  |  ------------------
  |  |   64|     88|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |   65|     88|                PyObject *res_o = _PyEval_BinaryOps[oparg](lhs_o, rhs_o);
  |  |   66|     88|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |   67|     88|                if (res_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (67:21): [True: 5, False: 83]
  |  |  ------------------
  |  |   68|      5|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      5|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |   69|      0|                }
  |  |   70|     83|                res = PyStackRef_FromPyObjectSteal(res_o);
  |  |   71|     83|                l = lhs;
  |  |   72|     83|                r = rhs;
  |  |   73|     83|            }
  |  |   74|       |            // _POP_TOP
  |  |   75|      0|            {
  |  |   76|     83|                value = r;
  |  |   77|     83|                stack_pointer[-2] = res;
  |  |   78|     83|                stack_pointer[-1] = l;
  |  |   79|     83|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |   80|     83|                PyStackRef_XCLOSE(value);
  |  |   81|     83|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |   82|     83|            }
  |  |   83|       |            // _POP_TOP
  |  |   84|     83|            {
  |  |   85|     83|                value = l;
  |  |   86|     83|                stack_pointer += -1;
  |  |   87|     83|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     83|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |   88|     83|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |   89|     83|                PyStackRef_XCLOSE(value);
  |  |   90|     83|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |   91|     83|            }
  |  |   92|     83|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     83|    { \
  |  |  |  |  201|     83|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     83|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     83|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     83|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     83|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     83|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     83|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     83|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 83]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     83|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     83|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     83|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     83|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     83|    }
  |  |  ------------------
  |  |  |  Branch (92:13): [True: 83, False: 0]
  |  |  ------------------
  |  |   93|     83|        }
  |  |   94|       |
  |  |   95|      0|        TARGET(BINARY_OP_ADD_FLOAT) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |   96|       |            #if _Py_TAIL_CALL_INTERP
  |  |   97|       |            int opcode = BINARY_OP_ADD_FLOAT;
  |  |   98|       |            (void)(opcode);
  |  |   99|       |            #endif
  |  |  100|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  |  101|      0|            (void)this_instr;
  |  |  102|      0|            frame->instr_ptr = next_instr;
  |  |  103|      0|            next_instr += 6;
  |  |  104|      0|            INSTRUCTION_STATS(BINARY_OP_ADD_FLOAT);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |  105|      0|            static_assert(INLINE_CACHE_ENTRIES_BINARY_OP == 5, "incorrect cache size");
  |  |  106|      0|            _PyStackRef value;
  |  |  107|      0|            _PyStackRef left;
  |  |  108|      0|            _PyStackRef right;
  |  |  109|      0|            _PyStackRef res;
  |  |  110|      0|            _PyStackRef l;
  |  |  111|      0|            _PyStackRef r;
  |  |  112|       |            // _GUARD_TOS_FLOAT
  |  |  113|      0|            {
  |  |  114|      0|                value = stack_pointer[-1];
  |  |  115|      0|                PyObject *value_o = PyStackRef_AsPyObjectBorrow(value);
  |  |  116|      0|                if (!PyFloat_CheckExact(value_o)) {
  |  |  ------------------
  |  |  |  |   17|      0|#define PyFloat_CheckExact(op) Py_IS_TYPE((op), &PyFloat_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      0|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (116:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  117|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |  118|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (118:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  119|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |  120|      0|                }
  |  |  121|      0|            }
  |  |  122|       |            // _GUARD_NOS_FLOAT
  |  |  123|      0|            {
  |  |  124|      0|                left = stack_pointer[-2];
  |  |  125|      0|                PyObject *left_o = PyStackRef_AsPyObjectBorrow(left);
  |  |  126|      0|                if (!PyFloat_CheckExact(left_o)) {
  |  |  ------------------
  |  |  |  |   17|      0|#define PyFloat_CheckExact(op) Py_IS_TYPE((op), &PyFloat_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      0|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (126:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  127|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |  128|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (128:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  129|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |  130|      0|                }
  |  |  131|      0|            }
  |  |  132|       |            /* Skip 5 cache entries */
  |  |  133|       |            // _BINARY_OP_ADD_FLOAT
  |  |  134|      0|            {
  |  |  135|      0|                right = value;
  |  |  136|      0|                PyObject *left_o = PyStackRef_AsPyObjectBorrow(left);
  |  |  137|      0|                PyObject *right_o = PyStackRef_AsPyObjectBorrow(right);
  |  |  138|      0|                assert(PyFloat_CheckExact(left_o));
  |  |  ------------------
  |  |  |  Branch (138:17): [True: 0, False: 0]
  |  |  ------------------
  |  |  139|      0|                assert(PyFloat_CheckExact(right_o));
  |  |  ------------------
  |  |  |  Branch (139:17): [True: 0, False: 0]
  |  |  ------------------
  |  |  140|      0|                STAT_INC(BINARY_OP, hit);
  |  |  ------------------
  |  |  |  |   73|      0|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  |  141|      0|                double dres =
  |  |  142|      0|                ((PyFloatObject *)left_o)->ob_fval +
  |  |  143|      0|                ((PyFloatObject *)right_o)->ob_fval;
  |  |  144|      0|                PyObject *d = PyFloat_FromDouble(dres);
  |  |  145|      0|                if (d == NULL) {
  |  |  ------------------
  |  |  |  Branch (145:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  146|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |  147|      0|                }
  |  |  148|      0|                res = PyStackRef_FromPyObjectSteal(d);
  |  |  149|      0|                l = left;
  |  |  150|      0|                r = right;
  |  |  151|      0|            }
  |  |  152|       |            // _POP_TOP_FLOAT
  |  |  153|      0|            {
  |  |  154|      0|                value = r;
  |  |  155|      0|                assert(PyFloat_CheckExact(PyStackRef_AsPyObjectBorrow(value)));
  |  |  ------------------
  |  |  |  Branch (155:17): [True: 0, False: 0]
  |  |  ------------------
  |  |  156|      0|                PyStackRef_CLOSE_SPECIALIZED(value, _PyFloat_ExactDealloc);
  |  |  157|      0|            }
  |  |  158|       |            // _POP_TOP_FLOAT
  |  |  159|      0|            {
  |  |  160|      0|                value = l;
  |  |  161|      0|                assert(PyFloat_CheckExact(PyStackRef_AsPyObjectBorrow(value)));
  |  |  ------------------
  |  |  |  Branch (161:17): [True: 0, False: 0]
  |  |  ------------------
  |  |  162|      0|                PyStackRef_CLOSE_SPECIALIZED(value, _PyFloat_ExactDealloc);
  |  |  163|      0|            }
  |  |  164|      0|            stack_pointer[-2] = res;
  |  |  165|      0|            stack_pointer += -1;
  |  |  166|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |  167|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (167:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  168|      0|        }
  |  |  169|       |
  |  |  170|      4|        TARGET(BINARY_OP_ADD_INT) {
  |  |  ------------------
  |  |  |  |  132|      4|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |  171|       |            #if _Py_TAIL_CALL_INTERP
  |  |  172|       |            int opcode = BINARY_OP_ADD_INT;
  |  |  173|       |            (void)(opcode);
  |  |  174|       |            #endif
  |  |  175|      4|            _Py_CODEUNIT* const this_instr = next_instr;
  |  |  176|      4|            (void)this_instr;
  |  |  177|      4|            frame->instr_ptr = next_instr;
  |  |  178|      4|            next_instr += 6;
  |  |  179|      4|            INSTRUCTION_STATS(BINARY_OP_ADD_INT);
  |  |  ------------------
  |  |  |  |   71|      4|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |  180|      4|            static_assert(INLINE_CACHE_ENTRIES_BINARY_OP == 5, "incorrect cache size");
  |  |  181|      4|            _PyStackRef value;
  |  |  182|      4|            _PyStackRef left;
  |  |  183|      4|            _PyStackRef right;
  |  |  184|      4|            _PyStackRef res;
  |  |  185|      4|            _PyStackRef l;
  |  |  186|      4|            _PyStackRef r;
  |  |  187|       |            // _GUARD_TOS_INT
  |  |  188|      4|            {
  |  |  189|      4|                value = stack_pointer[-1];
  |  |  190|      4|                PyObject *value_o = PyStackRef_AsPyObjectBorrow(value);
  |  |  191|      4|                if (!_PyLong_CheckExactAndCompact(value_o)) {
  |  |  ------------------
  |  |  |  Branch (191:21): [True: 0, False: 4]
  |  |  ------------------
  |  |  192|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |  193|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (193:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  194|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |  195|      0|                }
  |  |  196|      4|            }
  |  |  197|       |            // _GUARD_NOS_INT
  |  |  198|      4|            {
  |  |  199|      4|                left = stack_pointer[-2];
  |  |  200|      4|                PyObject *left_o = PyStackRef_AsPyObjectBorrow(left);
  |  |  201|      4|                if (!_PyLong_CheckExactAndCompact(left_o)) {
  |  |  ------------------
  |  |  |  Branch (201:21): [True: 0, False: 4]
  |  |  ------------------
  |  |  202|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |  203|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (203:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  204|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |  205|      0|                }
  |  |  206|      4|            }
  |  |  207|       |            /* Skip 5 cache entries */
  |  |  208|       |            // _BINARY_OP_ADD_INT
  |  |  209|      4|            {
  |  |  210|      4|                right = value;
  |  |  211|      4|                PyObject *left_o = PyStackRef_AsPyObjectBorrow(left);
  |  |  212|      4|                PyObject *right_o = PyStackRef_AsPyObjectBorrow(right);
  |  |  213|      4|                assert(PyLong_CheckExact(left_o));
  |  |  ------------------
  |  |  |  Branch (213:17): [True: 4, False: 0]
  |  |  ------------------
  |  |  214|      4|                assert(PyLong_CheckExact(right_o));
  |  |  ------------------
  |  |  |  Branch (214:17): [True: 4, False: 0]
  |  |  ------------------
  |  |  215|      4|                assert(_PyLong_BothAreCompact((PyLongObject *)left_o, (PyLongObject *)right_o));
  |  |  ------------------
  |  |  |  Branch (215:17): [True: 4, False: 0]
  |  |  ------------------
  |  |  216|      4|                STAT_INC(BINARY_OP, hit);
  |  |  ------------------
  |  |  |  |   73|      4|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  |  217|      4|                res = _PyCompactLong_Add((PyLongObject *)left_o, (PyLongObject *)right_o);
  |  |  218|      4|                if (PyStackRef_IsNull(res)) {
  |  |  ------------------
  |  |  |  |  470|      4|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|      4|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      4|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (470:32): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  219|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |  220|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (220:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  221|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |  222|      0|                }
  |  |  223|      4|                l = left;
  |  |  224|      4|                r = right;
  |  |  225|      4|            }
  |  |  226|       |            // _POP_TOP_INT
  |  |  227|      0|            {
  |  |  228|      4|                value = r;
  |  |  229|      4|                assert(PyLong_CheckExact(PyStackRef_AsPyObjectBorrow(value)));
  |  |  ------------------
  |  |  |  Branch (229:17): [True: 4, False: 0]
  |  |  ------------------
  |  |  230|      4|                PyStackRef_CLOSE_SPECIALIZED(value, _PyLong_ExactDealloc);
  |  |  231|      4|            }
  |  |  232|       |            // _POP_TOP_INT
  |  |  233|      0|            {
  |  |  234|      4|                value = l;
  |  |  235|      4|                assert(PyLong_CheckExact(PyStackRef_AsPyObjectBorrow(value)));
  |  |  ------------------
  |  |  |  Branch (235:17): [True: 4, False: 0]
  |  |  ------------------
  |  |  236|      4|                PyStackRef_CLOSE_SPECIALIZED(value, _PyLong_ExactDealloc);
  |  |  237|      4|            }
  |  |  238|      0|            stack_pointer[-2] = res;
  |  |  239|      4|            stack_pointer += -1;
  |  |  240|      4|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      4|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |  241|      4|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      4|    { \
  |  |  |  |  201|      4|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      4|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      4|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      4|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      4|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      4|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      4|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      4|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      4|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      4|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      4|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      4|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      4|    }
  |  |  ------------------
  |  |  |  Branch (241:13): [True: 4, False: 0]
  |  |  ------------------
  |  |  242|      4|        }
  |  |  243|       |
  |  |  244|     83|        TARGET(BINARY_OP_ADD_UNICODE) {
  |  |  ------------------
  |  |  |  |  132|     83|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |  245|       |            #if _Py_TAIL_CALL_INTERP
  |  |  246|       |            int opcode = BINARY_OP_ADD_UNICODE;
  |  |  247|       |            (void)(opcode);
  |  |  248|       |            #endif
  |  |  249|     83|            _Py_CODEUNIT* const this_instr = next_instr;
  |  |  250|     83|            (void)this_instr;
  |  |  251|     83|            frame->instr_ptr = next_instr;
  |  |  252|     83|            next_instr += 6;
  |  |  253|     83|            INSTRUCTION_STATS(BINARY_OP_ADD_UNICODE);
  |  |  ------------------
  |  |  |  |   71|     83|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |  254|     83|            static_assert(INLINE_CACHE_ENTRIES_BINARY_OP == 5, "incorrect cache size");
  |  |  255|     83|            _PyStackRef value;
  |  |  256|     83|            _PyStackRef nos;
  |  |  257|     83|            _PyStackRef left;
  |  |  258|     83|            _PyStackRef right;
  |  |  259|     83|            _PyStackRef res;
  |  |  260|     83|            _PyStackRef l;
  |  |  261|     83|            _PyStackRef r;
  |  |  262|       |            // _GUARD_TOS_UNICODE
  |  |  263|     83|            {
  |  |  264|     83|                value = stack_pointer[-1];
  |  |  265|     83|                PyObject *value_o = PyStackRef_AsPyObjectBorrow(value);
  |  |  266|     83|                if (!PyUnicode_CheckExact(value_o)) {
  |  |  ------------------
  |  |  |  |  104|     83|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|     83|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|     83|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     83|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (266:21): [True: 0, False: 83]
  |  |  ------------------
  |  |  267|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |  268|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (268:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  269|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |  270|      0|                }
  |  |  271|     83|            }
  |  |  272|       |            // _GUARD_NOS_UNICODE
  |  |  273|     83|            {
  |  |  274|     83|                nos = stack_pointer[-2];
  |  |  275|     83|                PyObject *o = PyStackRef_AsPyObjectBorrow(nos);
  |  |  276|     83|                if (!PyUnicode_CheckExact(o)) {
  |  |  ------------------
  |  |  |  |  104|     83|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|     83|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|     83|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     83|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (276:21): [True: 0, False: 83]
  |  |  ------------------
  |  |  277|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |  278|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (278:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  279|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |  280|      0|                }
  |  |  281|     83|            }
  |  |  282|       |            /* Skip 5 cache entries */
  |  |  283|       |            // _BINARY_OP_ADD_UNICODE
  |  |  284|     83|            {
  |  |  285|     83|                right = value;
  |  |  286|     83|                left = nos;
  |  |  287|     83|                PyObject *left_o = PyStackRef_AsPyObjectBorrow(left);
  |  |  288|     83|                PyObject *right_o = PyStackRef_AsPyObjectBorrow(right);
  |  |  289|     83|                assert(PyUnicode_CheckExact(left_o));
  |  |  ------------------
  |  |  |  Branch (289:17): [True: 83, False: 0]
  |  |  ------------------
  |  |  290|     83|                assert(PyUnicode_CheckExact(right_o));
  |  |  ------------------
  |  |  |  Branch (290:17): [True: 83, False: 0]
  |  |  ------------------
  |  |  291|     83|                STAT_INC(BINARY_OP, hit);
  |  |  ------------------
  |  |  |  |   73|     83|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  |  292|     83|                PyObject *res_o = PyUnicode_Concat(left_o, right_o);
  |  |  293|     83|                if (res_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (293:21): [True: 0, False: 83]
  |  |  ------------------
  |  |  294|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |  295|      0|                }
  |  |  296|     83|                res = PyStackRef_FromPyObjectSteal(res_o);
  |  |  297|     83|                l = left;
  |  |  298|     83|                r = right;
  |  |  299|     83|            }
  |  |  300|       |            // _POP_TOP_UNICODE
  |  |  301|      0|            {
  |  |  302|     83|                value = r;
  |  |  303|     83|                assert(PyUnicode_CheckExact(PyStackRef_AsPyObjectBorrow(value)));
  |  |  ------------------
  |  |  |  Branch (303:17): [True: 83, False: 0]
  |  |  ------------------
  |  |  304|     83|                PyStackRef_CLOSE_SPECIALIZED(value, _PyUnicode_ExactDealloc);
  |  |  305|     83|            }
  |  |  306|       |            // _POP_TOP_UNICODE
  |  |  307|      0|            {
  |  |  308|     83|                value = l;
  |  |  309|     83|                assert(PyUnicode_CheckExact(PyStackRef_AsPyObjectBorrow(value)));
  |  |  ------------------
  |  |  |  Branch (309:17): [True: 83, False: 0]
  |  |  ------------------
  |  |  310|     83|                PyStackRef_CLOSE_SPECIALIZED(value, _PyUnicode_ExactDealloc);
  |  |  311|     83|            }
  |  |  312|      0|            stack_pointer[-2] = res;
  |  |  313|     83|            stack_pointer += -1;
  |  |  314|     83|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     83|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |  315|     83|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     83|    { \
  |  |  |  |  201|     83|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     83|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     83|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     83|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     83|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     83|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     83|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     83|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 83]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     83|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     83|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     83|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     83|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     83|    }
  |  |  ------------------
  |  |  |  Branch (315:13): [True: 83, False: 0]
  |  |  ------------------
  |  |  316|     83|        }
  |  |  317|       |
  |  |  318|      6|        TARGET(BINARY_OP_EXTEND) {
  |  |  ------------------
  |  |  |  |  132|      6|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |  319|       |            #if _Py_TAIL_CALL_INTERP
  |  |  320|       |            int opcode = BINARY_OP_EXTEND;
  |  |  321|       |            (void)(opcode);
  |  |  322|       |            #endif
  |  |  323|      6|            _Py_CODEUNIT* const this_instr = next_instr;
  |  |  324|      6|            (void)this_instr;
  |  |  325|      6|            frame->instr_ptr = next_instr;
  |  |  326|      6|            next_instr += 6;
  |  |  327|      6|            INSTRUCTION_STATS(BINARY_OP_EXTEND);
  |  |  ------------------
  |  |  |  |   71|      6|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |  328|      6|            static_assert(INLINE_CACHE_ENTRIES_BINARY_OP == 5, "incorrect cache size");
  |  |  329|      6|            _PyStackRef left;
  |  |  330|      6|            _PyStackRef right;
  |  |  331|      6|            _PyStackRef res;
  |  |  332|      6|            _PyStackRef l;
  |  |  333|      6|            _PyStackRef r;
  |  |  334|      6|            _PyStackRef value;
  |  |  335|       |            /* Skip 1 cache entry */
  |  |  336|       |            // _GUARD_BINARY_OP_EXTEND
  |  |  337|      6|            {
  |  |  338|      6|                right = stack_pointer[-1];
  |  |  339|      6|                left = stack_pointer[-2];
  |  |  340|      6|                PyObject *descr = read_obj(&this_instr[2].cache);
  |  |  341|      6|                PyObject *left_o = PyStackRef_AsPyObjectBorrow(left);
  |  |  342|      6|                PyObject *right_o = PyStackRef_AsPyObjectBorrow(right);
  |  |  343|      6|                _PyBinaryOpSpecializationDescr *d = (_PyBinaryOpSpecializationDescr*)descr;
  |  |  344|      6|                assert(INLINE_CACHE_ENTRIES_BINARY_OP == 5);
  |  |  ------------------
  |  |  |  Branch (344:17): [True: 6, Folded]
  |  |  ------------------
  |  |  345|      6|                assert(d != NULL);
  |  |  ------------------
  |  |  |  Branch (345:17): [True: 6, False: 0]
  |  |  ------------------
  |  |  346|      6|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |  347|      6|                int match = (d->guard != NULL)
  |  |  ------------------
  |  |  |  Branch (347:29): [True: 5, False: 1]
  |  |  ------------------
  |  |  348|      6|                ? d->guard(left_o, right_o)
  |  |  349|      6|            : (Py_TYPE(left_o) == d->lhs_type && Py_TYPE(right_o) == d->rhs_type);
  |  |  ------------------
  |  |  |  |  213|      1|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                           : (Py_TYPE(left_o) == d->lhs_type && Py_TYPE(right_o) == d->rhs_type);
  |  |  ------------------
  |  |  |  |  213|      1|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (349:16): [True: 1, False: 0]
  |  |  |  Branch (349:50): [True: 1, False: 0]
  |  |  ------------------
  |  |  350|      6|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |  351|      6|                if (!match) {
  |  |  ------------------
  |  |  |  Branch (351:21): [True: 0, False: 6]
  |  |  ------------------
  |  |  352|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |  353|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (353:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  354|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |  355|      0|                }
  |  |  356|      6|            }
  |  |  357|       |            /* Skip -4 cache entry */
  |  |  358|       |            // _BINARY_OP_EXTEND
  |  |  359|      6|            {
  |  |  360|      6|                PyObject *descr = read_obj(&this_instr[2].cache);
  |  |  361|      6|                PyObject *left_o = PyStackRef_AsPyObjectBorrow(left);
  |  |  362|      6|                PyObject *right_o = PyStackRef_AsPyObjectBorrow(right);
  |  |  363|      6|                assert(INLINE_CACHE_ENTRIES_BINARY_OP == 5);
  |  |  ------------------
  |  |  |  Branch (363:17): [True: 6, Folded]
  |  |  ------------------
  |  |  364|      6|                _PyBinaryOpSpecializationDescr *d = (_PyBinaryOpSpecializationDescr*)descr;
  |  |  365|      6|                STAT_INC(BINARY_OP, hit);
  |  |  ------------------
  |  |  |  |   73|      6|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  |  366|      6|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |  367|      6|                PyObject *res_o = d->action(left_o, right_o);
  |  |  368|      6|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |  369|      6|                if (res_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (369:21): [True: 0, False: 6]
  |  |  ------------------
  |  |  370|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |  371|      0|                }
  |  |  372|      6|                assert(d->result_type == NULL || Py_TYPE(res_o) == d->result_type);
  |  |  ------------------
  |  |  |  Branch (372:17): [True: 0, False: 6]
  |  |  |  Branch (372:17): [True: 6, False: 0]
  |  |  ------------------
  |  |  373|      6|                assert(!d->result_unique || Py_REFCNT(res_o) == 1 || _Py_IsImmortal(res_o));
  |  |  ------------------
  |  |  |  Branch (373:17): [True: 1, False: 5]
  |  |  |  Branch (373:17): [True: 5, False: 0]
  |  |  |  Branch (373:17): [True: 0, False: 0]
  |  |  ------------------
  |  |  374|      6|                assert(!PyFloat_CheckExact(res_o) || Py_REFCNT(res_o) == 1);
  |  |  ------------------
  |  |  |  Branch (374:17): [True: 6, False: 0]
  |  |  |  Branch (374:17): [True: 0, False: 0]
  |  |  ------------------
  |  |  375|      6|                res = PyStackRef_FromPyObjectSteal(res_o);
  |  |  376|      6|                l = left;
  |  |  377|      6|                r = right;
  |  |  378|      6|            }
  |  |  379|       |            // _POP_TOP
  |  |  380|      0|            {
  |  |  381|      6|                value = r;
  |  |  382|      6|                stack_pointer[-2] = res;
  |  |  383|      6|                stack_pointer[-1] = l;
  |  |  384|      6|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |  385|      6|                PyStackRef_XCLOSE(value);
  |  |  386|      6|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |  387|      6|            }
  |  |  388|       |            // _POP_TOP
  |  |  389|      6|            {
  |  |  390|      6|                value = l;
  |  |  391|      6|                stack_pointer += -1;
  |  |  392|      6|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      6|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |  393|      6|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |  394|      6|                PyStackRef_XCLOSE(value);
  |  |  395|      6|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |  396|      6|            }
  |  |  397|      6|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      6|    { \
  |  |  |  |  201|      6|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      6|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      6|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      6|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      6|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      6|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      6|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      6|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      6|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      6|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      6|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      6|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      6|    }
  |  |  ------------------
  |  |  |  Branch (397:13): [True: 6, False: 0]
  |  |  ------------------
  |  |  398|      6|        }
  |  |  399|       |
  |  |  400|     12|        TARGET(BINARY_OP_INPLACE_ADD_UNICODE) {
  |  |  ------------------
  |  |  |  |  132|     12|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |  401|       |            #if _Py_TAIL_CALL_INTERP
  |  |  402|       |            int opcode = BINARY_OP_INPLACE_ADD_UNICODE;
  |  |  403|       |            (void)(opcode);
  |  |  404|       |            #endif
  |  |  405|     12|            _Py_CODEUNIT* const this_instr = next_instr;
  |  |  406|     12|            (void)this_instr;
  |  |  407|     12|            frame->instr_ptr = next_instr;
  |  |  408|     12|            next_instr += 6;
  |  |  409|     12|            INSTRUCTION_STATS(BINARY_OP_INPLACE_ADD_UNICODE);
  |  |  ------------------
  |  |  |  |   71|     12|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |  410|     12|            static_assert(INLINE_CACHE_ENTRIES_BINARY_OP == 5, "incorrect cache size");
  |  |  411|     12|            _PyStackRef value;
  |  |  412|     12|            _PyStackRef nos;
  |  |  413|     12|            _PyStackRef left;
  |  |  414|     12|            _PyStackRef right;
  |  |  415|     12|            _PyStackRef res;
  |  |  416|       |            // _GUARD_TOS_UNICODE
  |  |  417|     12|            {
  |  |  418|     12|                value = stack_pointer[-1];
  |  |  419|     12|                PyObject *value_o = PyStackRef_AsPyObjectBorrow(value);
  |  |  420|     12|                if (!PyUnicode_CheckExact(value_o)) {
  |  |  ------------------
  |  |  |  |  104|     12|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|     12|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|     12|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     12|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (420:21): [True: 0, False: 12]
  |  |  ------------------
  |  |  421|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |  422|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (422:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  423|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |  424|      0|                }
  |  |  425|     12|            }
  |  |  426|       |            // _GUARD_NOS_UNICODE
  |  |  427|     12|            {
  |  |  428|     12|                nos = stack_pointer[-2];
  |  |  429|     12|                PyObject *o = PyStackRef_AsPyObjectBorrow(nos);
  |  |  430|     12|                if (!PyUnicode_CheckExact(o)) {
  |  |  ------------------
  |  |  |  |  104|     12|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|     12|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|     12|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     12|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (430:21): [True: 0, False: 12]
  |  |  ------------------
  |  |  431|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |  432|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (432:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  433|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |  434|      0|                }
  |  |  435|     12|            }
  |  |  436|       |            /* Skip 5 cache entries */
  |  |  437|       |            // _BINARY_OP_INPLACE_ADD_UNICODE
  |  |  438|     12|            {
  |  |  439|     12|                right = value;
  |  |  440|     12|                left = nos;
  |  |  441|     12|                PyObject *left_o = PyStackRef_AsPyObjectBorrow(left);
  |  |  442|     12|                assert(PyUnicode_CheckExact(left_o));
  |  |  ------------------
  |  |  |  Branch (442:17): [True: 12, False: 0]
  |  |  ------------------
  |  |  443|     12|                assert(PyUnicode_CheckExact(PyStackRef_AsPyObjectBorrow(right)));
  |  |  ------------------
  |  |  |  Branch (443:17): [True: 12, False: 0]
  |  |  ------------------
  |  |  444|     12|                int next_oparg;
  |  |  445|     12|                #if TIER_ONE
  |  |  446|     12|                assert(next_instr->op.code == STORE_FAST);
  |  |  ------------------
  |  |  |  Branch (446:17): [True: 12, False: 0]
  |  |  ------------------
  |  |  447|     12|                next_oparg = next_instr->op.arg;
  |  |  448|       |                #else
  |  |  449|       |                next_oparg = (int)CURRENT_OPERAND0_16();
  |  |  450|       |                #endif
  |  |  451|     12|                _PyStackRef *target_local = &GETLOCAL(next_oparg);
  |  |  ------------------
  |  |  |  |  284|     12|#define GETLOCAL(i)     (frame->localsplus[i])
  |  |  ------------------
  |  |  452|     12|                assert(PyUnicode_CheckExact(left_o));
  |  |  ------------------
  |  |  |  Branch (452:17): [True: 12, False: 0]
  |  |  ------------------
  |  |  453|     12|                if (PyStackRef_AsPyObjectBorrow(*target_local) != left_o) {
  |  |  ------------------
  |  |  |  Branch (453:21): [True: 0, False: 12]
  |  |  ------------------
  |  |  454|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |  455|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (455:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  456|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |  457|      0|                }
  |  |  458|     12|                STAT_INC(BINARY_OP, hit);
  |  |  ------------------
  |  |  |  |   73|     12|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  |  459|     12|                assert(Py_REFCNT(left_o) >= 2 || !PyStackRef_IsHeapSafe(left));
  |  |  ------------------
  |  |  |  Branch (459:17): [True: 10, False: 2]
  |  |  |  Branch (459:17): [True: 2, False: 0]
  |  |  ------------------
  |  |  460|     12|                PyObject *temp = PyStackRef_AsPyObjectSteal(*target_local);
  |  |  461|     12|                PyObject *right_o = PyStackRef_AsPyObjectSteal(right);
  |  |  462|     12|                PyStackRef_CLOSE_SPECIALIZED(left, _PyUnicode_ExactDealloc);
  |  |  463|     12|                stack_pointer += -2;
  |  |  464|     12|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     12|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |  465|     12|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |  466|     12|                PyUnicode_Append(&temp, right_o);
  |  |  467|     12|                _Py_DECREF_SPECIALIZED(right_o, _PyUnicode_ExactDealloc);
  |  |  ------------------
  |  |  |  |   96|     12|    do { \
  |  |  |  |   97|     12|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     12|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     12|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   98|     12|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|     12|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|     12|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     12|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 12]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   99|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  100|      0|            break; \
  |  |  |  |  101|      0|        } \
  |  |  |  |  102|     12|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|     12|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  103|     12|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (103:13): [True: 12, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  104|     12|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|     12|    do { \
  |  |  |  |  |  |  113|     12|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  114|     12|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 12]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  118|     12|    } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 12]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  105|     12|            destructor d = (destructor)(dealloc); \
  |  |  |  |  106|     12|            d(op); \
  |  |  |  |  107|     12|        } \
  |  |  |  |  108|     12|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (108:14): [Folded, False: 12]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  468|     12|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |  469|     12|                *target_local = PyStackRef_NULL;
  |  |  470|     12|                if (temp == NULL) {
  |  |  ------------------
  |  |  |  Branch (470:21): [True: 0, False: 12]
  |  |  ------------------
  |  |  471|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |  472|      0|                }
  |  |  473|     12|                res = PyStackRef_FromPyObjectSteal(temp);
  |  |  474|     12|            }
  |  |  475|      0|            stack_pointer[0] = res;
  |  |  476|     12|            stack_pointer += 1;
  |  |  477|     12|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     12|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |  478|     12|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     12|    { \
  |  |  |  |  201|     12|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     12|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     12|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     12|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     12|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     12|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     12|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     12|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 12]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     12|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     12|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     12|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     12|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     12|    }
  |  |  ------------------
  |  |  |  Branch (478:13): [True: 12, False: 0]
  |  |  ------------------
  |  |  479|     12|        }
  |  |  480|       |
  |  |  481|      0|        TARGET(BINARY_OP_MULTIPLY_FLOAT) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |  482|       |            #if _Py_TAIL_CALL_INTERP
  |  |  483|       |            int opcode = BINARY_OP_MULTIPLY_FLOAT;
  |  |  484|       |            (void)(opcode);
  |  |  485|       |            #endif
  |  |  486|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  |  487|      0|            (void)this_instr;
  |  |  488|      0|            frame->instr_ptr = next_instr;
  |  |  489|      0|            next_instr += 6;
  |  |  490|      0|            INSTRUCTION_STATS(BINARY_OP_MULTIPLY_FLOAT);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |  491|      0|            static_assert(INLINE_CACHE_ENTRIES_BINARY_OP == 5, "incorrect cache size");
  |  |  492|      0|            _PyStackRef value;
  |  |  493|      0|            _PyStackRef left;
  |  |  494|      0|            _PyStackRef right;
  |  |  495|      0|            _PyStackRef res;
  |  |  496|      0|            _PyStackRef l;
  |  |  497|      0|            _PyStackRef r;
  |  |  498|       |            // _GUARD_TOS_FLOAT
  |  |  499|      0|            {
  |  |  500|      0|                value = stack_pointer[-1];
  |  |  501|      0|                PyObject *value_o = PyStackRef_AsPyObjectBorrow(value);
  |  |  502|      0|                if (!PyFloat_CheckExact(value_o)) {
  |  |  ------------------
  |  |  |  |   17|      0|#define PyFloat_CheckExact(op) Py_IS_TYPE((op), &PyFloat_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      0|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (502:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  503|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |  504|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (504:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  505|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |  506|      0|                }
  |  |  507|      0|            }
  |  |  508|       |            // _GUARD_NOS_FLOAT
  |  |  509|      0|            {
  |  |  510|      0|                left = stack_pointer[-2];
  |  |  511|      0|                PyObject *left_o = PyStackRef_AsPyObjectBorrow(left);
  |  |  512|      0|                if (!PyFloat_CheckExact(left_o)) {
  |  |  ------------------
  |  |  |  |   17|      0|#define PyFloat_CheckExact(op) Py_IS_TYPE((op), &PyFloat_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      0|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (512:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  513|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |  514|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (514:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  515|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |  516|      0|                }
  |  |  517|      0|            }
  |  |  518|       |            /* Skip 5 cache entries */
  |  |  519|       |            // _BINARY_OP_MULTIPLY_FLOAT
  |  |  520|      0|            {
  |  |  521|      0|                right = value;
  |  |  522|      0|                PyObject *left_o = PyStackRef_AsPyObjectBorrow(left);
  |  |  523|      0|                PyObject *right_o = PyStackRef_AsPyObjectBorrow(right);
  |  |  524|      0|                assert(PyFloat_CheckExact(left_o));
  |  |  ------------------
  |  |  |  Branch (524:17): [True: 0, False: 0]
  |  |  ------------------
  |  |  525|      0|                assert(PyFloat_CheckExact(right_o));
  |  |  ------------------
  |  |  |  Branch (525:17): [True: 0, False: 0]
  |  |  ------------------
  |  |  526|      0|                STAT_INC(BINARY_OP, hit);
  |  |  ------------------
  |  |  |  |   73|      0|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  |  527|      0|                double dres =
  |  |  528|      0|                ((PyFloatObject *)left_o)->ob_fval *
  |  |  529|      0|                ((PyFloatObject *)right_o)->ob_fval;
  |  |  530|      0|                PyObject *d = PyFloat_FromDouble(dres);
  |  |  531|      0|                if (d == NULL) {
  |  |  ------------------
  |  |  |  Branch (531:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  532|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |  533|      0|                }
  |  |  534|      0|                res = PyStackRef_FromPyObjectSteal(d);
  |  |  535|      0|                l = left;
  |  |  536|      0|                r = right;
  |  |  537|      0|            }
  |  |  538|       |            // _POP_TOP_FLOAT
  |  |  539|      0|            {
  |  |  540|      0|                value = r;
  |  |  541|      0|                assert(PyFloat_CheckExact(PyStackRef_AsPyObjectBorrow(value)));
  |  |  ------------------
  |  |  |  Branch (541:17): [True: 0, False: 0]
  |  |  ------------------
  |  |  542|      0|                PyStackRef_CLOSE_SPECIALIZED(value, _PyFloat_ExactDealloc);
  |  |  543|      0|            }
  |  |  544|       |            // _POP_TOP_FLOAT
  |  |  545|      0|            {
  |  |  546|      0|                value = l;
  |  |  547|      0|                assert(PyFloat_CheckExact(PyStackRef_AsPyObjectBorrow(value)));
  |  |  ------------------
  |  |  |  Branch (547:17): [True: 0, False: 0]
  |  |  ------------------
  |  |  548|      0|                PyStackRef_CLOSE_SPECIALIZED(value, _PyFloat_ExactDealloc);
  |  |  549|      0|            }
  |  |  550|      0|            stack_pointer[-2] = res;
  |  |  551|      0|            stack_pointer += -1;
  |  |  552|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |  553|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (553:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  554|      0|        }
  |  |  555|       |
  |  |  556|      0|        TARGET(BINARY_OP_MULTIPLY_INT) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |  557|       |            #if _Py_TAIL_CALL_INTERP
  |  |  558|       |            int opcode = BINARY_OP_MULTIPLY_INT;
  |  |  559|       |            (void)(opcode);
  |  |  560|       |            #endif
  |  |  561|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  |  562|      0|            (void)this_instr;
  |  |  563|      0|            frame->instr_ptr = next_instr;
  |  |  564|      0|            next_instr += 6;
  |  |  565|      0|            INSTRUCTION_STATS(BINARY_OP_MULTIPLY_INT);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |  566|      0|            static_assert(INLINE_CACHE_ENTRIES_BINARY_OP == 5, "incorrect cache size");
  |  |  567|      0|            _PyStackRef value;
  |  |  568|      0|            _PyStackRef left;
  |  |  569|      0|            _PyStackRef right;
  |  |  570|      0|            _PyStackRef res;
  |  |  571|      0|            _PyStackRef l;
  |  |  572|      0|            _PyStackRef r;
  |  |  573|       |            // _GUARD_TOS_INT
  |  |  574|      0|            {
  |  |  575|      0|                value = stack_pointer[-1];
  |  |  576|      0|                PyObject *value_o = PyStackRef_AsPyObjectBorrow(value);
  |  |  577|      0|                if (!_PyLong_CheckExactAndCompact(value_o)) {
  |  |  ------------------
  |  |  |  Branch (577:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  578|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |  579|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (579:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  580|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |  581|      0|                }
  |  |  582|      0|            }
  |  |  583|       |            // _GUARD_NOS_INT
  |  |  584|      0|            {
  |  |  585|      0|                left = stack_pointer[-2];
  |  |  586|      0|                PyObject *left_o = PyStackRef_AsPyObjectBorrow(left);
  |  |  587|      0|                if (!_PyLong_CheckExactAndCompact(left_o)) {
  |  |  ------------------
  |  |  |  Branch (587:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  588|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |  589|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (589:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  590|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |  591|      0|                }
  |  |  592|      0|            }
  |  |  593|       |            /* Skip 5 cache entries */
  |  |  594|       |            // _BINARY_OP_MULTIPLY_INT
  |  |  595|      0|            {
  |  |  596|      0|                right = value;
  |  |  597|      0|                PyObject *left_o = PyStackRef_AsPyObjectBorrow(left);
  |  |  598|      0|                PyObject *right_o = PyStackRef_AsPyObjectBorrow(right);
  |  |  599|      0|                assert(PyLong_CheckExact(left_o));
  |  |  ------------------
  |  |  |  Branch (599:17): [True: 0, False: 0]
  |  |  ------------------
  |  |  600|      0|                assert(PyLong_CheckExact(right_o));
  |  |  ------------------
  |  |  |  Branch (600:17): [True: 0, False: 0]
  |  |  ------------------
  |  |  601|      0|                assert(_PyLong_BothAreCompact((PyLongObject *)left_o, (PyLongObject *)right_o));
  |  |  ------------------
  |  |  |  Branch (601:17): [True: 0, False: 0]
  |  |  ------------------
  |  |  602|      0|                STAT_INC(BINARY_OP, hit);
  |  |  ------------------
  |  |  |  |   73|      0|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  |  603|      0|                res = _PyCompactLong_Multiply((PyLongObject *)left_o, (PyLongObject *)right_o);
  |  |  604|      0|                if (PyStackRef_IsNull(res)) {
  |  |  ------------------
  |  |  |  |  470|      0|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|      0|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      0|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (470:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  605|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |  606|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (606:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  607|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |  608|      0|                }
  |  |  609|      0|                l = left;
  |  |  610|      0|                r = right;
  |  |  611|      0|            }
  |  |  612|       |            // _POP_TOP_INT
  |  |  613|      0|            {
  |  |  614|      0|                value = r;
  |  |  615|      0|                assert(PyLong_CheckExact(PyStackRef_AsPyObjectBorrow(value)));
  |  |  ------------------
  |  |  |  Branch (615:17): [True: 0, False: 0]
  |  |  ------------------
  |  |  616|      0|                PyStackRef_CLOSE_SPECIALIZED(value, _PyLong_ExactDealloc);
  |  |  617|      0|            }
  |  |  618|       |            // _POP_TOP_INT
  |  |  619|      0|            {
  |  |  620|      0|                value = l;
  |  |  621|      0|                assert(PyLong_CheckExact(PyStackRef_AsPyObjectBorrow(value)));
  |  |  ------------------
  |  |  |  Branch (621:17): [True: 0, False: 0]
  |  |  ------------------
  |  |  622|      0|                PyStackRef_CLOSE_SPECIALIZED(value, _PyLong_ExactDealloc);
  |  |  623|      0|            }
  |  |  624|      0|            stack_pointer[-2] = res;
  |  |  625|      0|            stack_pointer += -1;
  |  |  626|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |  627|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (627:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  628|      0|        }
  |  |  629|       |
  |  |  630|    106|        TARGET(BINARY_OP_SUBSCR_DICT) {
  |  |  ------------------
  |  |  |  |  132|    106|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |  631|       |            #if _Py_TAIL_CALL_INTERP
  |  |  632|       |            int opcode = BINARY_OP_SUBSCR_DICT;
  |  |  633|       |            (void)(opcode);
  |  |  634|       |            #endif
  |  |  635|    106|            _Py_CODEUNIT* const this_instr = next_instr;
  |  |  636|    106|            (void)this_instr;
  |  |  637|    106|            frame->instr_ptr = next_instr;
  |  |  638|    106|            next_instr += 6;
  |  |  639|    106|            INSTRUCTION_STATS(BINARY_OP_SUBSCR_DICT);
  |  |  ------------------
  |  |  |  |   71|    106|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |  640|    106|            static_assert(INLINE_CACHE_ENTRIES_BINARY_OP == 5, "incorrect cache size");
  |  |  641|    106|            _PyStackRef nos;
  |  |  642|    106|            _PyStackRef dict_st;
  |  |  643|    106|            _PyStackRef sub_st;
  |  |  644|    106|            _PyStackRef res;
  |  |  645|    106|            _PyStackRef ds;
  |  |  646|    106|            _PyStackRef ss;
  |  |  647|    106|            _PyStackRef value;
  |  |  648|       |            // _GUARD_NOS_DICT_SUBSCRIPT
  |  |  649|    106|            {
  |  |  650|    106|                nos = stack_pointer[-2];
  |  |  651|    106|                PyObject *o = PyStackRef_AsPyObjectBorrow(nos);
  |  |  652|    106|                if (!Py_TYPE(o)->tp_as_mapping) {
  |  |  ------------------
  |  |  |  |  213|    106|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    106|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    106|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (652:21): [True: 0, False: 106]
  |  |  ------------------
  |  |  653|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |  654|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (654:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  655|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |  656|      0|                }
  |  |  657|    106|                if (Py_TYPE(o)->tp_as_mapping->mp_subscript != _PyDict_Subscript) {
  |  |  ------------------
  |  |  |  |  213|    106|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    106|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    106|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (657:21): [True: 0, False: 106]
  |  |  ------------------
  |  |  658|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |  659|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (659:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  660|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |  661|      0|                }
  |  |  662|    106|            }
  |  |  663|       |            /* Skip 5 cache entries */
  |  |  664|       |            // _BINARY_OP_SUBSCR_DICT
  |  |  665|    106|            {
  |  |  666|    106|                sub_st = stack_pointer[-1];
  |  |  667|    106|                dict_st = nos;
  |  |  668|    106|                PyObject *sub = PyStackRef_AsPyObjectBorrow(sub_st);
  |  |  669|    106|                PyObject *dict = PyStackRef_AsPyObjectBorrow(dict_st);
  |  |  670|    106|                assert(Py_TYPE(dict)->tp_as_mapping->mp_subscript == _PyDict_Subscript);
  |  |  ------------------
  |  |  |  Branch (670:17): [True: 106, False: 0]
  |  |  ------------------
  |  |  671|    106|                STAT_INC(BINARY_OP, hit);
  |  |  ------------------
  |  |  |  |   73|    106|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  |  672|    106|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |  673|    106|                PyObject *res_o = _PyDict_Subscript(dict, sub);
  |  |  674|    106|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |  675|    106|                if (res_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (675:21): [True: 55, False: 51]
  |  |  ------------------
  |  |  676|     55|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|     55|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |  677|      0|                }
  |  |  678|     51|                res = PyStackRef_FromPyObjectSteal(res_o);
  |  |  679|     51|                ds = dict_st;
  |  |  680|     51|                ss = sub_st;
  |  |  681|     51|            }
  |  |  682|       |            // _POP_TOP
  |  |  683|      0|            {
  |  |  684|     51|                value = ss;
  |  |  685|     51|                stack_pointer[-2] = res;
  |  |  686|     51|                stack_pointer[-1] = ds;
  |  |  687|     51|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |  688|     51|                PyStackRef_XCLOSE(value);
  |  |  689|     51|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |  690|     51|            }
  |  |  691|       |            // _POP_TOP
  |  |  692|     51|            {
  |  |  693|     51|                value = ds;
  |  |  694|     51|                stack_pointer += -1;
  |  |  695|     51|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     51|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |  696|     51|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |  697|     51|                PyStackRef_XCLOSE(value);
  |  |  698|     51|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |  699|     51|            }
  |  |  700|     51|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     51|    { \
  |  |  |  |  201|     51|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     51|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     51|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     51|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     51|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     51|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     51|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     51|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 51]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     51|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     51|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     51|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     51|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     51|    }
  |  |  ------------------
  |  |  |  Branch (700:13): [True: 51, False: 0]
  |  |  ------------------
  |  |  701|     51|        }
  |  |  702|       |
  |  |  703|      0|        TARGET(BINARY_OP_SUBSCR_GETITEM) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |  704|       |            #if _Py_TAIL_CALL_INTERP
  |  |  705|       |            int opcode = BINARY_OP_SUBSCR_GETITEM;
  |  |  706|       |            (void)(opcode);
  |  |  707|       |            #endif
  |  |  708|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  |  709|      0|            (void)this_instr;
  |  |  710|      0|            frame->instr_ptr = next_instr;
  |  |  711|      0|            next_instr += 6;
  |  |  712|      0|            INSTRUCTION_STATS(BINARY_OP_SUBSCR_GETITEM);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |  713|      0|            static_assert(INLINE_CACHE_ENTRIES_BINARY_OP == 5, "incorrect cache size");
  |  |  714|      0|            _PyStackRef container;
  |  |  715|      0|            _PyStackRef getitem;
  |  |  716|      0|            _PyStackRef sub;
  |  |  717|      0|            _PyStackRef new_frame;
  |  |  718|       |            /* Skip 5 cache entries */
  |  |  719|       |            // _CHECK_PEP_523
  |  |  720|      0|            {
  |  |  721|      0|                if (IS_PEP523_HOOKED(tstate)) {
  |  |  ------------------
  |  |  |  |  517|      0|#define IS_PEP523_HOOKED(tstate) (tstate->interp->eval_frame != NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (517:34): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  722|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |  723|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (723:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  724|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |  725|      0|                }
  |  |  726|      0|            }
  |  |  727|       |            // _BINARY_OP_SUBSCR_CHECK_FUNC
  |  |  728|      0|            {
  |  |  729|      0|                container = stack_pointer[-2];
  |  |  730|      0|                PyTypeObject *tp = Py_TYPE(PyStackRef_AsPyObjectBorrow(container));
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  731|      0|                if (!PyType_HasFeature(tp, Py_TPFLAGS_HEAPTYPE)) {
  |  |  ------------------
  |  |  |  |  503|      0|#define Py_TPFLAGS_HEAPTYPE (1UL << 9)
  |  |  ------------------
  |  |  |  Branch (731:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  732|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |  733|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (733:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  734|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |  735|      0|                }
  |  |  736|      0|                PyHeapTypeObject *ht = (PyHeapTypeObject *)tp;
  |  |  737|      0|                PyObject *getitem_o = FT_ATOMIC_LOAD_PTR_ACQUIRE(ht->_spec_cache.getitem);
  |  |  ------------------
  |  |  |  |  150|      0|#define FT_ATOMIC_LOAD_PTR_ACQUIRE(value) value
  |  |  ------------------
  |  |  738|      0|                if (getitem_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (738:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  739|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |  740|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (740:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  741|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |  742|      0|                }
  |  |  743|      0|                assert(PyFunction_Check(getitem_o));
  |  |  ------------------
  |  |  |  Branch (743:17): [True: 0, False: 0]
  |  |  ------------------
  |  |  744|      0|                uint32_t cached_version = FT_ATOMIC_LOAD_UINT32_RELAXED(ht->_spec_cache.getitem_version);
  |  |  ------------------
  |  |  |  |  159|      0|#define FT_ATOMIC_LOAD_UINT32_RELAXED(value) value
  |  |  ------------------
  |  |  745|      0|                if (((PyFunctionObject *)getitem_o)->func_version != cached_version) {
  |  |  ------------------
  |  |  |  Branch (745:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  746|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |  747|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (747:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  748|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |  749|      0|                }
  |  |  750|      0|                PyCodeObject *code = (PyCodeObject *)PyFunction_GET_CODE(getitem_o);
  |  |  ------------------
  |  |  |  |   93|      0|#define PyFunction_GET_CODE(func) PyFunction_GET_CODE(_PyObject_CAST(func))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  751|      0|                assert(code->co_argcount == 2);
  |  |  ------------------
  |  |  |  Branch (751:17): [True: 0, False: 0]
  |  |  ------------------
  |  |  752|      0|                if (!_PyThreadState_HasStackSpace(tstate, code->co_framesize)) {
  |  |  ------------------
  |  |  |  Branch (752:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  753|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |  754|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (754:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  755|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |  756|      0|                }
  |  |  757|      0|                getitem = PyStackRef_FromPyObjectNew(getitem_o);
  |  |  ------------------
  |  |  |  |  599|      0|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  758|      0|            }
  |  |  759|       |            // _BINARY_OP_SUBSCR_INIT_CALL
  |  |  760|      0|            {
  |  |  761|      0|                sub = stack_pointer[-1];
  |  |  762|      0|                STAT_INC(BINARY_OP, hit);
  |  |  ------------------
  |  |  |  |   73|      0|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  |  763|      0|                _PyInterpreterFrame* pushed_frame = _PyFrame_PushUnchecked(tstate, getitem, 2, frame);
  |  |  764|      0|                pushed_frame->localsplus[0] = container;
  |  |  765|      0|                pushed_frame->localsplus[1] = sub;
  |  |  766|      0|                frame->return_offset = 6u ;
  |  |  767|      0|                new_frame = PyStackRef_Wrap(pushed_frame);
  |  |  768|      0|            }
  |  |  769|       |            // _PUSH_FRAME
  |  |  770|      0|            {
  |  |  771|      0|                assert(!IS_PEP523_HOOKED(tstate));
  |  |  ------------------
  |  |  |  Branch (771:17): [True: 0, False: 0]
  |  |  ------------------
  |  |  772|      0|                _PyInterpreterFrame *temp = PyStackRef_Unwrap(new_frame);
  |  |  773|      0|                stack_pointer += -2;
  |  |  774|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |  775|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |  776|      0|                assert(temp->previous == frame || temp->previous->previous == frame);
  |  |  ------------------
  |  |  |  Branch (776:17): [True: 0, False: 0]
  |  |  |  Branch (776:17): [True: 0, False: 0]
  |  |  ------------------
  |  |  777|      0|                CALL_STAT_INC(inlined_py_calls);
  |  |  ------------------
  |  |  |  |   76|      0|#define CALL_STAT_INC(name) ((void)0)
  |  |  ------------------
  |  |  778|      0|                frame = tstate->current_frame = temp;
  |  |  779|      0|                tstate->py_recursion_remaining--;
  |  |  780|      0|                LOAD_SP();
  |  |  ------------------
  |  |  |  |  425|      0|#define LOAD_SP() \
  |  |  |  |  426|      0|stack_pointer = _PyFrame_GetStackPointer(frame)
  |  |  ------------------
  |  |  781|      0|                LOAD_IP(0);
  |  |  ------------------
  |  |  |  |  419|      0|#define LOAD_IP(OFFSET) do { \
  |  |  |  |  420|      0|        next_instr = frame->instr_ptr + (OFFSET); \
  |  |  |  |  421|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  782|      0|                DTRACE_FUNCTION_ENTRY();
  |  |  ------------------
  |  |  |  |  345|      0|#define DTRACE_FUNCTION_ENTRY() ((void)0)
  |  |  ------------------
  |  |  783|      0|                LLTRACE_RESUME_FRAME();
  |  |  ------------------
  |  |  |  |  188|      0|#define LLTRACE_RESUME_FRAME() ((void)0)
  |  |  ------------------
  |  |  784|      0|            }
  |  |  785|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (785:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  786|      0|        }
  |  |  787|       |
  |  |  788|      0|        TARGET(BINARY_OP_SUBSCR_LIST_INT) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |  789|       |            #if _Py_TAIL_CALL_INTERP
  |  |  790|       |            int opcode = BINARY_OP_SUBSCR_LIST_INT;
  |  |  791|       |            (void)(opcode);
  |  |  792|       |            #endif
  |  |  793|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  |  794|      0|            (void)this_instr;
  |  |  795|      0|            frame->instr_ptr = next_instr;
  |  |  796|      0|            next_instr += 6;
  |  |  797|      0|            INSTRUCTION_STATS(BINARY_OP_SUBSCR_LIST_INT);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |  798|      0|            static_assert(INLINE_CACHE_ENTRIES_BINARY_OP == 5, "incorrect cache size");
  |  |  799|      0|            _PyStackRef value;
  |  |  800|      0|            _PyStackRef nos;
  |  |  801|      0|            _PyStackRef list_st;
  |  |  802|      0|            _PyStackRef sub_st;
  |  |  803|      0|            _PyStackRef res;
  |  |  804|      0|            _PyStackRef ls;
  |  |  805|      0|            _PyStackRef ss;
  |  |  806|       |            // _GUARD_TOS_INT
  |  |  807|      0|            {
  |  |  808|      0|                value = stack_pointer[-1];
  |  |  809|      0|                PyObject *value_o = PyStackRef_AsPyObjectBorrow(value);
  |  |  810|      0|                if (!_PyLong_CheckExactAndCompact(value_o)) {
  |  |  ------------------
  |  |  |  Branch (810:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  811|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |  812|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (812:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  813|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |  814|      0|                }
  |  |  815|      0|            }
  |  |  816|       |            // _GUARD_NOS_LIST
  |  |  817|      0|            {
  |  |  818|      0|                nos = stack_pointer[-2];
  |  |  819|      0|                PyObject *o = PyStackRef_AsPyObjectBorrow(nos);
  |  |  820|      0|                if (!PyList_CheckExact(o)) {
  |  |  ------------------
  |  |  |  |   26|      0|#define PyList_CheckExact(op) Py_IS_TYPE((op), &PyList_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      0|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (820:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  821|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |  822|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (822:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  823|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |  824|      0|                }
  |  |  825|      0|            }
  |  |  826|       |            /* Skip 5 cache entries */
  |  |  827|       |            // _BINARY_OP_SUBSCR_LIST_INT
  |  |  828|      0|            {
  |  |  829|      0|                sub_st = value;
  |  |  830|      0|                list_st = nos;
  |  |  831|      0|                PyObject *sub = PyStackRef_AsPyObjectBorrow(sub_st);
  |  |  832|      0|                PyObject *list = PyStackRef_AsPyObjectBorrow(list_st);
  |  |  833|      0|                assert(PyLong_CheckExact(sub));
  |  |  ------------------
  |  |  |  Branch (833:17): [True: 0, False: 0]
  |  |  ------------------
  |  |  834|      0|                assert(PyList_CheckExact(list));
  |  |  ------------------
  |  |  |  Branch (834:17): [True: 0, False: 0]
  |  |  ------------------
  |  |  835|      0|                Py_ssize_t index = _PyLong_CompactValue((PyLongObject *)sub);
  |  |  836|      0|                if (index < 0) {
  |  |  ------------------
  |  |  |  Branch (836:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  837|      0|                    index += PyList_GET_SIZE(list);
  |  |  ------------------
  |  |  |  |   38|      0|#define PyList_GET_SIZE(op) PyList_GET_SIZE(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  838|      0|                }
  |  |  839|       |                #ifdef Py_GIL_DISABLED
  |  |  840|       |                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |  841|       |                PyObject *res_o = _PyList_GetItemRef((PyListObject*)list, index);
  |  |  842|       |                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |  843|       |                if (res_o == NULL) {
  |  |  844|       |                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  845|       |                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  846|       |                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  847|       |                }
  |  |  848|       |                res = PyStackRef_FromPyObjectSteal(res_o);
  |  |  849|       |                #else
  |  |  850|      0|                if (index < 0 || index >= PyList_GET_SIZE(list)) {
  |  |  ------------------
  |  |  |  |   38|      0|#define PyList_GET_SIZE(op) PyList_GET_SIZE(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (850:21): [True: 0, False: 0]
  |  |  |  Branch (850:34): [True: 0, False: 0]
  |  |  ------------------
  |  |  851|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |  852|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (852:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  853|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |  854|      0|                }
  |  |  855|      0|                PyObject *res_o = PyList_GET_ITEM(list, index);
  |  |  ------------------
  |  |  |  |   40|      0|#define PyList_GET_ITEM(op, index) (_PyList_CAST(op)->ob_item[(index)])
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|    (assert(PyList_Check(op)), _Py_CAST(PyListObject*, (op)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (855:35): [True: 0, False: 0]
  |  |  ------------------
  |  |  856|      0|                assert(res_o != NULL);
  |  |  ------------------
  |  |  |  Branch (856:17): [True: 0, False: 0]
  |  |  ------------------
  |  |  857|      0|                res = PyStackRef_FromPyObjectNew(res_o);
  |  |  ------------------
  |  |  |  |  599|      0|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  858|      0|                #endif
  |  |  859|      0|                STAT_INC(BINARY_OP, hit);
  |  |  ------------------
  |  |  |  |   73|      0|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  |  860|      0|                ls = list_st;
  |  |  861|      0|                ss = sub_st;
  |  |  862|      0|            }
  |  |  863|       |            // _POP_TOP_INT
  |  |  864|      0|            {
  |  |  865|      0|                value = ss;
  |  |  866|      0|                assert(PyLong_CheckExact(PyStackRef_AsPyObjectBorrow(value)));
  |  |  ------------------
  |  |  |  Branch (866:17): [True: 0, False: 0]
  |  |  ------------------
  |  |  867|      0|                PyStackRef_CLOSE_SPECIALIZED(value, _PyLong_ExactDealloc);
  |  |  868|      0|            }
  |  |  869|       |            // _POP_TOP
  |  |  870|      0|            {
  |  |  871|      0|                value = ls;
  |  |  872|      0|                stack_pointer[-2] = res;
  |  |  873|      0|                stack_pointer += -1;
  |  |  874|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |  875|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |  876|      0|                PyStackRef_XCLOSE(value);
  |  |  877|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |  878|      0|            }
  |  |  879|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (879:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  880|      0|        }
  |  |  881|       |
  |  |  882|      0|        TARGET(BINARY_OP_SUBSCR_LIST_SLICE) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |  883|       |            #if _Py_TAIL_CALL_INTERP
  |  |  884|       |            int opcode = BINARY_OP_SUBSCR_LIST_SLICE;
  |  |  885|       |            (void)(opcode);
  |  |  886|       |            #endif
  |  |  887|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  |  888|      0|            (void)this_instr;
  |  |  889|      0|            frame->instr_ptr = next_instr;
  |  |  890|      0|            next_instr += 6;
  |  |  891|      0|            INSTRUCTION_STATS(BINARY_OP_SUBSCR_LIST_SLICE);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |  892|      0|            static_assert(INLINE_CACHE_ENTRIES_BINARY_OP == 5, "incorrect cache size");
  |  |  893|      0|            _PyStackRef tos;
  |  |  894|      0|            _PyStackRef nos;
  |  |  895|      0|            _PyStackRef list_st;
  |  |  896|      0|            _PyStackRef sub_st;
  |  |  897|      0|            _PyStackRef res;
  |  |  898|      0|            _PyStackRef ls;
  |  |  899|      0|            _PyStackRef ss;
  |  |  900|      0|            _PyStackRef value;
  |  |  901|       |            // _GUARD_TOS_SLICE
  |  |  902|      0|            {
  |  |  903|      0|                tos = stack_pointer[-1];
  |  |  904|      0|                PyObject *o = PyStackRef_AsPyObjectBorrow(tos);
  |  |  905|      0|                if (!PySlice_Check(o)) {
  |  |  ------------------
  |  |  |  |   22|      0|#define PySlice_Check(op) Py_IS_TYPE((op), &PySlice_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      0|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (905:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  906|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |  907|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (907:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  908|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |  909|      0|                }
  |  |  910|      0|            }
  |  |  911|       |            // _GUARD_NOS_LIST
  |  |  912|      0|            {
  |  |  913|      0|                nos = stack_pointer[-2];
  |  |  914|      0|                PyObject *o = PyStackRef_AsPyObjectBorrow(nos);
  |  |  915|      0|                if (!PyList_CheckExact(o)) {
  |  |  ------------------
  |  |  |  |   26|      0|#define PyList_CheckExact(op) Py_IS_TYPE((op), &PyList_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      0|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (915:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  916|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |  917|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (917:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  918|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |  919|      0|                }
  |  |  920|      0|            }
  |  |  921|       |            /* Skip 5 cache entries */
  |  |  922|       |            // _BINARY_OP_SUBSCR_LIST_SLICE
  |  |  923|      0|            {
  |  |  924|      0|                sub_st = tos;
  |  |  925|      0|                list_st = nos;
  |  |  926|      0|                PyObject *sub = PyStackRef_AsPyObjectBorrow(sub_st);
  |  |  927|      0|                PyObject *list = PyStackRef_AsPyObjectBorrow(list_st);
  |  |  928|      0|                assert(PySlice_Check(sub));
  |  |  ------------------
  |  |  |  Branch (928:17): [True: 0, False: 0]
  |  |  ------------------
  |  |  929|      0|                assert(PyList_CheckExact(list));
  |  |  ------------------
  |  |  |  Branch (929:17): [True: 0, False: 0]
  |  |  ------------------
  |  |  930|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |  931|      0|                PyObject *res_o = _PyList_SliceSubscript(list, sub);
  |  |  932|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |  933|      0|                STAT_INC(BINARY_OP, hit);
  |  |  ------------------
  |  |  |  |   73|      0|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  |  934|      0|                if (res_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (934:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  935|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |  936|      0|                }
  |  |  937|      0|                res = PyStackRef_FromPyObjectSteal(res_o);
  |  |  938|      0|                ls = list_st;
  |  |  939|      0|                ss = sub_st;
  |  |  940|      0|            }
  |  |  941|       |            // _POP_TOP
  |  |  942|      0|            {
  |  |  943|      0|                value = ss;
  |  |  944|      0|                stack_pointer[-2] = res;
  |  |  945|      0|                stack_pointer[-1] = ls;
  |  |  946|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |  947|      0|                PyStackRef_XCLOSE(value);
  |  |  948|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |  949|      0|            }
  |  |  950|       |            // _POP_TOP
  |  |  951|      0|            {
  |  |  952|      0|                value = ls;
  |  |  953|      0|                stack_pointer += -1;
  |  |  954|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |  955|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |  956|      0|                PyStackRef_XCLOSE(value);
  |  |  957|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |  958|      0|            }
  |  |  959|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (959:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  960|      0|        }
  |  |  961|       |
  |  |  962|    375|        TARGET(BINARY_OP_SUBSCR_STR_INT) {
  |  |  ------------------
  |  |  |  |  132|    375|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |  963|       |            #if _Py_TAIL_CALL_INTERP
  |  |  964|       |            int opcode = BINARY_OP_SUBSCR_STR_INT;
  |  |  965|       |            (void)(opcode);
  |  |  966|       |            #endif
  |  |  967|    375|            _Py_CODEUNIT* const this_instr = next_instr;
  |  |  968|    375|            (void)this_instr;
  |  |  969|    375|            frame->instr_ptr = next_instr;
  |  |  970|    375|            next_instr += 6;
  |  |  971|    375|            INSTRUCTION_STATS(BINARY_OP_SUBSCR_STR_INT);
  |  |  ------------------
  |  |  |  |   71|    375|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |  972|    375|            static_assert(INLINE_CACHE_ENTRIES_BINARY_OP == 5, "incorrect cache size");
  |  |  973|    375|            _PyStackRef value;
  |  |  974|    375|            _PyStackRef nos;
  |  |  975|    375|            _PyStackRef str_st;
  |  |  976|    375|            _PyStackRef sub_st;
  |  |  977|    375|            _PyStackRef res;
  |  |  978|    375|            _PyStackRef s;
  |  |  979|    375|            _PyStackRef i;
  |  |  980|       |            // _GUARD_TOS_INT
  |  |  981|    375|            {
  |  |  982|    375|                value = stack_pointer[-1];
  |  |  983|    375|                PyObject *value_o = PyStackRef_AsPyObjectBorrow(value);
  |  |  984|    375|                if (!_PyLong_CheckExactAndCompact(value_o)) {
  |  |  ------------------
  |  |  |  Branch (984:21): [True: 0, False: 375]
  |  |  ------------------
  |  |  985|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |  986|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (986:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  987|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |  988|      0|                }
  |  |  989|    375|            }
  |  |  990|       |            // _GUARD_NOS_COMPACT_ASCII
  |  |  991|    375|            {
  |  |  992|    375|                nos = stack_pointer[-2];
  |  |  993|    375|                PyObject *o = PyStackRef_AsPyObjectBorrow(nos);
  |  |  994|    375|                if (!PyUnicode_CheckExact(o)) {
  |  |  ------------------
  |  |  |  |  104|    375|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|    375|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|    375|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|    375|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (994:21): [True: 0, False: 375]
  |  |  ------------------
  |  |  995|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |  996|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (996:21): [True: 0, False: 0]
  |  |  ------------------
  |  |  997|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |  998|      0|                }
  |  |  999|    375|                if (!PyUnicode_IS_COMPACT_ASCII(o)) {
  |  |  ------------------
  |  |  |  |  241|    375|#define PyUnicode_IS_COMPACT_ASCII(op) PyUnicode_IS_COMPACT_ASCII(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    375|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    375|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (999:21): [True: 0, False: 375]
  |  |  ------------------
  |  | 1000|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 1001|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (1001:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 1002|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 1003|      0|                }
  |  | 1004|    375|            }
  |  | 1005|       |            /* Skip 5 cache entries */
  |  | 1006|       |            // _BINARY_OP_SUBSCR_STR_INT
  |  | 1007|    375|            {
  |  | 1008|    375|                sub_st = value;
  |  | 1009|    375|                str_st = nos;
  |  | 1010|    375|                PyObject *sub = PyStackRef_AsPyObjectBorrow(sub_st);
  |  | 1011|    375|                PyObject *str = PyStackRef_AsPyObjectBorrow(str_st);
  |  | 1012|    375|                assert(PyLong_CheckExact(sub));
  |  |  ------------------
  |  |  |  Branch (1012:17): [True: 375, False: 0]
  |  |  ------------------
  |  | 1013|    375|                assert(PyUnicode_CheckExact(str));
  |  |  ------------------
  |  |  |  Branch (1013:17): [True: 375, False: 0]
  |  |  ------------------
  |  | 1014|    375|                if (!_PyLong_IsNonNegativeCompact((PyLongObject*)sub)) {
  |  |  ------------------
  |  |  |  Branch (1014:21): [True: 0, False: 375]
  |  |  ------------------
  |  | 1015|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 1016|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (1016:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 1017|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 1018|      0|                }
  |  | 1019|    375|                Py_ssize_t index = ((PyLongObject*)sub)->long_value.ob_digit[0];
  |  | 1020|    375|                if (PyUnicode_GET_LENGTH(str) <= index) {
  |  |  ------------------
  |  |  |  |  299|    375|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    375|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    375|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1020:21): [True: 0, False: 375]
  |  |  ------------------
  |  | 1021|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 1022|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (1022:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 1023|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 1024|      0|                }
  |  | 1025|    375|                uint8_t c = PyUnicode_1BYTE_DATA(str)[index];
  |  |  ------------------
  |  |  |  |  291|    375|#define PyUnicode_1BYTE_DATA(op) _Py_STATIC_CAST(Py_UCS1*, PyUnicode_DATA(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   34|    375|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1026|    375|                assert(c < 128);
  |  |  ------------------
  |  |  |  Branch (1026:17): [True: 375, False: 0]
  |  |  ------------------
  |  | 1027|    375|                STAT_INC(BINARY_OP, hit);
  |  |  ------------------
  |  |  |  |   73|    375|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 1028|    375|                PyObject *res_o = (PyObject*)&_Py_SINGLETON(strings).ascii[c];
  |  |  ------------------
  |  |  |  |   18|    375|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|    375|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1029|    375|                s = str_st;
  |  | 1030|    375|                i = sub_st;
  |  | 1031|    375|                res = PyStackRef_FromPyObjectBorrow(res_o);
  |  | 1032|    375|            }
  |  | 1033|       |            // _POP_TOP_INT
  |  | 1034|      0|            {
  |  | 1035|    375|                value = i;
  |  | 1036|    375|                assert(PyLong_CheckExact(PyStackRef_AsPyObjectBorrow(value)));
  |  |  ------------------
  |  |  |  Branch (1036:17): [True: 375, False: 0]
  |  |  ------------------
  |  | 1037|    375|                PyStackRef_CLOSE_SPECIALIZED(value, _PyLong_ExactDealloc);
  |  | 1038|    375|            }
  |  | 1039|       |            // _POP_TOP_UNICODE
  |  | 1040|      0|            {
  |  | 1041|    375|                value = s;
  |  | 1042|    375|                assert(PyUnicode_CheckExact(PyStackRef_AsPyObjectBorrow(value)));
  |  |  ------------------
  |  |  |  Branch (1042:17): [True: 375, False: 0]
  |  |  ------------------
  |  | 1043|    375|                PyStackRef_CLOSE_SPECIALIZED(value, _PyUnicode_ExactDealloc);
  |  | 1044|    375|            }
  |  | 1045|      0|            stack_pointer[-2] = res;
  |  | 1046|    375|            stack_pointer += -1;
  |  | 1047|    375|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    375|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 1048|    375|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    375|    { \
  |  |  |  |  201|    375|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    375|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    375|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    375|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    375|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    375|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    375|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    375|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 375]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    375|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    375|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    375|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    375|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    375|    }
  |  |  ------------------
  |  |  |  Branch (1048:13): [True: 375, False: 0]
  |  |  ------------------
  |  | 1049|    375|        }
  |  | 1050|       |
  |  | 1051|     56|        TARGET(BINARY_OP_SUBSCR_TUPLE_INT) {
  |  |  ------------------
  |  |  |  |  132|     56|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 1052|       |            #if _Py_TAIL_CALL_INTERP
  |  | 1053|       |            int opcode = BINARY_OP_SUBSCR_TUPLE_INT;
  |  | 1054|       |            (void)(opcode);
  |  | 1055|       |            #endif
  |  | 1056|     56|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 1057|     56|            (void)this_instr;
  |  | 1058|     56|            frame->instr_ptr = next_instr;
  |  | 1059|     56|            next_instr += 6;
  |  | 1060|     56|            INSTRUCTION_STATS(BINARY_OP_SUBSCR_TUPLE_INT);
  |  |  ------------------
  |  |  |  |   71|     56|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 1061|     56|            static_assert(INLINE_CACHE_ENTRIES_BINARY_OP == 5, "incorrect cache size");
  |  | 1062|     56|            _PyStackRef value;
  |  | 1063|     56|            _PyStackRef nos;
  |  | 1064|     56|            _PyStackRef tuple_st;
  |  | 1065|     56|            _PyStackRef sub_st;
  |  | 1066|     56|            _PyStackRef res;
  |  | 1067|     56|            _PyStackRef ts;
  |  | 1068|     56|            _PyStackRef ss;
  |  | 1069|       |            // _GUARD_TOS_INT
  |  | 1070|     56|            {
  |  | 1071|     56|                value = stack_pointer[-1];
  |  | 1072|     56|                PyObject *value_o = PyStackRef_AsPyObjectBorrow(value);
  |  | 1073|     56|                if (!_PyLong_CheckExactAndCompact(value_o)) {
  |  |  ------------------
  |  |  |  Branch (1073:21): [True: 0, False: 56]
  |  |  ------------------
  |  | 1074|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 1075|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (1075:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 1076|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 1077|      0|                }
  |  | 1078|     56|            }
  |  | 1079|       |            // _GUARD_NOS_TUPLE
  |  | 1080|     56|            {
  |  | 1081|     56|                nos = stack_pointer[-2];
  |  | 1082|     56|                PyObject *o = PyStackRef_AsPyObjectBorrow(nos);
  |  | 1083|     56|                if (!PyTuple_CheckExact(o)) {
  |  |  ------------------
  |  |  |  |   28|     56|#define PyTuple_CheckExact(op) Py_IS_TYPE((op), &PyTuple_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|     56|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|     56|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     56|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1083:21): [True: 0, False: 56]
  |  |  ------------------
  |  | 1084|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 1085|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (1085:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 1086|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 1087|      0|                }
  |  | 1088|     56|            }
  |  | 1089|       |            // _GUARD_BINARY_OP_SUBSCR_TUPLE_INT_BOUNDS
  |  | 1090|     56|            {
  |  | 1091|     56|                sub_st = value;
  |  | 1092|     56|                tuple_st = nos;
  |  | 1093|     56|                PyObject *sub = PyStackRef_AsPyObjectBorrow(sub_st);
  |  | 1094|     56|                PyObject *tuple = PyStackRef_AsPyObjectBorrow(tuple_st);
  |  | 1095|     56|                assert(PyLong_CheckExact(sub));
  |  |  ------------------
  |  |  |  Branch (1095:17): [True: 56, False: 0]
  |  |  ------------------
  |  | 1096|     56|                assert(PyTuple_CheckExact(tuple));
  |  |  ------------------
  |  |  |  Branch (1096:17): [True: 56, False: 0]
  |  |  ------------------
  |  | 1097|     56|                if (!_PyLong_IsNonNegativeCompact((PyLongObject *)sub)) {
  |  |  ------------------
  |  |  |  Branch (1097:21): [True: 0, False: 56]
  |  |  ------------------
  |  | 1098|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 1099|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (1099:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 1100|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 1101|      0|                }
  |  | 1102|     56|                Py_ssize_t index = ((PyLongObject*)sub)->long_value.ob_digit[0];
  |  | 1103|     56|                if (index >= PyTuple_GET_SIZE(tuple)) {
  |  |  ------------------
  |  |  |  |   27|     56|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     56|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     56|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1103:21): [True: 0, False: 56]
  |  |  ------------------
  |  | 1104|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 1105|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (1105:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 1106|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 1107|      0|                }
  |  | 1108|     56|            }
  |  | 1109|       |            /* Skip 5 cache entries */
  |  | 1110|       |            // _BINARY_OP_SUBSCR_TUPLE_INT
  |  | 1111|     56|            {
  |  | 1112|     56|                PyObject *sub = PyStackRef_AsPyObjectBorrow(sub_st);
  |  | 1113|     56|                PyObject *tuple = PyStackRef_AsPyObjectBorrow(tuple_st);
  |  | 1114|     56|                assert(PyLong_CheckExact(sub));
  |  |  ------------------
  |  |  |  Branch (1114:17): [True: 56, False: 0]
  |  |  ------------------
  |  | 1115|     56|                assert(PyTuple_CheckExact(tuple));
  |  |  ------------------
  |  |  |  Branch (1115:17): [True: 56, False: 0]
  |  |  ------------------
  |  | 1116|     56|                STAT_INC(BINARY_OP, hit);
  |  |  ------------------
  |  |  |  |   73|     56|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 1117|     56|                Py_ssize_t index = ((PyLongObject*)sub)->long_value.ob_digit[0];
  |  | 1118|     56|                PyObject *res_o = PyTuple_GET_ITEM(tuple, index);
  |  |  ------------------
  |  |  |  |   29|     56|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  |  |  ------------------
  |  |  |  |  |  |   19|     56|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     56|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1118:35): [True: 56, False: 0]
  |  |  ------------------
  |  | 1119|     56|                assert(res_o != NULL);
  |  |  ------------------
  |  |  |  Branch (1119:17): [True: 56, False: 0]
  |  |  ------------------
  |  | 1120|     56|                res = PyStackRef_FromPyObjectNew(res_o);
  |  |  ------------------
  |  |  |  |  599|     56|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     56|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     56|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1121|     56|                ts = tuple_st;
  |  | 1122|     56|                ss = sub_st;
  |  | 1123|     56|            }
  |  | 1124|       |            // _POP_TOP_INT
  |  | 1125|      0|            {
  |  | 1126|     56|                value = ss;
  |  | 1127|     56|                assert(PyLong_CheckExact(PyStackRef_AsPyObjectBorrow(value)));
  |  |  ------------------
  |  |  |  Branch (1127:17): [True: 56, False: 0]
  |  |  ------------------
  |  | 1128|     56|                PyStackRef_CLOSE_SPECIALIZED(value, _PyLong_ExactDealloc);
  |  | 1129|     56|            }
  |  | 1130|       |            // _POP_TOP
  |  | 1131|      0|            {
  |  | 1132|     56|                value = ts;
  |  | 1133|     56|                stack_pointer[-2] = res;
  |  | 1134|     56|                stack_pointer += -1;
  |  | 1135|     56|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     56|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 1136|     56|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 1137|     56|                PyStackRef_XCLOSE(value);
  |  | 1138|     56|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 1139|     56|            }
  |  | 1140|     56|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     56|    { \
  |  |  |  |  201|     56|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     56|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     56|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     56|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     56|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     56|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     56|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     56|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 56]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     56|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     56|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     56|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     56|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     56|    }
  |  |  ------------------
  |  |  |  Branch (1140:13): [True: 56, False: 0]
  |  |  ------------------
  |  | 1141|     56|        }
  |  | 1142|       |
  |  | 1143|      0|        TARGET(BINARY_OP_SUBSCR_USTR_INT) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 1144|       |            #if _Py_TAIL_CALL_INTERP
  |  | 1145|       |            int opcode = BINARY_OP_SUBSCR_USTR_INT;
  |  | 1146|       |            (void)(opcode);
  |  | 1147|       |            #endif
  |  | 1148|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 1149|      0|            (void)this_instr;
  |  | 1150|      0|            frame->instr_ptr = next_instr;
  |  | 1151|      0|            next_instr += 6;
  |  | 1152|      0|            INSTRUCTION_STATS(BINARY_OP_SUBSCR_USTR_INT);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 1153|      0|            static_assert(INLINE_CACHE_ENTRIES_BINARY_OP == 5, "incorrect cache size");
  |  | 1154|      0|            _PyStackRef value;
  |  | 1155|      0|            _PyStackRef nos;
  |  | 1156|      0|            _PyStackRef str_st;
  |  | 1157|      0|            _PyStackRef sub_st;
  |  | 1158|      0|            _PyStackRef res;
  |  | 1159|      0|            _PyStackRef s;
  |  | 1160|      0|            _PyStackRef i;
  |  | 1161|       |            // _GUARD_TOS_INT
  |  | 1162|      0|            {
  |  | 1163|      0|                value = stack_pointer[-1];
  |  | 1164|      0|                PyObject *value_o = PyStackRef_AsPyObjectBorrow(value);
  |  | 1165|      0|                if (!_PyLong_CheckExactAndCompact(value_o)) {
  |  |  ------------------
  |  |  |  Branch (1165:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 1166|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 1167|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (1167:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 1168|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 1169|      0|                }
  |  | 1170|      0|            }
  |  | 1171|       |            // _GUARD_NOS_UNICODE
  |  | 1172|      0|            {
  |  | 1173|      0|                nos = stack_pointer[-2];
  |  | 1174|      0|                PyObject *o = PyStackRef_AsPyObjectBorrow(nos);
  |  | 1175|      0|                if (!PyUnicode_CheckExact(o)) {
  |  |  ------------------
  |  |  |  |  104|      0|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      0|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1175:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 1176|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 1177|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (1177:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 1178|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 1179|      0|                }
  |  | 1180|      0|            }
  |  | 1181|       |            /* Skip 5 cache entries */
  |  | 1182|       |            // _BINARY_OP_SUBSCR_USTR_INT
  |  | 1183|      0|            {
  |  | 1184|      0|                sub_st = value;
  |  | 1185|      0|                str_st = nos;
  |  | 1186|      0|                PyObject *sub = PyStackRef_AsPyObjectBorrow(sub_st);
  |  | 1187|      0|                PyObject *str = PyStackRef_AsPyObjectBorrow(str_st);
  |  | 1188|      0|                assert(PyLong_CheckExact(sub));
  |  |  ------------------
  |  |  |  Branch (1188:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 1189|      0|                assert(PyUnicode_CheckExact(str));
  |  |  ------------------
  |  |  |  Branch (1189:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 1190|      0|                if (!_PyLong_IsNonNegativeCompact((PyLongObject*)sub)) {
  |  |  ------------------
  |  |  |  Branch (1190:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 1191|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 1192|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (1192:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 1193|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 1194|      0|                }
  |  | 1195|      0|                Py_ssize_t index = ((PyLongObject*)sub)->long_value.ob_digit[0];
  |  | 1196|      0|                if (PyUnicode_GET_LENGTH(str) <= index) {
  |  |  ------------------
  |  |  |  |  299|      0|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1196:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 1197|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 1198|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (1198:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 1199|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 1200|      0|                }
  |  | 1201|      0|                Py_UCS4 c = PyUnicode_READ_CHAR(str, index);
  |  |  ------------------
  |  |  |  |  381|      0|    PyUnicode_READ_CHAR(_PyObject_CAST(unicode), (index))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1202|      0|                if (Py_ARRAY_LENGTH(_Py_SINGLETON(strings).ascii) <= c) {
  |  |  ------------------
  |  |  |  |  196|      0|    (sizeof(array) / sizeof((array)[0]))
  |  |  ------------------
  |  |  |  Branch (1202:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 1203|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 1204|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (1204:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 1205|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 1206|      0|                }
  |  | 1207|      0|                STAT_INC(BINARY_OP, hit);
  |  |  ------------------
  |  |  |  |   73|      0|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 1208|      0|                PyObject *res_o = (PyObject*)&_Py_SINGLETON(strings).ascii[c];
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1209|      0|                s = str_st;
  |  | 1210|      0|                i = sub_st;
  |  | 1211|      0|                res = PyStackRef_FromPyObjectBorrow(res_o);
  |  | 1212|      0|            }
  |  | 1213|       |            // _POP_TOP_INT
  |  | 1214|      0|            {
  |  | 1215|      0|                value = i;
  |  | 1216|      0|                assert(PyLong_CheckExact(PyStackRef_AsPyObjectBorrow(value)));
  |  |  ------------------
  |  |  |  Branch (1216:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 1217|      0|                PyStackRef_CLOSE_SPECIALIZED(value, _PyLong_ExactDealloc);
  |  | 1218|      0|            }
  |  | 1219|       |            // _POP_TOP_UNICODE
  |  | 1220|      0|            {
  |  | 1221|      0|                value = s;
  |  | 1222|      0|                assert(PyUnicode_CheckExact(PyStackRef_AsPyObjectBorrow(value)));
  |  |  ------------------
  |  |  |  Branch (1222:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 1223|      0|                PyStackRef_CLOSE_SPECIALIZED(value, _PyUnicode_ExactDealloc);
  |  | 1224|      0|            }
  |  | 1225|      0|            stack_pointer[-2] = res;
  |  | 1226|      0|            stack_pointer += -1;
  |  | 1227|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 1228|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (1228:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1229|      0|        }
  |  | 1230|       |
  |  | 1231|      0|        TARGET(BINARY_OP_SUBTRACT_FLOAT) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 1232|       |            #if _Py_TAIL_CALL_INTERP
  |  | 1233|       |            int opcode = BINARY_OP_SUBTRACT_FLOAT;
  |  | 1234|       |            (void)(opcode);
  |  | 1235|       |            #endif
  |  | 1236|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 1237|      0|            (void)this_instr;
  |  | 1238|      0|            frame->instr_ptr = next_instr;
  |  | 1239|      0|            next_instr += 6;
  |  | 1240|      0|            INSTRUCTION_STATS(BINARY_OP_SUBTRACT_FLOAT);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 1241|      0|            static_assert(INLINE_CACHE_ENTRIES_BINARY_OP == 5, "incorrect cache size");
  |  | 1242|      0|            _PyStackRef value;
  |  | 1243|      0|            _PyStackRef left;
  |  | 1244|      0|            _PyStackRef right;
  |  | 1245|      0|            _PyStackRef res;
  |  | 1246|      0|            _PyStackRef l;
  |  | 1247|      0|            _PyStackRef r;
  |  | 1248|       |            // _GUARD_TOS_FLOAT
  |  | 1249|      0|            {
  |  | 1250|      0|                value = stack_pointer[-1];
  |  | 1251|      0|                PyObject *value_o = PyStackRef_AsPyObjectBorrow(value);
  |  | 1252|      0|                if (!PyFloat_CheckExact(value_o)) {
  |  |  ------------------
  |  |  |  |   17|      0|#define PyFloat_CheckExact(op) Py_IS_TYPE((op), &PyFloat_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      0|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1252:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 1253|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 1254|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (1254:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 1255|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 1256|      0|                }
  |  | 1257|      0|            }
  |  | 1258|       |            // _GUARD_NOS_FLOAT
  |  | 1259|      0|            {
  |  | 1260|      0|                left = stack_pointer[-2];
  |  | 1261|      0|                PyObject *left_o = PyStackRef_AsPyObjectBorrow(left);
  |  | 1262|      0|                if (!PyFloat_CheckExact(left_o)) {
  |  |  ------------------
  |  |  |  |   17|      0|#define PyFloat_CheckExact(op) Py_IS_TYPE((op), &PyFloat_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      0|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1262:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 1263|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 1264|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (1264:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 1265|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 1266|      0|                }
  |  | 1267|      0|            }
  |  | 1268|       |            /* Skip 5 cache entries */
  |  | 1269|       |            // _BINARY_OP_SUBTRACT_FLOAT
  |  | 1270|      0|            {
  |  | 1271|      0|                right = value;
  |  | 1272|      0|                PyObject *left_o = PyStackRef_AsPyObjectBorrow(left);
  |  | 1273|      0|                PyObject *right_o = PyStackRef_AsPyObjectBorrow(right);
  |  | 1274|      0|                assert(PyFloat_CheckExact(left_o));
  |  |  ------------------
  |  |  |  Branch (1274:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 1275|      0|                assert(PyFloat_CheckExact(right_o));
  |  |  ------------------
  |  |  |  Branch (1275:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 1276|      0|                STAT_INC(BINARY_OP, hit);
  |  |  ------------------
  |  |  |  |   73|      0|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 1277|      0|                double dres =
  |  | 1278|      0|                ((PyFloatObject *)left_o)->ob_fval -
  |  | 1279|      0|                ((PyFloatObject *)right_o)->ob_fval;
  |  | 1280|      0|                PyObject *d = PyFloat_FromDouble(dres);
  |  | 1281|      0|                if (d == NULL) {
  |  |  ------------------
  |  |  |  Branch (1281:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 1282|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 1283|      0|                }
  |  | 1284|      0|                res = PyStackRef_FromPyObjectSteal(d);
  |  | 1285|      0|                l = left;
  |  | 1286|      0|                r = right;
  |  | 1287|      0|            }
  |  | 1288|       |            // _POP_TOP_FLOAT
  |  | 1289|      0|            {
  |  | 1290|      0|                value = r;
  |  | 1291|      0|                assert(PyFloat_CheckExact(PyStackRef_AsPyObjectBorrow(value)));
  |  |  ------------------
  |  |  |  Branch (1291:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 1292|      0|                PyStackRef_CLOSE_SPECIALIZED(value, _PyFloat_ExactDealloc);
  |  | 1293|      0|            }
  |  | 1294|       |            // _POP_TOP_FLOAT
  |  | 1295|      0|            {
  |  | 1296|      0|                value = l;
  |  | 1297|      0|                assert(PyFloat_CheckExact(PyStackRef_AsPyObjectBorrow(value)));
  |  |  ------------------
  |  |  |  Branch (1297:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 1298|      0|                PyStackRef_CLOSE_SPECIALIZED(value, _PyFloat_ExactDealloc);
  |  | 1299|      0|            }
  |  | 1300|      0|            stack_pointer[-2] = res;
  |  | 1301|      0|            stack_pointer += -1;
  |  | 1302|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 1303|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (1303:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1304|      0|        }
  |  | 1305|       |
  |  | 1306|      0|        TARGET(BINARY_OP_SUBTRACT_INT) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 1307|       |            #if _Py_TAIL_CALL_INTERP
  |  | 1308|       |            int opcode = BINARY_OP_SUBTRACT_INT;
  |  | 1309|       |            (void)(opcode);
  |  | 1310|       |            #endif
  |  | 1311|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 1312|      0|            (void)this_instr;
  |  | 1313|      0|            frame->instr_ptr = next_instr;
  |  | 1314|      0|            next_instr += 6;
  |  | 1315|      0|            INSTRUCTION_STATS(BINARY_OP_SUBTRACT_INT);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 1316|      0|            static_assert(INLINE_CACHE_ENTRIES_BINARY_OP == 5, "incorrect cache size");
  |  | 1317|      0|            _PyStackRef value;
  |  | 1318|      0|            _PyStackRef left;
  |  | 1319|      0|            _PyStackRef right;
  |  | 1320|      0|            _PyStackRef res;
  |  | 1321|      0|            _PyStackRef l;
  |  | 1322|      0|            _PyStackRef r;
  |  | 1323|       |            // _GUARD_TOS_INT
  |  | 1324|      0|            {
  |  | 1325|      0|                value = stack_pointer[-1];
  |  | 1326|      0|                PyObject *value_o = PyStackRef_AsPyObjectBorrow(value);
  |  | 1327|      0|                if (!_PyLong_CheckExactAndCompact(value_o)) {
  |  |  ------------------
  |  |  |  Branch (1327:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 1328|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 1329|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (1329:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 1330|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 1331|      0|                }
  |  | 1332|      0|            }
  |  | 1333|       |            // _GUARD_NOS_INT
  |  | 1334|      0|            {
  |  | 1335|      0|                left = stack_pointer[-2];
  |  | 1336|      0|                PyObject *left_o = PyStackRef_AsPyObjectBorrow(left);
  |  | 1337|      0|                if (!_PyLong_CheckExactAndCompact(left_o)) {
  |  |  ------------------
  |  |  |  Branch (1337:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 1338|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 1339|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (1339:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 1340|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 1341|      0|                }
  |  | 1342|      0|            }
  |  | 1343|       |            /* Skip 5 cache entries */
  |  | 1344|       |            // _BINARY_OP_SUBTRACT_INT
  |  | 1345|      0|            {
  |  | 1346|      0|                right = value;
  |  | 1347|      0|                PyObject *left_o = PyStackRef_AsPyObjectBorrow(left);
  |  | 1348|      0|                PyObject *right_o = PyStackRef_AsPyObjectBorrow(right);
  |  | 1349|      0|                assert(PyLong_CheckExact(left_o));
  |  |  ------------------
  |  |  |  Branch (1349:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 1350|      0|                assert(PyLong_CheckExact(right_o));
  |  |  ------------------
  |  |  |  Branch (1350:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 1351|      0|                assert(_PyLong_BothAreCompact((PyLongObject *)left_o, (PyLongObject *)right_o));
  |  |  ------------------
  |  |  |  Branch (1351:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 1352|      0|                STAT_INC(BINARY_OP, hit);
  |  |  ------------------
  |  |  |  |   73|      0|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 1353|      0|                res = _PyCompactLong_Subtract((PyLongObject *)left_o, (PyLongObject *)right_o);
  |  | 1354|      0|                if (PyStackRef_IsNull(res)) {
  |  |  ------------------
  |  |  |  |  470|      0|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|      0|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      0|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (470:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1355|      0|                    UPDATE_MISS_STATS(BINARY_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 1356|      0|                    assert(_PyOpcode_Deopt[opcode] == (BINARY_OP));
  |  |  ------------------
  |  |  |  Branch (1356:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 1357|      0|                    JUMP_TO_PREDICTED(BINARY_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 1358|      0|                }
  |  | 1359|      0|                l = left;
  |  | 1360|      0|                r = right;
  |  | 1361|      0|            }
  |  | 1362|       |            // _POP_TOP_INT
  |  | 1363|      0|            {
  |  | 1364|      0|                value = r;
  |  | 1365|      0|                assert(PyLong_CheckExact(PyStackRef_AsPyObjectBorrow(value)));
  |  |  ------------------
  |  |  |  Branch (1365:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 1366|      0|                PyStackRef_CLOSE_SPECIALIZED(value, _PyLong_ExactDealloc);
  |  | 1367|      0|            }
  |  | 1368|       |            // _POP_TOP_INT
  |  | 1369|      0|            {
  |  | 1370|      0|                value = l;
  |  | 1371|      0|                assert(PyLong_CheckExact(PyStackRef_AsPyObjectBorrow(value)));
  |  |  ------------------
  |  |  |  Branch (1371:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 1372|      0|                PyStackRef_CLOSE_SPECIALIZED(value, _PyLong_ExactDealloc);
  |  | 1373|      0|            }
  |  | 1374|      0|            stack_pointer[-2] = res;
  |  | 1375|      0|            stack_pointer += -1;
  |  | 1376|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 1377|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (1377:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1378|      0|        }
  |  | 1379|       |
  |  | 1380|      9|        TARGET(BINARY_SLICE) {
  |  |  ------------------
  |  |  |  |  132|      9|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 1381|       |            #if _Py_TAIL_CALL_INTERP
  |  | 1382|       |            int opcode = BINARY_SLICE;
  |  | 1383|       |            (void)(opcode);
  |  | 1384|       |            #endif
  |  | 1385|      9|            frame->instr_ptr = next_instr;
  |  | 1386|      9|            next_instr += 1;
  |  | 1387|      9|            INSTRUCTION_STATS(BINARY_SLICE);
  |  |  ------------------
  |  |  |  |   71|      9|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 1388|      9|            _PyStackRef container;
  |  | 1389|      9|            _PyStackRef start;
  |  | 1390|      9|            _PyStackRef stop;
  |  | 1391|      9|            _PyStackRef res;
  |  | 1392|       |            // _SPECIALIZE_BINARY_SLICE
  |  | 1393|      9|            {
  |  | 1394|      9|                #if ENABLE_SPECIALIZATION
  |  | 1395|      9|                OPCODE_DEFERRED_INC(BINARY_SLICE);
  |  |  ------------------
  |  |  |  |   90|      9|#define OPCODE_DEFERRED_INC(opname) ((void)0)
  |  |  ------------------
  |  | 1396|      9|                #endif  /* ENABLE_SPECIALIZATION */
  |  | 1397|      9|            }
  |  | 1398|       |            // _BINARY_SLICE
  |  | 1399|      9|            {
  |  | 1400|      9|                stop = stack_pointer[-1];
  |  | 1401|      9|                start = stack_pointer[-2];
  |  | 1402|      9|                container = stack_pointer[-3];
  |  | 1403|      9|                PyObject *container_o = PyStackRef_AsPyObjectBorrow(container);
  |  | 1404|      9|                PyObject *start_o = PyStackRef_AsPyObjectBorrow(start);
  |  | 1405|      9|                PyObject *stop_o = PyStackRef_AsPyObjectBorrow(stop);
  |  | 1406|      9|                PyObject *res_o;
  |  | 1407|      9|                if (PyList_CheckExact(container_o)) {
  |  |  ------------------
  |  |  |  |   26|      9|#define PyList_CheckExact(op) Py_IS_TYPE((op), &PyList_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      9|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      9|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      9|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (65:5): [True: 4, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1408|      4|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 1409|      4|                    res_o = _PyList_BinarySlice(container_o, start_o, stop_o);
  |  | 1410|      4|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 1411|      4|                }
  |  | 1412|      5|                else if (PyTuple_CheckExact(container_o)) {
  |  |  ------------------
  |  |  |  |   28|      5|#define PyTuple_CheckExact(op) Py_IS_TYPE((op), &PyTuple_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      5|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (65:5): [True: 0, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1413|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 1414|      0|                    res_o = _PyTuple_BinarySlice(container_o, start_o, stop_o);
  |  | 1415|      0|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 1416|      0|                }
  |  | 1417|      5|                else if (PyUnicode_CheckExact(container_o)) {
  |  |  ------------------
  |  |  |  |  104|      5|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      5|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (65:5): [True: 5, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1418|      5|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 1419|      5|                    res_o = _PyUnicode_BinarySlice(container_o, start_o, stop_o);
  |  | 1420|      5|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 1421|      5|                }
  |  | 1422|      0|                else {
  |  | 1423|      0|                    PyObject *slice = PySlice_New(start_o, stop_o, NULL);
  |  | 1424|      0|                    if (slice == NULL) {
  |  |  ------------------
  |  |  |  Branch (1424:25): [True: 0, False: 0]
  |  |  ------------------
  |  | 1425|      0|                        res_o = NULL;
  |  | 1426|      0|                    }
  |  | 1427|      0|                    else {
  |  | 1428|      0|                        _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 1429|      0|                        res_o = PyObject_GetItem(container_o, slice);
  |  | 1430|      0|                        Py_DECREF(slice);
  |  |  ------------------
  |  |  |  |   80|      0|    do { \
  |  |  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   84|      0|            break; \
  |  |  |  |   85|      0|        } \
  |  |  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |   91|      0|        } \
  |  |  |  |   92|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1431|      0|                        stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 1432|      0|                    }
  |  | 1433|      0|                }
  |  | 1434|      9|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 1435|      9|                _PyStackRef tmp = stop;
  |  | 1436|      9|                stop = PyStackRef_NULL;
  |  | 1437|      9|                stack_pointer[-1] = stop;
  |  | 1438|      9|                PyStackRef_CLOSE(tmp);
  |  | 1439|      9|                tmp = start;
  |  | 1440|      9|                start = PyStackRef_NULL;
  |  | 1441|      9|                stack_pointer[-2] = start;
  |  | 1442|      9|                PyStackRef_CLOSE(tmp);
  |  | 1443|      9|                tmp = container;
  |  | 1444|      9|                container = PyStackRef_NULL;
  |  | 1445|      9|                stack_pointer[-3] = container;
  |  | 1446|      9|                PyStackRef_CLOSE(tmp);
  |  | 1447|      9|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 1448|      9|                stack_pointer += -3;
  |  | 1449|      9|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      9|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 1450|      9|                if (res_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (1450:21): [True: 0, False: 9]
  |  |  ------------------
  |  | 1451|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 1452|      0|                }
  |  | 1453|      9|                res = PyStackRef_FromPyObjectSteal(res_o);
  |  | 1454|      9|            }
  |  | 1455|      0|            stack_pointer[0] = res;
  |  | 1456|      9|            stack_pointer += 1;
  |  | 1457|      9|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      9|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 1458|      9|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      9|    { \
  |  |  |  |  201|      9|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      9|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      9|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      9|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      9|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      9|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      9|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      9|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 9]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      9|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      9|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      9|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      9|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      9|    }
  |  |  ------------------
  |  |  |  Branch (1458:13): [True: 9, False: 0]
  |  |  ------------------
  |  | 1459|      9|        }
  |  | 1460|       |
  |  | 1461|      0|        TARGET(BUILD_INTERPOLATION) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 1462|       |            #if _Py_TAIL_CALL_INTERP
  |  | 1463|       |            int opcode = BUILD_INTERPOLATION;
  |  | 1464|       |            (void)(opcode);
  |  | 1465|       |            #endif
  |  | 1466|      0|            frame->instr_ptr = next_instr;
  |  | 1467|      0|            next_instr += 1;
  |  | 1468|      0|            INSTRUCTION_STATS(BUILD_INTERPOLATION);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 1469|      0|            _PyStackRef value;
  |  | 1470|      0|            _PyStackRef str;
  |  | 1471|      0|            _PyStackRef *format;
  |  | 1472|      0|            _PyStackRef interpolation;
  |  | 1473|      0|            format = &stack_pointer[-(oparg & 1)];
  |  | 1474|      0|            str = stack_pointer[-1 - (oparg & 1)];
  |  | 1475|      0|            value = stack_pointer[-2 - (oparg & 1)];
  |  | 1476|      0|            PyObject *value_o = PyStackRef_AsPyObjectBorrow(value);
  |  | 1477|      0|            PyObject *str_o = PyStackRef_AsPyObjectBorrow(str);
  |  | 1478|      0|            int conversion = oparg >> 2;
  |  | 1479|      0|            PyObject *format_o;
  |  | 1480|      0|            if (oparg & 1) {
  |  |  ------------------
  |  |  |  Branch (1480:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 1481|      0|                format_o = PyStackRef_AsPyObjectBorrow(format[0]);
  |  | 1482|      0|            }
  |  | 1483|      0|            else {
  |  | 1484|      0|                format_o = &_Py_STR(empty);
  |  |  ------------------
  |  |  |  |  919|      0|     (_Py_SINGLETON(strings.literals._py_ ## NAME._ascii.ob_base))
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1485|      0|            }
  |  | 1486|      0|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 1487|      0|            PyObject *interpolation_o = _PyInterpolation_Build(value_o, str_o, conversion, format_o);
  |  | 1488|      0|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 1489|      0|            if (oparg & 1) {
  |  |  ------------------
  |  |  |  Branch (1489:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 1490|      0|                stack_pointer += -(oparg & 1);
  |  | 1491|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 1492|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 1493|      0|                PyStackRef_CLOSE(format[0]);
  |  | 1494|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 1495|      0|            }
  |  | 1496|      0|            else {
  |  | 1497|      0|                stack_pointer += -(oparg & 1);
  |  | 1498|      0|            }
  |  | 1499|      0|            stack_pointer += -1;
  |  | 1500|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 1501|      0|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 1502|      0|            PyStackRef_CLOSE(str);
  |  | 1503|      0|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 1504|      0|            stack_pointer += -1;
  |  | 1505|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 1506|      0|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 1507|      0|            PyStackRef_CLOSE(value);
  |  | 1508|      0|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 1509|      0|            if (interpolation_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (1509:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 1510|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 1511|      0|            }
  |  | 1512|      0|            interpolation = PyStackRef_FromPyObjectSteal(interpolation_o);
  |  | 1513|      0|            stack_pointer[0] = interpolation;
  |  | 1514|      0|            stack_pointer += 1;
  |  | 1515|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 1516|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (1516:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1517|      0|        }
  |  | 1518|       |
  |  | 1519|    205|        TARGET(BUILD_LIST) {
  |  |  ------------------
  |  |  |  |  132|    205|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 1520|       |            #if _Py_TAIL_CALL_INTERP
  |  | 1521|       |            int opcode = BUILD_LIST;
  |  | 1522|       |            (void)(opcode);
  |  | 1523|       |            #endif
  |  | 1524|    205|            frame->instr_ptr = next_instr;
  |  | 1525|    205|            next_instr += 1;
  |  | 1526|    205|            INSTRUCTION_STATS(BUILD_LIST);
  |  |  ------------------
  |  |  |  |   71|    205|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 1527|    205|            _PyStackRef *values;
  |  | 1528|    205|            _PyStackRef list;
  |  | 1529|    205|            values = &stack_pointer[-oparg];
  |  | 1530|    205|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 1531|    205|            PyObject *list_o = _PyList_FromStackRefStealOnSuccess(values, oparg);
  |  | 1532|    205|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 1533|    205|            if (list_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (1533:17): [True: 0, False: 205]
  |  |  ------------------
  |  | 1534|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 1535|      0|            }
  |  | 1536|    205|            list = PyStackRef_FromPyObjectStealMortal(list_o);
  |  | 1537|    205|            stack_pointer[-oparg] = list;
  |  | 1538|    205|            stack_pointer += 1 - oparg;
  |  | 1539|    205|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    205|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 1540|    205|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    205|    { \
  |  |  |  |  201|    205|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    205|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    205|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    205|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    205|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    205|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    205|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    205|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 205]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    205|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    205|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    205|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    205|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    205|    }
  |  |  ------------------
  |  |  |  Branch (1540:13): [True: 205, False: 0]
  |  |  ------------------
  |  | 1541|    205|        }
  |  | 1542|       |
  |  | 1543|    135|        TARGET(BUILD_MAP) {
  |  |  ------------------
  |  |  |  |  132|    135|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 1544|       |            #if _Py_TAIL_CALL_INTERP
  |  | 1545|       |            int opcode = BUILD_MAP;
  |  | 1546|       |            (void)(opcode);
  |  | 1547|       |            #endif
  |  | 1548|    135|            frame->instr_ptr = next_instr;
  |  | 1549|    135|            next_instr += 1;
  |  | 1550|    135|            INSTRUCTION_STATS(BUILD_MAP);
  |  |  ------------------
  |  |  |  |   71|    135|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 1551|    135|            _PyStackRef *values;
  |  | 1552|    135|            _PyStackRef map;
  |  | 1553|    135|            values = &stack_pointer[-oparg*2];
  |  | 1554|    135|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 1555|    135|            PyObject *map_o = _Py_BuildMap_StackRefSteal(values, oparg);
  |  | 1556|    135|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 1557|    135|            if (map_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (1557:17): [True: 0, False: 135]
  |  |  ------------------
  |  | 1558|      0|                stack_pointer += -oparg*2;
  |  | 1559|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 1560|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 1561|      0|            }
  |  | 1562|    135|            map = PyStackRef_FromPyObjectStealMortal(map_o);
  |  | 1563|    135|            stack_pointer[-oparg*2] = map;
  |  | 1564|    135|            stack_pointer += 1 - oparg*2;
  |  | 1565|    135|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    135|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 1566|    135|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    135|    { \
  |  |  |  |  201|    135|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    135|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    135|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    135|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    135|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    135|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    135|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    135|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 135]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    135|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    135|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    135|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    135|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    135|    }
  |  |  ------------------
  |  |  |  Branch (1566:13): [True: 135, False: 0]
  |  |  ------------------
  |  | 1567|    135|        }
  |  | 1568|       |
  |  | 1569|      3|        TARGET(BUILD_SET) {
  |  |  ------------------
  |  |  |  |  132|      3|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 1570|       |            #if _Py_TAIL_CALL_INTERP
  |  | 1571|       |            int opcode = BUILD_SET;
  |  | 1572|       |            (void)(opcode);
  |  | 1573|       |            #endif
  |  | 1574|      3|            frame->instr_ptr = next_instr;
  |  | 1575|      3|            next_instr += 1;
  |  | 1576|      3|            INSTRUCTION_STATS(BUILD_SET);
  |  |  ------------------
  |  |  |  |   71|      3|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 1577|      3|            _PyStackRef *values;
  |  | 1578|      3|            _PyStackRef set;
  |  | 1579|      3|            values = &stack_pointer[-oparg];
  |  | 1580|      3|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 1581|      3|            PyObject *set_o = PySet_New(NULL);
  |  | 1582|      3|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 1583|      3|            if (set_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (1583:17): [True: 0, False: 3]
  |  |  ------------------
  |  | 1584|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 1585|      0|                _PyStackRef tmp;
  |  | 1586|      0|                for (int _i = oparg; --_i >= 0;) {
  |  |  ------------------
  |  |  |  Branch (1586:38): [True: 0, False: 0]
  |  |  ------------------
  |  | 1587|      0|                    tmp = values[_i];
  |  | 1588|      0|                    values[_i] = PyStackRef_NULL;
  |  | 1589|      0|                    PyStackRef_CLOSE(tmp);
  |  | 1590|      0|                }
  |  | 1591|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 1592|      0|                stack_pointer += -oparg;
  |  | 1593|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 1594|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 1595|      0|            }
  |  | 1596|      3|            int err = 0;
  |  | 1597|      7|            for (Py_ssize_t i = 0; i < oparg; i++) {
  |  |  ------------------
  |  |  |  Branch (1597:36): [True: 4, False: 3]
  |  |  ------------------
  |  | 1598|      4|                _PyStackRef value = values[i];
  |  | 1599|      4|                values[i] = PyStackRef_NULL;
  |  | 1600|      4|                if (err == 0) {
  |  |  ------------------
  |  |  |  Branch (1600:21): [True: 4, False: 0]
  |  |  ------------------
  |  | 1601|      4|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 1602|      4|                    err = _PySet_AddTakeRef((PySetObject *)set_o, PyStackRef_AsPyObjectSteal(value));
  |  | 1603|      4|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 1604|      4|                }
  |  | 1605|      0|                else {
  |  | 1606|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 1607|      0|                    PyStackRef_CLOSE(value);
  |  | 1608|      0|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 1609|      0|                }
  |  | 1610|      4|            }
  |  | 1611|      3|            if (err) {
  |  |  ------------------
  |  |  |  Branch (1611:17): [True: 0, False: 3]
  |  |  ------------------
  |  | 1612|      0|                stack_pointer += -oparg;
  |  | 1613|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 1614|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 1615|      0|                Py_DECREF(set_o);
  |  |  ------------------
  |  |  |  |   80|      0|    do { \
  |  |  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   84|      0|            break; \
  |  |  |  |   85|      0|        } \
  |  |  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |   91|      0|        } \
  |  |  |  |   92|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1616|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 1617|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 1618|      0|            }
  |  | 1619|      3|            set = PyStackRef_FromPyObjectStealMortal(set_o);
  |  | 1620|      3|            stack_pointer[-oparg] = set;
  |  | 1621|      3|            stack_pointer += 1 - oparg;
  |  | 1622|      3|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      3|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 1623|      3|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      3|    { \
  |  |  |  |  201|      3|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      3|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      3|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      3|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      3|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      3|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      3|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      3|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      3|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      3|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      3|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      3|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      3|    }
  |  |  ------------------
  |  |  |  Branch (1623:13): [True: 3, False: 0]
  |  |  ------------------
  |  | 1624|      3|        }
  |  | 1625|       |
  |  | 1626|      0|        TARGET(BUILD_SLICE) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 1627|       |            #if _Py_TAIL_CALL_INTERP
  |  | 1628|       |            int opcode = BUILD_SLICE;
  |  | 1629|       |            (void)(opcode);
  |  | 1630|       |            #endif
  |  | 1631|      0|            frame->instr_ptr = next_instr;
  |  | 1632|      0|            next_instr += 1;
  |  | 1633|      0|            INSTRUCTION_STATS(BUILD_SLICE);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 1634|      0|            _PyStackRef *args;
  |  | 1635|      0|            _PyStackRef slice;
  |  | 1636|      0|            args = &stack_pointer[-oparg];
  |  | 1637|      0|            PyObject *start_o = PyStackRef_AsPyObjectBorrow(args[0]);
  |  | 1638|      0|            PyObject *stop_o = PyStackRef_AsPyObjectBorrow(args[1]);
  |  | 1639|      0|            PyObject *step_o = oparg == 3 ? PyStackRef_AsPyObjectBorrow(args[2]) : NULL;
  |  |  ------------------
  |  |  |  Branch (1639:32): [True: 0, False: 0]
  |  |  ------------------
  |  | 1640|      0|            PyObject *slice_o = PySlice_New(start_o, stop_o, step_o);
  |  | 1641|      0|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 1642|      0|            _PyStackRef tmp;
  |  | 1643|      0|            for (int _i = oparg; --_i >= 0;) {
  |  |  ------------------
  |  |  |  Branch (1643:34): [True: 0, False: 0]
  |  |  ------------------
  |  | 1644|      0|                tmp = args[_i];
  |  | 1645|      0|                args[_i] = PyStackRef_NULL;
  |  | 1646|      0|                PyStackRef_CLOSE(tmp);
  |  | 1647|      0|            }
  |  | 1648|      0|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 1649|      0|            stack_pointer += -oparg;
  |  | 1650|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 1651|      0|            if (slice_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (1651:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 1652|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 1653|      0|            }
  |  | 1654|      0|            slice = PyStackRef_FromPyObjectStealMortal(slice_o);
  |  | 1655|      0|            stack_pointer[0] = slice;
  |  | 1656|      0|            stack_pointer += 1;
  |  | 1657|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 1658|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (1658:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1659|      0|        }
  |  | 1660|       |
  |  | 1661|     31|        TARGET(BUILD_STRING) {
  |  |  ------------------
  |  |  |  |  132|     31|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 1662|       |            #if _Py_TAIL_CALL_INTERP
  |  | 1663|       |            int opcode = BUILD_STRING;
  |  | 1664|       |            (void)(opcode);
  |  | 1665|       |            #endif
  |  | 1666|     31|            frame->instr_ptr = next_instr;
  |  | 1667|     31|            next_instr += 1;
  |  | 1668|     31|            INSTRUCTION_STATS(BUILD_STRING);
  |  |  ------------------
  |  |  |  |   71|     31|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 1669|     31|            _PyStackRef *pieces;
  |  | 1670|     31|            _PyStackRef str;
  |  | 1671|     31|            pieces = &stack_pointer[-oparg];
  |  | 1672|     31|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 1673|     31|            PyObject *str_o = _Py_BuildString_StackRefSteal(pieces, oparg);
  |  | 1674|     31|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 1675|     31|            if (str_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (1675:17): [True: 0, False: 31]
  |  |  ------------------
  |  | 1676|      0|                stack_pointer += -oparg;
  |  | 1677|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 1678|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 1679|      0|            }
  |  | 1680|     31|            str = PyStackRef_FromPyObjectSteal(str_o);
  |  | 1681|     31|            stack_pointer[-oparg] = str;
  |  | 1682|     31|            stack_pointer += 1 - oparg;
  |  | 1683|     31|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     31|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 1684|     31|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     31|    { \
  |  |  |  |  201|     31|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     31|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     31|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     31|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     31|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     31|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     31|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     31|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 31]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     31|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     31|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     31|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     31|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     31|    }
  |  |  ------------------
  |  |  |  Branch (1684:13): [True: 31, False: 0]
  |  |  ------------------
  |  | 1685|     31|        }
  |  | 1686|       |
  |  | 1687|      0|        TARGET(BUILD_TEMPLATE) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 1688|       |            #if _Py_TAIL_CALL_INTERP
  |  | 1689|       |            int opcode = BUILD_TEMPLATE;
  |  | 1690|       |            (void)(opcode);
  |  | 1691|       |            #endif
  |  | 1692|      0|            frame->instr_ptr = next_instr;
  |  | 1693|      0|            next_instr += 1;
  |  | 1694|      0|            INSTRUCTION_STATS(BUILD_TEMPLATE);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 1695|      0|            _PyStackRef strings;
  |  | 1696|      0|            _PyStackRef interpolations;
  |  | 1697|      0|            _PyStackRef template;
  |  | 1698|      0|            interpolations = stack_pointer[-1];
  |  | 1699|      0|            strings = stack_pointer[-2];
  |  | 1700|      0|            PyObject *strings_o = PyStackRef_AsPyObjectBorrow(strings);
  |  | 1701|      0|            PyObject *interpolations_o = PyStackRef_AsPyObjectBorrow(interpolations);
  |  | 1702|      0|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 1703|      0|            PyObject *template_o = _PyTemplate_Build(strings_o, interpolations_o);
  |  | 1704|      0|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 1705|      0|            stack_pointer += -1;
  |  | 1706|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 1707|      0|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 1708|      0|            PyStackRef_CLOSE(interpolations);
  |  | 1709|      0|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 1710|      0|            stack_pointer += -1;
  |  | 1711|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 1712|      0|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 1713|      0|            PyStackRef_CLOSE(strings);
  |  | 1714|      0|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 1715|      0|            if (template_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (1715:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 1716|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 1717|      0|            }
  |  | 1718|      0|            template = PyStackRef_FromPyObjectSteal(template_o);
  |  | 1719|      0|            stack_pointer[0] = template;
  |  | 1720|      0|            stack_pointer += 1;
  |  | 1721|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 1722|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (1722:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1723|      0|        }
  |  | 1724|       |
  |  | 1725|    190|        TARGET(BUILD_TUPLE) {
  |  |  ------------------
  |  |  |  |  132|    190|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 1726|       |            #if _Py_TAIL_CALL_INTERP
  |  | 1727|       |            int opcode = BUILD_TUPLE;
  |  | 1728|       |            (void)(opcode);
  |  | 1729|       |            #endif
  |  | 1730|    190|            frame->instr_ptr = next_instr;
  |  | 1731|    190|            next_instr += 1;
  |  | 1732|    190|            INSTRUCTION_STATS(BUILD_TUPLE);
  |  |  ------------------
  |  |  |  |   71|    190|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 1733|    190|            _PyStackRef *values;
  |  | 1734|    190|            _PyStackRef tup;
  |  | 1735|    190|            values = &stack_pointer[-oparg];
  |  | 1736|    190|            PyObject *tup_o = _PyTuple_FromStackRefStealOnSuccess(values, oparg);
  |  | 1737|    190|            if (tup_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (1737:17): [True: 0, False: 190]
  |  |  ------------------
  |  | 1738|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 1739|      0|            }
  |  | 1740|    190|            tup = PyStackRef_FromPyObjectStealMortal(tup_o);
  |  | 1741|    190|            stack_pointer[-oparg] = tup;
  |  | 1742|    190|            stack_pointer += 1 - oparg;
  |  | 1743|    190|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    190|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 1744|    190|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    190|    { \
  |  |  |  |  201|    190|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    190|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    190|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    190|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    190|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    190|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    190|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    190|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 190]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    190|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    190|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    190|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    190|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    190|    }
  |  |  ------------------
  |  |  |  Branch (1744:13): [True: 190, False: 0]
  |  |  ------------------
  |  | 1745|    190|        }
  |  | 1746|       |
  |  | 1747|      0|        TARGET(CACHE) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 1748|       |            #if _Py_TAIL_CALL_INTERP
  |  | 1749|       |            int opcode = CACHE;
  |  | 1750|       |            (void)(opcode);
  |  | 1751|       |            #endif
  |  | 1752|      0|            frame->instr_ptr = next_instr;
  |  | 1753|      0|            next_instr += 1;
  |  | 1754|      0|            INSTRUCTION_STATS(CACHE);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 1755|      0|            assert(0 && "Executing a cache.");
  |  |  ------------------
  |  |  |  Branch (1755:13): [Folded, False: 0]
  |  |  |  Branch (1755:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1756|      0|            Py_FatalError("Executing a cache.");
  |  |  ------------------
  |  |  |  |  133|      0|#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))
  |  |  ------------------
  |  | 1757|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (1757:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1758|      0|        }
  |  | 1759|       |
  |  | 1760|    962|        TARGET(CALL) {
  |  |  ------------------
  |  |  |  |  132|    962|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 1761|       |            #if _Py_TAIL_CALL_INTERP
  |  | 1762|       |            int opcode = CALL;
  |  | 1763|       |            (void)(opcode);
  |  | 1764|       |            #endif
  |  | 1765|    962|            frame->instr_ptr = next_instr;
  |  | 1766|    962|            next_instr += 4;
  |  | 1767|    962|            INSTRUCTION_STATS(CALL);
  |  |  ------------------
  |  |  |  |   71|    962|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 1768|  1.08k|            PREDICTED_CALL:;
  |  | 1769|  1.08k|            _Py_CODEUNIT* const this_instr = next_instr - 4;
  |  | 1770|  1.08k|            (void)this_instr;
  |  | 1771|  1.08k|            opcode = CALL;
  |  |  ------------------
  |  |  |  |   63|  1.08k|#define CALL                                    50
  |  |  ------------------
  |  | 1772|  1.08k|            _PyStackRef callable;
  |  | 1773|  1.08k|            _PyStackRef self_or_null;
  |  | 1774|  1.08k|            _PyStackRef *args;
  |  | 1775|  1.08k|            _PyStackRef res;
  |  | 1776|       |            // _SPECIALIZE_CALL
  |  | 1777|  1.08k|            {
  |  | 1778|  1.08k|                self_or_null = stack_pointer[-1 - oparg];
  |  | 1779|  1.08k|                callable = stack_pointer[-2 - oparg];
  |  | 1780|  1.08k|                uint16_t counter = read_u16(&this_instr[1].cache);
  |  | 1781|  1.08k|                (void)counter;
  |  | 1782|  1.08k|                #if ENABLE_SPECIALIZATION
  |  | 1783|  1.08k|                if (ADAPTIVE_COUNTER_TRIGGERS(counter)) {
  |  |  ------------------
  |  |  |  |  354|  1.08k|    backoff_counter_triggers(forge_backoff_counter((COUNTER)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (354:5): [True: 204, False: 876]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1784|    204|                    next_instr = this_instr;
  |  | 1785|    204|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 1786|    204|                    _Py_Specialize_Call(callable, self_or_null, next_instr, oparg + !PyStackRef_IsNull(self_or_null));
  |  |  ------------------
  |  |  |  |  470|    204|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|    204|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    204|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1787|    204|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 1788|    204|                    DISPATCH_SAME_OPARG();
  |  |  ------------------
  |  |  |  |  216|    204|    { \
  |  |  |  |  217|    204|        opcode = next_instr->op.code; \
  |  |  |  |  218|    204|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    204|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  219|    204|        DISPATCH_GOTO_NON_TRACING(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  134|    204|#  define DISPATCH_GOTO_NON_TRACING() goto *DISPATCH_TABLE[opcode];
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  130|    204|#  define DISPATCH_TABLE opcode_targets_table
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  220|    204|    }
  |  |  ------------------
  |  | 1789|    204|                }
  |  | 1790|  1.08k|                OPCODE_DEFERRED_INC(CALL);
  |  |  ------------------
  |  |  |  |   90|  1.08k|#define OPCODE_DEFERRED_INC(opname) ((void)0)
  |  |  ------------------
  |  | 1791|  1.08k|                ADVANCE_ADAPTIVE_COUNTER(this_instr[1].counter);
  |  |  ------------------
  |  |  |  |  357|  1.08k|    do { \
  |  |  |  |  358|  1.08k|        (COUNTER) = advance_backoff_counter((COUNTER)); \
  |  |  |  |  359|  1.08k|    } while (0);
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (359:14): [Folded, False: 1.08k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1792|  1.08k|                #endif  /* ENABLE_SPECIALIZATION */
  |  | 1793|  1.08k|            }
  |  | 1794|       |            /* Skip 2 cache entries */
  |  | 1795|       |            // _MAYBE_EXPAND_METHOD
  |  | 1796|  1.08k|            {
  |  | 1797|  1.08k|                if (PyStackRef_TYPE(callable) == &PyMethod_Type && PyStackRef_IsNull(self_or_null)) {
  |  |  ------------------
  |  |  |  |  470|     42|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|     42|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     42|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (470:32): [True: 42, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1797:21): [True: 42, False: 1.03k]
  |  |  ------------------
  |  | 1798|     42|                    PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 1799|     42|                    PyObject *self = ((PyMethodObject *)callable_o)->im_self;
  |  | 1800|     42|                    self_or_null = PyStackRef_FromPyObjectNew(self);
  |  |  ------------------
  |  |  |  |  599|     42|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     42|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     42|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1801|     42|                    PyObject *method = ((PyMethodObject *)callable_o)->im_func;
  |  | 1802|     42|                    _PyStackRef temp = callable;
  |  | 1803|     42|                    callable = PyStackRef_FromPyObjectNew(method);
  |  |  ------------------
  |  |  |  |  599|     42|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     42|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     42|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1804|     42|                    stack_pointer[-2 - oparg] = callable;
  |  | 1805|     42|                    stack_pointer[-1 - oparg] = self_or_null;
  |  | 1806|     42|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 1807|     42|                    PyStackRef_CLOSE(temp);
  |  | 1808|     42|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 1809|     42|                }
  |  | 1810|  1.08k|            }
  |  | 1811|       |            // _DO_CALL
  |  | 1812|  1.08k|            {
  |  | 1813|  1.08k|                args = &stack_pointer[-oparg];
  |  | 1814|  1.08k|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 1815|  1.08k|                int total_args = oparg;
  |  | 1816|  1.08k|                _PyStackRef *arguments = args;
  |  | 1817|  1.08k|                if (!PyStackRef_IsNull(self_or_null)) {
  |  |  ------------------
  |  |  |  |  470|  1.08k|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|  1.08k|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|  1.08k|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1817:21): [True: 367, False: 713]
  |  |  ------------------
  |  | 1818|    367|                    arguments--;
  |  | 1819|    367|                    total_args++;
  |  | 1820|    367|                }
  |  | 1821|  1.08k|                if (Py_TYPE(callable_o) == &PyFunction_Type &&
  |  |  ------------------
  |  |  |  |  213|  1.08k|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|  1.08k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|  1.08k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1821:21): [True: 323, False: 757]
  |  |  ------------------
  |  | 1822|    323|                    !IS_PEP523_HOOKED(tstate) &&
  |  |  ------------------
  |  |  |  |  517|  1.40k|#define IS_PEP523_HOOKED(tstate) (tstate->interp->eval_frame != NULL)
  |  |  ------------------
  |  |  |  Branch (1822:21): [True: 323, False: 0]
  |  |  ------------------
  |  | 1823|    323|                    ((PyFunctionObject *)callable_o)->vectorcall == _PyFunction_Vectorcall)
  |  |  ------------------
  |  |  |  Branch (1823:21): [True: 323, False: 0]
  |  |  ------------------
  |  | 1824|    323|                {
  |  | 1825|    323|                    int code_flags = ((PyCodeObject*)PyFunction_GET_CODE(callable_o))->co_flags;
  |  |  ------------------
  |  |  |  |   93|    323|#define PyFunction_GET_CODE(func) PyFunction_GET_CODE(_PyObject_CAST(func))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    323|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    323|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1826|    323|                    PyObject *locals = code_flags & CO_OPTIMIZED ? NULL : Py_NewRef(PyFunction_GET_GLOBALS(callable_o));
  |  |  ------------------
  |  |  |  |  118|    323|#define CO_OPTIMIZED    0x0001
  |  |  ------------------
  |  |                                   PyObject *locals = code_flags & CO_OPTIMIZED ? NULL : Py_NewRef(PyFunction_GET_GLOBALS(callable_o));
  |  |  ------------------
  |  |  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1826:40): [True: 323, False: 0]
  |  |  ------------------
  |  | 1827|    323|                    stack_pointer[-2 - oparg] = callable;
  |  | 1828|    323|                    stack_pointer[-1 - oparg] = self_or_null;
  |  | 1829|    323|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 1830|    323|                    _PyInterpreterFrame *new_frame = _PyEvalFramePushAndInit(
  |  | 1831|    323|                        tstate, callable, locals,
  |  | 1832|    323|                        arguments, total_args, NULL, frame
  |  | 1833|    323|                    );
  |  | 1834|    323|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 1835|    323|                    stack_pointer += -2 - oparg;
  |  | 1836|    323|                    ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    323|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 1837|    323|                    if (new_frame == NULL) {
  |  |  ------------------
  |  |  |  Branch (1837:25): [True: 0, False: 323]
  |  |  ------------------
  |  | 1838|      0|                        JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 1839|      0|                    }
  |  | 1840|    323|                    frame->return_offset = 4u ;
  |  | 1841|    323|                    DISPATCH_INLINED(new_frame);
  |  |  ------------------
  |  |  |  |  223|    323|    do {                                                         \
  |  |  |  |  224|    323|        assert(!IS_PEP523_HOOKED(tstate));                       \
  |  |  |  |  225|    323|        _PyFrame_SetStackPointer(frame, stack_pointer);          \
  |  |  |  |  226|    323|        assert((NEW_FRAME)->previous == frame);                  \
  |  |  |  |  227|    323|        frame = tstate->current_frame = (NEW_FRAME);             \
  |  |  |  |  228|    323|        CALL_STAT_INC(inlined_py_calls);                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|    323|#define CALL_STAT_INC(name) ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  229|    323|        JUMP_TO_LABEL(start_frame);                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  135|    323|#  define JUMP_TO_LABEL(name) goto name;
  |  |  |  |  ------------------
  |  |  |  |  230|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (230:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1841:21): [True: 323, False: 0]
  |  |  |  Branch (1841:21): [True: 323, False: 0]
  |  |  ------------------
  |  | 1842|    323|                }
  |  | 1843|    757|                stack_pointer[-2 - oparg] = callable;
  |  | 1844|    757|                stack_pointer[-1 - oparg] = self_or_null;
  |  | 1845|    757|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 1846|    757|                PyObject* res_o = _Py_VectorCallInstrumentation_StackRefSteal(
  |  | 1847|    757|                    callable,
  |  | 1848|    757|                    arguments,
  |  | 1849|    757|                    total_args,
  |  | 1850|    757|                    PyStackRef_NULL,
  |  | 1851|    757|                    opcode == INSTRUMENTED_CALL,
  |  |  ------------------
  |  |  |  |  240|    757|#define INSTRUMENTED_CALL                      249
  |  |  ------------------
  |  | 1852|    757|                    frame,
  |  | 1853|    757|                    this_instr,
  |  | 1854|    757|                    tstate);
  |  | 1855|    757|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 1856|    757|                if (res_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (1856:21): [True: 11, False: 746]
  |  |  ------------------
  |  | 1857|     11|                    stack_pointer += -2 - oparg;
  |  | 1858|     11|                    ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     11|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 1859|     11|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|     11|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 1860|      0|                }
  |  | 1861|    746|                res = PyStackRef_FromPyObjectSteal(res_o);
  |  | 1862|    746|            }
  |  | 1863|       |            // _CHECK_PERIODIC_AT_END
  |  | 1864|      0|            {
  |  | 1865|    746|                stack_pointer[-2 - oparg] = res;
  |  | 1866|    746|                stack_pointer += -1 - oparg;
  |  | 1867|    746|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    746|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 1868|    746|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 1869|    746|                int err = check_periodics(tstate);
  |  | 1870|    746|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 1871|    746|                if (err != 0) {
  |  |  ------------------
  |  |  |  Branch (1871:21): [True: 0, False: 746]
  |  |  ------------------
  |  | 1872|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 1873|      0|                }
  |  | 1874|    746|            }
  |  | 1875|    746|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    746|    { \
  |  |  |  |  201|    746|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    746|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    542|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    542|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    542|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    542|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    542|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    542|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 542]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    542|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    542|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    542|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    542|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    542|    }
  |  |  ------------------
  |  |  |  Branch (1875:13): [True: 542, False: 204]
  |  |  ------------------
  |  | 1876|    542|        }
  |  | 1877|       |
  |  | 1878|     74|        TARGET(CALL_ALLOC_AND_ENTER_INIT) {
  |  |  ------------------
  |  |  |  |  132|     74|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 1879|       |            #if _Py_TAIL_CALL_INTERP
  |  | 1880|       |            int opcode = CALL_ALLOC_AND_ENTER_INIT;
  |  | 1881|       |            (void)(opcode);
  |  | 1882|       |            #endif
  |  | 1883|     74|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 1884|     74|            (void)this_instr;
  |  | 1885|     74|            frame->instr_ptr = next_instr;
  |  | 1886|     74|            next_instr += 4;
  |  | 1887|     74|            INSTRUCTION_STATS(CALL_ALLOC_AND_ENTER_INIT);
  |  |  ------------------
  |  |  |  |   71|     74|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 1888|     74|            static_assert(INLINE_CACHE_ENTRIES_CALL == 3, "incorrect cache size");
  |  | 1889|     74|            _PyStackRef callable;
  |  | 1890|     74|            _PyStackRef self_or_null;
  |  | 1891|     74|            _PyStackRef init;
  |  | 1892|     74|            _PyStackRef self;
  |  | 1893|     74|            _PyStackRef *args;
  |  | 1894|     74|            _PyStackRef init_frame;
  |  | 1895|     74|            _PyStackRef new_frame;
  |  | 1896|       |            /* Skip 1 cache entry */
  |  | 1897|       |            // _CHECK_PEP_523
  |  | 1898|     74|            {
  |  | 1899|     74|                if (IS_PEP523_HOOKED(tstate)) {
  |  |  ------------------
  |  |  |  |  517|     74|#define IS_PEP523_HOOKED(tstate) (tstate->interp->eval_frame != NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (517:34): [True: 0, False: 74]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1900|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 1901|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (1901:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 1902|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 1903|      0|                }
  |  | 1904|     74|            }
  |  | 1905|       |            // _CHECK_OBJECT
  |  | 1906|     74|            {
  |  | 1907|     74|                self_or_null = stack_pointer[-1 - oparg];
  |  | 1908|     74|                callable = stack_pointer[-2 - oparg];
  |  | 1909|     74|                uint32_t type_version = read_u32(&this_instr[2].cache);
  |  | 1910|     74|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 1911|     74|                if (!PyStackRef_IsNull(self_or_null)) {
  |  |  ------------------
  |  |  |  |  470|     74|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|     74|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     74|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1911:21): [True: 0, False: 74]
  |  |  ------------------
  |  | 1912|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 1913|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (1913:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 1914|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 1915|      0|                }
  |  | 1916|     74|                if (!PyType_Check(callable_o)) {
  |  |  ------------------
  |  |  |  |  766|     74|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     74|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     74|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (1916:21): [True: 0, False: 74]
  |  |  ------------------
  |  | 1917|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 1918|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (1918:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 1919|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 1920|      0|                }
  |  | 1921|     74|                PyTypeObject *tp = (PyTypeObject *)callable_o;
  |  | 1922|     74|                if (FT_ATOMIC_LOAD_UINT32_RELAXED(tp->tp_version_tag) != type_version) {
  |  |  ------------------
  |  |  |  |  159|     74|#define FT_ATOMIC_LOAD_UINT32_RELAXED(value) value
  |  |  ------------------
  |  |  |  Branch (1922:21): [True: 0, False: 74]
  |  |  ------------------
  |  | 1923|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 1924|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (1924:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 1925|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 1926|      0|                }
  |  | 1927|     74|            }
  |  | 1928|       |            // _CHECK_RECURSION_REMAINING
  |  | 1929|     74|            {
  |  | 1930|     74|                if (tstate->py_recursion_remaining <= 1) {
  |  |  ------------------
  |  |  |  Branch (1930:21): [True: 0, False: 74]
  |  |  ------------------
  |  | 1931|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 1932|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (1932:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 1933|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 1934|      0|                }
  |  | 1935|     74|            }
  |  | 1936|       |            // _ALLOCATE_OBJECT
  |  | 1937|     74|            {
  |  | 1938|     74|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 1939|     74|                assert(PyStackRef_IsNull(self_or_null));
  |  |  ------------------
  |  |  |  Branch (1939:17): [True: 74, False: 0]
  |  |  ------------------
  |  | 1940|     74|                assert(PyType_Check(callable_o));
  |  |  ------------------
  |  |  |  Branch (1940:17): [True: 74, False: 0]
  |  |  ------------------
  |  | 1941|     74|                PyTypeObject *tp = (PyTypeObject *)callable_o;
  |  | 1942|     74|                assert(tp->tp_new == PyBaseObject_Type.tp_new);
  |  |  ------------------
  |  |  |  Branch (1942:17): [True: 74, False: 0]
  |  |  ------------------
  |  | 1943|     74|                assert(tp->tp_flags & Py_TPFLAGS_HEAPTYPE);
  |  |  ------------------
  |  |  |  Branch (1943:17): [True: 74, False: 0]
  |  |  ------------------
  |  | 1944|     74|                assert(tp->tp_alloc == PyType_GenericAlloc);
  |  |  ------------------
  |  |  |  Branch (1944:17): [True: 74, False: 0]
  |  |  ------------------
  |  | 1945|     74|                PyHeapTypeObject *cls = (PyHeapTypeObject *)callable_o;
  |  | 1946|     74|                PyFunctionObject *init_func = (PyFunctionObject *)FT_ATOMIC_LOAD_PTR_ACQUIRE(cls->_spec_cache.init);
  |  |  ------------------
  |  |  |  |  150|     74|#define FT_ATOMIC_LOAD_PTR_ACQUIRE(value) value
  |  |  ------------------
  |  | 1947|     74|                PyCodeObject *code = (PyCodeObject *)init_func->func_code;
  |  | 1948|     74|                if (!_PyThreadState_HasStackSpace(tstate, code->co_framesize + _Py_InitCleanup.co_framesize)) {
  |  |  ------------------
  |  |  |  Branch (1948:21): [True: 0, False: 74]
  |  |  ------------------
  |  | 1949|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 1950|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (1950:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 1951|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 1952|      0|                }
  |  | 1953|     74|                STAT_INC(CALL, hit);
  |  |  ------------------
  |  |  |  |   73|     74|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 1954|     74|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 1955|     74|                PyObject *self_o = PyType_GenericAlloc(tp, 0);
  |  | 1956|     74|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 1957|     74|                if (self_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (1957:21): [True: 0, False: 74]
  |  |  ------------------
  |  | 1958|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 1959|      0|                }
  |  | 1960|     74|                self_or_null = PyStackRef_FromPyObjectSteal(self_o);
  |  | 1961|     74|                _PyStackRef temp = callable;
  |  | 1962|     74|                callable = PyStackRef_FromPyObjectNew(init_func);
  |  |  ------------------
  |  |  |  |  599|     74|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     74|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     74|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1963|     74|                stack_pointer[-2 - oparg] = callable;
  |  | 1964|     74|                stack_pointer[-1 - oparg] = self_or_null;
  |  | 1965|     74|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 1966|     74|                PyStackRef_CLOSE(temp);
  |  | 1967|     74|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 1968|     74|            }
  |  | 1969|       |            // _CREATE_INIT_FRAME
  |  | 1970|      0|            {
  |  | 1971|     74|                args = &stack_pointer[-oparg];
  |  | 1972|     74|                self = self_or_null;
  |  | 1973|     74|                init = callable;
  |  | 1974|     74|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 1975|     74|                _PyInterpreterFrame *shim = _PyFrame_PushTrampolineUnchecked(
  |  | 1976|     74|                    tstate, (PyCodeObject *)&_Py_InitCleanup, 1, frame);
  |  | 1977|     74|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 1978|     74|                assert(_PyFrame_GetBytecode(shim)[0].op.code == EXIT_INIT_CHECK);
  |  |  ------------------
  |  |  |  Branch (1978:17): [True: 74, False: 0]
  |  |  ------------------
  |  | 1979|     74|                assert(_PyFrame_GetBytecode(shim)[1].op.code == RETURN_VALUE);
  |  |  ------------------
  |  |  |  Branch (1979:17): [True: 74, False: 0]
  |  |  ------------------
  |  | 1980|     74|                shim->localsplus[0] = PyStackRef_DUP(self);
  |  | 1981|     74|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 1982|     74|                _PyInterpreterFrame *temp = _PyEvalFramePushAndInit(
  |  | 1983|     74|                    tstate, init, NULL, args-1, oparg+1, NULL, shim);
  |  | 1984|     74|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 1985|     74|                stack_pointer += -2 - oparg;
  |  | 1986|     74|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     74|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 1987|     74|                if (temp == NULL) {
  |  |  ------------------
  |  |  |  Branch (1987:21): [True: 0, False: 74]
  |  |  ------------------
  |  | 1988|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 1989|      0|                    _PyEval_FrameClearAndPop(tstate, shim);
  |  | 1990|      0|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 1991|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 1992|      0|                }
  |  | 1993|     74|                frame->return_offset = 1 + INLINE_CACHE_ENTRIES_CALL;
  |  |  ------------------
  |  |  |  |  129|     74|#define INLINE_CACHE_ENTRIES_CALL CACHE_ENTRIES(_PyCallCache)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|     74|#define CACHE_ENTRIES(cache) (sizeof(cache)/sizeof(_Py_CODEUNIT))
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1994|     74|                tstate->py_recursion_remaining--;
  |  | 1995|     74|                init_frame = PyStackRef_Wrap(temp);
  |  | 1996|     74|            }
  |  | 1997|       |            // _PUSH_FRAME
  |  | 1998|      0|            {
  |  | 1999|     74|                new_frame = init_frame;
  |  | 2000|     74|                assert(!IS_PEP523_HOOKED(tstate));
  |  |  ------------------
  |  |  |  Branch (2000:17): [True: 74, False: 0]
  |  |  ------------------
  |  | 2001|     74|                _PyInterpreterFrame *temp = PyStackRef_Unwrap(new_frame);
  |  | 2002|     74|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2003|     74|                assert(temp->previous == frame || temp->previous->previous == frame);
  |  |  ------------------
  |  |  |  Branch (2003:17): [True: 0, False: 74]
  |  |  |  Branch (2003:17): [True: 74, False: 0]
  |  |  ------------------
  |  | 2004|     74|                CALL_STAT_INC(inlined_py_calls);
  |  |  ------------------
  |  |  |  |   76|     74|#define CALL_STAT_INC(name) ((void)0)
  |  |  ------------------
  |  | 2005|     74|                frame = tstate->current_frame = temp;
  |  | 2006|     74|                tstate->py_recursion_remaining--;
  |  | 2007|     74|                LOAD_SP();
  |  |  ------------------
  |  |  |  |  425|     74|#define LOAD_SP() \
  |  |  |  |  426|     74|stack_pointer = _PyFrame_GetStackPointer(frame)
  |  |  ------------------
  |  | 2008|     74|                LOAD_IP(0);
  |  |  ------------------
  |  |  |  |  419|     74|#define LOAD_IP(OFFSET) do { \
  |  |  |  |  420|     74|        next_instr = frame->instr_ptr + (OFFSET); \
  |  |  |  |  421|     74|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:14): [Folded, False: 74]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2009|     74|                DTRACE_FUNCTION_ENTRY();
  |  |  ------------------
  |  |  |  |  345|     74|#define DTRACE_FUNCTION_ENTRY() ((void)0)
  |  |  ------------------
  |  | 2010|     74|                LLTRACE_RESUME_FRAME();
  |  |  ------------------
  |  |  |  |  188|     74|#define LLTRACE_RESUME_FRAME() ((void)0)
  |  |  ------------------
  |  | 2011|     74|            }
  |  | 2012|     74|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     74|    { \
  |  |  |  |  201|     74|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     74|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     74|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     74|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     74|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     74|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     74|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     74|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 74]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     74|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     74|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     74|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     74|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     74|    }
  |  |  ------------------
  |  |  |  Branch (2012:13): [True: 74, False: 0]
  |  |  ------------------
  |  | 2013|     74|        }
  |  | 2014|       |
  |  | 2015|     72|        TARGET(CALL_BOUND_METHOD_EXACT_ARGS) {
  |  |  ------------------
  |  |  |  |  132|     72|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 2016|       |            #if _Py_TAIL_CALL_INTERP
  |  | 2017|       |            int opcode = CALL_BOUND_METHOD_EXACT_ARGS;
  |  | 2018|       |            (void)(opcode);
  |  | 2019|       |            #endif
  |  | 2020|     72|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 2021|     72|            (void)this_instr;
  |  | 2022|     72|            frame->instr_ptr = next_instr;
  |  | 2023|     72|            next_instr += 4;
  |  | 2024|     72|            INSTRUCTION_STATS(CALL_BOUND_METHOD_EXACT_ARGS);
  |  |  ------------------
  |  |  |  |   71|     72|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 2025|     72|            static_assert(INLINE_CACHE_ENTRIES_CALL == 3, "incorrect cache size");
  |  | 2026|     72|            _PyStackRef callable;
  |  | 2027|     72|            _PyStackRef null;
  |  | 2028|     72|            _PyStackRef self_or_null;
  |  | 2029|     72|            _PyStackRef *args;
  |  | 2030|     72|            _PyStackRef new_frame;
  |  | 2031|       |            /* Skip 1 cache entry */
  |  | 2032|       |            // _CHECK_PEP_523
  |  | 2033|     72|            {
  |  | 2034|     72|                if (IS_PEP523_HOOKED(tstate)) {
  |  |  ------------------
  |  |  |  |  517|     72|#define IS_PEP523_HOOKED(tstate) (tstate->interp->eval_frame != NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (517:34): [True: 0, False: 72]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2035|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 2036|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (2036:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 2037|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 2038|      0|                }
  |  | 2039|     72|            }
  |  | 2040|       |            // _CHECK_CALL_BOUND_METHOD_EXACT_ARGS
  |  | 2041|     72|            {
  |  | 2042|     72|                null = stack_pointer[-1 - oparg];
  |  | 2043|     72|                callable = stack_pointer[-2 - oparg];
  |  | 2044|     72|                if (!PyStackRef_IsNull(null)) {
  |  |  ------------------
  |  |  |  |  470|     72|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|     72|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     72|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (2044:21): [True: 0, False: 72]
  |  |  ------------------
  |  | 2045|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 2046|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (2046:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 2047|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 2048|      0|                }
  |  | 2049|     72|                if (Py_TYPE(PyStackRef_AsPyObjectBorrow(callable)) != &PyMethod_Type) {
  |  |  ------------------
  |  |  |  |  213|     72|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     72|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     72|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (2049:21): [True: 0, False: 72]
  |  |  ------------------
  |  | 2050|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 2051|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (2051:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 2052|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 2053|      0|                }
  |  | 2054|     72|            }
  |  | 2055|       |            // _INIT_CALL_BOUND_METHOD_EXACT_ARGS
  |  | 2056|     72|            {
  |  | 2057|     72|                self_or_null = null;
  |  | 2058|     72|                assert(PyStackRef_IsNull(self_or_null));
  |  |  ------------------
  |  |  |  Branch (2058:17): [True: 72, False: 0]
  |  |  ------------------
  |  | 2059|     72|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 2060|     72|                STAT_INC(CALL, hit);
  |  |  ------------------
  |  |  |  |   73|     72|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 2061|     72|                self_or_null = PyStackRef_FromPyObjectNew(((PyMethodObject *)callable_o)->im_self);
  |  |  ------------------
  |  |  |  |  599|     72|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     72|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     72|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2062|     72|                _PyStackRef temp = callable;
  |  | 2063|     72|                callable = PyStackRef_FromPyObjectNew(((PyMethodObject *)callable_o)->im_func);
  |  |  ------------------
  |  |  |  |  599|     72|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     72|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     72|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2064|     72|                stack_pointer[-2 - oparg] = callable;
  |  | 2065|     72|                stack_pointer[-1 - oparg] = self_or_null;
  |  | 2066|     72|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2067|     72|                PyStackRef_CLOSE(temp);
  |  | 2068|     72|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2069|     72|            }
  |  | 2070|       |            // flush
  |  | 2071|       |            // _CHECK_FUNCTION_VERSION
  |  | 2072|      0|            {
  |  | 2073|     72|                uint32_t func_version = read_u32(&this_instr[2].cache);
  |  | 2074|     72|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 2075|     72|                if (!PyFunction_Check(callable_o)) {
  |  |  ------------------
  |  |  |  |   68|     72|#define PyFunction_Check(op) Py_IS_TYPE((op), &PyFunction_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|     72|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|     72|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     72|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (2075:21): [True: 0, False: 72]
  |  |  ------------------
  |  | 2076|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 2077|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (2077:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 2078|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 2079|      0|                }
  |  | 2080|     72|                PyFunctionObject *func = (PyFunctionObject *)callable_o;
  |  | 2081|     72|                if (func->func_version != func_version) {
  |  |  ------------------
  |  |  |  Branch (2081:21): [True: 25, False: 47]
  |  |  ------------------
  |  | 2082|     25|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|     25|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 2083|     25|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (2083:21): [True: 25, False: 0]
  |  |  ------------------
  |  | 2084|     25|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|     25|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 2085|      0|                }
  |  | 2086|     72|            }
  |  | 2087|       |            // _CHECK_FUNCTION_EXACT_ARGS
  |  | 2088|     47|            {
  |  | 2089|     47|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 2090|     47|                assert(PyFunction_Check(callable_o));
  |  |  ------------------
  |  |  |  Branch (2090:17): [True: 47, False: 0]
  |  |  ------------------
  |  | 2091|     47|                PyFunctionObject *func = (PyFunctionObject *)callable_o;
  |  | 2092|     47|                PyCodeObject *code = (PyCodeObject *)func->func_code;
  |  | 2093|     47|                if (code->co_argcount != oparg + (!PyStackRef_IsNull(self_or_null))) {
  |  |  ------------------
  |  |  |  |  470|     47|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|     47|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     47|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (2093:21): [True: 0, False: 47]
  |  |  ------------------
  |  | 2094|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 2095|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (2095:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 2096|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 2097|      0|                }
  |  | 2098|     47|            }
  |  | 2099|       |            // _CHECK_STACK_SPACE
  |  | 2100|     47|            {
  |  | 2101|     47|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 2102|     47|                PyFunctionObject *func = (PyFunctionObject *)callable_o;
  |  | 2103|     47|                PyCodeObject *code = (PyCodeObject *)func->func_code;
  |  | 2104|     47|                if (!_PyThreadState_HasStackSpace(tstate, code->co_framesize)) {
  |  |  ------------------
  |  |  |  Branch (2104:21): [True: 0, False: 47]
  |  |  ------------------
  |  | 2105|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 2106|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (2106:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 2107|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 2108|      0|                }
  |  | 2109|     47|            }
  |  | 2110|       |            // _CHECK_RECURSION_REMAINING
  |  | 2111|     47|            {
  |  | 2112|     47|                if (tstate->py_recursion_remaining <= 1) {
  |  |  ------------------
  |  |  |  Branch (2112:21): [True: 0, False: 47]
  |  |  ------------------
  |  | 2113|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 2114|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (2114:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 2115|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 2116|      0|                }
  |  | 2117|     47|            }
  |  | 2118|       |            // _INIT_CALL_PY_EXACT_ARGS
  |  | 2119|     47|            {
  |  | 2120|     47|                args = &stack_pointer[-oparg];
  |  | 2121|     47|                int has_self = !PyStackRef_IsNull(self_or_null);
  |  |  ------------------
  |  |  |  |  470|     47|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|     47|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     47|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2122|     47|                STAT_INC(CALL, hit);
  |  |  ------------------
  |  |  |  |   73|     47|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 2123|     47|                _PyInterpreterFrame *pushed_frame = _PyFrame_PushUnchecked(tstate, callable, oparg + has_self, frame);
  |  | 2124|     47|                _PyStackRef *first_non_self_local = pushed_frame->localsplus + has_self;
  |  | 2125|     47|                pushed_frame->localsplus[0] = self_or_null;
  |  | 2126|    154|                for (int i = 0; i < oparg; i++) {
  |  |  ------------------
  |  |  |  Branch (2126:33): [True: 107, False: 47]
  |  |  ------------------
  |  | 2127|    107|                    first_non_self_local[i] = args[i];
  |  | 2128|    107|                }
  |  | 2129|     47|                new_frame = PyStackRef_Wrap(pushed_frame);
  |  | 2130|     47|            }
  |  | 2131|       |            // _SAVE_RETURN_OFFSET
  |  | 2132|     47|            {
  |  | 2133|     47|                #if TIER_ONE
  |  | 2134|     47|                frame->return_offset = (uint16_t)(next_instr - this_instr);
  |  | 2135|     47|                #endif
  |  | 2136|       |                #if TIER_TWO
  |  | 2137|       |                frame->return_offset = oparg;
  |  | 2138|       |                #endif
  |  | 2139|     47|            }
  |  | 2140|       |            // _PUSH_FRAME
  |  | 2141|     47|            {
  |  | 2142|     47|                assert(!IS_PEP523_HOOKED(tstate));
  |  |  ------------------
  |  |  |  Branch (2142:17): [True: 47, False: 0]
  |  |  ------------------
  |  | 2143|     47|                _PyInterpreterFrame *temp = PyStackRef_Unwrap(new_frame);
  |  | 2144|     47|                stack_pointer += -2 - oparg;
  |  | 2145|     47|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     47|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 2146|     47|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2147|     47|                assert(temp->previous == frame || temp->previous->previous == frame);
  |  |  ------------------
  |  |  |  Branch (2147:17): [True: 47, False: 0]
  |  |  |  Branch (2147:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 2148|     47|                CALL_STAT_INC(inlined_py_calls);
  |  |  ------------------
  |  |  |  |   76|     47|#define CALL_STAT_INC(name) ((void)0)
  |  |  ------------------
  |  | 2149|     47|                frame = tstate->current_frame = temp;
  |  | 2150|     47|                tstate->py_recursion_remaining--;
  |  | 2151|     47|                LOAD_SP();
  |  |  ------------------
  |  |  |  |  425|     47|#define LOAD_SP() \
  |  |  |  |  426|     47|stack_pointer = _PyFrame_GetStackPointer(frame)
  |  |  ------------------
  |  | 2152|     47|                LOAD_IP(0);
  |  |  ------------------
  |  |  |  |  419|     47|#define LOAD_IP(OFFSET) do { \
  |  |  |  |  420|     47|        next_instr = frame->instr_ptr + (OFFSET); \
  |  |  |  |  421|     47|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:14): [Folded, False: 47]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2153|     47|                DTRACE_FUNCTION_ENTRY();
  |  |  ------------------
  |  |  |  |  345|     47|#define DTRACE_FUNCTION_ENTRY() ((void)0)
  |  |  ------------------
  |  | 2154|     47|                LLTRACE_RESUME_FRAME();
  |  |  ------------------
  |  |  |  |  188|     47|#define LLTRACE_RESUME_FRAME() ((void)0)
  |  |  ------------------
  |  | 2155|     47|            }
  |  | 2156|     47|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     47|    { \
  |  |  |  |  201|     47|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     47|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     47|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     47|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     47|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     47|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     47|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     47|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 47]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     47|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     47|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     47|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     47|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     47|    }
  |  |  ------------------
  |  |  |  Branch (2156:13): [True: 47, False: 0]
  |  |  ------------------
  |  | 2157|     47|        }
  |  | 2158|       |
  |  | 2159|      2|        TARGET(CALL_BOUND_METHOD_GENERAL) {
  |  |  ------------------
  |  |  |  |  132|      2|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 2160|       |            #if _Py_TAIL_CALL_INTERP
  |  | 2161|       |            int opcode = CALL_BOUND_METHOD_GENERAL;
  |  | 2162|       |            (void)(opcode);
  |  | 2163|       |            #endif
  |  | 2164|      2|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 2165|      2|            (void)this_instr;
  |  | 2166|      2|            frame->instr_ptr = next_instr;
  |  | 2167|      2|            next_instr += 4;
  |  | 2168|      2|            INSTRUCTION_STATS(CALL_BOUND_METHOD_GENERAL);
  |  |  ------------------
  |  |  |  |   71|      2|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 2169|      2|            static_assert(INLINE_CACHE_ENTRIES_CALL == 3, "incorrect cache size");
  |  | 2170|      2|            _PyStackRef callable;
  |  | 2171|      2|            _PyStackRef null;
  |  | 2172|      2|            _PyStackRef self_or_null;
  |  | 2173|      2|            _PyStackRef *args;
  |  | 2174|      2|            _PyStackRef new_frame;
  |  | 2175|       |            /* Skip 1 cache entry */
  |  | 2176|       |            // _CHECK_PEP_523
  |  | 2177|      2|            {
  |  | 2178|      2|                if (IS_PEP523_HOOKED(tstate)) {
  |  |  ------------------
  |  |  |  |  517|      2|#define IS_PEP523_HOOKED(tstate) (tstate->interp->eval_frame != NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (517:34): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2179|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 2180|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (2180:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 2181|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 2182|      0|                }
  |  | 2183|      2|            }
  |  | 2184|       |            // _CHECK_METHOD_VERSION
  |  | 2185|      2|            {
  |  | 2186|      2|                null = stack_pointer[-1 - oparg];
  |  | 2187|      2|                callable = stack_pointer[-2 - oparg];
  |  | 2188|      2|                uint32_t func_version = read_u32(&this_instr[2].cache);
  |  | 2189|      2|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 2190|      2|                if (Py_TYPE(callable_o) != &PyMethod_Type) {
  |  |  ------------------
  |  |  |  |  213|      2|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (2190:21): [True: 0, False: 2]
  |  |  ------------------
  |  | 2191|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 2192|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (2192:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 2193|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 2194|      0|                }
  |  | 2195|      2|                PyObject *func = ((PyMethodObject *)callable_o)->im_func;
  |  | 2196|      2|                if (!PyFunction_Check(func)) {
  |  |  ------------------
  |  |  |  |   68|      2|#define PyFunction_Check(op) Py_IS_TYPE((op), &PyFunction_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      2|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (2196:21): [True: 0, False: 2]
  |  |  ------------------
  |  | 2197|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 2198|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (2198:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 2199|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 2200|      0|                }
  |  | 2201|      2|                if (((PyFunctionObject *)func)->func_version != func_version) {
  |  |  ------------------
  |  |  |  Branch (2201:21): [True: 0, False: 2]
  |  |  ------------------
  |  | 2202|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 2203|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (2203:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 2204|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 2205|      0|                }
  |  | 2206|      2|                if (!PyStackRef_IsNull(null)) {
  |  |  ------------------
  |  |  |  |  470|      2|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|      2|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      2|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (2206:21): [True: 0, False: 2]
  |  |  ------------------
  |  | 2207|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 2208|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (2208:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 2209|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 2210|      0|                }
  |  | 2211|      2|            }
  |  | 2212|       |            // _EXPAND_METHOD
  |  | 2213|      2|            {
  |  | 2214|      2|                self_or_null = null;
  |  | 2215|      2|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 2216|      2|                assert(PyStackRef_IsNull(self_or_null));
  |  |  ------------------
  |  |  |  Branch (2216:17): [True: 2, False: 0]
  |  |  ------------------
  |  | 2217|      2|                assert(Py_TYPE(callable_o) == &PyMethod_Type);
  |  |  ------------------
  |  |  |  Branch (2217:17): [True: 2, False: 0]
  |  |  ------------------
  |  | 2218|      2|                self_or_null = PyStackRef_FromPyObjectNew(((PyMethodObject *)callable_o)->im_self);
  |  |  ------------------
  |  |  |  |  599|      2|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2219|      2|                _PyStackRef temp = callable;
  |  | 2220|      2|                callable = PyStackRef_FromPyObjectNew(((PyMethodObject *)callable_o)->im_func);
  |  |  ------------------
  |  |  |  |  599|      2|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2221|      2|                assert(PyStackRef_FunctionCheck(callable));
  |  |  ------------------
  |  |  |  Branch (2221:17): [True: 2, False: 0]
  |  |  ------------------
  |  | 2222|      2|                stack_pointer[-2 - oparg] = callable;
  |  | 2223|      2|                stack_pointer[-1 - oparg] = self_or_null;
  |  | 2224|      2|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2225|      2|                PyStackRef_CLOSE(temp);
  |  | 2226|      2|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2227|      2|            }
  |  | 2228|       |            // flush
  |  | 2229|       |            // _CHECK_RECURSION_REMAINING
  |  | 2230|      0|            {
  |  | 2231|      2|                if (tstate->py_recursion_remaining <= 1) {
  |  |  ------------------
  |  |  |  Branch (2231:21): [True: 0, False: 2]
  |  |  ------------------
  |  | 2232|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 2233|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (2233:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 2234|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 2235|      0|                }
  |  | 2236|      2|            }
  |  | 2237|       |            // _PY_FRAME_GENERAL
  |  | 2238|      2|            {
  |  | 2239|      2|                args = &stack_pointer[-oparg];
  |  | 2240|      2|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 2241|      2|                int total_args = oparg;
  |  | 2242|      2|                if (!PyStackRef_IsNull(self_or_null)) {
  |  |  ------------------
  |  |  |  |  470|      2|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|      2|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      2|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (2242:21): [True: 2, False: 0]
  |  |  ------------------
  |  | 2243|      2|                    args--;
  |  | 2244|      2|                    total_args++;
  |  | 2245|      2|                }
  |  | 2246|      2|                assert(Py_TYPE(callable_o) == &PyFunction_Type);
  |  |  ------------------
  |  |  |  Branch (2246:17): [True: 2, False: 0]
  |  |  ------------------
  |  | 2247|      2|                int code_flags = ((PyCodeObject*)PyFunction_GET_CODE(callable_o))->co_flags;
  |  |  ------------------
  |  |  |  |   93|      2|#define PyFunction_GET_CODE(func) PyFunction_GET_CODE(_PyObject_CAST(func))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2248|      2|                PyObject *locals = code_flags & CO_OPTIMIZED ? NULL : Py_NewRef(PyFunction_GET_GLOBALS(callable_o));
  |  |  ------------------
  |  |  |  |  118|      2|#define CO_OPTIMIZED    0x0001
  |  |  ------------------
  |  |                               PyObject *locals = code_flags & CO_OPTIMIZED ? NULL : Py_NewRef(PyFunction_GET_GLOBALS(callable_o));
  |  |  ------------------
  |  |  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (2248:36): [True: 2, False: 0]
  |  |  ------------------
  |  | 2249|      2|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2250|      2|                _PyInterpreterFrame *temp = _PyEvalFramePushAndInit(
  |  | 2251|      2|                    tstate, callable, locals,
  |  | 2252|      2|                    args, total_args, NULL, frame
  |  | 2253|      2|                );
  |  | 2254|      2|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2255|      2|                stack_pointer += -2 - oparg;
  |  | 2256|      2|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      2|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 2257|      2|                if (temp == NULL) {
  |  |  ------------------
  |  |  |  Branch (2257:21): [True: 0, False: 2]
  |  |  ------------------
  |  | 2258|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 2259|      0|                }
  |  | 2260|      2|                new_frame = PyStackRef_Wrap(temp);
  |  | 2261|      2|            }
  |  | 2262|       |            // _SAVE_RETURN_OFFSET
  |  | 2263|      0|            {
  |  | 2264|      2|                #if TIER_ONE
  |  | 2265|      2|                frame->return_offset = (uint16_t)(next_instr - this_instr);
  |  | 2266|      2|                #endif
  |  | 2267|       |                #if TIER_TWO
  |  | 2268|       |                frame->return_offset = oparg;
  |  | 2269|       |                #endif
  |  | 2270|      2|            }
  |  | 2271|       |            // _PUSH_FRAME
  |  | 2272|      2|            {
  |  | 2273|      2|                assert(!IS_PEP523_HOOKED(tstate));
  |  |  ------------------
  |  |  |  Branch (2273:17): [True: 2, False: 0]
  |  |  ------------------
  |  | 2274|      2|                _PyInterpreterFrame *temp = PyStackRef_Unwrap(new_frame);
  |  | 2275|      2|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2276|      2|                assert(temp->previous == frame || temp->previous->previous == frame);
  |  |  ------------------
  |  |  |  Branch (2276:17): [True: 2, False: 0]
  |  |  |  Branch (2276:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 2277|      2|                CALL_STAT_INC(inlined_py_calls);
  |  |  ------------------
  |  |  |  |   76|      2|#define CALL_STAT_INC(name) ((void)0)
  |  |  ------------------
  |  | 2278|      2|                frame = tstate->current_frame = temp;
  |  | 2279|      2|                tstate->py_recursion_remaining--;
  |  | 2280|      2|                LOAD_SP();
  |  |  ------------------
  |  |  |  |  425|      2|#define LOAD_SP() \
  |  |  |  |  426|      2|stack_pointer = _PyFrame_GetStackPointer(frame)
  |  |  ------------------
  |  | 2281|      2|                LOAD_IP(0);
  |  |  ------------------
  |  |  |  |  419|      2|#define LOAD_IP(OFFSET) do { \
  |  |  |  |  420|      2|        next_instr = frame->instr_ptr + (OFFSET); \
  |  |  |  |  421|      2|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:14): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2282|      2|                DTRACE_FUNCTION_ENTRY();
  |  |  ------------------
  |  |  |  |  345|      2|#define DTRACE_FUNCTION_ENTRY() ((void)0)
  |  |  ------------------
  |  | 2283|      2|                LLTRACE_RESUME_FRAME();
  |  |  ------------------
  |  |  |  |  188|      2|#define LLTRACE_RESUME_FRAME() ((void)0)
  |  |  ------------------
  |  | 2284|      2|            }
  |  | 2285|      2|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      2|    { \
  |  |  |  |  201|      2|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      2|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      2|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      2|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      2|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      2|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      2|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      2|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      2|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      2|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      2|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      2|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      2|    }
  |  |  ------------------
  |  |  |  Branch (2285:13): [True: 2, False: 0]
  |  |  ------------------
  |  | 2286|      2|        }
  |  | 2287|       |
  |  | 2288|     31|        TARGET(CALL_BUILTIN_CLASS) {
  |  |  ------------------
  |  |  |  |  132|     31|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 2289|       |            #if _Py_TAIL_CALL_INTERP
  |  | 2290|       |            int opcode = CALL_BUILTIN_CLASS;
  |  | 2291|       |            (void)(opcode);
  |  | 2292|       |            #endif
  |  | 2293|     31|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 2294|     31|            (void)this_instr;
  |  | 2295|     31|            frame->instr_ptr = next_instr;
  |  | 2296|     31|            next_instr += 4;
  |  | 2297|     31|            INSTRUCTION_STATS(CALL_BUILTIN_CLASS);
  |  |  ------------------
  |  |  |  |   71|     31|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 2298|     31|            static_assert(INLINE_CACHE_ENTRIES_CALL == 3, "incorrect cache size");
  |  | 2299|     31|            _PyStackRef callable;
  |  | 2300|     31|            _PyStackRef self_or_null;
  |  | 2301|     31|            _PyStackRef *args;
  |  | 2302|     31|            _PyStackRef value;
  |  | 2303|       |            /* Skip 1 cache entry */
  |  | 2304|       |            /* Skip 2 cache entries */
  |  | 2305|       |            // _GUARD_CALLABLE_BUILTIN_CLASS
  |  | 2306|     31|            {
  |  | 2307|     31|                callable = stack_pointer[-2 - oparg];
  |  | 2308|     31|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 2309|     31|                if (!PyType_Check(callable_o)) {
  |  |  ------------------
  |  |  |  |  766|     31|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     31|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     31|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (2309:21): [True: 0, False: 31]
  |  |  ------------------
  |  | 2310|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 2311|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (2311:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 2312|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 2313|      0|                }
  |  | 2314|     31|                PyTypeObject *tp = (PyTypeObject *)callable_o;
  |  | 2315|     31|                if (tp->tp_vectorcall == NULL) {
  |  |  ------------------
  |  |  |  Branch (2315:21): [True: 0, False: 31]
  |  |  ------------------
  |  | 2316|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 2317|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (2317:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 2318|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 2319|      0|                }
  |  | 2320|     31|            }
  |  | 2321|       |            // _CALL_BUILTIN_CLASS
  |  | 2322|     31|            {
  |  | 2323|     31|                args = &stack_pointer[-oparg];
  |  | 2324|     31|                self_or_null = stack_pointer[-1 - oparg];
  |  | 2325|     31|                int total_args = oparg;
  |  | 2326|     31|                _PyStackRef *arguments = args;
  |  | 2327|     31|                if (!PyStackRef_IsNull(self_or_null)) {
  |  |  ------------------
  |  |  |  |  470|     31|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|     31|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     31|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (2327:21): [True: 0, False: 31]
  |  |  ------------------
  |  | 2328|      0|                    arguments--;
  |  | 2329|      0|                    total_args++;
  |  | 2330|      0|                }
  |  | 2331|     31|                STAT_INC(CALL, hit);
  |  |  ------------------
  |  |  |  |   73|     31|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 2332|     31|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2333|     31|                PyObject *res_o = _Py_CallBuiltinClass_StackRef(
  |  | 2334|     31|                    callable,
  |  | 2335|     31|                    arguments,
  |  | 2336|     31|                    total_args);
  |  | 2337|     31|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2338|     31|                if (res_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (2338:21): [True: 0, False: 31]
  |  |  ------------------
  |  | 2339|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 2340|      0|                }
  |  | 2341|     31|                _PyStackRef temp = callable;
  |  | 2342|     31|                callable = PyStackRef_FromPyObjectSteal(res_o);
  |  | 2343|     31|                stack_pointer[-2 - oparg] = callable;
  |  | 2344|     31|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2345|     31|                PyStackRef_CLOSE(temp);
  |  | 2346|     31|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2347|     31|            }
  |  | 2348|       |            // _POP_TOP_OPARG
  |  | 2349|      0|            {
  |  | 2350|     31|                args = &stack_pointer[-oparg];
  |  | 2351|     31|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2352|     31|                _PyStackRef_CloseStack(args, oparg);
  |  | 2353|     31|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2354|     31|            }
  |  | 2355|       |            // _POP_TOP
  |  | 2356|     31|            {
  |  | 2357|     31|                value = self_or_null;
  |  | 2358|     31|                stack_pointer += -1 - oparg;
  |  | 2359|     31|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     31|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 2360|     31|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2361|     31|                PyStackRef_XCLOSE(value);
  |  | 2362|     31|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2363|     31|            }
  |  | 2364|       |            // _CHECK_PERIODIC_AT_END
  |  | 2365|     31|            {
  |  | 2366|     31|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2367|     31|                int err = check_periodics(tstate);
  |  | 2368|     31|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2369|     31|                if (err != 0) {
  |  |  ------------------
  |  |  |  Branch (2369:21): [True: 0, False: 31]
  |  |  ------------------
  |  | 2370|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 2371|      0|                }
  |  | 2372|     31|            }
  |  | 2373|     31|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     31|    { \
  |  |  |  |  201|     31|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     31|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     31|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     31|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     31|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     31|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     31|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     31|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 31]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     31|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     31|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     31|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     31|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     31|    }
  |  |  ------------------
  |  |  |  Branch (2373:13): [True: 31, False: 0]
  |  |  ------------------
  |  | 2374|     31|        }
  |  | 2375|       |
  |  | 2376|    479|        TARGET(CALL_BUILTIN_FAST) {
  |  |  ------------------
  |  |  |  |  132|    479|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 2377|       |            #if _Py_TAIL_CALL_INTERP
  |  | 2378|       |            int opcode = CALL_BUILTIN_FAST;
  |  | 2379|       |            (void)(opcode);
  |  | 2380|       |            #endif
  |  | 2381|    479|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 2382|    479|            (void)this_instr;
  |  | 2383|    479|            frame->instr_ptr = next_instr;
  |  | 2384|    479|            next_instr += 4;
  |  | 2385|    479|            INSTRUCTION_STATS(CALL_BUILTIN_FAST);
  |  |  ------------------
  |  |  |  |   71|    479|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 2386|    479|            static_assert(INLINE_CACHE_ENTRIES_CALL == 3, "incorrect cache size");
  |  | 2387|    479|            _PyStackRef callable;
  |  | 2388|    479|            _PyStackRef self_or_null;
  |  | 2389|    479|            _PyStackRef *args;
  |  | 2390|    479|            _PyStackRef value;
  |  | 2391|       |            /* Skip 1 cache entry */
  |  | 2392|       |            /* Skip 2 cache entries */
  |  | 2393|       |            // _GUARD_CALLABLE_BUILTIN_FAST
  |  | 2394|    479|            {
  |  | 2395|    479|                callable = stack_pointer[-2 - oparg];
  |  | 2396|    479|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 2397|    479|                if (!PyCFunction_CheckExact(callable_o)) {
  |  |  ------------------
  |  |  |  |   16|    479|#define PyCFunction_CheckExact(op) Py_IS_TYPE((op), &PyCFunction_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|    479|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|    479|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|    479|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (2397:21): [True: 0, False: 479]
  |  |  ------------------
  |  | 2398|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 2399|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (2399:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 2400|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 2401|      0|                }
  |  | 2402|    479|                if (PyCFunction_GET_FLAGS(callable_o) != METH_FASTCALL) {
  |  |  ------------------
  |  |  |  |   57|    479|#define PyCFunction_GET_FLAGS(func) PyCFunction_GET_FLAGS(_PyObject_CAST(func))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    479|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    479|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                               if (PyCFunction_GET_FLAGS(callable_o) != METH_FASTCALL) {
  |  |  ------------------
  |  |  |  |  115|    479|#  define METH_FASTCALL  0x0080
  |  |  ------------------
  |  |  |  Branch (2402:21): [True: 0, False: 479]
  |  |  ------------------
  |  | 2403|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 2404|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (2404:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 2405|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 2406|      0|                }
  |  | 2407|    479|            }
  |  | 2408|       |            // _CALL_BUILTIN_FAST
  |  | 2409|    479|            {
  |  | 2410|    479|                args = &stack_pointer[-oparg];
  |  | 2411|    479|                self_or_null = stack_pointer[-1 - oparg];
  |  | 2412|    479|                int total_args = oparg;
  |  | 2413|    479|                _PyStackRef *arguments = args;
  |  | 2414|    479|                if (!PyStackRef_IsNull(self_or_null)) {
  |  |  ------------------
  |  |  |  |  470|    479|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|    479|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    479|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (2414:21): [True: 0, False: 479]
  |  |  ------------------
  |  | 2415|      0|                    arguments--;
  |  | 2416|      0|                    total_args++;
  |  | 2417|      0|                }
  |  | 2418|    479|                STAT_INC(CALL, hit);
  |  |  ------------------
  |  |  |  |   73|    479|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 2419|    479|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2420|    479|                PyObject *res_o = _Py_BuiltinCallFast_StackRef(
  |  | 2421|    479|                    callable,
  |  | 2422|    479|                    arguments,
  |  | 2423|    479|                    total_args
  |  | 2424|    479|                );
  |  | 2425|    479|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2426|    479|                if (res_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (2426:21): [True: 0, False: 479]
  |  |  ------------------
  |  | 2427|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 2428|      0|                }
  |  | 2429|    479|                _PyStackRef temp = callable;
  |  | 2430|    479|                callable = PyStackRef_FromPyObjectSteal(res_o);
  |  | 2431|    479|                stack_pointer[-2 - oparg] = callable;
  |  | 2432|    479|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2433|    479|                PyStackRef_CLOSE(temp);
  |  | 2434|    479|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2435|    479|            }
  |  | 2436|       |            // _POP_TOP_OPARG
  |  | 2437|      0|            {
  |  | 2438|    479|                args = &stack_pointer[-oparg];
  |  | 2439|    479|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2440|    479|                _PyStackRef_CloseStack(args, oparg);
  |  | 2441|    479|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2442|    479|            }
  |  | 2443|       |            // _POP_TOP
  |  | 2444|    479|            {
  |  | 2445|    479|                value = self_or_null;
  |  | 2446|    479|                stack_pointer += -1 - oparg;
  |  | 2447|    479|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    479|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 2448|    479|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2449|    479|                PyStackRef_XCLOSE(value);
  |  | 2450|    479|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2451|    479|            }
  |  | 2452|       |            // _CHECK_PERIODIC_AT_END
  |  | 2453|    479|            {
  |  | 2454|    479|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2455|    479|                int err = check_periodics(tstate);
  |  | 2456|    479|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2457|    479|                if (err != 0) {
  |  |  ------------------
  |  |  |  Branch (2457:21): [True: 0, False: 479]
  |  |  ------------------
  |  | 2458|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 2459|      0|                }
  |  | 2460|    479|            }
  |  | 2461|    479|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    479|    { \
  |  |  |  |  201|    479|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    479|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    479|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    479|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    479|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    479|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    479|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    479|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 479]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    479|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    479|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    479|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    479|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    479|    }
  |  |  ------------------
  |  |  |  Branch (2461:13): [True: 479, False: 0]
  |  |  ------------------
  |  | 2462|    479|        }
  |  | 2463|       |
  |  | 2464|     98|        TARGET(CALL_BUILTIN_FAST_WITH_KEYWORDS) {
  |  |  ------------------
  |  |  |  |  132|     98|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 2465|       |            #if _Py_TAIL_CALL_INTERP
  |  | 2466|       |            int opcode = CALL_BUILTIN_FAST_WITH_KEYWORDS;
  |  | 2467|       |            (void)(opcode);
  |  | 2468|       |            #endif
  |  | 2469|     98|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 2470|     98|            (void)this_instr;
  |  | 2471|     98|            frame->instr_ptr = next_instr;
  |  | 2472|     98|            next_instr += 4;
  |  | 2473|     98|            INSTRUCTION_STATS(CALL_BUILTIN_FAST_WITH_KEYWORDS);
  |  |  ------------------
  |  |  |  |   71|     98|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 2474|     98|            static_assert(INLINE_CACHE_ENTRIES_CALL == 3, "incorrect cache size");
  |  | 2475|     98|            _PyStackRef callable;
  |  | 2476|     98|            _PyStackRef self_or_null;
  |  | 2477|     98|            _PyStackRef *args;
  |  | 2478|     98|            _PyStackRef value;
  |  | 2479|       |            /* Skip 1 cache entry */
  |  | 2480|       |            /* Skip 2 cache entries */
  |  | 2481|       |            // _GUARD_CALLABLE_BUILTIN_FAST_WITH_KEYWORDS
  |  | 2482|     98|            {
  |  | 2483|     98|                callable = stack_pointer[-2 - oparg];
  |  | 2484|     98|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 2485|     98|                if (!PyCFunction_CheckExact(callable_o)) {
  |  |  ------------------
  |  |  |  |   16|     98|#define PyCFunction_CheckExact(op) Py_IS_TYPE((op), &PyCFunction_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|     98|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|     98|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     98|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (2485:21): [True: 0, False: 98]
  |  |  ------------------
  |  | 2486|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 2487|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (2487:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 2488|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 2489|      0|                }
  |  | 2490|     98|                if (PyCFunction_GET_FLAGS(callable_o) != (METH_FASTCALL | METH_KEYWORDS)) {
  |  |  ------------------
  |  |  |  |   57|     98|#define PyCFunction_GET_FLAGS(func) PyCFunction_GET_FLAGS(_PyObject_CAST(func))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     98|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     98|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                               if (PyCFunction_GET_FLAGS(callable_o) != (METH_FASTCALL | METH_KEYWORDS)) {
  |  |  ------------------
  |  |  |  |  115|     98|#  define METH_FASTCALL  0x0080
  |  |  ------------------
  |  |                               if (PyCFunction_GET_FLAGS(callable_o) != (METH_FASTCALL | METH_KEYWORDS)) {
  |  |  ------------------
  |  |  |  |   96|     98|#define METH_KEYWORDS 0x0002
  |  |  ------------------
  |  |  |  Branch (2490:21): [True: 0, False: 98]
  |  |  ------------------
  |  | 2491|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 2492|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (2492:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 2493|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 2494|      0|                }
  |  | 2495|     98|            }
  |  | 2496|       |            // _CALL_BUILTIN_FAST_WITH_KEYWORDS
  |  | 2497|     98|            {
  |  | 2498|     98|                args = &stack_pointer[-oparg];
  |  | 2499|     98|                self_or_null = stack_pointer[-1 - oparg];
  |  | 2500|     98|                int total_args = oparg;
  |  | 2501|     98|                _PyStackRef *arguments = args;
  |  | 2502|     98|                if (!PyStackRef_IsNull(self_or_null)) {
  |  |  ------------------
  |  |  |  |  470|     98|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|     98|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     98|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (2502:21): [True: 0, False: 98]
  |  |  ------------------
  |  | 2503|      0|                    arguments--;
  |  | 2504|      0|                    total_args++;
  |  | 2505|      0|                }
  |  | 2506|     98|                STAT_INC(CALL, hit);
  |  |  ------------------
  |  |  |  |   73|     98|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 2507|     98|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2508|     98|                PyObject *res_o = _Py_BuiltinCallFastWithKeywords_StackRef(callable, arguments, total_args);
  |  | 2509|     98|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2510|     98|                if (res_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (2510:21): [True: 2, False: 96]
  |  |  ------------------
  |  | 2511|      2|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      2|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 2512|      0|                }
  |  | 2513|     96|                _PyStackRef temp = callable;
  |  | 2514|     96|                callable = PyStackRef_FromPyObjectSteal(res_o);
  |  | 2515|     96|                stack_pointer[-2 - oparg] = callable;
  |  | 2516|     96|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2517|     96|                PyStackRef_CLOSE(temp);
  |  | 2518|     96|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2519|     96|            }
  |  | 2520|       |            // _POP_TOP_OPARG
  |  | 2521|      0|            {
  |  | 2522|     96|                args = &stack_pointer[-oparg];
  |  | 2523|     96|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2524|     96|                _PyStackRef_CloseStack(args, oparg);
  |  | 2525|     96|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2526|     96|            }
  |  | 2527|       |            // _POP_TOP
  |  | 2528|     96|            {
  |  | 2529|     96|                value = self_or_null;
  |  | 2530|     96|                stack_pointer += -1 - oparg;
  |  | 2531|     96|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     96|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 2532|     96|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2533|     96|                PyStackRef_XCLOSE(value);
  |  | 2534|     96|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2535|     96|            }
  |  | 2536|       |            // _CHECK_PERIODIC_AT_END
  |  | 2537|     96|            {
  |  | 2538|     96|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2539|     96|                int err = check_periodics(tstate);
  |  | 2540|     96|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2541|     96|                if (err != 0) {
  |  |  ------------------
  |  |  |  Branch (2541:21): [True: 0, False: 96]
  |  |  ------------------
  |  | 2542|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 2543|      0|                }
  |  | 2544|     96|            }
  |  | 2545|     96|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     96|    { \
  |  |  |  |  201|     96|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     96|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     96|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     96|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     96|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     96|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     96|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     96|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 96]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     96|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     96|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     96|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     96|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     96|    }
  |  |  ------------------
  |  |  |  Branch (2545:13): [True: 96, False: 0]
  |  |  ------------------
  |  | 2546|     96|        }
  |  | 2547|       |
  |  | 2548|     54|        TARGET(CALL_BUILTIN_O) {
  |  |  ------------------
  |  |  |  |  132|     54|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 2549|       |            #if _Py_TAIL_CALL_INTERP
  |  | 2550|       |            int opcode = CALL_BUILTIN_O;
  |  | 2551|       |            (void)(opcode);
  |  | 2552|       |            #endif
  |  | 2553|     54|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 2554|     54|            (void)this_instr;
  |  | 2555|     54|            frame->instr_ptr = next_instr;
  |  | 2556|     54|            next_instr += 4;
  |  | 2557|     54|            INSTRUCTION_STATS(CALL_BUILTIN_O);
  |  |  ------------------
  |  |  |  |   71|     54|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 2558|     54|            static_assert(INLINE_CACHE_ENTRIES_CALL == 3, "incorrect cache size");
  |  | 2559|     54|            _PyStackRef callable;
  |  | 2560|     54|            _PyStackRef self_or_null;
  |  | 2561|     54|            _PyStackRef *args;
  |  | 2562|     54|            _PyStackRef res;
  |  | 2563|     54|            _PyStackRef c;
  |  | 2564|     54|            _PyStackRef s;
  |  | 2565|     54|            _PyStackRef value;
  |  | 2566|       |            /* Skip 1 cache entry */
  |  | 2567|       |            /* Skip 2 cache entries */
  |  | 2568|       |            // _GUARD_CALLABLE_BUILTIN_O
  |  | 2569|     54|            {
  |  | 2570|     54|                self_or_null = stack_pointer[-1 - oparg];
  |  | 2571|     54|                callable = stack_pointer[-2 - oparg];
  |  | 2572|     54|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 2573|     54|                if (!PyCFunction_CheckExact(callable_o)) {
  |  |  ------------------
  |  |  |  |   16|     54|#define PyCFunction_CheckExact(op) Py_IS_TYPE((op), &PyCFunction_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|     54|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|     54|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     54|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (2573:21): [True: 0, False: 54]
  |  |  ------------------
  |  | 2574|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 2575|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (2575:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 2576|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 2577|      0|                }
  |  | 2578|     54|                if (PyCFunction_GET_FLAGS(callable_o) != METH_O) {
  |  |  ------------------
  |  |  |  |   57|     54|#define PyCFunction_GET_FLAGS(func) PyCFunction_GET_FLAGS(_PyObject_CAST(func))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     54|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     54|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                               if (PyCFunction_GET_FLAGS(callable_o) != METH_O) {
  |  |  ------------------
  |  |  |  |   99|     54|#define METH_O        0x0008
  |  |  ------------------
  |  |  |  Branch (2578:21): [True: 0, False: 54]
  |  |  ------------------
  |  | 2579|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 2580|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (2580:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 2581|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 2582|      0|                }
  |  | 2583|     54|                int total_args = oparg;
  |  | 2584|     54|                if (!PyStackRef_IsNull(self_or_null)) {
  |  |  ------------------
  |  |  |  |  470|     54|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|     54|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     54|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (2584:21): [True: 0, False: 54]
  |  |  ------------------
  |  | 2585|      0|                    total_args++;
  |  | 2586|      0|                }
  |  | 2587|     54|                if (total_args != 1) {
  |  |  ------------------
  |  |  |  Branch (2587:21): [True: 0, False: 54]
  |  |  ------------------
  |  | 2588|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 2589|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (2589:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 2590|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 2591|      0|                }
  |  | 2592|     54|            }
  |  | 2593|       |            // _CHECK_RECURSION_LIMIT
  |  | 2594|     54|            {
  |  | 2595|     54|                if (_Py_ReachedRecursionLimit(tstate)) {
  |  |  ------------------
  |  |  |  Branch (2595:21): [True: 0, False: 54]
  |  |  ------------------
  |  | 2596|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 2597|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (2597:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 2598|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 2599|      0|                }
  |  | 2600|     54|            }
  |  | 2601|       |            // _CALL_BUILTIN_O
  |  | 2602|     54|            {
  |  | 2603|     54|                args = &stack_pointer[-oparg];
  |  | 2604|     54|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 2605|     54|                if (!PyStackRef_IsNull(self_or_null)) {
  |  |  ------------------
  |  |  |  |  470|     54|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|     54|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     54|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (2605:21): [True: 0, False: 54]
  |  |  ------------------
  |  | 2606|      0|                    args--;
  |  | 2607|      0|                }
  |  | 2608|     54|                STAT_INC(CALL, hit);
  |  |  ------------------
  |  |  |  |   73|     54|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 2609|     54|                PyCFunction cfunc = PyCFunction_GET_FUNCTION(callable_o);
  |  |  ------------------
  |  |  |  |   43|     54|#define PyCFunction_GET_FUNCTION(func) PyCFunction_GET_FUNCTION(_PyObject_CAST(func))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     54|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     54|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2610|     54|                _PyStackRef arg = args[0];
  |  | 2611|     54|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2612|     54|                PyObject *res_o = _PyCFunction_TrampolineCall(cfunc, PyCFunction_GET_SELF(callable_o), PyStackRef_AsPyObjectBorrow(arg));
  |  |  ------------------
  |  |  |  |  997|     54|    (meth)((self), (args))
  |  |  ------------------
  |  | 2613|     54|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2614|     54|                _Py_LeaveRecursiveCallTstate(tstate);
  |  | 2615|     54|                assert((res_o != NULL) ^ (_PyErr_Occurred(tstate) != NULL));
  |  |  ------------------
  |  |  |  Branch (2615:17): [True: 54, False: 0]
  |  |  ------------------
  |  | 2616|     54|                if (res_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (2616:21): [True: 0, False: 54]
  |  |  ------------------
  |  | 2617|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 2618|      0|                }
  |  | 2619|     54|                c = callable;
  |  | 2620|     54|                s = args[0];
  |  | 2621|     54|                res = PyStackRef_FromPyObjectSteal(res_o);
  |  | 2622|     54|            }
  |  | 2623|       |            // _POP_TOP
  |  | 2624|      0|            {
  |  | 2625|     54|                value = s;
  |  | 2626|     54|                stack_pointer[-2 - oparg] = res;
  |  | 2627|     54|                stack_pointer[-1 - oparg] = c;
  |  | 2628|     54|                stack_pointer += -oparg;
  |  | 2629|     54|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     54|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 2630|     54|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2631|     54|                PyStackRef_XCLOSE(value);
  |  | 2632|     54|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2633|     54|            }
  |  | 2634|       |            // _POP_TOP
  |  | 2635|     54|            {
  |  | 2636|     54|                value = c;
  |  | 2637|     54|                stack_pointer += -1;
  |  | 2638|     54|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     54|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 2639|     54|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2640|     54|                PyStackRef_XCLOSE(value);
  |  | 2641|     54|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2642|     54|            }
  |  | 2643|       |            // _CHECK_PERIODIC_AT_END
  |  | 2644|     54|            {
  |  | 2645|     54|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2646|     54|                int err = check_periodics(tstate);
  |  | 2647|     54|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2648|     54|                if (err != 0) {
  |  |  ------------------
  |  |  |  Branch (2648:21): [True: 0, False: 54]
  |  |  ------------------
  |  | 2649|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 2650|      0|                }
  |  | 2651|     54|            }
  |  | 2652|     54|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     54|    { \
  |  |  |  |  201|     54|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     54|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     54|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     54|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     54|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     54|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     54|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     54|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 54]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     54|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     54|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     54|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     54|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     54|    }
  |  |  ------------------
  |  |  |  Branch (2652:13): [True: 54, False: 0]
  |  |  ------------------
  |  | 2653|     54|        }
  |  | 2654|       |
  |  | 2655|     83|        TARGET(CALL_EX_NON_PY_GENERAL) {
  |  |  ------------------
  |  |  |  |  132|     83|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 2656|       |            #if _Py_TAIL_CALL_INTERP
  |  | 2657|       |            int opcode = CALL_EX_NON_PY_GENERAL;
  |  | 2658|       |            (void)(opcode);
  |  | 2659|       |            #endif
  |  | 2660|     83|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 2661|     83|            (void)this_instr;
  |  | 2662|     83|            frame->instr_ptr = next_instr;
  |  | 2663|     83|            next_instr += 2;
  |  | 2664|     83|            INSTRUCTION_STATS(CALL_EX_NON_PY_GENERAL);
  |  |  ------------------
  |  |  |  |   71|     83|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 2665|     83|            static_assert(INLINE_CACHE_ENTRIES_CALL_FUNCTION_EX == 1, "incorrect cache size");
  |  | 2666|     83|            _PyStackRef func_st;
  |  | 2667|     83|            _PyStackRef func;
  |  | 2668|     83|            _PyStackRef callargs;
  |  | 2669|     83|            _PyStackRef null;
  |  | 2670|     83|            _PyStackRef callargs_st;
  |  | 2671|     83|            _PyStackRef kwargs_st;
  |  | 2672|     83|            _PyStackRef result;
  |  | 2673|       |            /* Skip 1 cache entry */
  |  | 2674|       |            // _CHECK_IS_NOT_PY_CALLABLE_EX
  |  | 2675|     83|            {
  |  | 2676|     83|                func_st = stack_pointer[-4];
  |  | 2677|     83|                PyObject *func = PyStackRef_AsPyObjectBorrow(func_st);
  |  | 2678|     83|                if (Py_TYPE(func) == &PyFunction_Type && ((PyFunctionObject *)func)->vectorcall == _PyFunction_Vectorcall) {
  |  |  ------------------
  |  |  |  |  213|     83|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     83|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     83|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (2678:21): [True: 0, False: 83]
  |  |  |  Branch (2678:58): [True: 0, False: 0]
  |  |  ------------------
  |  | 2679|      0|                    UPDATE_MISS_STATS(CALL_FUNCTION_EX);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 2680|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL_FUNCTION_EX));
  |  |  ------------------
  |  |  |  Branch (2680:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 2681|      0|                    JUMP_TO_PREDICTED(CALL_FUNCTION_EX);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 2682|      0|                }
  |  | 2683|     83|            }
  |  | 2684|       |            // _MAKE_CALLARGS_A_TUPLE
  |  | 2685|     83|            {
  |  | 2686|     83|                callargs = stack_pointer[-2];
  |  | 2687|     83|                func = func_st;
  |  | 2688|     83|                PyObject *callargs_o = PyStackRef_AsPyObjectBorrow(callargs);
  |  | 2689|     83|                if (!PyTuple_CheckExact(callargs_o)) {
  |  |  ------------------
  |  |  |  |   28|     83|#define PyTuple_CheckExact(op) Py_IS_TYPE((op), &PyTuple_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|     83|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|     83|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     83|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (2689:21): [True: 0, False: 83]
  |  |  ------------------
  |  | 2690|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2691|      0|                    int err = _Py_Check_ArgsIterable(tstate, PyStackRef_AsPyObjectBorrow(func), callargs_o);
  |  | 2692|      0|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2693|      0|                    if (err < 0) {
  |  |  ------------------
  |  |  |  Branch (2693:25): [True: 0, False: 0]
  |  |  ------------------
  |  | 2694|      0|                        JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 2695|      0|                    }
  |  | 2696|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2697|      0|                    PyObject *tuple_o = PySequence_Tuple(callargs_o);
  |  | 2698|      0|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2699|      0|                    if (tuple_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (2699:25): [True: 0, False: 0]
  |  |  ------------------
  |  | 2700|      0|                        JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 2701|      0|                    }
  |  | 2702|      0|                    _PyStackRef temp = callargs;
  |  | 2703|      0|                    callargs = PyStackRef_FromPyObjectSteal(tuple_o);
  |  | 2704|      0|                    stack_pointer[-2] = callargs;
  |  | 2705|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2706|      0|                    PyStackRef_CLOSE(temp);
  |  | 2707|      0|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2708|      0|                }
  |  | 2709|     83|            }
  |  | 2710|       |            // _CALL_FUNCTION_EX_NON_PY_GENERAL
  |  | 2711|     83|            {
  |  | 2712|     83|                kwargs_st = stack_pointer[-1];
  |  | 2713|     83|                callargs_st = callargs;
  |  | 2714|     83|                null = stack_pointer[-3];
  |  | 2715|     83|                func_st = func;
  |  | 2716|     83|                PyObject *func = PyStackRef_AsPyObjectBorrow(func_st);
  |  | 2717|     83|                PyObject *callargs = PyStackRef_AsPyObjectBorrow(callargs_st);
  |  | 2718|     83|                (void)null;
  |  | 2719|     83|                assert(PyTuple_CheckExact(callargs));
  |  |  ------------------
  |  |  |  Branch (2719:17): [True: 83, False: 0]
  |  |  ------------------
  |  | 2720|     83|                PyObject *kwargs = PyStackRef_AsPyObjectBorrow(kwargs_st);
  |  | 2721|     83|                assert(kwargs == NULL || PyDict_CheckExact(kwargs));
  |  |  ------------------
  |  |  |  Branch (2721:17): [True: 2, False: 81]
  |  |  |  Branch (2721:17): [True: 81, False: 0]
  |  |  ------------------
  |  | 2722|     83|                stack_pointer[-2] = callargs_st;
  |  | 2723|     83|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2724|     83|                PyObject *result_o = PyObject_Call(func, callargs, kwargs);
  |  | 2725|     83|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2726|     83|                stack_pointer += -1;
  |  | 2727|     83|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     83|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 2728|     83|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2729|     83|                PyStackRef_XCLOSE(kwargs_st);
  |  | 2730|     83|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2731|     83|                stack_pointer += -1;
  |  | 2732|     83|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     83|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 2733|     83|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2734|     83|                PyStackRef_CLOSE(callargs_st);
  |  | 2735|     83|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2736|     83|                stack_pointer += -2;
  |  | 2737|     83|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     83|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 2738|     83|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2739|     83|                PyStackRef_CLOSE(func_st);
  |  | 2740|     83|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2741|     83|                if (result_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (2741:21): [True: 0, False: 83]
  |  |  ------------------
  |  | 2742|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 2743|      0|                }
  |  | 2744|     83|                result = PyStackRef_FromPyObjectSteal(result_o);
  |  | 2745|     83|            }
  |  | 2746|       |            // _CHECK_PERIODIC_AT_END
  |  | 2747|      0|            {
  |  | 2748|     83|                stack_pointer[0] = result;
  |  | 2749|     83|                stack_pointer += 1;
  |  | 2750|     83|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     83|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 2751|     83|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2752|     83|                int err = check_periodics(tstate);
  |  | 2753|     83|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2754|     83|                if (err != 0) {
  |  |  ------------------
  |  |  |  Branch (2754:21): [True: 0, False: 83]
  |  |  ------------------
  |  | 2755|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 2756|      0|                }
  |  | 2757|     83|            }
  |  | 2758|     83|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     83|    { \
  |  |  |  |  201|     83|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     83|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     83|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     83|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     83|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     83|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     83|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     83|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 83]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     83|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     83|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     83|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     83|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     83|    }
  |  |  ------------------
  |  |  |  Branch (2758:13): [True: 83, False: 0]
  |  |  ------------------
  |  | 2759|     83|        }
  |  | 2760|       |
  |  | 2761|      3|        TARGET(CALL_EX_PY) {
  |  |  ------------------
  |  |  |  |  132|      3|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 2762|       |            #if _Py_TAIL_CALL_INTERP
  |  | 2763|       |            int opcode = CALL_EX_PY;
  |  | 2764|       |            (void)(opcode);
  |  | 2765|       |            #endif
  |  | 2766|      3|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 2767|      3|            (void)this_instr;
  |  | 2768|      3|            frame->instr_ptr = next_instr;
  |  | 2769|      3|            next_instr += 2;
  |  | 2770|      3|            INSTRUCTION_STATS(CALL_EX_PY);
  |  |  ------------------
  |  |  |  |   71|      3|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 2771|      3|            static_assert(INLINE_CACHE_ENTRIES_CALL_FUNCTION_EX == 1, "incorrect cache size");
  |  | 2772|      3|            _PyStackRef func;
  |  | 2773|      3|            _PyStackRef callargs;
  |  | 2774|      3|            _PyStackRef func_st;
  |  | 2775|      3|            _PyStackRef callargs_st;
  |  | 2776|      3|            _PyStackRef kwargs_st;
  |  | 2777|      3|            _PyStackRef ex_frame;
  |  | 2778|      3|            _PyStackRef new_frame;
  |  | 2779|       |            /* Skip 1 cache entry */
  |  | 2780|       |            // _CHECK_PEP_523
  |  | 2781|      3|            {
  |  | 2782|      3|                if (IS_PEP523_HOOKED(tstate)) {
  |  |  ------------------
  |  |  |  |  517|      3|#define IS_PEP523_HOOKED(tstate) (tstate->interp->eval_frame != NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (517:34): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2783|      0|                    UPDATE_MISS_STATS(CALL_FUNCTION_EX);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 2784|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL_FUNCTION_EX));
  |  |  ------------------
  |  |  |  Branch (2784:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 2785|      0|                    JUMP_TO_PREDICTED(CALL_FUNCTION_EX);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 2786|      0|                }
  |  | 2787|      3|            }
  |  | 2788|       |            // _MAKE_CALLARGS_A_TUPLE
  |  | 2789|      3|            {
  |  | 2790|      3|                callargs = stack_pointer[-2];
  |  | 2791|      3|                func = stack_pointer[-4];
  |  | 2792|      3|                PyObject *callargs_o = PyStackRef_AsPyObjectBorrow(callargs);
  |  | 2793|      3|                if (!PyTuple_CheckExact(callargs_o)) {
  |  |  ------------------
  |  |  |  |   28|      3|#define PyTuple_CheckExact(op) Py_IS_TYPE((op), &PyTuple_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      3|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (2793:21): [True: 0, False: 3]
  |  |  ------------------
  |  | 2794|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2795|      0|                    int err = _Py_Check_ArgsIterable(tstate, PyStackRef_AsPyObjectBorrow(func), callargs_o);
  |  | 2796|      0|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2797|      0|                    if (err < 0) {
  |  |  ------------------
  |  |  |  Branch (2797:25): [True: 0, False: 0]
  |  |  ------------------
  |  | 2798|      0|                        JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 2799|      0|                    }
  |  | 2800|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2801|      0|                    PyObject *tuple_o = PySequence_Tuple(callargs_o);
  |  | 2802|      0|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2803|      0|                    if (tuple_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (2803:25): [True: 0, False: 0]
  |  |  ------------------
  |  | 2804|      0|                        JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 2805|      0|                    }
  |  | 2806|      0|                    _PyStackRef temp = callargs;
  |  | 2807|      0|                    callargs = PyStackRef_FromPyObjectSteal(tuple_o);
  |  | 2808|      0|                    stack_pointer[-2] = callargs;
  |  | 2809|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2810|      0|                    PyStackRef_CLOSE(temp);
  |  | 2811|      0|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2812|      0|                }
  |  | 2813|      3|            }
  |  | 2814|       |            // _CHECK_IS_PY_CALLABLE_EX
  |  | 2815|      3|            {
  |  | 2816|      3|                func_st = func;
  |  | 2817|      3|                PyObject *func = PyStackRef_AsPyObjectBorrow(func_st);
  |  | 2818|      3|                if (Py_TYPE(func) != &PyFunction_Type) {
  |  |  ------------------
  |  |  |  |  213|      3|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (2818:21): [True: 0, False: 3]
  |  |  ------------------
  |  | 2819|      0|                    UPDATE_MISS_STATS(CALL_FUNCTION_EX);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 2820|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL_FUNCTION_EX));
  |  |  ------------------
  |  |  |  Branch (2820:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 2821|      0|                    JUMP_TO_PREDICTED(CALL_FUNCTION_EX);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 2822|      0|                }
  |  | 2823|      3|                if (((PyFunctionObject *)func)->vectorcall != _PyFunction_Vectorcall) {
  |  |  ------------------
  |  |  |  Branch (2823:21): [True: 0, False: 3]
  |  |  ------------------
  |  | 2824|      0|                    UPDATE_MISS_STATS(CALL_FUNCTION_EX);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 2825|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL_FUNCTION_EX));
  |  |  ------------------
  |  |  |  Branch (2825:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 2826|      0|                    JUMP_TO_PREDICTED(CALL_FUNCTION_EX);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 2827|      0|                }
  |  | 2828|      3|            }
  |  | 2829|       |            // _PY_FRAME_EX
  |  | 2830|      3|            {
  |  | 2831|      3|                kwargs_st = stack_pointer[-1];
  |  | 2832|      3|                callargs_st = callargs;
  |  | 2833|      3|                PyObject *func = PyStackRef_AsPyObjectBorrow(func_st);
  |  | 2834|      3|                PyObject *callargs = PyStackRef_AsPyObjectSteal(callargs_st);
  |  | 2835|      3|                assert(PyTuple_CheckExact(callargs));
  |  |  ------------------
  |  |  |  Branch (2835:17): [True: 3, False: 0]
  |  |  ------------------
  |  | 2836|      3|                assert(Py_TYPE(func) == &PyFunction_Type);
  |  |  ------------------
  |  |  |  Branch (2836:17): [True: 3, False: 0]
  |  |  ------------------
  |  | 2837|      3|                assert(((PyFunctionObject *)func)->vectorcall == _PyFunction_Vectorcall);
  |  |  ------------------
  |  |  |  Branch (2837:17): [True: 3, False: 0]
  |  |  ------------------
  |  | 2838|      3|                PyObject *kwargs = PyStackRef_IsNull(kwargs_st) ? NULL : PyStackRef_AsPyObjectSteal(kwargs_st);
  |  |  ------------------
  |  |  |  |  470|      3|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|      3|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      3|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (470:32): [True: 3, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2839|      3|                assert(kwargs == NULL || PyDict_CheckExact(kwargs));
  |  |  ------------------
  |  |  |  Branch (2839:17): [True: 3, False: 0]
  |  |  |  Branch (2839:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 2840|      3|                Py_ssize_t nargs = PyTuple_GET_SIZE(callargs);
  |  |  ------------------
  |  |  |  |   27|      3|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2841|      3|                int code_flags = ((PyCodeObject *)PyFunction_GET_CODE(func))->co_flags;
  |  |  ------------------
  |  |  |  |   93|      3|#define PyFunction_GET_CODE(func) PyFunction_GET_CODE(_PyObject_CAST(func))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2842|      3|                PyObject *locals = code_flags & CO_OPTIMIZED ? NULL : Py_NewRef(PyFunction_GET_GLOBALS(func));
  |  |  ------------------
  |  |  |  |  118|      3|#define CO_OPTIMIZED    0x0001
  |  |  ------------------
  |  |                               PyObject *locals = code_flags & CO_OPTIMIZED ? NULL : Py_NewRef(PyFunction_GET_GLOBALS(func));
  |  |  ------------------
  |  |  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (2842:36): [True: 3, False: 0]
  |  |  ------------------
  |  | 2843|      3|                stack_pointer += -3;
  |  | 2844|      3|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      3|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 2845|      3|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2846|      3|                _PyInterpreterFrame *new_frame = _PyEvalFramePushAndInit_Ex(
  |  | 2847|      3|                    tstate, func_st, locals,
  |  | 2848|      3|                    nargs, callargs, kwargs, frame);
  |  | 2849|      3|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2850|      3|                stack_pointer += -1;
  |  | 2851|      3|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      3|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 2852|      3|                if (new_frame == NULL) {
  |  |  ------------------
  |  |  |  Branch (2852:21): [True: 0, False: 3]
  |  |  ------------------
  |  | 2853|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 2854|      0|                }
  |  | 2855|      3|                ex_frame = PyStackRef_Wrap(new_frame);
  |  | 2856|      3|            }
  |  | 2857|       |            // _SAVE_RETURN_OFFSET
  |  | 2858|      0|            {
  |  | 2859|      3|                #if TIER_ONE
  |  | 2860|      3|                frame->return_offset = (uint16_t)(next_instr - this_instr);
  |  | 2861|      3|                #endif
  |  | 2862|       |                #if TIER_TWO
  |  | 2863|       |                frame->return_offset = oparg;
  |  | 2864|       |                #endif
  |  | 2865|      3|            }
  |  | 2866|       |            // _PUSH_FRAME
  |  | 2867|      3|            {
  |  | 2868|      3|                new_frame = ex_frame;
  |  | 2869|      3|                assert(!IS_PEP523_HOOKED(tstate));
  |  |  ------------------
  |  |  |  Branch (2869:17): [True: 3, False: 0]
  |  |  ------------------
  |  | 2870|      3|                _PyInterpreterFrame *temp = PyStackRef_Unwrap(new_frame);
  |  | 2871|      3|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2872|      3|                assert(temp->previous == frame || temp->previous->previous == frame);
  |  |  ------------------
  |  |  |  Branch (2872:17): [True: 3, False: 0]
  |  |  |  Branch (2872:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 2873|      3|                CALL_STAT_INC(inlined_py_calls);
  |  |  ------------------
  |  |  |  |   76|      3|#define CALL_STAT_INC(name) ((void)0)
  |  |  ------------------
  |  | 2874|      3|                frame = tstate->current_frame = temp;
  |  | 2875|      3|                tstate->py_recursion_remaining--;
  |  | 2876|      3|                LOAD_SP();
  |  |  ------------------
  |  |  |  |  425|      3|#define LOAD_SP() \
  |  |  |  |  426|      3|stack_pointer = _PyFrame_GetStackPointer(frame)
  |  |  ------------------
  |  | 2877|      3|                LOAD_IP(0);
  |  |  ------------------
  |  |  |  |  419|      3|#define LOAD_IP(OFFSET) do { \
  |  |  |  |  420|      3|        next_instr = frame->instr_ptr + (OFFSET); \
  |  |  |  |  421|      3|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:14): [Folded, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2878|      3|                DTRACE_FUNCTION_ENTRY();
  |  |  ------------------
  |  |  |  |  345|      3|#define DTRACE_FUNCTION_ENTRY() ((void)0)
  |  |  ------------------
  |  | 2879|      3|                LLTRACE_RESUME_FRAME();
  |  |  ------------------
  |  |  |  |  188|      3|#define LLTRACE_RESUME_FRAME() ((void)0)
  |  |  ------------------
  |  | 2880|      3|            }
  |  | 2881|      3|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      3|    { \
  |  |  |  |  201|      3|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      3|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      3|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      3|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      3|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      3|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      3|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      3|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      3|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      3|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      3|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      3|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      3|    }
  |  |  ------------------
  |  |  |  Branch (2881:13): [True: 3, False: 0]
  |  |  ------------------
  |  | 2882|      3|        }
  |  | 2883|       |
  |  | 2884|     12|        TARGET(CALL_FUNCTION_EX) {
  |  |  ------------------
  |  |  |  |  132|     12|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 2885|       |            #if _Py_TAIL_CALL_INTERP
  |  | 2886|       |            int opcode = CALL_FUNCTION_EX;
  |  | 2887|       |            (void)(opcode);
  |  | 2888|       |            #endif
  |  | 2889|     12|            frame->instr_ptr = next_instr;
  |  | 2890|     12|            next_instr += 2;
  |  | 2891|     12|            INSTRUCTION_STATS(CALL_FUNCTION_EX);
  |  |  ------------------
  |  |  |  |   71|     12|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 2892|     12|            PREDICTED_CALL_FUNCTION_EX:;
  |  | 2893|     12|            _Py_CODEUNIT* const this_instr = next_instr - 2;
  |  | 2894|     12|            (void)this_instr;
  |  | 2895|     12|            opcode = CALL_FUNCTION_EX;
  |  |  ------------------
  |  |  |  |   17|     12|#define CALL_FUNCTION_EX                         4
  |  |  ------------------
  |  | 2896|     12|            _PyStackRef func;
  |  | 2897|     12|            _PyStackRef callargs;
  |  | 2898|     12|            _PyStackRef func_st;
  |  | 2899|     12|            _PyStackRef null;
  |  | 2900|     12|            _PyStackRef callargs_st;
  |  | 2901|     12|            _PyStackRef kwargs_st;
  |  | 2902|     12|            _PyStackRef result;
  |  | 2903|       |            // _SPECIALIZE_CALL_FUNCTION_EX
  |  | 2904|     12|            {
  |  | 2905|     12|                func = stack_pointer[-4];
  |  | 2906|     12|                uint16_t counter = read_u16(&this_instr[1].cache);
  |  | 2907|     12|                (void)counter;
  |  | 2908|     12|                #if ENABLE_SPECIALIZATION
  |  | 2909|     12|                if (ADAPTIVE_COUNTER_TRIGGERS(counter)) {
  |  |  ------------------
  |  |  |  |  354|     12|    backoff_counter_triggers(forge_backoff_counter((COUNTER)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (354:5): [True: 4, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2910|      4|                    next_instr = this_instr;
  |  | 2911|      4|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2912|      4|                    _Py_Specialize_CallFunctionEx(func, next_instr);
  |  | 2913|      4|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2914|      4|                    DISPATCH_SAME_OPARG();
  |  |  ------------------
  |  |  |  |  216|      4|    { \
  |  |  |  |  217|      4|        opcode = next_instr->op.code; \
  |  |  |  |  218|      4|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      4|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  219|      4|        DISPATCH_GOTO_NON_TRACING(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  134|      4|#  define DISPATCH_GOTO_NON_TRACING() goto *DISPATCH_TABLE[opcode];
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  130|      4|#  define DISPATCH_TABLE opcode_targets_table
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  220|      4|    }
  |  |  ------------------
  |  | 2915|      4|                }
  |  | 2916|     12|                OPCODE_DEFERRED_INC(CALL_FUNCTION_EX);
  |  |  ------------------
  |  |  |  |   90|     12|#define OPCODE_DEFERRED_INC(opname) ((void)0)
  |  |  ------------------
  |  | 2917|     12|                ADVANCE_ADAPTIVE_COUNTER(this_instr[1].counter);
  |  |  ------------------
  |  |  |  |  357|     12|    do { \
  |  |  |  |  358|     12|        (COUNTER) = advance_backoff_counter((COUNTER)); \
  |  |  |  |  359|     12|    } while (0);
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (359:14): [Folded, False: 12]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2918|     12|                #endif  /* ENABLE_SPECIALIZATION */
  |  | 2919|     12|            }
  |  | 2920|       |            // _MAKE_CALLARGS_A_TUPLE
  |  | 2921|     12|            {
  |  | 2922|     12|                callargs = stack_pointer[-2];
  |  | 2923|     12|                PyObject *callargs_o = PyStackRef_AsPyObjectBorrow(callargs);
  |  | 2924|     12|                if (!PyTuple_CheckExact(callargs_o)) {
  |  |  ------------------
  |  |  |  |   28|     12|#define PyTuple_CheckExact(op) Py_IS_TYPE((op), &PyTuple_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|     12|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|     12|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     12|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (2924:21): [True: 1, False: 11]
  |  |  ------------------
  |  | 2925|      1|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2926|      1|                    int err = _Py_Check_ArgsIterable(tstate, PyStackRef_AsPyObjectBorrow(func), callargs_o);
  |  | 2927|      1|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2928|      1|                    if (err < 0) {
  |  |  ------------------
  |  |  |  Branch (2928:25): [True: 0, False: 1]
  |  |  ------------------
  |  | 2929|      0|                        JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 2930|      0|                    }
  |  | 2931|      1|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2932|      1|                    PyObject *tuple_o = PySequence_Tuple(callargs_o);
  |  | 2933|      1|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2934|      1|                    if (tuple_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (2934:25): [True: 0, False: 1]
  |  |  ------------------
  |  | 2935|      0|                        JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 2936|      0|                    }
  |  | 2937|      1|                    _PyStackRef temp = callargs;
  |  | 2938|      1|                    callargs = PyStackRef_FromPyObjectSteal(tuple_o);
  |  | 2939|      1|                    stack_pointer[-2] = callargs;
  |  | 2940|      1|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2941|      1|                    PyStackRef_CLOSE(temp);
  |  | 2942|      1|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2943|      1|                }
  |  | 2944|     12|            }
  |  | 2945|       |            // _DO_CALL_FUNCTION_EX
  |  | 2946|     12|            {
  |  | 2947|     12|                kwargs_st = stack_pointer[-1];
  |  | 2948|     12|                callargs_st = callargs;
  |  | 2949|     12|                null = stack_pointer[-3];
  |  | 2950|     12|                func_st = func;
  |  | 2951|     12|                (void)null;
  |  | 2952|     12|                PyObject *func = PyStackRef_AsPyObjectBorrow(func_st);
  |  | 2953|     12|                EVAL_CALL_STAT_INC_IF_FUNCTION(EVAL_CALL_FUNCTION_EX, func);
  |  |  ------------------
  |  |  |  |   80|     12|#define EVAL_CALL_STAT_INC_IF_FUNCTION(name, callable) ((void)0)
  |  |  ------------------
  |  | 2954|     12|                PyObject *result_o;
  |  | 2955|     12|                assert(!_PyErr_Occurred(tstate));
  |  |  ------------------
  |  |  |  Branch (2955:17): [True: 8, False: 4]
  |  |  ------------------
  |  | 2956|      8|                if (opcode == INSTRUMENTED_CALL_FUNCTION_EX) {
  |  |  ------------------
  |  |  |  |  242|      8|#define INSTRUMENTED_CALL_FUNCTION_EX          251
  |  |  ------------------
  |  |  |  Branch (2956:21): [True: 0, False: 8]
  |  |  ------------------
  |  | 2957|      0|                    PyObject *callargs = PyStackRef_AsPyObjectBorrow(callargs_st);
  |  | 2958|      0|                    PyObject *kwargs = PyStackRef_AsPyObjectBorrow(kwargs_st);
  |  | 2959|      0|                    assert(kwargs == NULL || PyDict_CheckExact(kwargs));
  |  |  ------------------
  |  |  |  Branch (2959:21): [True: 0, False: 0]
  |  |  |  Branch (2959:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 2960|      0|                    assert(PyTuple_CheckExact(callargs));
  |  |  ------------------
  |  |  |  Branch (2960:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 2961|      0|                    PyObject *arg = PyTuple_GET_SIZE(callargs) > 0 ?
  |  |  ------------------
  |  |  |  |   27|      0|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (2961:37): [True: 0, False: 0]
  |  |  ------------------
  |  | 2962|      0|                    PyTuple_GET_ITEM(callargs, 0) : &_PyInstrumentation_MISSING;
  |  |  ------------------
  |  |  |  |   29|      0|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  |  |  ------------------
  |  |  |  |  |  |   19|      0|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (2962:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 2963|      0|                    stack_pointer[-2] = callargs_st;
  |  | 2964|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2965|      0|                    int err = _Py_call_instrumentation_2args(
  |  | 2966|      0|                        tstate, PY_MONITORING_EVENT_CALL,
  |  |  ------------------
  |  |  |  |   18|      0|#define PY_MONITORING_EVENT_CALL 4
  |  |  ------------------
  |  | 2967|      0|                        frame, this_instr, func, arg);
  |  | 2968|      0|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2969|      0|                    if (err) {
  |  |  ------------------
  |  |  |  Branch (2969:25): [True: 0, False: 0]
  |  |  ------------------
  |  | 2970|      0|                        JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 2971|      0|                    }
  |  | 2972|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2973|      0|                    result_o = PyObject_Call(func, callargs, kwargs);
  |  | 2974|      0|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2975|      0|                    if (!PyFunction_Check(func) && !PyMethod_Check(func)) {
  |  |  ------------------
  |  |  |  |   68|      0|#define PyFunction_Check(op) Py_IS_TYPE((op), &PyFunction_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      0|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                                   if (!PyFunction_Check(func) && !PyMethod_Check(func)) {
  |  |  ------------------
  |  |  |  |   22|      0|#define PyMethod_Check(op) Py_IS_TYPE((op), &PyMethod_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      0|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (2975:25): [True: 0, False: 0]
  |  |  |  Branch (2975:52): [True: 0, False: 0]
  |  |  ------------------
  |  | 2976|      0|                        if (result_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (2976:29): [True: 0, False: 0]
  |  |  ------------------
  |  | 2977|      0|                            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2978|      0|                            _Py_call_instrumentation_exc2(
  |  | 2979|      0|                                tstate, PY_MONITORING_EVENT_C_RAISE,
  |  |  ------------------
  |  |  |  |   45|      0|#define PY_MONITORING_EVENT_C_RAISE 17
  |  |  ------------------
  |  | 2980|      0|                                frame, this_instr, func, arg);
  |  | 2981|      0|                            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2982|      0|                        }
  |  | 2983|      0|                        else {
  |  | 2984|      0|                            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2985|      0|                            int err = _Py_call_instrumentation_2args(
  |  | 2986|      0|                                tstate, PY_MONITORING_EVENT_C_RETURN,
  |  |  ------------------
  |  |  |  |   44|      0|#define PY_MONITORING_EVENT_C_RETURN 16
  |  |  ------------------
  |  | 2987|      0|                                frame, this_instr, func, arg);
  |  | 2988|      0|                            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2989|      0|                            if (err < 0) {
  |  |  ------------------
  |  |  |  Branch (2989:33): [True: 0, False: 0]
  |  |  ------------------
  |  | 2990|      0|                                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 2991|      0|                                Py_CLEAR(result_o);
  |  |  ------------------
  |  |  |  |  484|      0|    do { \
  |  |  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  ------------------
  |  |  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  ------------------
  |  |  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  |  |  ------------------
  |  |  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   80|      0|    do { \
  |  |  |  |  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|            break; \
  |  |  |  |  |  |   85|      0|        } \
  |  |  |  |  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |  |  |   91|      0|        } \
  |  |  |  |  |  |   92|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  490|      0|        } \
  |  |  |  |  491|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 2992|      0|                                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 2993|      0|                            }
  |  | 2994|      0|                        }
  |  | 2995|      0|                    }
  |  | 2996|      0|                }
  |  | 2997|      8|                else {
  |  | 2998|      8|                    if (Py_TYPE(func) == &PyFunction_Type &&
  |  |  ------------------
  |  |  |  |  213|      8|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      8|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (2998:25): [True: 4, False: 4]
  |  |  ------------------
  |  | 2999|      4|                        !IS_PEP523_HOOKED(tstate) &&
  |  |  ------------------
  |  |  |  |  517|     12|#define IS_PEP523_HOOKED(tstate) (tstate->interp->eval_frame != NULL)
  |  |  ------------------
  |  |  |  Branch (2999:25): [True: 4, False: 0]
  |  |  ------------------
  |  | 3000|      4|                        ((PyFunctionObject *)func)->vectorcall == _PyFunction_Vectorcall) {
  |  |  ------------------
  |  |  |  Branch (3000:25): [True: 4, False: 0]
  |  |  ------------------
  |  | 3001|      4|                        PyObject *callargs = PyStackRef_AsPyObjectSteal(callargs_st);
  |  | 3002|      4|                        assert(PyTuple_CheckExact(callargs));
  |  |  ------------------
  |  |  |  Branch (3002:25): [True: 4, False: 0]
  |  |  ------------------
  |  | 3003|      4|                        PyObject *kwargs = PyStackRef_IsNull(kwargs_st) ? NULL : PyStackRef_AsPyObjectSteal(kwargs_st);
  |  |  ------------------
  |  |  |  |  470|      4|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|      4|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      4|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (470:32): [True: 3, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3004|      4|                        assert(kwargs == NULL || PyDict_CheckExact(kwargs));
  |  |  ------------------
  |  |  |  Branch (3004:25): [True: 3, False: 1]
  |  |  |  Branch (3004:25): [True: 1, False: 0]
  |  |  ------------------
  |  | 3005|      4|                        Py_ssize_t nargs = PyTuple_GET_SIZE(callargs);
  |  |  ------------------
  |  |  |  |   27|      4|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3006|      4|                        int code_flags = ((PyCodeObject *)PyFunction_GET_CODE(func))->co_flags;
  |  |  ------------------
  |  |  |  |   93|      4|#define PyFunction_GET_CODE(func) PyFunction_GET_CODE(_PyObject_CAST(func))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3007|      4|                        PyObject *locals = code_flags & CO_OPTIMIZED ? NULL : Py_NewRef(PyFunction_GET_GLOBALS(func));
  |  |  ------------------
  |  |  |  |  118|      4|#define CO_OPTIMIZED    0x0001
  |  |  ------------------
  |  |                                       PyObject *locals = code_flags & CO_OPTIMIZED ? NULL : Py_NewRef(PyFunction_GET_GLOBALS(func));
  |  |  ------------------
  |  |  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (3007:44): [True: 4, False: 0]
  |  |  ------------------
  |  | 3008|      4|                        stack_pointer += -2;
  |  | 3009|      4|                        ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      4|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 3010|      4|                        _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 3011|      4|                        _PyInterpreterFrame *new_frame = _PyEvalFramePushAndInit_Ex(
  |  | 3012|      4|                            tstate, func_st, locals,
  |  | 3013|      4|                            nargs, callargs, kwargs, frame);
  |  | 3014|      4|                        stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 3015|      4|                        stack_pointer += -2;
  |  | 3016|      4|                        ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      4|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 3017|      4|                        if (new_frame == NULL) {
  |  |  ------------------
  |  |  |  Branch (3017:29): [True: 0, False: 4]
  |  |  ------------------
  |  | 3018|      0|                            JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 3019|      0|                        }
  |  | 3020|      4|                        assert( 2u == 1 + INLINE_CACHE_ENTRIES_CALL_FUNCTION_EX);
  |  |  ------------------
  |  |  |  Branch (3020:25): [True: 4, Folded]
  |  |  ------------------
  |  | 3021|      4|                        frame->return_offset = 2u ;
  |  | 3022|      4|                        DISPATCH_INLINED(new_frame);
  |  |  ------------------
  |  |  |  |  223|      4|    do {                                                         \
  |  |  |  |  224|      4|        assert(!IS_PEP523_HOOKED(tstate));                       \
  |  |  |  |  225|      4|        _PyFrame_SetStackPointer(frame, stack_pointer);          \
  |  |  |  |  226|      4|        assert((NEW_FRAME)->previous == frame);                  \
  |  |  |  |  227|      4|        frame = tstate->current_frame = (NEW_FRAME);             \
  |  |  |  |  228|      4|        CALL_STAT_INC(inlined_py_calls);                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|      4|#define CALL_STAT_INC(name) ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  229|      4|        JUMP_TO_LABEL(start_frame);                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  135|      4|#  define JUMP_TO_LABEL(name) goto name;
  |  |  |  |  ------------------
  |  |  |  |  230|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (230:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (3022:25): [True: 4, False: 0]
  |  |  |  Branch (3022:25): [True: 4, False: 0]
  |  |  ------------------
  |  | 3023|      4|                    }
  |  | 3024|      4|                    PyObject *callargs = PyStackRef_AsPyObjectBorrow(callargs_st);
  |  | 3025|      4|                    assert(PyTuple_CheckExact(callargs));
  |  |  ------------------
  |  |  |  Branch (3025:21): [True: 4, False: 0]
  |  |  ------------------
  |  | 3026|      4|                    PyObject *kwargs = PyStackRef_AsPyObjectBorrow(kwargs_st);
  |  | 3027|      4|                    assert(kwargs == NULL || PyDict_CheckExact(kwargs));
  |  |  ------------------
  |  |  |  Branch (3027:21): [True: 2, False: 2]
  |  |  |  Branch (3027:21): [True: 2, False: 0]
  |  |  ------------------
  |  | 3028|      4|                    stack_pointer[-2] = callargs_st;
  |  | 3029|      4|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 3030|      4|                    result_o = PyObject_Call(func, callargs, kwargs);
  |  | 3031|      4|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 3032|      4|                }
  |  | 3033|      4|                stack_pointer += -1;
  |  | 3034|      4|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      4|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 3035|      4|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 3036|      4|                PyStackRef_XCLOSE(kwargs_st);
  |  | 3037|      4|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 3038|      4|                stack_pointer += -1;
  |  | 3039|      4|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      4|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 3040|      4|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 3041|      4|                PyStackRef_CLOSE(callargs_st);
  |  | 3042|      4|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 3043|      4|                stack_pointer += -2;
  |  | 3044|      4|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      4|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 3045|      4|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 3046|      4|                PyStackRef_CLOSE(func_st);
  |  | 3047|      4|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 3048|      4|                if (result_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (3048:21): [True: 0, False: 4]
  |  |  ------------------
  |  | 3049|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 3050|      0|                }
  |  | 3051|      4|                result = PyStackRef_FromPyObjectSteal(result_o);
  |  | 3052|      4|            }
  |  | 3053|       |            // _CHECK_PERIODIC_AT_END
  |  | 3054|      0|            {
  |  | 3055|      4|                stack_pointer[0] = result;
  |  | 3056|      4|                stack_pointer += 1;
  |  | 3057|      4|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      4|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 3058|      4|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 3059|      4|                int err = check_periodics(tstate);
  |  | 3060|      4|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 3061|      4|                if (err != 0) {
  |  |  ------------------
  |  |  |  Branch (3061:21): [True: 0, False: 4]
  |  |  ------------------
  |  | 3062|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 3063|      0|                }
  |  | 3064|      4|            }
  |  | 3065|      4|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      4|    { \
  |  |  |  |  201|      4|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      4|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      4|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      4|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      4|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      4|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      4|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      4|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      4|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      4|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      4|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      4|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      4|    }
  |  |  ------------------
  |  |  |  Branch (3065:13): [True: 4, False: 0]
  |  |  ------------------
  |  | 3066|      4|        }
  |  | 3067|       |
  |  | 3068|      8|        TARGET(CALL_INTRINSIC_1) {
  |  |  ------------------
  |  |  |  |  132|      8|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 3069|       |            #if _Py_TAIL_CALL_INTERP
  |  | 3070|       |            int opcode = CALL_INTRINSIC_1;
  |  | 3071|       |            (void)(opcode);
  |  | 3072|       |            #endif
  |  | 3073|      8|            frame->instr_ptr = next_instr;
  |  | 3074|      8|            next_instr += 1;
  |  | 3075|      8|            INSTRUCTION_STATS(CALL_INTRINSIC_1);
  |  |  ------------------
  |  |  |  |   71|      8|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 3076|      8|            _PyStackRef value;
  |  | 3077|      8|            _PyStackRef res;
  |  | 3078|      8|            _PyStackRef v;
  |  | 3079|       |            // _CALL_INTRINSIC_1
  |  | 3080|      8|            {
  |  | 3081|      8|                value = stack_pointer[-1];
  |  | 3082|      8|                assert(oparg <= MAX_INTRINSIC_1);
  |  |  ------------------
  |  |  |  Branch (3082:17): [True: 8, False: 0]
  |  |  ------------------
  |  | 3083|      8|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 3084|      8|                PyObject *res_o = _PyIntrinsics_UnaryFunctions[oparg].func(tstate, PyStackRef_AsPyObjectBorrow(value));
  |  | 3085|      8|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 3086|      8|                if (res_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (3086:21): [True: 0, False: 8]
  |  |  ------------------
  |  | 3087|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 3088|      0|                }
  |  | 3089|      8|                v = value;
  |  | 3090|      8|                res = PyStackRef_FromPyObjectSteal(res_o);
  |  | 3091|      8|            }
  |  | 3092|       |            // _POP_TOP
  |  | 3093|      0|            {
  |  | 3094|      8|                value = v;
  |  | 3095|      8|                stack_pointer[-1] = res;
  |  | 3096|      8|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 3097|      8|                PyStackRef_XCLOSE(value);
  |  | 3098|      8|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 3099|      8|            }
  |  | 3100|      8|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      8|    { \
  |  |  |  |  201|      8|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      8|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      8|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      8|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      8|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      8|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      8|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      8|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 8]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      8|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      8|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      8|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      8|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      8|    }
  |  |  ------------------
  |  |  |  Branch (3100:13): [True: 8, False: 0]
  |  |  ------------------
  |  | 3101|      8|        }
  |  | 3102|       |
  |  | 3103|      0|        TARGET(CALL_INTRINSIC_2) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 3104|       |            #if _Py_TAIL_CALL_INTERP
  |  | 3105|       |            int opcode = CALL_INTRINSIC_2;
  |  | 3106|       |            (void)(opcode);
  |  | 3107|       |            #endif
  |  | 3108|      0|            frame->instr_ptr = next_instr;
  |  | 3109|      0|            next_instr += 1;
  |  | 3110|      0|            INSTRUCTION_STATS(CALL_INTRINSIC_2);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 3111|      0|            _PyStackRef value2_st;
  |  | 3112|      0|            _PyStackRef value1_st;
  |  | 3113|      0|            _PyStackRef res;
  |  | 3114|      0|            _PyStackRef vs1;
  |  | 3115|      0|            _PyStackRef vs2;
  |  | 3116|      0|            _PyStackRef value;
  |  | 3117|       |            // _CALL_INTRINSIC_2
  |  | 3118|      0|            {
  |  | 3119|      0|                value1_st = stack_pointer[-1];
  |  | 3120|      0|                value2_st = stack_pointer[-2];
  |  | 3121|      0|                assert(oparg <= MAX_INTRINSIC_2);
  |  |  ------------------
  |  |  |  Branch (3121:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 3122|      0|                PyObject *value1 = PyStackRef_AsPyObjectBorrow(value1_st);
  |  | 3123|      0|                PyObject *value2 = PyStackRef_AsPyObjectBorrow(value2_st);
  |  | 3124|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 3125|      0|                PyObject *res_o = _PyIntrinsics_BinaryFunctions[oparg].func(tstate, value2, value1);
  |  | 3126|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 3127|      0|                if (res_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (3127:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 3128|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 3129|      0|                }
  |  | 3130|      0|                res = PyStackRef_FromPyObjectSteal(res_o);
  |  | 3131|      0|                vs1 = value1_st;
  |  | 3132|      0|                vs2 = value2_st;
  |  | 3133|      0|            }
  |  | 3134|       |            // _POP_TOP
  |  | 3135|      0|            {
  |  | 3136|      0|                value = vs2;
  |  | 3137|      0|                stack_pointer[-2] = res;
  |  | 3138|      0|                stack_pointer[-1] = vs1;
  |  | 3139|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 3140|      0|                PyStackRef_XCLOSE(value);
  |  | 3141|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 3142|      0|            }
  |  | 3143|       |            // _POP_TOP
  |  | 3144|      0|            {
  |  | 3145|      0|                value = vs1;
  |  | 3146|      0|                stack_pointer += -1;
  |  | 3147|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 3148|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 3149|      0|                PyStackRef_XCLOSE(value);
  |  | 3150|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 3151|      0|            }
  |  | 3152|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (3152:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 3153|      0|        }
  |  | 3154|       |
  |  | 3155|     36|        TARGET(CALL_ISINSTANCE) {
  |  |  ------------------
  |  |  |  |  132|     36|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 3156|       |            #if _Py_TAIL_CALL_INTERP
  |  | 3157|       |            int opcode = CALL_ISINSTANCE;
  |  | 3158|       |            (void)(opcode);
  |  | 3159|       |            #endif
  |  | 3160|     36|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 3161|     36|            (void)this_instr;
  |  | 3162|     36|            frame->instr_ptr = next_instr;
  |  | 3163|     36|            next_instr += 4;
  |  | 3164|     36|            INSTRUCTION_STATS(CALL_ISINSTANCE);
  |  |  ------------------
  |  |  |  |   71|     36|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 3165|     36|            static_assert(INLINE_CACHE_ENTRIES_CALL == 3, "incorrect cache size");
  |  | 3166|     36|            _PyStackRef null;
  |  | 3167|     36|            _PyStackRef callable;
  |  | 3168|     36|            _PyStackRef instance;
  |  | 3169|     36|            _PyStackRef cls;
  |  | 3170|     36|            _PyStackRef res;
  |  | 3171|       |            /* Skip 1 cache entry */
  |  | 3172|       |            /* Skip 2 cache entries */
  |  | 3173|       |            // _GUARD_THIRD_NULL
  |  | 3174|     36|            {
  |  | 3175|     36|                null = stack_pointer[-3];
  |  | 3176|     36|                if (!PyStackRef_IsNull(null)) {
  |  |  ------------------
  |  |  |  |  470|     36|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|     36|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     36|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (3176:21): [True: 0, False: 36]
  |  |  ------------------
  |  | 3177|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 3178|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (3178:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 3179|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 3180|      0|                }
  |  | 3181|     36|            }
  |  | 3182|       |            // _GUARD_CALLABLE_ISINSTANCE
  |  | 3183|     36|            {
  |  | 3184|     36|                callable = stack_pointer[-4];
  |  | 3185|     36|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 3186|     36|                PyInterpreterState *interp = tstate->interp;
  |  | 3187|     36|                if (callable_o != interp->callable_cache.isinstance) {
  |  |  ------------------
  |  |  |  Branch (3187:21): [True: 0, False: 36]
  |  |  ------------------
  |  | 3188|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 3189|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (3189:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 3190|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 3191|      0|                }
  |  | 3192|     36|            }
  |  | 3193|       |            // _CALL_ISINSTANCE
  |  | 3194|     36|            {
  |  | 3195|     36|                cls = stack_pointer[-1];
  |  | 3196|     36|                instance = stack_pointer[-2];
  |  | 3197|     36|                STAT_INC(CALL, hit);
  |  |  ------------------
  |  |  |  |   73|     36|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 3198|     36|                PyObject *inst_o = PyStackRef_AsPyObjectBorrow(instance);
  |  | 3199|     36|                PyObject *cls_o = PyStackRef_AsPyObjectBorrow(cls);
  |  | 3200|     36|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 3201|     36|                int retval = PyObject_IsInstance(inst_o, cls_o);
  |  | 3202|     36|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 3203|     36|                if (retval < 0) {
  |  |  ------------------
  |  |  |  Branch (3203:21): [True: 0, False: 36]
  |  |  ------------------
  |  | 3204|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 3205|      0|                }
  |  | 3206|     36|                (void)null;
  |  | 3207|     36|                stack_pointer += -1;
  |  | 3208|     36|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     36|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 3209|     36|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 3210|     36|                PyStackRef_CLOSE(cls);
  |  | 3211|     36|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 3212|     36|                stack_pointer += -1;
  |  | 3213|     36|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     36|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 3214|     36|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 3215|     36|                PyStackRef_CLOSE(instance);
  |  | 3216|     36|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 3217|     36|                stack_pointer += -2;
  |  | 3218|     36|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     36|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 3219|     36|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 3220|     36|                PyStackRef_CLOSE(callable);
  |  | 3221|     36|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 3222|     36|                res = retval ? PyStackRef_True : PyStackRef_False;
  |  |  ------------------
  |  |  |  |  471|     15|#define PyStackRef_True ((_PyStackRef){.bits = ((uintptr_t)&_Py_TrueStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     15|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                               res = retval ? PyStackRef_True : PyStackRef_False;
  |  |  ------------------
  |  |  |  |  472|     57|#define PyStackRef_False ((_PyStackRef){.bits = ((uintptr_t)&_Py_FalseStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     21|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (3222:23): [True: 15, False: 21]
  |  |  ------------------
  |  | 3223|     36|                assert((!PyStackRef_IsNull(res)) ^ (_PyErr_Occurred(tstate) != NULL));
  |  |  ------------------
  |  |  |  Branch (3223:17): [True: 36, False: 0]
  |  |  ------------------
  |  | 3224|     36|            }
  |  | 3225|     36|            stack_pointer[0] = res;
  |  | 3226|     36|            stack_pointer += 1;
  |  | 3227|     36|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     36|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 3228|     36|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     36|    { \
  |  |  |  |  201|     36|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     36|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     36|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     36|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     36|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     36|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     36|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     36|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 36]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     36|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     36|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     36|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     36|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     36|    }
  |  |  ------------------
  |  |  |  Branch (3228:13): [True: 36, False: 0]
  |  |  ------------------
  |  | 3229|     36|        }
  |  | 3230|       |
  |  | 3231|     33|        TARGET(CALL_KW) {
  |  |  ------------------
  |  |  |  |  132|     33|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 3232|       |            #if _Py_TAIL_CALL_INTERP
  |  | 3233|       |            int opcode = CALL_KW;
  |  | 3234|       |            (void)(opcode);
  |  | 3235|       |            #endif
  |  | 3236|     33|            frame->instr_ptr = next_instr;
  |  | 3237|     33|            next_instr += 4;
  |  | 3238|     33|            INSTRUCTION_STATS(CALL_KW);
  |  |  ------------------
  |  |  |  |   71|     33|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 3239|     33|            PREDICTED_CALL_KW:;
  |  | 3240|     33|            _Py_CODEUNIT* const this_instr = next_instr - 4;
  |  | 3241|     33|            (void)this_instr;
  |  | 3242|     33|            opcode = CALL_KW;
  |  |  ------------------
  |  |  |  |   66|     33|#define CALL_KW                                 53
  |  |  ------------------
  |  | 3243|     33|            _PyStackRef callable;
  |  | 3244|     33|            _PyStackRef self_or_null;
  |  | 3245|     33|            _PyStackRef *args;
  |  | 3246|     33|            _PyStackRef kwnames;
  |  | 3247|     33|            _PyStackRef res;
  |  | 3248|       |            // _SPECIALIZE_CALL_KW
  |  | 3249|     33|            {
  |  | 3250|     33|                self_or_null = stack_pointer[-2 - oparg];
  |  | 3251|     33|                callable = stack_pointer[-3 - oparg];
  |  | 3252|     33|                uint16_t counter = read_u16(&this_instr[1].cache);
  |  | 3253|     33|                (void)counter;
  |  | 3254|     33|                #if ENABLE_SPECIALIZATION
  |  | 3255|     33|                if (ADAPTIVE_COUNTER_TRIGGERS(counter)) {
  |  |  ------------------
  |  |  |  |  354|     33|    backoff_counter_triggers(forge_backoff_counter((COUNTER)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (354:5): [True: 8, False: 25]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3256|      8|                    next_instr = this_instr;
  |  | 3257|      8|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 3258|      8|                    _Py_Specialize_CallKw(callable, next_instr, oparg + !PyStackRef_IsNull(self_or_null));
  |  |  ------------------
  |  |  |  |  470|      8|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|      8|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      8|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3259|      8|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 3260|      8|                    DISPATCH_SAME_OPARG();
  |  |  ------------------
  |  |  |  |  216|      8|    { \
  |  |  |  |  217|      8|        opcode = next_instr->op.code; \
  |  |  |  |  218|      8|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      8|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  219|      8|        DISPATCH_GOTO_NON_TRACING(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  134|      8|#  define DISPATCH_GOTO_NON_TRACING() goto *DISPATCH_TABLE[opcode];
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  130|      8|#  define DISPATCH_TABLE opcode_targets_table
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  220|      8|    }
  |  |  ------------------
  |  | 3261|      8|                }
  |  | 3262|     33|                OPCODE_DEFERRED_INC(CALL_KW);
  |  |  ------------------
  |  |  |  |   90|     33|#define OPCODE_DEFERRED_INC(opname) ((void)0)
  |  |  ------------------
  |  | 3263|     33|                ADVANCE_ADAPTIVE_COUNTER(this_instr[1].counter);
  |  |  ------------------
  |  |  |  |  357|     33|    do { \
  |  |  |  |  358|     33|        (COUNTER) = advance_backoff_counter((COUNTER)); \
  |  |  |  |  359|     33|    } while (0);
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (359:14): [Folded, False: 33]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3264|     33|                #endif  /* ENABLE_SPECIALIZATION */
  |  | 3265|     33|            }
  |  | 3266|       |            /* Skip 2 cache entries */
  |  | 3267|       |            // _MAYBE_EXPAND_METHOD_KW
  |  | 3268|     33|            {
  |  | 3269|     33|                if (PyStackRef_TYPE(callable) == &PyMethod_Type && PyStackRef_IsNull(self_or_null)) {
  |  |  ------------------
  |  |  |  |  470|      0|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|      0|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      0|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (470:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (3269:21): [True: 0, False: 33]
  |  |  ------------------
  |  | 3270|      0|                    PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 3271|      0|                    PyObject *self = ((PyMethodObject *)callable_o)->im_self;
  |  | 3272|      0|                    self_or_null = PyStackRef_FromPyObjectNew(self);
  |  |  ------------------
  |  |  |  |  599|      0|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3273|      0|                    PyObject *method = ((PyMethodObject *)callable_o)->im_func;
  |  | 3274|      0|                    _PyStackRef temp = callable;
  |  | 3275|      0|                    callable = PyStackRef_FromPyObjectNew(method);
  |  |  ------------------
  |  |  |  |  599|      0|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3276|      0|                    stack_pointer[-3 - oparg] = callable;
  |  | 3277|      0|                    stack_pointer[-2 - oparg] = self_or_null;
  |  | 3278|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 3279|      0|                    PyStackRef_CLOSE(temp);
  |  | 3280|      0|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 3281|      0|                }
  |  | 3282|     33|            }
  |  | 3283|       |            // _DO_CALL_KW
  |  | 3284|     33|            {
  |  | 3285|     33|                kwnames = stack_pointer[-1];
  |  | 3286|     33|                args = &stack_pointer[-1 - oparg];
  |  | 3287|     33|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 3288|     33|                PyObject *kwnames_o = PyStackRef_AsPyObjectBorrow(kwnames);
  |  | 3289|     33|                int total_args = oparg;
  |  | 3290|     33|                _PyStackRef *arguments = args;
  |  | 3291|     33|                if (!PyStackRef_IsNull(self_or_null)) {
  |  |  ------------------
  |  |  |  |  470|     33|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|     33|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     33|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (3291:21): [True: 0, False: 33]
  |  |  ------------------
  |  | 3292|      0|                    arguments--;
  |  | 3293|      0|                    total_args++;
  |  | 3294|      0|                }
  |  | 3295|     33|                int positional_args = total_args - (int)PyTuple_GET_SIZE(kwnames_o);
  |  |  ------------------
  |  |  |  |   27|     33|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     33|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     33|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3296|     33|                if (Py_TYPE(callable_o) == &PyFunction_Type &&
  |  |  ------------------
  |  |  |  |  213|     33|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     33|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     33|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (3296:21): [True: 6, False: 27]
  |  |  ------------------
  |  | 3297|      6|                    !IS_PEP523_HOOKED(tstate) &&
  |  |  ------------------
  |  |  |  |  517|     39|#define IS_PEP523_HOOKED(tstate) (tstate->interp->eval_frame != NULL)
  |  |  ------------------
  |  |  |  Branch (3297:21): [True: 6, False: 0]
  |  |  ------------------
  |  | 3298|      6|                    ((PyFunctionObject *)callable_o)->vectorcall == _PyFunction_Vectorcall)
  |  |  ------------------
  |  |  |  Branch (3298:21): [True: 6, False: 0]
  |  |  ------------------
  |  | 3299|      6|                {
  |  | 3300|      6|                    int code_flags = ((PyCodeObject*)PyFunction_GET_CODE(callable_o))->co_flags;
  |  |  ------------------
  |  |  |  |   93|      6|#define PyFunction_GET_CODE(func) PyFunction_GET_CODE(_PyObject_CAST(func))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      6|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3301|      6|                    PyObject *locals = code_flags & CO_OPTIMIZED ? NULL : Py_NewRef(PyFunction_GET_GLOBALS(callable_o));
  |  |  ------------------
  |  |  |  |  118|      6|#define CO_OPTIMIZED    0x0001
  |  |  ------------------
  |  |                                   PyObject *locals = code_flags & CO_OPTIMIZED ? NULL : Py_NewRef(PyFunction_GET_GLOBALS(callable_o));
  |  |  ------------------
  |  |  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (3301:40): [True: 6, False: 0]
  |  |  ------------------
  |  | 3302|      6|                    stack_pointer[-3 - oparg] = callable;
  |  | 3303|      6|                    stack_pointer[-2 - oparg] = self_or_null;
  |  | 3304|      6|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 3305|      6|                    _PyInterpreterFrame *new_frame = _PyEvalFramePushAndInit(
  |  | 3306|      6|                        tstate, callable, locals,
  |  | 3307|      6|                        arguments, positional_args, kwnames_o, frame
  |  | 3308|      6|                    );
  |  | 3309|      6|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 3310|      6|                    stack_pointer += -3 - oparg;
  |  | 3311|      6|                    ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      6|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 3312|      6|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 3313|      6|                    PyStackRef_CLOSE(kwnames);
  |  | 3314|      6|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 3315|      6|                    if (new_frame == NULL) {
  |  |  ------------------
  |  |  |  Branch (3315:25): [True: 0, False: 6]
  |  |  ------------------
  |  | 3316|      0|                        JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 3317|      0|                    }
  |  | 3318|      6|                    assert( 4u == 1 + INLINE_CACHE_ENTRIES_CALL_KW);
  |  |  ------------------
  |  |  |  Branch (3318:21): [True: 6, Folded]
  |  |  ------------------
  |  | 3319|      6|                    frame->return_offset = 4u ;
  |  | 3320|      6|                    DISPATCH_INLINED(new_frame);
  |  |  ------------------
  |  |  |  |  223|      6|    do {                                                         \
  |  |  |  |  224|      6|        assert(!IS_PEP523_HOOKED(tstate));                       \
  |  |  |  |  225|      6|        _PyFrame_SetStackPointer(frame, stack_pointer);          \
  |  |  |  |  226|      6|        assert((NEW_FRAME)->previous == frame);                  \
  |  |  |  |  227|      6|        frame = tstate->current_frame = (NEW_FRAME);             \
  |  |  |  |  228|      6|        CALL_STAT_INC(inlined_py_calls);                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|      6|#define CALL_STAT_INC(name) ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  229|      6|        JUMP_TO_LABEL(start_frame);                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  135|      6|#  define JUMP_TO_LABEL(name) goto name;
  |  |  |  |  ------------------
  |  |  |  |  230|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (230:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (3320:21): [True: 6, False: 0]
  |  |  |  Branch (3320:21): [True: 6, False: 0]
  |  |  ------------------
  |  | 3321|      6|                }
  |  | 3322|     27|                stack_pointer[-3 - oparg] = callable;
  |  | 3323|     27|                stack_pointer[-2 - oparg] = self_or_null;
  |  | 3324|     27|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 3325|     27|                PyObject* res_o = _Py_VectorCallInstrumentation_StackRefSteal(
  |  | 3326|     27|                    callable,
  |  | 3327|     27|                    arguments,
  |  | 3328|     27|                    total_args,
  |  | 3329|     27|                    kwnames,
  |  | 3330|     27|                    opcode == INSTRUMENTED_CALL_KW,
  |  |  ------------------
  |  |  |  |  241|     27|#define INSTRUMENTED_CALL_KW                   250
  |  |  ------------------
  |  | 3331|     27|                    frame,
  |  | 3332|     27|                    this_instr,
  |  | 3333|     27|                    tstate);
  |  | 3334|     27|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 3335|     27|                if (res_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (3335:21): [True: 0, False: 27]
  |  |  ------------------
  |  | 3336|      0|                    stack_pointer += -3 - oparg;
  |  | 3337|      0|                    ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 3338|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 3339|      0|                }
  |  | 3340|     27|                res = PyStackRef_FromPyObjectSteal(res_o);
  |  | 3341|     27|            }
  |  | 3342|      0|            stack_pointer[-3 - oparg] = res;
  |  | 3343|     27|            stack_pointer += -2 - oparg;
  |  | 3344|     27|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     27|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 3345|     27|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     27|    { \
  |  |  |  |  201|     27|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     27|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     19|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     19|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     19|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     19|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     19|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     19|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 19]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     19|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     19|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     19|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     19|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     19|    }
  |  |  ------------------
  |  |  |  Branch (3345:13): [True: 19, False: 8]
  |  |  ------------------
  |  | 3346|     19|        }
  |  | 3347|       |
  |  | 3348|      0|        TARGET(CALL_KW_BOUND_METHOD) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 3349|       |            #if _Py_TAIL_CALL_INTERP
  |  | 3350|       |            int opcode = CALL_KW_BOUND_METHOD;
  |  | 3351|       |            (void)(opcode);
  |  | 3352|       |            #endif
  |  | 3353|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 3354|      0|            (void)this_instr;
  |  | 3355|      0|            frame->instr_ptr = next_instr;
  |  | 3356|      0|            next_instr += 4;
  |  | 3357|      0|            INSTRUCTION_STATS(CALL_KW_BOUND_METHOD);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 3358|      0|            static_assert(INLINE_CACHE_ENTRIES_CALL_KW == 3, "incorrect cache size");
  |  | 3359|      0|            _PyStackRef callable;
  |  | 3360|      0|            _PyStackRef null;
  |  | 3361|      0|            _PyStackRef self_or_null;
  |  | 3362|      0|            _PyStackRef *args;
  |  | 3363|      0|            _PyStackRef kwnames;
  |  | 3364|      0|            _PyStackRef new_frame;
  |  | 3365|       |            /* Skip 1 cache entry */
  |  | 3366|       |            // _CHECK_PEP_523
  |  | 3367|      0|            {
  |  | 3368|      0|                if (IS_PEP523_HOOKED(tstate)) {
  |  |  ------------------
  |  |  |  |  517|      0|#define IS_PEP523_HOOKED(tstate) (tstate->interp->eval_frame != NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (517:34): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3369|      0|                    UPDATE_MISS_STATS(CALL_KW);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 3370|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL_KW));
  |  |  ------------------
  |  |  |  Branch (3370:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 3371|      0|                    JUMP_TO_PREDICTED(CALL_KW);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 3372|      0|                }
  |  | 3373|      0|            }
  |  | 3374|       |            // _CHECK_METHOD_VERSION_KW
  |  | 3375|      0|            {
  |  | 3376|      0|                null = stack_pointer[-2 - oparg];
  |  | 3377|      0|                callable = stack_pointer[-3 - oparg];
  |  | 3378|      0|                uint32_t func_version = read_u32(&this_instr[2].cache);
  |  | 3379|      0|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 3380|      0|                if (Py_TYPE(callable_o) != &PyMethod_Type) {
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (3380:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 3381|      0|                    UPDATE_MISS_STATS(CALL_KW);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 3382|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL_KW));
  |  |  ------------------
  |  |  |  Branch (3382:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 3383|      0|                    JUMP_TO_PREDICTED(CALL_KW);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 3384|      0|                }
  |  | 3385|      0|                PyObject *func = ((PyMethodObject *)callable_o)->im_func;
  |  | 3386|      0|                if (!PyFunction_Check(func)) {
  |  |  ------------------
  |  |  |  |   68|      0|#define PyFunction_Check(op) Py_IS_TYPE((op), &PyFunction_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      0|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (3386:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 3387|      0|                    UPDATE_MISS_STATS(CALL_KW);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 3388|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL_KW));
  |  |  ------------------
  |  |  |  Branch (3388:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 3389|      0|                    JUMP_TO_PREDICTED(CALL_KW);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 3390|      0|                }
  |  | 3391|      0|                if (((PyFunctionObject *)func)->func_version != func_version) {
  |  |  ------------------
  |  |  |  Branch (3391:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 3392|      0|                    UPDATE_MISS_STATS(CALL_KW);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 3393|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL_KW));
  |  |  ------------------
  |  |  |  Branch (3393:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 3394|      0|                    JUMP_TO_PREDICTED(CALL_KW);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 3395|      0|                }
  |  | 3396|      0|                if (!PyStackRef_IsNull(null)) {
  |  |  ------------------
  |  |  |  |  470|      0|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|      0|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      0|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (3396:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 3397|      0|                    UPDATE_MISS_STATS(CALL_KW);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 3398|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL_KW));
  |  |  ------------------
  |  |  |  Branch (3398:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 3399|      0|                    JUMP_TO_PREDICTED(CALL_KW);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 3400|      0|                }
  |  | 3401|      0|            }
  |  | 3402|       |            // _EXPAND_METHOD_KW
  |  | 3403|      0|            {
  |  | 3404|      0|                self_or_null = null;
  |  | 3405|      0|                assert(PyStackRef_IsNull(self_or_null));
  |  |  ------------------
  |  |  |  Branch (3405:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 3406|      0|                _PyStackRef callable_s = callable;
  |  | 3407|      0|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 3408|      0|                assert(Py_TYPE(callable_o) == &PyMethod_Type);
  |  |  ------------------
  |  |  |  Branch (3408:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 3409|      0|                self_or_null = PyStackRef_FromPyObjectNew(((PyMethodObject *)callable_o)->im_self);
  |  |  ------------------
  |  |  |  |  599|      0|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3410|      0|                callable = PyStackRef_FromPyObjectNew(((PyMethodObject *)callable_o)->im_func);
  |  |  ------------------
  |  |  |  |  599|      0|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3411|      0|                assert(PyStackRef_FunctionCheck(callable));
  |  |  ------------------
  |  |  |  Branch (3411:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 3412|      0|                stack_pointer[-3 - oparg] = callable;
  |  | 3413|      0|                stack_pointer[-2 - oparg] = self_or_null;
  |  | 3414|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 3415|      0|                PyStackRef_CLOSE(callable_s);
  |  | 3416|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 3417|      0|            }
  |  | 3418|       |            // flush
  |  | 3419|       |            // _PY_FRAME_KW
  |  | 3420|      0|            {
  |  | 3421|      0|                kwnames = stack_pointer[-1];
  |  | 3422|      0|                args = &stack_pointer[-1 - oparg];
  |  | 3423|      0|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 3424|      0|                int total_args = oparg;
  |  | 3425|      0|                _PyStackRef *arguments = args;
  |  | 3426|      0|                if (!PyStackRef_IsNull(self_or_null)) {
  |  |  ------------------
  |  |  |  |  470|      0|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|      0|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      0|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (3426:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 3427|      0|                    arguments--;
  |  | 3428|      0|                    total_args++;
  |  | 3429|      0|                }
  |  | 3430|      0|                PyObject *kwnames_o = PyStackRef_AsPyObjectBorrow(kwnames);
  |  | 3431|      0|                int positional_args = total_args - (int)PyTuple_GET_SIZE(kwnames_o);
  |  |  ------------------
  |  |  |  |   27|      0|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3432|      0|                assert(Py_TYPE(callable_o) == &PyFunction_Type);
  |  |  ------------------
  |  |  |  Branch (3432:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 3433|      0|                int code_flags = ((PyCodeObject*)PyFunction_GET_CODE(callable_o))->co_flags;
  |  |  ------------------
  |  |  |  |   93|      0|#define PyFunction_GET_CODE(func) PyFunction_GET_CODE(_PyObject_CAST(func))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3434|      0|                PyObject *locals = code_flags & CO_OPTIMIZED ? NULL : Py_NewRef(PyFunction_GET_GLOBALS(callable_o));
  |  |  ------------------
  |  |  |  |  118|      0|#define CO_OPTIMIZED    0x0001
  |  |  ------------------
  |  |                               PyObject *locals = code_flags & CO_OPTIMIZED ? NULL : Py_NewRef(PyFunction_GET_GLOBALS(callable_o));
  |  |  ------------------
  |  |  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (3434:36): [True: 0, False: 0]
  |  |  ------------------
  |  | 3435|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 3436|      0|                _PyInterpreterFrame *temp = _PyEvalFramePushAndInit(
  |  | 3437|      0|                    tstate, callable, locals,
  |  | 3438|      0|                    arguments, positional_args, kwnames_o, frame
  |  | 3439|      0|                );
  |  | 3440|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 3441|      0|                stack_pointer += -1;
  |  | 3442|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 3443|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 3444|      0|                PyStackRef_CLOSE(kwnames);
  |  | 3445|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 3446|      0|                stack_pointer += -2 - oparg;
  |  | 3447|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 3448|      0|                if (temp == NULL) {
  |  |  ------------------
  |  |  |  Branch (3448:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 3449|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 3450|      0|                }
  |  | 3451|      0|                new_frame = PyStackRef_Wrap(temp);
  |  | 3452|      0|            }
  |  | 3453|       |            // _SAVE_RETURN_OFFSET
  |  | 3454|      0|            {
  |  | 3455|      0|                #if TIER_ONE
  |  | 3456|      0|                frame->return_offset = (uint16_t)(next_instr - this_instr);
  |  | 3457|      0|                #endif
  |  | 3458|       |                #if TIER_TWO
  |  | 3459|       |                frame->return_offset = oparg;
  |  | 3460|       |                #endif
  |  | 3461|      0|            }
  |  | 3462|       |            // _PUSH_FRAME
  |  | 3463|      0|            {
  |  | 3464|      0|                assert(!IS_PEP523_HOOKED(tstate));
  |  |  ------------------
  |  |  |  Branch (3464:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 3465|      0|                _PyInterpreterFrame *temp = PyStackRef_Unwrap(new_frame);
  |  | 3466|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 3467|      0|                assert(temp->previous == frame || temp->previous->previous == frame);
  |  |  ------------------
  |  |  |  Branch (3467:17): [True: 0, False: 0]
  |  |  |  Branch (3467:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 3468|      0|                CALL_STAT_INC(inlined_py_calls);
  |  |  ------------------
  |  |  |  |   76|      0|#define CALL_STAT_INC(name) ((void)0)
  |  |  ------------------
  |  | 3469|      0|                frame = tstate->current_frame = temp;
  |  | 3470|      0|                tstate->py_recursion_remaining--;
  |  | 3471|      0|                LOAD_SP();
  |  |  ------------------
  |  |  |  |  425|      0|#define LOAD_SP() \
  |  |  |  |  426|      0|stack_pointer = _PyFrame_GetStackPointer(frame)
  |  |  ------------------
  |  | 3472|      0|                LOAD_IP(0);
  |  |  ------------------
  |  |  |  |  419|      0|#define LOAD_IP(OFFSET) do { \
  |  |  |  |  420|      0|        next_instr = frame->instr_ptr + (OFFSET); \
  |  |  |  |  421|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3473|      0|                DTRACE_FUNCTION_ENTRY();
  |  |  ------------------
  |  |  |  |  345|      0|#define DTRACE_FUNCTION_ENTRY() ((void)0)
  |  |  ------------------
  |  | 3474|      0|                LLTRACE_RESUME_FRAME();
  |  |  ------------------
  |  |  |  |  188|      0|#define LLTRACE_RESUME_FRAME() ((void)0)
  |  |  ------------------
  |  | 3475|      0|            }
  |  | 3476|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (3476:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 3477|      0|        }
  |  | 3478|       |
  |  | 3479|     44|        TARGET(CALL_KW_NON_PY) {
  |  |  ------------------
  |  |  |  |  132|     44|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 3480|       |            #if _Py_TAIL_CALL_INTERP
  |  | 3481|       |            int opcode = CALL_KW_NON_PY;
  |  | 3482|       |            (void)(opcode);
  |  | 3483|       |            #endif
  |  | 3484|     44|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 3485|     44|            (void)this_instr;
  |  | 3486|     44|            frame->instr_ptr = next_instr;
  |  | 3487|     44|            next_instr += 4;
  |  | 3488|     44|            INSTRUCTION_STATS(CALL_KW_NON_PY);
  |  |  ------------------
  |  |  |  |   71|     44|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 3489|     44|            opcode = CALL_KW_NON_PY;
  |  |  ------------------
  |  |  |  |  160|     44|#define CALL_KW_NON_PY                         155
  |  |  ------------------
  |  | 3490|     44|            static_assert(INLINE_CACHE_ENTRIES_CALL_KW == 3, "incorrect cache size");
  |  | 3491|     44|            _PyStackRef callable;
  |  | 3492|     44|            _PyStackRef self_or_null;
  |  | 3493|     44|            _PyStackRef *args;
  |  | 3494|     44|            _PyStackRef kwnames;
  |  | 3495|     44|            _PyStackRef res;
  |  | 3496|       |            /* Skip 1 cache entry */
  |  | 3497|       |            /* Skip 2 cache entries */
  |  | 3498|       |            // _CHECK_IS_NOT_PY_CALLABLE_KW
  |  | 3499|     44|            {
  |  | 3500|     44|                callable = stack_pointer[-3 - oparg];
  |  | 3501|     44|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 3502|     44|                if (PyFunction_Check(callable_o)) {
  |  |  ------------------
  |  |  |  |   68|     44|#define PyFunction_Check(op) Py_IS_TYPE((op), &PyFunction_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|     44|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|     44|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     44|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (65:5): [True: 0, False: 44]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3503|      0|                    UPDATE_MISS_STATS(CALL_KW);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 3504|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL_KW));
  |  |  ------------------
  |  |  |  Branch (3504:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 3505|      0|                    JUMP_TO_PREDICTED(CALL_KW);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 3506|      0|                }
  |  | 3507|     44|                if (Py_TYPE(callable_o) == &PyMethod_Type) {
  |  |  ------------------
  |  |  |  |  213|     44|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     44|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     44|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (3507:21): [True: 0, False: 44]
  |  |  ------------------
  |  | 3508|      0|                    UPDATE_MISS_STATS(CALL_KW);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 3509|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL_KW));
  |  |  ------------------
  |  |  |  Branch (3509:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 3510|      0|                    JUMP_TO_PREDICTED(CALL_KW);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 3511|      0|                }
  |  | 3512|     44|            }
  |  | 3513|       |            // _CALL_KW_NON_PY
  |  | 3514|     44|            {
  |  | 3515|     44|                kwnames = stack_pointer[-1];
  |  | 3516|     44|                args = &stack_pointer[-1 - oparg];
  |  | 3517|     44|                self_or_null = stack_pointer[-2 - oparg];
  |  | 3518|     44|                #if TIER_ONE
  |  | 3519|     44|                assert(opcode != INSTRUMENTED_CALL);
  |  |  ------------------
  |  |  |  Branch (3519:17): [True: 44, False: 0]
  |  |  ------------------
  |  | 3520|     44|                #endif
  |  | 3521|     44|                int total_args = oparg;
  |  | 3522|     44|                _PyStackRef *arguments = args;
  |  | 3523|     44|                if (!PyStackRef_IsNull(self_or_null)) {
  |  |  ------------------
  |  |  |  |  470|     44|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|     44|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     44|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (3523:21): [True: 0, False: 44]
  |  |  ------------------
  |  | 3524|      0|                    arguments--;
  |  | 3525|      0|                    total_args++;
  |  | 3526|      0|                }
  |  | 3527|     44|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 3528|     44|                PyObject *res_o = _Py_VectorCall_StackRefSteal(
  |  | 3529|     44|                    callable,
  |  | 3530|     44|                    arguments,
  |  | 3531|     44|                    total_args,
  |  | 3532|     44|                    kwnames);
  |  | 3533|     44|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 3534|     44|                if (res_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (3534:21): [True: 0, False: 44]
  |  |  ------------------
  |  | 3535|      0|                    stack_pointer += -3 - oparg;
  |  | 3536|      0|                    ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 3537|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 3538|      0|                }
  |  | 3539|     44|                res = PyStackRef_FromPyObjectSteal(res_o);
  |  | 3540|     44|            }
  |  | 3541|       |            // _CHECK_PERIODIC_AT_END
  |  | 3542|      0|            {
  |  | 3543|     44|                stack_pointer[-3 - oparg] = res;
  |  | 3544|     44|                stack_pointer += -2 - oparg;
  |  | 3545|     44|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     44|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 3546|     44|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 3547|     44|                int err = check_periodics(tstate);
  |  | 3548|     44|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 3549|     44|                if (err != 0) {
  |  |  ------------------
  |  |  |  Branch (3549:21): [True: 0, False: 44]
  |  |  ------------------
  |  | 3550|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 3551|      0|                }
  |  | 3552|     44|            }
  |  | 3553|     44|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     44|    { \
  |  |  |  |  201|     44|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     44|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     44|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     44|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     44|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     44|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     44|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     44|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 44]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     44|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     44|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     44|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     44|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     44|    }
  |  |  ------------------
  |  |  |  Branch (3553:13): [True: 44, False: 0]
  |  |  ------------------
  |  | 3554|     44|        }
  |  | 3555|       |
  |  | 3556|     58|        TARGET(CALL_KW_PY) {
  |  |  ------------------
  |  |  |  |  132|     58|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 3557|       |            #if _Py_TAIL_CALL_INTERP
  |  | 3558|       |            int opcode = CALL_KW_PY;
  |  | 3559|       |            (void)(opcode);
  |  | 3560|       |            #endif
  |  | 3561|     58|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 3562|     58|            (void)this_instr;
  |  | 3563|     58|            frame->instr_ptr = next_instr;
  |  | 3564|     58|            next_instr += 4;
  |  | 3565|     58|            INSTRUCTION_STATS(CALL_KW_PY);
  |  |  ------------------
  |  |  |  |   71|     58|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 3566|     58|            static_assert(INLINE_CACHE_ENTRIES_CALL_KW == 3, "incorrect cache size");
  |  | 3567|     58|            _PyStackRef callable;
  |  | 3568|     58|            _PyStackRef self_or_null;
  |  | 3569|     58|            _PyStackRef *args;
  |  | 3570|     58|            _PyStackRef kwnames;
  |  | 3571|     58|            _PyStackRef new_frame;
  |  | 3572|       |            /* Skip 1 cache entry */
  |  | 3573|       |            // _CHECK_PEP_523
  |  | 3574|     58|            {
  |  | 3575|     58|                if (IS_PEP523_HOOKED(tstate)) {
  |  |  ------------------
  |  |  |  |  517|     58|#define IS_PEP523_HOOKED(tstate) (tstate->interp->eval_frame != NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (517:34): [True: 0, False: 58]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3576|      0|                    UPDATE_MISS_STATS(CALL_KW);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 3577|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL_KW));
  |  |  ------------------
  |  |  |  Branch (3577:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 3578|      0|                    JUMP_TO_PREDICTED(CALL_KW);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 3579|      0|                }
  |  | 3580|     58|            }
  |  | 3581|       |            // _CHECK_FUNCTION_VERSION_KW
  |  | 3582|     58|            {
  |  | 3583|     58|                callable = stack_pointer[-3 - oparg];
  |  | 3584|     58|                uint32_t func_version = read_u32(&this_instr[2].cache);
  |  | 3585|     58|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 3586|     58|                if (!PyFunction_Check(callable_o)) {
  |  |  ------------------
  |  |  |  |   68|     58|#define PyFunction_Check(op) Py_IS_TYPE((op), &PyFunction_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|     58|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|     58|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     58|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (3586:21): [True: 0, False: 58]
  |  |  ------------------
  |  | 3587|      0|                    UPDATE_MISS_STATS(CALL_KW);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 3588|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL_KW));
  |  |  ------------------
  |  |  |  Branch (3588:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 3589|      0|                    JUMP_TO_PREDICTED(CALL_KW);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 3590|      0|                }
  |  | 3591|     58|                PyFunctionObject *func = (PyFunctionObject *)callable_o;
  |  | 3592|     58|                if (func->func_version != func_version) {
  |  |  ------------------
  |  |  |  Branch (3592:21): [True: 0, False: 58]
  |  |  ------------------
  |  | 3593|      0|                    UPDATE_MISS_STATS(CALL_KW);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 3594|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL_KW));
  |  |  ------------------
  |  |  |  Branch (3594:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 3595|      0|                    JUMP_TO_PREDICTED(CALL_KW);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 3596|      0|                }
  |  | 3597|     58|            }
  |  | 3598|       |            // _CHECK_RECURSION_REMAINING
  |  | 3599|     58|            {
  |  | 3600|     58|                if (tstate->py_recursion_remaining <= 1) {
  |  |  ------------------
  |  |  |  Branch (3600:21): [True: 0, False: 58]
  |  |  ------------------
  |  | 3601|      0|                    UPDATE_MISS_STATS(CALL_KW);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 3602|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL_KW));
  |  |  ------------------
  |  |  |  Branch (3602:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 3603|      0|                    JUMP_TO_PREDICTED(CALL_KW);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 3604|      0|                }
  |  | 3605|     58|            }
  |  | 3606|       |            // _PY_FRAME_KW
  |  | 3607|     58|            {
  |  | 3608|     58|                kwnames = stack_pointer[-1];
  |  | 3609|     58|                args = &stack_pointer[-1 - oparg];
  |  | 3610|     58|                self_or_null = stack_pointer[-2 - oparg];
  |  | 3611|     58|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 3612|     58|                int total_args = oparg;
  |  | 3613|     58|                _PyStackRef *arguments = args;
  |  | 3614|     58|                if (!PyStackRef_IsNull(self_or_null)) {
  |  |  ------------------
  |  |  |  |  470|     58|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|     58|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     58|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (3614:21): [True: 0, False: 58]
  |  |  ------------------
  |  | 3615|      0|                    arguments--;
  |  | 3616|      0|                    total_args++;
  |  | 3617|      0|                }
  |  | 3618|     58|                PyObject *kwnames_o = PyStackRef_AsPyObjectBorrow(kwnames);
  |  | 3619|     58|                int positional_args = total_args - (int)PyTuple_GET_SIZE(kwnames_o);
  |  |  ------------------
  |  |  |  |   27|     58|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     58|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     58|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3620|     58|                assert(Py_TYPE(callable_o) == &PyFunction_Type);
  |  |  ------------------
  |  |  |  Branch (3620:17): [True: 58, False: 0]
  |  |  ------------------
  |  | 3621|     58|                int code_flags = ((PyCodeObject*)PyFunction_GET_CODE(callable_o))->co_flags;
  |  |  ------------------
  |  |  |  |   93|     58|#define PyFunction_GET_CODE(func) PyFunction_GET_CODE(_PyObject_CAST(func))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     58|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     58|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3622|     58|                PyObject *locals = code_flags & CO_OPTIMIZED ? NULL : Py_NewRef(PyFunction_GET_GLOBALS(callable_o));
  |  |  ------------------
  |  |  |  |  118|     58|#define CO_OPTIMIZED    0x0001
  |  |  ------------------
  |  |                               PyObject *locals = code_flags & CO_OPTIMIZED ? NULL : Py_NewRef(PyFunction_GET_GLOBALS(callable_o));
  |  |  ------------------
  |  |  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (3622:36): [True: 58, False: 0]
  |  |  ------------------
  |  | 3623|     58|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 3624|     58|                _PyInterpreterFrame *temp = _PyEvalFramePushAndInit(
  |  | 3625|     58|                    tstate, callable, locals,
  |  | 3626|     58|                    arguments, positional_args, kwnames_o, frame
  |  | 3627|     58|                );
  |  | 3628|     58|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 3629|     58|                stack_pointer += -1;
  |  | 3630|     58|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     58|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 3631|     58|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 3632|     58|                PyStackRef_CLOSE(kwnames);
  |  | 3633|     58|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 3634|     58|                stack_pointer += -2 - oparg;
  |  | 3635|     58|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     58|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 3636|     58|                if (temp == NULL) {
  |  |  ------------------
  |  |  |  Branch (3636:21): [True: 0, False: 58]
  |  |  ------------------
  |  | 3637|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 3638|      0|                }
  |  | 3639|     58|                new_frame = PyStackRef_Wrap(temp);
  |  | 3640|     58|            }
  |  | 3641|       |            // _SAVE_RETURN_OFFSET
  |  | 3642|      0|            {
  |  | 3643|     58|                #if TIER_ONE
  |  | 3644|     58|                frame->return_offset = (uint16_t)(next_instr - this_instr);
  |  | 3645|     58|                #endif
  |  | 3646|       |                #if TIER_TWO
  |  | 3647|       |                frame->return_offset = oparg;
  |  | 3648|       |                #endif
  |  | 3649|     58|            }
  |  | 3650|       |            // _PUSH_FRAME
  |  | 3651|     58|            {
  |  | 3652|     58|                assert(!IS_PEP523_HOOKED(tstate));
  |  |  ------------------
  |  |  |  Branch (3652:17): [True: 58, False: 0]
  |  |  ------------------
  |  | 3653|     58|                _PyInterpreterFrame *temp = PyStackRef_Unwrap(new_frame);
  |  | 3654|     58|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 3655|     58|                assert(temp->previous == frame || temp->previous->previous == frame);
  |  |  ------------------
  |  |  |  Branch (3655:17): [True: 58, False: 0]
  |  |  |  Branch (3655:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 3656|     58|                CALL_STAT_INC(inlined_py_calls);
  |  |  ------------------
  |  |  |  |   76|     58|#define CALL_STAT_INC(name) ((void)0)
  |  |  ------------------
  |  | 3657|     58|                frame = tstate->current_frame = temp;
  |  | 3658|     58|                tstate->py_recursion_remaining--;
  |  | 3659|     58|                LOAD_SP();
  |  |  ------------------
  |  |  |  |  425|     58|#define LOAD_SP() \
  |  |  |  |  426|     58|stack_pointer = _PyFrame_GetStackPointer(frame)
  |  |  ------------------
  |  | 3660|     58|                LOAD_IP(0);
  |  |  ------------------
  |  |  |  |  419|     58|#define LOAD_IP(OFFSET) do { \
  |  |  |  |  420|     58|        next_instr = frame->instr_ptr + (OFFSET); \
  |  |  |  |  421|     58|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:14): [Folded, False: 58]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3661|     58|                DTRACE_FUNCTION_ENTRY();
  |  |  ------------------
  |  |  |  |  345|     58|#define DTRACE_FUNCTION_ENTRY() ((void)0)
  |  |  ------------------
  |  | 3662|     58|                LLTRACE_RESUME_FRAME();
  |  |  ------------------
  |  |  |  |  188|     58|#define LLTRACE_RESUME_FRAME() ((void)0)
  |  |  ------------------
  |  | 3663|     58|            }
  |  | 3664|     58|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     58|    { \
  |  |  |  |  201|     58|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     58|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     58|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     58|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     58|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     58|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     58|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     58|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 58]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     58|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     58|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     58|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     58|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     58|    }
  |  |  ------------------
  |  |  |  Branch (3664:13): [True: 58, False: 0]
  |  |  ------------------
  |  | 3665|     58|        }
  |  | 3666|       |
  |  | 3667|     83|        TARGET(CALL_LEN) {
  |  |  ------------------
  |  |  |  |  132|     83|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 3668|       |            #if _Py_TAIL_CALL_INTERP
  |  | 3669|       |            int opcode = CALL_LEN;
  |  | 3670|       |            (void)(opcode);
  |  | 3671|       |            #endif
  |  | 3672|     83|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 3673|     83|            (void)this_instr;
  |  | 3674|     83|            frame->instr_ptr = next_instr;
  |  | 3675|     83|            next_instr += 4;
  |  | 3676|     83|            INSTRUCTION_STATS(CALL_LEN);
  |  |  ------------------
  |  |  |  |   71|     83|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 3677|     83|            static_assert(INLINE_CACHE_ENTRIES_CALL == 3, "incorrect cache size");
  |  | 3678|     83|            _PyStackRef null;
  |  | 3679|     83|            _PyStackRef callable;
  |  | 3680|     83|            _PyStackRef arg;
  |  | 3681|     83|            _PyStackRef res;
  |  | 3682|     83|            _PyStackRef a;
  |  | 3683|     83|            _PyStackRef c;
  |  | 3684|     83|            _PyStackRef value;
  |  | 3685|       |            /* Skip 1 cache entry */
  |  | 3686|       |            /* Skip 2 cache entries */
  |  | 3687|       |            // _GUARD_NOS_NULL
  |  | 3688|     83|            {
  |  | 3689|     83|                null = stack_pointer[-2];
  |  | 3690|     83|                if (!PyStackRef_IsNull(null)) {
  |  |  ------------------
  |  |  |  |  470|     83|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|     83|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     83|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (3690:21): [True: 0, False: 83]
  |  |  ------------------
  |  | 3691|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 3692|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (3692:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 3693|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 3694|      0|                }
  |  | 3695|     83|            }
  |  | 3696|       |            // _GUARD_CALLABLE_LEN
  |  | 3697|     83|            {
  |  | 3698|     83|                callable = stack_pointer[-3];
  |  | 3699|     83|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 3700|     83|                PyInterpreterState *interp = tstate->interp;
  |  | 3701|     83|                if (callable_o != interp->callable_cache.len) {
  |  |  ------------------
  |  |  |  Branch (3701:21): [True: 0, False: 83]
  |  |  ------------------
  |  | 3702|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 3703|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (3703:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 3704|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 3705|      0|                }
  |  | 3706|     83|            }
  |  | 3707|       |            // _CALL_LEN
  |  | 3708|     83|            {
  |  | 3709|     83|                arg = stack_pointer[-1];
  |  | 3710|     83|                STAT_INC(CALL, hit);
  |  |  ------------------
  |  |  |  |   73|     83|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 3711|     83|                PyObject *arg_o = PyStackRef_AsPyObjectBorrow(arg);
  |  | 3712|     83|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 3713|     83|                Py_ssize_t len_i = PyObject_Length(arg_o);
  |  |  ------------------
  |  |  |  |  353|     83|#define PyObject_Length PyObject_Size
  |  |  ------------------
  |  | 3714|     83|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 3715|     83|                if (len_i < 0) {
  |  |  ------------------
  |  |  |  Branch (3715:21): [True: 0, False: 83]
  |  |  ------------------
  |  | 3716|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 3717|      0|                }
  |  | 3718|     83|                PyObject *res_o = PyLong_FromSsize_t(len_i);
  |  | 3719|     83|                assert((res_o != NULL) ^ (_PyErr_Occurred(tstate) != NULL));
  |  |  ------------------
  |  |  |  Branch (3719:17): [True: 83, False: 0]
  |  |  ------------------
  |  | 3720|     83|                if (res_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (3720:21): [True: 0, False: 83]
  |  |  ------------------
  |  | 3721|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 3722|      0|                }
  |  | 3723|     83|                a = arg;
  |  | 3724|     83|                c = callable;
  |  | 3725|     83|                res = PyStackRef_FromPyObjectSteal(res_o);
  |  | 3726|     83|            }
  |  | 3727|       |            // _POP_TOP
  |  | 3728|      0|            {
  |  | 3729|     83|                value = c;
  |  | 3730|     83|                stack_pointer[-3] = res;
  |  | 3731|     83|                stack_pointer[-2] = a;
  |  | 3732|     83|                stack_pointer += -1;
  |  | 3733|     83|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     83|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 3734|     83|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 3735|     83|                PyStackRef_XCLOSE(value);
  |  | 3736|     83|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 3737|     83|            }
  |  | 3738|       |            // _POP_TOP
  |  | 3739|     83|            {
  |  | 3740|     83|                value = a;
  |  | 3741|     83|                stack_pointer += -1;
  |  | 3742|     83|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     83|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 3743|     83|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 3744|     83|                PyStackRef_XCLOSE(value);
  |  | 3745|     83|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 3746|     83|            }
  |  | 3747|     83|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     83|    { \
  |  |  |  |  201|     83|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     83|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     83|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     83|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     83|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     83|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     83|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     83|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 83]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     83|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     83|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     83|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     83|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     83|    }
  |  |  ------------------
  |  |  |  Branch (3747:13): [True: 83, False: 0]
  |  |  ------------------
  |  | 3748|     83|        }
  |  | 3749|       |
  |  | 3750|     34|        TARGET(CALL_LIST_APPEND) {
  |  |  ------------------
  |  |  |  |  132|     34|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 3751|       |            #if _Py_TAIL_CALL_INTERP
  |  | 3752|       |            int opcode = CALL_LIST_APPEND;
  |  | 3753|       |            (void)(opcode);
  |  | 3754|       |            #endif
  |  | 3755|     34|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 3756|     34|            (void)this_instr;
  |  | 3757|     34|            frame->instr_ptr = next_instr;
  |  | 3758|     34|            next_instr += 4;
  |  | 3759|     34|            INSTRUCTION_STATS(CALL_LIST_APPEND);
  |  |  ------------------
  |  |  |  |   71|     34|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 3760|     34|            static_assert(INLINE_CACHE_ENTRIES_CALL == 3, "incorrect cache size");
  |  | 3761|     34|            _PyStackRef callable;
  |  | 3762|     34|            _PyStackRef nos;
  |  | 3763|     34|            _PyStackRef self;
  |  | 3764|     34|            _PyStackRef arg;
  |  | 3765|     34|            _PyStackRef none;
  |  | 3766|     34|            _PyStackRef c;
  |  | 3767|     34|            _PyStackRef s;
  |  | 3768|     34|            _PyStackRef value;
  |  | 3769|       |            /* Skip 1 cache entry */
  |  | 3770|       |            /* Skip 2 cache entries */
  |  | 3771|       |            // _GUARD_CALLABLE_LIST_APPEND
  |  | 3772|     34|            {
  |  | 3773|     34|                callable = stack_pointer[-3];
  |  | 3774|     34|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 3775|     34|                PyInterpreterState *interp = tstate->interp;
  |  | 3776|     34|                if (callable_o != interp->callable_cache.list_append) {
  |  |  ------------------
  |  |  |  Branch (3776:21): [True: 0, False: 34]
  |  |  ------------------
  |  | 3777|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 3778|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (3778:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 3779|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 3780|      0|                }
  |  | 3781|     34|            }
  |  | 3782|       |            // _GUARD_NOS_NOT_NULL
  |  | 3783|     34|            {
  |  | 3784|     34|                nos = stack_pointer[-2];
  |  | 3785|     34|                if (PyStackRef_IsNull(nos)) {
  |  |  ------------------
  |  |  |  |  470|     34|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|     34|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     34|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (470:32): [True: 0, False: 34]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3786|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 3787|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (3787:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 3788|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 3789|      0|                }
  |  | 3790|     34|            }
  |  | 3791|       |            // _GUARD_NOS_LIST
  |  | 3792|     34|            {
  |  | 3793|     34|                PyObject *o = PyStackRef_AsPyObjectBorrow(nos);
  |  | 3794|     34|                if (!PyList_CheckExact(o)) {
  |  |  ------------------
  |  |  |  |   26|     34|#define PyList_CheckExact(op) Py_IS_TYPE((op), &PyList_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|     34|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|     34|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     34|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (3794:21): [True: 0, False: 34]
  |  |  ------------------
  |  | 3795|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 3796|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (3796:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 3797|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 3798|      0|                }
  |  | 3799|     34|            }
  |  | 3800|       |            // _CALL_LIST_APPEND
  |  | 3801|     34|            {
  |  | 3802|     34|                arg = stack_pointer[-1];
  |  | 3803|     34|                self = nos;
  |  | 3804|     34|                assert(oparg == 1);
  |  |  ------------------
  |  |  |  Branch (3804:17): [True: 34, False: 0]
  |  |  ------------------
  |  | 3805|     34|                PyObject *self_o = PyStackRef_AsPyObjectBorrow(self);
  |  | 3806|     34|                if (!LOCK_OBJECT(self_o)) {
  |  |  ------------------
  |  |  |  |  321|     34|#  define LOCK_OBJECT(op) (1)
  |  |  ------------------
  |  |  |  Branch (3806:21): [Folded, False: 34]
  |  |  ------------------
  |  | 3807|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 3808|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (3808:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 3809|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 3810|      0|                }
  |  | 3811|     34|                STAT_INC(CALL, hit);
  |  |  ------------------
  |  |  |  |   73|     34|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 3812|     34|                int err = _PyList_AppendTakeRef((PyListObject *)self_o, PyStackRef_AsPyObjectSteal(arg));
  |  | 3813|     34|                UNLOCK_OBJECT(self_o);
  |  |  ------------------
  |  |  |  |  322|     34|#  define UNLOCK_OBJECT(op) ((void)0)
  |  |  ------------------
  |  | 3814|     34|                if (err) {
  |  |  ------------------
  |  |  |  Branch (3814:21): [True: 0, False: 34]
  |  |  ------------------
  |  | 3815|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 3816|      0|                }
  |  | 3817|     34|                c = callable;
  |  | 3818|     34|                s = self;
  |  | 3819|     34|                none = PyStackRef_None;
  |  |  ------------------
  |  |  |  |  473|     34|#define PyStackRef_None ((_PyStackRef){.bits = ((uintptr_t)&_Py_NoneStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     34|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3820|     34|            }
  |  | 3821|       |            // _POP_TOP
  |  | 3822|      0|            {
  |  | 3823|     34|                value = s;
  |  | 3824|     34|                stack_pointer[-3] = none;
  |  | 3825|     34|                stack_pointer[-2] = c;
  |  | 3826|     34|                stack_pointer += -1;
  |  | 3827|     34|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     34|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 3828|     34|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 3829|     34|                PyStackRef_XCLOSE(value);
  |  | 3830|     34|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 3831|     34|            }
  |  | 3832|       |            // _POP_TOP
  |  | 3833|     34|            {
  |  | 3834|     34|                value = c;
  |  | 3835|     34|                stack_pointer += -1;
  |  | 3836|     34|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     34|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 3837|     34|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 3838|     34|                PyStackRef_XCLOSE(value);
  |  | 3839|     34|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 3840|     34|            }
  |  | 3841|     34|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     34|    { \
  |  |  |  |  201|     34|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     34|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     34|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     34|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     34|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     34|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     34|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     34|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 34]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     34|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     34|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     34|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     34|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     34|    }
  |  |  ------------------
  |  |  |  Branch (3841:13): [True: 34, False: 0]
  |  |  ------------------
  |  | 3842|     34|        }
  |  | 3843|       |
  |  | 3844|    297|        TARGET(CALL_METHOD_DESCRIPTOR_FAST) {
  |  |  ------------------
  |  |  |  |  132|    297|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 3845|       |            #if _Py_TAIL_CALL_INTERP
  |  | 3846|       |            int opcode = CALL_METHOD_DESCRIPTOR_FAST;
  |  | 3847|       |            (void)(opcode);
  |  | 3848|       |            #endif
  |  | 3849|    297|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 3850|    297|            (void)this_instr;
  |  | 3851|    297|            frame->instr_ptr = next_instr;
  |  | 3852|    297|            next_instr += 4;
  |  | 3853|    297|            INSTRUCTION_STATS(CALL_METHOD_DESCRIPTOR_FAST);
  |  |  ------------------
  |  |  |  |   71|    297|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 3854|    297|            static_assert(INLINE_CACHE_ENTRIES_CALL == 3, "incorrect cache size");
  |  | 3855|    297|            _PyStackRef callable;
  |  | 3856|    297|            _PyStackRef self_or_null;
  |  | 3857|    297|            _PyStackRef *args;
  |  | 3858|    297|            _PyStackRef value;
  |  | 3859|       |            /* Skip 1 cache entry */
  |  | 3860|       |            /* Skip 2 cache entries */
  |  | 3861|       |            // _GUARD_CALLABLE_METHOD_DESCRIPTOR_FAST
  |  | 3862|    297|            {
  |  | 3863|    297|                args = &stack_pointer[-oparg];
  |  | 3864|    297|                self_or_null = stack_pointer[-1 - oparg];
  |  | 3865|    297|                callable = stack_pointer[-2 - oparg];
  |  | 3866|    297|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 3867|    297|                PyMethodDescrObject *method = (PyMethodDescrObject *)callable_o;
  |  | 3868|    297|                if (!Py_IS_TYPE(method, &PyMethodDescr_Type)) {
  |  |  ------------------
  |  |  |  |   65|    297|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    297|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    297|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (3868:21): [True: 0, False: 297]
  |  |  ------------------
  |  | 3869|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 3870|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (3870:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 3871|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 3872|      0|                }
  |  | 3873|    297|                if (method->d_method->ml_flags != METH_FASTCALL) {
  |  |  ------------------
  |  |  |  |  115|    297|#  define METH_FASTCALL  0x0080
  |  |  ------------------
  |  |  |  Branch (3873:21): [True: 0, False: 297]
  |  |  ------------------
  |  | 3874|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 3875|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (3875:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 3876|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 3877|      0|                }
  |  | 3878|    297|                int total_args = oparg;
  |  | 3879|    297|                if (!PyStackRef_IsNull(self_or_null)) {
  |  |  ------------------
  |  |  |  |  470|    297|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|    297|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    297|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (3879:21): [True: 297, False: 0]
  |  |  ------------------
  |  | 3880|    297|                    total_args++;
  |  | 3881|    297|                }
  |  | 3882|    297|                if (total_args == 0) {
  |  |  ------------------
  |  |  |  Branch (3882:21): [True: 0, False: 297]
  |  |  ------------------
  |  | 3883|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 3884|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (3884:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 3885|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 3886|      0|                }
  |  | 3887|    297|                PyObject *self = PyStackRef_AsPyObjectBorrow(
  |  | 3888|    297|                    PyStackRef_IsNull(self_or_null) ? args[0] : self_or_null);
  |  |  ------------------
  |  |  |  |  470|    297|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|    297|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    297|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (470:32): [True: 0, False: 297]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3889|    297|                if (!Py_IS_TYPE(self, method->d_common.d_type)) {
  |  |  ------------------
  |  |  |  |   65|    297|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    297|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    297|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (3889:21): [True: 0, False: 297]
  |  |  ------------------
  |  | 3890|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 3891|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (3891:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 3892|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 3893|      0|                }
  |  | 3894|    297|            }
  |  | 3895|       |            // _CALL_METHOD_DESCRIPTOR_FAST
  |  | 3896|    297|            {
  |  | 3897|    297|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 3898|    297|                PyMethodDescrObject *method = (PyMethodDescrObject *)callable_o;
  |  | 3899|    297|                int total_args = oparg;
  |  | 3900|    297|                _PyStackRef *arguments = args;
  |  | 3901|    297|                if (!PyStackRef_IsNull(self_or_null)) {
  |  |  ------------------
  |  |  |  |  470|    297|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|    297|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    297|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (3901:21): [True: 297, False: 0]
  |  |  ------------------
  |  | 3902|    297|                    arguments--;
  |  | 3903|    297|                    total_args++;
  |  | 3904|    297|                }
  |  | 3905|    297|                PyObject *self = PyStackRef_AsPyObjectBorrow(arguments[0]);
  |  | 3906|    297|                assert(self != NULL);
  |  |  ------------------
  |  |  |  Branch (3906:17): [True: 297, False: 0]
  |  |  ------------------
  |  | 3907|    297|                STAT_INC(CALL, hit);
  |  |  ------------------
  |  |  |  |   73|    297|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 3908|    297|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 3909|    297|                PyCFunctionFast cfunc = _PyCFunctionFast_CAST(method->d_method->ml_meth);
  |  |  ------------------
  |  |  |  |   58|    297|    _Py_FUNC_CAST(PyCFunctionFast, func)
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|    297|#define _Py_FUNC_CAST(T, func) _Py_CAST(T, _Py_CAST(void(*)(void), (func)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    297|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3910|    297|                PyObject *res_o = _PyCallMethodDescriptorFast_StackRef(
  |  | 3911|    297|                    callable,
  |  | 3912|    297|                    cfunc,
  |  | 3913|    297|                    self,
  |  | 3914|    297|                    arguments,
  |  | 3915|    297|                    total_args
  |  | 3916|    297|                );
  |  | 3917|    297|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 3918|    297|                if (res_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (3918:21): [True: 0, False: 297]
  |  |  ------------------
  |  | 3919|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 3920|      0|                }
  |  | 3921|    297|                _PyStackRef temp = callable;
  |  | 3922|    297|                callable = PyStackRef_FromPyObjectSteal(res_o);
  |  | 3923|    297|                stack_pointer[-2 - oparg] = callable;
  |  | 3924|    297|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 3925|    297|                PyStackRef_CLOSE(temp);
  |  | 3926|    297|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 3927|    297|            }
  |  | 3928|       |            // _POP_TOP_OPARG
  |  | 3929|      0|            {
  |  | 3930|    297|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 3931|    297|                _PyStackRef_CloseStack(args, oparg);
  |  | 3932|    297|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 3933|    297|            }
  |  | 3934|       |            // _POP_TOP
  |  | 3935|    297|            {
  |  | 3936|    297|                value = self_or_null;
  |  | 3937|    297|                stack_pointer += -1 - oparg;
  |  | 3938|    297|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    297|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 3939|    297|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 3940|    297|                PyStackRef_XCLOSE(value);
  |  | 3941|    297|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 3942|    297|            }
  |  | 3943|       |            // _CHECK_PERIODIC_AT_END
  |  | 3944|    297|            {
  |  | 3945|    297|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 3946|    297|                int err = check_periodics(tstate);
  |  | 3947|    297|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 3948|    297|                if (err != 0) {
  |  |  ------------------
  |  |  |  Branch (3948:21): [True: 0, False: 297]
  |  |  ------------------
  |  | 3949|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 3950|      0|                }
  |  | 3951|    297|            }
  |  | 3952|    297|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    297|    { \
  |  |  |  |  201|    297|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    297|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    297|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    297|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    297|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    297|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    297|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    297|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 297]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    297|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    297|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    297|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    297|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    297|    }
  |  |  ------------------
  |  |  |  Branch (3952:13): [True: 297, False: 0]
  |  |  ------------------
  |  | 3953|    297|        }
  |  | 3954|       |
  |  | 3955|     17|        TARGET(CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS) {
  |  |  ------------------
  |  |  |  |  132|     17|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 3956|       |            #if _Py_TAIL_CALL_INTERP
  |  | 3957|       |            int opcode = CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS;
  |  | 3958|       |            (void)(opcode);
  |  | 3959|       |            #endif
  |  | 3960|     17|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 3961|     17|            (void)this_instr;
  |  | 3962|     17|            frame->instr_ptr = next_instr;
  |  | 3963|     17|            next_instr += 4;
  |  | 3964|     17|            INSTRUCTION_STATS(CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS);
  |  |  ------------------
  |  |  |  |   71|     17|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 3965|     17|            static_assert(INLINE_CACHE_ENTRIES_CALL == 3, "incorrect cache size");
  |  | 3966|     17|            _PyStackRef callable;
  |  | 3967|     17|            _PyStackRef self_or_null;
  |  | 3968|     17|            _PyStackRef *args;
  |  | 3969|     17|            _PyStackRef value;
  |  | 3970|       |            /* Skip 1 cache entry */
  |  | 3971|       |            /* Skip 2 cache entries */
  |  | 3972|       |            // _GUARD_CALLABLE_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS
  |  | 3973|     17|            {
  |  | 3974|     17|                args = &stack_pointer[-oparg];
  |  | 3975|     17|                self_or_null = stack_pointer[-1 - oparg];
  |  | 3976|     17|                callable = stack_pointer[-2 - oparg];
  |  | 3977|     17|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 3978|     17|                PyMethodDescrObject *method = (PyMethodDescrObject *)callable_o;
  |  | 3979|     17|                if (!Py_IS_TYPE(method, &PyMethodDescr_Type)) {
  |  |  ------------------
  |  |  |  |   65|     17|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     17|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     17|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (3979:21): [True: 0, False: 17]
  |  |  ------------------
  |  | 3980|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 3981|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (3981:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 3982|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 3983|      0|                }
  |  | 3984|     17|                if (method->d_method->ml_flags != (METH_FASTCALL|METH_KEYWORDS)) {
  |  |  ------------------
  |  |  |  |  115|     17|#  define METH_FASTCALL  0x0080
  |  |  ------------------
  |  |                               if (method->d_method->ml_flags != (METH_FASTCALL|METH_KEYWORDS)) {
  |  |  ------------------
  |  |  |  |   96|     17|#define METH_KEYWORDS 0x0002
  |  |  ------------------
  |  |  |  Branch (3984:21): [True: 0, False: 17]
  |  |  ------------------
  |  | 3985|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 3986|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (3986:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 3987|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 3988|      0|                }
  |  | 3989|     17|                int total_args = oparg;
  |  | 3990|     17|                _PyStackRef *arguments = args;
  |  | 3991|     17|                if (!PyStackRef_IsNull(self_or_null)) {
  |  |  ------------------
  |  |  |  |  470|     17|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|     17|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     17|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (3991:21): [True: 17, False: 0]
  |  |  ------------------
  |  | 3992|     17|                    arguments--;
  |  | 3993|     17|                    total_args++;
  |  | 3994|     17|                }
  |  | 3995|     17|                if (total_args == 0) {
  |  |  ------------------
  |  |  |  Branch (3995:21): [True: 0, False: 17]
  |  |  ------------------
  |  | 3996|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 3997|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (3997:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 3998|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 3999|      0|                }
  |  | 4000|     17|                PyObject *self = PyStackRef_AsPyObjectBorrow(arguments[0]);
  |  | 4001|     17|                if (!Py_IS_TYPE(self, method->d_common.d_type)) {
  |  |  ------------------
  |  |  |  |   65|     17|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     17|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     17|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (4001:21): [True: 0, False: 17]
  |  |  ------------------
  |  | 4002|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 4003|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (4003:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 4004|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 4005|      0|                }
  |  | 4006|     17|            }
  |  | 4007|       |            // _CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS
  |  | 4008|     17|            {
  |  | 4009|     17|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 4010|     17|                PyMethodDescrObject *method = (PyMethodDescrObject *)callable_o;
  |  | 4011|     17|                int total_args = oparg;
  |  | 4012|     17|                _PyStackRef *arguments = args;
  |  | 4013|     17|                if (!PyStackRef_IsNull(self_or_null)) {
  |  |  ------------------
  |  |  |  |  470|     17|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|     17|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     17|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (4013:21): [True: 17, False: 0]
  |  |  ------------------
  |  | 4014|     17|                    arguments--;
  |  | 4015|     17|                    total_args++;
  |  | 4016|     17|                }
  |  | 4017|     17|                PyObject *self = PyStackRef_AsPyObjectBorrow(arguments[0]);
  |  | 4018|     17|                assert(self != NULL);
  |  |  ------------------
  |  |  |  Branch (4018:17): [True: 17, False: 0]
  |  |  ------------------
  |  | 4019|     17|                STAT_INC(CALL, hit);
  |  |  ------------------
  |  |  |  |   73|     17|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 4020|     17|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 4021|     17|                PyCFunctionFastWithKeywords cfunc = _PyCFunctionFastWithKeywords_CAST(method->d_method->ml_meth);
  |  |  ------------------
  |  |  |  |   62|     17|    _Py_FUNC_CAST(PyCFunctionFastWithKeywords, func)
  |  |  |  |  ------------------
  |  |  |  |  |  |   47|     17|#define _Py_FUNC_CAST(T, func) _Py_CAST(T, _Py_CAST(void(*)(void), (func)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     17|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4022|     17|                PyObject *res_o = _PyCallMethodDescriptorFastWithKeywords_StackRef(
  |  | 4023|     17|                    callable,
  |  | 4024|     17|                    cfunc,
  |  | 4025|     17|                    self,
  |  | 4026|     17|                    arguments,
  |  | 4027|     17|                    total_args
  |  | 4028|     17|                );
  |  | 4029|     17|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 4030|     17|                if (res_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (4030:21): [True: 0, False: 17]
  |  |  ------------------
  |  | 4031|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 4032|      0|                }
  |  | 4033|     17|                _PyStackRef temp = callable;
  |  | 4034|     17|                callable = PyStackRef_FromPyObjectSteal(res_o);
  |  | 4035|     17|                stack_pointer[-2 - oparg] = callable;
  |  | 4036|     17|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 4037|     17|                PyStackRef_CLOSE(temp);
  |  | 4038|     17|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 4039|     17|            }
  |  | 4040|       |            // _POP_TOP_OPARG
  |  | 4041|      0|            {
  |  | 4042|     17|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 4043|     17|                _PyStackRef_CloseStack(args, oparg);
  |  | 4044|     17|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 4045|     17|            }
  |  | 4046|       |            // _POP_TOP
  |  | 4047|     17|            {
  |  | 4048|     17|                value = self_or_null;
  |  | 4049|     17|                stack_pointer += -1 - oparg;
  |  | 4050|     17|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     17|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 4051|     17|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 4052|     17|                PyStackRef_XCLOSE(value);
  |  | 4053|     17|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 4054|     17|            }
  |  | 4055|       |            // _CHECK_PERIODIC_AT_END
  |  | 4056|     17|            {
  |  | 4057|     17|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 4058|     17|                int err = check_periodics(tstate);
  |  | 4059|     17|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 4060|     17|                if (err != 0) {
  |  |  ------------------
  |  |  |  Branch (4060:21): [True: 0, False: 17]
  |  |  ------------------
  |  | 4061|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 4062|      0|                }
  |  | 4063|     17|            }
  |  | 4064|     17|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     17|    { \
  |  |  |  |  201|     17|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     17|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     17|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     17|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     17|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     17|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     17|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     17|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 17]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     17|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     17|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     17|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     17|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     17|    }
  |  |  ------------------
  |  |  |  Branch (4064:13): [True: 17, False: 0]
  |  |  ------------------
  |  | 4065|     17|        }
  |  | 4066|       |
  |  | 4067|     59|        TARGET(CALL_METHOD_DESCRIPTOR_NOARGS) {
  |  |  ------------------
  |  |  |  |  132|     59|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 4068|       |            #if _Py_TAIL_CALL_INTERP
  |  | 4069|       |            int opcode = CALL_METHOD_DESCRIPTOR_NOARGS;
  |  | 4070|       |            (void)(opcode);
  |  | 4071|       |            #endif
  |  | 4072|     59|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 4073|     59|            (void)this_instr;
  |  | 4074|     59|            frame->instr_ptr = next_instr;
  |  | 4075|     59|            next_instr += 4;
  |  | 4076|     59|            INSTRUCTION_STATS(CALL_METHOD_DESCRIPTOR_NOARGS);
  |  |  ------------------
  |  |  |  |   71|     59|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 4077|     59|            static_assert(INLINE_CACHE_ENTRIES_CALL == 3, "incorrect cache size");
  |  | 4078|     59|            _PyStackRef callable;
  |  | 4079|     59|            _PyStackRef self_or_null;
  |  | 4080|     59|            _PyStackRef *args;
  |  | 4081|     59|            _PyStackRef res;
  |  | 4082|     59|            _PyStackRef c;
  |  | 4083|     59|            _PyStackRef s;
  |  | 4084|     59|            _PyStackRef value;
  |  | 4085|       |            /* Skip 1 cache entry */
  |  | 4086|       |            /* Skip 2 cache entries */
  |  | 4087|       |            // _GUARD_CALLABLE_METHOD_DESCRIPTOR_NOARGS
  |  | 4088|     59|            {
  |  | 4089|     59|                args = &stack_pointer[-oparg];
  |  | 4090|     59|                self_or_null = stack_pointer[-1 - oparg];
  |  | 4091|     59|                callable = stack_pointer[-2 - oparg];
  |  | 4092|     59|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 4093|     59|                PyMethodDescrObject *method = (PyMethodDescrObject *)callable_o;
  |  | 4094|     59|                if (!Py_IS_TYPE(method, &PyMethodDescr_Type)) {
  |  |  ------------------
  |  |  |  |   65|     59|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     59|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     59|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (4094:21): [True: 0, False: 59]
  |  |  ------------------
  |  | 4095|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 4096|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (4096:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 4097|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 4098|      0|                }
  |  | 4099|     59|                if (method->d_method->ml_flags != METH_NOARGS) {
  |  |  ------------------
  |  |  |  |   98|     59|#define METH_NOARGS   0x0004
  |  |  ------------------
  |  |  |  Branch (4099:21): [True: 0, False: 59]
  |  |  ------------------
  |  | 4100|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 4101|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (4101:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 4102|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 4103|      0|                }
  |  | 4104|     59|                int total_args = oparg;
  |  | 4105|     59|                if (!PyStackRef_IsNull(self_or_null)) {
  |  |  ------------------
  |  |  |  |  470|     59|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|     59|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     59|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (4105:21): [True: 59, False: 0]
  |  |  ------------------
  |  | 4106|     59|                    total_args++;
  |  | 4107|     59|                }
  |  | 4108|     59|                if (total_args != 1) {
  |  |  ------------------
  |  |  |  Branch (4108:21): [True: 0, False: 59]
  |  |  ------------------
  |  | 4109|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 4110|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (4110:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 4111|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 4112|      0|                }
  |  | 4113|     59|                PyObject *self = PyStackRef_AsPyObjectBorrow(
  |  | 4114|     59|                    PyStackRef_IsNull(self_or_null) ? args[0] : self_or_null);
  |  |  ------------------
  |  |  |  |  470|     59|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|     59|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     59|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (470:32): [True: 0, False: 59]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4115|     59|                if (!Py_IS_TYPE(self, method->d_common.d_type)) {
  |  |  ------------------
  |  |  |  |   65|     59|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     59|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     59|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (4115:21): [True: 0, False: 59]
  |  |  ------------------
  |  | 4116|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 4117|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (4117:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 4118|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 4119|      0|                }
  |  | 4120|     59|            }
  |  | 4121|       |            // _CHECK_RECURSION_LIMIT
  |  | 4122|     59|            {
  |  | 4123|     59|                if (_Py_ReachedRecursionLimit(tstate)) {
  |  |  ------------------
  |  |  |  Branch (4123:21): [True: 0, False: 59]
  |  |  ------------------
  |  | 4124|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 4125|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (4125:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 4126|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 4127|      0|                }
  |  | 4128|     59|            }
  |  | 4129|       |            // _CALL_METHOD_DESCRIPTOR_NOARGS
  |  | 4130|     59|            {
  |  | 4131|     59|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 4132|     59|                PyMethodDescrObject *method = (PyMethodDescrObject *)callable_o;
  |  | 4133|     59|                assert(oparg == 1 || !PyStackRef_IsNull(self_or_null));
  |  |  ------------------
  |  |  |  Branch (4133:17): [True: 0, False: 59]
  |  |  |  Branch (4133:17): [True: 59, False: 0]
  |  |  ------------------
  |  | 4134|     59|                if (!PyStackRef_IsNull(self_or_null)) {
  |  |  ------------------
  |  |  |  |  470|     59|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|     59|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     59|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (4134:21): [True: 59, False: 0]
  |  |  ------------------
  |  | 4135|     59|                    args--;
  |  | 4136|     59|                }
  |  | 4137|     59|                _PyStackRef self_stackref = args[0];
  |  | 4138|     59|                PyObject *self = PyStackRef_AsPyObjectBorrow(self_stackref);
  |  | 4139|     59|                STAT_INC(CALL, hit);
  |  |  ------------------
  |  |  |  |   73|     59|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 4140|     59|                PyCFunction cfunc = method->d_method->ml_meth;
  |  | 4141|     59|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 4142|     59|                PyObject *res_o = _PyCFunction_TrampolineCall(cfunc, self, NULL);
  |  |  ------------------
  |  |  |  |  997|     59|    (meth)((self), (args))
  |  |  ------------------
  |  | 4143|     59|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 4144|     59|                _Py_LeaveRecursiveCallTstate(tstate);
  |  | 4145|     59|                assert((res_o != NULL) ^ (_PyErr_Occurred(tstate) != NULL));
  |  |  ------------------
  |  |  |  Branch (4145:17): [True: 59, False: 0]
  |  |  ------------------
  |  | 4146|     59|                if (res_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (4146:21): [True: 0, False: 59]
  |  |  ------------------
  |  | 4147|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 4148|      0|                }
  |  | 4149|     59|                c = callable;
  |  | 4150|     59|                s = args[0];
  |  | 4151|     59|                res = PyStackRef_FromPyObjectSteal(res_o);
  |  | 4152|     59|            }
  |  | 4153|       |            // _POP_TOP
  |  | 4154|      0|            {
  |  | 4155|     59|                value = s;
  |  | 4156|     59|                stack_pointer[-2 - oparg] = res;
  |  | 4157|     59|                stack_pointer[-1 - oparg] = c;
  |  | 4158|     59|                stack_pointer += -oparg;
  |  | 4159|     59|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     59|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 4160|     59|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 4161|     59|                PyStackRef_XCLOSE(value);
  |  | 4162|     59|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 4163|     59|            }
  |  | 4164|       |            // _POP_TOP
  |  | 4165|     59|            {
  |  | 4166|     59|                value = c;
  |  | 4167|     59|                stack_pointer += -1;
  |  | 4168|     59|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     59|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 4169|     59|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 4170|     59|                PyStackRef_XCLOSE(value);
  |  | 4171|     59|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 4172|     59|            }
  |  | 4173|       |            // _CHECK_PERIODIC_AT_END
  |  | 4174|     59|            {
  |  | 4175|     59|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 4176|     59|                int err = check_periodics(tstate);
  |  | 4177|     59|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 4178|     59|                if (err != 0) {
  |  |  ------------------
  |  |  |  Branch (4178:21): [True: 0, False: 59]
  |  |  ------------------
  |  | 4179|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 4180|      0|                }
  |  | 4181|     59|            }
  |  | 4182|     59|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     59|    { \
  |  |  |  |  201|     59|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     59|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     59|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     59|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     59|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     59|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     59|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     59|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 59]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     59|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     59|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     59|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     59|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     59|    }
  |  |  ------------------
  |  |  |  Branch (4182:13): [True: 59, False: 0]
  |  |  ------------------
  |  | 4183|     59|        }
  |  | 4184|       |
  |  | 4185|    199|        TARGET(CALL_METHOD_DESCRIPTOR_O) {
  |  |  ------------------
  |  |  |  |  132|    199|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 4186|       |            #if _Py_TAIL_CALL_INTERP
  |  | 4187|       |            int opcode = CALL_METHOD_DESCRIPTOR_O;
  |  | 4188|       |            (void)(opcode);
  |  | 4189|       |            #endif
  |  | 4190|    199|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 4191|    199|            (void)this_instr;
  |  | 4192|    199|            frame->instr_ptr = next_instr;
  |  | 4193|    199|            next_instr += 4;
  |  | 4194|    199|            INSTRUCTION_STATS(CALL_METHOD_DESCRIPTOR_O);
  |  |  ------------------
  |  |  |  |   71|    199|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 4195|    199|            static_assert(INLINE_CACHE_ENTRIES_CALL == 3, "incorrect cache size");
  |  | 4196|    199|            _PyStackRef callable;
  |  | 4197|    199|            _PyStackRef self_or_null;
  |  | 4198|    199|            _PyStackRef *args;
  |  | 4199|    199|            _PyStackRef res;
  |  | 4200|    199|            _PyStackRef c;
  |  | 4201|    199|            _PyStackRef s;
  |  | 4202|    199|            _PyStackRef a;
  |  | 4203|    199|            _PyStackRef value;
  |  | 4204|       |            /* Skip 1 cache entry */
  |  | 4205|       |            /* Skip 2 cache entries */
  |  | 4206|       |            // _GUARD_CALLABLE_METHOD_DESCRIPTOR_O
  |  | 4207|    199|            {
  |  | 4208|    199|                args = &stack_pointer[-oparg];
  |  | 4209|    199|                self_or_null = stack_pointer[-1 - oparg];
  |  | 4210|    199|                callable = stack_pointer[-2 - oparg];
  |  | 4211|    199|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 4212|    199|                PyMethodDescrObject *method = (PyMethodDescrObject *)callable_o;
  |  | 4213|    199|                if (!Py_IS_TYPE(method, &PyMethodDescr_Type)) {
  |  |  ------------------
  |  |  |  |   65|    199|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    199|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    199|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (4213:21): [True: 0, False: 199]
  |  |  ------------------
  |  | 4214|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 4215|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (4215:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 4216|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 4217|      0|                }
  |  | 4218|    199|                if (method->d_method->ml_flags != METH_O) {
  |  |  ------------------
  |  |  |  |   99|    199|#define METH_O        0x0008
  |  |  ------------------
  |  |  |  Branch (4218:21): [True: 0, False: 199]
  |  |  ------------------
  |  | 4219|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 4220|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (4220:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 4221|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 4222|      0|                }
  |  | 4223|    199|                int total_args = oparg;
  |  | 4224|    199|                if (!PyStackRef_IsNull(self_or_null)) {
  |  |  ------------------
  |  |  |  |  470|    199|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|    199|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    199|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (4224:21): [True: 199, False: 0]
  |  |  ------------------
  |  | 4225|    199|                    total_args++;
  |  | 4226|    199|                }
  |  | 4227|    199|                if (total_args != 2) {
  |  |  ------------------
  |  |  |  Branch (4227:21): [True: 0, False: 199]
  |  |  ------------------
  |  | 4228|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 4229|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (4229:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 4230|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 4231|      0|                }
  |  | 4232|    199|                PyObject *self = PyStackRef_AsPyObjectBorrow(
  |  | 4233|    199|                    PyStackRef_IsNull(self_or_null) ? args[0] : self_or_null);
  |  |  ------------------
  |  |  |  |  470|    199|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|    199|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    199|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (470:32): [True: 0, False: 199]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4234|    199|                if (!Py_IS_TYPE(self, method->d_common.d_type)) {
  |  |  ------------------
  |  |  |  |   65|    199|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    199|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    199|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (4234:21): [True: 58, False: 141]
  |  |  ------------------
  |  | 4235|     58|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|     58|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 4236|     58|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (4236:21): [True: 58, False: 0]
  |  |  ------------------
  |  | 4237|     58|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|     58|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 4238|      0|                }
  |  | 4239|    199|            }
  |  | 4240|       |            // _CHECK_RECURSION_LIMIT
  |  | 4241|    141|            {
  |  | 4242|    141|                if (_Py_ReachedRecursionLimit(tstate)) {
  |  |  ------------------
  |  |  |  Branch (4242:21): [True: 0, False: 141]
  |  |  ------------------
  |  | 4243|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 4244|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (4244:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 4245|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 4246|      0|                }
  |  | 4247|    141|            }
  |  | 4248|       |            // _CALL_METHOD_DESCRIPTOR_O
  |  | 4249|    141|            {
  |  | 4250|    141|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 4251|    141|                PyMethodDescrObject *method = (PyMethodDescrObject *)callable_o;
  |  | 4252|    141|                _PyStackRef *arguments = args;
  |  | 4253|    141|                if (!PyStackRef_IsNull(self_or_null)) {
  |  |  ------------------
  |  |  |  |  470|    141|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|    141|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    141|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (4253:21): [True: 141, False: 0]
  |  |  ------------------
  |  | 4254|    141|                    arguments--;
  |  | 4255|    141|                }
  |  | 4256|    141|                STAT_INC(CALL, hit);
  |  |  ------------------
  |  |  |  |   73|    141|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 4257|    141|                PyCFunction cfunc = method->d_method->ml_meth;
  |  | 4258|    141|                PyObject *self = PyStackRef_AsPyObjectBorrow(arguments[0]);
  |  | 4259|    141|                PyObject *arg = PyStackRef_AsPyObjectBorrow(arguments[1]);
  |  | 4260|    141|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 4261|    141|                PyObject *res_o = _PyCFunction_TrampolineCall(cfunc, self, arg);
  |  |  ------------------
  |  |  |  |  997|    141|    (meth)((self), (args))
  |  |  ------------------
  |  | 4262|    141|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 4263|    141|                _Py_LeaveRecursiveCallTstate(tstate);
  |  | 4264|    141|                assert((res_o != NULL) ^ (_PyErr_Occurred(tstate) != NULL));
  |  |  ------------------
  |  |  |  Branch (4264:17): [True: 141, False: 0]
  |  |  ------------------
  |  | 4265|    141|                if (res_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (4265:21): [True: 0, False: 141]
  |  |  ------------------
  |  | 4266|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 4267|      0|                }
  |  | 4268|    141|                c = callable;
  |  | 4269|    141|                s = arguments[0];
  |  | 4270|    141|                a = arguments[1];
  |  | 4271|    141|                res = PyStackRef_FromPyObjectSteal(res_o);
  |  | 4272|    141|            }
  |  | 4273|       |            // _POP_TOP
  |  | 4274|      0|            {
  |  | 4275|    141|                value = a;
  |  | 4276|    141|                stack_pointer[-2 - oparg] = res;
  |  | 4277|    141|                stack_pointer[-1 - oparg] = c;
  |  | 4278|    141|                stack_pointer[-oparg] = s;
  |  | 4279|    141|                stack_pointer += 1 - oparg;
  |  | 4280|    141|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    141|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 4281|    141|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 4282|    141|                PyStackRef_XCLOSE(value);
  |  | 4283|    141|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 4284|    141|            }
  |  | 4285|       |            // _POP_TOP
  |  | 4286|    141|            {
  |  | 4287|    141|                value = s;
  |  | 4288|    141|                stack_pointer += -1;
  |  | 4289|    141|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    141|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 4290|    141|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 4291|    141|                PyStackRef_XCLOSE(value);
  |  | 4292|    141|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 4293|    141|            }
  |  | 4294|       |            // _POP_TOP
  |  | 4295|    141|            {
  |  | 4296|    141|                value = c;
  |  | 4297|    141|                stack_pointer += -1;
  |  | 4298|    141|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    141|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 4299|    141|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 4300|    141|                PyStackRef_XCLOSE(value);
  |  | 4301|    141|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 4302|    141|            }
  |  | 4303|       |            // _CHECK_PERIODIC_AT_END
  |  | 4304|    141|            {
  |  | 4305|    141|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 4306|    141|                int err = check_periodics(tstate);
  |  | 4307|    141|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 4308|    141|                if (err != 0) {
  |  |  ------------------
  |  |  |  Branch (4308:21): [True: 0, False: 141]
  |  |  ------------------
  |  | 4309|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 4310|      0|                }
  |  | 4311|    141|            }
  |  | 4312|    141|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    141|    { \
  |  |  |  |  201|    141|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    141|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    141|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    141|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    141|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    141|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    141|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    141|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 141]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    141|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    141|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    141|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    141|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    141|    }
  |  |  ------------------
  |  |  |  Branch (4312:13): [True: 141, False: 0]
  |  |  ------------------
  |  | 4313|    141|        }
  |  | 4314|       |
  |  | 4315|    521|        TARGET(CALL_NON_PY_GENERAL) {
  |  |  ------------------
  |  |  |  |  132|    521|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 4316|       |            #if _Py_TAIL_CALL_INTERP
  |  | 4317|       |            int opcode = CALL_NON_PY_GENERAL;
  |  | 4318|       |            (void)(opcode);
  |  | 4319|       |            #endif
  |  | 4320|    521|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 4321|    521|            (void)this_instr;
  |  | 4322|    521|            frame->instr_ptr = next_instr;
  |  | 4323|    521|            next_instr += 4;
  |  | 4324|    521|            INSTRUCTION_STATS(CALL_NON_PY_GENERAL);
  |  |  ------------------
  |  |  |  |   71|    521|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 4325|    521|            opcode = CALL_NON_PY_GENERAL;
  |  |  ------------------
  |  |  |  |  168|    521|#define CALL_NON_PY_GENERAL                    163
  |  |  ------------------
  |  | 4326|    521|            static_assert(INLINE_CACHE_ENTRIES_CALL == 3, "incorrect cache size");
  |  | 4327|    521|            _PyStackRef callable;
  |  | 4328|    521|            _PyStackRef self_or_null;
  |  | 4329|    521|            _PyStackRef *args;
  |  | 4330|    521|            _PyStackRef res;
  |  | 4331|       |            /* Skip 1 cache entry */
  |  | 4332|       |            /* Skip 2 cache entries */
  |  | 4333|       |            // _CHECK_IS_NOT_PY_CALLABLE
  |  | 4334|    521|            {
  |  | 4335|    521|                callable = stack_pointer[-2 - oparg];
  |  | 4336|    521|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 4337|    521|                if (PyFunction_Check(callable_o)) {
  |  |  ------------------
  |  |  |  |   68|    521|#define PyFunction_Check(op) Py_IS_TYPE((op), &PyFunction_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|    521|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|    521|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|    521|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (65:5): [True: 0, False: 521]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4338|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 4339|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (4339:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 4340|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 4341|      0|                }
  |  | 4342|    521|                if (Py_TYPE(callable_o) == &PyMethod_Type) {
  |  |  ------------------
  |  |  |  |  213|    521|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    521|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    521|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (4342:21): [True: 0, False: 521]
  |  |  ------------------
  |  | 4343|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 4344|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (4344:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 4345|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 4346|      0|                }
  |  | 4347|    521|            }
  |  | 4348|       |            // _CALL_NON_PY_GENERAL
  |  | 4349|    521|            {
  |  | 4350|    521|                args = &stack_pointer[-oparg];
  |  | 4351|    521|                self_or_null = stack_pointer[-1 - oparg];
  |  | 4352|    521|                #if TIER_ONE
  |  | 4353|    521|                assert(opcode != INSTRUMENTED_CALL);
  |  |  ------------------
  |  |  |  Branch (4353:17): [True: 521, False: 0]
  |  |  ------------------
  |  | 4354|    521|                #endif
  |  | 4355|    521|                int total_args = oparg;
  |  | 4356|    521|                _PyStackRef *arguments = args;
  |  | 4357|    521|                if (!PyStackRef_IsNull(self_or_null)) {
  |  |  ------------------
  |  |  |  |  470|    521|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|    521|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    521|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (4357:21): [True: 36, False: 485]
  |  |  ------------------
  |  | 4358|     36|                    arguments--;
  |  | 4359|     36|                    total_args++;
  |  | 4360|     36|                }
  |  | 4361|    521|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 4362|    521|                PyObject *res_o = _Py_VectorCall_StackRefSteal(
  |  | 4363|    521|                    callable,
  |  | 4364|    521|                    arguments,
  |  | 4365|    521|                    total_args,
  |  | 4366|    521|                    PyStackRef_NULL);
  |  | 4367|    521|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 4368|    521|                if (res_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (4368:21): [True: 1, False: 520]
  |  |  ------------------
  |  | 4369|      1|                    stack_pointer += -2 - oparg;
  |  | 4370|      1|                    ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      1|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 4371|      1|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      1|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 4372|      0|                }
  |  | 4373|    520|                res = PyStackRef_FromPyObjectSteal(res_o);
  |  | 4374|    520|            }
  |  | 4375|       |            // _CHECK_PERIODIC_AT_END
  |  | 4376|      0|            {
  |  | 4377|    520|                stack_pointer[-2 - oparg] = res;
  |  | 4378|    520|                stack_pointer += -1 - oparg;
  |  | 4379|    520|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    520|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 4380|    520|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 4381|    520|                int err = check_periodics(tstate);
  |  | 4382|    520|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 4383|    520|                if (err != 0) {
  |  |  ------------------
  |  |  |  Branch (4383:21): [True: 0, False: 520]
  |  |  ------------------
  |  | 4384|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 4385|      0|                }
  |  | 4386|    520|            }
  |  | 4387|    520|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    520|    { \
  |  |  |  |  201|    520|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    520|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    520|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    520|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    520|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    520|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    520|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    520|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 520]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    520|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    520|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    520|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    520|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    520|    }
  |  |  ------------------
  |  |  |  Branch (4387:13): [True: 520, False: 0]
  |  |  ------------------
  |  | 4388|    520|        }
  |  | 4389|       |
  |  | 4390|    474|        TARGET(CALL_PY_EXACT_ARGS) {
  |  |  ------------------
  |  |  |  |  132|    474|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 4391|       |            #if _Py_TAIL_CALL_INTERP
  |  | 4392|       |            int opcode = CALL_PY_EXACT_ARGS;
  |  | 4393|       |            (void)(opcode);
  |  | 4394|       |            #endif
  |  | 4395|    474|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 4396|    474|            (void)this_instr;
  |  | 4397|    474|            frame->instr_ptr = next_instr;
  |  | 4398|    474|            next_instr += 4;
  |  | 4399|    474|            INSTRUCTION_STATS(CALL_PY_EXACT_ARGS);
  |  |  ------------------
  |  |  |  |   71|    474|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 4400|    474|            static_assert(INLINE_CACHE_ENTRIES_CALL == 3, "incorrect cache size");
  |  | 4401|    474|            _PyStackRef callable;
  |  | 4402|    474|            _PyStackRef self_or_null;
  |  | 4403|    474|            _PyStackRef *args;
  |  | 4404|    474|            _PyStackRef new_frame;
  |  | 4405|       |            /* Skip 1 cache entry */
  |  | 4406|       |            // _CHECK_PEP_523
  |  | 4407|    474|            {
  |  | 4408|    474|                if (IS_PEP523_HOOKED(tstate)) {
  |  |  ------------------
  |  |  |  |  517|    474|#define IS_PEP523_HOOKED(tstate) (tstate->interp->eval_frame != NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (517:34): [True: 0, False: 474]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4409|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 4410|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (4410:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 4411|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 4412|      0|                }
  |  | 4413|    474|            }
  |  | 4414|       |            // _CHECK_FUNCTION_VERSION
  |  | 4415|    474|            {
  |  | 4416|    474|                callable = stack_pointer[-2 - oparg];
  |  | 4417|    474|                uint32_t func_version = read_u32(&this_instr[2].cache);
  |  | 4418|    474|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 4419|    474|                if (!PyFunction_Check(callable_o)) {
  |  |  ------------------
  |  |  |  |   68|    474|#define PyFunction_Check(op) Py_IS_TYPE((op), &PyFunction_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|    474|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|    474|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|    474|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (4419:21): [True: 3, False: 471]
  |  |  ------------------
  |  | 4420|      3|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      3|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 4421|      3|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (4421:21): [True: 3, False: 0]
  |  |  ------------------
  |  | 4422|      3|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      3|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 4423|      0|                }
  |  | 4424|    471|                PyFunctionObject *func = (PyFunctionObject *)callable_o;
  |  | 4425|    471|                if (func->func_version != func_version) {
  |  |  ------------------
  |  |  |  Branch (4425:21): [True: 30, False: 441]
  |  |  ------------------
  |  | 4426|     30|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|     30|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 4427|     30|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (4427:21): [True: 30, False: 0]
  |  |  ------------------
  |  | 4428|     30|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|     30|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 4429|      0|                }
  |  | 4430|    471|            }
  |  | 4431|       |            // _CHECK_FUNCTION_EXACT_ARGS
  |  | 4432|    441|            {
  |  | 4433|    441|                self_or_null = stack_pointer[-1 - oparg];
  |  | 4434|    441|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 4435|    441|                assert(PyFunction_Check(callable_o));
  |  |  ------------------
  |  |  |  Branch (4435:17): [True: 441, False: 0]
  |  |  ------------------
  |  | 4436|    441|                PyFunctionObject *func = (PyFunctionObject *)callable_o;
  |  | 4437|    441|                PyCodeObject *code = (PyCodeObject *)func->func_code;
  |  | 4438|    441|                if (code->co_argcount != oparg + (!PyStackRef_IsNull(self_or_null))) {
  |  |  ------------------
  |  |  |  |  470|    441|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|    441|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    441|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (4438:21): [True: 0, False: 441]
  |  |  ------------------
  |  | 4439|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 4440|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (4440:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 4441|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 4442|      0|                }
  |  | 4443|    441|            }
  |  | 4444|       |            // _CHECK_STACK_SPACE
  |  | 4445|    441|            {
  |  | 4446|    441|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 4447|    441|                PyFunctionObject *func = (PyFunctionObject *)callable_o;
  |  | 4448|    441|                PyCodeObject *code = (PyCodeObject *)func->func_code;
  |  | 4449|    441|                if (!_PyThreadState_HasStackSpace(tstate, code->co_framesize)) {
  |  |  ------------------
  |  |  |  Branch (4449:21): [True: 0, False: 441]
  |  |  ------------------
  |  | 4450|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 4451|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (4451:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 4452|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 4453|      0|                }
  |  | 4454|    441|            }
  |  | 4455|       |            // _CHECK_RECURSION_REMAINING
  |  | 4456|    441|            {
  |  | 4457|    441|                if (tstate->py_recursion_remaining <= 1) {
  |  |  ------------------
  |  |  |  Branch (4457:21): [True: 0, False: 441]
  |  |  ------------------
  |  | 4458|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 4459|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (4459:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 4460|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 4461|      0|                }
  |  | 4462|    441|            }
  |  | 4463|       |            // _INIT_CALL_PY_EXACT_ARGS
  |  | 4464|    441|            {
  |  | 4465|    441|                args = &stack_pointer[-oparg];
  |  | 4466|    441|                int has_self = !PyStackRef_IsNull(self_or_null);
  |  |  ------------------
  |  |  |  |  470|    441|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|    441|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    441|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4467|    441|                STAT_INC(CALL, hit);
  |  |  ------------------
  |  |  |  |   73|    441|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 4468|    441|                _PyInterpreterFrame *pushed_frame = _PyFrame_PushUnchecked(tstate, callable, oparg + has_self, frame);
  |  | 4469|    441|                _PyStackRef *first_non_self_local = pushed_frame->localsplus + has_self;
  |  | 4470|    441|                pushed_frame->localsplus[0] = self_or_null;
  |  | 4471|    877|                for (int i = 0; i < oparg; i++) {
  |  |  ------------------
  |  |  |  Branch (4471:33): [True: 436, False: 441]
  |  |  ------------------
  |  | 4472|    436|                    first_non_self_local[i] = args[i];
  |  | 4473|    436|                }
  |  | 4474|    441|                new_frame = PyStackRef_Wrap(pushed_frame);
  |  | 4475|    441|            }
  |  | 4476|       |            // _SAVE_RETURN_OFFSET
  |  | 4477|    441|            {
  |  | 4478|    441|                #if TIER_ONE
  |  | 4479|    441|                frame->return_offset = (uint16_t)(next_instr - this_instr);
  |  | 4480|    441|                #endif
  |  | 4481|       |                #if TIER_TWO
  |  | 4482|       |                frame->return_offset = oparg;
  |  | 4483|       |                #endif
  |  | 4484|    441|            }
  |  | 4485|       |            // _PUSH_FRAME
  |  | 4486|    441|            {
  |  | 4487|    441|                assert(!IS_PEP523_HOOKED(tstate));
  |  |  ------------------
  |  |  |  Branch (4487:17): [True: 441, False: 0]
  |  |  ------------------
  |  | 4488|    441|                _PyInterpreterFrame *temp = PyStackRef_Unwrap(new_frame);
  |  | 4489|    441|                stack_pointer += -2 - oparg;
  |  | 4490|    441|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    441|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 4491|    441|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 4492|    441|                assert(temp->previous == frame || temp->previous->previous == frame);
  |  |  ------------------
  |  |  |  Branch (4492:17): [True: 441, False: 0]
  |  |  |  Branch (4492:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 4493|    441|                CALL_STAT_INC(inlined_py_calls);
  |  |  ------------------
  |  |  |  |   76|    441|#define CALL_STAT_INC(name) ((void)0)
  |  |  ------------------
  |  | 4494|    441|                frame = tstate->current_frame = temp;
  |  | 4495|    441|                tstate->py_recursion_remaining--;
  |  | 4496|    441|                LOAD_SP();
  |  |  ------------------
  |  |  |  |  425|    441|#define LOAD_SP() \
  |  |  |  |  426|    441|stack_pointer = _PyFrame_GetStackPointer(frame)
  |  |  ------------------
  |  | 4497|    441|                LOAD_IP(0);
  |  |  ------------------
  |  |  |  |  419|    441|#define LOAD_IP(OFFSET) do { \
  |  |  |  |  420|    441|        next_instr = frame->instr_ptr + (OFFSET); \
  |  |  |  |  421|    441|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:14): [Folded, False: 441]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4498|    441|                DTRACE_FUNCTION_ENTRY();
  |  |  ------------------
  |  |  |  |  345|    441|#define DTRACE_FUNCTION_ENTRY() ((void)0)
  |  |  ------------------
  |  | 4499|    441|                LLTRACE_RESUME_FRAME();
  |  |  ------------------
  |  |  |  |  188|    441|#define LLTRACE_RESUME_FRAME() ((void)0)
  |  |  ------------------
  |  | 4500|    441|            }
  |  | 4501|    441|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    441|    { \
  |  |  |  |  201|    441|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    441|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    441|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    441|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    441|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    441|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    441|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    441|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 441]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    441|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    441|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    441|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    441|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    441|    }
  |  |  ------------------
  |  |  |  Branch (4501:13): [True: 441, False: 0]
  |  |  ------------------
  |  | 4502|    441|        }
  |  | 4503|       |
  |  | 4504|    229|        TARGET(CALL_PY_GENERAL) {
  |  |  ------------------
  |  |  |  |  132|    229|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 4505|       |            #if _Py_TAIL_CALL_INTERP
  |  | 4506|       |            int opcode = CALL_PY_GENERAL;
  |  | 4507|       |            (void)(opcode);
  |  | 4508|       |            #endif
  |  | 4509|    229|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 4510|    229|            (void)this_instr;
  |  | 4511|    229|            frame->instr_ptr = next_instr;
  |  | 4512|    229|            next_instr += 4;
  |  | 4513|    229|            INSTRUCTION_STATS(CALL_PY_GENERAL);
  |  |  ------------------
  |  |  |  |   71|    229|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 4514|    229|            static_assert(INLINE_CACHE_ENTRIES_CALL == 3, "incorrect cache size");
  |  | 4515|    229|            _PyStackRef callable;
  |  | 4516|    229|            _PyStackRef self_or_null;
  |  | 4517|    229|            _PyStackRef *args;
  |  | 4518|    229|            _PyStackRef new_frame;
  |  | 4519|       |            /* Skip 1 cache entry */
  |  | 4520|       |            // _CHECK_PEP_523
  |  | 4521|    229|            {
  |  | 4522|    229|                if (IS_PEP523_HOOKED(tstate)) {
  |  |  ------------------
  |  |  |  |  517|    229|#define IS_PEP523_HOOKED(tstate) (tstate->interp->eval_frame != NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (517:34): [True: 0, False: 229]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4523|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 4524|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (4524:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 4525|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 4526|      0|                }
  |  | 4527|    229|            }
  |  | 4528|       |            // _CHECK_FUNCTION_VERSION
  |  | 4529|    229|            {
  |  | 4530|    229|                callable = stack_pointer[-2 - oparg];
  |  | 4531|    229|                uint32_t func_version = read_u32(&this_instr[2].cache);
  |  | 4532|    229|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 4533|    229|                if (!PyFunction_Check(callable_o)) {
  |  |  ------------------
  |  |  |  |   68|    229|#define PyFunction_Check(op) Py_IS_TYPE((op), &PyFunction_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|    229|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|    229|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|    229|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (4533:21): [True: 0, False: 229]
  |  |  ------------------
  |  | 4534|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 4535|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (4535:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 4536|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 4537|      0|                }
  |  | 4538|    229|                PyFunctionObject *func = (PyFunctionObject *)callable_o;
  |  | 4539|    229|                if (func->func_version != func_version) {
  |  |  ------------------
  |  |  |  Branch (4539:21): [True: 2, False: 227]
  |  |  ------------------
  |  | 4540|      2|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      2|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 4541|      2|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (4541:21): [True: 2, False: 0]
  |  |  ------------------
  |  | 4542|      2|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      2|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 4543|      0|                }
  |  | 4544|    229|            }
  |  | 4545|       |            // _CHECK_RECURSION_REMAINING
  |  | 4546|    227|            {
  |  | 4547|    227|                if (tstate->py_recursion_remaining <= 1) {
  |  |  ------------------
  |  |  |  Branch (4547:21): [True: 0, False: 227]
  |  |  ------------------
  |  | 4548|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 4549|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (4549:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 4550|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 4551|      0|                }
  |  | 4552|    227|            }
  |  | 4553|       |            // _PY_FRAME_GENERAL
  |  | 4554|    227|            {
  |  | 4555|    227|                args = &stack_pointer[-oparg];
  |  | 4556|    227|                self_or_null = stack_pointer[-1 - oparg];
  |  | 4557|    227|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 4558|    227|                int total_args = oparg;
  |  | 4559|    227|                if (!PyStackRef_IsNull(self_or_null)) {
  |  |  ------------------
  |  |  |  |  470|    227|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|    227|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    227|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (4559:21): [True: 48, False: 179]
  |  |  ------------------
  |  | 4560|     48|                    args--;
  |  | 4561|     48|                    total_args++;
  |  | 4562|     48|                }
  |  | 4563|    227|                assert(Py_TYPE(callable_o) == &PyFunction_Type);
  |  |  ------------------
  |  |  |  Branch (4563:17): [True: 227, False: 0]
  |  |  ------------------
  |  | 4564|    227|                int code_flags = ((PyCodeObject*)PyFunction_GET_CODE(callable_o))->co_flags;
  |  |  ------------------
  |  |  |  |   93|    227|#define PyFunction_GET_CODE(func) PyFunction_GET_CODE(_PyObject_CAST(func))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    227|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    227|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4565|    227|                PyObject *locals = code_flags & CO_OPTIMIZED ? NULL : Py_NewRef(PyFunction_GET_GLOBALS(callable_o));
  |  |  ------------------
  |  |  |  |  118|    227|#define CO_OPTIMIZED    0x0001
  |  |  ------------------
  |  |                               PyObject *locals = code_flags & CO_OPTIMIZED ? NULL : Py_NewRef(PyFunction_GET_GLOBALS(callable_o));
  |  |  ------------------
  |  |  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (4565:36): [True: 227, False: 0]
  |  |  ------------------
  |  | 4566|    227|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 4567|    227|                _PyInterpreterFrame *temp = _PyEvalFramePushAndInit(
  |  | 4568|    227|                    tstate, callable, locals,
  |  | 4569|    227|                    args, total_args, NULL, frame
  |  | 4570|    227|                );
  |  | 4571|    227|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 4572|    227|                stack_pointer += -2 - oparg;
  |  | 4573|    227|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    227|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 4574|    227|                if (temp == NULL) {
  |  |  ------------------
  |  |  |  Branch (4574:21): [True: 0, False: 227]
  |  |  ------------------
  |  | 4575|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 4576|      0|                }
  |  | 4577|    227|                new_frame = PyStackRef_Wrap(temp);
  |  | 4578|    227|            }
  |  | 4579|       |            // _SAVE_RETURN_OFFSET
  |  | 4580|      0|            {
  |  | 4581|    227|                #if TIER_ONE
  |  | 4582|    227|                frame->return_offset = (uint16_t)(next_instr - this_instr);
  |  | 4583|    227|                #endif
  |  | 4584|       |                #if TIER_TWO
  |  | 4585|       |                frame->return_offset = oparg;
  |  | 4586|       |                #endif
  |  | 4587|    227|            }
  |  | 4588|       |            // _PUSH_FRAME
  |  | 4589|    227|            {
  |  | 4590|    227|                assert(!IS_PEP523_HOOKED(tstate));
  |  |  ------------------
  |  |  |  Branch (4590:17): [True: 227, False: 0]
  |  |  ------------------
  |  | 4591|    227|                _PyInterpreterFrame *temp = PyStackRef_Unwrap(new_frame);
  |  | 4592|    227|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 4593|    227|                assert(temp->previous == frame || temp->previous->previous == frame);
  |  |  ------------------
  |  |  |  Branch (4593:17): [True: 227, False: 0]
  |  |  |  Branch (4593:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 4594|    227|                CALL_STAT_INC(inlined_py_calls);
  |  |  ------------------
  |  |  |  |   76|    227|#define CALL_STAT_INC(name) ((void)0)
  |  |  ------------------
  |  | 4595|    227|                frame = tstate->current_frame = temp;
  |  | 4596|    227|                tstate->py_recursion_remaining--;
  |  | 4597|    227|                LOAD_SP();
  |  |  ------------------
  |  |  |  |  425|    227|#define LOAD_SP() \
  |  |  |  |  426|    227|stack_pointer = _PyFrame_GetStackPointer(frame)
  |  |  ------------------
  |  | 4598|    227|                LOAD_IP(0);
  |  |  ------------------
  |  |  |  |  419|    227|#define LOAD_IP(OFFSET) do { \
  |  |  |  |  420|    227|        next_instr = frame->instr_ptr + (OFFSET); \
  |  |  |  |  421|    227|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:14): [Folded, False: 227]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4599|    227|                DTRACE_FUNCTION_ENTRY();
  |  |  ------------------
  |  |  |  |  345|    227|#define DTRACE_FUNCTION_ENTRY() ((void)0)
  |  |  ------------------
  |  | 4600|    227|                LLTRACE_RESUME_FRAME();
  |  |  ------------------
  |  |  |  |  188|    227|#define LLTRACE_RESUME_FRAME() ((void)0)
  |  |  ------------------
  |  | 4601|    227|            }
  |  | 4602|    227|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    227|    { \
  |  |  |  |  201|    227|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    227|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    227|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    227|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    227|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    227|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    227|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    227|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 227]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    227|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    227|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    227|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    227|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    227|    }
  |  |  ------------------
  |  |  |  Branch (4602:13): [True: 227, False: 0]
  |  |  ------------------
  |  | 4603|    227|        }
  |  | 4604|       |
  |  | 4605|      0|        TARGET(CALL_STR_1) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 4606|       |            #if _Py_TAIL_CALL_INTERP
  |  | 4607|       |            int opcode = CALL_STR_1;
  |  | 4608|       |            (void)(opcode);
  |  | 4609|       |            #endif
  |  | 4610|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 4611|      0|            (void)this_instr;
  |  | 4612|      0|            frame->instr_ptr = next_instr;
  |  | 4613|      0|            next_instr += 4;
  |  | 4614|      0|            INSTRUCTION_STATS(CALL_STR_1);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 4615|      0|            static_assert(INLINE_CACHE_ENTRIES_CALL == 3, "incorrect cache size");
  |  | 4616|      0|            _PyStackRef null;
  |  | 4617|      0|            _PyStackRef callable;
  |  | 4618|      0|            _PyStackRef arg;
  |  | 4619|      0|            _PyStackRef res;
  |  | 4620|      0|            _PyStackRef a;
  |  | 4621|      0|            _PyStackRef value;
  |  | 4622|       |            /* Skip 1 cache entry */
  |  | 4623|       |            /* Skip 2 cache entries */
  |  | 4624|       |            // _GUARD_NOS_NULL
  |  | 4625|      0|            {
  |  | 4626|      0|                null = stack_pointer[-2];
  |  | 4627|      0|                if (!PyStackRef_IsNull(null)) {
  |  |  ------------------
  |  |  |  |  470|      0|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|      0|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      0|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (4627:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 4628|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 4629|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (4629:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 4630|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 4631|      0|                }
  |  | 4632|      0|            }
  |  | 4633|       |            // _GUARD_CALLABLE_STR_1
  |  | 4634|      0|            {
  |  | 4635|      0|                callable = stack_pointer[-3];
  |  | 4636|      0|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 4637|      0|                if (callable_o != (PyObject *)&PyUnicode_Type) {
  |  |  ------------------
  |  |  |  Branch (4637:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 4638|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 4639|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (4639:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 4640|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 4641|      0|                }
  |  | 4642|      0|            }
  |  | 4643|       |            // _CALL_STR_1
  |  | 4644|      0|            {
  |  | 4645|      0|                arg = stack_pointer[-1];
  |  | 4646|      0|                PyObject *arg_o = PyStackRef_AsPyObjectBorrow(arg);
  |  | 4647|      0|                assert(oparg == 1);
  |  |  ------------------
  |  |  |  Branch (4647:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 4648|      0|                STAT_INC(CALL, hit);
  |  |  ------------------
  |  |  |  |   73|      0|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 4649|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 4650|      0|                PyObject *res_o = PyObject_Str(arg_o);
  |  | 4651|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 4652|      0|                if (res_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (4652:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 4653|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 4654|      0|                }
  |  | 4655|      0|                a = arg;
  |  | 4656|      0|                res = PyStackRef_FromPyObjectSteal(res_o);
  |  | 4657|      0|            }
  |  | 4658|       |            // _POP_TOP
  |  | 4659|      0|            {
  |  | 4660|      0|                value = a;
  |  | 4661|      0|                stack_pointer[-3] = res;
  |  | 4662|      0|                stack_pointer += -2;
  |  | 4663|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 4664|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 4665|      0|                PyStackRef_XCLOSE(value);
  |  | 4666|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 4667|      0|            }
  |  | 4668|       |            // _CHECK_PERIODIC_AT_END
  |  | 4669|      0|            {
  |  | 4670|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 4671|      0|                int err = check_periodics(tstate);
  |  | 4672|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 4673|      0|                if (err != 0) {
  |  |  ------------------
  |  |  |  Branch (4673:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 4674|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 4675|      0|                }
  |  | 4676|      0|            }
  |  | 4677|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (4677:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 4678|      0|        }
  |  | 4679|       |
  |  | 4680|      0|        TARGET(CALL_TUPLE_1) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 4681|       |            #if _Py_TAIL_CALL_INTERP
  |  | 4682|       |            int opcode = CALL_TUPLE_1;
  |  | 4683|       |            (void)(opcode);
  |  | 4684|       |            #endif
  |  | 4685|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 4686|      0|            (void)this_instr;
  |  | 4687|      0|            frame->instr_ptr = next_instr;
  |  | 4688|      0|            next_instr += 4;
  |  | 4689|      0|            INSTRUCTION_STATS(CALL_TUPLE_1);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 4690|      0|            static_assert(INLINE_CACHE_ENTRIES_CALL == 3, "incorrect cache size");
  |  | 4691|      0|            _PyStackRef null;
  |  | 4692|      0|            _PyStackRef callable;
  |  | 4693|      0|            _PyStackRef arg;
  |  | 4694|      0|            _PyStackRef res;
  |  | 4695|      0|            _PyStackRef a;
  |  | 4696|      0|            _PyStackRef value;
  |  | 4697|       |            /* Skip 1 cache entry */
  |  | 4698|       |            /* Skip 2 cache entries */
  |  | 4699|       |            // _GUARD_NOS_NULL
  |  | 4700|      0|            {
  |  | 4701|      0|                null = stack_pointer[-2];
  |  | 4702|      0|                if (!PyStackRef_IsNull(null)) {
  |  |  ------------------
  |  |  |  |  470|      0|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|      0|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      0|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (4702:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 4703|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 4704|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (4704:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 4705|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 4706|      0|                }
  |  | 4707|      0|            }
  |  | 4708|       |            // _GUARD_CALLABLE_TUPLE_1
  |  | 4709|      0|            {
  |  | 4710|      0|                callable = stack_pointer[-3];
  |  | 4711|      0|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 4712|      0|                if (callable_o != (PyObject *)&PyTuple_Type) {
  |  |  ------------------
  |  |  |  Branch (4712:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 4713|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 4714|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (4714:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 4715|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 4716|      0|                }
  |  | 4717|      0|            }
  |  | 4718|       |            // _CALL_TUPLE_1
  |  | 4719|      0|            {
  |  | 4720|      0|                arg = stack_pointer[-1];
  |  | 4721|      0|                PyObject *arg_o = PyStackRef_AsPyObjectBorrow(arg);
  |  | 4722|      0|                assert(oparg == 1);
  |  |  ------------------
  |  |  |  Branch (4722:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 4723|      0|                STAT_INC(CALL, hit);
  |  |  ------------------
  |  |  |  |   73|      0|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 4724|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 4725|      0|                PyObject *res_o = PySequence_Tuple(arg_o);
  |  | 4726|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 4727|      0|                if (res_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (4727:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 4728|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 4729|      0|                }
  |  | 4730|      0|                a = arg;
  |  | 4731|      0|                res = PyStackRef_FromPyObjectSteal(res_o);
  |  | 4732|      0|            }
  |  | 4733|       |            // _POP_TOP
  |  | 4734|      0|            {
  |  | 4735|      0|                value = a;
  |  | 4736|      0|                stack_pointer[-3] = res;
  |  | 4737|      0|                stack_pointer += -2;
  |  | 4738|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 4739|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 4740|      0|                PyStackRef_XCLOSE(value);
  |  | 4741|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 4742|      0|            }
  |  | 4743|       |            // _CHECK_PERIODIC_AT_END
  |  | 4744|      0|            {
  |  | 4745|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 4746|      0|                int err = check_periodics(tstate);
  |  | 4747|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 4748|      0|                if (err != 0) {
  |  |  ------------------
  |  |  |  Branch (4748:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 4749|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 4750|      0|                }
  |  | 4751|      0|            }
  |  | 4752|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (4752:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 4753|      0|        }
  |  | 4754|       |
  |  | 4755|     26|        TARGET(CALL_TYPE_1) {
  |  |  ------------------
  |  |  |  |  132|     26|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 4756|       |            #if _Py_TAIL_CALL_INTERP
  |  | 4757|       |            int opcode = CALL_TYPE_1;
  |  | 4758|       |            (void)(opcode);
  |  | 4759|       |            #endif
  |  | 4760|     26|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 4761|     26|            (void)this_instr;
  |  | 4762|     26|            frame->instr_ptr = next_instr;
  |  | 4763|     26|            next_instr += 4;
  |  | 4764|     26|            INSTRUCTION_STATS(CALL_TYPE_1);
  |  |  ------------------
  |  |  |  |   71|     26|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 4765|     26|            static_assert(INLINE_CACHE_ENTRIES_CALL == 3, "incorrect cache size");
  |  | 4766|     26|            _PyStackRef null;
  |  | 4767|     26|            _PyStackRef callable;
  |  | 4768|     26|            _PyStackRef arg;
  |  | 4769|     26|            _PyStackRef res;
  |  | 4770|     26|            _PyStackRef a;
  |  | 4771|     26|            _PyStackRef value;
  |  | 4772|       |            /* Skip 1 cache entry */
  |  | 4773|       |            /* Skip 2 cache entries */
  |  | 4774|       |            // _GUARD_NOS_NULL
  |  | 4775|     26|            {
  |  | 4776|     26|                null = stack_pointer[-2];
  |  | 4777|     26|                if (!PyStackRef_IsNull(null)) {
  |  |  ------------------
  |  |  |  |  470|     26|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|     26|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     26|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (4777:21): [True: 0, False: 26]
  |  |  ------------------
  |  | 4778|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 4779|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (4779:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 4780|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 4781|      0|                }
  |  | 4782|     26|            }
  |  | 4783|       |            // _GUARD_CALLABLE_TYPE_1
  |  | 4784|     26|            {
  |  | 4785|     26|                callable = stack_pointer[-3];
  |  | 4786|     26|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 4787|     26|                if (callable_o != (PyObject *)&PyType_Type) {
  |  |  ------------------
  |  |  |  Branch (4787:21): [True: 0, False: 26]
  |  |  ------------------
  |  | 4788|      0|                    UPDATE_MISS_STATS(CALL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 4789|      0|                    assert(_PyOpcode_Deopt[opcode] == (CALL));
  |  |  ------------------
  |  |  |  Branch (4789:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 4790|      0|                    JUMP_TO_PREDICTED(CALL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 4791|      0|                }
  |  | 4792|     26|            }
  |  | 4793|       |            // _CALL_TYPE_1
  |  | 4794|     26|            {
  |  | 4795|     26|                arg = stack_pointer[-1];
  |  | 4796|     26|                PyObject *arg_o = PyStackRef_AsPyObjectBorrow(arg);
  |  | 4797|     26|                assert(oparg == 1);
  |  |  ------------------
  |  |  |  Branch (4797:17): [True: 26, False: 0]
  |  |  ------------------
  |  | 4798|     26|                STAT_INC(CALL, hit);
  |  |  ------------------
  |  |  |  |   73|     26|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 4799|     26|                a = arg;
  |  | 4800|     26|                res = PyStackRef_FromPyObjectNew(Py_TYPE(arg_o));
  |  |  ------------------
  |  |  |  |  599|     26|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     26|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     26|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4801|     26|            }
  |  | 4802|       |            // _POP_TOP
  |  | 4803|      0|            {
  |  | 4804|     26|                value = a;
  |  | 4805|     26|                stack_pointer[-3] = res;
  |  | 4806|     26|                stack_pointer += -2;
  |  | 4807|     26|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     26|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 4808|     26|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 4809|     26|                PyStackRef_XCLOSE(value);
  |  | 4810|     26|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 4811|     26|            }
  |  | 4812|     26|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     26|    { \
  |  |  |  |  201|     26|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     26|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     26|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     26|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     26|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     26|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     26|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     26|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 26]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     26|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     26|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     26|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     26|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     26|    }
  |  |  ------------------
  |  |  |  Branch (4812:13): [True: 26, False: 0]
  |  |  ------------------
  |  | 4813|     26|        }
  |  | 4814|       |
  |  | 4815|      0|        TARGET(CHECK_EG_MATCH) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 4816|       |            #if _Py_TAIL_CALL_INTERP
  |  | 4817|       |            int opcode = CHECK_EG_MATCH;
  |  | 4818|       |            (void)(opcode);
  |  | 4819|       |            #endif
  |  | 4820|      0|            frame->instr_ptr = next_instr;
  |  | 4821|      0|            next_instr += 1;
  |  | 4822|      0|            INSTRUCTION_STATS(CHECK_EG_MATCH);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 4823|      0|            _PyStackRef exc_value_st;
  |  | 4824|      0|            _PyStackRef match_type_st;
  |  | 4825|      0|            _PyStackRef rest;
  |  | 4826|      0|            _PyStackRef match;
  |  | 4827|      0|            match_type_st = stack_pointer[-1];
  |  | 4828|      0|            exc_value_st = stack_pointer[-2];
  |  | 4829|      0|            PyObject *exc_value = PyStackRef_AsPyObjectBorrow(exc_value_st);
  |  | 4830|      0|            PyObject *match_type = PyStackRef_AsPyObjectBorrow(match_type_st);
  |  | 4831|      0|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 4832|      0|            int err = _PyEval_CheckExceptStarTypeValid(tstate, match_type);
  |  | 4833|      0|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 4834|      0|            if (err < 0) {
  |  |  ------------------
  |  |  |  Branch (4834:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 4835|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 4836|      0|                _PyStackRef tmp = match_type_st;
  |  | 4837|      0|                match_type_st = PyStackRef_NULL;
  |  | 4838|      0|                stack_pointer[-1] = match_type_st;
  |  | 4839|      0|                PyStackRef_CLOSE(tmp);
  |  | 4840|      0|                tmp = exc_value_st;
  |  | 4841|      0|                exc_value_st = PyStackRef_NULL;
  |  | 4842|      0|                stack_pointer[-2] = exc_value_st;
  |  | 4843|      0|                PyStackRef_CLOSE(tmp);
  |  | 4844|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 4845|      0|                stack_pointer += -2;
  |  | 4846|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 4847|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 4848|      0|            }
  |  | 4849|      0|            PyObject *match_o = NULL;
  |  | 4850|      0|            PyObject *rest_o = NULL;
  |  | 4851|      0|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 4852|      0|            int res = _PyEval_ExceptionGroupMatch(frame, exc_value, match_type,
  |  | 4853|      0|                &match_o, &rest_o);
  |  | 4854|      0|            _PyStackRef tmp = match_type_st;
  |  | 4855|      0|            match_type_st = PyStackRef_NULL;
  |  | 4856|      0|            stack_pointer[-1] = match_type_st;
  |  | 4857|      0|            PyStackRef_CLOSE(tmp);
  |  | 4858|      0|            tmp = exc_value_st;
  |  | 4859|      0|            exc_value_st = PyStackRef_NULL;
  |  | 4860|      0|            stack_pointer[-2] = exc_value_st;
  |  | 4861|      0|            PyStackRef_CLOSE(tmp);
  |  | 4862|      0|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 4863|      0|            stack_pointer += -2;
  |  | 4864|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 4865|      0|            if (res < 0) {
  |  |  ------------------
  |  |  |  Branch (4865:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 4866|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 4867|      0|            }
  |  | 4868|      0|            assert((match_o == NULL) == (rest_o == NULL));
  |  |  ------------------
  |  |  |  Branch (4868:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 4869|      0|            if (match_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (4869:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 4870|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 4871|      0|            }
  |  | 4872|      0|            if (!Py_IsNone(match_o)) {
  |  |  ------------------
  |  |  |  |  621|      0|#define Py_IsNone(x) Py_Is((x), Py_None)
  |  |  |  |  ------------------
  |  |  |  |  |  |  187|      0|#define Py_Is(x, y) ((x) == (y))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (4872:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 4873|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 4874|      0|                PyErr_SetHandledException(match_o);
  |  | 4875|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 4876|      0|            }
  |  | 4877|      0|            rest = PyStackRef_FromPyObjectSteal(rest_o);
  |  | 4878|      0|            match = PyStackRef_FromPyObjectSteal(match_o);
  |  | 4879|      0|            stack_pointer[0] = rest;
  |  | 4880|      0|            stack_pointer[1] = match;
  |  | 4881|      0|            stack_pointer += 2;
  |  | 4882|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 4883|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (4883:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 4884|      0|        }
  |  | 4885|       |
  |  | 4886|     89|        TARGET(CHECK_EXC_MATCH) {
  |  |  ------------------
  |  |  |  |  132|     89|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 4887|       |            #if _Py_TAIL_CALL_INTERP
  |  | 4888|       |            int opcode = CHECK_EXC_MATCH;
  |  | 4889|       |            (void)(opcode);
  |  | 4890|       |            #endif
  |  | 4891|     89|            frame->instr_ptr = next_instr;
  |  | 4892|     89|            next_instr += 1;
  |  | 4893|     89|            INSTRUCTION_STATS(CHECK_EXC_MATCH);
  |  |  ------------------
  |  |  |  |   71|     89|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 4894|     89|            _PyStackRef left;
  |  | 4895|     89|            _PyStackRef right;
  |  | 4896|     89|            _PyStackRef b;
  |  | 4897|     89|            right = stack_pointer[-1];
  |  | 4898|     89|            left = stack_pointer[-2];
  |  | 4899|     89|            PyObject *left_o = PyStackRef_AsPyObjectBorrow(left);
  |  | 4900|     89|            PyObject *right_o = PyStackRef_AsPyObjectBorrow(right);
  |  | 4901|     89|            assert(PyExceptionInstance_Check(left_o));
  |  |  ------------------
  |  |  |  Branch (4901:13): [True: 89, False: 0]
  |  |  ------------------
  |  | 4902|     89|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 4903|     89|            int err = _PyEval_CheckExceptTypeValid(tstate, right_o);
  |  | 4904|     89|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 4905|     89|            if (err < 0) {
  |  |  ------------------
  |  |  |  Branch (4905:17): [True: 0, False: 89]
  |  |  ------------------
  |  | 4906|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 4907|      0|            }
  |  | 4908|     89|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 4909|     89|            int res = PyErr_GivenExceptionMatches(left_o, right_o);
  |  | 4910|     89|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 4911|     89|            stack_pointer += -1;
  |  | 4912|     89|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     89|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 4913|     89|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 4914|     89|            PyStackRef_CLOSE(right);
  |  | 4915|     89|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 4916|     89|            b = res ? PyStackRef_True : PyStackRef_False;
  |  |  ------------------
  |  |  |  |  471|     88|#define PyStackRef_True ((_PyStackRef){.bits = ((uintptr_t)&_Py_TrueStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     88|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                           b = res ? PyStackRef_True : PyStackRef_False;
  |  |  ------------------
  |  |  |  |  472|     90|#define PyStackRef_False ((_PyStackRef){.bits = ((uintptr_t)&_Py_FalseStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (4916:17): [True: 88, False: 1]
  |  |  ------------------
  |  | 4917|     89|            stack_pointer[0] = b;
  |  | 4918|     89|            stack_pointer += 1;
  |  | 4919|     89|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     89|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 4920|     89|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     89|    { \
  |  |  |  |  201|     89|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     89|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     89|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     89|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     89|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     89|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     89|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     89|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 89]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     89|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     89|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     89|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     89|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     89|    }
  |  |  ------------------
  |  |  |  Branch (4920:13): [True: 89, False: 0]
  |  |  ------------------
  |  | 4921|     89|        }
  |  | 4922|       |
  |  | 4923|      0|        TARGET(CLEANUP_THROW) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 4924|       |            #if _Py_TAIL_CALL_INTERP
  |  | 4925|       |            int opcode = CLEANUP_THROW;
  |  | 4926|       |            (void)(opcode);
  |  | 4927|       |            #endif
  |  | 4928|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 4929|      0|            (void)this_instr;
  |  | 4930|      0|            frame->instr_ptr = next_instr;
  |  | 4931|      0|            next_instr += 1;
  |  | 4932|      0|            INSTRUCTION_STATS(CLEANUP_THROW);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 4933|      0|            _PyStackRef sub_iter;
  |  | 4934|      0|            _PyStackRef null_in;
  |  | 4935|      0|            _PyStackRef last_sent_val;
  |  | 4936|      0|            _PyStackRef exc_value_st;
  |  | 4937|      0|            _PyStackRef none;
  |  | 4938|      0|            _PyStackRef null_out;
  |  | 4939|      0|            _PyStackRef value;
  |  | 4940|      0|            exc_value_st = stack_pointer[-1];
  |  | 4941|      0|            last_sent_val = stack_pointer[-2];
  |  | 4942|      0|            null_in = stack_pointer[-3];
  |  | 4943|      0|            sub_iter = stack_pointer[-4];
  |  | 4944|      0|            PyObject *exc_value = PyStackRef_AsPyObjectBorrow(exc_value_st);
  |  | 4945|      0|            #if !_Py_TAIL_CALL_INTERP
  |  | 4946|      0|            assert(throwflag);
  |  |  ------------------
  |  |  |  Branch (4946:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 4947|      0|            #endif
  |  | 4948|      0|            assert(exc_value && PyExceptionInstance_Check(exc_value));
  |  |  ------------------
  |  |  |  Branch (4948:13): [True: 0, False: 0]
  |  |  |  Branch (4948:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 4949|      0|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 4950|      0|            int matches = PyErr_GivenExceptionMatches(exc_value, PyExc_StopIteration);
  |  | 4951|      0|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 4952|      0|            if (matches) {
  |  |  ------------------
  |  |  |  Branch (4952:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 4953|      0|                value = PyStackRef_FromPyObjectNew(((PyStopIterationObject *)exc_value)->value);
  |  |  ------------------
  |  |  |  |  599|      0|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4954|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 4955|      0|                _PyStackRef tmp = sub_iter;
  |  | 4956|      0|                sub_iter = value;
  |  | 4957|      0|                stack_pointer[-4] = sub_iter;
  |  | 4958|      0|                PyStackRef_CLOSE(tmp);
  |  | 4959|      0|                tmp = exc_value_st;
  |  | 4960|      0|                exc_value_st = PyStackRef_NULL;
  |  | 4961|      0|                stack_pointer[-1] = exc_value_st;
  |  | 4962|      0|                PyStackRef_CLOSE(tmp);
  |  | 4963|      0|                tmp = last_sent_val;
  |  | 4964|      0|                last_sent_val = PyStackRef_NULL;
  |  | 4965|      0|                stack_pointer[-2] = last_sent_val;
  |  | 4966|      0|                PyStackRef_CLOSE(tmp);
  |  | 4967|      0|                tmp = null_in;
  |  | 4968|      0|                null_in = PyStackRef_NULL;
  |  | 4969|      0|                stack_pointer[-3] = null_in;
  |  | 4970|      0|                PyStackRef_XCLOSE(tmp);
  |  | 4971|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 4972|      0|                stack_pointer += -4;
  |  | 4973|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 4974|      0|                null_out = null_in;
  |  | 4975|      0|                none = PyStackRef_None;
  |  |  ------------------
  |  |  |  |  473|      0|#define PyStackRef_None ((_PyStackRef){.bits = ((uintptr_t)&_Py_NoneStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4976|      0|            }
  |  | 4977|      0|            else {
  |  | 4978|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 4979|      0|                _PyErr_SetRaisedException(tstate, Py_NewRef(exc_value));
  |  |  ------------------
  |  |  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4980|      0|                monitor_reraise(tstate, frame, this_instr);
  |  | 4981|      0|                JUMP_TO_LABEL(exception_unwind);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 4982|      0|            }
  |  | 4983|      0|            stack_pointer[0] = none;
  |  | 4984|      0|            stack_pointer[1] = null_out;
  |  | 4985|      0|            stack_pointer[2] = value;
  |  | 4986|      0|            stack_pointer += 3;
  |  | 4987|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 4988|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (4988:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 4989|      0|        }
  |  | 4990|       |
  |  | 4991|    146|        TARGET(COMPARE_OP) {
  |  |  ------------------
  |  |  |  |  132|    146|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 4992|       |            #if _Py_TAIL_CALL_INTERP
  |  | 4993|       |            int opcode = COMPARE_OP;
  |  | 4994|       |            (void)(opcode);
  |  | 4995|       |            #endif
  |  | 4996|    146|            frame->instr_ptr = next_instr;
  |  | 4997|    146|            next_instr += 2;
  |  | 4998|    146|            INSTRUCTION_STATS(COMPARE_OP);
  |  |  ------------------
  |  |  |  |   71|    146|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 4999|    146|            PREDICTED_COMPARE_OP:;
  |  | 5000|    146|            _Py_CODEUNIT* const this_instr = next_instr - 2;
  |  | 5001|    146|            (void)this_instr;
  |  | 5002|    146|            _PyStackRef left;
  |  | 5003|    146|            _PyStackRef right;
  |  | 5004|    146|            _PyStackRef res;
  |  | 5005|       |            // _SPECIALIZE_COMPARE_OP
  |  | 5006|    146|            {
  |  | 5007|    146|                right = stack_pointer[-1];
  |  | 5008|    146|                left = stack_pointer[-2];
  |  | 5009|    146|                uint16_t counter = read_u16(&this_instr[1].cache);
  |  | 5010|    146|                (void)counter;
  |  | 5011|    146|                #if ENABLE_SPECIALIZATION
  |  | 5012|    146|                if (ADAPTIVE_COUNTER_TRIGGERS(counter)) {
  |  |  ------------------
  |  |  |  |  354|    146|    backoff_counter_triggers(forge_backoff_counter((COUNTER)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (354:5): [True: 18, False: 128]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5013|     18|                    next_instr = this_instr;
  |  | 5014|     18|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5015|     18|                    _Py_Specialize_CompareOp(left, right, next_instr, oparg);
  |  | 5016|     18|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 5017|     18|                    DISPATCH_SAME_OPARG();
  |  |  ------------------
  |  |  |  |  216|     18|    { \
  |  |  |  |  217|     18|        opcode = next_instr->op.code; \
  |  |  |  |  218|     18|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     18|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  219|     18|        DISPATCH_GOTO_NON_TRACING(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  134|     18|#  define DISPATCH_GOTO_NON_TRACING() goto *DISPATCH_TABLE[opcode];
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  130|     18|#  define DISPATCH_TABLE opcode_targets_table
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  220|     18|    }
  |  |  ------------------
  |  | 5018|     18|                }
  |  | 5019|    146|                OPCODE_DEFERRED_INC(COMPARE_OP);
  |  |  ------------------
  |  |  |  |   90|    146|#define OPCODE_DEFERRED_INC(opname) ((void)0)
  |  |  ------------------
  |  | 5020|    146|                ADVANCE_ADAPTIVE_COUNTER(this_instr[1].counter);
  |  |  ------------------
  |  |  |  |  357|    146|    do { \
  |  |  |  |  358|    146|        (COUNTER) = advance_backoff_counter((COUNTER)); \
  |  |  |  |  359|    146|    } while (0);
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (359:14): [Folded, False: 146]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5021|    146|                #endif  /* ENABLE_SPECIALIZATION */
  |  | 5022|    146|            }
  |  | 5023|       |            // _COMPARE_OP
  |  | 5024|    146|            {
  |  | 5025|    146|                PyObject *left_o = PyStackRef_AsPyObjectBorrow(left);
  |  | 5026|    146|                PyObject *right_o = PyStackRef_AsPyObjectBorrow(right);
  |  | 5027|    146|                assert((oparg >> 5) <= Py_GE);
  |  |  ------------------
  |  |  |  Branch (5027:17): [True: 128, False: 18]
  |  |  ------------------
  |  | 5028|    128|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5029|    128|                PyObject *res_o = PyObject_RichCompare(left_o, right_o, oparg >> 5);
  |  | 5030|    128|                _PyStackRef tmp = right;
  |  | 5031|    128|                right = PyStackRef_NULL;
  |  | 5032|    128|                stack_pointer[-1] = right;
  |  | 5033|    128|                PyStackRef_CLOSE(tmp);
  |  | 5034|    128|                tmp = left;
  |  | 5035|    128|                left = PyStackRef_NULL;
  |  | 5036|    128|                stack_pointer[-2] = left;
  |  | 5037|    128|                PyStackRef_CLOSE(tmp);
  |  | 5038|    128|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 5039|    128|                stack_pointer += -2;
  |  | 5040|    128|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    128|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 5041|    128|                if (res_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (5041:21): [True: 0, False: 128]
  |  |  ------------------
  |  | 5042|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 5043|      0|                }
  |  | 5044|    128|                if (oparg & 16) {
  |  |  ------------------
  |  |  |  Branch (5044:21): [True: 123, False: 5]
  |  |  ------------------
  |  | 5045|    123|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5046|    123|                    int res_bool = PyObject_IsTrue(res_o);
  |  | 5047|    123|                    Py_DECREF(res_o);
  |  |  ------------------
  |  |  |  |   80|    123|    do { \
  |  |  |  |   81|    123|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    123|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    123|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   82|    123|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|    123|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|    123|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|    123|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:28): [True: 123, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   83|    123|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   22|    123|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   84|    123|            break; \
  |  |  |  |   85|    123|        } \
  |  |  |  |   86|    123|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |   91|      0|        } \
  |  |  |  |   92|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5048|    123|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 5049|    123|                    if (res_bool < 0) {
  |  |  ------------------
  |  |  |  Branch (5049:25): [True: 0, False: 123]
  |  |  ------------------
  |  | 5050|      0|                        JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 5051|      0|                    }
  |  | 5052|    123|                    res = res_bool ? PyStackRef_True : PyStackRef_False;
  |  |  ------------------
  |  |  |  |  471|     50|#define PyStackRef_True ((_PyStackRef){.bits = ((uintptr_t)&_Py_TrueStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     50|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                                   res = res_bool ? PyStackRef_True : PyStackRef_False;
  |  |  ------------------
  |  |  |  |  472|    196|#define PyStackRef_False ((_PyStackRef){.bits = ((uintptr_t)&_Py_FalseStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     73|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5052:27): [True: 50, False: 73]
  |  |  ------------------
  |  | 5053|    123|                }
  |  | 5054|      5|                else {
  |  | 5055|      5|                    res = PyStackRef_FromPyObjectSteal(res_o);
  |  | 5056|      5|                }
  |  | 5057|    128|            }
  |  | 5058|    128|            stack_pointer[0] = res;
  |  | 5059|    128|            stack_pointer += 1;
  |  | 5060|    128|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    128|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 5061|    128|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    128|    { \
  |  |  |  |  201|    128|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    128|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    128|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    128|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    128|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    128|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    128|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    128|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 128]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    128|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    128|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    128|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    128|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    128|    }
  |  |  ------------------
  |  |  |  Branch (5061:13): [True: 128, False: 0]
  |  |  ------------------
  |  | 5062|    128|        }
  |  | 5063|       |
  |  | 5064|      0|        TARGET(COMPARE_OP_FLOAT) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 5065|       |            #if _Py_TAIL_CALL_INTERP
  |  | 5066|       |            int opcode = COMPARE_OP_FLOAT;
  |  | 5067|       |            (void)(opcode);
  |  | 5068|       |            #endif
  |  | 5069|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 5070|      0|            (void)this_instr;
  |  | 5071|      0|            frame->instr_ptr = next_instr;
  |  | 5072|      0|            next_instr += 2;
  |  | 5073|      0|            INSTRUCTION_STATS(COMPARE_OP_FLOAT);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 5074|      0|            static_assert(INLINE_CACHE_ENTRIES_COMPARE_OP == 1, "incorrect cache size");
  |  | 5075|      0|            _PyStackRef value;
  |  | 5076|      0|            _PyStackRef left;
  |  | 5077|      0|            _PyStackRef right;
  |  | 5078|      0|            _PyStackRef res;
  |  | 5079|      0|            _PyStackRef l;
  |  | 5080|      0|            _PyStackRef r;
  |  | 5081|       |            // _GUARD_TOS_FLOAT
  |  | 5082|      0|            {
  |  | 5083|      0|                value = stack_pointer[-1];
  |  | 5084|      0|                PyObject *value_o = PyStackRef_AsPyObjectBorrow(value);
  |  | 5085|      0|                if (!PyFloat_CheckExact(value_o)) {
  |  |  ------------------
  |  |  |  |   17|      0|#define PyFloat_CheckExact(op) Py_IS_TYPE((op), &PyFloat_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      0|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5085:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 5086|      0|                    UPDATE_MISS_STATS(COMPARE_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 5087|      0|                    assert(_PyOpcode_Deopt[opcode] == (COMPARE_OP));
  |  |  ------------------
  |  |  |  Branch (5087:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 5088|      0|                    JUMP_TO_PREDICTED(COMPARE_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 5089|      0|                }
  |  | 5090|      0|            }
  |  | 5091|       |            // _GUARD_NOS_FLOAT
  |  | 5092|      0|            {
  |  | 5093|      0|                left = stack_pointer[-2];
  |  | 5094|      0|                PyObject *left_o = PyStackRef_AsPyObjectBorrow(left);
  |  | 5095|      0|                if (!PyFloat_CheckExact(left_o)) {
  |  |  ------------------
  |  |  |  |   17|      0|#define PyFloat_CheckExact(op) Py_IS_TYPE((op), &PyFloat_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      0|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5095:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 5096|      0|                    UPDATE_MISS_STATS(COMPARE_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 5097|      0|                    assert(_PyOpcode_Deopt[opcode] == (COMPARE_OP));
  |  |  ------------------
  |  |  |  Branch (5097:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 5098|      0|                    JUMP_TO_PREDICTED(COMPARE_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 5099|      0|                }
  |  | 5100|      0|            }
  |  | 5101|       |            /* Skip 1 cache entry */
  |  | 5102|       |            // _COMPARE_OP_FLOAT
  |  | 5103|      0|            {
  |  | 5104|      0|                right = value;
  |  | 5105|      0|                PyObject *left_o = PyStackRef_AsPyObjectBorrow(left);
  |  | 5106|      0|                PyObject *right_o = PyStackRef_AsPyObjectBorrow(right);
  |  | 5107|      0|                STAT_INC(COMPARE_OP, hit);
  |  |  ------------------
  |  |  |  |   73|      0|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 5108|      0|                double dleft = PyFloat_AS_DOUBLE(left_o);
  |  |  ------------------
  |  |  |  |   18|      0|#define PyFloat_AS_DOUBLE(op) PyFloat_AS_DOUBLE(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5109|      0|                double dright = PyFloat_AS_DOUBLE(right_o);
  |  |  ------------------
  |  |  |  |   18|      0|#define PyFloat_AS_DOUBLE(op) PyFloat_AS_DOUBLE(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5110|      0|                int sign_ish = COMPARISON_BIT(dleft, dright);
  |  |  ------------------
  |  |  |  |  523|      0|#define COMPARISON_BIT(x, y) (1 << (2 * ((x) >= (y)) + ((x) <= (y))))
  |  |  ------------------
  |  | 5111|      0|                l = left;
  |  | 5112|      0|                r = right;
  |  | 5113|      0|                res = (sign_ish & oparg) ? PyStackRef_True : PyStackRef_False;
  |  |  ------------------
  |  |  |  |  471|      0|#define PyStackRef_True ((_PyStackRef){.bits = ((uintptr_t)&_Py_TrueStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                               res = (sign_ish & oparg) ? PyStackRef_True : PyStackRef_False;
  |  |  ------------------
  |  |  |  |  472|      0|#define PyStackRef_False ((_PyStackRef){.bits = ((uintptr_t)&_Py_FalseStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5113:23): [True: 0, False: 0]
  |  |  ------------------
  |  | 5114|      0|            }
  |  | 5115|       |            // _POP_TOP_FLOAT
  |  | 5116|      0|            {
  |  | 5117|      0|                value = r;
  |  | 5118|      0|                assert(PyFloat_CheckExact(PyStackRef_AsPyObjectBorrow(value)));
  |  |  ------------------
  |  |  |  Branch (5118:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 5119|      0|                PyStackRef_CLOSE_SPECIALIZED(value, _PyFloat_ExactDealloc);
  |  | 5120|      0|            }
  |  | 5121|       |            // _POP_TOP_FLOAT
  |  | 5122|      0|            {
  |  | 5123|      0|                value = l;
  |  | 5124|      0|                assert(PyFloat_CheckExact(PyStackRef_AsPyObjectBorrow(value)));
  |  |  ------------------
  |  |  |  Branch (5124:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 5125|      0|                PyStackRef_CLOSE_SPECIALIZED(value, _PyFloat_ExactDealloc);
  |  | 5126|      0|            }
  |  | 5127|      0|            stack_pointer[-2] = res;
  |  | 5128|      0|            stack_pointer += -1;
  |  | 5129|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 5130|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (5130:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 5131|      0|        }
  |  | 5132|       |
  |  | 5133|    117|        TARGET(COMPARE_OP_INT) {
  |  |  ------------------
  |  |  |  |  132|    117|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 5134|       |            #if _Py_TAIL_CALL_INTERP
  |  | 5135|       |            int opcode = COMPARE_OP_INT;
  |  | 5136|       |            (void)(opcode);
  |  | 5137|       |            #endif
  |  | 5138|    117|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 5139|    117|            (void)this_instr;
  |  | 5140|    117|            frame->instr_ptr = next_instr;
  |  | 5141|    117|            next_instr += 2;
  |  | 5142|    117|            INSTRUCTION_STATS(COMPARE_OP_INT);
  |  |  ------------------
  |  |  |  |   71|    117|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 5143|    117|            static_assert(INLINE_CACHE_ENTRIES_COMPARE_OP == 1, "incorrect cache size");
  |  | 5144|    117|            _PyStackRef value;
  |  | 5145|    117|            _PyStackRef left;
  |  | 5146|    117|            _PyStackRef right;
  |  | 5147|    117|            _PyStackRef res;
  |  | 5148|    117|            _PyStackRef l;
  |  | 5149|    117|            _PyStackRef r;
  |  | 5150|       |            // _GUARD_TOS_INT
  |  | 5151|    117|            {
  |  | 5152|    117|                value = stack_pointer[-1];
  |  | 5153|    117|                PyObject *value_o = PyStackRef_AsPyObjectBorrow(value);
  |  | 5154|    117|                if (!_PyLong_CheckExactAndCompact(value_o)) {
  |  |  ------------------
  |  |  |  Branch (5154:21): [True: 0, False: 117]
  |  |  ------------------
  |  | 5155|      0|                    UPDATE_MISS_STATS(COMPARE_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 5156|      0|                    assert(_PyOpcode_Deopt[opcode] == (COMPARE_OP));
  |  |  ------------------
  |  |  |  Branch (5156:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 5157|      0|                    JUMP_TO_PREDICTED(COMPARE_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 5158|      0|                }
  |  | 5159|    117|            }
  |  | 5160|       |            // _GUARD_NOS_INT
  |  | 5161|    117|            {
  |  | 5162|    117|                left = stack_pointer[-2];
  |  | 5163|    117|                PyObject *left_o = PyStackRef_AsPyObjectBorrow(left);
  |  | 5164|    117|                if (!_PyLong_CheckExactAndCompact(left_o)) {
  |  |  ------------------
  |  |  |  Branch (5164:21): [True: 0, False: 117]
  |  |  ------------------
  |  | 5165|      0|                    UPDATE_MISS_STATS(COMPARE_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 5166|      0|                    assert(_PyOpcode_Deopt[opcode] == (COMPARE_OP));
  |  |  ------------------
  |  |  |  Branch (5166:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 5167|      0|                    JUMP_TO_PREDICTED(COMPARE_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 5168|      0|                }
  |  | 5169|    117|            }
  |  | 5170|       |            /* Skip 1 cache entry */
  |  | 5171|       |            // _COMPARE_OP_INT
  |  | 5172|    117|            {
  |  | 5173|    117|                right = value;
  |  | 5174|    117|                PyObject *left_o = PyStackRef_AsPyObjectBorrow(left);
  |  | 5175|    117|                PyObject *right_o = PyStackRef_AsPyObjectBorrow(right);
  |  | 5176|    117|                assert(_PyLong_IsCompact((PyLongObject *)left_o));
  |  |  ------------------
  |  |  |  Branch (5176:17): [True: 117, False: 0]
  |  |  ------------------
  |  | 5177|    117|                assert(_PyLong_IsCompact((PyLongObject *)right_o));
  |  |  ------------------
  |  |  |  Branch (5177:17): [True: 117, False: 0]
  |  |  ------------------
  |  | 5178|    117|                STAT_INC(COMPARE_OP, hit);
  |  |  ------------------
  |  |  |  |   73|    117|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 5179|    117|                assert(_PyLong_DigitCount((PyLongObject *)left_o) <= 1 &&
  |  |  ------------------
  |  |  |  Branch (5179:17): [True: 117, False: 0]
  |  |  |  Branch (5179:17): [True: 117, False: 0]
  |  |  ------------------
  |  | 5180|    117|                   _PyLong_DigitCount((PyLongObject *)right_o) <= 1);
  |  | 5181|    117|                Py_ssize_t ileft = _PyLong_CompactValue((PyLongObject *)left_o);
  |  | 5182|    117|                Py_ssize_t iright = _PyLong_CompactValue((PyLongObject *)right_o);
  |  | 5183|    117|                int sign_ish = COMPARISON_BIT(ileft, iright);
  |  |  ------------------
  |  |  |  |  523|    117|#define COMPARISON_BIT(x, y) (1 << (2 * ((x) >= (y)) + ((x) <= (y))))
  |  |  ------------------
  |  | 5184|    117|                l = left;
  |  | 5185|    117|                r = right;
  |  | 5186|    117|                res =  (sign_ish & oparg) ? PyStackRef_True : PyStackRef_False;
  |  |  ------------------
  |  |  |  |  471|     34|#define PyStackRef_True ((_PyStackRef){.bits = ((uintptr_t)&_Py_TrueStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     34|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                               res =  (sign_ish & oparg) ? PyStackRef_True : PyStackRef_False;
  |  |  ------------------
  |  |  |  |  472|    200|#define PyStackRef_False ((_PyStackRef){.bits = ((uintptr_t)&_Py_FalseStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     83|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5186:24): [True: 34, False: 83]
  |  |  ------------------
  |  | 5187|    117|            }
  |  | 5188|       |            // _POP_TOP_INT
  |  | 5189|      0|            {
  |  | 5190|    117|                value = r;
  |  | 5191|    117|                assert(PyLong_CheckExact(PyStackRef_AsPyObjectBorrow(value)));
  |  |  ------------------
  |  |  |  Branch (5191:17): [True: 117, False: 0]
  |  |  ------------------
  |  | 5192|    117|                PyStackRef_CLOSE_SPECIALIZED(value, _PyLong_ExactDealloc);
  |  | 5193|    117|            }
  |  | 5194|       |            // _POP_TOP_INT
  |  | 5195|      0|            {
  |  | 5196|    117|                value = l;
  |  | 5197|    117|                assert(PyLong_CheckExact(PyStackRef_AsPyObjectBorrow(value)));
  |  |  ------------------
  |  |  |  Branch (5197:17): [True: 117, False: 0]
  |  |  ------------------
  |  | 5198|    117|                PyStackRef_CLOSE_SPECIALIZED(value, _PyLong_ExactDealloc);
  |  | 5199|    117|            }
  |  | 5200|      0|            stack_pointer[-2] = res;
  |  | 5201|    117|            stack_pointer += -1;
  |  | 5202|    117|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    117|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 5203|    117|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    117|    { \
  |  |  |  |  201|    117|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    117|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    117|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    117|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    117|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    117|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    117|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    117|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 117]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    117|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    117|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    117|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    117|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    117|    }
  |  |  ------------------
  |  |  |  Branch (5203:13): [True: 117, False: 0]
  |  |  ------------------
  |  | 5204|    117|        }
  |  | 5205|       |
  |  | 5206|    400|        TARGET(COMPARE_OP_STR) {
  |  |  ------------------
  |  |  |  |  132|    400|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 5207|       |            #if _Py_TAIL_CALL_INTERP
  |  | 5208|       |            int opcode = COMPARE_OP_STR;
  |  | 5209|       |            (void)(opcode);
  |  | 5210|       |            #endif
  |  | 5211|    400|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 5212|    400|            (void)this_instr;
  |  | 5213|    400|            frame->instr_ptr = next_instr;
  |  | 5214|    400|            next_instr += 2;
  |  | 5215|    400|            INSTRUCTION_STATS(COMPARE_OP_STR);
  |  |  ------------------
  |  |  |  |   71|    400|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 5216|    400|            static_assert(INLINE_CACHE_ENTRIES_COMPARE_OP == 1, "incorrect cache size");
  |  | 5217|    400|            _PyStackRef value;
  |  | 5218|    400|            _PyStackRef nos;
  |  | 5219|    400|            _PyStackRef left;
  |  | 5220|    400|            _PyStackRef right;
  |  | 5221|    400|            _PyStackRef res;
  |  | 5222|    400|            _PyStackRef l;
  |  | 5223|    400|            _PyStackRef r;
  |  | 5224|       |            // _GUARD_TOS_UNICODE
  |  | 5225|    400|            {
  |  | 5226|    400|                value = stack_pointer[-1];
  |  | 5227|    400|                PyObject *value_o = PyStackRef_AsPyObjectBorrow(value);
  |  | 5228|    400|                if (!PyUnicode_CheckExact(value_o)) {
  |  |  ------------------
  |  |  |  |  104|    400|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|    400|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|    400|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|    400|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5228:21): [True: 0, False: 400]
  |  |  ------------------
  |  | 5229|      0|                    UPDATE_MISS_STATS(COMPARE_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 5230|      0|                    assert(_PyOpcode_Deopt[opcode] == (COMPARE_OP));
  |  |  ------------------
  |  |  |  Branch (5230:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 5231|      0|                    JUMP_TO_PREDICTED(COMPARE_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 5232|      0|                }
  |  | 5233|    400|            }
  |  | 5234|       |            // _GUARD_NOS_UNICODE
  |  | 5235|    400|            {
  |  | 5236|    400|                nos = stack_pointer[-2];
  |  | 5237|    400|                PyObject *o = PyStackRef_AsPyObjectBorrow(nos);
  |  | 5238|    400|                if (!PyUnicode_CheckExact(o)) {
  |  |  ------------------
  |  |  |  |  104|    400|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|    400|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|    400|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|    400|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5238:21): [True: 0, False: 400]
  |  |  ------------------
  |  | 5239|      0|                    UPDATE_MISS_STATS(COMPARE_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 5240|      0|                    assert(_PyOpcode_Deopt[opcode] == (COMPARE_OP));
  |  |  ------------------
  |  |  |  Branch (5240:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 5241|      0|                    JUMP_TO_PREDICTED(COMPARE_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 5242|      0|                }
  |  | 5243|    400|            }
  |  | 5244|       |            /* Skip 1 cache entry */
  |  | 5245|       |            // _COMPARE_OP_STR
  |  | 5246|    400|            {
  |  | 5247|    400|                right = value;
  |  | 5248|    400|                left = nos;
  |  | 5249|    400|                PyObject *left_o = PyStackRef_AsPyObjectBorrow(left);
  |  | 5250|    400|                PyObject *right_o = PyStackRef_AsPyObjectBorrow(right);
  |  | 5251|    400|                STAT_INC(COMPARE_OP, hit);
  |  |  ------------------
  |  |  |  |   73|    400|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 5252|    400|                int eq = _PyUnicode_Equal(left_o, right_o);
  |  | 5253|    400|                assert((oparg >> 5) == Py_EQ || (oparg >> 5) == Py_NE);
  |  |  ------------------
  |  |  |  Branch (5253:17): [True: 11, False: 389]
  |  |  |  Branch (5253:17): [True: 389, False: 0]
  |  |  ------------------
  |  | 5254|    400|                l = left;
  |  | 5255|    400|                r = right;
  |  | 5256|    400|                assert(eq == 0 || eq == 1);
  |  |  ------------------
  |  |  |  Branch (5256:17): [True: 374, False: 26]
  |  |  |  Branch (5256:17): [True: 26, False: 0]
  |  |  ------------------
  |  | 5257|    400|                assert((oparg & 0xf) == COMPARISON_NOT_EQUALS || (oparg & 0xf) == COMPARISON_EQUALS);
  |  |  ------------------
  |  |  |  Branch (5257:17): [True: 389, False: 11]
  |  |  |  Branch (5257:17): [True: 11, False: 0]
  |  |  ------------------
  |  | 5258|    400|                assert(COMPARISON_NOT_EQUALS + 1 == COMPARISON_EQUALS);
  |  |  ------------------
  |  |  |  Branch (5258:17): [True: 400, Folded]
  |  |  ------------------
  |  | 5259|    400|                res = ((COMPARISON_NOT_EQUALS + eq) & oparg) ? PyStackRef_True : PyStackRef_False;
  |  |  ------------------
  |  |  |  |  538|    400|#define COMPARISON_NOT_EQUALS (COMPARISON_UNORDERED | COMPARISON_LESS_THAN | COMPARISON_GREATER_THAN)
  |  |  |  |  ------------------
  |  |  |  |  |  |  532|    400|#define COMPARISON_UNORDERED 1
  |  |  |  |  ------------------
  |  |  |  |               #define COMPARISON_NOT_EQUALS (COMPARISON_UNORDERED | COMPARISON_LESS_THAN | COMPARISON_GREATER_THAN)
  |  |  |  |  ------------------
  |  |  |  |  |  |  534|    400|#define COMPARISON_LESS_THAN 2
  |  |  |  |  ------------------
  |  |  |  |               #define COMPARISON_NOT_EQUALS (COMPARISON_UNORDERED | COMPARISON_LESS_THAN | COMPARISON_GREATER_THAN)
  |  |  |  |  ------------------
  |  |  |  |  |  |  535|    400|#define COMPARISON_GREATER_THAN 4
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                               res = ((COMPARISON_NOT_EQUALS + eq) & oparg) ? PyStackRef_True : PyStackRef_False;
  |  |  ------------------
  |  |  |  |  471|    363|#define PyStackRef_True ((_PyStackRef){.bits = ((uintptr_t)&_Py_TrueStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    363|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                               res = ((COMPARISON_NOT_EQUALS + eq) & oparg) ? PyStackRef_True : PyStackRef_False;
  |  |  ------------------
  |  |  |  |  472|    437|#define PyStackRef_False ((_PyStackRef){.bits = ((uintptr_t)&_Py_FalseStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     37|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5259:23): [True: 363, False: 37]
  |  |  ------------------
  |  | 5260|    400|            }
  |  | 5261|       |            // _POP_TOP_UNICODE
  |  | 5262|      0|            {
  |  | 5263|    400|                value = r;
  |  | 5264|    400|                assert(PyUnicode_CheckExact(PyStackRef_AsPyObjectBorrow(value)));
  |  |  ------------------
  |  |  |  Branch (5264:17): [True: 400, False: 0]
  |  |  ------------------
  |  | 5265|    400|                PyStackRef_CLOSE_SPECIALIZED(value, _PyUnicode_ExactDealloc);
  |  | 5266|    400|            }
  |  | 5267|       |            // _POP_TOP_UNICODE
  |  | 5268|      0|            {
  |  | 5269|    400|                value = l;
  |  | 5270|    400|                assert(PyUnicode_CheckExact(PyStackRef_AsPyObjectBorrow(value)));
  |  |  ------------------
  |  |  |  Branch (5270:17): [True: 400, False: 0]
  |  |  ------------------
  |  | 5271|    400|                PyStackRef_CLOSE_SPECIALIZED(value, _PyUnicode_ExactDealloc);
  |  | 5272|    400|            }
  |  | 5273|      0|            stack_pointer[-2] = res;
  |  | 5274|    400|            stack_pointer += -1;
  |  | 5275|    400|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    400|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 5276|    400|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    400|    { \
  |  |  |  |  201|    400|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    400|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    400|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    400|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    400|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    400|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    400|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    400|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 400]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    400|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    400|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    400|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    400|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    400|    }
  |  |  ------------------
  |  |  |  Branch (5276:13): [True: 400, False: 0]
  |  |  ------------------
  |  | 5277|    400|        }
  |  | 5278|       |
  |  | 5279|    174|        TARGET(CONTAINS_OP) {
  |  |  ------------------
  |  |  |  |  132|    174|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 5280|       |            #if _Py_TAIL_CALL_INTERP
  |  | 5281|       |            int opcode = CONTAINS_OP;
  |  | 5282|       |            (void)(opcode);
  |  | 5283|       |            #endif
  |  | 5284|    174|            frame->instr_ptr = next_instr;
  |  | 5285|    174|            next_instr += 2;
  |  | 5286|    174|            INSTRUCTION_STATS(CONTAINS_OP);
  |  |  ------------------
  |  |  |  |   71|    174|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 5287|    174|            PREDICTED_CONTAINS_OP:;
  |  | 5288|    174|            _Py_CODEUNIT* const this_instr = next_instr - 2;
  |  | 5289|    174|            (void)this_instr;
  |  | 5290|    174|            _PyStackRef right;
  |  | 5291|    174|            _PyStackRef left;
  |  | 5292|    174|            _PyStackRef b;
  |  | 5293|    174|            _PyStackRef l;
  |  | 5294|    174|            _PyStackRef r;
  |  | 5295|    174|            _PyStackRef value;
  |  | 5296|       |            // _SPECIALIZE_CONTAINS_OP
  |  | 5297|    174|            {
  |  | 5298|    174|                right = stack_pointer[-1];
  |  | 5299|    174|                uint16_t counter = read_u16(&this_instr[1].cache);
  |  | 5300|    174|                (void)counter;
  |  | 5301|    174|                #if ENABLE_SPECIALIZATION
  |  | 5302|    174|                if (ADAPTIVE_COUNTER_TRIGGERS(counter)) {
  |  |  ------------------
  |  |  |  |  354|    174|    backoff_counter_triggers(forge_backoff_counter((COUNTER)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (354:5): [True: 23, False: 151]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5303|     23|                    next_instr = this_instr;
  |  | 5304|     23|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5305|     23|                    _Py_Specialize_ContainsOp(right, next_instr);
  |  | 5306|     23|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 5307|     23|                    DISPATCH_SAME_OPARG();
  |  |  ------------------
  |  |  |  |  216|     23|    { \
  |  |  |  |  217|     23|        opcode = next_instr->op.code; \
  |  |  |  |  218|     23|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     23|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  219|     23|        DISPATCH_GOTO_NON_TRACING(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  134|     23|#  define DISPATCH_GOTO_NON_TRACING() goto *DISPATCH_TABLE[opcode];
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  130|     23|#  define DISPATCH_TABLE opcode_targets_table
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  220|     23|    }
  |  |  ------------------
  |  | 5308|     23|                }
  |  | 5309|    174|                OPCODE_DEFERRED_INC(CONTAINS_OP);
  |  |  ------------------
  |  |  |  |   90|    174|#define OPCODE_DEFERRED_INC(opname) ((void)0)
  |  |  ------------------
  |  | 5310|    174|                ADVANCE_ADAPTIVE_COUNTER(this_instr[1].counter);
  |  |  ------------------
  |  |  |  |  357|    174|    do { \
  |  |  |  |  358|    174|        (COUNTER) = advance_backoff_counter((COUNTER)); \
  |  |  |  |  359|    174|    } while (0);
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (359:14): [Folded, False: 174]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5311|    174|                #endif  /* ENABLE_SPECIALIZATION */
  |  | 5312|    174|            }
  |  | 5313|       |            // _CONTAINS_OP
  |  | 5314|    174|            {
  |  | 5315|    174|                left = stack_pointer[-2];
  |  | 5316|    174|                PyObject *left_o = PyStackRef_AsPyObjectBorrow(left);
  |  | 5317|    174|                PyObject *right_o = PyStackRef_AsPyObjectBorrow(right);
  |  | 5318|    174|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5319|    174|                int res = PySequence_Contains(right_o, left_o);
  |  | 5320|    174|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 5321|    174|                if (res < 0) {
  |  |  ------------------
  |  |  |  Branch (5321:21): [True: 0, False: 174]
  |  |  ------------------
  |  | 5322|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 5323|      0|                }
  |  | 5324|    174|                b = (res ^ oparg) ? PyStackRef_True : PyStackRef_False;
  |  |  ------------------
  |  |  |  |  471|     90|#define PyStackRef_True ((_PyStackRef){.bits = ((uintptr_t)&_Py_TrueStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     90|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                               b = (res ^ oparg) ? PyStackRef_True : PyStackRef_False;
  |  |  ------------------
  |  |  |  |  472|    258|#define PyStackRef_False ((_PyStackRef){.bits = ((uintptr_t)&_Py_FalseStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     84|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5324:21): [True: 90, False: 84]
  |  |  ------------------
  |  | 5325|    174|                l = left;
  |  | 5326|    174|                r = right;
  |  | 5327|    174|            }
  |  | 5328|       |            // _POP_TOP
  |  | 5329|      0|            {
  |  | 5330|    174|                value = r;
  |  | 5331|    174|                stack_pointer[-2] = b;
  |  | 5332|    174|                stack_pointer[-1] = l;
  |  | 5333|    174|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5334|    174|                PyStackRef_XCLOSE(value);
  |  | 5335|    174|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 5336|    174|            }
  |  | 5337|       |            // _POP_TOP
  |  | 5338|    174|            {
  |  | 5339|    174|                value = l;
  |  | 5340|    174|                stack_pointer += -1;
  |  | 5341|    174|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    174|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 5342|    174|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5343|    174|                PyStackRef_XCLOSE(value);
  |  | 5344|    174|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 5345|    174|            }
  |  | 5346|    174|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    174|    { \
  |  |  |  |  201|    174|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    174|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    151|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    151|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    151|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    151|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    151|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    151|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 151]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    151|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    151|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    151|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    151|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    151|    }
  |  |  ------------------
  |  |  |  Branch (5346:13): [True: 151, False: 23]
  |  |  ------------------
  |  | 5347|    151|        }
  |  | 5348|       |
  |  | 5349|    104|        TARGET(CONTAINS_OP_DICT) {
  |  |  ------------------
  |  |  |  |  132|    104|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 5350|       |            #if _Py_TAIL_CALL_INTERP
  |  | 5351|       |            int opcode = CONTAINS_OP_DICT;
  |  | 5352|       |            (void)(opcode);
  |  | 5353|       |            #endif
  |  | 5354|    104|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 5355|    104|            (void)this_instr;
  |  | 5356|    104|            frame->instr_ptr = next_instr;
  |  | 5357|    104|            next_instr += 2;
  |  | 5358|    104|            INSTRUCTION_STATS(CONTAINS_OP_DICT);
  |  |  ------------------
  |  |  |  |   71|    104|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 5359|    104|            static_assert(INLINE_CACHE_ENTRIES_CONTAINS_OP == 1, "incorrect cache size");
  |  | 5360|    104|            _PyStackRef tos;
  |  | 5361|    104|            _PyStackRef left;
  |  | 5362|    104|            _PyStackRef right;
  |  | 5363|    104|            _PyStackRef b;
  |  | 5364|    104|            _PyStackRef l;
  |  | 5365|    104|            _PyStackRef r;
  |  | 5366|    104|            _PyStackRef value;
  |  | 5367|       |            // _GUARD_TOS_ANY_DICT
  |  | 5368|    104|            {
  |  | 5369|    104|                tos = stack_pointer[-1];
  |  | 5370|    104|                PyObject *o = PyStackRef_AsPyObjectBorrow(tos);
  |  | 5371|    104|                if (!PyAnyDict_CheckExact(o)) {
  |  |  ------------------
  |  |  |  |   41|    104|    (PyDict_CheckExact(ob) || PyFrozenDict_CheckExact(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |   19|    104|#define PyDict_CheckExact(op) Py_IS_TYPE((op), &PyDict_Type)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|    208|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|    104|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|    104|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:5): [True: 104, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                   (PyDict_CheckExact(ob) || PyFrozenDict_CheckExact(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |   38|      0|#define PyFrozenDict_CheckExact(op) Py_IS_TYPE((op), &PyFrozenDict_Type)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (65:5): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5372|      0|                    UPDATE_MISS_STATS(CONTAINS_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 5373|      0|                    assert(_PyOpcode_Deopt[opcode] == (CONTAINS_OP));
  |  |  ------------------
  |  |  |  Branch (5373:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 5374|      0|                    JUMP_TO_PREDICTED(CONTAINS_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 5375|      0|                }
  |  | 5376|    104|            }
  |  | 5377|       |            /* Skip 1 cache entry */
  |  | 5378|       |            // _CONTAINS_OP_DICT
  |  | 5379|    104|            {
  |  | 5380|    104|                right = tos;
  |  | 5381|    104|                left = stack_pointer[-2];
  |  | 5382|    104|                PyObject *left_o = PyStackRef_AsPyObjectBorrow(left);
  |  | 5383|    104|                PyObject *right_o = PyStackRef_AsPyObjectBorrow(right);
  |  | 5384|    104|                assert(PyAnyDict_CheckExact(right_o));
  |  |  ------------------
  |  |  |  Branch (5384:17): [True: 104, False: 0]
  |  |  |  Branch (5384:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 5385|    104|                STAT_INC(CONTAINS_OP, hit);
  |  |  ------------------
  |  |  |  |   73|    104|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 5386|    104|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5387|    104|                int res = PyDict_Contains(right_o, left_o);
  |  | 5388|    104|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 5389|    104|                if (res < 0) {
  |  |  ------------------
  |  |  |  Branch (5389:21): [True: 0, False: 104]
  |  |  ------------------
  |  | 5390|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 5391|      0|                }
  |  | 5392|    104|                b = (res ^ oparg) ? PyStackRef_True : PyStackRef_False;
  |  |  ------------------
  |  |  |  |  471|     57|#define PyStackRef_True ((_PyStackRef){.bits = ((uintptr_t)&_Py_TrueStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     57|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                               b = (res ^ oparg) ? PyStackRef_True : PyStackRef_False;
  |  |  ------------------
  |  |  |  |  472|    151|#define PyStackRef_False ((_PyStackRef){.bits = ((uintptr_t)&_Py_FalseStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     47|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5392:21): [True: 57, False: 47]
  |  |  ------------------
  |  | 5393|    104|                l = left;
  |  | 5394|    104|                r = right;
  |  | 5395|    104|            }
  |  | 5396|       |            // _POP_TOP
  |  | 5397|      0|            {
  |  | 5398|    104|                value = r;
  |  | 5399|    104|                stack_pointer[-2] = b;
  |  | 5400|    104|                stack_pointer[-1] = l;
  |  | 5401|    104|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5402|    104|                PyStackRef_XCLOSE(value);
  |  | 5403|    104|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 5404|    104|            }
  |  | 5405|       |            // _POP_TOP
  |  | 5406|    104|            {
  |  | 5407|    104|                value = l;
  |  | 5408|    104|                stack_pointer += -1;
  |  | 5409|    104|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    104|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 5410|    104|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5411|    104|                PyStackRef_XCLOSE(value);
  |  | 5412|    104|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 5413|    104|            }
  |  | 5414|    104|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    104|    { \
  |  |  |  |  201|    104|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    104|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    104|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    104|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    104|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    104|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    104|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    104|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 104]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    104|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    104|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    104|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    104|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    104|    }
  |  |  ------------------
  |  |  |  Branch (5414:13): [True: 104, False: 0]
  |  |  ------------------
  |  | 5415|    104|        }
  |  | 5416|       |
  |  | 5417|     43|        TARGET(CONTAINS_OP_SET) {
  |  |  ------------------
  |  |  |  |  132|     43|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 5418|       |            #if _Py_TAIL_CALL_INTERP
  |  | 5419|       |            int opcode = CONTAINS_OP_SET;
  |  | 5420|       |            (void)(opcode);
  |  | 5421|       |            #endif
  |  | 5422|     43|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 5423|     43|            (void)this_instr;
  |  | 5424|     43|            frame->instr_ptr = next_instr;
  |  | 5425|     43|            next_instr += 2;
  |  | 5426|     43|            INSTRUCTION_STATS(CONTAINS_OP_SET);
  |  |  ------------------
  |  |  |  |   71|     43|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 5427|     43|            static_assert(INLINE_CACHE_ENTRIES_CONTAINS_OP == 1, "incorrect cache size");
  |  | 5428|     43|            _PyStackRef tos;
  |  | 5429|     43|            _PyStackRef left;
  |  | 5430|     43|            _PyStackRef right;
  |  | 5431|     43|            _PyStackRef b;
  |  | 5432|     43|            _PyStackRef l;
  |  | 5433|     43|            _PyStackRef r;
  |  | 5434|     43|            _PyStackRef value;
  |  | 5435|       |            // _GUARD_TOS_ANY_SET
  |  | 5436|     43|            {
  |  | 5437|     43|                tos = stack_pointer[-1];
  |  | 5438|     43|                PyObject *o = PyStackRef_AsPyObjectBorrow(tos);
  |  | 5439|     43|                if (!PyAnySet_CheckExact(o)) {
  |  |  ------------------
  |  |  |  |   29|     43|    (Py_IS_TYPE((ob), &PySet_Type) || Py_IS_TYPE((ob), &PyFrozenSet_Type))
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|     86|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|     43|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     43|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (65:5): [True: 43, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                   (Py_IS_TYPE((ob), &PySet_Type) || Py_IS_TYPE((ob), &PyFrozenSet_Type))
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      0|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (65:5): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5440|      0|                    UPDATE_MISS_STATS(CONTAINS_OP);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 5441|      0|                    assert(_PyOpcode_Deopt[opcode] == (CONTAINS_OP));
  |  |  ------------------
  |  |  |  Branch (5441:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 5442|      0|                    JUMP_TO_PREDICTED(CONTAINS_OP);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 5443|      0|                }
  |  | 5444|     43|            }
  |  | 5445|       |            /* Skip 1 cache entry */
  |  | 5446|       |            // _CONTAINS_OP_SET
  |  | 5447|     43|            {
  |  | 5448|     43|                right = tos;
  |  | 5449|     43|                left = stack_pointer[-2];
  |  | 5450|     43|                PyObject *left_o = PyStackRef_AsPyObjectBorrow(left);
  |  | 5451|     43|                PyObject *right_o = PyStackRef_AsPyObjectBorrow(right);
  |  | 5452|     43|                assert(PyAnySet_CheckExact(right_o));
  |  |  ------------------
  |  |  |  Branch (5452:17): [True: 43, False: 0]
  |  |  |  Branch (5452:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 5453|     43|                STAT_INC(CONTAINS_OP, hit);
  |  |  ------------------
  |  |  |  |   73|     43|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 5454|     43|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5455|     43|                int res = _PySet_Contains((PySetObject *)right_o, left_o);
  |  | 5456|     43|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 5457|     43|                if (res < 0) {
  |  |  ------------------
  |  |  |  Branch (5457:21): [True: 0, False: 43]
  |  |  ------------------
  |  | 5458|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 5459|      0|                }
  |  | 5460|     43|                b = (res ^ oparg) ? PyStackRef_True : PyStackRef_False;
  |  |  ------------------
  |  |  |  |  471|      3|#define PyStackRef_True ((_PyStackRef){.bits = ((uintptr_t)&_Py_TrueStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      3|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                               b = (res ^ oparg) ? PyStackRef_True : PyStackRef_False;
  |  |  ------------------
  |  |  |  |  472|     83|#define PyStackRef_False ((_PyStackRef){.bits = ((uintptr_t)&_Py_FalseStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     40|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5460:21): [True: 3, False: 40]
  |  |  ------------------
  |  | 5461|     43|                l = left;
  |  | 5462|     43|                r = right;
  |  | 5463|     43|            }
  |  | 5464|       |            // _POP_TOP
  |  | 5465|      0|            {
  |  | 5466|     43|                value = r;
  |  | 5467|     43|                stack_pointer[-2] = b;
  |  | 5468|     43|                stack_pointer[-1] = l;
  |  | 5469|     43|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5470|     43|                PyStackRef_XCLOSE(value);
  |  | 5471|     43|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 5472|     43|            }
  |  | 5473|       |            // _POP_TOP
  |  | 5474|     43|            {
  |  | 5475|     43|                value = l;
  |  | 5476|     43|                stack_pointer += -1;
  |  | 5477|     43|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     43|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 5478|     43|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5479|     43|                PyStackRef_XCLOSE(value);
  |  | 5480|     43|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 5481|     43|            }
  |  | 5482|     43|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     43|    { \
  |  |  |  |  201|     43|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     43|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     43|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     43|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     43|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     43|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     43|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     43|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 43]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     43|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     43|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     43|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     43|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     43|    }
  |  |  ------------------
  |  |  |  Branch (5482:13): [True: 43, False: 0]
  |  |  ------------------
  |  | 5483|     43|        }
  |  | 5484|       |
  |  | 5485|      6|        TARGET(CONVERT_VALUE) {
  |  |  ------------------
  |  |  |  |  132|      6|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 5486|       |            #if _Py_TAIL_CALL_INTERP
  |  | 5487|       |            int opcode = CONVERT_VALUE;
  |  | 5488|       |            (void)(opcode);
  |  | 5489|       |            #endif
  |  | 5490|      6|            frame->instr_ptr = next_instr;
  |  | 5491|      6|            next_instr += 1;
  |  | 5492|      6|            INSTRUCTION_STATS(CONVERT_VALUE);
  |  |  ------------------
  |  |  |  |   71|      6|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 5493|      6|            _PyStackRef value;
  |  | 5494|      6|            _PyStackRef result;
  |  | 5495|      6|            value = stack_pointer[-1];
  |  | 5496|      6|            conversion_func conv_fn;
  |  | 5497|      6|            assert(oparg >= FVC_STR && oparg <= FVC_ASCII);
  |  |  ------------------
  |  |  |  Branch (5497:13): [True: 6, False: 0]
  |  |  |  Branch (5497:13): [True: 6, False: 0]
  |  |  ------------------
  |  | 5498|      6|            conv_fn = _PyEval_ConversionFuncs[oparg];
  |  | 5499|      6|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5500|      6|            PyObject *result_o = conv_fn(PyStackRef_AsPyObjectBorrow(value));
  |  | 5501|      6|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 5502|      6|            stack_pointer += -1;
  |  | 5503|      6|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      6|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 5504|      6|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5505|      6|            PyStackRef_CLOSE(value);
  |  | 5506|      6|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 5507|      6|            if (result_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (5507:17): [True: 0, False: 6]
  |  |  ------------------
  |  | 5508|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 5509|      0|            }
  |  | 5510|      6|            result = PyStackRef_FromPyObjectSteal(result_o);
  |  | 5511|      6|            stack_pointer[0] = result;
  |  | 5512|      6|            stack_pointer += 1;
  |  | 5513|      6|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      6|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 5514|      6|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      6|    { \
  |  |  |  |  201|      6|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      6|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      6|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      6|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      6|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      6|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      6|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      6|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 6]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      6|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      6|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      6|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      6|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      6|    }
  |  |  ------------------
  |  |  |  Branch (5514:13): [True: 6, False: 0]
  |  |  ------------------
  |  | 5515|      6|        }
  |  | 5516|       |
  |  | 5517|    197|        TARGET(COPY) {
  |  |  ------------------
  |  |  |  |  132|    197|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 5518|       |            #if _Py_TAIL_CALL_INTERP
  |  | 5519|       |            int opcode = COPY;
  |  | 5520|       |            (void)(opcode);
  |  | 5521|       |            #endif
  |  | 5522|    197|            frame->instr_ptr = next_instr;
  |  | 5523|    197|            next_instr += 1;
  |  | 5524|    197|            INSTRUCTION_STATS(COPY);
  |  |  ------------------
  |  |  |  |   71|    197|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 5525|    197|            _PyStackRef bottom;
  |  | 5526|    197|            _PyStackRef top;
  |  | 5527|    197|            bottom = stack_pointer[-1 - (oparg-1)];
  |  | 5528|    197|            top = PyStackRef_DUP(bottom);
  |  | 5529|    197|            stack_pointer[0] = top;
  |  | 5530|    197|            stack_pointer += 1;
  |  | 5531|    197|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    197|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 5532|    197|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    197|    { \
  |  |  |  |  201|    197|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    197|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    197|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    197|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    197|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    197|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    197|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    197|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 197]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    197|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    197|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    197|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    197|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    197|    }
  |  |  ------------------
  |  |  |  Branch (5532:13): [True: 197, False: 0]
  |  |  ------------------
  |  | 5533|    197|        }
  |  | 5534|       |
  |  | 5535|    155|        TARGET(COPY_FREE_VARS) {
  |  |  ------------------
  |  |  |  |  132|    155|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 5536|       |            #if _Py_TAIL_CALL_INTERP
  |  | 5537|       |            int opcode = COPY_FREE_VARS;
  |  | 5538|       |            (void)(opcode);
  |  | 5539|       |            #endif
  |  | 5540|    155|            frame->instr_ptr = next_instr;
  |  | 5541|    155|            next_instr += 1;
  |  | 5542|    155|            INSTRUCTION_STATS(COPY_FREE_VARS);
  |  |  ------------------
  |  |  |  |   71|    155|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 5543|    155|            PyCodeObject *co = _PyFrame_GetCode(frame);
  |  | 5544|    155|            assert(PyStackRef_FunctionCheck(frame->f_funcobj));
  |  |  ------------------
  |  |  |  Branch (5544:13): [True: 155, False: 0]
  |  |  ------------------
  |  | 5545|    155|            PyFunctionObject *func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
  |  | 5546|    155|            PyObject *closure = func->func_closure;
  |  | 5547|    155|            assert(oparg == co->co_nfreevars);
  |  |  ------------------
  |  |  |  Branch (5547:13): [True: 155, False: 0]
  |  |  ------------------
  |  | 5548|    155|            int offset = co->co_nlocalsplus - oparg;
  |  | 5549|    318|            for (int i = 0; i < oparg; ++i) {
  |  |  ------------------
  |  |  |  Branch (5549:29): [True: 163, False: 155]
  |  |  ------------------
  |  | 5550|    163|                PyObject *o = PyTuple_GET_ITEM(closure, i);
  |  |  ------------------
  |  |  |  |   29|    163|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  |  |  ------------------
  |  |  |  |  |  |   19|    163|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    163|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5550:31): [True: 163, False: 0]
  |  |  ------------------
  |  | 5551|    163|                frame->localsplus[offset + i] = PyStackRef_FromPyObjectNew(o);
  |  |  ------------------
  |  |  |  |  599|    163|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    163|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    163|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5552|    163|            }
  |  | 5553|    155|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    155|    { \
  |  |  |  |  201|    155|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    155|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    155|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    155|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    155|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    155|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    155|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    155|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 155]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    155|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    155|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    155|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    155|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    155|    }
  |  |  ------------------
  |  |  |  Branch (5553:13): [True: 155, False: 0]
  |  |  ------------------
  |  | 5554|    155|        }
  |  | 5555|       |
  |  | 5556|      0|        TARGET(DELETE_ATTR) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 5557|       |            #if _Py_TAIL_CALL_INTERP
  |  | 5558|       |            int opcode = DELETE_ATTR;
  |  | 5559|       |            (void)(opcode);
  |  | 5560|       |            #endif
  |  | 5561|      0|            frame->instr_ptr = next_instr;
  |  | 5562|      0|            next_instr += 1;
  |  | 5563|      0|            INSTRUCTION_STATS(DELETE_ATTR);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 5564|      0|            _PyStackRef owner;
  |  | 5565|      0|            owner = stack_pointer[-1];
  |  | 5566|      0|            PyObject *name = GETITEM(FRAME_CO_NAMES, oparg);
  |  |  ------------------
  |  |  |  |  235|      0|#define GETITEM(v, i) PyTuple_GET_ITEM((v), (i))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   19|      0|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5566:30): [True: 0, False: 0]
  |  |  ------------------
  |  | 5567|      0|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5568|      0|            int err = PyObject_DelAttr(PyStackRef_AsPyObjectBorrow(owner), name);
  |  | 5569|      0|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 5570|      0|            stack_pointer += -1;
  |  | 5571|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 5572|      0|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5573|      0|            PyStackRef_CLOSE(owner);
  |  | 5574|      0|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 5575|      0|            if (err) {
  |  |  ------------------
  |  |  |  Branch (5575:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 5576|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 5577|      0|            }
  |  | 5578|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (5578:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 5579|      0|        }
  |  | 5580|       |
  |  | 5581|      0|        TARGET(DELETE_DEREF) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 5582|       |            #if _Py_TAIL_CALL_INTERP
  |  | 5583|       |            int opcode = DELETE_DEREF;
  |  | 5584|       |            (void)(opcode);
  |  | 5585|       |            #endif
  |  | 5586|      0|            frame->instr_ptr = next_instr;
  |  | 5587|      0|            next_instr += 1;
  |  | 5588|      0|            INSTRUCTION_STATS(DELETE_DEREF);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 5589|      0|            PyObject *cell = PyStackRef_AsPyObjectBorrow(GETLOCAL(oparg));
  |  |  ------------------
  |  |  |  |  284|      0|#define GETLOCAL(i)     (frame->localsplus[i])
  |  |  ------------------
  |  | 5590|      0|            PyObject *oldobj = PyCell_SwapTakeRef((PyCellObject *)cell, NULL);
  |  | 5591|      0|            if (oldobj == NULL) {
  |  |  ------------------
  |  |  |  Branch (5591:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 5592|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5593|      0|                _PyEval_FormatExcUnbound(tstate, _PyFrame_GetCode(frame), oparg);
  |  | 5594|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 5595|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 5596|      0|            }
  |  | 5597|      0|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5598|      0|            Py_DECREF(oldobj);
  |  |  ------------------
  |  |  |  |   80|      0|    do { \
  |  |  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   84|      0|            break; \
  |  |  |  |   85|      0|        } \
  |  |  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |   91|      0|        } \
  |  |  |  |   92|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5599|      0|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 5600|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (5600:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 5601|      0|        }
  |  | 5602|       |
  |  | 5603|      2|        TARGET(DELETE_FAST) {
  |  |  ------------------
  |  |  |  |  132|      2|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 5604|       |            #if _Py_TAIL_CALL_INTERP
  |  | 5605|       |            int opcode = DELETE_FAST;
  |  | 5606|       |            (void)(opcode);
  |  | 5607|       |            #endif
  |  | 5608|      2|            frame->instr_ptr = next_instr;
  |  | 5609|      2|            next_instr += 1;
  |  | 5610|      2|            INSTRUCTION_STATS(DELETE_FAST);
  |  |  ------------------
  |  |  |  |   71|      2|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 5611|      2|            _PyStackRef v = GETLOCAL(oparg);
  |  |  ------------------
  |  |  |  |  284|      2|#define GETLOCAL(i)     (frame->localsplus[i])
  |  |  ------------------
  |  | 5612|      2|            if (PyStackRef_IsNull(v)) {
  |  |  ------------------
  |  |  |  |  470|      2|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|      2|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      2|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (470:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5613|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5614|      0|                _PyEval_FormatExcCheckArg(tstate, PyExc_UnboundLocalError,
  |  | 5615|      0|                    UNBOUNDLOCAL_ERROR_MSG,
  |  |  ------------------
  |  |  |  |  380|      0|    "cannot access local variable '%s' where it is not associated with a value"
  |  |  ------------------
  |  | 5616|      0|                    PyTuple_GetItem(_PyFrame_GetCode(frame)->co_localsplusnames, oparg)
  |  | 5617|      0|                );
  |  | 5618|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 5619|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 5620|      0|            }
  |  | 5621|      2|            _PyStackRef tmp = GETLOCAL(oparg);
  |  |  ------------------
  |  |  |  |  284|      2|#define GETLOCAL(i)     (frame->localsplus[i])
  |  |  ------------------
  |  | 5622|      2|            GETLOCAL(oparg) = PyStackRef_NULL;
  |  |  ------------------
  |  |  |  |  284|      2|#define GETLOCAL(i)     (frame->localsplus[i])
  |  |  ------------------
  |  | 5623|      2|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5624|      2|            PyStackRef_XCLOSE(tmp);
  |  | 5625|      2|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 5626|      2|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      2|    { \
  |  |  |  |  201|      2|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      2|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      2|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      2|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      2|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      2|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      2|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      2|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      2|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      2|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      2|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      2|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      2|    }
  |  |  ------------------
  |  |  |  Branch (5626:13): [True: 2, False: 0]
  |  |  ------------------
  |  | 5627|      2|        }
  |  | 5628|       |
  |  | 5629|      0|        TARGET(DELETE_GLOBAL) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 5630|       |            #if _Py_TAIL_CALL_INTERP
  |  | 5631|       |            int opcode = DELETE_GLOBAL;
  |  | 5632|       |            (void)(opcode);
  |  | 5633|       |            #endif
  |  | 5634|      0|            frame->instr_ptr = next_instr;
  |  | 5635|      0|            next_instr += 1;
  |  | 5636|      0|            INSTRUCTION_STATS(DELETE_GLOBAL);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 5637|      0|            PyObject *name = GETITEM(FRAME_CO_NAMES, oparg);
  |  |  ------------------
  |  |  |  |  235|      0|#define GETITEM(v, i) PyTuple_GET_ITEM((v), (i))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   19|      0|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5637:30): [True: 0, False: 0]
  |  |  ------------------
  |  | 5638|      0|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5639|      0|            int err = PyDict_Pop(GLOBALS(), name, NULL);
  |  |  ------------------
  |  |  |  |  325|      0|#define GLOBALS() frame->f_globals
  |  |  ------------------
  |  | 5640|      0|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 5641|      0|            if (err < 0) {
  |  |  ------------------
  |  |  |  Branch (5641:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 5642|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 5643|      0|            }
  |  | 5644|      0|            if (err == 0) {
  |  |  ------------------
  |  |  |  Branch (5644:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 5645|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5646|      0|                _PyEval_FormatExcCheckArg(tstate, PyExc_NameError,
  |  | 5647|      0|                    NAME_ERROR_MSG, name);
  |  |  ------------------
  |  |  |  |  384|      0|#define NAME_ERROR_MSG "name '%.200s' is not defined"
  |  |  ------------------
  |  | 5648|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 5649|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 5650|      0|            }
  |  | 5651|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (5651:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 5652|      0|        }
  |  | 5653|       |
  |  | 5654|     13|        TARGET(DELETE_NAME) {
  |  |  ------------------
  |  |  |  |  132|     13|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 5655|       |            #if _Py_TAIL_CALL_INTERP
  |  | 5656|       |            int opcode = DELETE_NAME;
  |  | 5657|       |            (void)(opcode);
  |  | 5658|       |            #endif
  |  | 5659|     13|            frame->instr_ptr = next_instr;
  |  | 5660|     13|            next_instr += 1;
  |  | 5661|     13|            INSTRUCTION_STATS(DELETE_NAME);
  |  |  ------------------
  |  |  |  |   71|     13|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 5662|     13|            PyObject *name = GETITEM(FRAME_CO_NAMES, oparg);
  |  |  ------------------
  |  |  |  |  235|     13|#define GETITEM(v, i) PyTuple_GET_ITEM((v), (i))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|     13|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   19|     13|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     13|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5662:30): [True: 13, False: 0]
  |  |  ------------------
  |  | 5663|     13|            PyObject *ns = LOCALS();
  |  |  ------------------
  |  |  |  |  327|     13|#define LOCALS() frame->f_locals
  |  |  ------------------
  |  | 5664|     13|            int err;
  |  | 5665|     13|            if (ns == NULL) {
  |  |  ------------------
  |  |  |  Branch (5665:17): [True: 0, False: 13]
  |  |  ------------------
  |  | 5666|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5667|      0|                _PyErr_Format(tstate, PyExc_SystemError,
  |  | 5668|      0|                              "no locals when deleting %R", name);
  |  | 5669|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 5670|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 5671|      0|            }
  |  | 5672|     13|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5673|     13|            err = PyObject_DelItem(ns, name);
  |  | 5674|     13|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 5675|     13|            if (err != 0) {
  |  |  ------------------
  |  |  |  Branch (5675:17): [True: 0, False: 13]
  |  |  ------------------
  |  | 5676|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5677|      0|                _PyEval_FormatExcCheckArg(tstate, PyExc_NameError,
  |  | 5678|      0|                    NAME_ERROR_MSG,
  |  |  ------------------
  |  |  |  |  384|      0|#define NAME_ERROR_MSG "name '%.200s' is not defined"
  |  |  ------------------
  |  | 5679|      0|                    name);
  |  | 5680|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 5681|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 5682|      0|            }
  |  | 5683|     13|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     13|    { \
  |  |  |  |  201|     13|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     13|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     13|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     13|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     13|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     13|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     13|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     13|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 13]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     13|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     13|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     13|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     13|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     13|    }
  |  |  ------------------
  |  |  |  Branch (5683:13): [True: 13, False: 0]
  |  |  ------------------
  |  | 5684|     13|        }
  |  | 5685|       |
  |  | 5686|     24|        TARGET(DELETE_SUBSCR) {
  |  |  ------------------
  |  |  |  |  132|     24|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 5687|       |            #if _Py_TAIL_CALL_INTERP
  |  | 5688|       |            int opcode = DELETE_SUBSCR;
  |  | 5689|       |            (void)(opcode);
  |  | 5690|       |            #endif
  |  | 5691|     24|            frame->instr_ptr = next_instr;
  |  | 5692|     24|            next_instr += 1;
  |  | 5693|     24|            INSTRUCTION_STATS(DELETE_SUBSCR);
  |  |  ------------------
  |  |  |  |   71|     24|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 5694|     24|            _PyStackRef container;
  |  | 5695|     24|            _PyStackRef sub;
  |  | 5696|     24|            sub = stack_pointer[-1];
  |  | 5697|     24|            container = stack_pointer[-2];
  |  | 5698|     24|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5699|     24|            int err = PyObject_DelItem(PyStackRef_AsPyObjectBorrow(container),
  |  | 5700|     24|                                       PyStackRef_AsPyObjectBorrow(sub));
  |  | 5701|     24|            _PyStackRef tmp = sub;
  |  | 5702|     24|            sub = PyStackRef_NULL;
  |  | 5703|     24|            stack_pointer[-1] = sub;
  |  | 5704|     24|            PyStackRef_CLOSE(tmp);
  |  | 5705|     24|            tmp = container;
  |  | 5706|     24|            container = PyStackRef_NULL;
  |  | 5707|     24|            stack_pointer[-2] = container;
  |  | 5708|     24|            PyStackRef_CLOSE(tmp);
  |  | 5709|     24|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 5710|     24|            stack_pointer += -2;
  |  | 5711|     24|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     24|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 5712|     24|            if (err) {
  |  |  ------------------
  |  |  |  Branch (5712:17): [True: 0, False: 24]
  |  |  ------------------
  |  | 5713|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 5714|      0|            }
  |  | 5715|     24|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     24|    { \
  |  |  |  |  201|     24|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     24|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     24|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     24|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     24|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     24|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     24|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     24|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 24]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     24|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     24|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     24|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     24|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     24|    }
  |  |  ------------------
  |  |  |  Branch (5715:13): [True: 24, False: 0]
  |  |  ------------------
  |  | 5716|     24|        }
  |  | 5717|       |
  |  | 5718|     84|        TARGET(DICT_MERGE) {
  |  |  ------------------
  |  |  |  |  132|     84|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 5719|       |            #if _Py_TAIL_CALL_INTERP
  |  | 5720|       |            int opcode = DICT_MERGE;
  |  | 5721|       |            (void)(opcode);
  |  | 5722|       |            #endif
  |  | 5723|     84|            frame->instr_ptr = next_instr;
  |  | 5724|     84|            next_instr += 1;
  |  | 5725|     84|            INSTRUCTION_STATS(DICT_MERGE);
  |  |  ------------------
  |  |  |  |   71|     84|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 5726|     84|            _PyStackRef callable;
  |  | 5727|     84|            _PyStackRef dict;
  |  | 5728|     84|            _PyStackRef update;
  |  | 5729|     84|            _PyStackRef u;
  |  | 5730|     84|            _PyStackRef value;
  |  | 5731|       |            // _DICT_MERGE
  |  | 5732|     84|            {
  |  | 5733|     84|                update = stack_pointer[-1];
  |  | 5734|     84|                dict = stack_pointer[-2 - (oparg - 1)];
  |  | 5735|     84|                callable = stack_pointer[-5 - (oparg - 1)];
  |  | 5736|     84|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 5737|     84|                PyObject *dict_o = PyStackRef_AsPyObjectBorrow(dict);
  |  | 5738|     84|                PyObject *update_o = PyStackRef_AsPyObjectBorrow(update);
  |  | 5739|     84|                PyObject *dupkey = NULL;
  |  | 5740|     84|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5741|     84|                int err = _PyDict_MergeUniq(dict_o, update_o, &dupkey);
  |  | 5742|     84|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 5743|     84|                if (err < 0) {
  |  |  ------------------
  |  |  |  Branch (5743:21): [True: 0, False: 84]
  |  |  ------------------
  |  | 5744|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5745|      0|                    _PyEval_FormatKwargsError(tstate, callable_o, update_o, dupkey);
  |  | 5746|      0|                    Py_XDECREF(dupkey);
  |  |  ------------------
  |  |  |  |   69|      0|    do { \
  |  |  |  |   70|      0|        PyObject *xop = _PyObject_CAST(arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   71|      0|        if (xop != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (71:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   72|      0|            Py_DECREF(xop); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   80|      0|    do { \
  |  |  |  |  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|            break; \
  |  |  |  |  |  |   85|      0|        } \
  |  |  |  |  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |  |  |   91|      0|        } \
  |  |  |  |  |  |   92|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   73|      0|        } \
  |  |  |  |   74|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (74:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5747|      0|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 5748|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 5749|      0|                }
  |  | 5750|     84|                u = update;
  |  | 5751|     84|            }
  |  | 5752|       |            // _POP_TOP
  |  | 5753|      0|            {
  |  | 5754|     84|                value = u;
  |  | 5755|     84|                stack_pointer += -1;
  |  | 5756|     84|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     84|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 5757|     84|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5758|     84|                PyStackRef_XCLOSE(value);
  |  | 5759|     84|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 5760|     84|            }
  |  | 5761|     84|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     84|    { \
  |  |  |  |  201|     84|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     84|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     84|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     84|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     84|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     84|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     84|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     84|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 84]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     84|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     84|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     84|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     84|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     84|    }
  |  |  ------------------
  |  |  |  Branch (5761:13): [True: 84, False: 0]
  |  |  ------------------
  |  | 5762|     84|        }
  |  | 5763|       |
  |  | 5764|     20|        TARGET(DICT_UPDATE) {
  |  |  ------------------
  |  |  |  |  132|     20|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 5765|       |            #if _Py_TAIL_CALL_INTERP
  |  | 5766|       |            int opcode = DICT_UPDATE;
  |  | 5767|       |            (void)(opcode);
  |  | 5768|       |            #endif
  |  | 5769|     20|            frame->instr_ptr = next_instr;
  |  | 5770|     20|            next_instr += 1;
  |  | 5771|     20|            INSTRUCTION_STATS(DICT_UPDATE);
  |  |  ------------------
  |  |  |  |   71|     20|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 5772|     20|            _PyStackRef dict;
  |  | 5773|     20|            _PyStackRef update;
  |  | 5774|     20|            _PyStackRef upd;
  |  | 5775|     20|            _PyStackRef value;
  |  | 5776|       |            // _DICT_UPDATE
  |  | 5777|     20|            {
  |  | 5778|     20|                update = stack_pointer[-1];
  |  | 5779|     20|                dict = stack_pointer[-2 - (oparg - 1)];
  |  | 5780|     20|                PyObject *dict_o = PyStackRef_AsPyObjectBorrow(dict);
  |  | 5781|     20|                PyObject *update_o = PyStackRef_AsPyObjectBorrow(update);
  |  | 5782|     20|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5783|     20|                int err = PyDict_Update(dict_o, update_o);
  |  | 5784|     20|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 5785|     20|                if (err < 0) {
  |  |  ------------------
  |  |  |  Branch (5785:21): [True: 0, False: 20]
  |  |  ------------------
  |  | 5786|      0|                    int matches = _PyErr_ExceptionMatches(tstate, PyExc_AttributeError);
  |  | 5787|      0|                    if (matches) {
  |  |  ------------------
  |  |  |  Branch (5787:25): [True: 0, False: 0]
  |  |  ------------------
  |  | 5788|      0|                        _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5789|      0|                        PyObject *exc = _PyErr_GetRaisedException(tstate);
  |  | 5790|      0|                        int has_keys = PyObject_HasAttrWithError(update_o, &_Py_ID(keys));
  |  |  ------------------
  |  |  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5791|      0|                        stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 5792|      0|                        if (has_keys == 0) {
  |  |  ------------------
  |  |  |  Branch (5792:29): [True: 0, False: 0]
  |  |  ------------------
  |  | 5793|      0|                            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5794|      0|                            _PyErr_Format(tstate, PyExc_TypeError,
  |  | 5795|      0|                                      "'%T' object is not a mapping",
  |  | 5796|      0|                                      update_o);
  |  | 5797|      0|                            Py_DECREF(exc);
  |  |  ------------------
  |  |  |  |   80|      0|    do { \
  |  |  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   84|      0|            break; \
  |  |  |  |   85|      0|        } \
  |  |  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |   91|      0|        } \
  |  |  |  |   92|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5798|      0|                            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 5799|      0|                        }
  |  | 5800|      0|                        else {
  |  | 5801|      0|                            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5802|      0|                            _PyErr_ChainExceptions1(exc);
  |  | 5803|      0|                            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 5804|      0|                        }
  |  | 5805|      0|                    }
  |  | 5806|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 5807|      0|                }
  |  | 5808|     20|                upd = update;
  |  | 5809|     20|            }
  |  | 5810|       |            // _POP_TOP
  |  | 5811|      0|            {
  |  | 5812|     20|                value = upd;
  |  | 5813|     20|                stack_pointer += -1;
  |  | 5814|     20|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     20|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 5815|     20|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5816|     20|                PyStackRef_XCLOSE(value);
  |  | 5817|     20|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 5818|     20|            }
  |  | 5819|     20|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     20|    { \
  |  |  |  |  201|     20|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     20|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     20|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     20|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     20|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     20|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     20|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     20|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 20]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     20|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     20|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     20|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     20|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     20|    }
  |  |  ------------------
  |  |  |  Branch (5819:13): [True: 20, False: 0]
  |  |  ------------------
  |  | 5820|     20|        }
  |  | 5821|       |
  |  | 5822|      0|        TARGET(END_ASYNC_FOR) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 5823|       |            #if _Py_TAIL_CALL_INTERP
  |  | 5824|       |            int opcode = END_ASYNC_FOR;
  |  | 5825|       |            (void)(opcode);
  |  | 5826|       |            #endif
  |  | 5827|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 5828|      0|            (void)this_instr;
  |  | 5829|      0|            frame->instr_ptr = next_instr;
  |  | 5830|      0|            next_instr += 1;
  |  | 5831|      0|            INSTRUCTION_STATS(END_ASYNC_FOR);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 5832|      0|            _PyStackRef awaitable_st;
  |  | 5833|      0|            _PyStackRef exc_st;
  |  | 5834|      0|            exc_st = stack_pointer[-1];
  |  | 5835|      0|            awaitable_st = stack_pointer[-2];
  |  | 5836|      0|            JUMPBY(0);
  |  |  ------------------
  |  |  |  |  260|      0|#define JUMPBY(x)       (next_instr += (x))
  |  |  ------------------
  |  | 5837|      0|            (void)oparg;
  |  | 5838|      0|            PyObject *exc = PyStackRef_AsPyObjectBorrow(exc_st);
  |  | 5839|      0|            assert(exc && PyExceptionInstance_Check(exc));
  |  |  ------------------
  |  |  |  Branch (5839:13): [True: 0, False: 0]
  |  |  |  Branch (5839:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 5840|      0|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5841|      0|            int matches = PyErr_GivenExceptionMatches(exc, PyExc_StopAsyncIteration);
  |  | 5842|      0|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 5843|      0|            if (matches) {
  |  |  ------------------
  |  |  |  Branch (5843:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 5844|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5845|      0|                _PyStackRef tmp = exc_st;
  |  | 5846|      0|                exc_st = PyStackRef_NULL;
  |  | 5847|      0|                stack_pointer[-1] = exc_st;
  |  | 5848|      0|                PyStackRef_CLOSE(tmp);
  |  | 5849|      0|                tmp = awaitable_st;
  |  | 5850|      0|                awaitable_st = PyStackRef_NULL;
  |  | 5851|      0|                stack_pointer[-2] = awaitable_st;
  |  | 5852|      0|                PyStackRef_CLOSE(tmp);
  |  | 5853|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 5854|      0|                stack_pointer += -2;
  |  | 5855|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 5856|      0|            }
  |  | 5857|      0|            else {
  |  | 5858|      0|                Py_INCREF(exc);
  |  |  ------------------
  |  |  |  |  310|      0|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5859|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5860|      0|                _PyErr_SetRaisedException(tstate, exc);
  |  | 5861|      0|                monitor_reraise(tstate, frame, this_instr);
  |  | 5862|      0|                JUMP_TO_LABEL(exception_unwind);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 5863|      0|            }
  |  | 5864|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (5864:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 5865|      0|        }
  |  | 5866|       |
  |  | 5867|      4|        TARGET(END_FOR) {
  |  |  ------------------
  |  |  |  |  132|      4|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 5868|       |            #if _Py_TAIL_CALL_INTERP
  |  | 5869|       |            int opcode = END_FOR;
  |  | 5870|       |            (void)(opcode);
  |  | 5871|       |            #endif
  |  | 5872|      4|            next_instr += 1;
  |  | 5873|      4|            INSTRUCTION_STATS(END_FOR);
  |  |  ------------------
  |  |  |  |   71|      4|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 5874|      4|            _PyStackRef value;
  |  | 5875|      4|            value = stack_pointer[-1];
  |  | 5876|      4|            stack_pointer += -1;
  |  | 5877|      4|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      4|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 5878|      4|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5879|      4|            PyStackRef_CLOSE(value);
  |  | 5880|      4|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 5881|      4|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      4|    { \
  |  |  |  |  201|      4|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      4|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      4|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      4|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      4|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      4|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      4|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      4|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      4|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      4|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      4|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      4|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      4|    }
  |  |  ------------------
  |  |  |  Branch (5881:13): [True: 4, False: 0]
  |  |  ------------------
  |  | 5882|      4|        }
  |  | 5883|       |
  |  | 5884|      0|        TARGET(END_SEND) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 5885|       |            #if _Py_TAIL_CALL_INTERP
  |  | 5886|       |            int opcode = END_SEND;
  |  | 5887|       |            (void)(opcode);
  |  | 5888|       |            #endif
  |  | 5889|      0|            frame->instr_ptr = next_instr;
  |  | 5890|      0|            next_instr += 1;
  |  | 5891|      0|            INSTRUCTION_STATS(END_SEND);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 5892|      0|            _PyStackRef receiver;
  |  | 5893|      0|            _PyStackRef index_or_null;
  |  | 5894|      0|            _PyStackRef value;
  |  | 5895|      0|            _PyStackRef val;
  |  | 5896|      0|            value = stack_pointer[-1];
  |  | 5897|      0|            index_or_null = stack_pointer[-2];
  |  | 5898|      0|            receiver = stack_pointer[-3];
  |  | 5899|      0|            val = value;
  |  | 5900|      0|            (void)index_or_null;
  |  | 5901|      0|            stack_pointer[-3] = val;
  |  | 5902|      0|            stack_pointer += -2;
  |  | 5903|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 5904|      0|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5905|      0|            PyStackRef_CLOSE(receiver);
  |  | 5906|      0|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 5907|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (5907:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 5908|      0|        }
  |  | 5909|       |
  |  | 5910|      0|        TARGET(ENTER_EXECUTOR) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 5911|       |            #if _Py_TAIL_CALL_INTERP
  |  | 5912|       |            int opcode = ENTER_EXECUTOR;
  |  | 5913|       |            (void)(opcode);
  |  | 5914|       |            #endif
  |  | 5915|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 5916|      0|            (void)this_instr;
  |  | 5917|      0|            frame->instr_ptr = next_instr;
  |  | 5918|      0|            next_instr += 1;
  |  | 5919|      0|            INSTRUCTION_STATS(ENTER_EXECUTOR);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 5920|      0|            opcode = ENTER_EXECUTOR;
  |  |  ------------------
  |  |  |  |  245|      0|#define ENTER_EXECUTOR                         254
  |  |  ------------------
  |  | 5921|       |            #ifdef _Py_TIER2
  |  | 5922|       |            PyCodeObject *code = _PyFrame_GetCode(frame);
  |  | 5923|       |            _PyExecutorObject *executor = code->co_executors->executors[oparg & 255];
  |  | 5924|       |            if (IS_JIT_TRACING()) {
  |  | 5925|       |                int og_opcode = executor->vm_data.opcode;
  |  | 5926|       |                int og_oparg = (oparg & ~255) | executor->vm_data.oparg;
  |  | 5927|       |                next_instr = this_instr;
  |  | 5928|       |                if (_PyJit_EnterExecutorShouldStopTracing(og_opcode)) {
  |  | 5929|       |                    if (_PyOpcode_Caches[_PyOpcode_Deopt[og_opcode]]) {
  |  | 5930|       |                        PAUSE_ADAPTIVE_COUNTER(this_instr[1].counter);
  |  | 5931|       |                    }
  |  | 5932|       |                    opcode = og_opcode;
  |  | 5933|       |                    oparg = og_oparg;
  |  | 5934|       |                    DISPATCH_GOTO_NON_TRACING();
  |  | 5935|       |                }
  |  | 5936|       |                JUMP_TO_LABEL(stop_tracing);
  |  | 5937|       |            }
  |  | 5938|       |            assert(executor->vm_data.index == INSTR_OFFSET() - 1);
  |  | 5939|       |            assert(executor->vm_data.code == code);
  |  | 5940|       |            assert(executor->vm_data.valid);
  |  | 5941|       |            assert(tstate->current_executor == NULL);
  |  | 5942|       |            uintptr_t iversion = FT_ATOMIC_LOAD_UINTPTR_ACQUIRE(code->_co_instrumentation_version);
  |  | 5943|       |            if (_Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker) != iversion) {
  |  | 5944|       |                opcode = executor->vm_data.opcode;
  |  | 5945|       |                oparg = (oparg & ~255) | executor->vm_data.oparg;
  |  | 5946|       |                next_instr = this_instr;
  |  | 5947|       |                if (_PyOpcode_Caches[_PyOpcode_Deopt[opcode]]) {
  |  | 5948|       |                    PAUSE_ADAPTIVE_COUNTER(this_instr[1].counter);
  |  | 5949|       |                }
  |  | 5950|       |                DISPATCH_GOTO();
  |  | 5951|       |            }
  |  | 5952|       |            assert(executor != tstate->interp->cold_executor);
  |  | 5953|       |            tstate->jit_exit = NULL;
  |  | 5954|       |            TIER1_TO_TIER2(executor);
  |  | 5955|       |            #else
  |  | 5956|      0|            Py_FatalError("ENTER_EXECUTOR is not supported in this build");
  |  |  ------------------
  |  |  |  |  133|      0|#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))
  |  |  ------------------
  |  | 5957|      0|            #endif /* _Py_TIER2 */
  |  | 5958|      0|        }
  |  | 5959|       |
  |  | 5960|     74|        TARGET(EXIT_INIT_CHECK) {
  |  |  ------------------
  |  |  |  |  132|     74|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 5961|       |            #if _Py_TAIL_CALL_INTERP
  |  | 5962|       |            int opcode = EXIT_INIT_CHECK;
  |  | 5963|       |            (void)(opcode);
  |  | 5964|       |            #endif
  |  | 5965|     74|            frame->instr_ptr = next_instr;
  |  | 5966|     74|            next_instr += 1;
  |  | 5967|     74|            INSTRUCTION_STATS(EXIT_INIT_CHECK);
  |  |  ------------------
  |  |  |  |   71|     74|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 5968|     74|            _PyStackRef should_be_none;
  |  | 5969|     74|            should_be_none = stack_pointer[-1];
  |  | 5970|     74|            if (!PyStackRef_IsNone(should_be_none)) {
  |  |  ------------------
  |  |  |  |  483|     74|#define PyStackRef_IsNone(REF) ((REF).bits == (((uintptr_t)&_Py_NoneStruct) | Py_TAG_REFCNT))
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     74|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (5970:17): [True: 0, False: 74]
  |  |  ------------------
  |  | 5971|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 5972|      0|                PyErr_Format(PyExc_TypeError,
  |  | 5973|      0|                             "__init__() should return None, not '%.200s'",
  |  | 5974|      0|                             Py_TYPE(PyStackRef_AsPyObjectBorrow(should_be_none))->tp_name);
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 5975|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 5976|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 5977|      0|            }
  |  | 5978|     74|            stack_pointer += -1;
  |  | 5979|     74|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     74|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 5980|     74|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     74|    { \
  |  |  |  |  201|     74|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     74|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     74|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     74|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     74|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     74|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     74|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     74|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 74]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     74|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     74|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     74|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     74|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     74|    }
  |  |  ------------------
  |  |  |  Branch (5980:13): [True: 74, False: 0]
  |  |  ------------------
  |  | 5981|     74|        }
  |  | 5982|       |
  |  | 5983|    324|        TARGET(EXTENDED_ARG) {
  |  |  ------------------
  |  |  |  |  132|    324|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 5984|       |            #if _Py_TAIL_CALL_INTERP
  |  | 5985|       |            int opcode = EXTENDED_ARG;
  |  | 5986|       |            (void)(opcode);
  |  | 5987|       |            #endif
  |  | 5988|    324|            frame->instr_ptr = next_instr;
  |  | 5989|    324|            next_instr += 1;
  |  | 5990|    324|            INSTRUCTION_STATS(EXTENDED_ARG);
  |  |  ------------------
  |  |  |  |   71|    324|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 5991|    324|            opcode = EXTENDED_ARG;
  |  |  ------------------
  |  |  |  |   80|    324|#define EXTENDED_ARG                            67
  |  |  ------------------
  |  | 5992|    324|            assert(oparg);
  |  |  ------------------
  |  |  |  Branch (5992:13): [True: 324, False: 0]
  |  |  ------------------
  |  | 5993|    324|            opcode = next_instr->op.code;
  |  | 5994|    324|            oparg = oparg << 8 | next_instr->op.arg;
  |  | 5995|    324|            PRE_DISPATCH_GOTO();
  |  |  ------------------
  |  |  |  |  176|    324|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  ------------------
  |  | 5996|    324|            DISPATCH_GOTO();
  |  |  ------------------
  |  |  |  |  133|    324|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  ------------------
  |  | 5997|    324|        }
  |  | 5998|       |
  |  | 5999|     79|        TARGET(FORMAT_SIMPLE) {
  |  |  ------------------
  |  |  |  |  132|     79|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 6000|       |            #if _Py_TAIL_CALL_INTERP
  |  | 6001|       |            int opcode = FORMAT_SIMPLE;
  |  | 6002|       |            (void)(opcode);
  |  | 6003|       |            #endif
  |  | 6004|     79|            frame->instr_ptr = next_instr;
  |  | 6005|     79|            next_instr += 1;
  |  | 6006|     79|            INSTRUCTION_STATS(FORMAT_SIMPLE);
  |  |  ------------------
  |  |  |  |   71|     79|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 6007|     79|            _PyStackRef value;
  |  | 6008|     79|            _PyStackRef res;
  |  | 6009|     79|            value = stack_pointer[-1];
  |  | 6010|     79|            PyObject *value_o = PyStackRef_AsPyObjectBorrow(value);
  |  | 6011|     79|            if (!PyUnicode_CheckExact(value_o)) {
  |  |  ------------------
  |  |  |  |  104|     79|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|     79|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|     79|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     79|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (6011:17): [True: 11, False: 68]
  |  |  ------------------
  |  | 6012|     11|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 6013|     11|                PyObject *res_o = PyObject_Format(value_o, NULL);
  |  | 6014|     11|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 6015|     11|                stack_pointer += -1;
  |  | 6016|     11|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     11|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 6017|     11|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 6018|     11|                PyStackRef_CLOSE(value);
  |  | 6019|     11|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 6020|     11|                if (res_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (6020:21): [True: 0, False: 11]
  |  |  ------------------
  |  | 6021|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 6022|      0|                }
  |  | 6023|     11|                res = PyStackRef_FromPyObjectSteal(res_o);
  |  | 6024|     11|            }
  |  | 6025|     68|            else {
  |  | 6026|     68|                res = value;
  |  | 6027|     68|                stack_pointer += -1;
  |  | 6028|     68|            }
  |  | 6029|     79|            stack_pointer[0] = res;
  |  | 6030|     79|            stack_pointer += 1;
  |  | 6031|     79|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     79|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 6032|     79|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     79|    { \
  |  |  |  |  201|     79|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     79|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     79|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     79|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     79|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     79|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     79|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     79|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 79]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     79|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     79|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     79|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     79|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     79|    }
  |  |  ------------------
  |  |  |  Branch (6032:13): [True: 79, False: 0]
  |  |  ------------------
  |  | 6033|     79|        }
  |  | 6034|       |
  |  | 6035|      0|        TARGET(FORMAT_WITH_SPEC) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 6036|       |            #if _Py_TAIL_CALL_INTERP
  |  | 6037|       |            int opcode = FORMAT_WITH_SPEC;
  |  | 6038|       |            (void)(opcode);
  |  | 6039|       |            #endif
  |  | 6040|      0|            frame->instr_ptr = next_instr;
  |  | 6041|      0|            next_instr += 1;
  |  | 6042|      0|            INSTRUCTION_STATS(FORMAT_WITH_SPEC);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 6043|      0|            _PyStackRef value;
  |  | 6044|      0|            _PyStackRef fmt_spec;
  |  | 6045|      0|            _PyStackRef res;
  |  | 6046|      0|            fmt_spec = stack_pointer[-1];
  |  | 6047|      0|            value = stack_pointer[-2];
  |  | 6048|      0|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 6049|      0|            PyObject *res_o = PyObject_Format(PyStackRef_AsPyObjectBorrow(value), PyStackRef_AsPyObjectBorrow(fmt_spec));
  |  | 6050|      0|            _PyStackRef tmp = fmt_spec;
  |  | 6051|      0|            fmt_spec = PyStackRef_NULL;
  |  | 6052|      0|            stack_pointer[-1] = fmt_spec;
  |  | 6053|      0|            PyStackRef_CLOSE(tmp);
  |  | 6054|      0|            tmp = value;
  |  | 6055|      0|            value = PyStackRef_NULL;
  |  | 6056|      0|            stack_pointer[-2] = value;
  |  | 6057|      0|            PyStackRef_CLOSE(tmp);
  |  | 6058|      0|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 6059|      0|            stack_pointer += -2;
  |  | 6060|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 6061|      0|            if (res_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (6061:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 6062|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 6063|      0|            }
  |  | 6064|      0|            res = PyStackRef_FromPyObjectSteal(res_o);
  |  | 6065|      0|            stack_pointer[0] = res;
  |  | 6066|      0|            stack_pointer += 1;
  |  | 6067|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 6068|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (6068:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 6069|      0|        }
  |  | 6070|       |
  |  | 6071|     85|        TARGET(FOR_ITER) {
  |  |  ------------------
  |  |  |  |  132|     85|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 6072|       |            #if _Py_TAIL_CALL_INTERP
  |  | 6073|       |            int opcode = FOR_ITER;
  |  | 6074|       |            (void)(opcode);
  |  | 6075|       |            #endif
  |  | 6076|     85|            frame->instr_ptr = next_instr;
  |  | 6077|     85|            next_instr += 2;
  |  | 6078|     85|            INSTRUCTION_STATS(FOR_ITER);
  |  |  ------------------
  |  |  |  |   71|     85|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 6079|     89|            PREDICTED_FOR_ITER:;
  |  | 6080|     89|            _Py_CODEUNIT* const this_instr = next_instr - 2;
  |  | 6081|     89|            (void)this_instr;
  |  | 6082|     89|            _PyStackRef iter;
  |  | 6083|     89|            _PyStackRef null_or_index;
  |  | 6084|     89|            _PyStackRef next;
  |  | 6085|       |            // _SPECIALIZE_FOR_ITER
  |  | 6086|     89|            {
  |  | 6087|     89|                null_or_index = stack_pointer[-1];
  |  | 6088|     89|                iter = stack_pointer[-2];
  |  | 6089|     89|                uint16_t counter = read_u16(&this_instr[1].cache);
  |  | 6090|     89|                (void)counter;
  |  | 6091|     89|                #if ENABLE_SPECIALIZATION
  |  | 6092|     89|                if (ADAPTIVE_COUNTER_TRIGGERS(counter)) {
  |  |  ------------------
  |  |  |  |  354|     89|    backoff_counter_triggers(forge_backoff_counter((COUNTER)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (354:5): [True: 35, False: 54]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6093|     35|                    next_instr = this_instr;
  |  | 6094|     35|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 6095|     35|                    _Py_Specialize_ForIter(iter, null_or_index, next_instr, oparg);
  |  | 6096|     35|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 6097|     35|                    DISPATCH_SAME_OPARG();
  |  |  ------------------
  |  |  |  |  216|     35|    { \
  |  |  |  |  217|     35|        opcode = next_instr->op.code; \
  |  |  |  |  218|     35|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     35|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  219|     35|        DISPATCH_GOTO_NON_TRACING(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  134|     35|#  define DISPATCH_GOTO_NON_TRACING() goto *DISPATCH_TABLE[opcode];
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  130|     35|#  define DISPATCH_TABLE opcode_targets_table
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  220|     35|    }
  |  |  ------------------
  |  | 6098|     35|                }
  |  | 6099|     89|                OPCODE_DEFERRED_INC(FOR_ITER);
  |  |  ------------------
  |  |  |  |   90|     89|#define OPCODE_DEFERRED_INC(opname) ((void)0)
  |  |  ------------------
  |  | 6100|     89|                ADVANCE_ADAPTIVE_COUNTER(this_instr[1].counter);
  |  |  ------------------
  |  |  |  |  357|     89|    do { \
  |  |  |  |  358|     89|        (COUNTER) = advance_backoff_counter((COUNTER)); \
  |  |  |  |  359|     89|    } while (0);
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (359:14): [Folded, False: 89]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6101|     89|                #endif  /* ENABLE_SPECIALIZATION */
  |  | 6102|     89|            }
  |  | 6103|       |            // _FOR_ITER
  |  | 6104|     89|            {
  |  | 6105|     89|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 6106|     89|                _PyStackRef item = _PyForIter_VirtualIteratorNext(tstate, frame, iter, &null_or_index);
  |  | 6107|     89|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 6108|     89|                if (!PyStackRef_IsValid(item)) {
  |  |  ------------------
  |  |  |  Branch (6108:21): [True: 12, False: 77]
  |  |  ------------------
  |  | 6109|     12|                    if (PyStackRef_IsError(item)) {
  |  |  ------------------
  |  |  |  Branch (6109:25): [True: 0, False: 12]
  |  |  ------------------
  |  | 6110|      0|                        JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 6111|      0|                    }
  |  | 6112|     12|                    JUMPBY(oparg + 1);
  |  |  ------------------
  |  |  |  |  260|     12|#define JUMPBY(x)       (next_instr += (x))
  |  |  ------------------
  |  | 6113|     12|                    stack_pointer[-1] = null_or_index;
  |  | 6114|     12|                    DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     12|    { \
  |  |  |  |  201|     12|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     12|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     12|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     12|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     12|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     12|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     12|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     12|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 12]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     12|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     12|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     12|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     12|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     12|    }
  |  |  ------------------
  |  |  |  Branch (6114:21): [True: 12, False: 0]
  |  |  ------------------
  |  | 6115|     12|                }
  |  | 6116|     89|                next = item;
  |  | 6117|     89|            }
  |  | 6118|      0|            stack_pointer[-1] = null_or_index;
  |  | 6119|     89|            stack_pointer[0] = next;
  |  | 6120|     89|            stack_pointer += 1;
  |  | 6121|     89|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     89|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 6122|     89|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     89|    { \
  |  |  |  |  201|     89|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     89|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     42|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     42|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     42|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     42|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     42|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     42|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 42]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     42|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     42|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     42|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     42|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     42|    }
  |  |  ------------------
  |  |  |  Branch (6122:13): [True: 42, False: 47]
  |  |  ------------------
  |  | 6123|     42|        }
  |  | 6124|       |
  |  | 6125|      7|        TARGET(FOR_ITER_GEN) {
  |  |  ------------------
  |  |  |  |  132|      7|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 6126|       |            #if _Py_TAIL_CALL_INTERP
  |  | 6127|       |            int opcode = FOR_ITER_GEN;
  |  | 6128|       |            (void)(opcode);
  |  | 6129|       |            #endif
  |  | 6130|      7|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 6131|      7|            (void)this_instr;
  |  | 6132|      7|            frame->instr_ptr = next_instr;
  |  | 6133|      7|            next_instr += 2;
  |  | 6134|      7|            INSTRUCTION_STATS(FOR_ITER_GEN);
  |  |  ------------------
  |  |  |  |   71|      7|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 6135|      7|            static_assert(INLINE_CACHE_ENTRIES_FOR_ITER == 1, "incorrect cache size");
  |  | 6136|      7|            _PyStackRef iter;
  |  | 6137|      7|            _PyStackRef gen_frame;
  |  | 6138|      7|            _PyStackRef new_frame;
  |  | 6139|       |            /* Skip 1 cache entry */
  |  | 6140|       |            // _CHECK_PEP_523
  |  | 6141|      7|            {
  |  | 6142|      7|                if (IS_PEP523_HOOKED(tstate)) {
  |  |  ------------------
  |  |  |  |  517|      7|#define IS_PEP523_HOOKED(tstate) (tstate->interp->eval_frame != NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (517:34): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6143|      0|                    UPDATE_MISS_STATS(FOR_ITER);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 6144|      0|                    assert(_PyOpcode_Deopt[opcode] == (FOR_ITER));
  |  |  ------------------
  |  |  |  Branch (6144:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 6145|      0|                    JUMP_TO_PREDICTED(FOR_ITER);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 6146|      0|                }
  |  | 6147|      7|            }
  |  | 6148|       |            // _FOR_ITER_GEN_FRAME
  |  | 6149|      7|            {
  |  | 6150|      7|                iter = stack_pointer[-2];
  |  | 6151|      7|                PyGenObject *gen = (PyGenObject *)PyStackRef_AsPyObjectBorrow(iter);
  |  | 6152|      7|                if (Py_TYPE(gen) != &PyGen_Type) {
  |  |  ------------------
  |  |  |  |  213|      7|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      7|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (6152:21): [True: 0, False: 7]
  |  |  ------------------
  |  | 6153|      0|                    UPDATE_MISS_STATS(FOR_ITER);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 6154|      0|                    assert(_PyOpcode_Deopt[opcode] == (FOR_ITER));
  |  |  ------------------
  |  |  |  Branch (6154:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 6155|      0|                    JUMP_TO_PREDICTED(FOR_ITER);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 6156|      0|                }
  |  | 6157|      7|                if (!gen_try_set_executing((PyGenObject *)gen)) {
  |  |  ------------------
  |  |  |  Branch (6157:21): [True: 0, False: 7]
  |  |  ------------------
  |  | 6158|      0|                    UPDATE_MISS_STATS(FOR_ITER);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 6159|      0|                    assert(_PyOpcode_Deopt[opcode] == (FOR_ITER));
  |  |  ------------------
  |  |  |  Branch (6159:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 6160|      0|                    JUMP_TO_PREDICTED(FOR_ITER);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 6161|      0|                }
  |  | 6162|      7|                STAT_INC(FOR_ITER, hit);
  |  |  ------------------
  |  |  |  |   73|      7|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 6163|      7|                _PyInterpreterFrame *pushed_frame = &gen->gi_iframe;
  |  | 6164|      7|                _PyFrame_StackPush(pushed_frame, PyStackRef_None);
  |  |  ------------------
  |  |  |  |  473|      7|#define PyStackRef_None ((_PyStackRef){.bits = ((uintptr_t)&_Py_NoneStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      7|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6165|      7|                gen->gi_exc_state.previous_item = tstate->exc_info;
  |  | 6166|      7|                tstate->exc_info = &gen->gi_exc_state;
  |  | 6167|      7|                pushed_frame->previous = frame;
  |  | 6168|      7|                frame->return_offset = (uint16_t)( 2u + oparg);
  |  | 6169|      7|                gen_frame = PyStackRef_Wrap(pushed_frame);
  |  | 6170|      7|            }
  |  | 6171|       |            // _PUSH_FRAME
  |  | 6172|      0|            {
  |  | 6173|      7|                new_frame = gen_frame;
  |  | 6174|      7|                assert(!IS_PEP523_HOOKED(tstate));
  |  |  ------------------
  |  |  |  Branch (6174:17): [True: 7, False: 0]
  |  |  ------------------
  |  | 6175|      7|                _PyInterpreterFrame *temp = PyStackRef_Unwrap(new_frame);
  |  | 6176|      7|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 6177|      7|                assert(temp->previous == frame || temp->previous->previous == frame);
  |  |  ------------------
  |  |  |  Branch (6177:17): [True: 7, False: 0]
  |  |  |  Branch (6177:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 6178|      7|                CALL_STAT_INC(inlined_py_calls);
  |  |  ------------------
  |  |  |  |   76|      7|#define CALL_STAT_INC(name) ((void)0)
  |  |  ------------------
  |  | 6179|      7|                frame = tstate->current_frame = temp;
  |  | 6180|      7|                tstate->py_recursion_remaining--;
  |  | 6181|      7|                LOAD_SP();
  |  |  ------------------
  |  |  |  |  425|      7|#define LOAD_SP() \
  |  |  |  |  426|      7|stack_pointer = _PyFrame_GetStackPointer(frame)
  |  |  ------------------
  |  | 6182|      7|                LOAD_IP(0);
  |  |  ------------------
  |  |  |  |  419|      7|#define LOAD_IP(OFFSET) do { \
  |  |  |  |  420|      7|        next_instr = frame->instr_ptr + (OFFSET); \
  |  |  |  |  421|      7|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:14): [Folded, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6183|      7|                DTRACE_FUNCTION_ENTRY();
  |  |  ------------------
  |  |  |  |  345|      7|#define DTRACE_FUNCTION_ENTRY() ((void)0)
  |  |  ------------------
  |  | 6184|      7|                LLTRACE_RESUME_FRAME();
  |  |  ------------------
  |  |  |  |  188|      7|#define LLTRACE_RESUME_FRAME() ((void)0)
  |  |  ------------------
  |  | 6185|      7|            }
  |  | 6186|      7|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      7|    { \
  |  |  |  |  201|      7|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      7|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      7|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      7|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      7|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      7|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      7|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      7|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 7]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      7|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      7|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      7|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      7|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      7|    }
  |  |  ------------------
  |  |  |  Branch (6186:13): [True: 7, False: 0]
  |  |  ------------------
  |  | 6187|      7|        }
  |  | 6188|       |
  |  | 6189|    530|        TARGET(FOR_ITER_LIST) {
  |  |  ------------------
  |  |  |  |  132|    530|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 6190|       |            #if _Py_TAIL_CALL_INTERP
  |  | 6191|       |            int opcode = FOR_ITER_LIST;
  |  | 6192|       |            (void)(opcode);
  |  | 6193|       |            #endif
  |  | 6194|    530|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 6195|    530|            (void)this_instr;
  |  | 6196|    530|            frame->instr_ptr = next_instr;
  |  | 6197|    530|            next_instr += 2;
  |  | 6198|    530|            INSTRUCTION_STATS(FOR_ITER_LIST);
  |  |  ------------------
  |  |  |  |   71|    530|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 6199|    530|            static_assert(INLINE_CACHE_ENTRIES_FOR_ITER == 1, "incorrect cache size");
  |  | 6200|    530|            _PyStackRef iter;
  |  | 6201|    530|            _PyStackRef null_or_index;
  |  | 6202|    530|            _PyStackRef next;
  |  | 6203|       |            /* Skip 1 cache entry */
  |  | 6204|       |            // _ITER_CHECK_LIST
  |  | 6205|    530|            {
  |  | 6206|    530|                null_or_index = stack_pointer[-1];
  |  | 6207|    530|                iter = stack_pointer[-2];
  |  | 6208|    530|                PyObject *iter_o = PyStackRef_AsPyObjectBorrow(iter);
  |  | 6209|    530|                if (Py_TYPE(iter_o) != &PyList_Type) {
  |  |  ------------------
  |  |  |  |  213|    530|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    530|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    530|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (6209:21): [True: 0, False: 530]
  |  |  ------------------
  |  | 6210|      0|                    UPDATE_MISS_STATS(FOR_ITER);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 6211|      0|                    assert(_PyOpcode_Deopt[opcode] == (FOR_ITER));
  |  |  ------------------
  |  |  |  Branch (6211:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 6212|      0|                    JUMP_TO_PREDICTED(FOR_ITER);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 6213|      0|                }
  |  | 6214|    530|                assert(PyStackRef_IsTaggedInt(null_or_index));
  |  |  ------------------
  |  |  |  Branch (6214:17): [True: 530, False: 0]
  |  |  ------------------
  |  | 6215|       |                #ifdef Py_GIL_DISABLED
  |  | 6216|       |                if (!_Py_IsOwnedByCurrentThread(iter_o) && !_PyObject_GC_IS_SHARED(iter_o)) {
  |  | 6217|       |                    UPDATE_MISS_STATS(FOR_ITER);
  |  | 6218|       |                    assert(_PyOpcode_Deopt[opcode] == (FOR_ITER));
  |  | 6219|       |                    JUMP_TO_PREDICTED(FOR_ITER);
  |  | 6220|       |                }
  |  | 6221|       |                #endif
  |  | 6222|    530|            }
  |  | 6223|       |            // _ITER_JUMP_LIST
  |  | 6224|    530|            {
  |  | 6225|       |                #ifdef Py_GIL_DISABLED
  |  | 6226|       |
  |  | 6227|       |                #else
  |  | 6228|    530|                PyObject *list_o = PyStackRef_AsPyObjectBorrow(iter);
  |  | 6229|    530|                assert(Py_TYPE(list_o) == &PyList_Type);
  |  |  ------------------
  |  |  |  Branch (6229:17): [True: 530, False: 0]
  |  |  ------------------
  |  | 6230|    530|                STAT_INC(FOR_ITER, hit);
  |  |  ------------------
  |  |  |  |   73|    530|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 6231|    530|                if ((size_t)PyStackRef_UntagInt(null_or_index) >= (size_t)PyList_GET_SIZE(list_o)) {
  |  |  ------------------
  |  |  |  |   38|    530|#define PyList_GET_SIZE(op) PyList_GET_SIZE(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    530|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    530|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (6231:21): [True: 33, False: 497]
  |  |  ------------------
  |  | 6232|     33|                    null_or_index = PyStackRef_TagInt(-1);
  |  | 6233|     33|                    JUMPBY(oparg + 1);
  |  |  ------------------
  |  |  |  |  260|     33|#define JUMPBY(x)       (next_instr += (x))
  |  |  ------------------
  |  | 6234|     33|                    stack_pointer[-1] = null_or_index;
  |  | 6235|     33|                    DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     33|    { \
  |  |  |  |  201|     33|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     33|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     33|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     33|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     33|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     33|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     33|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     33|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 33]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     33|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     33|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     33|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     33|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     33|    }
  |  |  ------------------
  |  |  |  Branch (6235:21): [True: 33, False: 0]
  |  |  ------------------
  |  | 6236|     33|                }
  |  | 6237|    530|                #endif
  |  | 6238|    530|            }
  |  | 6239|       |            // _ITER_NEXT_LIST
  |  | 6240|    530|            {
  |  | 6241|    530|                PyObject *list_o = PyStackRef_AsPyObjectBorrow(iter);
  |  | 6242|    530|                assert(PyList_CheckExact(list_o));
  |  |  ------------------
  |  |  |  Branch (6242:17): [True: 497, False: 33]
  |  |  ------------------
  |  | 6243|       |                #ifdef Py_GIL_DISABLED
  |  | 6244|       |                assert(_Py_IsOwnedByCurrentThread(list_o) ||
  |  | 6245|       |                  _PyObject_GC_IS_SHARED(list_o));
  |  | 6246|       |                STAT_INC(FOR_ITER, hit);
  |  | 6247|       |                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 6248|       |                int result = _PyList_GetItemRefNoLock((PyListObject *)list_o, PyStackRef_UntagInt(null_or_index), &next);
  |  | 6249|       |                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 6250|       |                if (result < 0) {
  |  | 6251|       |                    UPDATE_MISS_STATS(FOR_ITER);
  |  | 6252|       |                    assert(_PyOpcode_Deopt[opcode] == (FOR_ITER));
  |  | 6253|       |                    JUMP_TO_PREDICTED(FOR_ITER);
  |  | 6254|       |                }
  |  | 6255|       |                if (result == 0) {
  |  | 6256|       |                    null_or_index = PyStackRef_TagInt(-1);
  |  | 6257|       |                    JUMPBY(oparg + 1);
  |  | 6258|       |                    stack_pointer[-1] = null_or_index;
  |  | 6259|       |                    DISPATCH();
  |  | 6260|       |                }
  |  | 6261|       |                #else
  |  | 6262|    497|                next = PyStackRef_FromPyObjectNew(PyList_GET_ITEM(list_o, PyStackRef_UntagInt(null_or_index)));
  |  |  ------------------
  |  |  |  |  599|    497|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    497|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    994|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (37:38): [True: 497, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6263|      0|                #endif
  |  | 6264|      0|                null_or_index = PyStackRef_IncrementTaggedIntNoOverflow(null_or_index);
  |  | 6265|    497|            }
  |  | 6266|      0|            stack_pointer[-1] = null_or_index;
  |  | 6267|    497|            stack_pointer[0] = next;
  |  | 6268|    497|            stack_pointer += 1;
  |  | 6269|    497|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    497|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 6270|    497|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    497|    { \
  |  |  |  |  201|    497|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    497|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    497|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    497|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    497|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    497|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    497|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    497|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 497]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    497|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    497|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    497|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    497|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    497|    }
  |  |  ------------------
  |  |  |  Branch (6270:13): [True: 497, False: 0]
  |  |  ------------------
  |  | 6271|    497|        }
  |  | 6272|       |
  |  | 6273|      5|        TARGET(FOR_ITER_RANGE) {
  |  |  ------------------
  |  |  |  |  132|      5|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 6274|       |            #if _Py_TAIL_CALL_INTERP
  |  | 6275|       |            int opcode = FOR_ITER_RANGE;
  |  | 6276|       |            (void)(opcode);
  |  | 6277|       |            #endif
  |  | 6278|      5|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 6279|      5|            (void)this_instr;
  |  | 6280|      5|            frame->instr_ptr = next_instr;
  |  | 6281|      5|            next_instr += 2;
  |  | 6282|      5|            INSTRUCTION_STATS(FOR_ITER_RANGE);
  |  |  ------------------
  |  |  |  |   71|      5|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 6283|      5|            static_assert(INLINE_CACHE_ENTRIES_FOR_ITER == 1, "incorrect cache size");
  |  | 6284|      5|            _PyStackRef iter;
  |  | 6285|      5|            _PyStackRef next;
  |  | 6286|       |            /* Skip 1 cache entry */
  |  | 6287|       |            // _ITER_CHECK_RANGE
  |  | 6288|      5|            {
  |  | 6289|      5|                iter = stack_pointer[-2];
  |  | 6290|      5|                _PyRangeIterObject *r = (_PyRangeIterObject *)PyStackRef_AsPyObjectBorrow(iter);
  |  | 6291|      5|                if (Py_TYPE(r) != &PyRangeIter_Type) {
  |  |  ------------------
  |  |  |  |  213|      5|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (6291:21): [True: 0, False: 5]
  |  |  ------------------
  |  | 6292|      0|                    UPDATE_MISS_STATS(FOR_ITER);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 6293|      0|                    assert(_PyOpcode_Deopt[opcode] == (FOR_ITER));
  |  |  ------------------
  |  |  |  Branch (6293:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 6294|      0|                    JUMP_TO_PREDICTED(FOR_ITER);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 6295|      0|                }
  |  | 6296|       |                #ifdef Py_GIL_DISABLED
  |  | 6297|       |                if (!_PyObject_IsUniquelyReferenced((PyObject *)r)) {
  |  | 6298|       |                    UPDATE_MISS_STATS(FOR_ITER);
  |  | 6299|       |                    assert(_PyOpcode_Deopt[opcode] == (FOR_ITER));
  |  | 6300|       |                    JUMP_TO_PREDICTED(FOR_ITER);
  |  | 6301|       |                }
  |  | 6302|       |                #endif
  |  | 6303|      5|            }
  |  | 6304|       |            // _ITER_JUMP_RANGE
  |  | 6305|      5|            {
  |  | 6306|      5|                _PyRangeIterObject *r = (_PyRangeIterObject *)PyStackRef_AsPyObjectBorrow(iter);
  |  | 6307|      5|                assert(Py_TYPE(r) == &PyRangeIter_Type);
  |  |  ------------------
  |  |  |  Branch (6307:17): [True: 5, False: 0]
  |  |  ------------------
  |  | 6308|       |                #ifdef Py_GIL_DISABLED
  |  | 6309|       |                assert(_PyObject_IsUniquelyReferenced((PyObject *)r));
  |  | 6310|       |                #endif
  |  | 6311|      5|                STAT_INC(FOR_ITER, hit);
  |  |  ------------------
  |  |  |  |   73|      5|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 6312|      5|                if (r->len <= 0) {
  |  |  ------------------
  |  |  |  Branch (6312:21): [True: 2, False: 3]
  |  |  ------------------
  |  | 6313|      2|                    JUMPBY(oparg + 1);
  |  |  ------------------
  |  |  |  |  260|      2|#define JUMPBY(x)       (next_instr += (x))
  |  |  ------------------
  |  | 6314|      2|                    DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      2|    { \
  |  |  |  |  201|      2|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      2|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      2|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      2|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      2|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      2|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      2|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      2|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      2|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      2|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      2|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      2|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      2|    }
  |  |  ------------------
  |  |  |  Branch (6314:21): [True: 2, False: 0]
  |  |  ------------------
  |  | 6315|      2|                }
  |  | 6316|      5|            }
  |  | 6317|       |            // _ITER_NEXT_RANGE
  |  | 6318|      5|            {
  |  | 6319|      5|                _PyRangeIterObject *r = (_PyRangeIterObject *)PyStackRef_AsPyObjectBorrow(iter);
  |  | 6320|      5|                assert(Py_TYPE(r) == &PyRangeIter_Type);
  |  |  ------------------
  |  |  |  Branch (6320:17): [True: 3, False: 2]
  |  |  ------------------
  |  | 6321|       |                #ifdef Py_GIL_DISABLED
  |  | 6322|       |                assert(_PyObject_IsUniquelyReferenced((PyObject *)r));
  |  | 6323|       |                #endif
  |  | 6324|      5|                assert(r->len > 0);
  |  |  ------------------
  |  |  |  Branch (6324:17): [True: 3, False: 0]
  |  |  ------------------
  |  | 6325|      3|                long value = r->start;
  |  | 6326|      3|                r->start = value + r->step;
  |  | 6327|      3|                r->len--;
  |  | 6328|      3|                PyObject *res = PyLong_FromLong(value);
  |  | 6329|      3|                if (res == NULL) {
  |  |  ------------------
  |  |  |  Branch (6329:21): [True: 0, False: 3]
  |  |  ------------------
  |  | 6330|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 6331|      0|                }
  |  | 6332|      3|                next = PyStackRef_FromPyObjectSteal(res);
  |  | 6333|      3|            }
  |  | 6334|      0|            stack_pointer[0] = next;
  |  | 6335|      3|            stack_pointer += 1;
  |  | 6336|      3|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      3|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 6337|      3|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      3|    { \
  |  |  |  |  201|      3|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      3|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      3|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      3|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      3|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      3|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      3|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      3|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 3]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      3|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      3|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      3|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      3|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      3|    }
  |  |  ------------------
  |  |  |  Branch (6337:13): [True: 3, False: 0]
  |  |  ------------------
  |  | 6338|      3|        }
  |  | 6339|       |
  |  | 6340|    302|        TARGET(FOR_ITER_TUPLE) {
  |  |  ------------------
  |  |  |  |  132|    302|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 6341|       |            #if _Py_TAIL_CALL_INTERP
  |  | 6342|       |            int opcode = FOR_ITER_TUPLE;
  |  | 6343|       |            (void)(opcode);
  |  | 6344|       |            #endif
  |  | 6345|    302|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 6346|    302|            (void)this_instr;
  |  | 6347|    302|            frame->instr_ptr = next_instr;
  |  | 6348|    302|            next_instr += 2;
  |  | 6349|    302|            INSTRUCTION_STATS(FOR_ITER_TUPLE);
  |  |  ------------------
  |  |  |  |   71|    302|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 6350|    302|            static_assert(INLINE_CACHE_ENTRIES_FOR_ITER == 1, "incorrect cache size");
  |  | 6351|    302|            _PyStackRef iter;
  |  | 6352|    302|            _PyStackRef null_or_index;
  |  | 6353|    302|            _PyStackRef next;
  |  | 6354|       |            /* Skip 1 cache entry */
  |  | 6355|       |            // _ITER_CHECK_TUPLE
  |  | 6356|    302|            {
  |  | 6357|    302|                null_or_index = stack_pointer[-1];
  |  | 6358|    302|                iter = stack_pointer[-2];
  |  | 6359|    302|                PyObject *iter_o = PyStackRef_AsPyObjectBorrow(iter);
  |  | 6360|    302|                if (Py_TYPE(iter_o) != &PyTuple_Type) {
  |  |  ------------------
  |  |  |  |  213|    302|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    302|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    302|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (6360:21): [True: 4, False: 298]
  |  |  ------------------
  |  | 6361|      4|                    UPDATE_MISS_STATS(FOR_ITER);
  |  |  ------------------
  |  |  |  |  298|      4|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 6362|      4|                    assert(_PyOpcode_Deopt[opcode] == (FOR_ITER));
  |  |  ------------------
  |  |  |  Branch (6362:21): [True: 4, False: 0]
  |  |  ------------------
  |  | 6363|      4|                    JUMP_TO_PREDICTED(FOR_ITER);
  |  |  ------------------
  |  |  |  |  136|      4|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 6364|      0|                }
  |  | 6365|    302|                assert(PyStackRef_IsTaggedInt(null_or_index));
  |  |  ------------------
  |  |  |  Branch (6365:17): [True: 298, False: 0]
  |  |  ------------------
  |  | 6366|    298|            }
  |  | 6367|       |            // _ITER_JUMP_TUPLE
  |  | 6368|    298|            {
  |  | 6369|    298|                PyObject *tuple_o = PyStackRef_AsPyObjectBorrow(iter);
  |  | 6370|    298|                (void)tuple_o;
  |  | 6371|    298|                assert(Py_TYPE(tuple_o) == &PyTuple_Type);
  |  |  ------------------
  |  |  |  Branch (6371:17): [True: 298, False: 0]
  |  |  ------------------
  |  | 6372|    298|                STAT_INC(FOR_ITER, hit);
  |  |  ------------------
  |  |  |  |   73|    298|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 6373|    298|                if ((size_t)PyStackRef_UntagInt(null_or_index) >= (size_t)PyTuple_GET_SIZE(tuple_o)) {
  |  |  ------------------
  |  |  |  |   27|    298|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    298|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    298|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (6373:21): [True: 86, False: 212]
  |  |  ------------------
  |  | 6374|     86|                    null_or_index = PyStackRef_TagInt(-1);
  |  | 6375|     86|                    JUMPBY(oparg + 1);
  |  |  ------------------
  |  |  |  |  260|     86|#define JUMPBY(x)       (next_instr += (x))
  |  |  ------------------
  |  | 6376|     86|                    stack_pointer[-1] = null_or_index;
  |  | 6377|     86|                    DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     86|    { \
  |  |  |  |  201|     86|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     86|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     86|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     86|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     86|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     86|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     86|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     86|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 86]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     86|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     86|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     86|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     86|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     86|    }
  |  |  ------------------
  |  |  |  Branch (6377:21): [True: 86, False: 0]
  |  |  ------------------
  |  | 6378|     86|                }
  |  | 6379|    298|            }
  |  | 6380|       |            // _ITER_NEXT_TUPLE
  |  | 6381|    298|            {
  |  | 6382|    298|                PyObject *tuple_o = PyStackRef_AsPyObjectBorrow(iter);
  |  | 6383|    298|                assert(Py_TYPE(tuple_o) == &PyTuple_Type);
  |  |  ------------------
  |  |  |  Branch (6383:17): [True: 212, False: 86]
  |  |  ------------------
  |  | 6384|    212|                uintptr_t i = PyStackRef_UntagInt(null_or_index);
  |  | 6385|    212|                assert((size_t)i < (size_t)PyTuple_GET_SIZE(tuple_o));
  |  |  ------------------
  |  |  |  Branch (6385:17): [True: 212, False: 0]
  |  |  ------------------
  |  | 6386|    212|                next = PyStackRef_FromPyObjectNew(PyTuple_GET_ITEM(tuple_o, i));
  |  |  ------------------
  |  |  |  |  599|    212|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    212|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    424|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (37:38): [True: 212, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6387|      0|                null_or_index = PyStackRef_IncrementTaggedIntNoOverflow(null_or_index);
  |  | 6388|    212|            }
  |  | 6389|      0|            stack_pointer[-1] = null_or_index;
  |  | 6390|    212|            stack_pointer[0] = next;
  |  | 6391|    212|            stack_pointer += 1;
  |  | 6392|    212|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    212|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 6393|    212|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    212|    { \
  |  |  |  |  201|    212|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    212|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    212|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    212|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    212|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    212|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    212|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    212|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 212]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    212|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    212|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    212|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    212|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    212|    }
  |  |  ------------------
  |  |  |  Branch (6393:13): [True: 212, False: 0]
  |  |  ------------------
  |  | 6394|    212|        }
  |  | 6395|       |
  |  | 6396|      2|        TARGET(FOR_ITER_VIRTUAL) {
  |  |  ------------------
  |  |  |  |  132|      2|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 6397|       |            #if _Py_TAIL_CALL_INTERP
  |  | 6398|       |            int opcode = FOR_ITER_VIRTUAL;
  |  | 6399|       |            (void)(opcode);
  |  | 6400|       |            #endif
  |  | 6401|      2|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 6402|      2|            (void)this_instr;
  |  | 6403|      2|            frame->instr_ptr = next_instr;
  |  | 6404|      2|            next_instr += 2;
  |  | 6405|      2|            INSTRUCTION_STATS(FOR_ITER_VIRTUAL);
  |  |  ------------------
  |  |  |  |   71|      2|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 6406|      2|            static_assert(INLINE_CACHE_ENTRIES_FOR_ITER == 1, "incorrect cache size");
  |  | 6407|      2|            _PyStackRef null_or_index;
  |  | 6408|      2|            _PyStackRef iter;
  |  | 6409|      2|            _PyStackRef next;
  |  | 6410|       |            /* Skip 1 cache entry */
  |  | 6411|       |            // _GUARD_TOS_NOT_NULL
  |  | 6412|      2|            {
  |  | 6413|      2|                null_or_index = stack_pointer[-1];
  |  | 6414|      2|                if (PyStackRef_IsNull(null_or_index)) {
  |  |  ------------------
  |  |  |  |  470|      2|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|      2|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      2|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (470:32): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6415|      0|                    UPDATE_MISS_STATS(FOR_ITER);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 6416|      0|                    assert(_PyOpcode_Deopt[opcode] == (FOR_ITER));
  |  |  ------------------
  |  |  |  Branch (6416:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 6417|      0|                    JUMP_TO_PREDICTED(FOR_ITER);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 6418|      0|                }
  |  | 6419|      2|            }
  |  | 6420|       |            // _FOR_ITER_VIRTUAL
  |  | 6421|      2|            {
  |  | 6422|      2|                iter = stack_pointer[-2];
  |  | 6423|      2|                PyObject *iter_o = PyStackRef_AsPyObjectBorrow(iter);
  |  | 6424|      2|                Py_ssize_t index = PyStackRef_UntagInt(null_or_index);
  |  | 6425|      2|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 6426|      2|                _PyObjectIndexPair next_index = Py_TYPE(iter_o)->_tp_iteritem(iter_o, index);
  |  |  ------------------
  |  |  |  |  213|      2|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6427|      2|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 6428|      2|                PyObject *next_o = next_index.object;
  |  | 6429|      2|                index = next_index.index;
  |  | 6430|      2|                if (next_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (6430:21): [True: 2, False: 0]
  |  |  ------------------
  |  | 6431|      2|                    if (index < 0) {
  |  |  ------------------
  |  |  |  Branch (6431:25): [True: 0, False: 2]
  |  |  ------------------
  |  | 6432|      0|                        JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 6433|      0|                    }
  |  | 6434|      2|                    JUMPBY(oparg + 1);
  |  |  ------------------
  |  |  |  |  260|      2|#define JUMPBY(x)       (next_instr += (x))
  |  |  ------------------
  |  | 6435|      2|                    DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      2|    { \
  |  |  |  |  201|      2|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      2|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      2|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      2|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      2|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      2|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      2|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      2|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      2|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      2|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      2|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      2|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      2|    }
  |  |  ------------------
  |  |  |  Branch (6435:21): [True: 2, False: 0]
  |  |  ------------------
  |  | 6436|      2|                }
  |  | 6437|      2|                null_or_index = PyStackRef_TagInt(index);
  |  | 6438|      2|                next = PyStackRef_FromPyObjectSteal(next_o);
  |  | 6439|      2|            }
  |  | 6440|      0|            stack_pointer[-1] = null_or_index;
  |  | 6441|      2|            stack_pointer[0] = next;
  |  | 6442|      2|            stack_pointer += 1;
  |  | 6443|      2|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      2|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 6444|      2|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      2|    { \
  |  |  |  |  201|      2|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      2|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (6444:13): [True: 0, False: 2]
  |  |  ------------------
  |  | 6445|      0|        }
  |  | 6446|       |
  |  | 6447|      0|        TARGET(GET_AITER) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 6448|       |            #if _Py_TAIL_CALL_INTERP
  |  | 6449|       |            int opcode = GET_AITER;
  |  | 6450|       |            (void)(opcode);
  |  | 6451|       |            #endif
  |  | 6452|      0|            frame->instr_ptr = next_instr;
  |  | 6453|      0|            next_instr += 1;
  |  | 6454|      0|            INSTRUCTION_STATS(GET_AITER);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 6455|      0|            _PyStackRef obj;
  |  | 6456|      0|            _PyStackRef iter;
  |  | 6457|      0|            obj = stack_pointer[-1];
  |  | 6458|      0|            unaryfunc getter = NULL;
  |  | 6459|      0|            PyObject *obj_o = PyStackRef_AsPyObjectBorrow(obj);
  |  | 6460|      0|            PyObject *iter_o;
  |  | 6461|      0|            PyTypeObject *type = Py_TYPE(obj_o);
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6462|      0|            if (type->tp_as_async != NULL) {
  |  |  ------------------
  |  |  |  Branch (6462:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 6463|      0|                getter = type->tp_as_async->am_aiter;
  |  | 6464|      0|            }
  |  | 6465|      0|            if (getter == NULL) {
  |  |  ------------------
  |  |  |  Branch (6465:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 6466|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 6467|      0|                _PyErr_Format(tstate, PyExc_TypeError,
  |  | 6468|      0|                              "'async for' requires an object with "
  |  | 6469|      0|                              "__aiter__ method, got %.100s",
  |  | 6470|      0|                              type->tp_name);
  |  | 6471|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 6472|      0|                stack_pointer += -1;
  |  | 6473|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 6474|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 6475|      0|                PyStackRef_CLOSE(obj);
  |  | 6476|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 6477|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 6478|      0|            }
  |  | 6479|      0|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 6480|      0|            iter_o = (*getter)(obj_o);
  |  | 6481|      0|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 6482|      0|            stack_pointer += -1;
  |  | 6483|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 6484|      0|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 6485|      0|            PyStackRef_CLOSE(obj);
  |  | 6486|      0|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 6487|      0|            if (iter_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (6487:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 6488|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 6489|      0|            }
  |  | 6490|      0|            if (Py_TYPE(iter_o)->tp_as_async == NULL ||
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (6490:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 6491|      0|                Py_TYPE(iter_o)->tp_as_async->am_anext == NULL) {
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (6491:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 6492|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 6493|      0|                _PyErr_Format(tstate, PyExc_TypeError,
  |  | 6494|      0|                              "'async for' received an object from __aiter__ "
  |  | 6495|      0|                              "that does not implement __anext__: %.100s",
  |  | 6496|      0|                              Py_TYPE(iter_o)->tp_name);
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6497|      0|                Py_DECREF(iter_o);
  |  |  ------------------
  |  |  |  |   80|      0|    do { \
  |  |  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   84|      0|            break; \
  |  |  |  |   85|      0|        } \
  |  |  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |   91|      0|        } \
  |  |  |  |   92|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6498|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 6499|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 6500|      0|            }
  |  | 6501|      0|            iter = PyStackRef_FromPyObjectSteal(iter_o);
  |  | 6502|      0|            stack_pointer[0] = iter;
  |  | 6503|      0|            stack_pointer += 1;
  |  | 6504|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 6505|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (6505:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 6506|      0|        }
  |  | 6507|       |
  |  | 6508|      0|        TARGET(GET_ANEXT) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 6509|       |            #if _Py_TAIL_CALL_INTERP
  |  | 6510|       |            int opcode = GET_ANEXT;
  |  | 6511|       |            (void)(opcode);
  |  | 6512|       |            #endif
  |  | 6513|      0|            frame->instr_ptr = next_instr;
  |  | 6514|      0|            next_instr += 1;
  |  | 6515|      0|            INSTRUCTION_STATS(GET_ANEXT);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 6516|      0|            _PyStackRef aiter;
  |  | 6517|      0|            _PyStackRef awaitable;
  |  | 6518|      0|            aiter = stack_pointer[-1];
  |  | 6519|      0|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 6520|      0|            PyObject *awaitable_o = _PyEval_GetANext(PyStackRef_AsPyObjectBorrow(aiter));
  |  | 6521|      0|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 6522|      0|            if (awaitable_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (6522:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 6523|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 6524|      0|            }
  |  | 6525|      0|            awaitable = PyStackRef_FromPyObjectSteal(awaitable_o);
  |  | 6526|      0|            stack_pointer[0] = awaitable;
  |  | 6527|      0|            stack_pointer += 1;
  |  | 6528|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 6529|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (6529:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 6530|      0|        }
  |  | 6531|       |
  |  | 6532|      0|        TARGET(GET_AWAITABLE) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 6533|       |            #if _Py_TAIL_CALL_INTERP
  |  | 6534|       |            int opcode = GET_AWAITABLE;
  |  | 6535|       |            (void)(opcode);
  |  | 6536|       |            #endif
  |  | 6537|      0|            frame->instr_ptr = next_instr;
  |  | 6538|      0|            next_instr += 1;
  |  | 6539|      0|            INSTRUCTION_STATS(GET_AWAITABLE);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 6540|      0|            _PyStackRef iterable;
  |  | 6541|      0|            _PyStackRef iter;
  |  | 6542|      0|            iterable = stack_pointer[-1];
  |  | 6543|      0|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 6544|      0|            PyObject *iter_o = _PyEval_GetAwaitable(PyStackRef_AsPyObjectBorrow(iterable), oparg);
  |  | 6545|      0|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 6546|      0|            stack_pointer += -1;
  |  | 6547|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 6548|      0|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 6549|      0|            PyStackRef_CLOSE(iterable);
  |  | 6550|      0|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 6551|      0|            if (iter_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (6551:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 6552|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 6553|      0|            }
  |  | 6554|      0|            iter = PyStackRef_FromPyObjectSteal(iter_o);
  |  | 6555|      0|            stack_pointer[0] = iter;
  |  | 6556|      0|            stack_pointer += 1;
  |  | 6557|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 6558|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (6558:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 6559|      0|        }
  |  | 6560|       |
  |  | 6561|     59|        TARGET(GET_ITER) {
  |  |  ------------------
  |  |  |  |  132|     59|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 6562|       |            #if _Py_TAIL_CALL_INTERP
  |  | 6563|       |            int opcode = GET_ITER;
  |  | 6564|       |            (void)(opcode);
  |  | 6565|       |            #endif
  |  | 6566|     59|            frame->instr_ptr = next_instr;
  |  | 6567|     59|            next_instr += 2;
  |  | 6568|     59|            INSTRUCTION_STATS(GET_ITER);
  |  |  ------------------
  |  |  |  |   71|     59|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 6569|     59|            PREDICTED_GET_ITER:;
  |  | 6570|     59|            _Py_CODEUNIT* const this_instr = next_instr - 2;
  |  | 6571|     59|            (void)this_instr;
  |  | 6572|     59|            _PyStackRef iterable;
  |  | 6573|     59|            _PyStackRef iter;
  |  | 6574|     59|            _PyStackRef index_or_null;
  |  | 6575|       |            // _SPECIALIZE_GET_ITER
  |  | 6576|     59|            {
  |  | 6577|     59|                iterable = stack_pointer[-1];
  |  | 6578|     59|                uint16_t counter = read_u16(&this_instr[1].cache);
  |  | 6579|     59|                (void)counter;
  |  | 6580|     59|                #if ENABLE_SPECIALIZATION
  |  | 6581|     59|                if (ADAPTIVE_COUNTER_TRIGGERS(counter)) {
  |  |  ------------------
  |  |  |  |  354|     59|    backoff_counter_triggers(forge_backoff_counter((COUNTER)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (354:5): [True: 18, False: 41]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6582|     18|                    next_instr = this_instr;
  |  | 6583|     18|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 6584|     18|                    _Py_Specialize_GetIter(iterable, next_instr);
  |  | 6585|     18|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 6586|     18|                    DISPATCH_SAME_OPARG();
  |  |  ------------------
  |  |  |  |  216|     18|    { \
  |  |  |  |  217|     18|        opcode = next_instr->op.code; \
  |  |  |  |  218|     18|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     18|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  219|     18|        DISPATCH_GOTO_NON_TRACING(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  134|     18|#  define DISPATCH_GOTO_NON_TRACING() goto *DISPATCH_TABLE[opcode];
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  130|     18|#  define DISPATCH_TABLE opcode_targets_table
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  220|     18|    }
  |  |  ------------------
  |  | 6587|     18|                }
  |  | 6588|     59|                OPCODE_DEFERRED_INC(GET_ITER);
  |  |  ------------------
  |  |  |  |   90|     59|#define OPCODE_DEFERRED_INC(opname) ((void)0)
  |  |  ------------------
  |  | 6589|     59|                ADVANCE_ADAPTIVE_COUNTER(this_instr[1].counter);
  |  |  ------------------
  |  |  |  |  357|     59|    do { \
  |  |  |  |  358|     59|        (COUNTER) = advance_backoff_counter((COUNTER)); \
  |  |  |  |  359|     59|    } while (0);
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (359:14): [Folded, False: 59]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6590|     59|                #endif  /* ENABLE_SPECIALIZATION */
  |  | 6591|     59|            }
  |  | 6592|       |            // _GET_ITER
  |  | 6593|     59|            {
  |  | 6594|     59|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 6595|     59|                _PyStackRef result = _PyEval_GetIter(iterable, &index_or_null, oparg);
  |  | 6596|     59|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 6597|     59|                if (PyStackRef_IsError(result)) {
  |  |  ------------------
  |  |  |  Branch (6597:21): [True: 0, False: 59]
  |  |  ------------------
  |  | 6598|      0|                    JUMP_TO_LABEL(pop_1_error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 6599|      0|                }
  |  | 6600|     59|                iter = result;
  |  | 6601|     59|            }
  |  | 6602|      0|            stack_pointer[-1] = iter;
  |  | 6603|     59|            stack_pointer[0] = index_or_null;
  |  | 6604|     59|            stack_pointer += 1;
  |  | 6605|     59|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     59|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 6606|     59|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     59|    { \
  |  |  |  |  201|     59|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     59|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     41|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     41|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     41|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     41|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     41|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     41|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 41]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     41|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     41|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     41|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     41|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     41|    }
  |  |  ------------------
  |  |  |  Branch (6606:13): [True: 41, False: 18]
  |  |  ------------------
  |  | 6607|     41|        }
  |  | 6608|       |
  |  | 6609|      1|        TARGET(GET_ITER_SELF) {
  |  |  ------------------
  |  |  |  |  132|      1|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 6610|       |            #if _Py_TAIL_CALL_INTERP
  |  | 6611|       |            int opcode = GET_ITER_SELF;
  |  | 6612|       |            (void)(opcode);
  |  | 6613|       |            #endif
  |  | 6614|      1|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 6615|      1|            (void)this_instr;
  |  | 6616|      1|            frame->instr_ptr = next_instr;
  |  | 6617|      1|            next_instr += 2;
  |  | 6618|      1|            INSTRUCTION_STATS(GET_ITER_SELF);
  |  |  ------------------
  |  |  |  |   71|      1|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 6619|      1|            static_assert(INLINE_CACHE_ENTRIES_GET_ITER == 1, "incorrect cache size");
  |  | 6620|      1|            _PyStackRef iterable;
  |  | 6621|      1|            _PyStackRef res;
  |  | 6622|       |            /* Skip 1 cache entry */
  |  | 6623|       |            // _GUARD_ITERATOR
  |  | 6624|      1|            {
  |  | 6625|      1|                iterable = stack_pointer[-1];
  |  | 6626|      1|                PyTypeObject *tp = Py_TYPE(PyStackRef_AsPyObjectBorrow(iterable));
  |  |  ------------------
  |  |  |  |  213|      1|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6627|      1|                if (tp->tp_iter != PyObject_SelfIter) {
  |  |  ------------------
  |  |  |  Branch (6627:21): [True: 0, False: 1]
  |  |  ------------------
  |  | 6628|      0|                    UPDATE_MISS_STATS(GET_ITER);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 6629|      0|                    assert(_PyOpcode_Deopt[opcode] == (GET_ITER));
  |  |  ------------------
  |  |  |  Branch (6629:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 6630|      0|                    JUMP_TO_PREDICTED(GET_ITER);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 6631|      0|                }
  |  | 6632|      1|                STAT_INC(GET_ITER, hit);
  |  |  ------------------
  |  |  |  |   73|      1|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 6633|      1|            }
  |  | 6634|       |            // _PUSH_NULL
  |  | 6635|      0|            {
  |  | 6636|      1|                res = PyStackRef_NULL;
  |  | 6637|      1|            }
  |  | 6638|      1|            stack_pointer[0] = res;
  |  | 6639|      1|            stack_pointer += 1;
  |  | 6640|      1|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      1|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 6641|      1|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      1|    { \
  |  |  |  |  201|      1|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      1|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      1|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      1|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      1|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      1|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      1|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      1|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      1|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      1|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      1|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      1|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      1|    }
  |  |  ------------------
  |  |  |  Branch (6641:13): [True: 1, False: 0]
  |  |  ------------------
  |  | 6642|      1|        }
  |  | 6643|       |
  |  | 6644|    160|        TARGET(GET_ITER_VIRTUAL) {
  |  |  ------------------
  |  |  |  |  132|    160|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 6645|       |            #if _Py_TAIL_CALL_INTERP
  |  | 6646|       |            int opcode = GET_ITER_VIRTUAL;
  |  | 6647|       |            (void)(opcode);
  |  | 6648|       |            #endif
  |  | 6649|    160|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 6650|    160|            (void)this_instr;
  |  | 6651|    160|            frame->instr_ptr = next_instr;
  |  | 6652|    160|            next_instr += 2;
  |  | 6653|    160|            INSTRUCTION_STATS(GET_ITER_VIRTUAL);
  |  |  ------------------
  |  |  |  |   71|    160|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 6654|    160|            static_assert(INLINE_CACHE_ENTRIES_GET_ITER == 1, "incorrect cache size");
  |  | 6655|    160|            _PyStackRef iterable;
  |  | 6656|    160|            _PyStackRef zero;
  |  | 6657|       |            /* Skip 1 cache entry */
  |  | 6658|       |            // _GUARD_ITER_VIRTUAL
  |  | 6659|    160|            {
  |  | 6660|    160|                iterable = stack_pointer[-1];
  |  | 6661|    160|                PyTypeObject *tp = Py_TYPE(PyStackRef_AsPyObjectBorrow(iterable));
  |  |  ------------------
  |  |  |  |  213|    160|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    160|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    160|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6662|    160|                if (tp->_tp_iteritem == NULL) {
  |  |  ------------------
  |  |  |  Branch (6662:21): [True: 0, False: 160]
  |  |  ------------------
  |  | 6663|      0|                    UPDATE_MISS_STATS(GET_ITER);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 6664|      0|                    assert(_PyOpcode_Deopt[opcode] == (GET_ITER));
  |  |  ------------------
  |  |  |  Branch (6664:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 6665|      0|                    JUMP_TO_PREDICTED(GET_ITER);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 6666|      0|                }
  |  | 6667|    160|                STAT_INC(GET_ITER, hit);
  |  |  ------------------
  |  |  |  |   73|    160|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 6668|    160|            }
  |  | 6669|       |            // _PUSH_TAGGED_ZERO
  |  | 6670|      0|            {
  |  | 6671|    160|                zero = PyStackRef_TagInt(0);
  |  | 6672|    160|            }
  |  | 6673|    160|            stack_pointer[0] = zero;
  |  | 6674|    160|            stack_pointer += 1;
  |  | 6675|    160|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    160|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 6676|    160|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    160|    { \
  |  |  |  |  201|    160|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    160|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    160|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    160|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    160|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    160|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    160|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    160|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 160]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    160|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    160|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    160|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    160|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    160|    }
  |  |  ------------------
  |  |  |  Branch (6676:13): [True: 160, False: 0]
  |  |  ------------------
  |  | 6677|    160|        }
  |  | 6678|       |
  |  | 6679|      0|        TARGET(GET_LEN) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 6680|       |            #if _Py_TAIL_CALL_INTERP
  |  | 6681|       |            int opcode = GET_LEN;
  |  | 6682|       |            (void)(opcode);
  |  | 6683|       |            #endif
  |  | 6684|      0|            frame->instr_ptr = next_instr;
  |  | 6685|      0|            next_instr += 1;
  |  | 6686|      0|            INSTRUCTION_STATS(GET_LEN);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 6687|      0|            _PyStackRef obj;
  |  | 6688|      0|            _PyStackRef len;
  |  | 6689|      0|            obj = stack_pointer[-1];
  |  | 6690|      0|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 6691|      0|            Py_ssize_t len_i = PyObject_Length(PyStackRef_AsPyObjectBorrow(obj));
  |  |  ------------------
  |  |  |  |  353|      0|#define PyObject_Length PyObject_Size
  |  |  ------------------
  |  | 6692|      0|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 6693|      0|            if (len_i < 0) {
  |  |  ------------------
  |  |  |  Branch (6693:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 6694|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 6695|      0|            }
  |  | 6696|      0|            PyObject *len_o = PyLong_FromSsize_t(len_i);
  |  | 6697|      0|            if (len_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (6697:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 6698|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 6699|      0|            }
  |  | 6700|      0|            len = PyStackRef_FromPyObjectSteal(len_o);
  |  | 6701|      0|            stack_pointer[0] = len;
  |  | 6702|      0|            stack_pointer += 1;
  |  | 6703|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 6704|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (6704:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 6705|      0|        }
  |  | 6706|       |
  |  | 6707|     32|        TARGET(IMPORT_FROM) {
  |  |  ------------------
  |  |  |  |  132|     32|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 6708|       |            #if _Py_TAIL_CALL_INTERP
  |  | 6709|       |            int opcode = IMPORT_FROM;
  |  | 6710|       |            (void)(opcode);
  |  | 6711|       |            #endif
  |  | 6712|     32|            frame->instr_ptr = next_instr;
  |  | 6713|     32|            next_instr += 1;
  |  | 6714|     32|            INSTRUCTION_STATS(IMPORT_FROM);
  |  |  ------------------
  |  |  |  |   71|     32|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 6715|     32|            _PyStackRef from;
  |  | 6716|     32|            _PyStackRef res;
  |  | 6717|     32|            from = stack_pointer[-1];
  |  | 6718|     32|            PyObject *name = GETITEM(FRAME_CO_NAMES, oparg);
  |  |  ------------------
  |  |  |  |  235|     32|#define GETITEM(v, i) PyTuple_GET_ITEM((v), (i))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|     32|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   19|     32|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     32|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (6718:30): [True: 32, False: 0]
  |  |  ------------------
  |  | 6719|      0|            PyObject *res_o;
  |  | 6720|     32|            if (PyLazyImport_CheckExact(PyStackRef_AsPyObjectBorrow(from))) {
  |  |  ------------------
  |  |  |  |   15|     32|#define PyLazyImport_CheckExact(op) Py_IS_TYPE((op), &PyLazyImport_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|     32|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|     32|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     32|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (65:5): [True: 0, False: 32]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6721|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 6722|      0|                res_o = _PyEval_LazyImportFrom(
  |  | 6723|      0|                    tstate, frame, PyStackRef_AsPyObjectBorrow(from), name);
  |  | 6724|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 6725|      0|            }
  |  | 6726|     32|            else {
  |  | 6727|     32|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 6728|     32|                res_o = _PyEval_ImportFrom(
  |  | 6729|     32|                    tstate, PyStackRef_AsPyObjectBorrow(from), name);
  |  | 6730|     32|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 6731|     32|            }
  |  | 6732|     32|            if (res_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (6732:17): [True: 0, False: 32]
  |  |  ------------------
  |  | 6733|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 6734|      0|            }
  |  | 6735|     32|            res = PyStackRef_FromPyObjectSteal(res_o);
  |  | 6736|     32|            stack_pointer[0] = res;
  |  | 6737|     32|            stack_pointer += 1;
  |  | 6738|     32|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     32|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 6739|     32|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     32|    { \
  |  |  |  |  201|     32|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     32|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     32|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     32|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     32|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     32|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     32|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     32|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 32]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     32|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     32|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     32|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     32|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     32|    }
  |  |  ------------------
  |  |  |  Branch (6739:13): [True: 32, False: 0]
  |  |  ------------------
  |  | 6740|     32|        }
  |  | 6741|       |
  |  | 6742|     66|        TARGET(IMPORT_NAME) {
  |  |  ------------------
  |  |  |  |  132|     66|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 6743|       |            #if _Py_TAIL_CALL_INTERP
  |  | 6744|       |            int opcode = IMPORT_NAME;
  |  | 6745|       |            (void)(opcode);
  |  | 6746|       |            #endif
  |  | 6747|     66|            frame->instr_ptr = next_instr;
  |  | 6748|     66|            next_instr += 1;
  |  | 6749|     66|            INSTRUCTION_STATS(IMPORT_NAME);
  |  |  ------------------
  |  |  |  |   71|     66|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 6750|     66|            _PyStackRef level;
  |  | 6751|     66|            _PyStackRef fromlist;
  |  | 6752|     66|            _PyStackRef res;
  |  | 6753|     66|            fromlist = stack_pointer[-1];
  |  | 6754|     66|            level = stack_pointer[-2];
  |  | 6755|     66|            PyObject *name = GETITEM(FRAME_CO_NAMES, oparg >> 2);
  |  |  ------------------
  |  |  |  |  235|     66|#define GETITEM(v, i) PyTuple_GET_ITEM((v), (i))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|     66|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   19|     66|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     66|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (6755:30): [True: 66, False: 0]
  |  |  ------------------
  |  | 6756|      0|            PyObject *res_o;
  |  | 6757|     66|            if (!(oparg & 0x02)) {
  |  |  ------------------
  |  |  |  Branch (6757:17): [True: 49, False: 17]
  |  |  ------------------
  |  | 6758|     49|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 6759|     49|                res_o = _PyEval_LazyImportName(tstate, BUILTINS(), GLOBALS(),
  |  |  ------------------
  |  |  |  |  326|     49|#define BUILTINS() frame->f_builtins
  |  |  ------------------
  |  |                               res_o = _PyEval_LazyImportName(tstate, BUILTINS(), GLOBALS(),
  |  |  ------------------
  |  |  |  |  325|     49|#define GLOBALS() frame->f_globals
  |  |  ------------------
  |  | 6760|     49|                    LOCALS(), name,
  |  |  ------------------
  |  |  |  |  327|     49|#define LOCALS() frame->f_locals
  |  |  ------------------
  |  | 6761|     49|                    PyStackRef_AsPyObjectBorrow(fromlist),
  |  | 6762|     49|                    PyStackRef_AsPyObjectBorrow(level),
  |  | 6763|     49|                    oparg & 0x01);
  |  | 6764|     49|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 6765|     49|            }
  |  | 6766|     17|            else {
  |  | 6767|     17|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 6768|     17|                res_o = _PyEval_ImportName(tstate, BUILTINS(), GLOBALS(),
  |  |  ------------------
  |  |  |  |  326|     17|#define BUILTINS() frame->f_builtins
  |  |  ------------------
  |  |                               res_o = _PyEval_ImportName(tstate, BUILTINS(), GLOBALS(),
  |  |  ------------------
  |  |  |  |  325|     17|#define GLOBALS() frame->f_globals
  |  |  ------------------
  |  | 6769|     17|                    LOCALS(), name,
  |  |  ------------------
  |  |  |  |  327|     17|#define LOCALS() frame->f_locals
  |  |  ------------------
  |  | 6770|     17|                    PyStackRef_AsPyObjectBorrow(fromlist),
  |  | 6771|     17|                    PyStackRef_AsPyObjectBorrow(level));
  |  | 6772|     17|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 6773|     17|            }
  |  | 6774|     66|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 6775|     66|            _PyStackRef tmp = fromlist;
  |  | 6776|     66|            fromlist = PyStackRef_NULL;
  |  | 6777|     66|            stack_pointer[-1] = fromlist;
  |  | 6778|     66|            PyStackRef_CLOSE(tmp);
  |  | 6779|     66|            tmp = level;
  |  | 6780|     66|            level = PyStackRef_NULL;
  |  | 6781|     66|            stack_pointer[-2] = level;
  |  | 6782|     66|            PyStackRef_CLOSE(tmp);
  |  | 6783|     66|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 6784|     66|            stack_pointer += -2;
  |  | 6785|     66|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     66|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 6786|     66|            if (res_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (6786:17): [True: 2, False: 64]
  |  |  ------------------
  |  | 6787|      2|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      2|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 6788|      0|            }
  |  | 6789|     64|            res = PyStackRef_FromPyObjectSteal(res_o);
  |  | 6790|     64|            stack_pointer[0] = res;
  |  | 6791|     64|            stack_pointer += 1;
  |  | 6792|     64|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     64|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 6793|     64|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     64|    { \
  |  |  |  |  201|     64|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     64|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     64|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     64|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     64|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     64|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     64|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     64|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 64]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     64|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     64|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     64|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     64|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     64|    }
  |  |  ------------------
  |  |  |  Branch (6793:13): [True: 64, False: 0]
  |  |  ------------------
  |  | 6794|     64|        }
  |  | 6795|       |
  |  | 6796|      0|        TARGET(INSTRUMENTED_CALL) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 6797|       |            #if _Py_TAIL_CALL_INTERP
  |  | 6798|       |            int opcode = INSTRUMENTED_CALL;
  |  | 6799|       |            (void)(opcode);
  |  | 6800|       |            #endif
  |  | 6801|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 6802|      0|            (void)this_instr;
  |  | 6803|      0|            frame->instr_ptr = next_instr;
  |  | 6804|      0|            next_instr += 4;
  |  | 6805|      0|            INSTRUCTION_STATS(INSTRUMENTED_CALL);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 6806|      0|            opcode = INSTRUMENTED_CALL;
  |  |  ------------------
  |  |  |  |  240|      0|#define INSTRUMENTED_CALL                      249
  |  |  ------------------
  |  | 6807|      0|            _PyStackRef callable;
  |  | 6808|      0|            _PyStackRef self_or_null;
  |  | 6809|      0|            _PyStackRef func;
  |  | 6810|      0|            _PyStackRef maybe_self;
  |  | 6811|      0|            _PyStackRef *args;
  |  | 6812|      0|            _PyStackRef res;
  |  | 6813|       |            /* Skip 3 cache entries */
  |  | 6814|       |            // _MAYBE_EXPAND_METHOD
  |  | 6815|      0|            {
  |  | 6816|      0|                self_or_null = stack_pointer[-1 - oparg];
  |  | 6817|      0|                callable = stack_pointer[-2 - oparg];
  |  | 6818|      0|                if (PyStackRef_TYPE(callable) == &PyMethod_Type && PyStackRef_IsNull(self_or_null)) {
  |  |  ------------------
  |  |  |  |  470|      0|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|      0|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      0|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (470:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (6818:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 6819|      0|                    PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 6820|      0|                    PyObject *self = ((PyMethodObject *)callable_o)->im_self;
  |  | 6821|      0|                    self_or_null = PyStackRef_FromPyObjectNew(self);
  |  |  ------------------
  |  |  |  |  599|      0|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6822|      0|                    PyObject *method = ((PyMethodObject *)callable_o)->im_func;
  |  | 6823|      0|                    _PyStackRef temp = callable;
  |  | 6824|      0|                    callable = PyStackRef_FromPyObjectNew(method);
  |  |  ------------------
  |  |  |  |  599|      0|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6825|      0|                    stack_pointer[-2 - oparg] = callable;
  |  | 6826|      0|                    stack_pointer[-1 - oparg] = self_or_null;
  |  | 6827|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 6828|      0|                    PyStackRef_CLOSE(temp);
  |  | 6829|      0|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 6830|      0|                }
  |  | 6831|      0|            }
  |  | 6832|       |            // _MONITOR_CALL
  |  | 6833|      0|            {
  |  | 6834|      0|                args = &stack_pointer[-oparg];
  |  | 6835|      0|                maybe_self = self_or_null;
  |  | 6836|      0|                func = callable;
  |  | 6837|      0|                int is_meth = !PyStackRef_IsNull(maybe_self);
  |  |  ------------------
  |  |  |  |  470|      0|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|      0|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      0|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6838|      0|                PyObject *function = PyStackRef_AsPyObjectBorrow(func);
  |  | 6839|      0|                PyObject *arg0;
  |  | 6840|      0|                if (is_meth) {
  |  |  ------------------
  |  |  |  Branch (6840:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 6841|      0|                    arg0 = PyStackRef_AsPyObjectBorrow(maybe_self);
  |  | 6842|      0|                }
  |  | 6843|      0|                else if (oparg) {
  |  |  ------------------
  |  |  |  Branch (6843:26): [True: 0, False: 0]
  |  |  ------------------
  |  | 6844|      0|                    arg0 = PyStackRef_AsPyObjectBorrow(args[0]);
  |  | 6845|      0|                }
  |  | 6846|      0|                else {
  |  | 6847|      0|                    arg0 = &_PyInstrumentation_MISSING;
  |  | 6848|      0|                }
  |  | 6849|      0|                stack_pointer[-2 - oparg] = func;
  |  | 6850|      0|                stack_pointer[-1 - oparg] = maybe_self;
  |  | 6851|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 6852|      0|                int err = _Py_call_instrumentation_2args(
  |  | 6853|      0|                    tstate, PY_MONITORING_EVENT_CALL,
  |  |  ------------------
  |  |  |  |   18|      0|#define PY_MONITORING_EVENT_CALL 4
  |  |  ------------------
  |  | 6854|      0|                    frame, this_instr, function, arg0
  |  | 6855|      0|                );
  |  | 6856|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 6857|      0|                if (err) {
  |  |  ------------------
  |  |  |  Branch (6857:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 6858|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 6859|      0|                }
  |  | 6860|      0|            }
  |  | 6861|       |            // _DO_CALL
  |  | 6862|      0|            {
  |  | 6863|      0|                args = &stack_pointer[-oparg];
  |  | 6864|      0|                self_or_null = stack_pointer[-1 - oparg];
  |  | 6865|      0|                callable = stack_pointer[-2 - oparg];
  |  | 6866|      0|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 6867|      0|                int total_args = oparg;
  |  | 6868|      0|                _PyStackRef *arguments = args;
  |  | 6869|      0|                if (!PyStackRef_IsNull(self_or_null)) {
  |  |  ------------------
  |  |  |  |  470|      0|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|      0|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      0|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (6869:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 6870|      0|                    arguments--;
  |  | 6871|      0|                    total_args++;
  |  | 6872|      0|                }
  |  | 6873|      0|                if (Py_TYPE(callable_o) == &PyFunction_Type &&
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (6873:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 6874|      0|                    !IS_PEP523_HOOKED(tstate) &&
  |  |  ------------------
  |  |  |  |  517|      0|#define IS_PEP523_HOOKED(tstate) (tstate->interp->eval_frame != NULL)
  |  |  ------------------
  |  |  |  Branch (6874:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 6875|      0|                    ((PyFunctionObject *)callable_o)->vectorcall == _PyFunction_Vectorcall)
  |  |  ------------------
  |  |  |  Branch (6875:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 6876|      0|                {
  |  | 6877|      0|                    int code_flags = ((PyCodeObject*)PyFunction_GET_CODE(callable_o))->co_flags;
  |  |  ------------------
  |  |  |  |   93|      0|#define PyFunction_GET_CODE(func) PyFunction_GET_CODE(_PyObject_CAST(func))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 6878|      0|                    PyObject *locals = code_flags & CO_OPTIMIZED ? NULL : Py_NewRef(PyFunction_GET_GLOBALS(callable_o));
  |  |  ------------------
  |  |  |  |  118|      0|#define CO_OPTIMIZED    0x0001
  |  |  ------------------
  |  |                                   PyObject *locals = code_flags & CO_OPTIMIZED ? NULL : Py_NewRef(PyFunction_GET_GLOBALS(callable_o));
  |  |  ------------------
  |  |  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (6878:40): [True: 0, False: 0]
  |  |  ------------------
  |  | 6879|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 6880|      0|                    _PyInterpreterFrame *new_frame = _PyEvalFramePushAndInit(
  |  | 6881|      0|                        tstate, callable, locals,
  |  | 6882|      0|                        arguments, total_args, NULL, frame
  |  | 6883|      0|                    );
  |  | 6884|      0|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 6885|      0|                    stack_pointer += -2 - oparg;
  |  | 6886|      0|                    ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 6887|      0|                    if (new_frame == NULL) {
  |  |  ------------------
  |  |  |  Branch (6887:25): [True: 0, False: 0]
  |  |  ------------------
  |  | 6888|      0|                        JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 6889|      0|                    }
  |  | 6890|      0|                    frame->return_offset = 4u ;
  |  | 6891|      0|                    DISPATCH_INLINED(new_frame);
  |  |  ------------------
  |  |  |  |  223|      0|    do {                                                         \
  |  |  |  |  224|      0|        assert(!IS_PEP523_HOOKED(tstate));                       \
  |  |  |  |  225|      0|        _PyFrame_SetStackPointer(frame, stack_pointer);          \
  |  |  |  |  226|      0|        assert((NEW_FRAME)->previous == frame);                  \
  |  |  |  |  227|      0|        frame = tstate->current_frame = (NEW_FRAME);             \
  |  |  |  |  228|      0|        CALL_STAT_INC(inlined_py_calls);                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|      0|#define CALL_STAT_INC(name) ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  229|      0|        JUMP_TO_LABEL(start_frame);                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  |  |  ------------------
  |  |  |  |  230|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (230:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (6891:21): [True: 0, False: 0]
  |  |  |  Branch (6891:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 6892|      0|                }
  |  | 6893|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 6894|      0|                PyObject* res_o = _Py_VectorCallInstrumentation_StackRefSteal(
  |  | 6895|      0|                    callable,
  |  | 6896|      0|                    arguments,
  |  | 6897|      0|                    total_args,
  |  | 6898|      0|                    PyStackRef_NULL,
  |  | 6899|      0|                    opcode == INSTRUMENTED_CALL,
  |  |  ------------------
  |  |  |  |  240|      0|#define INSTRUMENTED_CALL                      249
  |  |  ------------------
  |  | 6900|      0|                    frame,
  |  | 6901|      0|                    this_instr,
  |  | 6902|      0|                    tstate);
  |  | 6903|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 6904|      0|                if (res_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (6904:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 6905|      0|                    stack_pointer += -2 - oparg;
  |  | 6906|      0|                    ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 6907|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 6908|      0|                }
  |  | 6909|      0|                res = PyStackRef_FromPyObjectSteal(res_o);
  |  | 6910|      0|            }
  |  | 6911|       |            // _CHECK_PERIODIC_AT_END
  |  | 6912|      0|            {
  |  | 6913|      0|                stack_pointer[-2 - oparg] = res;
  |  | 6914|      0|                stack_pointer += -1 - oparg;
  |  | 6915|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 6916|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 6917|      0|                int err = check_periodics(tstate);
  |  | 6918|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 6919|      0|                if (err != 0) {
  |  |  ------------------
  |  |  |  Branch (6919:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 6920|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 6921|      0|                }
  |  | 6922|      0|            }
  |  | 6923|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (6923:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 6924|      0|        }
  |  | 6925|       |
  |  | 6926|      0|        TARGET(INSTRUMENTED_CALL_FUNCTION_EX) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 6927|       |            #if _Py_TAIL_CALL_INTERP
  |  | 6928|       |            int opcode = INSTRUMENTED_CALL_FUNCTION_EX;
  |  | 6929|       |            (void)(opcode);
  |  | 6930|       |            #endif
  |  | 6931|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 6932|      0|            (void)this_instr;
  |  | 6933|      0|            frame->instr_ptr = next_instr;
  |  | 6934|      0|            next_instr += 2;
  |  | 6935|      0|            INSTRUCTION_STATS(INSTRUMENTED_CALL_FUNCTION_EX);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 6936|      0|            opcode = INSTRUMENTED_CALL_FUNCTION_EX;
  |  |  ------------------
  |  |  |  |  242|      0|#define INSTRUMENTED_CALL_FUNCTION_EX          251
  |  |  ------------------
  |  | 6937|      0|            _PyStackRef func;
  |  | 6938|      0|            _PyStackRef callargs;
  |  | 6939|      0|            _PyStackRef func_st;
  |  | 6940|      0|            _PyStackRef null;
  |  | 6941|      0|            _PyStackRef callargs_st;
  |  | 6942|      0|            _PyStackRef kwargs_st;
  |  | 6943|      0|            _PyStackRef result;
  |  | 6944|       |            /* Skip 1 cache entry */
  |  | 6945|       |            // _MAKE_CALLARGS_A_TUPLE
  |  | 6946|      0|            {
  |  | 6947|      0|                callargs = stack_pointer[-2];
  |  | 6948|      0|                func = stack_pointer[-4];
  |  | 6949|      0|                PyObject *callargs_o = PyStackRef_AsPyObjectBorrow(callargs);
  |  | 6950|      0|                if (!PyTuple_CheckExact(callargs_o)) {
  |  |  ------------------
  |  |  |  |   28|      0|#define PyTuple_CheckExact(op) Py_IS_TYPE((op), &PyTuple_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      0|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (6950:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 6951|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 6952|      0|                    int err = _Py_Check_ArgsIterable(tstate, PyStackRef_AsPyObjectBorrow(func), callargs_o);
  |  | 6953|      0|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 6954|      0|                    if (err < 0) {
  |  |  ------------------
  |  |  |  Branch (6954:25): [True: 0, False: 0]
  |  |  ------------------
  |  | 6955|      0|                        JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 6956|      0|                    }
  |  | 6957|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 6958|      0|                    PyObject *tuple_o = PySequence_Tuple(callargs_o);
  |  | 6959|      0|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 6960|      0|                    if (tuple_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (6960:25): [True: 0, False: 0]
  |  |  ------------------
  |  | 6961|      0|                        JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 6962|      0|                    }
  |  | 6963|      0|                    _PyStackRef temp = callargs;
  |  | 6964|      0|                    callargs = PyStackRef_FromPyObjectSteal(tuple_o);
  |  | 6965|      0|                    stack_pointer[-2] = callargs;
  |  | 6966|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 6967|      0|                    PyStackRef_CLOSE(temp);
  |  | 6968|      0|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 6969|      0|                }
  |  | 6970|      0|            }
  |  | 6971|       |            // _DO_CALL_FUNCTION_EX
  |  | 6972|      0|            {
  |  | 6973|      0|                kwargs_st = stack_pointer[-1];
  |  | 6974|      0|                callargs_st = callargs;
  |  | 6975|      0|                null = stack_pointer[-3];
  |  | 6976|      0|                func_st = func;
  |  | 6977|      0|                (void)null;
  |  | 6978|      0|                PyObject *func = PyStackRef_AsPyObjectBorrow(func_st);
  |  | 6979|      0|                EVAL_CALL_STAT_INC_IF_FUNCTION(EVAL_CALL_FUNCTION_EX, func);
  |  |  ------------------
  |  |  |  |   80|      0|#define EVAL_CALL_STAT_INC_IF_FUNCTION(name, callable) ((void)0)
  |  |  ------------------
  |  | 6980|      0|                PyObject *result_o;
  |  | 6981|      0|                assert(!_PyErr_Occurred(tstate));
  |  |  ------------------
  |  |  |  Branch (6981:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 6982|      0|                if (opcode == INSTRUMENTED_CALL_FUNCTION_EX) {
  |  |  ------------------
  |  |  |  |  242|      0|#define INSTRUMENTED_CALL_FUNCTION_EX          251
  |  |  ------------------
  |  |  |  Branch (6982:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 6983|      0|                    PyObject *callargs = PyStackRef_AsPyObjectBorrow(callargs_st);
  |  | 6984|      0|                    PyObject *kwargs = PyStackRef_AsPyObjectBorrow(kwargs_st);
  |  | 6985|      0|                    assert(kwargs == NULL || PyDict_CheckExact(kwargs));
  |  |  ------------------
  |  |  |  Branch (6985:21): [True: 0, False: 0]
  |  |  |  Branch (6985:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 6986|      0|                    assert(PyTuple_CheckExact(callargs));
  |  |  ------------------
  |  |  |  Branch (6986:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 6987|      0|                    PyObject *arg = PyTuple_GET_SIZE(callargs) > 0 ?
  |  |  ------------------
  |  |  |  |   27|      0|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (6987:37): [True: 0, False: 0]
  |  |  ------------------
  |  | 6988|      0|                    PyTuple_GET_ITEM(callargs, 0) : &_PyInstrumentation_MISSING;
  |  |  ------------------
  |  |  |  |   29|      0|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  |  |  ------------------
  |  |  |  |  |  |   19|      0|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (6988:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 6989|      0|                    stack_pointer[-2] = callargs_st;
  |  | 6990|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 6991|      0|                    int err = _Py_call_instrumentation_2args(
  |  | 6992|      0|                        tstate, PY_MONITORING_EVENT_CALL,
  |  |  ------------------
  |  |  |  |   18|      0|#define PY_MONITORING_EVENT_CALL 4
  |  |  ------------------
  |  | 6993|      0|                        frame, this_instr, func, arg);
  |  | 6994|      0|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 6995|      0|                    if (err) {
  |  |  ------------------
  |  |  |  Branch (6995:25): [True: 0, False: 0]
  |  |  ------------------
  |  | 6996|      0|                        JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 6997|      0|                    }
  |  | 6998|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 6999|      0|                    result_o = PyObject_Call(func, callargs, kwargs);
  |  | 7000|      0|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7001|      0|                    if (!PyFunction_Check(func) && !PyMethod_Check(func)) {
  |  |  ------------------
  |  |  |  |   68|      0|#define PyFunction_Check(op) Py_IS_TYPE((op), &PyFunction_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      0|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                                   if (!PyFunction_Check(func) && !PyMethod_Check(func)) {
  |  |  ------------------
  |  |  |  |   22|      0|#define PyMethod_Check(op) Py_IS_TYPE((op), &PyMethod_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      0|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (7001:25): [True: 0, False: 0]
  |  |  |  Branch (7001:52): [True: 0, False: 0]
  |  |  ------------------
  |  | 7002|      0|                        if (result_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (7002:29): [True: 0, False: 0]
  |  |  ------------------
  |  | 7003|      0|                            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7004|      0|                            _Py_call_instrumentation_exc2(
  |  | 7005|      0|                                tstate, PY_MONITORING_EVENT_C_RAISE,
  |  |  ------------------
  |  |  |  |   45|      0|#define PY_MONITORING_EVENT_C_RAISE 17
  |  |  ------------------
  |  | 7006|      0|                                frame, this_instr, func, arg);
  |  | 7007|      0|                            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7008|      0|                        }
  |  | 7009|      0|                        else {
  |  | 7010|      0|                            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7011|      0|                            int err = _Py_call_instrumentation_2args(
  |  | 7012|      0|                                tstate, PY_MONITORING_EVENT_C_RETURN,
  |  |  ------------------
  |  |  |  |   44|      0|#define PY_MONITORING_EVENT_C_RETURN 16
  |  |  ------------------
  |  | 7013|      0|                                frame, this_instr, func, arg);
  |  | 7014|      0|                            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7015|      0|                            if (err < 0) {
  |  |  ------------------
  |  |  |  Branch (7015:33): [True: 0, False: 0]
  |  |  ------------------
  |  | 7016|      0|                                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7017|      0|                                Py_CLEAR(result_o);
  |  |  ------------------
  |  |  |  |  484|      0|    do { \
  |  |  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  ------------------
  |  |  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  ------------------
  |  |  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  |  |  ------------------
  |  |  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   80|      0|    do { \
  |  |  |  |  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|            break; \
  |  |  |  |  |  |   85|      0|        } \
  |  |  |  |  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |  |  |   91|      0|        } \
  |  |  |  |  |  |   92|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  490|      0|        } \
  |  |  |  |  491|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7018|      0|                                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7019|      0|                            }
  |  | 7020|      0|                        }
  |  | 7021|      0|                    }
  |  | 7022|      0|                }
  |  | 7023|      0|                else {
  |  | 7024|      0|                    if (Py_TYPE(func) == &PyFunction_Type &&
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (7024:25): [True: 0, False: 0]
  |  |  ------------------
  |  | 7025|      0|                        !IS_PEP523_HOOKED(tstate) &&
  |  |  ------------------
  |  |  |  |  517|      0|#define IS_PEP523_HOOKED(tstate) (tstate->interp->eval_frame != NULL)
  |  |  ------------------
  |  |  |  Branch (7025:25): [True: 0, False: 0]
  |  |  ------------------
  |  | 7026|      0|                        ((PyFunctionObject *)func)->vectorcall == _PyFunction_Vectorcall) {
  |  |  ------------------
  |  |  |  Branch (7026:25): [True: 0, False: 0]
  |  |  ------------------
  |  | 7027|      0|                        PyObject *callargs = PyStackRef_AsPyObjectSteal(callargs_st);
  |  | 7028|      0|                        assert(PyTuple_CheckExact(callargs));
  |  |  ------------------
  |  |  |  Branch (7028:25): [True: 0, False: 0]
  |  |  ------------------
  |  | 7029|      0|                        PyObject *kwargs = PyStackRef_IsNull(kwargs_st) ? NULL : PyStackRef_AsPyObjectSteal(kwargs_st);
  |  |  ------------------
  |  |  |  |  470|      0|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|      0|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      0|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (470:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7030|      0|                        assert(kwargs == NULL || PyDict_CheckExact(kwargs));
  |  |  ------------------
  |  |  |  Branch (7030:25): [True: 0, False: 0]
  |  |  |  Branch (7030:25): [True: 0, False: 0]
  |  |  ------------------
  |  | 7031|      0|                        Py_ssize_t nargs = PyTuple_GET_SIZE(callargs);
  |  |  ------------------
  |  |  |  |   27|      0|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7032|      0|                        int code_flags = ((PyCodeObject *)PyFunction_GET_CODE(func))->co_flags;
  |  |  ------------------
  |  |  |  |   93|      0|#define PyFunction_GET_CODE(func) PyFunction_GET_CODE(_PyObject_CAST(func))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7033|      0|                        PyObject *locals = code_flags & CO_OPTIMIZED ? NULL : Py_NewRef(PyFunction_GET_GLOBALS(func));
  |  |  ------------------
  |  |  |  |  118|      0|#define CO_OPTIMIZED    0x0001
  |  |  ------------------
  |  |                                       PyObject *locals = code_flags & CO_OPTIMIZED ? NULL : Py_NewRef(PyFunction_GET_GLOBALS(func));
  |  |  ------------------
  |  |  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (7033:44): [True: 0, False: 0]
  |  |  ------------------
  |  | 7034|      0|                        stack_pointer += -2;
  |  | 7035|      0|                        ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 7036|      0|                        _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7037|      0|                        _PyInterpreterFrame *new_frame = _PyEvalFramePushAndInit_Ex(
  |  | 7038|      0|                            tstate, func_st, locals,
  |  | 7039|      0|                            nargs, callargs, kwargs, frame);
  |  | 7040|      0|                        stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7041|      0|                        stack_pointer += -2;
  |  | 7042|      0|                        ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 7043|      0|                        if (new_frame == NULL) {
  |  |  ------------------
  |  |  |  Branch (7043:29): [True: 0, False: 0]
  |  |  ------------------
  |  | 7044|      0|                            JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 7045|      0|                        }
  |  | 7046|      0|                        assert( 2u == 1 + INLINE_CACHE_ENTRIES_CALL_FUNCTION_EX);
  |  |  ------------------
  |  |  |  Branch (7046:25): [True: 0, Folded]
  |  |  ------------------
  |  | 7047|      0|                        frame->return_offset = 2u ;
  |  | 7048|      0|                        DISPATCH_INLINED(new_frame);
  |  |  ------------------
  |  |  |  |  223|      0|    do {                                                         \
  |  |  |  |  224|      0|        assert(!IS_PEP523_HOOKED(tstate));                       \
  |  |  |  |  225|      0|        _PyFrame_SetStackPointer(frame, stack_pointer);          \
  |  |  |  |  226|      0|        assert((NEW_FRAME)->previous == frame);                  \
  |  |  |  |  227|      0|        frame = tstate->current_frame = (NEW_FRAME);             \
  |  |  |  |  228|      0|        CALL_STAT_INC(inlined_py_calls);                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|      0|#define CALL_STAT_INC(name) ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  229|      0|        JUMP_TO_LABEL(start_frame);                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  |  |  ------------------
  |  |  |  |  230|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (230:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (7048:25): [True: 0, False: 0]
  |  |  |  Branch (7048:25): [True: 0, False: 0]
  |  |  ------------------
  |  | 7049|      0|                    }
  |  | 7050|      0|                    PyObject *callargs = PyStackRef_AsPyObjectBorrow(callargs_st);
  |  | 7051|      0|                    assert(PyTuple_CheckExact(callargs));
  |  |  ------------------
  |  |  |  Branch (7051:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 7052|      0|                    PyObject *kwargs = PyStackRef_AsPyObjectBorrow(kwargs_st);
  |  | 7053|      0|                    assert(kwargs == NULL || PyDict_CheckExact(kwargs));
  |  |  ------------------
  |  |  |  Branch (7053:21): [True: 0, False: 0]
  |  |  |  Branch (7053:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 7054|      0|                    stack_pointer[-2] = callargs_st;
  |  | 7055|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7056|      0|                    result_o = PyObject_Call(func, callargs, kwargs);
  |  | 7057|      0|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7058|      0|                }
  |  | 7059|      0|                stack_pointer += -1;
  |  | 7060|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 7061|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7062|      0|                PyStackRef_XCLOSE(kwargs_st);
  |  | 7063|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7064|      0|                stack_pointer += -1;
  |  | 7065|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 7066|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7067|      0|                PyStackRef_CLOSE(callargs_st);
  |  | 7068|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7069|      0|                stack_pointer += -2;
  |  | 7070|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 7071|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7072|      0|                PyStackRef_CLOSE(func_st);
  |  | 7073|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7074|      0|                if (result_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (7074:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 7075|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 7076|      0|                }
  |  | 7077|      0|                result = PyStackRef_FromPyObjectSteal(result_o);
  |  | 7078|      0|            }
  |  | 7079|       |            // _CHECK_PERIODIC_AT_END
  |  | 7080|      0|            {
  |  | 7081|      0|                stack_pointer[0] = result;
  |  | 7082|      0|                stack_pointer += 1;
  |  | 7083|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 7084|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7085|      0|                int err = check_periodics(tstate);
  |  | 7086|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7087|      0|                if (err != 0) {
  |  |  ------------------
  |  |  |  Branch (7087:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 7088|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 7089|      0|                }
  |  | 7090|      0|            }
  |  | 7091|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (7091:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 7092|      0|        }
  |  | 7093|       |
  |  | 7094|      0|        TARGET(INSTRUMENTED_CALL_KW) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 7095|       |            #if _Py_TAIL_CALL_INTERP
  |  | 7096|       |            int opcode = INSTRUMENTED_CALL_KW;
  |  | 7097|       |            (void)(opcode);
  |  | 7098|       |            #endif
  |  | 7099|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 7100|      0|            (void)this_instr;
  |  | 7101|      0|            frame->instr_ptr = next_instr;
  |  | 7102|      0|            next_instr += 4;
  |  | 7103|      0|            INSTRUCTION_STATS(INSTRUMENTED_CALL_KW);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 7104|      0|            opcode = INSTRUMENTED_CALL_KW;
  |  |  ------------------
  |  |  |  |  241|      0|#define INSTRUMENTED_CALL_KW                   250
  |  |  ------------------
  |  | 7105|      0|            _PyStackRef callable;
  |  | 7106|      0|            _PyStackRef self_or_null;
  |  | 7107|      0|            _PyStackRef *args;
  |  | 7108|      0|            _PyStackRef kwnames;
  |  | 7109|      0|            _PyStackRef res;
  |  | 7110|       |            /* Skip 1 cache entry */
  |  | 7111|       |            /* Skip 2 cache entries */
  |  | 7112|       |            // _MAYBE_EXPAND_METHOD_KW
  |  | 7113|      0|            {
  |  | 7114|      0|                self_or_null = stack_pointer[-2 - oparg];
  |  | 7115|      0|                callable = stack_pointer[-3 - oparg];
  |  | 7116|      0|                if (PyStackRef_TYPE(callable) == &PyMethod_Type && PyStackRef_IsNull(self_or_null)) {
  |  |  ------------------
  |  |  |  |  470|      0|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|      0|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      0|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (470:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (7116:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 7117|      0|                    PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 7118|      0|                    PyObject *self = ((PyMethodObject *)callable_o)->im_self;
  |  | 7119|      0|                    self_or_null = PyStackRef_FromPyObjectNew(self);
  |  |  ------------------
  |  |  |  |  599|      0|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7120|      0|                    PyObject *method = ((PyMethodObject *)callable_o)->im_func;
  |  | 7121|      0|                    _PyStackRef temp = callable;
  |  | 7122|      0|                    callable = PyStackRef_FromPyObjectNew(method);
  |  |  ------------------
  |  |  |  |  599|      0|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7123|      0|                    stack_pointer[-3 - oparg] = callable;
  |  | 7124|      0|                    stack_pointer[-2 - oparg] = self_or_null;
  |  | 7125|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7126|      0|                    PyStackRef_CLOSE(temp);
  |  | 7127|      0|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7128|      0|                }
  |  | 7129|      0|            }
  |  | 7130|       |            // _MONITOR_CALL_KW
  |  | 7131|      0|            {
  |  | 7132|      0|                args = &stack_pointer[-1 - oparg];
  |  | 7133|      0|                int is_meth = !PyStackRef_IsNull(self_or_null);
  |  |  ------------------
  |  |  |  |  470|      0|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|      0|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      0|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7134|      0|                PyObject *arg;
  |  | 7135|      0|                if (is_meth) {
  |  |  ------------------
  |  |  |  Branch (7135:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 7136|      0|                    arg = PyStackRef_AsPyObjectBorrow(self_or_null);
  |  | 7137|      0|                }
  |  | 7138|      0|                else if (args) {
  |  |  ------------------
  |  |  |  Branch (7138:26): [True: 0, False: 0]
  |  |  ------------------
  |  | 7139|      0|                    arg = PyStackRef_AsPyObjectBorrow(args[0]);
  |  | 7140|      0|                }
  |  | 7141|      0|                else {
  |  | 7142|      0|                    arg = &_PyInstrumentation_MISSING;
  |  | 7143|      0|                }
  |  | 7144|      0|                PyObject *function = PyStackRef_AsPyObjectBorrow(callable);
  |  | 7145|      0|                stack_pointer[-3 - oparg] = callable;
  |  | 7146|      0|                stack_pointer[-2 - oparg] = self_or_null;
  |  | 7147|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7148|      0|                int err = _Py_call_instrumentation_2args(
  |  | 7149|      0|                    tstate, PY_MONITORING_EVENT_CALL,
  |  |  ------------------
  |  |  |  |   18|      0|#define PY_MONITORING_EVENT_CALL 4
  |  |  ------------------
  |  | 7150|      0|                    frame, this_instr, function, arg);
  |  | 7151|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7152|      0|                if (err) {
  |  |  ------------------
  |  |  |  Branch (7152:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 7153|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 7154|      0|                }
  |  | 7155|      0|            }
  |  | 7156|       |            // _DO_CALL_KW
  |  | 7157|      0|            {
  |  | 7158|      0|                kwnames = stack_pointer[-1];
  |  | 7159|      0|                args = &stack_pointer[-1 - oparg];
  |  | 7160|      0|                PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable);
  |  | 7161|      0|                PyObject *kwnames_o = PyStackRef_AsPyObjectBorrow(kwnames);
  |  | 7162|      0|                int total_args = oparg;
  |  | 7163|      0|                _PyStackRef *arguments = args;
  |  | 7164|      0|                if (!PyStackRef_IsNull(self_or_null)) {
  |  |  ------------------
  |  |  |  |  470|      0|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|      0|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      0|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (7164:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 7165|      0|                    arguments--;
  |  | 7166|      0|                    total_args++;
  |  | 7167|      0|                }
  |  | 7168|      0|                int positional_args = total_args - (int)PyTuple_GET_SIZE(kwnames_o);
  |  |  ------------------
  |  |  |  |   27|      0|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7169|      0|                if (Py_TYPE(callable_o) == &PyFunction_Type &&
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (7169:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 7170|      0|                    !IS_PEP523_HOOKED(tstate) &&
  |  |  ------------------
  |  |  |  |  517|      0|#define IS_PEP523_HOOKED(tstate) (tstate->interp->eval_frame != NULL)
  |  |  ------------------
  |  |  |  Branch (7170:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 7171|      0|                    ((PyFunctionObject *)callable_o)->vectorcall == _PyFunction_Vectorcall)
  |  |  ------------------
  |  |  |  Branch (7171:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 7172|      0|                {
  |  | 7173|      0|                    int code_flags = ((PyCodeObject*)PyFunction_GET_CODE(callable_o))->co_flags;
  |  |  ------------------
  |  |  |  |   93|      0|#define PyFunction_GET_CODE(func) PyFunction_GET_CODE(_PyObject_CAST(func))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7174|      0|                    PyObject *locals = code_flags & CO_OPTIMIZED ? NULL : Py_NewRef(PyFunction_GET_GLOBALS(callable_o));
  |  |  ------------------
  |  |  |  |  118|      0|#define CO_OPTIMIZED    0x0001
  |  |  ------------------
  |  |                                   PyObject *locals = code_flags & CO_OPTIMIZED ? NULL : Py_NewRef(PyFunction_GET_GLOBALS(callable_o));
  |  |  ------------------
  |  |  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (7174:40): [True: 0, False: 0]
  |  |  ------------------
  |  | 7175|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7176|      0|                    _PyInterpreterFrame *new_frame = _PyEvalFramePushAndInit(
  |  | 7177|      0|                        tstate, callable, locals,
  |  | 7178|      0|                        arguments, positional_args, kwnames_o, frame
  |  | 7179|      0|                    );
  |  | 7180|      0|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7181|      0|                    stack_pointer += -3 - oparg;
  |  | 7182|      0|                    ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 7183|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7184|      0|                    PyStackRef_CLOSE(kwnames);
  |  | 7185|      0|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7186|      0|                    if (new_frame == NULL) {
  |  |  ------------------
  |  |  |  Branch (7186:25): [True: 0, False: 0]
  |  |  ------------------
  |  | 7187|      0|                        JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 7188|      0|                    }
  |  | 7189|      0|                    assert( 4u == 1 + INLINE_CACHE_ENTRIES_CALL_KW);
  |  |  ------------------
  |  |  |  Branch (7189:21): [True: 0, Folded]
  |  |  ------------------
  |  | 7190|      0|                    frame->return_offset = 4u ;
  |  | 7191|      0|                    DISPATCH_INLINED(new_frame);
  |  |  ------------------
  |  |  |  |  223|      0|    do {                                                         \
  |  |  |  |  224|      0|        assert(!IS_PEP523_HOOKED(tstate));                       \
  |  |  |  |  225|      0|        _PyFrame_SetStackPointer(frame, stack_pointer);          \
  |  |  |  |  226|      0|        assert((NEW_FRAME)->previous == frame);                  \
  |  |  |  |  227|      0|        frame = tstate->current_frame = (NEW_FRAME);             \
  |  |  |  |  228|      0|        CALL_STAT_INC(inlined_py_calls);                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|      0|#define CALL_STAT_INC(name) ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  229|      0|        JUMP_TO_LABEL(start_frame);                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  |  |  ------------------
  |  |  |  |  230|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (230:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (7191:21): [True: 0, False: 0]
  |  |  |  Branch (7191:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 7192|      0|                }
  |  | 7193|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7194|      0|                PyObject* res_o = _Py_VectorCallInstrumentation_StackRefSteal(
  |  | 7195|      0|                    callable,
  |  | 7196|      0|                    arguments,
  |  | 7197|      0|                    total_args,
  |  | 7198|      0|                    kwnames,
  |  | 7199|      0|                    opcode == INSTRUMENTED_CALL_KW,
  |  |  ------------------
  |  |  |  |  241|      0|#define INSTRUMENTED_CALL_KW                   250
  |  |  ------------------
  |  | 7200|      0|                    frame,
  |  | 7201|      0|                    this_instr,
  |  | 7202|      0|                    tstate);
  |  | 7203|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7204|      0|                if (res_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (7204:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 7205|      0|                    stack_pointer += -3 - oparg;
  |  | 7206|      0|                    ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 7207|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 7208|      0|                }
  |  | 7209|      0|                res = PyStackRef_FromPyObjectSteal(res_o);
  |  | 7210|      0|            }
  |  | 7211|      0|            stack_pointer[-3 - oparg] = res;
  |  | 7212|      0|            stack_pointer += -2 - oparg;
  |  | 7213|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 7214|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (7214:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 7215|      0|        }
  |  | 7216|       |
  |  | 7217|      0|        TARGET(INSTRUMENTED_END_ASYNC_FOR) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 7218|       |            #if _Py_TAIL_CALL_INTERP
  |  | 7219|       |            int opcode = INSTRUMENTED_END_ASYNC_FOR;
  |  | 7220|       |            (void)(opcode);
  |  | 7221|       |            #endif
  |  | 7222|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 7223|      0|            (void)this_instr;
  |  | 7224|      0|            frame->instr_ptr = next_instr;
  |  | 7225|      0|            next_instr += 1;
  |  | 7226|      0|            INSTRUCTION_STATS(INSTRUMENTED_END_ASYNC_FOR);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 7227|      0|            _PyStackRef awaitable_st;
  |  | 7228|      0|            _PyStackRef exc_st;
  |  | 7229|       |            // _MONITOR_END_ASYNC_FOR
  |  | 7230|      0|            {
  |  | 7231|      0|                assert((next_instr-oparg)->op.code == END_SEND || (next_instr-oparg)->op.code >= MIN_INSTRUMENTED_OPCODE);
  |  |  ------------------
  |  |  |  Branch (7231:17): [True: 0, False: 0]
  |  |  |  Branch (7231:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 7232|      0|                INSTRUMENTED_JUMP(next_instr-oparg, this_instr+1, PY_MONITORING_EVENT_BRANCH_RIGHT);
  |  |  ------------------
  |  |  |  |  389|      0|#define INSTRUMENTED_JUMP(src, dest, event) \
  |  |  |  |  390|      0|do { \
  |  |  |  |  391|      0|    if (tstate->tracing) {\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (391:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  392|      0|        next_instr = dest; \
  |  |  |  |  393|      0|    } else { \
  |  |  |  |  394|      0|        _PyFrame_SetStackPointer(frame, stack_pointer); \
  |  |  |  |  395|      0|        next_instr = _Py_call_instrumentation_jump(this_instr, tstate, event, frame, src, dest); \
  |  |  |  |  396|      0|        stack_pointer = _PyFrame_GetStackPointer(frame); \
  |  |  |  |  397|      0|        if (next_instr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (397:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  398|      0|            next_instr = (dest)+1; \
  |  |  |  |  399|      0|            JUMP_TO_LABEL(error); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  |  |  ------------------
  |  |  |  |  400|      0|        } \
  |  |  |  |  401|      0|    } \
  |  |  |  |  402|      0|} while (0);
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (402:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7233|      0|            }
  |  | 7234|       |            // _END_ASYNC_FOR
  |  | 7235|      0|            {
  |  | 7236|      0|                exc_st = stack_pointer[-1];
  |  | 7237|      0|                awaitable_st = stack_pointer[-2];
  |  | 7238|      0|                JUMPBY(0);
  |  |  ------------------
  |  |  |  |  260|      0|#define JUMPBY(x)       (next_instr += (x))
  |  |  ------------------
  |  | 7239|      0|                (void)oparg;
  |  | 7240|      0|                PyObject *exc = PyStackRef_AsPyObjectBorrow(exc_st);
  |  | 7241|      0|                assert(exc && PyExceptionInstance_Check(exc));
  |  |  ------------------
  |  |  |  Branch (7241:17): [True: 0, False: 0]
  |  |  |  Branch (7241:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 7242|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7243|      0|                int matches = PyErr_GivenExceptionMatches(exc, PyExc_StopAsyncIteration);
  |  | 7244|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7245|      0|                if (matches) {
  |  |  ------------------
  |  |  |  Branch (7245:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 7246|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7247|      0|                    _PyStackRef tmp = exc_st;
  |  | 7248|      0|                    exc_st = PyStackRef_NULL;
  |  | 7249|      0|                    stack_pointer[-1] = exc_st;
  |  | 7250|      0|                    PyStackRef_CLOSE(tmp);
  |  | 7251|      0|                    tmp = awaitable_st;
  |  | 7252|      0|                    awaitable_st = PyStackRef_NULL;
  |  | 7253|      0|                    stack_pointer[-2] = awaitable_st;
  |  | 7254|      0|                    PyStackRef_CLOSE(tmp);
  |  | 7255|      0|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7256|      0|                    stack_pointer += -2;
  |  | 7257|      0|                    ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 7258|      0|                }
  |  | 7259|      0|                else {
  |  | 7260|      0|                    Py_INCREF(exc);
  |  |  ------------------
  |  |  |  |  310|      0|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7261|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7262|      0|                    _PyErr_SetRaisedException(tstate, exc);
  |  | 7263|      0|                    monitor_reraise(tstate, frame, this_instr);
  |  | 7264|      0|                    JUMP_TO_LABEL(exception_unwind);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 7265|      0|                }
  |  | 7266|      0|            }
  |  | 7267|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (7267:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 7268|      0|        }
  |  | 7269|       |
  |  | 7270|      0|        TARGET(INSTRUMENTED_END_FOR) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 7271|       |            #if _Py_TAIL_CALL_INTERP
  |  | 7272|       |            int opcode = INSTRUMENTED_END_FOR;
  |  | 7273|       |            (void)(opcode);
  |  | 7274|       |            #endif
  |  | 7275|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 7276|      0|            (void)this_instr;
  |  | 7277|      0|            next_instr += 1;
  |  | 7278|      0|            INSTRUCTION_STATS(INSTRUMENTED_END_FOR);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 7279|      0|            _PyStackRef receiver;
  |  | 7280|      0|            _PyStackRef value;
  |  | 7281|      0|            value = stack_pointer[-1];
  |  | 7282|      0|            receiver = stack_pointer[-3];
  |  | 7283|      0|            if (PyStackRef_GenCheck(receiver)) {
  |  |  ------------------
  |  |  |  Branch (7283:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 7284|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7285|      0|                int err = monitor_stop_iteration(tstate, frame, this_instr, PyStackRef_AsPyObjectBorrow(value));
  |  | 7286|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7287|      0|                if (err) {
  |  |  ------------------
  |  |  |  Branch (7287:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 7288|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 7289|      0|                }
  |  | 7290|      0|            }
  |  | 7291|      0|            stack_pointer += -1;
  |  | 7292|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 7293|      0|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7294|      0|            PyStackRef_CLOSE(value);
  |  | 7295|      0|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7296|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (7296:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 7297|      0|        }
  |  | 7298|       |
  |  | 7299|      0|        TARGET(INSTRUMENTED_END_SEND) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 7300|       |            #if _Py_TAIL_CALL_INTERP
  |  | 7301|       |            int opcode = INSTRUMENTED_END_SEND;
  |  | 7302|       |            (void)(opcode);
  |  | 7303|       |            #endif
  |  | 7304|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 7305|      0|            (void)this_instr;
  |  | 7306|      0|            frame->instr_ptr = next_instr;
  |  | 7307|      0|            next_instr += 1;
  |  | 7308|      0|            INSTRUCTION_STATS(INSTRUMENTED_END_SEND);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 7309|      0|            _PyStackRef receiver;
  |  | 7310|      0|            _PyStackRef index_or_null;
  |  | 7311|      0|            _PyStackRef value;
  |  | 7312|      0|            _PyStackRef val;
  |  | 7313|      0|            value = stack_pointer[-1];
  |  | 7314|      0|            index_or_null = stack_pointer[-2];
  |  | 7315|      0|            receiver = stack_pointer[-3];
  |  | 7316|      0|            PyObject *receiver_o = PyStackRef_AsPyObjectBorrow(receiver);
  |  | 7317|      0|            if (PyGen_Check(receiver_o) || PyCoro_CheckExact(receiver_o)) {
  |  |  ------------------
  |  |  |  |   16|      0|#define PyGen_Check(op) PyObject_TypeCheck((op), &PyGen_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |  378|      0|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (378:40): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                           if (PyGen_Check(receiver_o) || PyCoro_CheckExact(receiver_o)) {
  |  |  ------------------
  |  |  |  |   31|      0|#define PyCoro_CheckExact(op) Py_IS_TYPE((op), &PyCoro_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      0|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (65:5): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7318|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7319|      0|                int err = monitor_stop_iteration(tstate, frame, this_instr, PyStackRef_AsPyObjectBorrow(value));
  |  | 7320|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7321|      0|                if (err) {
  |  |  ------------------
  |  |  |  Branch (7321:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 7322|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 7323|      0|                }
  |  | 7324|      0|            }
  |  | 7325|      0|            val = value;
  |  | 7326|      0|            (void)index_or_null;
  |  | 7327|      0|            stack_pointer[-3] = val;
  |  | 7328|      0|            stack_pointer += -2;
  |  | 7329|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 7330|      0|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7331|      0|            PyStackRef_CLOSE(receiver);
  |  | 7332|      0|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7333|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (7333:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 7334|      0|        }
  |  | 7335|       |
  |  | 7336|      0|        TARGET(INSTRUMENTED_FOR_ITER) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 7337|       |            #if _Py_TAIL_CALL_INTERP
  |  | 7338|       |            int opcode = INSTRUMENTED_FOR_ITER;
  |  | 7339|       |            (void)(opcode);
  |  | 7340|       |            #endif
  |  | 7341|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 7342|      0|            (void)this_instr;
  |  | 7343|      0|            frame->instr_ptr = next_instr;
  |  | 7344|      0|            next_instr += 2;
  |  | 7345|      0|            INSTRUCTION_STATS(INSTRUMENTED_FOR_ITER);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 7346|      0|            _PyStackRef iter;
  |  | 7347|      0|            _PyStackRef null_or_index;
  |  | 7348|      0|            _PyStackRef next;
  |  | 7349|       |            /* Skip 1 cache entry */
  |  | 7350|      0|            null_or_index = stack_pointer[-1];
  |  | 7351|      0|            iter = stack_pointer[-2];
  |  | 7352|      0|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7353|      0|            _PyStackRef item = _PyForIter_VirtualIteratorNext(tstate, frame, iter, &null_or_index);
  |  | 7354|      0|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7355|      0|            if (!PyStackRef_IsValid(item)) {
  |  |  ------------------
  |  |  |  Branch (7355:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 7356|      0|                if (PyStackRef_IsError(item)) {
  |  |  ------------------
  |  |  |  Branch (7356:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 7357|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 7358|      0|                }
  |  | 7359|      0|                JUMPBY(oparg + 1);
  |  |  ------------------
  |  |  |  |  260|      0|#define JUMPBY(x)       (next_instr += (x))
  |  |  ------------------
  |  | 7360|      0|                stack_pointer[-1] = null_or_index;
  |  | 7361|      0|                DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (7361:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 7362|      0|            }
  |  | 7363|      0|            next = item;
  |  | 7364|      0|            INSTRUMENTED_JUMP(this_instr, next_instr, PY_MONITORING_EVENT_BRANCH_LEFT);
  |  |  ------------------
  |  |  |  |  389|      0|#define INSTRUMENTED_JUMP(src, dest, event) \
  |  |  |  |  390|      0|do { \
  |  |  |  |  391|      0|    if (tstate->tracing) {\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (391:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  392|      0|        next_instr = dest; \
  |  |  |  |  393|      0|    } else { \
  |  |  |  |  394|      0|        _PyFrame_SetStackPointer(frame, stack_pointer); \
  |  |  |  |  395|      0|        next_instr = _Py_call_instrumentation_jump(this_instr, tstate, event, frame, src, dest); \
  |  |  |  |  396|      0|        stack_pointer = _PyFrame_GetStackPointer(frame); \
  |  |  |  |  397|      0|        if (next_instr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (397:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  398|      0|            next_instr = (dest)+1; \
  |  |  |  |  399|      0|            JUMP_TO_LABEL(error); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  |  |  ------------------
  |  |  |  |  400|      0|        } \
  |  |  |  |  401|      0|    } \
  |  |  |  |  402|      0|} while (0);
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (402:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7365|      0|            stack_pointer[-1] = null_or_index;
  |  | 7366|      0|            stack_pointer[0] = next;
  |  | 7367|      0|            stack_pointer += 1;
  |  | 7368|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 7369|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (7369:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 7370|      0|        }
  |  | 7371|       |
  |  | 7372|      0|        TARGET(INSTRUMENTED_INSTRUCTION) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 7373|       |            #if _Py_TAIL_CALL_INTERP
  |  | 7374|       |            int opcode = INSTRUMENTED_INSTRUCTION;
  |  | 7375|       |            (void)(opcode);
  |  | 7376|       |            #endif
  |  | 7377|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 7378|      0|            (void)this_instr;
  |  | 7379|      0|            frame->instr_ptr = next_instr;
  |  | 7380|      0|            next_instr += 1;
  |  | 7381|      0|            INSTRUCTION_STATS(INSTRUMENTED_INSTRUCTION);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 7382|      0|            opcode = INSTRUMENTED_INSTRUCTION;
  |  |  ------------------
  |  |  |  |  228|      0|#define INSTRUMENTED_INSTRUCTION               237
  |  |  ------------------
  |  | 7383|      0|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7384|      0|            int next_opcode = _Py_call_instrumentation_instruction(
  |  | 7385|      0|                tstate, frame, this_instr);
  |  | 7386|      0|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7387|      0|            if (next_opcode < 0) {
  |  |  ------------------
  |  |  |  Branch (7387:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 7388|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 7389|      0|            }
  |  | 7390|      0|            next_instr = this_instr;
  |  | 7391|      0|            if (_PyOpcode_Caches[next_opcode]) {
  |  |  ------------------
  |  |  |  Branch (7391:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 7392|      0|                PAUSE_ADAPTIVE_COUNTER(next_instr[1].counter);
  |  |  ------------------
  |  |  |  |  362|      0|    do { \
  |  |  |  |  363|      0|        (COUNTER) = pause_backoff_counter((COUNTER)); \
  |  |  |  |  364|      0|    } while (0);
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (364:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7393|      0|            }
  |  | 7394|      0|            assert(next_opcode > 0 && next_opcode < 256);
  |  |  ------------------
  |  |  |  Branch (7394:13): [True: 0, False: 0]
  |  |  |  Branch (7394:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 7395|      0|            opcode = next_opcode;
  |  | 7396|      0|            DISPATCH_GOTO();
  |  |  ------------------
  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  ------------------
  |  | 7397|      0|        }
  |  | 7398|       |
  |  | 7399|      0|        TARGET(INSTRUMENTED_JUMP_BACKWARD) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 7400|       |            #if _Py_TAIL_CALL_INTERP
  |  | 7401|       |            int opcode = INSTRUMENTED_JUMP_BACKWARD;
  |  | 7402|       |            (void)(opcode);
  |  | 7403|       |            #endif
  |  | 7404|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 7405|      0|            (void)this_instr;
  |  | 7406|      0|            frame->instr_ptr = next_instr;
  |  | 7407|      0|            next_instr += 2;
  |  | 7408|      0|            INSTRUCTION_STATS(INSTRUMENTED_JUMP_BACKWARD);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 7409|       |            /* Skip 1 cache entry */
  |  | 7410|       |            // _CHECK_PERIODIC
  |  | 7411|      0|            {
  |  | 7412|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7413|      0|                int err = check_periodics(tstate);
  |  | 7414|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7415|      0|                if (err != 0) {
  |  |  ------------------
  |  |  |  Branch (7415:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 7416|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 7417|      0|                }
  |  | 7418|      0|            }
  |  | 7419|       |            // _MONITOR_JUMP_BACKWARD
  |  | 7420|      0|            {
  |  | 7421|      0|                INSTRUMENTED_JUMP(this_instr, next_instr - oparg, PY_MONITORING_EVENT_JUMP);
  |  |  ------------------
  |  |  |  |  389|      0|#define INSTRUMENTED_JUMP(src, dest, event) \
  |  |  |  |  390|      0|do { \
  |  |  |  |  391|      0|    if (tstate->tracing) {\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (391:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  392|      0|        next_instr = dest; \
  |  |  |  |  393|      0|    } else { \
  |  |  |  |  394|      0|        _PyFrame_SetStackPointer(frame, stack_pointer); \
  |  |  |  |  395|      0|        next_instr = _Py_call_instrumentation_jump(this_instr, tstate, event, frame, src, dest); \
  |  |  |  |  396|      0|        stack_pointer = _PyFrame_GetStackPointer(frame); \
  |  |  |  |  397|      0|        if (next_instr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (397:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  398|      0|            next_instr = (dest)+1; \
  |  |  |  |  399|      0|            JUMP_TO_LABEL(error); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  |  |  ------------------
  |  |  |  |  400|      0|        } \
  |  |  |  |  401|      0|    } \
  |  |  |  |  402|      0|} while (0);
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (402:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7422|      0|            }
  |  | 7423|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (7423:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 7424|      0|        }
  |  | 7425|       |
  |  | 7426|      0|        TARGET(INSTRUMENTED_JUMP_FORWARD) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 7427|       |            #if _Py_TAIL_CALL_INTERP
  |  | 7428|       |            int opcode = INSTRUMENTED_JUMP_FORWARD;
  |  | 7429|       |            (void)(opcode);
  |  | 7430|       |            #endif
  |  | 7431|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 7432|      0|            (void)this_instr;
  |  | 7433|      0|            frame->instr_ptr = next_instr;
  |  | 7434|      0|            next_instr += 1;
  |  | 7435|      0|            INSTRUCTION_STATS(INSTRUMENTED_JUMP_FORWARD);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 7436|      0|            INSTRUMENTED_JUMP(this_instr, next_instr + oparg, PY_MONITORING_EVENT_JUMP);
  |  |  ------------------
  |  |  |  |  389|      0|#define INSTRUMENTED_JUMP(src, dest, event) \
  |  |  |  |  390|      0|do { \
  |  |  |  |  391|      0|    if (tstate->tracing) {\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (391:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  392|      0|        next_instr = dest; \
  |  |  |  |  393|      0|    } else { \
  |  |  |  |  394|      0|        _PyFrame_SetStackPointer(frame, stack_pointer); \
  |  |  |  |  395|      0|        next_instr = _Py_call_instrumentation_jump(this_instr, tstate, event, frame, src, dest); \
  |  |  |  |  396|      0|        stack_pointer = _PyFrame_GetStackPointer(frame); \
  |  |  |  |  397|      0|        if (next_instr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (397:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  398|      0|            next_instr = (dest)+1; \
  |  |  |  |  399|      0|            JUMP_TO_LABEL(error); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  |  |  ------------------
  |  |  |  |  400|      0|        } \
  |  |  |  |  401|      0|    } \
  |  |  |  |  402|      0|} while (0);
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (402:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7437|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (7437:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 7438|      0|        }
  |  | 7439|       |
  |  | 7440|      0|        TARGET(INSTRUMENTED_LINE) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 7441|       |            #if _Py_TAIL_CALL_INTERP
  |  | 7442|       |            int opcode = INSTRUMENTED_LINE;
  |  | 7443|       |            (void)(opcode);
  |  | 7444|       |            #endif
  |  | 7445|      0|            _Py_CODEUNIT* const prev_instr = frame->instr_ptr;
  |  | 7446|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 7447|      0|            (void)this_instr;
  |  | 7448|      0|            frame->instr_ptr = next_instr;
  |  | 7449|      0|            next_instr += 1;
  |  | 7450|      0|            INSTRUCTION_STATS(INSTRUMENTED_LINE);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 7451|      0|            opcode = INSTRUMENTED_LINE;
  |  |  ------------------
  |  |  |  |  244|      0|#define INSTRUMENTED_LINE                      253
  |  |  ------------------
  |  | 7452|      0|            int original_opcode = 0;
  |  | 7453|      0|            if (tstate->tracing) {
  |  |  ------------------
  |  |  |  Branch (7453:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 7454|      0|                PyCodeObject *code = _PyFrame_GetCode(frame);
  |  | 7455|      0|                int index = (int)(this_instr - _PyFrame_GetBytecode(frame));
  |  | 7456|      0|                original_opcode = code->_co_monitoring->lines->data[index*code->_co_monitoring->lines->bytes_per_entry];
  |  | 7457|      0|                next_instr = this_instr;
  |  | 7458|      0|            } else {
  |  | 7459|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7460|      0|                original_opcode = _Py_call_instrumentation_line(
  |  | 7461|      0|                    tstate, frame, this_instr, prev_instr);
  |  | 7462|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7463|      0|                if (original_opcode < 0) {
  |  |  ------------------
  |  |  |  Branch (7463:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 7464|      0|                    next_instr = this_instr+1;
  |  | 7465|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 7466|      0|                }
  |  | 7467|      0|                next_instr = frame->instr_ptr;
  |  | 7468|      0|                if (next_instr != this_instr) {
  |  |  ------------------
  |  |  |  Branch (7468:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 7469|      0|                    DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (7469:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 7470|      0|                }
  |  | 7471|      0|            }
  |  | 7472|      0|            if (_PyOpcode_Caches[original_opcode]) {
  |  |  ------------------
  |  |  |  Branch (7472:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 7473|      0|                _PyBinaryOpCache *cache = (_PyBinaryOpCache *)(next_instr+1);
  |  | 7474|      0|                PAUSE_ADAPTIVE_COUNTER(cache->counter);
  |  |  ------------------
  |  |  |  |  362|      0|    do { \
  |  |  |  |  363|      0|        (COUNTER) = pause_backoff_counter((COUNTER)); \
  |  |  |  |  364|      0|    } while (0);
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (364:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7475|      0|            }
  |  | 7476|      0|            opcode = original_opcode;
  |  | 7477|      0|            DISPATCH_GOTO();
  |  |  ------------------
  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  ------------------
  |  | 7478|      0|        }
  |  | 7479|       |
  |  | 7480|      0|        TARGET(INSTRUMENTED_LOAD_SUPER_ATTR) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 7481|       |            #if _Py_TAIL_CALL_INTERP
  |  | 7482|       |            int opcode = INSTRUMENTED_LOAD_SUPER_ATTR;
  |  | 7483|       |            (void)(opcode);
  |  | 7484|       |            #endif
  |  | 7485|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 7486|      0|            (void)this_instr;
  |  | 7487|      0|            frame->instr_ptr = next_instr;
  |  | 7488|      0|            next_instr += 2;
  |  | 7489|      0|            INSTRUCTION_STATS(INSTRUMENTED_LOAD_SUPER_ATTR);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 7490|      0|            opcode = INSTRUMENTED_LOAD_SUPER_ATTR;
  |  |  ------------------
  |  |  |  |  239|      0|#define INSTRUMENTED_LOAD_SUPER_ATTR           248
  |  |  ------------------
  |  | 7491|      0|            _PyStackRef global_super_st;
  |  | 7492|      0|            _PyStackRef class_st;
  |  | 7493|      0|            _PyStackRef self_st;
  |  | 7494|      0|            _PyStackRef attr;
  |  | 7495|      0|            _PyStackRef *null;
  |  | 7496|       |            /* Skip 1 cache entry */
  |  | 7497|       |            // _LOAD_SUPER_ATTR
  |  | 7498|      0|            {
  |  | 7499|      0|                self_st = stack_pointer[-1];
  |  | 7500|      0|                class_st = stack_pointer[-2];
  |  | 7501|      0|                global_super_st = stack_pointer[-3];
  |  | 7502|      0|                PyObject *global_super = PyStackRef_AsPyObjectBorrow(global_super_st);
  |  | 7503|      0|                PyObject *class = PyStackRef_AsPyObjectBorrow(class_st);
  |  | 7504|      0|                PyObject *self = PyStackRef_AsPyObjectBorrow(self_st);
  |  | 7505|      0|                if (opcode == INSTRUMENTED_LOAD_SUPER_ATTR) {
  |  |  ------------------
  |  |  |  |  239|      0|#define INSTRUMENTED_LOAD_SUPER_ATTR           248
  |  |  ------------------
  |  |  |  Branch (7505:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 7506|      0|                    PyObject *arg = oparg & 2 ? class : &_PyInstrumentation_MISSING;
  |  |  ------------------
  |  |  |  Branch (7506:37): [True: 0, False: 0]
  |  |  ------------------
  |  | 7507|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7508|      0|                    int err = _Py_call_instrumentation_2args(
  |  | 7509|      0|                        tstate, PY_MONITORING_EVENT_CALL,
  |  |  ------------------
  |  |  |  |   18|      0|#define PY_MONITORING_EVENT_CALL 4
  |  |  ------------------
  |  | 7510|      0|                        frame, this_instr, global_super, arg);
  |  | 7511|      0|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7512|      0|                    if (err) {
  |  |  ------------------
  |  |  |  Branch (7512:25): [True: 0, False: 0]
  |  |  ------------------
  |  | 7513|      0|                        _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7514|      0|                        _PyStackRef tmp = self_st;
  |  | 7515|      0|                        self_st = PyStackRef_NULL;
  |  | 7516|      0|                        stack_pointer[-1] = self_st;
  |  | 7517|      0|                        PyStackRef_CLOSE(tmp);
  |  | 7518|      0|                        tmp = class_st;
  |  | 7519|      0|                        class_st = PyStackRef_NULL;
  |  | 7520|      0|                        stack_pointer[-2] = class_st;
  |  | 7521|      0|                        PyStackRef_CLOSE(tmp);
  |  | 7522|      0|                        tmp = global_super_st;
  |  | 7523|      0|                        global_super_st = PyStackRef_NULL;
  |  | 7524|      0|                        stack_pointer[-3] = global_super_st;
  |  | 7525|      0|                        PyStackRef_CLOSE(tmp);
  |  | 7526|      0|                        stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7527|      0|                        stack_pointer += -3;
  |  | 7528|      0|                        ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 7529|      0|                        JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 7530|      0|                    }
  |  | 7531|      0|                }
  |  | 7532|      0|                PyObject *super;
  |  | 7533|      0|                {
  |  | 7534|      0|                    PyObject *stack[] = {class, self};
  |  | 7535|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7536|      0|                    super = PyObject_Vectorcall(global_super, stack, oparg & 2, NULL);
  |  | 7537|      0|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7538|      0|                }
  |  | 7539|      0|                if (opcode == INSTRUMENTED_LOAD_SUPER_ATTR) {
  |  |  ------------------
  |  |  |  |  239|      0|#define INSTRUMENTED_LOAD_SUPER_ATTR           248
  |  |  ------------------
  |  |  |  Branch (7539:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 7540|      0|                    PyObject *arg = oparg & 2 ? class : &_PyInstrumentation_MISSING;
  |  |  ------------------
  |  |  |  Branch (7540:37): [True: 0, False: 0]
  |  |  ------------------
  |  | 7541|      0|                    if (super == NULL) {
  |  |  ------------------
  |  |  |  Branch (7541:25): [True: 0, False: 0]
  |  |  ------------------
  |  | 7542|      0|                        _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7543|      0|                        _Py_call_instrumentation_exc2(
  |  | 7544|      0|                            tstate, PY_MONITORING_EVENT_C_RAISE,
  |  |  ------------------
  |  |  |  |   45|      0|#define PY_MONITORING_EVENT_C_RAISE 17
  |  |  ------------------
  |  | 7545|      0|                            frame, this_instr, global_super, arg);
  |  | 7546|      0|                        stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7547|      0|                    }
  |  | 7548|      0|                    else {
  |  | 7549|      0|                        _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7550|      0|                        int err = _Py_call_instrumentation_2args(
  |  | 7551|      0|                            tstate, PY_MONITORING_EVENT_C_RETURN,
  |  |  ------------------
  |  |  |  |   44|      0|#define PY_MONITORING_EVENT_C_RETURN 16
  |  |  ------------------
  |  | 7552|      0|                            frame, this_instr, global_super, arg);
  |  | 7553|      0|                        stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7554|      0|                        if (err < 0) {
  |  |  ------------------
  |  |  |  Branch (7554:29): [True: 0, False: 0]
  |  |  ------------------
  |  | 7555|      0|                            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7556|      0|                            Py_CLEAR(super);
  |  |  ------------------
  |  |  |  |  484|      0|    do { \
  |  |  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  ------------------
  |  |  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  ------------------
  |  |  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  |  |  ------------------
  |  |  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   80|      0|    do { \
  |  |  |  |  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|            break; \
  |  |  |  |  |  |   85|      0|        } \
  |  |  |  |  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |  |  |   91|      0|        } \
  |  |  |  |  |  |   92|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  490|      0|        } \
  |  |  |  |  491|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7557|      0|                            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7558|      0|                        }
  |  | 7559|      0|                    }
  |  | 7560|      0|                }
  |  | 7561|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7562|      0|                _PyStackRef tmp = self_st;
  |  | 7563|      0|                self_st = PyStackRef_NULL;
  |  | 7564|      0|                stack_pointer[-1] = self_st;
  |  | 7565|      0|                PyStackRef_CLOSE(tmp);
  |  | 7566|      0|                tmp = class_st;
  |  | 7567|      0|                class_st = PyStackRef_NULL;
  |  | 7568|      0|                stack_pointer[-2] = class_st;
  |  | 7569|      0|                PyStackRef_CLOSE(tmp);
  |  | 7570|      0|                tmp = global_super_st;
  |  | 7571|      0|                global_super_st = PyStackRef_NULL;
  |  | 7572|      0|                stack_pointer[-3] = global_super_st;
  |  | 7573|      0|                PyStackRef_CLOSE(tmp);
  |  | 7574|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7575|      0|                stack_pointer += -3;
  |  | 7576|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 7577|      0|                if (super == NULL) {
  |  |  ------------------
  |  |  |  Branch (7577:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 7578|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 7579|      0|                }
  |  | 7580|      0|                PyObject *name = GETITEM(FRAME_CO_NAMES, oparg >> 2);
  |  |  ------------------
  |  |  |  |  235|      0|#define GETITEM(v, i) PyTuple_GET_ITEM((v), (i))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   19|      0|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (7580:34): [True: 0, False: 0]
  |  |  ------------------
  |  | 7581|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7582|      0|                PyObject *attr_o = PyObject_GetAttr(super, name);
  |  | 7583|      0|                Py_DECREF(super);
  |  |  ------------------
  |  |  |  |   80|      0|    do { \
  |  |  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   84|      0|            break; \
  |  |  |  |   85|      0|        } \
  |  |  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |   91|      0|        } \
  |  |  |  |   92|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7584|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7585|      0|                if (attr_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (7585:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 7586|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 7587|      0|                }
  |  | 7588|      0|                attr = PyStackRef_FromPyObjectSteal(attr_o);
  |  | 7589|      0|            }
  |  | 7590|       |            // _PUSH_NULL_CONDITIONAL
  |  | 7591|      0|            {
  |  | 7592|      0|                null = &stack_pointer[1];
  |  | 7593|      0|                if (oparg & 1) {
  |  |  ------------------
  |  |  |  Branch (7593:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 7594|      0|                    null[0] = PyStackRef_NULL;
  |  | 7595|      0|                }
  |  | 7596|      0|            }
  |  | 7597|      0|            stack_pointer[0] = attr;
  |  | 7598|      0|            stack_pointer += 1 + (oparg & 1);
  |  | 7599|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 7600|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (7600:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 7601|      0|        }
  |  | 7602|       |
  |  | 7603|      0|        TARGET(INSTRUMENTED_NOT_TAKEN) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 7604|       |            #if _Py_TAIL_CALL_INTERP
  |  | 7605|       |            int opcode = INSTRUMENTED_NOT_TAKEN;
  |  | 7606|       |            (void)(opcode);
  |  | 7607|       |            #endif
  |  | 7608|      0|            _Py_CODEUNIT* const prev_instr = frame->instr_ptr;
  |  | 7609|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 7610|      0|            (void)this_instr;
  |  | 7611|      0|            frame->instr_ptr = next_instr;
  |  | 7612|      0|            next_instr += 1;
  |  | 7613|      0|            INSTRUCTION_STATS(INSTRUMENTED_NOT_TAKEN);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 7614|      0|            (void)this_instr;
  |  | 7615|      0|            INSTRUMENTED_JUMP(prev_instr, next_instr, PY_MONITORING_EVENT_BRANCH_LEFT);
  |  |  ------------------
  |  |  |  |  389|      0|#define INSTRUMENTED_JUMP(src, dest, event) \
  |  |  |  |  390|      0|do { \
  |  |  |  |  391|      0|    if (tstate->tracing) {\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (391:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  392|      0|        next_instr = dest; \
  |  |  |  |  393|      0|    } else { \
  |  |  |  |  394|      0|        _PyFrame_SetStackPointer(frame, stack_pointer); \
  |  |  |  |  395|      0|        next_instr = _Py_call_instrumentation_jump(this_instr, tstate, event, frame, src, dest); \
  |  |  |  |  396|      0|        stack_pointer = _PyFrame_GetStackPointer(frame); \
  |  |  |  |  397|      0|        if (next_instr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (397:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  398|      0|            next_instr = (dest)+1; \
  |  |  |  |  399|      0|            JUMP_TO_LABEL(error); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  |  |  ------------------
  |  |  |  |  400|      0|        } \
  |  |  |  |  401|      0|    } \
  |  |  |  |  402|      0|} while (0);
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (402:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7616|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (7616:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 7617|      0|        }
  |  | 7618|       |
  |  | 7619|      0|        TARGET(INSTRUMENTED_POP_ITER) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 7620|       |            #if _Py_TAIL_CALL_INTERP
  |  | 7621|       |            int opcode = INSTRUMENTED_POP_ITER;
  |  | 7622|       |            (void)(opcode);
  |  | 7623|       |            #endif
  |  | 7624|      0|            _Py_CODEUNIT* const prev_instr = frame->instr_ptr;
  |  | 7625|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 7626|      0|            (void)this_instr;
  |  | 7627|      0|            frame->instr_ptr = next_instr;
  |  | 7628|      0|            next_instr += 1;
  |  | 7629|      0|            INSTRUCTION_STATS(INSTRUMENTED_POP_ITER);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 7630|      0|            _PyStackRef iter;
  |  | 7631|      0|            _PyStackRef index_or_null;
  |  | 7632|      0|            index_or_null = stack_pointer[-1];
  |  | 7633|      0|            iter = stack_pointer[-2];
  |  | 7634|      0|            (void)index_or_null;
  |  | 7635|      0|            INSTRUMENTED_JUMP(prev_instr, this_instr+1, PY_MONITORING_EVENT_BRANCH_RIGHT);
  |  |  ------------------
  |  |  |  |  389|      0|#define INSTRUMENTED_JUMP(src, dest, event) \
  |  |  |  |  390|      0|do { \
  |  |  |  |  391|      0|    if (tstate->tracing) {\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (391:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  392|      0|        next_instr = dest; \
  |  |  |  |  393|      0|    } else { \
  |  |  |  |  394|      0|        _PyFrame_SetStackPointer(frame, stack_pointer); \
  |  |  |  |  395|      0|        next_instr = _Py_call_instrumentation_jump(this_instr, tstate, event, frame, src, dest); \
  |  |  |  |  396|      0|        stack_pointer = _PyFrame_GetStackPointer(frame); \
  |  |  |  |  397|      0|        if (next_instr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (397:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  398|      0|            next_instr = (dest)+1; \
  |  |  |  |  399|      0|            JUMP_TO_LABEL(error); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  |  |  ------------------
  |  |  |  |  400|      0|        } \
  |  |  |  |  401|      0|    } \
  |  |  |  |  402|      0|} while (0);
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (402:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7636|      0|            stack_pointer += -2;
  |  | 7637|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 7638|      0|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7639|      0|            PyStackRef_CLOSE(iter);
  |  | 7640|      0|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7641|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (7641:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 7642|      0|        }
  |  | 7643|       |
  |  | 7644|      0|        TARGET(INSTRUMENTED_POP_JUMP_IF_FALSE) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 7645|       |            #if _Py_TAIL_CALL_INTERP
  |  | 7646|       |            int opcode = INSTRUMENTED_POP_JUMP_IF_FALSE;
  |  | 7647|       |            (void)(opcode);
  |  | 7648|       |            #endif
  |  | 7649|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 7650|      0|            (void)this_instr;
  |  | 7651|      0|            frame->instr_ptr = next_instr;
  |  | 7652|      0|            next_instr += 2;
  |  | 7653|      0|            INSTRUCTION_STATS(INSTRUMENTED_POP_JUMP_IF_FALSE);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 7654|      0|            _PyStackRef cond;
  |  | 7655|       |            /* Skip 1 cache entry */
  |  | 7656|      0|            cond = stack_pointer[-1];
  |  | 7657|      0|            assert(PyStackRef_BoolCheck(cond));
  |  |  ------------------
  |  |  |  Branch (7657:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 7658|      0|            int jump = PyStackRef_IsFalse(cond);
  |  |  ------------------
  |  |  |  |  482|      0|#define PyStackRef_IsFalse(REF) ((REF).bits == (((uintptr_t)&_Py_FalseStruct) | Py_TAG_REFCNT))
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7659|      0|            RECORD_BRANCH_TAKEN(this_instr[1].cache, jump);
  |  |  ------------------
  |  |  |  |  373|      0|    FT_ATOMIC_STORE_UINT16_RELAXED(       \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define FT_ATOMIC_STORE_UINT16_RELAXED(value, new_value) value = new_value
  |  |  |  |  ------------------
  |  |  |  |  374|      0|        bitset, (FT_ATOMIC_LOAD_UINT16_RELAXED(bitset) << 1) | (flag))
  |  |  ------------------
  |  | 7660|      0|            if (jump) {
  |  |  ------------------
  |  |  |  Branch (7660:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 7661|      0|                INSTRUMENTED_JUMP(this_instr, next_instr + oparg, PY_MONITORING_EVENT_BRANCH_RIGHT);
  |  |  ------------------
  |  |  |  |  389|      0|#define INSTRUMENTED_JUMP(src, dest, event) \
  |  |  |  |  390|      0|do { \
  |  |  |  |  391|      0|    if (tstate->tracing) {\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (391:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  392|      0|        next_instr = dest; \
  |  |  |  |  393|      0|    } else { \
  |  |  |  |  394|      0|        _PyFrame_SetStackPointer(frame, stack_pointer); \
  |  |  |  |  395|      0|        next_instr = _Py_call_instrumentation_jump(this_instr, tstate, event, frame, src, dest); \
  |  |  |  |  396|      0|        stack_pointer = _PyFrame_GetStackPointer(frame); \
  |  |  |  |  397|      0|        if (next_instr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (397:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  398|      0|            next_instr = (dest)+1; \
  |  |  |  |  399|      0|            JUMP_TO_LABEL(error); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  |  |  ------------------
  |  |  |  |  400|      0|        } \
  |  |  |  |  401|      0|    } \
  |  |  |  |  402|      0|} while (0);
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (402:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7662|      0|            }
  |  | 7663|      0|            stack_pointer += -1;
  |  | 7664|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 7665|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (7665:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 7666|      0|        }
  |  | 7667|       |
  |  | 7668|      0|        TARGET(INSTRUMENTED_POP_JUMP_IF_NONE) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 7669|       |            #if _Py_TAIL_CALL_INTERP
  |  | 7670|       |            int opcode = INSTRUMENTED_POP_JUMP_IF_NONE;
  |  | 7671|       |            (void)(opcode);
  |  | 7672|       |            #endif
  |  | 7673|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 7674|      0|            (void)this_instr;
  |  | 7675|      0|            frame->instr_ptr = next_instr;
  |  | 7676|      0|            next_instr += 2;
  |  | 7677|      0|            INSTRUCTION_STATS(INSTRUMENTED_POP_JUMP_IF_NONE);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 7678|      0|            _PyStackRef value;
  |  | 7679|       |            /* Skip 1 cache entry */
  |  | 7680|      0|            value = stack_pointer[-1];
  |  | 7681|      0|            int jump = PyStackRef_IsNone(value);
  |  |  ------------------
  |  |  |  |  483|      0|#define PyStackRef_IsNone(REF) ((REF).bits == (((uintptr_t)&_Py_NoneStruct) | Py_TAG_REFCNT))
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7682|      0|            RECORD_BRANCH_TAKEN(this_instr[1].cache, jump);
  |  |  ------------------
  |  |  |  |  373|      0|    FT_ATOMIC_STORE_UINT16_RELAXED(       \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define FT_ATOMIC_STORE_UINT16_RELAXED(value, new_value) value = new_value
  |  |  |  |  ------------------
  |  |  |  |  374|      0|        bitset, (FT_ATOMIC_LOAD_UINT16_RELAXED(bitset) << 1) | (flag))
  |  |  ------------------
  |  | 7683|      0|            if (jump) {
  |  |  ------------------
  |  |  |  Branch (7683:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 7684|      0|                INSTRUMENTED_JUMP(this_instr, next_instr + oparg, PY_MONITORING_EVENT_BRANCH_RIGHT);
  |  |  ------------------
  |  |  |  |  389|      0|#define INSTRUMENTED_JUMP(src, dest, event) \
  |  |  |  |  390|      0|do { \
  |  |  |  |  391|      0|    if (tstate->tracing) {\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (391:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  392|      0|        next_instr = dest; \
  |  |  |  |  393|      0|    } else { \
  |  |  |  |  394|      0|        _PyFrame_SetStackPointer(frame, stack_pointer); \
  |  |  |  |  395|      0|        next_instr = _Py_call_instrumentation_jump(this_instr, tstate, event, frame, src, dest); \
  |  |  |  |  396|      0|        stack_pointer = _PyFrame_GetStackPointer(frame); \
  |  |  |  |  397|      0|        if (next_instr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (397:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  398|      0|            next_instr = (dest)+1; \
  |  |  |  |  399|      0|            JUMP_TO_LABEL(error); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  |  |  ------------------
  |  |  |  |  400|      0|        } \
  |  |  |  |  401|      0|    } \
  |  |  |  |  402|      0|} while (0);
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (402:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7685|      0|            }
  |  | 7686|      0|            else {
  |  | 7687|      0|                stack_pointer += -1;
  |  | 7688|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 7689|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7690|      0|                PyStackRef_CLOSE(value);
  |  | 7691|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7692|      0|                stack_pointer += 1;
  |  | 7693|      0|            }
  |  | 7694|      0|            stack_pointer += -1;
  |  | 7695|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 7696|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (7696:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 7697|      0|        }
  |  | 7698|       |
  |  | 7699|      0|        TARGET(INSTRUMENTED_POP_JUMP_IF_NOT_NONE) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 7700|       |            #if _Py_TAIL_CALL_INTERP
  |  | 7701|       |            int opcode = INSTRUMENTED_POP_JUMP_IF_NOT_NONE;
  |  | 7702|       |            (void)(opcode);
  |  | 7703|       |            #endif
  |  | 7704|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 7705|      0|            (void)this_instr;
  |  | 7706|      0|            frame->instr_ptr = next_instr;
  |  | 7707|      0|            next_instr += 2;
  |  | 7708|      0|            INSTRUCTION_STATS(INSTRUMENTED_POP_JUMP_IF_NOT_NONE);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 7709|      0|            _PyStackRef value;
  |  | 7710|       |            /* Skip 1 cache entry */
  |  | 7711|      0|            value = stack_pointer[-1];
  |  | 7712|      0|            int jump = !PyStackRef_IsNone(value);
  |  |  ------------------
  |  |  |  |  483|      0|#define PyStackRef_IsNone(REF) ((REF).bits == (((uintptr_t)&_Py_NoneStruct) | Py_TAG_REFCNT))
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7713|      0|            RECORD_BRANCH_TAKEN(this_instr[1].cache, jump);
  |  |  ------------------
  |  |  |  |  373|      0|    FT_ATOMIC_STORE_UINT16_RELAXED(       \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define FT_ATOMIC_STORE_UINT16_RELAXED(value, new_value) value = new_value
  |  |  |  |  ------------------
  |  |  |  |  374|      0|        bitset, (FT_ATOMIC_LOAD_UINT16_RELAXED(bitset) << 1) | (flag))
  |  |  ------------------
  |  | 7714|      0|            if (jump) {
  |  |  ------------------
  |  |  |  Branch (7714:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 7715|      0|                stack_pointer += -1;
  |  | 7716|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 7717|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7718|      0|                PyStackRef_CLOSE(value);
  |  | 7719|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7720|      0|                INSTRUMENTED_JUMP(this_instr, next_instr + oparg, PY_MONITORING_EVENT_BRANCH_RIGHT);
  |  |  ------------------
  |  |  |  |  389|      0|#define INSTRUMENTED_JUMP(src, dest, event) \
  |  |  |  |  390|      0|do { \
  |  |  |  |  391|      0|    if (tstate->tracing) {\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (391:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  392|      0|        next_instr = dest; \
  |  |  |  |  393|      0|    } else { \
  |  |  |  |  394|      0|        _PyFrame_SetStackPointer(frame, stack_pointer); \
  |  |  |  |  395|      0|        next_instr = _Py_call_instrumentation_jump(this_instr, tstate, event, frame, src, dest); \
  |  |  |  |  396|      0|        stack_pointer = _PyFrame_GetStackPointer(frame); \
  |  |  |  |  397|      0|        if (next_instr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (397:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  398|      0|            next_instr = (dest)+1; \
  |  |  |  |  399|      0|            JUMP_TO_LABEL(error); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  |  |  ------------------
  |  |  |  |  400|      0|        } \
  |  |  |  |  401|      0|    } \
  |  |  |  |  402|      0|} while (0);
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (402:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7721|      0|            }
  |  | 7722|      0|            else {
  |  | 7723|      0|                stack_pointer += -1;
  |  | 7724|      0|            }
  |  | 7725|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (7725:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 7726|      0|        }
  |  | 7727|       |
  |  | 7728|      0|        TARGET(INSTRUMENTED_POP_JUMP_IF_TRUE) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 7729|       |            #if _Py_TAIL_CALL_INTERP
  |  | 7730|       |            int opcode = INSTRUMENTED_POP_JUMP_IF_TRUE;
  |  | 7731|       |            (void)(opcode);
  |  | 7732|       |            #endif
  |  | 7733|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 7734|      0|            (void)this_instr;
  |  | 7735|      0|            frame->instr_ptr = next_instr;
  |  | 7736|      0|            next_instr += 2;
  |  | 7737|      0|            INSTRUCTION_STATS(INSTRUMENTED_POP_JUMP_IF_TRUE);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 7738|      0|            _PyStackRef cond;
  |  | 7739|       |            /* Skip 1 cache entry */
  |  | 7740|      0|            cond = stack_pointer[-1];
  |  | 7741|      0|            assert(PyStackRef_BoolCheck(cond));
  |  |  ------------------
  |  |  |  Branch (7741:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 7742|      0|            int jump = PyStackRef_IsTrue(cond);
  |  |  ------------------
  |  |  |  |  481|      0|#define PyStackRef_IsTrue(REF) ((REF).bits == (((uintptr_t)&_Py_TrueStruct) | Py_TAG_REFCNT))
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7743|      0|            RECORD_BRANCH_TAKEN(this_instr[1].cache, jump);
  |  |  ------------------
  |  |  |  |  373|      0|    FT_ATOMIC_STORE_UINT16_RELAXED(       \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define FT_ATOMIC_STORE_UINT16_RELAXED(value, new_value) value = new_value
  |  |  |  |  ------------------
  |  |  |  |  374|      0|        bitset, (FT_ATOMIC_LOAD_UINT16_RELAXED(bitset) << 1) | (flag))
  |  |  ------------------
  |  | 7744|      0|            if (jump) {
  |  |  ------------------
  |  |  |  Branch (7744:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 7745|      0|                INSTRUMENTED_JUMP(this_instr, next_instr + oparg, PY_MONITORING_EVENT_BRANCH_RIGHT);
  |  |  ------------------
  |  |  |  |  389|      0|#define INSTRUMENTED_JUMP(src, dest, event) \
  |  |  |  |  390|      0|do { \
  |  |  |  |  391|      0|    if (tstate->tracing) {\
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (391:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  392|      0|        next_instr = dest; \
  |  |  |  |  393|      0|    } else { \
  |  |  |  |  394|      0|        _PyFrame_SetStackPointer(frame, stack_pointer); \
  |  |  |  |  395|      0|        next_instr = _Py_call_instrumentation_jump(this_instr, tstate, event, frame, src, dest); \
  |  |  |  |  396|      0|        stack_pointer = _PyFrame_GetStackPointer(frame); \
  |  |  |  |  397|      0|        if (next_instr == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (397:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  398|      0|            next_instr = (dest)+1; \
  |  |  |  |  399|      0|            JUMP_TO_LABEL(error); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  |  |  ------------------
  |  |  |  |  400|      0|        } \
  |  |  |  |  401|      0|    } \
  |  |  |  |  402|      0|} while (0);
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (402:10): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7746|      0|            }
  |  | 7747|      0|            stack_pointer += -1;
  |  | 7748|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 7749|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (7749:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 7750|      0|        }
  |  | 7751|       |
  |  | 7752|      0|        TARGET(INSTRUMENTED_RESUME) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 7753|       |            #if _Py_TAIL_CALL_INTERP
  |  | 7754|       |            int opcode = INSTRUMENTED_RESUME;
  |  | 7755|       |            (void)(opcode);
  |  | 7756|       |            #endif
  |  | 7757|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 7758|      0|            (void)this_instr;
  |  | 7759|      0|            frame->instr_ptr = next_instr;
  |  | 7760|      0|            next_instr += 2;
  |  | 7761|      0|            INSTRUCTION_STATS(INSTRUMENTED_RESUME);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 7762|       |            /* Skip 1 cache entry */
  |  | 7763|       |            // _LOAD_BYTECODE
  |  | 7764|      0|            {
  |  | 7765|       |                #ifdef Py_GIL_DISABLED
  |  | 7766|       |                if (frame->tlbc_index !=
  |  | 7767|       |                    ((_PyThreadStateImpl *)tstate)->tlbc_index) {
  |  | 7768|       |                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7769|       |                    _Py_CODEUNIT *bytecode =
  |  | 7770|       |                    _PyEval_GetExecutableCode(tstate, _PyFrame_GetCode(frame));
  |  | 7771|       |                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7772|       |                    if (bytecode == NULL) {
  |  | 7773|       |                        JUMP_TO_LABEL(error);
  |  | 7774|       |                    }
  |  | 7775|       |                    ptrdiff_t off = this_instr - _PyFrame_GetBytecode(frame);
  |  | 7776|       |                    frame->tlbc_index = ((_PyThreadStateImpl *)tstate)->tlbc_index;
  |  | 7777|       |                    frame->instr_ptr = bytecode + off;
  |  | 7778|       |                    next_instr = frame->instr_ptr;
  |  | 7779|       |                    DISPATCH();
  |  | 7780|       |                }
  |  | 7781|       |                #endif
  |  | 7782|      0|            }
  |  | 7783|       |            // _MAYBE_INSTRUMENT
  |  | 7784|      0|            {
  |  | 7785|       |                #ifdef Py_GIL_DISABLED
  |  | 7786|       |
  |  | 7787|       |                int check_instrumentation = 1;
  |  | 7788|       |                #else
  |  | 7789|      0|                int check_instrumentation = (tstate->tracing == 0);
  |  | 7790|      0|                #endif
  |  | 7791|      0|                if (check_instrumentation) {
  |  |  ------------------
  |  |  |  Branch (7791:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 7792|      0|                    uintptr_t global_version = _Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker) & ~_PY_EVAL_EVENTS_MASK;
  |  |  ------------------
  |  |  |  |  357|      0|#define _PY_EVAL_EVENTS_MASK ((1 << _PY_EVAL_EVENTS_BITS)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  |  356|      0|#define _PY_EVAL_EVENTS_BITS 8
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7793|      0|                    uintptr_t code_version = FT_ATOMIC_LOAD_UINTPTR_ACQUIRE(_PyFrame_GetCode(frame)->_co_instrumentation_version);
  |  |  ------------------
  |  |  |  |  152|      0|#define FT_ATOMIC_LOAD_UINTPTR_ACQUIRE(value) value
  |  |  ------------------
  |  | 7794|      0|                    if (code_version != global_version) {
  |  |  ------------------
  |  |  |  Branch (7794:25): [True: 0, False: 0]
  |  |  ------------------
  |  | 7795|      0|                        _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7796|      0|                        int err = _Py_Instrument(_PyFrame_GetCode(frame), tstate->interp);
  |  | 7797|      0|                        stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7798|      0|                        if (err) {
  |  |  ------------------
  |  |  |  Branch (7798:29): [True: 0, False: 0]
  |  |  ------------------
  |  | 7799|      0|                            JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 7800|      0|                        }
  |  | 7801|      0|                        next_instr = this_instr;
  |  | 7802|      0|                        DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (7802:25): [True: 0, False: 0]
  |  |  ------------------
  |  | 7803|      0|                    }
  |  | 7804|      0|                }
  |  | 7805|      0|            }
  |  | 7806|       |            // _CHECK_PERIODIC_IF_NOT_YIELD_FROM
  |  | 7807|      0|            {
  |  | 7808|      0|                if ((oparg & RESUME_OPARG_LOCATION_MASK) < RESUME_AFTER_YIELD_FROM) {
  |  |  ------------------
  |  |  |  |   92|      0|#define RESUME_OPARG_LOCATION_MASK 0x7
  |  |  ------------------
  |  |                               if ((oparg & RESUME_OPARG_LOCATION_MASK) < RESUME_AFTER_YIELD_FROM) {
  |  |  ------------------
  |  |  |  |   88|      0|#define RESUME_AFTER_YIELD_FROM 2
  |  |  ------------------
  |  |  |  Branch (7808:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 7809|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7810|      0|                    int err = check_periodics(tstate);
  |  | 7811|      0|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7812|      0|                    if (err != 0) {
  |  |  ------------------
  |  |  |  Branch (7812:25): [True: 0, False: 0]
  |  |  ------------------
  |  | 7813|      0|                        JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 7814|      0|                    }
  |  | 7815|      0|                }
  |  | 7816|      0|            }
  |  | 7817|       |            // _MONITOR_RESUME
  |  | 7818|      0|            {
  |  | 7819|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7820|      0|                int err = _Py_call_instrumentation(
  |  | 7821|      0|                    tstate, oparg == 0 ? PY_MONITORING_EVENT_PY_START : PY_MONITORING_EVENT_PY_RESUME, frame, this_instr);
  |  |  ------------------
  |  |  |  |   14|      0|#define PY_MONITORING_EVENT_PY_START 0
  |  |  ------------------
  |  |                                   tstate, oparg == 0 ? PY_MONITORING_EVENT_PY_START : PY_MONITORING_EVENT_PY_RESUME, frame, this_instr);
  |  |  ------------------
  |  |  |  |   15|      0|#define PY_MONITORING_EVENT_PY_RESUME 1
  |  |  ------------------
  |  |  |  Branch (7821:29): [True: 0, False: 0]
  |  |  ------------------
  |  | 7822|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7823|      0|                if (err) {
  |  |  ------------------
  |  |  |  Branch (7823:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 7824|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 7825|      0|                }
  |  | 7826|      0|                if (frame->instr_ptr != this_instr) {
  |  |  ------------------
  |  |  |  Branch (7826:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 7827|      0|                    next_instr = frame->instr_ptr;
  |  | 7828|      0|                }
  |  | 7829|      0|            }
  |  | 7830|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (7830:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 7831|      0|        }
  |  | 7832|       |
  |  | 7833|      0|        TARGET(INSTRUMENTED_RETURN_VALUE) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 7834|       |            #if _Py_TAIL_CALL_INTERP
  |  | 7835|       |            int opcode = INSTRUMENTED_RETURN_VALUE;
  |  | 7836|       |            (void)(opcode);
  |  | 7837|       |            #endif
  |  | 7838|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 7839|      0|            (void)this_instr;
  |  | 7840|      0|            frame->instr_ptr = next_instr;
  |  | 7841|      0|            next_instr += 1;
  |  | 7842|      0|            INSTRUCTION_STATS(INSTRUMENTED_RETURN_VALUE);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 7843|      0|            _PyStackRef val;
  |  | 7844|      0|            _PyStackRef value;
  |  | 7845|      0|            _PyStackRef retval;
  |  | 7846|      0|            _PyStackRef res;
  |  | 7847|       |            // _RETURN_VALUE_EVENT
  |  | 7848|      0|            {
  |  | 7849|      0|                val = stack_pointer[-1];
  |  | 7850|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7851|      0|                int err = _Py_call_instrumentation_arg(
  |  | 7852|      0|                    tstate, PY_MONITORING_EVENT_PY_RETURN,
  |  |  ------------------
  |  |  |  |   16|      0|#define PY_MONITORING_EVENT_PY_RETURN 2
  |  |  ------------------
  |  | 7853|      0|                    frame, this_instr, PyStackRef_AsPyObjectBorrow(val));
  |  | 7854|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7855|      0|                if (err) {
  |  |  ------------------
  |  |  |  Branch (7855:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 7856|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 7857|      0|                }
  |  | 7858|      0|            }
  |  | 7859|       |            // _MAKE_HEAP_SAFE
  |  | 7860|      0|            {
  |  | 7861|      0|                value = val;
  |  | 7862|      0|                value = PyStackRef_MakeHeapSafe(value);
  |  | 7863|      0|            }
  |  | 7864|       |            // _RETURN_VALUE
  |  | 7865|      0|            {
  |  | 7866|      0|                retval = value;
  |  | 7867|      0|                assert(frame->owner != FRAME_OWNED_BY_INTERPRETER);
  |  |  ------------------
  |  |  |  Branch (7867:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 7868|      0|                _PyStackRef temp = retval;
  |  | 7869|      0|                stack_pointer += -1;
  |  | 7870|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 7871|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7872|      0|                assert(STACK_LEVEL() == 0);
  |  |  ------------------
  |  |  |  Branch (7872:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 7873|      0|                DTRACE_FUNCTION_RETURN();
  |  |  ------------------
  |  |  |  |  346|      0|#define DTRACE_FUNCTION_RETURN() ((void)0)
  |  |  ------------------
  |  | 7874|      0|                _Py_LeaveRecursiveCallPy(tstate);
  |  | 7875|      0|                _PyInterpreterFrame *dying = frame;
  |  | 7876|      0|                frame = tstate->current_frame = dying->previous;
  |  | 7877|      0|                _PyEval_FrameClearAndPop(tstate, dying);
  |  | 7878|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7879|      0|                LOAD_IP(frame->return_offset);
  |  |  ------------------
  |  |  |  |  419|      0|#define LOAD_IP(OFFSET) do { \
  |  |  |  |  420|      0|        next_instr = frame->instr_ptr + (OFFSET); \
  |  |  |  |  421|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7880|      0|                res = temp;
  |  | 7881|      0|                LLTRACE_RESUME_FRAME();
  |  |  ------------------
  |  |  |  |  188|      0|#define LLTRACE_RESUME_FRAME() ((void)0)
  |  |  ------------------
  |  | 7882|      0|            }
  |  | 7883|      0|            stack_pointer[0] = res;
  |  | 7884|      0|            stack_pointer += 1;
  |  | 7885|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 7886|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (7886:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 7887|      0|        }
  |  | 7888|       |
  |  | 7889|      0|        TARGET(INSTRUMENTED_YIELD_VALUE) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 7890|       |            #if _Py_TAIL_CALL_INTERP
  |  | 7891|       |            int opcode = INSTRUMENTED_YIELD_VALUE;
  |  | 7892|       |            (void)(opcode);
  |  | 7893|       |            #endif
  |  | 7894|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 7895|      0|            (void)this_instr;
  |  | 7896|      0|            frame->instr_ptr = next_instr;
  |  | 7897|      0|            next_instr += 1;
  |  | 7898|      0|            INSTRUCTION_STATS(INSTRUMENTED_YIELD_VALUE);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 7899|      0|            opcode = INSTRUMENTED_YIELD_VALUE;
  |  |  ------------------
  |  |  |  |  237|      0|#define INSTRUMENTED_YIELD_VALUE               246
  |  |  ------------------
  |  | 7900|      0|            _PyStackRef val;
  |  | 7901|      0|            _PyStackRef value;
  |  | 7902|      0|            _PyStackRef retval;
  |  | 7903|       |            // _YIELD_VALUE_EVENT
  |  | 7904|      0|            {
  |  | 7905|      0|                val = stack_pointer[-1];
  |  | 7906|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7907|      0|                int err = _Py_call_instrumentation_arg(
  |  | 7908|      0|                    tstate, PY_MONITORING_EVENT_PY_YIELD,
  |  |  ------------------
  |  |  |  |   17|      0|#define PY_MONITORING_EVENT_PY_YIELD 3
  |  |  ------------------
  |  | 7909|      0|                    frame, this_instr, PyStackRef_AsPyObjectBorrow(val));
  |  | 7910|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7911|      0|                if (err) {
  |  |  ------------------
  |  |  |  Branch (7911:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 7912|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 7913|      0|                }
  |  | 7914|      0|                if (frame->instr_ptr != this_instr) {
  |  |  ------------------
  |  |  |  Branch (7914:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 7915|      0|                    next_instr = frame->instr_ptr;
  |  | 7916|      0|                    DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (7916:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 7917|      0|                }
  |  | 7918|      0|            }
  |  | 7919|       |            // _MAKE_HEAP_SAFE
  |  | 7920|      0|            {
  |  | 7921|      0|                value = val;
  |  | 7922|      0|                value = PyStackRef_MakeHeapSafe(value);
  |  | 7923|      0|            }
  |  | 7924|       |            // _YIELD_VALUE
  |  | 7925|      0|            {
  |  | 7926|      0|                retval = value;
  |  | 7927|      0|                assert(frame->owner != FRAME_OWNED_BY_INTERPRETER);
  |  |  ------------------
  |  |  |  Branch (7927:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 7928|      0|                frame->instr_ptr++;
  |  | 7929|      0|                PyGenObject *gen = _PyGen_GetGeneratorFromFrame(frame);
  |  | 7930|      0|                assert(FRAME_SUSPENDED_YIELD_FROM == FRAME_SUSPENDED + 1);
  |  |  ------------------
  |  |  |  Branch (7930:17): [True: 0, Folded]
  |  |  ------------------
  |  | 7931|      0|                assert(oparg == 0 || oparg == 1);
  |  |  ------------------
  |  |  |  Branch (7931:17): [True: 0, False: 0]
  |  |  |  Branch (7931:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 7932|      0|                _PyStackRef temp = retval;
  |  | 7933|      0|                stack_pointer += -1;
  |  | 7934|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 7935|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7936|      0|                DTRACE_FUNCTION_RETURN();
  |  |  ------------------
  |  |  |  |  346|      0|#define DTRACE_FUNCTION_RETURN() ((void)0)
  |  |  ------------------
  |  | 7937|      0|                tstate->exc_info = gen->gi_exc_state.previous_item;
  |  | 7938|      0|                gen->gi_exc_state.previous_item = NULL;
  |  | 7939|      0|                _Py_LeaveRecursiveCallPy(tstate);
  |  | 7940|      0|                _PyInterpreterFrame *gen_frame = frame;
  |  | 7941|      0|                frame = tstate->current_frame = frame->previous;
  |  | 7942|      0|                gen_frame->previous = NULL;
  |  | 7943|      0|                ((_PyThreadStateImpl *)tstate)->generator_return_kind = GENERATOR_YIELD;
  |  | 7944|      0|                FT_ATOMIC_STORE_INT8_RELEASE(gen->gi_frame_state, FRAME_SUSPENDED + oparg);
  |  |  ------------------
  |  |  |  |  167|      0|#define FT_ATOMIC_STORE_INT8_RELEASE(value, new_value) value = new_value
  |  |  ------------------
  |  | 7945|      0|                assert(INLINE_CACHE_ENTRIES_SEND == INLINE_CACHE_ENTRIES_FOR_ITER);
  |  |  ------------------
  |  |  |  Branch (7945:17): [True: 0, Folded]
  |  |  ------------------
  |  | 7946|       |                #if TIER_ONE && defined(Py_DEBUG)
  |  | 7947|       |                if (!PyStackRef_IsNone(frame->f_executable)) {
  |  | 7948|       |                    Py_ssize_t i = frame->instr_ptr - _PyFrame_GetBytecode(frame);
  |  | 7949|       |                    assert(i >= 0 && i <= INT_MAX);
  |  | 7950|       |                    int opcode = _Py_GetBaseCodeUnit(_PyFrame_GetCode(frame), (int)i).op.code;
  |  | 7951|       |                    assert(opcode == SEND || opcode == FOR_ITER);
  |  | 7952|       |                }
  |  | 7953|       |                #endif
  |  | 7954|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7955|      0|                LOAD_IP(1 + INLINE_CACHE_ENTRIES_SEND);
  |  |  ------------------
  |  |  |  |  419|      0|#define LOAD_IP(OFFSET) do { \
  |  |  |  |  420|      0|        next_instr = frame->instr_ptr + (OFFSET); \
  |  |  |  |  421|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 7956|      0|                value = temp;
  |  | 7957|      0|                LLTRACE_RESUME_FRAME();
  |  |  ------------------
  |  |  |  |  188|      0|#define LLTRACE_RESUME_FRAME() ((void)0)
  |  |  ------------------
  |  | 7958|      0|            }
  |  | 7959|      0|            stack_pointer[0] = value;
  |  | 7960|      0|            stack_pointer += 1;
  |  | 7961|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 7962|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (7962:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 7963|      0|        }
  |  | 7964|       |
  |  | 7965|    443|        TARGET(INTERPRETER_EXIT) {
  |  |  ------------------
  |  |  |  |  132|    443|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 7966|       |            #if _Py_TAIL_CALL_INTERP
  |  | 7967|       |            int opcode = INTERPRETER_EXIT;
  |  | 7968|       |            (void)(opcode);
  |  | 7969|       |            #endif
  |  | 7970|    443|            frame->instr_ptr = next_instr;
  |  | 7971|    443|            next_instr += 1;
  |  | 7972|    443|            INSTRUCTION_STATS(INTERPRETER_EXIT);
  |  |  ------------------
  |  |  |  |   71|    443|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 7973|    443|            _PyStackRef retval;
  |  | 7974|    443|            retval = stack_pointer[-1];
  |  | 7975|    443|            assert(frame->owner == FRAME_OWNED_BY_INTERPRETER);
  |  |  ------------------
  |  |  |  Branch (7975:13): [True: 443, False: 0]
  |  |  ------------------
  |  | 7976|    443|            assert(_PyFrame_IsIncomplete(frame));
  |  |  ------------------
  |  |  |  Branch (7976:13): [True: 443, False: 0]
  |  |  ------------------
  |  | 7977|    443|            tstate->current_frame = frame->previous;
  |  | 7978|    443|            assert(!_PyErr_Occurred(tstate));
  |  |  ------------------
  |  |  |  Branch (7978:13): [True: 443, False: 0]
  |  |  ------------------
  |  | 7979|    443|            PyObject *result = PyStackRef_AsPyObjectSteal(retval);
  |  | 7980|    443|            #if !_Py_TAIL_CALL_INTERP
  |  | 7981|    443|            assert(frame == &entry.frame);
  |  |  ------------------
  |  |  |  Branch (7981:13): [True: 443, False: 0]
  |  |  ------------------
  |  | 7982|    443|            #endif
  |  | 7983|       |            #ifdef _Py_TIER2
  |  | 7984|       |            _PyStackRef executor = frame->localsplus[0];
  |  | 7985|       |            assert(tstate->current_executor == NULL);
  |  | 7986|       |            if (!PyStackRef_IsNull(executor)) {
  |  | 7987|       |                tstate->current_executor = PyStackRef_AsPyObjectBorrow(executor);
  |  | 7988|       |                stack_pointer += -1;
  |  | 7989|       |                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  | 7990|       |                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 7991|       |                PyStackRef_CLOSE(executor);
  |  | 7992|       |                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 7993|       |                stack_pointer += 1;
  |  | 7994|       |            }
  |  | 7995|       |            #endif
  |  | 7996|    443|            LLTRACE_RESUME_FRAME();
  |  |  ------------------
  |  |  |  |  188|    443|#define LLTRACE_RESUME_FRAME() ((void)0)
  |  |  ------------------
  |  | 7997|    443|            return result;
  |  | 7998|    443|        }
  |  | 7999|       |
  |  | 8000|    116|        TARGET(IS_OP) {
  |  |  ------------------
  |  |  |  |  132|    116|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 8001|       |            #if _Py_TAIL_CALL_INTERP
  |  | 8002|       |            int opcode = IS_OP;
  |  | 8003|       |            (void)(opcode);
  |  | 8004|       |            #endif
  |  | 8005|    116|            frame->instr_ptr = next_instr;
  |  | 8006|    116|            next_instr += 1;
  |  | 8007|    116|            INSTRUCTION_STATS(IS_OP);
  |  |  ------------------
  |  |  |  |   71|    116|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 8008|    116|            _PyStackRef left;
  |  | 8009|    116|            _PyStackRef right;
  |  | 8010|    116|            _PyStackRef b;
  |  | 8011|    116|            _PyStackRef l;
  |  | 8012|    116|            _PyStackRef r;
  |  | 8013|    116|            _PyStackRef value;
  |  | 8014|       |            // _IS_OP
  |  | 8015|    116|            {
  |  | 8016|    116|                right = stack_pointer[-1];
  |  | 8017|    116|                left = stack_pointer[-2];
  |  | 8018|    116|                int res = Py_Is(PyStackRef_AsPyObjectBorrow(left), PyStackRef_AsPyObjectBorrow(right)) ^ oparg;
  |  |  ------------------
  |  |  |  |  187|    116|#define Py_Is(x, y) ((x) == (y))
  |  |  ------------------
  |  | 8019|    116|                b = res ? PyStackRef_True : PyStackRef_False;
  |  |  ------------------
  |  |  |  |  471|     94|#define PyStackRef_True ((_PyStackRef){.bits = ((uintptr_t)&_Py_TrueStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     94|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                               b = res ? PyStackRef_True : PyStackRef_False;
  |  |  ------------------
  |  |  |  |  472|    138|#define PyStackRef_False ((_PyStackRef){.bits = ((uintptr_t)&_Py_FalseStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     22|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (8019:21): [True: 94, False: 22]
  |  |  ------------------
  |  | 8020|    116|                l = left;
  |  | 8021|    116|                r = right;
  |  | 8022|    116|            }
  |  | 8023|       |            // _POP_TOP
  |  | 8024|    116|            {
  |  | 8025|    116|                value = r;
  |  | 8026|    116|                stack_pointer[-2] = b;
  |  | 8027|    116|                stack_pointer[-1] = l;
  |  | 8028|    116|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 8029|    116|                PyStackRef_XCLOSE(value);
  |  | 8030|    116|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 8031|    116|            }
  |  | 8032|       |            // _POP_TOP
  |  | 8033|    116|            {
  |  | 8034|    116|                value = l;
  |  | 8035|    116|                stack_pointer += -1;
  |  | 8036|    116|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    116|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 8037|    116|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 8038|    116|                PyStackRef_XCLOSE(value);
  |  | 8039|    116|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 8040|    116|            }
  |  | 8041|    116|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    116|    { \
  |  |  |  |  201|    116|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    116|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    116|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    116|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    116|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    116|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    116|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    116|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 116]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    116|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    116|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    116|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    116|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    116|    }
  |  |  ------------------
  |  |  |  Branch (8041:13): [True: 116, False: 0]
  |  |  ------------------
  |  | 8042|    116|        }
  |  | 8043|       |
  |  | 8044|     42|        TARGET(JUMP_BACKWARD) {
  |  |  ------------------
  |  |  |  |  132|     42|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 8045|       |            #if _Py_TAIL_CALL_INTERP
  |  | 8046|       |            int opcode = JUMP_BACKWARD;
  |  | 8047|       |            (void)(opcode);
  |  | 8048|       |            #endif
  |  | 8049|     42|            frame->instr_ptr = next_instr;
  |  | 8050|     42|            next_instr += 2;
  |  | 8051|     42|            INSTRUCTION_STATS(JUMP_BACKWARD);
  |  |  ------------------
  |  |  |  |   71|     42|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 8052|     42|            PREDICTED_JUMP_BACKWARD:;
  |  | 8053|     42|            _Py_CODEUNIT* const this_instr = next_instr - 2;
  |  | 8054|     42|            (void)this_instr;
  |  | 8055|       |            /* Skip 1 cache entry */
  |  | 8056|       |            // _SPECIALIZE_JUMP_BACKWARD
  |  | 8057|     42|            {
  |  | 8058|     42|                #if ENABLE_SPECIALIZATION
  |  | 8059|     42|                if (this_instr->op.code == JUMP_BACKWARD) {
  |  |  ------------------
  |  |  |  |   87|     42|#define JUMP_BACKWARD                           74
  |  |  ------------------
  |  |  |  Branch (8059:21): [True: 42, False: 0]
  |  |  ------------------
  |  | 8060|     42|                    uint8_t desired = tstate->interp->jit ? JUMP_BACKWARD_JIT : JUMP_BACKWARD_NO_JIT;
  |  |  ------------------
  |  |  |  |  186|      0|#define JUMP_BACKWARD_JIT                      181
  |  |  ------------------
  |  |                                   uint8_t desired = tstate->interp->jit ? JUMP_BACKWARD_JIT : JUMP_BACKWARD_NO_JIT;
  |  |  ------------------
  |  |  |  |  187|     84|#define JUMP_BACKWARD_NO_JIT                   182
  |  |  ------------------
  |  |  |  Branch (8060:39): [True: 0, False: 42]
  |  |  ------------------
  |  | 8061|     42|                    FT_ATOMIC_STORE_UINT8_RELAXED(this_instr->op.code, desired);
  |  |  ------------------
  |  |  |  |  170|     42|#define FT_ATOMIC_STORE_UINT8_RELAXED(value, new_value) value = new_value
  |  |  ------------------
  |  | 8062|     42|                    next_instr = this_instr;
  |  | 8063|     42|                    DISPATCH_SAME_OPARG();
  |  |  ------------------
  |  |  |  |  216|     42|    { \
  |  |  |  |  217|     42|        opcode = next_instr->op.code; \
  |  |  |  |  218|     42|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     42|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  219|     42|        DISPATCH_GOTO_NON_TRACING(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  134|     42|#  define DISPATCH_GOTO_NON_TRACING() goto *DISPATCH_TABLE[opcode];
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  130|     42|#  define DISPATCH_TABLE opcode_targets_table
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  220|     42|    }
  |  |  ------------------
  |  | 8064|     42|                }
  |  | 8065|     42|                #endif
  |  | 8066|     42|            }
  |  | 8067|       |            // _CHECK_PERIODIC
  |  | 8068|     42|            {
  |  | 8069|     42|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 8070|     42|                int err = check_periodics(tstate);
  |  | 8071|     42|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 8072|     42|                if (err != 0) {
  |  |  ------------------
  |  |  |  Branch (8072:21): [True: 0, False: 42]
  |  |  ------------------
  |  | 8073|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 8074|      0|                }
  |  | 8075|     42|            }
  |  | 8076|       |            // _JUMP_BACKWARD_NO_INTERRUPT
  |  | 8077|     42|            {
  |  | 8078|     42|                assert(oparg <= INSTR_OFFSET());
  |  |  ------------------
  |  |  |  Branch (8078:17): [True: 0, False: 42]
  |  |  ------------------
  |  | 8079|      0|                JUMPBY(-oparg);
  |  |  ------------------
  |  |  |  |  260|      0|#define JUMPBY(x)       (next_instr += (x))
  |  |  ------------------
  |  | 8080|      0|            }
  |  | 8081|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (8081:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 8082|      0|        }
  |  | 8083|       |
  |  | 8084|      0|        TARGET(JUMP_BACKWARD_JIT) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 8085|       |            #if _Py_TAIL_CALL_INTERP
  |  | 8086|       |            int opcode = JUMP_BACKWARD_JIT;
  |  | 8087|       |            (void)(opcode);
  |  | 8088|       |            #endif
  |  | 8089|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 8090|      0|            (void)this_instr;
  |  | 8091|      0|            frame->instr_ptr = next_instr;
  |  | 8092|      0|            next_instr += 2;
  |  | 8093|      0|            INSTRUCTION_STATS(JUMP_BACKWARD_JIT);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 8094|      0|            static_assert(1 == 1, "incorrect cache size");
  |  | 8095|       |            /* Skip 1 cache entry */
  |  | 8096|       |            // _CHECK_PERIODIC
  |  | 8097|      0|            {
  |  | 8098|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 8099|      0|                int err = check_periodics(tstate);
  |  | 8100|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 8101|      0|                if (err != 0) {
  |  |  ------------------
  |  |  |  Branch (8101:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 8102|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 8103|      0|                }
  |  | 8104|      0|            }
  |  | 8105|       |            // _JUMP_BACKWARD_NO_INTERRUPT
  |  | 8106|      0|            {
  |  | 8107|      0|                assert(oparg <= INSTR_OFFSET());
  |  |  ------------------
  |  |  |  Branch (8107:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 8108|      0|                JUMPBY(-oparg);
  |  |  ------------------
  |  |  |  |  260|      0|#define JUMPBY(x)       (next_instr += (x))
  |  |  ------------------
  |  | 8109|      0|            }
  |  | 8110|       |            // _JIT
  |  | 8111|      0|            {
  |  | 8112|       |                #ifdef _Py_TIER2
  |  | 8113|       |                bool is_resume = this_instr->op.code == RESUME_CHECK_JIT;
  |  | 8114|       |                _Py_BackoffCounter counter = this_instr[1].counter;
  |  | 8115|       |                if ((backoff_counter_triggers(counter) &&
  |  | 8116|       |                        !IS_JIT_TRACING() &&
  |  | 8117|       |                        (this_instr->op.code == JUMP_BACKWARD_JIT || is_resume)) &&
  |  | 8118|       |                    next_instr->op.code != ENTER_EXECUTOR) {
  |  | 8119|       |                    _Py_CODEUNIT *insert_exec_at = this_instr;
  |  | 8120|       |                    while (oparg > 255) {
  |  | 8121|       |                        oparg >>= 8;
  |  | 8122|       |                        insert_exec_at--;
  |  | 8123|       |                    }
  |  | 8124|       |                    int succ = _PyJit_TryInitializeTracing(tstate, frame, this_instr, insert_exec_at,
  |  | 8125|       |                        is_resume ? insert_exec_at : next_instr, stack_pointer, 0, NULL, oparg, NULL);
  |  | 8126|       |                    if (succ) {
  |  | 8127|       |                        ENTER_TRACING();
  |  | 8128|       |                    }
  |  | 8129|       |                    else {
  |  | 8130|       |                        this_instr[1].counter = restart_backoff_counter(counter);
  |  | 8131|       |                    }
  |  | 8132|       |                }
  |  | 8133|       |                else {
  |  | 8134|       |                    ADVANCE_ADAPTIVE_COUNTER(this_instr[1].counter);
  |  | 8135|       |                }
  |  | 8136|       |                #endif
  |  | 8137|      0|            }
  |  | 8138|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (8138:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 8139|      0|        }
  |  | 8140|       |
  |  | 8141|     65|        TARGET(JUMP_BACKWARD_NO_INTERRUPT) {
  |  |  ------------------
  |  |  |  |  132|     65|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 8142|       |            #if _Py_TAIL_CALL_INTERP
  |  | 8143|       |            int opcode = JUMP_BACKWARD_NO_INTERRUPT;
  |  | 8144|       |            (void)(opcode);
  |  | 8145|       |            #endif
  |  | 8146|     65|            frame->instr_ptr = next_instr;
  |  | 8147|     65|            next_instr += 1;
  |  | 8148|     65|            INSTRUCTION_STATS(JUMP_BACKWARD_NO_INTERRUPT);
  |  |  ------------------
  |  |  |  |   71|     65|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 8149|     65|            assert(oparg <= INSTR_OFFSET());
  |  |  ------------------
  |  |  |  Branch (8149:13): [True: 65, False: 0]
  |  |  ------------------
  |  | 8150|     65|            JUMPBY(-oparg);
  |  |  ------------------
  |  |  |  |  260|     65|#define JUMPBY(x)       (next_instr += (x))
  |  |  ------------------
  |  | 8151|     65|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     65|    { \
  |  |  |  |  201|     65|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     65|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     65|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     65|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     65|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     65|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     65|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     65|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 65]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     65|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     65|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     65|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     65|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     65|    }
  |  |  ------------------
  |  |  |  Branch (8151:13): [True: 65, False: 0]
  |  |  ------------------
  |  | 8152|     65|        }
  |  | 8153|       |
  |  | 8154|    693|        TARGET(JUMP_BACKWARD_NO_JIT) {
  |  |  ------------------
  |  |  |  |  132|    693|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 8155|       |            #if _Py_TAIL_CALL_INTERP
  |  | 8156|       |            int opcode = JUMP_BACKWARD_NO_JIT;
  |  | 8157|       |            (void)(opcode);
  |  | 8158|       |            #endif
  |  | 8159|    693|            frame->instr_ptr = next_instr;
  |  | 8160|    693|            next_instr += 2;
  |  | 8161|    693|            INSTRUCTION_STATS(JUMP_BACKWARD_NO_JIT);
  |  |  ------------------
  |  |  |  |   71|    693|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 8162|    693|            static_assert(1 == 1, "incorrect cache size");
  |  | 8163|       |            /* Skip 1 cache entry */
  |  | 8164|       |            // _CHECK_PERIODIC
  |  | 8165|    693|            {
  |  | 8166|    693|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 8167|    693|                int err = check_periodics(tstate);
  |  | 8168|    693|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 8169|    693|                if (err != 0) {
  |  |  ------------------
  |  |  |  Branch (8169:21): [True: 0, False: 693]
  |  |  ------------------
  |  | 8170|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 8171|      0|                }
  |  | 8172|    693|            }
  |  | 8173|       |            // _JUMP_BACKWARD_NO_INTERRUPT
  |  | 8174|    693|            {
  |  | 8175|    693|                assert(oparg <= INSTR_OFFSET());
  |  |  ------------------
  |  |  |  Branch (8175:17): [True: 693, False: 0]
  |  |  ------------------
  |  | 8176|    693|                JUMPBY(-oparg);
  |  |  ------------------
  |  |  |  |  260|    693|#define JUMPBY(x)       (next_instr += (x))
  |  |  ------------------
  |  | 8177|    693|            }
  |  | 8178|    693|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    693|    { \
  |  |  |  |  201|    693|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    693|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    693|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    693|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    693|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    693|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    693|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    693|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 693]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    693|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    693|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    693|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    693|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    693|    }
  |  |  ------------------
  |  |  |  Branch (8178:13): [True: 693, False: 0]
  |  |  ------------------
  |  | 8179|    693|        }
  |  | 8180|       |
  |  | 8181|     66|        TARGET(JUMP_FORWARD) {
  |  |  ------------------
  |  |  |  |  132|     66|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 8182|       |            #if _Py_TAIL_CALL_INTERP
  |  | 8183|       |            int opcode = JUMP_FORWARD;
  |  | 8184|       |            (void)(opcode);
  |  | 8185|       |            #endif
  |  | 8186|     66|            frame->instr_ptr = next_instr;
  |  | 8187|     66|            next_instr += 1;
  |  | 8188|     66|            INSTRUCTION_STATS(JUMP_FORWARD);
  |  |  ------------------
  |  |  |  |   71|     66|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 8189|     66|            JUMPBY(oparg);
  |  |  ------------------
  |  |  |  |  260|     66|#define JUMPBY(x)       (next_instr += (x))
  |  |  ------------------
  |  | 8190|     66|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     66|    { \
  |  |  |  |  201|     66|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     66|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     66|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     66|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     66|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     66|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     66|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     66|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 66]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     66|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     66|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     66|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     66|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     66|    }
  |  |  ------------------
  |  |  |  Branch (8190:13): [True: 66, False: 0]
  |  |  ------------------
  |  | 8191|     66|        }
  |  | 8192|       |
  |  | 8193|    532|        TARGET(LIST_APPEND) {
  |  |  ------------------
  |  |  |  |  132|    532|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 8194|       |            #if _Py_TAIL_CALL_INTERP
  |  | 8195|       |            int opcode = LIST_APPEND;
  |  | 8196|       |            (void)(opcode);
  |  | 8197|       |            #endif
  |  | 8198|    532|            frame->instr_ptr = next_instr;
  |  | 8199|    532|            next_instr += 1;
  |  | 8200|    532|            INSTRUCTION_STATS(LIST_APPEND);
  |  |  ------------------
  |  |  |  |   71|    532|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 8201|    532|            _PyStackRef list;
  |  | 8202|    532|            _PyStackRef v;
  |  | 8203|    532|            v = stack_pointer[-1];
  |  | 8204|    532|            list = stack_pointer[-2 - (oparg-1)];
  |  | 8205|    532|            int err = _PyList_AppendTakeRef((PyListObject *)PyStackRef_AsPyObjectBorrow(list),
  |  | 8206|    532|                PyStackRef_AsPyObjectSteal(v));
  |  | 8207|    532|            if (err < 0) {
  |  |  ------------------
  |  |  |  Branch (8207:17): [True: 0, False: 532]
  |  |  ------------------
  |  | 8208|      0|                JUMP_TO_LABEL(pop_1_error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 8209|      0|            }
  |  | 8210|    532|            stack_pointer += -1;
  |  | 8211|    532|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    532|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 8212|    532|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    532|    { \
  |  |  |  |  201|    532|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    532|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    532|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    532|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    532|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    532|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    532|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    532|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 532]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    532|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    532|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    532|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    532|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    532|    }
  |  |  ------------------
  |  |  |  Branch (8212:13): [True: 532, False: 0]
  |  |  ------------------
  |  | 8213|    532|        }
  |  | 8214|       |
  |  | 8215|     11|        TARGET(LIST_EXTEND) {
  |  |  ------------------
  |  |  |  |  132|     11|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 8216|       |            #if _Py_TAIL_CALL_INTERP
  |  | 8217|       |            int opcode = LIST_EXTEND;
  |  | 8218|       |            (void)(opcode);
  |  | 8219|       |            #endif
  |  | 8220|     11|            frame->instr_ptr = next_instr;
  |  | 8221|     11|            next_instr += 1;
  |  | 8222|     11|            INSTRUCTION_STATS(LIST_EXTEND);
  |  |  ------------------
  |  |  |  |   71|     11|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 8223|     11|            _PyStackRef list_st;
  |  | 8224|     11|            _PyStackRef iterable_st;
  |  | 8225|     11|            _PyStackRef i;
  |  | 8226|     11|            _PyStackRef value;
  |  | 8227|       |            // _LIST_EXTEND
  |  | 8228|     11|            {
  |  | 8229|     11|                iterable_st = stack_pointer[-1];
  |  | 8230|     11|                list_st = stack_pointer[-2 - (oparg-1)];
  |  | 8231|     11|                PyObject *list = PyStackRef_AsPyObjectBorrow(list_st);
  |  | 8232|     11|                PyObject *iterable = PyStackRef_AsPyObjectBorrow(iterable_st);
  |  | 8233|     11|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 8234|     11|                PyObject *none_val = _PyList_Extend((PyListObject *)list, iterable);
  |  | 8235|     11|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 8236|     11|                if (none_val == NULL) {
  |  |  ------------------
  |  |  |  Branch (8236:21): [True: 0, False: 11]
  |  |  ------------------
  |  | 8237|      0|                    int matches = _PyErr_ExceptionMatches(tstate, PyExc_TypeError);
  |  | 8238|      0|                    if (matches &&
  |  |  ------------------
  |  |  |  Branch (8238:25): [True: 0, False: 0]
  |  |  ------------------
  |  | 8239|      0|                        (Py_TYPE(iterable)->tp_iter == NULL && !PySequence_Check(iterable)))
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (8239:26): [True: 0, False: 0]
  |  |  |  Branch (8239:64): [True: 0, False: 0]
  |  |  ------------------
  |  | 8240|      0|                    {
  |  | 8241|      0|                        _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 8242|      0|                        _PyErr_Clear(tstate);
  |  | 8243|      0|                        _PyErr_Format(tstate, PyExc_TypeError,
  |  | 8244|      0|                                  "Value after * must be an iterable, not %.200s",
  |  | 8245|      0|                                  Py_TYPE(iterable)->tp_name);
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 8246|      0|                        stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 8247|      0|                    }
  |  | 8248|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 8249|      0|                }
  |  | 8250|     11|                assert(Py_IsNone(none_val));
  |  |  ------------------
  |  |  |  Branch (8250:17): [True: 11, False: 0]
  |  |  ------------------
  |  | 8251|     11|                i = iterable_st;
  |  | 8252|     11|            }
  |  | 8253|       |            // _POP_TOP
  |  | 8254|      0|            {
  |  | 8255|     11|                value = i;
  |  | 8256|     11|                stack_pointer += -1;
  |  | 8257|     11|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     11|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 8258|     11|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 8259|     11|                PyStackRef_XCLOSE(value);
  |  | 8260|     11|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 8261|     11|            }
  |  | 8262|     11|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     11|    { \
  |  |  |  |  201|     11|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     11|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     11|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     11|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     11|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     11|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     11|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     11|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 11]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     11|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     11|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     11|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     11|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     11|    }
  |  |  ------------------
  |  |  |  Branch (8262:13): [True: 11, False: 0]
  |  |  ------------------
  |  | 8263|     11|        }
  |  | 8264|       |
  |  | 8265|  1.04k|        TARGET(LOAD_ATTR) {
  |  |  ------------------
  |  |  |  |  132|  1.04k|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 8266|       |            #if _Py_TAIL_CALL_INTERP
  |  | 8267|       |            int opcode = LOAD_ATTR;
  |  | 8268|       |            (void)(opcode);
  |  | 8269|       |            #endif
  |  | 8270|  1.04k|            frame->instr_ptr = next_instr;
  |  | 8271|  1.04k|            next_instr += 10;
  |  | 8272|  1.04k|            INSTRUCTION_STATS(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |   71|  1.04k|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 8273|  1.29k|            PREDICTED_LOAD_ATTR:;
  |  | 8274|  1.29k|            _Py_CODEUNIT* const this_instr = next_instr - 10;
  |  | 8275|  1.29k|            (void)this_instr;
  |  | 8276|  1.29k|            _PyStackRef owner;
  |  | 8277|  1.29k|            _PyStackRef attr;
  |  | 8278|  1.29k|            _PyStackRef *self_or_null;
  |  | 8279|       |            // _SPECIALIZE_LOAD_ATTR
  |  | 8280|  1.29k|            {
  |  | 8281|  1.29k|                owner = stack_pointer[-1];
  |  | 8282|  1.29k|                uint16_t counter = read_u16(&this_instr[1].cache);
  |  | 8283|  1.29k|                (void)counter;
  |  | 8284|  1.29k|                #if ENABLE_SPECIALIZATION
  |  | 8285|  1.29k|                if (ADAPTIVE_COUNTER_TRIGGERS(counter)) {
  |  |  ------------------
  |  |  |  |  354|  1.29k|    backoff_counter_triggers(forge_backoff_counter((COUNTER)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (354:5): [True: 236, False: 1.05k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 8286|    236|                    PyObject *name = GETITEM(FRAME_CO_NAMES, oparg>>1);
  |  |  ------------------
  |  |  |  |  235|    236|#define GETITEM(v, i) PyTuple_GET_ITEM((v), (i))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|    236|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   19|    236|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|    236|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (8286:38): [True: 236, False: 0]
  |  |  ------------------
  |  | 8287|      0|                    next_instr = this_instr;
  |  | 8288|    236|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 8289|    236|                    _Py_Specialize_LoadAttr(owner, next_instr, name);
  |  | 8290|    236|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 8291|    236|                    DISPATCH_SAME_OPARG();
  |  |  ------------------
  |  |  |  |  216|    236|    { \
  |  |  |  |  217|    236|        opcode = next_instr->op.code; \
  |  |  |  |  218|    236|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    236|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  219|    236|        DISPATCH_GOTO_NON_TRACING(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  134|    236|#  define DISPATCH_GOTO_NON_TRACING() goto *DISPATCH_TABLE[opcode];
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  130|    236|#  define DISPATCH_TABLE opcode_targets_table
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  220|    236|    }
  |  |  ------------------
  |  | 8292|    236|                }
  |  | 8293|  1.29k|                OPCODE_DEFERRED_INC(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |   90|  1.29k|#define OPCODE_DEFERRED_INC(opname) ((void)0)
  |  |  ------------------
  |  | 8294|  1.29k|                ADVANCE_ADAPTIVE_COUNTER(this_instr[1].counter);
  |  |  ------------------
  |  |  |  |  357|  1.29k|    do { \
  |  |  |  |  358|  1.29k|        (COUNTER) = advance_backoff_counter((COUNTER)); \
  |  |  |  |  359|  1.29k|    } while (0);
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (359:14): [Folded, False: 1.29k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 8295|  1.29k|                #endif  /* ENABLE_SPECIALIZATION */
  |  | 8296|  1.29k|            }
  |  | 8297|       |            /* Skip 8 cache entries */
  |  | 8298|       |            // _LOAD_ATTR
  |  | 8299|      0|            {
  |  | 8300|  1.29k|                self_or_null = &stack_pointer[0];
  |  | 8301|  1.29k|                PyObject *name = GETITEM(FRAME_CO_NAMES, oparg >> 1);
  |  |  ------------------
  |  |  |  |  235|  1.29k|#define GETITEM(v, i) PyTuple_GET_ITEM((v), (i))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|  1.29k|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   19|  1.29k|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|  1.05k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (8301:34): [True: 1.05k, False: 236]
  |  |  ------------------
  |  | 8302|  1.05k|                if (oparg & 1) {
  |  |  ------------------
  |  |  |  Branch (8302:21): [True: 315, False: 739]
  |  |  ------------------
  |  | 8303|    315|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 8304|    315|                    attr = _Py_LoadAttr_StackRefSteal(tstate, owner, name, self_or_null);
  |  | 8305|    315|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 8306|    315|                    if (PyStackRef_IsNull(attr)) {
  |  |  ------------------
  |  |  |  |  470|    315|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|    315|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    315|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (470:32): [True: 1, False: 314]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 8307|      1|                        JUMP_TO_LABEL(pop_1_error);
  |  |  ------------------
  |  |  |  |  135|      1|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 8308|      0|                    }
  |  | 8309|    315|                }
  |  | 8310|    739|                else {
  |  | 8311|    739|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 8312|    739|                    attr = _PyObject_GetAttrStackRef(PyStackRef_AsPyObjectBorrow(owner), name);
  |  | 8313|    739|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 8314|    739|                    stack_pointer[-1] = attr;
  |  | 8315|    739|                    stack_pointer += (oparg&1);
  |  | 8316|    739|                    ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    739|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 8317|    739|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 8318|    739|                    PyStackRef_CLOSE(owner);
  |  | 8319|    739|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 8320|    739|                    if (PyStackRef_IsNull(attr)) {
  |  |  ------------------
  |  |  |  |  470|    739|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|    739|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    739|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (470:32): [True: 10, False: 729]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 8321|     10|                        JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|     10|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 8322|      0|                    }
  |  | 8323|    729|                    stack_pointer += -(oparg&1);
  |  | 8324|    729|                }
  |  | 8325|  1.05k|            }
  |  | 8326|  1.04k|            stack_pointer[-1] = attr;
  |  | 8327|  1.04k|            stack_pointer += (oparg&1);
  |  | 8328|  1.04k|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|  1.04k|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 8329|  1.04k|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|  1.04k|    { \
  |  |  |  |  201|  1.04k|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|  1.04k|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|  1.04k|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|  1.04k|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|  1.04k|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|  1.04k|        opcode = word.op.code; \
  |  |  |  |  |  |  253|  1.04k|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|  1.04k|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 1.04k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|  1.04k|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|  1.04k|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|  1.04k|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|  1.04k|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|  1.04k|    }
  |  |  ------------------
  |  |  |  Branch (8329:13): [True: 1.04k, False: 0]
  |  |  ------------------
  |  | 8330|  1.04k|        }
  |  | 8331|       |
  |  | 8332|     36|        TARGET(LOAD_ATTR_CLASS) {
  |  |  ------------------
  |  |  |  |  132|     36|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 8333|       |            #if _Py_TAIL_CALL_INTERP
  |  | 8334|       |            int opcode = LOAD_ATTR_CLASS;
  |  | 8335|       |            (void)(opcode);
  |  | 8336|       |            #endif
  |  | 8337|     36|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 8338|     36|            (void)this_instr;
  |  | 8339|     36|            frame->instr_ptr = next_instr;
  |  | 8340|     36|            next_instr += 10;
  |  | 8341|     36|            INSTRUCTION_STATS(LOAD_ATTR_CLASS);
  |  |  ------------------
  |  |  |  |   71|     36|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 8342|     36|            static_assert(INLINE_CACHE_ENTRIES_LOAD_ATTR == 9, "incorrect cache size");
  |  | 8343|     36|            _PyStackRef owner;
  |  | 8344|     36|            _PyStackRef attr;
  |  | 8345|     36|            _PyStackRef *null;
  |  | 8346|       |            /* Skip 1 cache entry */
  |  | 8347|       |            // _CHECK_ATTR_CLASS
  |  | 8348|     36|            {
  |  | 8349|     36|                owner = stack_pointer[-1];
  |  | 8350|     36|                uint32_t type_version = read_u32(&this_instr[2].cache);
  |  | 8351|     36|                PyObject *owner_o = PyStackRef_AsPyObjectBorrow(owner);
  |  | 8352|     36|                if (!PyType_Check(owner_o)) {
  |  |  ------------------
  |  |  |  |  766|     36|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     36|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     36|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (8352:21): [True: 0, False: 36]
  |  |  ------------------
  |  | 8353|      0|                    UPDATE_MISS_STATS(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 8354|      0|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  |  ------------------
  |  |  |  Branch (8354:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 8355|      0|                    JUMP_TO_PREDICTED(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 8356|      0|                }
  |  | 8357|     36|                assert(type_version != 0);
  |  |  ------------------
  |  |  |  Branch (8357:17): [True: 36, False: 0]
  |  |  ------------------
  |  | 8358|     36|                if (FT_ATOMIC_LOAD_UINT_RELAXED(((PyTypeObject *)owner_o)->tp_version_tag) != type_version) {
  |  |  ------------------
  |  |  |  |  189|     36|#define FT_ATOMIC_LOAD_UINT_RELAXED(value) value
  |  |  ------------------
  |  |  |  Branch (8358:21): [True: 0, False: 36]
  |  |  ------------------
  |  | 8359|      0|                    UPDATE_MISS_STATS(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 8360|      0|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  |  ------------------
  |  |  |  Branch (8360:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 8361|      0|                    JUMP_TO_PREDICTED(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 8362|      0|                }
  |  | 8363|     36|            }
  |  | 8364|       |            /* Skip 2 cache entries */
  |  | 8365|       |            // _LOAD_ATTR_CLASS
  |  | 8366|     36|            {
  |  | 8367|     36|                PyObject *descr = read_obj(&this_instr[6].cache);
  |  | 8368|     36|                STAT_INC(LOAD_ATTR, hit);
  |  |  ------------------
  |  |  |  |   73|     36|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 8369|     36|                assert(descr != NULL);
  |  |  ------------------
  |  |  |  Branch (8369:17): [True: 36, False: 0]
  |  |  ------------------
  |  | 8370|     36|                attr = PyStackRef_FromPyObjectNew(descr);
  |  |  ------------------
  |  |  |  |  599|     36|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     36|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     36|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 8371|     36|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 8372|     36|                _PyStackRef tmp = owner;
  |  | 8373|     36|                owner = attr;
  |  | 8374|     36|                stack_pointer[-1] = owner;
  |  | 8375|     36|                PyStackRef_CLOSE(tmp);
  |  | 8376|     36|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 8377|     36|            }
  |  | 8378|       |            // _PUSH_NULL_CONDITIONAL
  |  | 8379|      0|            {
  |  | 8380|     36|                null = &stack_pointer[0];
  |  | 8381|     36|                if (oparg & 1) {
  |  |  ------------------
  |  |  |  Branch (8381:21): [True: 0, False: 36]
  |  |  ------------------
  |  | 8382|      0|                    null[0] = PyStackRef_NULL;
  |  | 8383|      0|                }
  |  | 8384|     36|            }
  |  | 8385|     36|            stack_pointer += (oparg & 1);
  |  | 8386|     36|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     36|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 8387|     36|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     36|    { \
  |  |  |  |  201|     36|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     36|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     36|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     36|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     36|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     36|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     36|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     36|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 36]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     36|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     36|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     36|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     36|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     36|    }
  |  |  ------------------
  |  |  |  Branch (8387:13): [True: 36, False: 0]
  |  |  ------------------
  |  | 8388|     36|        }
  |  | 8389|       |
  |  | 8390|      0|        TARGET(LOAD_ATTR_CLASS_WITH_METACLASS_CHECK) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 8391|       |            #if _Py_TAIL_CALL_INTERP
  |  | 8392|       |            int opcode = LOAD_ATTR_CLASS_WITH_METACLASS_CHECK;
  |  | 8393|       |            (void)(opcode);
  |  | 8394|       |            #endif
  |  | 8395|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 8396|      0|            (void)this_instr;
  |  | 8397|      0|            frame->instr_ptr = next_instr;
  |  | 8398|      0|            next_instr += 10;
  |  | 8399|      0|            INSTRUCTION_STATS(LOAD_ATTR_CLASS_WITH_METACLASS_CHECK);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 8400|      0|            static_assert(INLINE_CACHE_ENTRIES_LOAD_ATTR == 9, "incorrect cache size");
  |  | 8401|      0|            _PyStackRef owner;
  |  | 8402|      0|            _PyStackRef attr;
  |  | 8403|      0|            _PyStackRef *null;
  |  | 8404|       |            /* Skip 1 cache entry */
  |  | 8405|       |            // _GUARD_TYPE_VERSION
  |  | 8406|      0|            {
  |  | 8407|      0|                owner = stack_pointer[-1];
  |  | 8408|      0|                uint32_t type_version = read_u32(&this_instr[2].cache);
  |  | 8409|      0|                PyTypeObject *tp = Py_TYPE(PyStackRef_AsPyObjectBorrow(owner));
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 8410|      0|                assert(type_version != 0);
  |  |  ------------------
  |  |  |  Branch (8410:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 8411|      0|                if (FT_ATOMIC_LOAD_UINT_RELAXED(tp->tp_version_tag) != type_version) {
  |  |  ------------------
  |  |  |  |  189|      0|#define FT_ATOMIC_LOAD_UINT_RELAXED(value) value
  |  |  ------------------
  |  |  |  Branch (8411:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 8412|      0|                    UPDATE_MISS_STATS(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 8413|      0|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  |  ------------------
  |  |  |  Branch (8413:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 8414|      0|                    JUMP_TO_PREDICTED(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 8415|      0|                }
  |  | 8416|      0|            }
  |  | 8417|       |            // _CHECK_ATTR_CLASS
  |  | 8418|      0|            {
  |  | 8419|      0|                uint32_t type_version = read_u32(&this_instr[4].cache);
  |  | 8420|      0|                PyObject *owner_o = PyStackRef_AsPyObjectBorrow(owner);
  |  | 8421|      0|                if (!PyType_Check(owner_o)) {
  |  |  ------------------
  |  |  |  |  766|      0|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (8421:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 8422|      0|                    UPDATE_MISS_STATS(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 8423|      0|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  |  ------------------
  |  |  |  Branch (8423:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 8424|      0|                    JUMP_TO_PREDICTED(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 8425|      0|                }
  |  | 8426|      0|                assert(type_version != 0);
  |  |  ------------------
  |  |  |  Branch (8426:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 8427|      0|                if (FT_ATOMIC_LOAD_UINT_RELAXED(((PyTypeObject *)owner_o)->tp_version_tag) != type_version) {
  |  |  ------------------
  |  |  |  |  189|      0|#define FT_ATOMIC_LOAD_UINT_RELAXED(value) value
  |  |  ------------------
  |  |  |  Branch (8427:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 8428|      0|                    UPDATE_MISS_STATS(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 8429|      0|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  |  ------------------
  |  |  |  Branch (8429:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 8430|      0|                    JUMP_TO_PREDICTED(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 8431|      0|                }
  |  | 8432|      0|            }
  |  | 8433|       |            // _LOAD_ATTR_CLASS
  |  | 8434|      0|            {
  |  | 8435|      0|                PyObject *descr = read_obj(&this_instr[6].cache);
  |  | 8436|      0|                STAT_INC(LOAD_ATTR, hit);
  |  |  ------------------
  |  |  |  |   73|      0|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 8437|      0|                assert(descr != NULL);
  |  |  ------------------
  |  |  |  Branch (8437:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 8438|      0|                attr = PyStackRef_FromPyObjectNew(descr);
  |  |  ------------------
  |  |  |  |  599|      0|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 8439|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 8440|      0|                _PyStackRef tmp = owner;
  |  | 8441|      0|                owner = attr;
  |  | 8442|      0|                stack_pointer[-1] = owner;
  |  | 8443|      0|                PyStackRef_CLOSE(tmp);
  |  | 8444|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 8445|      0|            }
  |  | 8446|       |            // _PUSH_NULL_CONDITIONAL
  |  | 8447|      0|            {
  |  | 8448|      0|                null = &stack_pointer[0];
  |  | 8449|      0|                if (oparg & 1) {
  |  |  ------------------
  |  |  |  Branch (8449:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 8450|      0|                    null[0] = PyStackRef_NULL;
  |  | 8451|      0|                }
  |  | 8452|      0|            }
  |  | 8453|      0|            stack_pointer += (oparg & 1);
  |  | 8454|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 8455|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (8455:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 8456|      0|        }
  |  | 8457|       |
  |  | 8458|      0|        TARGET(LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 8459|       |            #if _Py_TAIL_CALL_INTERP
  |  | 8460|       |            int opcode = LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN;
  |  | 8461|       |            (void)(opcode);
  |  | 8462|       |            #endif
  |  | 8463|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 8464|      0|            (void)this_instr;
  |  | 8465|      0|            frame->instr_ptr = next_instr;
  |  | 8466|      0|            next_instr += 10;
  |  | 8467|      0|            INSTRUCTION_STATS(LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 8468|      0|            static_assert(INLINE_CACHE_ENTRIES_LOAD_ATTR == 9, "incorrect cache size");
  |  | 8469|      0|            _PyStackRef owner;
  |  | 8470|      0|            _PyStackRef new_frame;
  |  | 8471|       |            /* Skip 1 cache entry */
  |  | 8472|       |            // _GUARD_TYPE_VERSION
  |  | 8473|      0|            {
  |  | 8474|      0|                owner = stack_pointer[-1];
  |  | 8475|      0|                uint32_t type_version = read_u32(&this_instr[2].cache);
  |  | 8476|      0|                PyTypeObject *tp = Py_TYPE(PyStackRef_AsPyObjectBorrow(owner));
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 8477|      0|                assert(type_version != 0);
  |  |  ------------------
  |  |  |  Branch (8477:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 8478|      0|                if (FT_ATOMIC_LOAD_UINT_RELAXED(tp->tp_version_tag) != type_version) {
  |  |  ------------------
  |  |  |  |  189|      0|#define FT_ATOMIC_LOAD_UINT_RELAXED(value) value
  |  |  ------------------
  |  |  |  Branch (8478:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 8479|      0|                    UPDATE_MISS_STATS(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 8480|      0|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  |  ------------------
  |  |  |  Branch (8480:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 8481|      0|                    JUMP_TO_PREDICTED(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 8482|      0|                }
  |  | 8483|      0|            }
  |  | 8484|       |            // _CHECK_PEP_523
  |  | 8485|      0|            {
  |  | 8486|      0|                if (IS_PEP523_HOOKED(tstate)) {
  |  |  ------------------
  |  |  |  |  517|      0|#define IS_PEP523_HOOKED(tstate) (tstate->interp->eval_frame != NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (517:34): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 8487|      0|                    UPDATE_MISS_STATS(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 8488|      0|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  |  ------------------
  |  |  |  Branch (8488:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 8489|      0|                    JUMP_TO_PREDICTED(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 8490|      0|                }
  |  | 8491|      0|            }
  |  | 8492|       |            // _LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN_FRAME
  |  | 8493|      0|            {
  |  | 8494|      0|                uint32_t func_version = read_u32(&this_instr[4].cache);
  |  | 8495|      0|                PyObject *getattribute = read_obj(&this_instr[6].cache);
  |  | 8496|      0|                assert((oparg & 1) == 0);
  |  |  ------------------
  |  |  |  Branch (8496:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 8497|      0|                assert(Py_IS_TYPE(getattribute, &PyFunction_Type));
  |  |  ------------------
  |  |  |  Branch (8497:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 8498|      0|                PyFunctionObject *f = (PyFunctionObject *)getattribute;
  |  | 8499|      0|                assert(func_version != 0);
  |  |  ------------------
  |  |  |  Branch (8499:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 8500|      0|                if (f->func_version != func_version) {
  |  |  ------------------
  |  |  |  Branch (8500:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 8501|      0|                    UPDATE_MISS_STATS(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 8502|      0|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  |  ------------------
  |  |  |  Branch (8502:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 8503|      0|                    JUMP_TO_PREDICTED(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 8504|      0|                }
  |  | 8505|      0|                PyCodeObject *code = (PyCodeObject *)f->func_code;
  |  | 8506|      0|                assert(code->co_argcount == 2);
  |  |  ------------------
  |  |  |  Branch (8506:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 8507|      0|                if (!_PyThreadState_HasStackSpace(tstate, code->co_framesize)) {
  |  |  ------------------
  |  |  |  Branch (8507:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 8508|      0|                    UPDATE_MISS_STATS(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 8509|      0|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  |  ------------------
  |  |  |  Branch (8509:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 8510|      0|                    JUMP_TO_PREDICTED(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 8511|      0|                }
  |  | 8512|      0|                STAT_INC(LOAD_ATTR, hit);
  |  |  ------------------
  |  |  |  |   73|      0|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 8513|      0|                PyObject *name = GETITEM(FRAME_CO_NAMES, oparg >> 1);
  |  |  ------------------
  |  |  |  |  235|      0|#define GETITEM(v, i) PyTuple_GET_ITEM((v), (i))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   19|      0|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (8513:34): [True: 0, False: 0]
  |  |  ------------------
  |  | 8514|      0|                _PyInterpreterFrame *pushed_frame = _PyFrame_PushUnchecked(
  |  | 8515|      0|                    tstate, PyStackRef_FromPyObjectNew(f), 2, frame);
  |  |  ------------------
  |  |  |  |  599|      0|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 8516|      0|                pushed_frame->localsplus[0] = owner;
  |  | 8517|      0|                pushed_frame->localsplus[1] = PyStackRef_FromPyObjectNew(name);
  |  |  ------------------
  |  |  |  |  599|      0|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 8518|      0|                new_frame = PyStackRef_Wrap(pushed_frame);
  |  | 8519|      0|            }
  |  | 8520|       |            // _SAVE_RETURN_OFFSET
  |  | 8521|      0|            {
  |  | 8522|      0|                #if TIER_ONE
  |  | 8523|      0|                frame->return_offset = (uint16_t)(next_instr - this_instr);
  |  | 8524|      0|                #endif
  |  | 8525|       |                #if TIER_TWO
  |  | 8526|       |                frame->return_offset = oparg;
  |  | 8527|       |                #endif
  |  | 8528|      0|            }
  |  | 8529|       |            // _PUSH_FRAME
  |  | 8530|      0|            {
  |  | 8531|      0|                assert(!IS_PEP523_HOOKED(tstate));
  |  |  ------------------
  |  |  |  Branch (8531:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 8532|      0|                _PyInterpreterFrame *temp = PyStackRef_Unwrap(new_frame);
  |  | 8533|      0|                stack_pointer += -1;
  |  | 8534|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 8535|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 8536|      0|                assert(temp->previous == frame || temp->previous->previous == frame);
  |  |  ------------------
  |  |  |  Branch (8536:17): [True: 0, False: 0]
  |  |  |  Branch (8536:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 8537|      0|                CALL_STAT_INC(inlined_py_calls);
  |  |  ------------------
  |  |  |  |   76|      0|#define CALL_STAT_INC(name) ((void)0)
  |  |  ------------------
  |  | 8538|      0|                frame = tstate->current_frame = temp;
  |  | 8539|      0|                tstate->py_recursion_remaining--;
  |  | 8540|      0|                LOAD_SP();
  |  |  ------------------
  |  |  |  |  425|      0|#define LOAD_SP() \
  |  |  |  |  426|      0|stack_pointer = _PyFrame_GetStackPointer(frame)
  |  |  ------------------
  |  | 8541|      0|                LOAD_IP(0);
  |  |  ------------------
  |  |  |  |  419|      0|#define LOAD_IP(OFFSET) do { \
  |  |  |  |  420|      0|        next_instr = frame->instr_ptr + (OFFSET); \
  |  |  |  |  421|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 8542|      0|                DTRACE_FUNCTION_ENTRY();
  |  |  ------------------
  |  |  |  |  345|      0|#define DTRACE_FUNCTION_ENTRY() ((void)0)
  |  |  ------------------
  |  | 8543|      0|                LLTRACE_RESUME_FRAME();
  |  |  ------------------
  |  |  |  |  188|      0|#define LLTRACE_RESUME_FRAME() ((void)0)
  |  |  ------------------
  |  | 8544|      0|            }
  |  | 8545|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (8545:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 8546|      0|        }
  |  | 8547|       |
  |  | 8548|  1.12k|        TARGET(LOAD_ATTR_INSTANCE_VALUE) {
  |  |  ------------------
  |  |  |  |  132|  1.12k|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 8549|       |            #if _Py_TAIL_CALL_INTERP
  |  | 8550|       |            int opcode = LOAD_ATTR_INSTANCE_VALUE;
  |  | 8551|       |            (void)(opcode);
  |  | 8552|       |            #endif
  |  | 8553|  1.12k|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 8554|  1.12k|            (void)this_instr;
  |  | 8555|  1.12k|            frame->instr_ptr = next_instr;
  |  | 8556|  1.12k|            next_instr += 10;
  |  | 8557|  1.12k|            INSTRUCTION_STATS(LOAD_ATTR_INSTANCE_VALUE);
  |  |  ------------------
  |  |  |  |   71|  1.12k|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 8558|  1.12k|            static_assert(INLINE_CACHE_ENTRIES_LOAD_ATTR == 9, "incorrect cache size");
  |  | 8559|  1.12k|            _PyStackRef owner;
  |  | 8560|  1.12k|            _PyStackRef attr;
  |  | 8561|  1.12k|            _PyStackRef o;
  |  | 8562|  1.12k|            _PyStackRef value;
  |  | 8563|  1.12k|            _PyStackRef *null;
  |  | 8564|       |            /* Skip 1 cache entry */
  |  | 8565|       |            // _GUARD_TYPE_VERSION
  |  | 8566|  1.12k|            {
  |  | 8567|  1.12k|                owner = stack_pointer[-1];
  |  | 8568|  1.12k|                uint32_t type_version = read_u32(&this_instr[2].cache);
  |  | 8569|  1.12k|                PyTypeObject *tp = Py_TYPE(PyStackRef_AsPyObjectBorrow(owner));
  |  |  ------------------
  |  |  |  |  213|  1.12k|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|  1.12k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|  1.12k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 8570|  1.12k|                assert(type_version != 0);
  |  |  ------------------
  |  |  |  Branch (8570:17): [True: 1.12k, False: 0]
  |  |  ------------------
  |  | 8571|  1.12k|                if (FT_ATOMIC_LOAD_UINT_RELAXED(tp->tp_version_tag) != type_version) {
  |  |  ------------------
  |  |  |  |  189|  1.12k|#define FT_ATOMIC_LOAD_UINT_RELAXED(value) value
  |  |  ------------------
  |  |  |  Branch (8571:21): [True: 0, False: 1.12k]
  |  |  ------------------
  |  | 8572|      0|                    UPDATE_MISS_STATS(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 8573|      0|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  |  ------------------
  |  |  |  Branch (8573:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 8574|      0|                    JUMP_TO_PREDICTED(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 8575|      0|                }
  |  | 8576|  1.12k|            }
  |  | 8577|       |            // _CHECK_MANAGED_OBJECT_HAS_VALUES
  |  | 8578|  1.12k|            {
  |  | 8579|  1.12k|                PyObject *owner_o = PyStackRef_AsPyObjectBorrow(owner);
  |  | 8580|  1.12k|                assert(Py_TYPE(owner_o)->tp_dictoffset < 0);
  |  |  ------------------
  |  |  |  Branch (8580:17): [True: 1.12k, False: 0]
  |  |  ------------------
  |  | 8581|  1.12k|                assert(Py_TYPE(owner_o)->tp_flags & Py_TPFLAGS_INLINE_VALUES);
  |  |  ------------------
  |  |  |  Branch (8581:17): [True: 1.12k, False: 0]
  |  |  ------------------
  |  | 8582|  1.12k|                if (!FT_ATOMIC_LOAD_UINT8(_PyObject_InlineValues(owner_o)->valid)) {
  |  |  ------------------
  |  |  |  |  154|  1.12k|#define FT_ATOMIC_LOAD_UINT8(value) value
  |  |  ------------------
  |  |  |  Branch (8582:21): [True: 0, False: 1.12k]
  |  |  ------------------
  |  | 8583|      0|                    UPDATE_MISS_STATS(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 8584|      0|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  |  ------------------
  |  |  |  Branch (8584:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 8585|      0|                    JUMP_TO_PREDICTED(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 8586|      0|                }
  |  | 8587|  1.12k|            }
  |  | 8588|       |            // _LOAD_ATTR_INSTANCE_VALUE
  |  | 8589|  1.12k|            {
  |  | 8590|  1.12k|                uint16_t offset = read_u16(&this_instr[4].cache);
  |  | 8591|  1.12k|                PyObject *owner_o = PyStackRef_AsPyObjectBorrow(owner);
  |  | 8592|  1.12k|                PyObject **value_ptr = (PyObject**)(((char *)owner_o) + offset);
  |  | 8593|  1.12k|                PyObject *attr_o = FT_ATOMIC_LOAD_PTR_ACQUIRE(*value_ptr);
  |  |  ------------------
  |  |  |  |  150|  1.12k|#define FT_ATOMIC_LOAD_PTR_ACQUIRE(value) value
  |  |  ------------------
  |  | 8594|  1.12k|                if (attr_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (8594:21): [True: 0, False: 1.12k]
  |  |  ------------------
  |  | 8595|      0|                    UPDATE_MISS_STATS(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 8596|      0|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  |  ------------------
  |  |  |  Branch (8596:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 8597|      0|                    JUMP_TO_PREDICTED(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 8598|      0|                }
  |  | 8599|       |                #ifdef Py_GIL_DISABLED
  |  | 8600|       |                int increfed = _Py_TryIncrefCompareStackRef(value_ptr, attr_o, &attr);
  |  | 8601|       |                if (!increfed) {
  |  | 8602|       |                    if (true) {
  |  | 8603|       |                        UPDATE_MISS_STATS(LOAD_ATTR);
  |  | 8604|       |                        assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  | 8605|       |                        JUMP_TO_PREDICTED(LOAD_ATTR);
  |  | 8606|       |                    }
  |  | 8607|       |                }
  |  | 8608|       |                #else
  |  | 8609|  1.12k|                attr = PyStackRef_FromPyObjectNew(attr_o);
  |  |  ------------------
  |  |  |  |  599|  1.12k|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|  1.12k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|  1.12k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 8610|  1.12k|                #endif
  |  | 8611|  1.12k|                STAT_INC(LOAD_ATTR, hit);
  |  |  ------------------
  |  |  |  |   73|  1.12k|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 8612|  1.12k|                o = owner;
  |  | 8613|  1.12k|            }
  |  | 8614|       |            // _POP_TOP
  |  | 8615|      0|            {
  |  | 8616|  1.12k|                value = o;
  |  | 8617|  1.12k|                stack_pointer[-1] = attr;
  |  | 8618|  1.12k|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 8619|  1.12k|                PyStackRef_XCLOSE(value);
  |  | 8620|  1.12k|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 8621|  1.12k|            }
  |  | 8622|       |            /* Skip 5 cache entries */
  |  | 8623|       |            // _PUSH_NULL_CONDITIONAL
  |  | 8624|  1.12k|            {
  |  | 8625|  1.12k|                null = &stack_pointer[0];
  |  | 8626|  1.12k|                if (oparg & 1) {
  |  |  ------------------
  |  |  |  Branch (8626:21): [True: 32, False: 1.09k]
  |  |  ------------------
  |  | 8627|     32|                    null[0] = PyStackRef_NULL;
  |  | 8628|     32|                }
  |  | 8629|  1.12k|            }
  |  | 8630|  1.12k|            stack_pointer += (oparg & 1);
  |  | 8631|  1.12k|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|  1.12k|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 8632|  1.12k|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|  1.12k|    { \
  |  |  |  |  201|  1.12k|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|  1.12k|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|  1.12k|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|  1.12k|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|  1.12k|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|  1.12k|        opcode = word.op.code; \
  |  |  |  |  |  |  253|  1.12k|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|  1.12k|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 1.12k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|  1.12k|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|  1.12k|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|  1.12k|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|  1.12k|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|  1.12k|    }
  |  |  ------------------
  |  |  |  Branch (8632:13): [True: 1.12k, False: 0]
  |  |  ------------------
  |  | 8633|  1.12k|        }
  |  | 8634|       |
  |  | 8635|      0|        TARGET(LOAD_ATTR_METHOD_LAZY_DICT) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 8636|       |            #if _Py_TAIL_CALL_INTERP
  |  | 8637|       |            int opcode = LOAD_ATTR_METHOD_LAZY_DICT;
  |  | 8638|       |            (void)(opcode);
  |  | 8639|       |            #endif
  |  | 8640|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 8641|      0|            (void)this_instr;
  |  | 8642|      0|            frame->instr_ptr = next_instr;
  |  | 8643|      0|            next_instr += 10;
  |  | 8644|      0|            INSTRUCTION_STATS(LOAD_ATTR_METHOD_LAZY_DICT);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 8645|      0|            static_assert(INLINE_CACHE_ENTRIES_LOAD_ATTR == 9, "incorrect cache size");
  |  | 8646|      0|            _PyStackRef owner;
  |  | 8647|      0|            _PyStackRef attr;
  |  | 8648|      0|            _PyStackRef self;
  |  | 8649|       |            /* Skip 1 cache entry */
  |  | 8650|       |            // _GUARD_TYPE_VERSION
  |  | 8651|      0|            {
  |  | 8652|      0|                owner = stack_pointer[-1];
  |  | 8653|      0|                uint32_t type_version = read_u32(&this_instr[2].cache);
  |  | 8654|      0|                PyTypeObject *tp = Py_TYPE(PyStackRef_AsPyObjectBorrow(owner));
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 8655|      0|                assert(type_version != 0);
  |  |  ------------------
  |  |  |  Branch (8655:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 8656|      0|                if (FT_ATOMIC_LOAD_UINT_RELAXED(tp->tp_version_tag) != type_version) {
  |  |  ------------------
  |  |  |  |  189|      0|#define FT_ATOMIC_LOAD_UINT_RELAXED(value) value
  |  |  ------------------
  |  |  |  Branch (8656:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 8657|      0|                    UPDATE_MISS_STATS(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 8658|      0|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  |  ------------------
  |  |  |  Branch (8658:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 8659|      0|                    JUMP_TO_PREDICTED(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 8660|      0|                }
  |  | 8661|      0|            }
  |  | 8662|       |            // _CHECK_ATTR_METHOD_LAZY_DICT
  |  | 8663|      0|            {
  |  | 8664|      0|                uint16_t dictoffset = read_u16(&this_instr[4].cache);
  |  | 8665|      0|                char *ptr = ((char *)PyStackRef_AsPyObjectBorrow(owner)) + MANAGED_DICT_OFFSET + dictoffset;
  |  |  ------------------
  |  |  |  |  925|      0|#  define MANAGED_DICT_OFFSET    (((Py_ssize_t)sizeof(PyObject *))*-3)
  |  |  ------------------
  |  | 8666|      0|                PyObject *dict = FT_ATOMIC_LOAD_PTR_ACQUIRE(*(PyObject **)ptr);
  |  |  ------------------
  |  |  |  |  150|      0|#define FT_ATOMIC_LOAD_PTR_ACQUIRE(value) value
  |  |  ------------------
  |  | 8667|      0|                if (dict != NULL) {
  |  |  ------------------
  |  |  |  Branch (8667:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 8668|      0|                    UPDATE_MISS_STATS(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 8669|      0|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  |  ------------------
  |  |  |  Branch (8669:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 8670|      0|                    JUMP_TO_PREDICTED(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 8671|      0|                }
  |  | 8672|      0|            }
  |  | 8673|       |            /* Skip 1 cache entry */
  |  | 8674|       |            // _LOAD_ATTR_METHOD_LAZY_DICT
  |  | 8675|      0|            {
  |  | 8676|      0|                PyObject *descr = read_obj(&this_instr[6].cache);
  |  | 8677|      0|                assert(oparg & 1);
  |  |  ------------------
  |  |  |  Branch (8677:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 8678|      0|                STAT_INC(LOAD_ATTR, hit);
  |  |  ------------------
  |  |  |  |   73|      0|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 8679|      0|                assert(descr != NULL);
  |  |  ------------------
  |  |  |  Branch (8679:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 8680|      0|                assert(_PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_METHOD_DESCRIPTOR));
  |  |  ------------------
  |  |  |  Branch (8680:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 8681|      0|                attr = PyStackRef_FromPyObjectNew(descr);
  |  |  ------------------
  |  |  |  |  599|      0|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 8682|      0|                self = owner;
  |  | 8683|      0|            }
  |  | 8684|      0|            stack_pointer[-1] = attr;
  |  | 8685|      0|            stack_pointer[0] = self;
  |  | 8686|      0|            stack_pointer += 1;
  |  | 8687|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 8688|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (8688:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 8689|      0|        }
  |  | 8690|       |
  |  | 8691|    497|        TARGET(LOAD_ATTR_METHOD_NO_DICT) {
  |  |  ------------------
  |  |  |  |  132|    497|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 8692|       |            #if _Py_TAIL_CALL_INTERP
  |  | 8693|       |            int opcode = LOAD_ATTR_METHOD_NO_DICT;
  |  | 8694|       |            (void)(opcode);
  |  | 8695|       |            #endif
  |  | 8696|    497|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 8697|    497|            (void)this_instr;
  |  | 8698|    497|            frame->instr_ptr = next_instr;
  |  | 8699|    497|            next_instr += 10;
  |  | 8700|    497|            INSTRUCTION_STATS(LOAD_ATTR_METHOD_NO_DICT);
  |  |  ------------------
  |  |  |  |   71|    497|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 8701|    497|            static_assert(INLINE_CACHE_ENTRIES_LOAD_ATTR == 9, "incorrect cache size");
  |  | 8702|    497|            _PyStackRef owner;
  |  | 8703|    497|            _PyStackRef attr;
  |  | 8704|    497|            _PyStackRef self;
  |  | 8705|       |            /* Skip 1 cache entry */
  |  | 8706|       |            // _GUARD_TYPE_VERSION
  |  | 8707|    497|            {
  |  | 8708|    497|                owner = stack_pointer[-1];
  |  | 8709|    497|                uint32_t type_version = read_u32(&this_instr[2].cache);
  |  | 8710|    497|                PyTypeObject *tp = Py_TYPE(PyStackRef_AsPyObjectBorrow(owner));
  |  |  ------------------
  |  |  |  |  213|    497|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    497|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    497|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 8711|    497|                assert(type_version != 0);
  |  |  ------------------
  |  |  |  Branch (8711:17): [True: 497, False: 0]
  |  |  ------------------
  |  | 8712|    497|                if (FT_ATOMIC_LOAD_UINT_RELAXED(tp->tp_version_tag) != type_version) {
  |  |  ------------------
  |  |  |  |  189|    497|#define FT_ATOMIC_LOAD_UINT_RELAXED(value) value
  |  |  ------------------
  |  |  |  Branch (8712:21): [True: 0, False: 497]
  |  |  ------------------
  |  | 8713|      0|                    UPDATE_MISS_STATS(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 8714|      0|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  |  ------------------
  |  |  |  Branch (8714:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 8715|      0|                    JUMP_TO_PREDICTED(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 8716|      0|                }
  |  | 8717|    497|            }
  |  | 8718|       |            /* Skip 2 cache entries */
  |  | 8719|       |            // _LOAD_ATTR_METHOD_NO_DICT
  |  | 8720|    497|            {
  |  | 8721|    497|                PyObject *descr = read_obj(&this_instr[6].cache);
  |  | 8722|    497|                assert(oparg & 1);
  |  |  ------------------
  |  |  |  Branch (8722:17): [True: 497, False: 0]
  |  |  ------------------
  |  | 8723|    497|                assert(Py_TYPE(PyStackRef_AsPyObjectBorrow(owner))->tp_dictoffset == 0);
  |  |  ------------------
  |  |  |  Branch (8723:17): [True: 497, False: 0]
  |  |  ------------------
  |  | 8724|    497|                STAT_INC(LOAD_ATTR, hit);
  |  |  ------------------
  |  |  |  |   73|    497|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 8725|    497|                assert(descr != NULL);
  |  |  ------------------
  |  |  |  Branch (8725:17): [True: 497, False: 0]
  |  |  ------------------
  |  | 8726|    497|                assert(_PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_METHOD_DESCRIPTOR));
  |  |  ------------------
  |  |  |  Branch (8726:17): [True: 497, False: 0]
  |  |  ------------------
  |  | 8727|    497|                attr = PyStackRef_FromPyObjectNew(descr);
  |  |  ------------------
  |  |  |  |  599|    497|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    497|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    497|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 8728|    497|                self = owner;
  |  | 8729|    497|            }
  |  | 8730|      0|            stack_pointer[-1] = attr;
  |  | 8731|    497|            stack_pointer[0] = self;
  |  | 8732|    497|            stack_pointer += 1;
  |  | 8733|    497|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    497|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 8734|    497|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    497|    { \
  |  |  |  |  201|    497|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    497|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    497|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    497|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    497|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    497|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    497|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    497|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 497]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    497|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    497|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    497|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    497|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    497|    }
  |  |  ------------------
  |  |  |  Branch (8734:13): [True: 497, False: 0]
  |  |  ------------------
  |  | 8735|    497|        }
  |  | 8736|       |
  |  | 8737|     90|        TARGET(LOAD_ATTR_METHOD_WITH_VALUES) {
  |  |  ------------------
  |  |  |  |  132|     90|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 8738|       |            #if _Py_TAIL_CALL_INTERP
  |  | 8739|       |            int opcode = LOAD_ATTR_METHOD_WITH_VALUES;
  |  | 8740|       |            (void)(opcode);
  |  | 8741|       |            #endif
  |  | 8742|     90|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 8743|     90|            (void)this_instr;
  |  | 8744|     90|            frame->instr_ptr = next_instr;
  |  | 8745|     90|            next_instr += 10;
  |  | 8746|     90|            INSTRUCTION_STATS(LOAD_ATTR_METHOD_WITH_VALUES);
  |  |  ------------------
  |  |  |  |   71|     90|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 8747|     90|            static_assert(INLINE_CACHE_ENTRIES_LOAD_ATTR == 9, "incorrect cache size");
  |  | 8748|     90|            _PyStackRef owner;
  |  | 8749|     90|            _PyStackRef attr;
  |  | 8750|     90|            _PyStackRef self;
  |  | 8751|       |            /* Skip 1 cache entry */
  |  | 8752|       |            // _GUARD_TYPE_VERSION
  |  | 8753|     90|            {
  |  | 8754|     90|                owner = stack_pointer[-1];
  |  | 8755|     90|                uint32_t type_version = read_u32(&this_instr[2].cache);
  |  | 8756|     90|                PyTypeObject *tp = Py_TYPE(PyStackRef_AsPyObjectBorrow(owner));
  |  |  ------------------
  |  |  |  |  213|     90|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     90|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     90|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 8757|     90|                assert(type_version != 0);
  |  |  ------------------
  |  |  |  Branch (8757:17): [True: 90, False: 0]
  |  |  ------------------
  |  | 8758|     90|                if (FT_ATOMIC_LOAD_UINT_RELAXED(tp->tp_version_tag) != type_version) {
  |  |  ------------------
  |  |  |  |  189|     90|#define FT_ATOMIC_LOAD_UINT_RELAXED(value) value
  |  |  ------------------
  |  |  |  Branch (8758:21): [True: 0, False: 90]
  |  |  ------------------
  |  | 8759|      0|                    UPDATE_MISS_STATS(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 8760|      0|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  |  ------------------
  |  |  |  Branch (8760:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 8761|      0|                    JUMP_TO_PREDICTED(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 8762|      0|                }
  |  | 8763|     90|            }
  |  | 8764|       |            // _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT
  |  | 8765|     90|            {
  |  | 8766|     90|                PyObject *owner_o = PyStackRef_AsPyObjectBorrow(owner);
  |  | 8767|     90|                assert(Py_TYPE(owner_o)->tp_flags & Py_TPFLAGS_INLINE_VALUES);
  |  |  ------------------
  |  |  |  Branch (8767:17): [True: 90, False: 0]
  |  |  ------------------
  |  | 8768|     90|                PyDictValues *ivs = _PyObject_InlineValues(owner_o);
  |  | 8769|     90|                if (!FT_ATOMIC_LOAD_UINT8(ivs->valid)) {
  |  |  ------------------
  |  |  |  |  154|     90|#define FT_ATOMIC_LOAD_UINT8(value) value
  |  |  ------------------
  |  |  |  Branch (8769:21): [True: 0, False: 90]
  |  |  ------------------
  |  | 8770|      0|                    UPDATE_MISS_STATS(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 8771|      0|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  |  ------------------
  |  |  |  Branch (8771:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 8772|      0|                    JUMP_TO_PREDICTED(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 8773|      0|                }
  |  | 8774|     90|            }
  |  | 8775|       |            // _GUARD_KEYS_VERSION
  |  | 8776|     90|            {
  |  | 8777|     90|                uint32_t keys_version = read_u32(&this_instr[4].cache);
  |  | 8778|     90|                PyTypeObject *owner_cls = Py_TYPE(PyStackRef_AsPyObjectBorrow(owner));
  |  |  ------------------
  |  |  |  |  213|     90|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     90|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     90|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 8779|     90|                PyHeapTypeObject *owner_heap_type = (PyHeapTypeObject *)owner_cls;
  |  | 8780|     90|                PyDictKeysObject *keys = owner_heap_type->ht_cached_keys;
  |  | 8781|     90|                if (FT_ATOMIC_LOAD_UINT32_RELAXED(keys->dk_version) != keys_version) {
  |  |  ------------------
  |  |  |  |  159|     90|#define FT_ATOMIC_LOAD_UINT32_RELAXED(value) value
  |  |  ------------------
  |  |  |  Branch (8781:21): [True: 0, False: 90]
  |  |  ------------------
  |  | 8782|      0|                    UPDATE_MISS_STATS(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 8783|      0|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  |  ------------------
  |  |  |  Branch (8783:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 8784|      0|                    JUMP_TO_PREDICTED(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 8785|      0|                }
  |  | 8786|     90|            }
  |  | 8787|       |            // _LOAD_ATTR_METHOD_WITH_VALUES
  |  | 8788|     90|            {
  |  | 8789|     90|                PyObject *descr = read_obj(&this_instr[6].cache);
  |  | 8790|     90|                assert(oparg & 1);
  |  |  ------------------
  |  |  |  Branch (8790:17): [True: 90, False: 0]
  |  |  ------------------
  |  | 8791|     90|                STAT_INC(LOAD_ATTR, hit);
  |  |  ------------------
  |  |  |  |   73|     90|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 8792|     90|                assert(descr != NULL);
  |  |  ------------------
  |  |  |  Branch (8792:17): [True: 90, False: 0]
  |  |  ------------------
  |  | 8793|     90|                assert(_PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_METHOD_DESCRIPTOR));
  |  |  ------------------
  |  |  |  Branch (8793:17): [True: 90, False: 0]
  |  |  ------------------
  |  | 8794|     90|                attr = PyStackRef_FromPyObjectNew(descr);
  |  |  ------------------
  |  |  |  |  599|     90|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     90|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     90|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 8795|     90|                self = owner;
  |  | 8796|     90|            }
  |  | 8797|      0|            stack_pointer[-1] = attr;
  |  | 8798|     90|            stack_pointer[0] = self;
  |  | 8799|     90|            stack_pointer += 1;
  |  | 8800|     90|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     90|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 8801|     90|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     90|    { \
  |  |  |  |  201|     90|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     90|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     90|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     90|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     90|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     90|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     90|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     90|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 90]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     90|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     90|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     90|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     90|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     90|    }
  |  |  ------------------
  |  |  |  Branch (8801:13): [True: 90, False: 0]
  |  |  ------------------
  |  | 8802|     90|        }
  |  | 8803|       |
  |  | 8804|    933|        TARGET(LOAD_ATTR_MODULE) {
  |  |  ------------------
  |  |  |  |  132|    933|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 8805|       |            #if _Py_TAIL_CALL_INTERP
  |  | 8806|       |            int opcode = LOAD_ATTR_MODULE;
  |  | 8807|       |            (void)(opcode);
  |  | 8808|       |            #endif
  |  | 8809|    933|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 8810|    933|            (void)this_instr;
  |  | 8811|    933|            frame->instr_ptr = next_instr;
  |  | 8812|    933|            next_instr += 10;
  |  | 8813|    933|            INSTRUCTION_STATS(LOAD_ATTR_MODULE);
  |  |  ------------------
  |  |  |  |   71|    933|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 8814|    933|            static_assert(INLINE_CACHE_ENTRIES_LOAD_ATTR == 9, "incorrect cache size");
  |  | 8815|    933|            _PyStackRef owner;
  |  | 8816|    933|            _PyStackRef attr;
  |  | 8817|    933|            _PyStackRef o;
  |  | 8818|    933|            _PyStackRef value;
  |  | 8819|    933|            _PyStackRef *null;
  |  | 8820|       |            /* Skip 1 cache entry */
  |  | 8821|       |            // _LOAD_ATTR_MODULE
  |  | 8822|    933|            {
  |  | 8823|    933|                owner = stack_pointer[-1];
  |  | 8824|    933|                uint32_t dict_version = read_u32(&this_instr[2].cache);
  |  | 8825|    933|                uint16_t index = read_u16(&this_instr[4].cache);
  |  | 8826|    933|                PyObject *owner_o = PyStackRef_AsPyObjectBorrow(owner);
  |  | 8827|    933|                if (Py_TYPE(owner_o)->tp_getattro != PyModule_Type.tp_getattro) {
  |  |  ------------------
  |  |  |  |  213|    933|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    933|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    933|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (8827:21): [True: 0, False: 933]
  |  |  ------------------
  |  | 8828|      0|                    UPDATE_MISS_STATS(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 8829|      0|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  |  ------------------
  |  |  |  Branch (8829:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 8830|      0|                    JUMP_TO_PREDICTED(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 8831|      0|                }
  |  | 8832|    933|                PyDictObject *dict = (PyDictObject *)((PyModuleObject *)owner_o)->md_dict;
  |  | 8833|    933|                assert(dict != NULL);
  |  |  ------------------
  |  |  |  Branch (8833:17): [True: 933, False: 0]
  |  |  ------------------
  |  | 8834|    933|                PyDictKeysObject *keys = FT_ATOMIC_LOAD_PTR_ACQUIRE(dict->ma_keys);
  |  |  ------------------
  |  |  |  |  150|    933|#define FT_ATOMIC_LOAD_PTR_ACQUIRE(value) value
  |  |  ------------------
  |  | 8835|    933|                if (FT_ATOMIC_LOAD_UINT32_RELAXED(keys->dk_version) != dict_version) {
  |  |  ------------------
  |  |  |  |  159|    933|#define FT_ATOMIC_LOAD_UINT32_RELAXED(value) value
  |  |  ------------------
  |  |  |  Branch (8835:21): [True: 243, False: 690]
  |  |  ------------------
  |  | 8836|    243|                    UPDATE_MISS_STATS(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  298|    243|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 8837|    243|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  |  ------------------
  |  |  |  Branch (8837:21): [True: 243, False: 0]
  |  |  ------------------
  |  | 8838|    243|                    JUMP_TO_PREDICTED(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  136|    243|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 8839|      0|                }
  |  | 8840|    933|                assert(keys->dk_kind == DICT_KEYS_UNICODE);
  |  |  ------------------
  |  |  |  Branch (8840:17): [True: 690, False: 0]
  |  |  ------------------
  |  | 8841|    690|                assert(index < FT_ATOMIC_LOAD_SSIZE_RELAXED(keys->dk_nentries));
  |  |  ------------------
  |  |  |  Branch (8841:17): [True: 690, False: 0]
  |  |  ------------------
  |  | 8842|    690|                PyDictUnicodeEntry *ep = DK_UNICODE_ENTRIES(keys) + index;
  |  | 8843|    690|                PyObject *attr_o = FT_ATOMIC_LOAD_PTR_RELAXED(ep->me_value);
  |  |  ------------------
  |  |  |  |  153|    690|#define FT_ATOMIC_LOAD_PTR_RELAXED(value) value
  |  |  ------------------
  |  | 8844|    690|                if (attr_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (8844:21): [True: 0, False: 690]
  |  |  ------------------
  |  | 8845|      0|                    UPDATE_MISS_STATS(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 8846|      0|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  |  ------------------
  |  |  |  Branch (8846:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 8847|      0|                    JUMP_TO_PREDICTED(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 8848|      0|                }
  |  | 8849|       |                #ifdef Py_GIL_DISABLED
  |  | 8850|       |                int increfed = _Py_TryIncrefCompareStackRef(&ep->me_value, attr_o, &attr);
  |  | 8851|       |                if (!increfed) {
  |  | 8852|       |                    if (true) {
  |  | 8853|       |                        UPDATE_MISS_STATS(LOAD_ATTR);
  |  | 8854|       |                        assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  | 8855|       |                        JUMP_TO_PREDICTED(LOAD_ATTR);
  |  | 8856|       |                    }
  |  | 8857|       |                }
  |  | 8858|       |                #else
  |  | 8859|    690|                attr = PyStackRef_FromPyObjectNew(attr_o);
  |  |  ------------------
  |  |  |  |  599|    690|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    690|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    690|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 8860|    690|                #endif
  |  | 8861|    690|                STAT_INC(LOAD_ATTR, hit);
  |  |  ------------------
  |  |  |  |   73|    690|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 8862|    690|                o = owner;
  |  | 8863|    690|            }
  |  | 8864|       |            // _POP_TOP
  |  | 8865|      0|            {
  |  | 8866|    690|                value = o;
  |  | 8867|    690|                stack_pointer[-1] = attr;
  |  | 8868|    690|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 8869|    690|                PyStackRef_XCLOSE(value);
  |  | 8870|    690|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 8871|    690|            }
  |  | 8872|       |            /* Skip 5 cache entries */
  |  | 8873|       |            // _PUSH_NULL_CONDITIONAL
  |  | 8874|    690|            {
  |  | 8875|    690|                null = &stack_pointer[0];
  |  | 8876|    690|                if (oparg & 1) {
  |  |  ------------------
  |  |  |  Branch (8876:21): [True: 447, False: 243]
  |  |  ------------------
  |  | 8877|    447|                    null[0] = PyStackRef_NULL;
  |  | 8878|    447|                }
  |  | 8879|    690|            }
  |  | 8880|    690|            stack_pointer += (oparg & 1);
  |  | 8881|    690|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    690|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 8882|    690|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    690|    { \
  |  |  |  |  201|    690|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    690|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    690|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    690|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    690|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    690|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    690|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    690|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 690]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    690|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    690|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    690|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    690|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    690|    }
  |  |  ------------------
  |  |  |  Branch (8882:13): [True: 690, False: 0]
  |  |  ------------------
  |  | 8883|    690|        }
  |  | 8884|       |
  |  | 8885|      0|        TARGET(LOAD_ATTR_NONDESCRIPTOR_NO_DICT) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 8886|       |            #if _Py_TAIL_CALL_INTERP
  |  | 8887|       |            int opcode = LOAD_ATTR_NONDESCRIPTOR_NO_DICT;
  |  | 8888|       |            (void)(opcode);
  |  | 8889|       |            #endif
  |  | 8890|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 8891|      0|            (void)this_instr;
  |  | 8892|      0|            frame->instr_ptr = next_instr;
  |  | 8893|      0|            next_instr += 10;
  |  | 8894|      0|            INSTRUCTION_STATS(LOAD_ATTR_NONDESCRIPTOR_NO_DICT);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 8895|      0|            static_assert(INLINE_CACHE_ENTRIES_LOAD_ATTR == 9, "incorrect cache size");
  |  | 8896|      0|            _PyStackRef owner;
  |  | 8897|      0|            _PyStackRef attr;
  |  | 8898|       |            /* Skip 1 cache entry */
  |  | 8899|       |            // _GUARD_TYPE_VERSION
  |  | 8900|      0|            {
  |  | 8901|      0|                owner = stack_pointer[-1];
  |  | 8902|      0|                uint32_t type_version = read_u32(&this_instr[2].cache);
  |  | 8903|      0|                PyTypeObject *tp = Py_TYPE(PyStackRef_AsPyObjectBorrow(owner));
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 8904|      0|                assert(type_version != 0);
  |  |  ------------------
  |  |  |  Branch (8904:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 8905|      0|                if (FT_ATOMIC_LOAD_UINT_RELAXED(tp->tp_version_tag) != type_version) {
  |  |  ------------------
  |  |  |  |  189|      0|#define FT_ATOMIC_LOAD_UINT_RELAXED(value) value
  |  |  ------------------
  |  |  |  Branch (8905:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 8906|      0|                    UPDATE_MISS_STATS(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 8907|      0|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  |  ------------------
  |  |  |  Branch (8907:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 8908|      0|                    JUMP_TO_PREDICTED(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 8909|      0|                }
  |  | 8910|      0|            }
  |  | 8911|       |            /* Skip 2 cache entries */
  |  | 8912|       |            // _LOAD_ATTR_NONDESCRIPTOR_NO_DICT
  |  | 8913|      0|            {
  |  | 8914|      0|                PyObject *descr = read_obj(&this_instr[6].cache);
  |  | 8915|      0|                assert((oparg & 1) == 0);
  |  |  ------------------
  |  |  |  Branch (8915:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 8916|      0|                assert(Py_TYPE(PyStackRef_AsPyObjectBorrow(owner))->tp_dictoffset == 0);
  |  |  ------------------
  |  |  |  Branch (8916:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 8917|      0|                STAT_INC(LOAD_ATTR, hit);
  |  |  ------------------
  |  |  |  |   73|      0|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 8918|      0|                assert(descr != NULL);
  |  |  ------------------
  |  |  |  Branch (8918:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 8919|      0|                stack_pointer += -1;
  |  | 8920|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 8921|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 8922|      0|                PyStackRef_CLOSE(owner);
  |  | 8923|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 8924|      0|                attr = PyStackRef_FromPyObjectNew(descr);
  |  |  ------------------
  |  |  |  |  599|      0|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 8925|      0|            }
  |  | 8926|      0|            stack_pointer[0] = attr;
  |  | 8927|      0|            stack_pointer += 1;
  |  | 8928|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 8929|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (8929:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 8930|      0|        }
  |  | 8931|       |
  |  | 8932|      0|        TARGET(LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 8933|       |            #if _Py_TAIL_CALL_INTERP
  |  | 8934|       |            int opcode = LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES;
  |  | 8935|       |            (void)(opcode);
  |  | 8936|       |            #endif
  |  | 8937|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 8938|      0|            (void)this_instr;
  |  | 8939|      0|            frame->instr_ptr = next_instr;
  |  | 8940|      0|            next_instr += 10;
  |  | 8941|      0|            INSTRUCTION_STATS(LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 8942|      0|            static_assert(INLINE_CACHE_ENTRIES_LOAD_ATTR == 9, "incorrect cache size");
  |  | 8943|      0|            _PyStackRef owner;
  |  | 8944|      0|            _PyStackRef attr;
  |  | 8945|       |            /* Skip 1 cache entry */
  |  | 8946|       |            // _GUARD_TYPE_VERSION
  |  | 8947|      0|            {
  |  | 8948|      0|                owner = stack_pointer[-1];
  |  | 8949|      0|                uint32_t type_version = read_u32(&this_instr[2].cache);
  |  | 8950|      0|                PyTypeObject *tp = Py_TYPE(PyStackRef_AsPyObjectBorrow(owner));
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 8951|      0|                assert(type_version != 0);
  |  |  ------------------
  |  |  |  Branch (8951:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 8952|      0|                if (FT_ATOMIC_LOAD_UINT_RELAXED(tp->tp_version_tag) != type_version) {
  |  |  ------------------
  |  |  |  |  189|      0|#define FT_ATOMIC_LOAD_UINT_RELAXED(value) value
  |  |  ------------------
  |  |  |  Branch (8952:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 8953|      0|                    UPDATE_MISS_STATS(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 8954|      0|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  |  ------------------
  |  |  |  Branch (8954:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 8955|      0|                    JUMP_TO_PREDICTED(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 8956|      0|                }
  |  | 8957|      0|            }
  |  | 8958|       |            // _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT
  |  | 8959|      0|            {
  |  | 8960|      0|                PyObject *owner_o = PyStackRef_AsPyObjectBorrow(owner);
  |  | 8961|      0|                assert(Py_TYPE(owner_o)->tp_flags & Py_TPFLAGS_INLINE_VALUES);
  |  |  ------------------
  |  |  |  Branch (8961:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 8962|      0|                PyDictValues *ivs = _PyObject_InlineValues(owner_o);
  |  | 8963|      0|                if (!FT_ATOMIC_LOAD_UINT8(ivs->valid)) {
  |  |  ------------------
  |  |  |  |  154|      0|#define FT_ATOMIC_LOAD_UINT8(value) value
  |  |  ------------------
  |  |  |  Branch (8963:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 8964|      0|                    UPDATE_MISS_STATS(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 8965|      0|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  |  ------------------
  |  |  |  Branch (8965:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 8966|      0|                    JUMP_TO_PREDICTED(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 8967|      0|                }
  |  | 8968|      0|            }
  |  | 8969|       |            // _GUARD_KEYS_VERSION
  |  | 8970|      0|            {
  |  | 8971|      0|                uint32_t keys_version = read_u32(&this_instr[4].cache);
  |  | 8972|      0|                PyTypeObject *owner_cls = Py_TYPE(PyStackRef_AsPyObjectBorrow(owner));
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 8973|      0|                PyHeapTypeObject *owner_heap_type = (PyHeapTypeObject *)owner_cls;
  |  | 8974|      0|                PyDictKeysObject *keys = owner_heap_type->ht_cached_keys;
  |  | 8975|      0|                if (FT_ATOMIC_LOAD_UINT32_RELAXED(keys->dk_version) != keys_version) {
  |  |  ------------------
  |  |  |  |  159|      0|#define FT_ATOMIC_LOAD_UINT32_RELAXED(value) value
  |  |  ------------------
  |  |  |  Branch (8975:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 8976|      0|                    UPDATE_MISS_STATS(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 8977|      0|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  |  ------------------
  |  |  |  Branch (8977:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 8978|      0|                    JUMP_TO_PREDICTED(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 8979|      0|                }
  |  | 8980|      0|            }
  |  | 8981|       |            // _LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES
  |  | 8982|      0|            {
  |  | 8983|      0|                PyObject *descr = read_obj(&this_instr[6].cache);
  |  | 8984|      0|                assert((oparg & 1) == 0);
  |  |  ------------------
  |  |  |  Branch (8984:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 8985|      0|                STAT_INC(LOAD_ATTR, hit);
  |  |  ------------------
  |  |  |  |   73|      0|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 8986|      0|                assert(descr != NULL);
  |  |  ------------------
  |  |  |  Branch (8986:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 8987|      0|                stack_pointer += -1;
  |  | 8988|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 8989|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 8990|      0|                PyStackRef_CLOSE(owner);
  |  | 8991|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 8992|      0|                attr = PyStackRef_FromPyObjectNew(descr);
  |  |  ------------------
  |  |  |  |  599|      0|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 8993|      0|            }
  |  | 8994|      0|            stack_pointer[0] = attr;
  |  | 8995|      0|            stack_pointer += 1;
  |  | 8996|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 8997|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (8997:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 8998|      0|        }
  |  | 8999|       |
  |  | 9000|     56|        TARGET(LOAD_ATTR_PROPERTY) {
  |  |  ------------------
  |  |  |  |  132|     56|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 9001|       |            #if _Py_TAIL_CALL_INTERP
  |  | 9002|       |            int opcode = LOAD_ATTR_PROPERTY;
  |  | 9003|       |            (void)(opcode);
  |  | 9004|       |            #endif
  |  | 9005|     56|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 9006|     56|            (void)this_instr;
  |  | 9007|     56|            frame->instr_ptr = next_instr;
  |  | 9008|     56|            next_instr += 10;
  |  | 9009|     56|            INSTRUCTION_STATS(LOAD_ATTR_PROPERTY);
  |  |  ------------------
  |  |  |  |   71|     56|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 9010|     56|            static_assert(INLINE_CACHE_ENTRIES_LOAD_ATTR == 9, "incorrect cache size");
  |  | 9011|     56|            _PyStackRef owner;
  |  | 9012|     56|            _PyStackRef new_frame;
  |  | 9013|       |            /* Skip 1 cache entry */
  |  | 9014|       |            // _GUARD_TYPE_VERSION
  |  | 9015|     56|            {
  |  | 9016|     56|                owner = stack_pointer[-1];
  |  | 9017|     56|                uint32_t type_version = read_u32(&this_instr[2].cache);
  |  | 9018|     56|                PyTypeObject *tp = Py_TYPE(PyStackRef_AsPyObjectBorrow(owner));
  |  |  ------------------
  |  |  |  |  213|     56|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     56|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     56|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 9019|     56|                assert(type_version != 0);
  |  |  ------------------
  |  |  |  Branch (9019:17): [True: 56, False: 0]
  |  |  ------------------
  |  | 9020|     56|                if (FT_ATOMIC_LOAD_UINT_RELAXED(tp->tp_version_tag) != type_version) {
  |  |  ------------------
  |  |  |  |  189|     56|#define FT_ATOMIC_LOAD_UINT_RELAXED(value) value
  |  |  ------------------
  |  |  |  Branch (9020:21): [True: 0, False: 56]
  |  |  ------------------
  |  | 9021|      0|                    UPDATE_MISS_STATS(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 9022|      0|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  |  ------------------
  |  |  |  Branch (9022:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 9023|      0|                    JUMP_TO_PREDICTED(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 9024|      0|                }
  |  | 9025|     56|            }
  |  | 9026|       |            // _CHECK_PEP_523
  |  | 9027|     56|            {
  |  | 9028|     56|                if (IS_PEP523_HOOKED(tstate)) {
  |  |  ------------------
  |  |  |  |  517|     56|#define IS_PEP523_HOOKED(tstate) (tstate->interp->eval_frame != NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (517:34): [True: 0, False: 56]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 9029|      0|                    UPDATE_MISS_STATS(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 9030|      0|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  |  ------------------
  |  |  |  Branch (9030:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 9031|      0|                    JUMP_TO_PREDICTED(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 9032|      0|                }
  |  | 9033|     56|            }
  |  | 9034|       |            // _LOAD_ATTR_PROPERTY_FRAME
  |  | 9035|     56|            {
  |  | 9036|     56|                uint32_t func_version = read_u32(&this_instr[4].cache);
  |  | 9037|     56|                PyObject *fget = read_obj(&this_instr[6].cache);
  |  | 9038|     56|                assert((oparg & 1) == 0);
  |  |  ------------------
  |  |  |  Branch (9038:17): [True: 56, False: 0]
  |  |  ------------------
  |  | 9039|     56|                assert(Py_IS_TYPE(fget, &PyFunction_Type));
  |  |  ------------------
  |  |  |  Branch (9039:17): [True: 56, False: 0]
  |  |  ------------------
  |  | 9040|     56|                PyFunctionObject *f = (PyFunctionObject *)fget;
  |  | 9041|     56|                if (f->func_version != func_version) {
  |  |  ------------------
  |  |  |  Branch (9041:21): [True: 0, False: 56]
  |  |  ------------------
  |  | 9042|      0|                    UPDATE_MISS_STATS(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 9043|      0|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  |  ------------------
  |  |  |  Branch (9043:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 9044|      0|                    JUMP_TO_PREDICTED(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 9045|      0|                }
  |  | 9046|     56|                PyCodeObject *code = (PyCodeObject *)f->func_code;
  |  | 9047|     56|                if (!_PyThreadState_HasStackSpace(tstate, code->co_framesize)) {
  |  |  ------------------
  |  |  |  Branch (9047:21): [True: 0, False: 56]
  |  |  ------------------
  |  | 9048|      0|                    UPDATE_MISS_STATS(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 9049|      0|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  |  ------------------
  |  |  |  Branch (9049:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 9050|      0|                    JUMP_TO_PREDICTED(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 9051|      0|                }
  |  | 9052|     56|                STAT_INC(LOAD_ATTR, hit);
  |  |  ------------------
  |  |  |  |   73|     56|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 9053|     56|                _PyInterpreterFrame *pushed_frame = _PyFrame_PushUnchecked(tstate, PyStackRef_FromPyObjectNew(fget), 1, frame);
  |  |  ------------------
  |  |  |  |  599|     56|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     56|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     56|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 9054|     56|                pushed_frame->localsplus[0] = owner;
  |  | 9055|     56|                new_frame = PyStackRef_Wrap(pushed_frame);
  |  | 9056|     56|            }
  |  | 9057|       |            // _SAVE_RETURN_OFFSET
  |  | 9058|      0|            {
  |  | 9059|     56|                #if TIER_ONE
  |  | 9060|     56|                frame->return_offset = (uint16_t)(next_instr - this_instr);
  |  | 9061|     56|                #endif
  |  | 9062|       |                #if TIER_TWO
  |  | 9063|       |                frame->return_offset = oparg;
  |  | 9064|       |                #endif
  |  | 9065|     56|            }
  |  | 9066|       |            // _PUSH_FRAME
  |  | 9067|     56|            {
  |  | 9068|     56|                assert(!IS_PEP523_HOOKED(tstate));
  |  |  ------------------
  |  |  |  Branch (9068:17): [True: 56, False: 0]
  |  |  ------------------
  |  | 9069|     56|                _PyInterpreterFrame *temp = PyStackRef_Unwrap(new_frame);
  |  | 9070|     56|                stack_pointer += -1;
  |  | 9071|     56|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     56|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 9072|     56|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 9073|     56|                assert(temp->previous == frame || temp->previous->previous == frame);
  |  |  ------------------
  |  |  |  Branch (9073:17): [True: 56, False: 0]
  |  |  |  Branch (9073:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 9074|     56|                CALL_STAT_INC(inlined_py_calls);
  |  |  ------------------
  |  |  |  |   76|     56|#define CALL_STAT_INC(name) ((void)0)
  |  |  ------------------
  |  | 9075|     56|                frame = tstate->current_frame = temp;
  |  | 9076|     56|                tstate->py_recursion_remaining--;
  |  | 9077|     56|                LOAD_SP();
  |  |  ------------------
  |  |  |  |  425|     56|#define LOAD_SP() \
  |  |  |  |  426|     56|stack_pointer = _PyFrame_GetStackPointer(frame)
  |  |  ------------------
  |  | 9078|     56|                LOAD_IP(0);
  |  |  ------------------
  |  |  |  |  419|     56|#define LOAD_IP(OFFSET) do { \
  |  |  |  |  420|     56|        next_instr = frame->instr_ptr + (OFFSET); \
  |  |  |  |  421|     56|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:14): [Folded, False: 56]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 9079|     56|                DTRACE_FUNCTION_ENTRY();
  |  |  ------------------
  |  |  |  |  345|     56|#define DTRACE_FUNCTION_ENTRY() ((void)0)
  |  |  ------------------
  |  | 9080|     56|                LLTRACE_RESUME_FRAME();
  |  |  ------------------
  |  |  |  |  188|     56|#define LLTRACE_RESUME_FRAME() ((void)0)
  |  |  ------------------
  |  | 9081|     56|            }
  |  | 9082|     56|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     56|    { \
  |  |  |  |  201|     56|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     56|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     56|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     56|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     56|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     56|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     56|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     56|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 56]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     56|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     56|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     56|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     56|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     56|    }
  |  |  ------------------
  |  |  |  Branch (9082:13): [True: 56, False: 0]
  |  |  ------------------
  |  | 9083|     56|        }
  |  | 9084|       |
  |  | 9085|    101|        TARGET(LOAD_ATTR_SLOT) {
  |  |  ------------------
  |  |  |  |  132|    101|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 9086|       |            #if _Py_TAIL_CALL_INTERP
  |  | 9087|       |            int opcode = LOAD_ATTR_SLOT;
  |  | 9088|       |            (void)(opcode);
  |  | 9089|       |            #endif
  |  | 9090|    101|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 9091|    101|            (void)this_instr;
  |  | 9092|    101|            frame->instr_ptr = next_instr;
  |  | 9093|    101|            next_instr += 10;
  |  | 9094|    101|            INSTRUCTION_STATS(LOAD_ATTR_SLOT);
  |  |  ------------------
  |  |  |  |   71|    101|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 9095|    101|            static_assert(INLINE_CACHE_ENTRIES_LOAD_ATTR == 9, "incorrect cache size");
  |  | 9096|    101|            _PyStackRef owner;
  |  | 9097|    101|            _PyStackRef attr;
  |  | 9098|    101|            _PyStackRef o;
  |  | 9099|    101|            _PyStackRef value;
  |  | 9100|    101|            _PyStackRef *null;
  |  | 9101|       |            /* Skip 1 cache entry */
  |  | 9102|       |            // _GUARD_TYPE_VERSION
  |  | 9103|    101|            {
  |  | 9104|    101|                owner = stack_pointer[-1];
  |  | 9105|    101|                uint32_t type_version = read_u32(&this_instr[2].cache);
  |  | 9106|    101|                PyTypeObject *tp = Py_TYPE(PyStackRef_AsPyObjectBorrow(owner));
  |  |  ------------------
  |  |  |  |  213|    101|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    101|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    101|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 9107|    101|                assert(type_version != 0);
  |  |  ------------------
  |  |  |  Branch (9107:17): [True: 101, False: 0]
  |  |  ------------------
  |  | 9108|    101|                if (FT_ATOMIC_LOAD_UINT_RELAXED(tp->tp_version_tag) != type_version) {
  |  |  ------------------
  |  |  |  |  189|    101|#define FT_ATOMIC_LOAD_UINT_RELAXED(value) value
  |  |  ------------------
  |  |  |  Branch (9108:21): [True: 0, False: 101]
  |  |  ------------------
  |  | 9109|      0|                    UPDATE_MISS_STATS(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 9110|      0|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  |  ------------------
  |  |  |  Branch (9110:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 9111|      0|                    JUMP_TO_PREDICTED(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 9112|      0|                }
  |  | 9113|    101|            }
  |  | 9114|       |            // _LOAD_ATTR_SLOT
  |  | 9115|    101|            {
  |  | 9116|    101|                uint16_t index = read_u16(&this_instr[4].cache);
  |  | 9117|    101|                PyObject *owner_o = PyStackRef_AsPyObjectBorrow(owner);
  |  | 9118|    101|                PyObject **addr = (PyObject **)((char *)owner_o + index);
  |  | 9119|    101|                PyObject *attr_o = FT_ATOMIC_LOAD_PTR(*addr);
  |  |  ------------------
  |  |  |  |  145|    101|#define FT_ATOMIC_LOAD_PTR(value) value
  |  |  ------------------
  |  | 9120|    101|                if (attr_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (9120:21): [True: 0, False: 101]
  |  |  ------------------
  |  | 9121|      0|                    UPDATE_MISS_STATS(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 9122|      0|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  |  ------------------
  |  |  |  Branch (9122:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 9123|      0|                    JUMP_TO_PREDICTED(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 9124|      0|                }
  |  | 9125|       |                #ifdef Py_GIL_DISABLED
  |  | 9126|       |                int increfed = _Py_TryIncrefCompareStackRef(addr, attr_o, &attr);
  |  | 9127|       |                if (!increfed) {
  |  | 9128|       |                    UPDATE_MISS_STATS(LOAD_ATTR);
  |  | 9129|       |                    assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  | 9130|       |                    JUMP_TO_PREDICTED(LOAD_ATTR);
  |  | 9131|       |                }
  |  | 9132|       |                #else
  |  | 9133|    101|                attr = PyStackRef_FromPyObjectNew(attr_o);
  |  |  ------------------
  |  |  |  |  599|    101|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    101|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    101|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 9134|    101|                #endif
  |  | 9135|    101|                STAT_INC(LOAD_ATTR, hit);
  |  |  ------------------
  |  |  |  |   73|    101|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 9136|    101|                o = owner;
  |  | 9137|    101|            }
  |  | 9138|       |            // _POP_TOP
  |  | 9139|      0|            {
  |  | 9140|    101|                value = o;
  |  | 9141|    101|                stack_pointer[-1] = attr;
  |  | 9142|    101|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 9143|    101|                PyStackRef_XCLOSE(value);
  |  | 9144|    101|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 9145|    101|            }
  |  | 9146|       |            /* Skip 5 cache entries */
  |  | 9147|       |            // _PUSH_NULL_CONDITIONAL
  |  | 9148|    101|            {
  |  | 9149|    101|                null = &stack_pointer[0];
  |  | 9150|    101|                if (oparg & 1) {
  |  |  ------------------
  |  |  |  Branch (9150:21): [True: 0, False: 101]
  |  |  ------------------
  |  | 9151|      0|                    null[0] = PyStackRef_NULL;
  |  | 9152|      0|                }
  |  | 9153|    101|            }
  |  | 9154|    101|            stack_pointer += (oparg & 1);
  |  | 9155|    101|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    101|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 9156|    101|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    101|    { \
  |  |  |  |  201|    101|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    101|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    101|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    101|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    101|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    101|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    101|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    101|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 101]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    101|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    101|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    101|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    101|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    101|    }
  |  |  ------------------
  |  |  |  Branch (9156:13): [True: 101, False: 0]
  |  |  ------------------
  |  | 9157|    101|        }
  |  | 9158|       |
  |  | 9159|      0|        TARGET(LOAD_ATTR_WITH_HINT) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 9160|       |            #if _Py_TAIL_CALL_INTERP
  |  | 9161|       |            int opcode = LOAD_ATTR_WITH_HINT;
  |  | 9162|       |            (void)(opcode);
  |  | 9163|       |            #endif
  |  | 9164|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 9165|      0|            (void)this_instr;
  |  | 9166|      0|            frame->instr_ptr = next_instr;
  |  | 9167|      0|            next_instr += 10;
  |  | 9168|      0|            INSTRUCTION_STATS(LOAD_ATTR_WITH_HINT);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 9169|      0|            static_assert(INLINE_CACHE_ENTRIES_LOAD_ATTR == 9, "incorrect cache size");
  |  | 9170|      0|            _PyStackRef owner;
  |  | 9171|      0|            _PyStackRef attr;
  |  | 9172|      0|            _PyStackRef o;
  |  | 9173|      0|            _PyStackRef value;
  |  | 9174|      0|            _PyStackRef *null;
  |  | 9175|       |            /* Skip 1 cache entry */
  |  | 9176|       |            // _GUARD_TYPE_VERSION
  |  | 9177|      0|            {
  |  | 9178|      0|                owner = stack_pointer[-1];
  |  | 9179|      0|                uint32_t type_version = read_u32(&this_instr[2].cache);
  |  | 9180|      0|                PyTypeObject *tp = Py_TYPE(PyStackRef_AsPyObjectBorrow(owner));
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 9181|      0|                assert(type_version != 0);
  |  |  ------------------
  |  |  |  Branch (9181:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 9182|      0|                if (FT_ATOMIC_LOAD_UINT_RELAXED(tp->tp_version_tag) != type_version) {
  |  |  ------------------
  |  |  |  |  189|      0|#define FT_ATOMIC_LOAD_UINT_RELAXED(value) value
  |  |  ------------------
  |  |  |  Branch (9182:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 9183|      0|                    UPDATE_MISS_STATS(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 9184|      0|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  |  ------------------
  |  |  |  Branch (9184:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 9185|      0|                    JUMP_TO_PREDICTED(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 9186|      0|                }
  |  | 9187|      0|            }
  |  | 9188|       |            // _LOAD_ATTR_WITH_HINT
  |  | 9189|      0|            {
  |  | 9190|      0|                uint16_t hint = read_u16(&this_instr[4].cache);
  |  | 9191|      0|                PyObject *owner_o = PyStackRef_AsPyObjectBorrow(owner);
  |  | 9192|      0|                assert(Py_TYPE(owner_o)->tp_flags & Py_TPFLAGS_MANAGED_DICT);
  |  |  ------------------
  |  |  |  Branch (9192:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 9193|      0|                PyDictObject *dict = _PyObject_GetManagedDict(owner_o);
  |  | 9194|      0|                if (dict == NULL) {
  |  |  ------------------
  |  |  |  Branch (9194:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 9195|      0|                    UPDATE_MISS_STATS(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 9196|      0|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  |  ------------------
  |  |  |  Branch (9196:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 9197|      0|                    JUMP_TO_PREDICTED(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 9198|      0|                }
  |  | 9199|      0|                PyDictKeysObject *dk = FT_ATOMIC_LOAD_PTR(dict->ma_keys);
  |  |  ------------------
  |  |  |  |  145|      0|#define FT_ATOMIC_LOAD_PTR(value) value
  |  |  ------------------
  |  | 9200|      0|                assert(PyDict_CheckExact((PyObject *)dict));
  |  |  ------------------
  |  |  |  Branch (9200:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 9201|       |                #ifdef Py_GIL_DISABLED
  |  | 9202|       |                if (!_Py_IsOwnedByCurrentThread((PyObject *)dict) && !_PyObject_GC_IS_SHARED(dict)) {
  |  | 9203|       |                    UPDATE_MISS_STATS(LOAD_ATTR);
  |  | 9204|       |                    assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  | 9205|       |                    JUMP_TO_PREDICTED(LOAD_ATTR);
  |  | 9206|       |                }
  |  | 9207|       |                #endif
  |  | 9208|      0|                PyObject *attr_o;
  |  | 9209|      0|                if (hint >= (size_t)FT_ATOMIC_LOAD_SSIZE_RELAXED(dk->dk_nentries)) {
  |  |  ------------------
  |  |  |  |  149|      0|#define FT_ATOMIC_LOAD_SSIZE_RELAXED(value) value
  |  |  ------------------
  |  |  |  Branch (9209:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 9210|      0|                    if (true) {
  |  |  ------------------
  |  |  |  Branch (9210:25): [True: 0, Folded]
  |  |  ------------------
  |  | 9211|      0|                        UPDATE_MISS_STATS(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 9212|      0|                        assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  |  ------------------
  |  |  |  Branch (9212:25): [True: 0, False: 0]
  |  |  ------------------
  |  | 9213|      0|                        JUMP_TO_PREDICTED(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 9214|      0|                    }
  |  | 9215|      0|                }
  |  | 9216|      0|                PyObject *name = GETITEM(FRAME_CO_NAMES, oparg>>1);
  |  |  ------------------
  |  |  |  |  235|      0|#define GETITEM(v, i) PyTuple_GET_ITEM((v), (i))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   19|      0|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (9216:34): [True: 0, False: 0]
  |  |  ------------------
  |  | 9217|      0|                if (dk->dk_kind != DICT_KEYS_UNICODE) {
  |  |  ------------------
  |  |  |  Branch (9217:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 9218|      0|                    if (true) {
  |  |  ------------------
  |  |  |  Branch (9218:25): [True: 0, Folded]
  |  |  ------------------
  |  | 9219|      0|                        UPDATE_MISS_STATS(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 9220|      0|                        assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  |  ------------------
  |  |  |  Branch (9220:25): [True: 0, False: 0]
  |  |  ------------------
  |  | 9221|      0|                        JUMP_TO_PREDICTED(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 9222|      0|                    }
  |  | 9223|      0|                }
  |  | 9224|      0|                PyDictUnicodeEntry *ep = DK_UNICODE_ENTRIES(dk) + hint;
  |  | 9225|      0|                if (FT_ATOMIC_LOAD_PTR_RELAXED(ep->me_key) != name) {
  |  |  ------------------
  |  |  |  |  153|      0|#define FT_ATOMIC_LOAD_PTR_RELAXED(value) value
  |  |  ------------------
  |  |  |  Branch (9225:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 9226|      0|                    if (true) {
  |  |  ------------------
  |  |  |  Branch (9226:25): [True: 0, Folded]
  |  |  ------------------
  |  | 9227|      0|                        UPDATE_MISS_STATS(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 9228|      0|                        assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  |  ------------------
  |  |  |  Branch (9228:25): [True: 0, False: 0]
  |  |  ------------------
  |  | 9229|      0|                        JUMP_TO_PREDICTED(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 9230|      0|                    }
  |  | 9231|      0|                }
  |  | 9232|      0|                attr_o = FT_ATOMIC_LOAD_PTR(ep->me_value);
  |  |  ------------------
  |  |  |  |  145|      0|#define FT_ATOMIC_LOAD_PTR(value) value
  |  |  ------------------
  |  | 9233|      0|                if (attr_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (9233:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 9234|      0|                    if (true) {
  |  |  ------------------
  |  |  |  Branch (9234:25): [True: 0, Folded]
  |  |  ------------------
  |  | 9235|      0|                        UPDATE_MISS_STATS(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 9236|      0|                        assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  |  ------------------
  |  |  |  Branch (9236:25): [True: 0, False: 0]
  |  |  ------------------
  |  | 9237|      0|                        JUMP_TO_PREDICTED(LOAD_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 9238|      0|                    }
  |  | 9239|      0|                }
  |  | 9240|      0|                STAT_INC(LOAD_ATTR, hit);
  |  |  ------------------
  |  |  |  |   73|      0|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 9241|       |                #ifdef Py_GIL_DISABLED
  |  | 9242|       |                int increfed = _Py_TryIncrefCompareStackRef(&ep->me_value, attr_o, &attr);
  |  | 9243|       |                if (!increfed) {
  |  | 9244|       |                    if (true) {
  |  | 9245|       |                        UPDATE_MISS_STATS(LOAD_ATTR);
  |  | 9246|       |                        assert(_PyOpcode_Deopt[opcode] == (LOAD_ATTR));
  |  | 9247|       |                        JUMP_TO_PREDICTED(LOAD_ATTR);
  |  | 9248|       |                    }
  |  | 9249|       |                }
  |  | 9250|       |                #else
  |  | 9251|      0|                attr = PyStackRef_FromPyObjectNew(attr_o);
  |  |  ------------------
  |  |  |  |  599|      0|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 9252|      0|                #endif
  |  | 9253|      0|                o = owner;
  |  | 9254|      0|            }
  |  | 9255|       |            // _POP_TOP
  |  | 9256|      0|            {
  |  | 9257|      0|                value = o;
  |  | 9258|      0|                stack_pointer[-1] = attr;
  |  | 9259|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 9260|      0|                PyStackRef_XCLOSE(value);
  |  | 9261|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 9262|      0|            }
  |  | 9263|       |            /* Skip 5 cache entries */
  |  | 9264|       |            // _PUSH_NULL_CONDITIONAL
  |  | 9265|      0|            {
  |  | 9266|      0|                null = &stack_pointer[0];
  |  | 9267|      0|                if (oparg & 1) {
  |  |  ------------------
  |  |  |  Branch (9267:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 9268|      0|                    null[0] = PyStackRef_NULL;
  |  | 9269|      0|                }
  |  | 9270|      0|            }
  |  | 9271|      0|            stack_pointer += (oparg & 1);
  |  | 9272|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 9273|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (9273:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 9274|      0|        }
  |  | 9275|       |
  |  | 9276|     84|        TARGET(LOAD_BUILD_CLASS) {
  |  |  ------------------
  |  |  |  |  132|     84|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 9277|       |            #if _Py_TAIL_CALL_INTERP
  |  | 9278|       |            int opcode = LOAD_BUILD_CLASS;
  |  | 9279|       |            (void)(opcode);
  |  | 9280|       |            #endif
  |  | 9281|     84|            frame->instr_ptr = next_instr;
  |  | 9282|     84|            next_instr += 1;
  |  | 9283|     84|            INSTRUCTION_STATS(LOAD_BUILD_CLASS);
  |  |  ------------------
  |  |  |  |   71|     84|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 9284|     84|            _PyStackRef bc;
  |  | 9285|     84|            int err;
  |  | 9286|     84|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 9287|     84|            PyObject *bc_o = _PyMapping_GetOptionalItem2(BUILTINS(), &_Py_ID(__build_class__), &err);
  |  |  ------------------
  |  |  |  |  326|     84|#define BUILTINS() frame->f_builtins
  |  |  ------------------
  |  |                           PyObject *bc_o = _PyMapping_GetOptionalItem2(BUILTINS(), &_Py_ID(__build_class__), &err);
  |  |  ------------------
  |  |  |  |  917|     84|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|     84|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|     84|    _PyRuntime.static_objects.NAME
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 9288|     84|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 9289|     84|            if (err < 0) {
  |  |  ------------------
  |  |  |  Branch (9289:17): [True: 0, False: 84]
  |  |  ------------------
  |  | 9290|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 9291|      0|            }
  |  | 9292|     84|            if (bc_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (9292:17): [True: 0, False: 84]
  |  |  ------------------
  |  | 9293|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 9294|      0|                _PyErr_SetString(tstate, PyExc_NameError,
  |  | 9295|      0|                                 "__build_class__ not found");
  |  | 9296|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 9297|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 9298|      0|            }
  |  | 9299|     84|            bc = PyStackRef_FromPyObjectSteal(bc_o);
  |  | 9300|     84|            stack_pointer[0] = bc;
  |  | 9301|     84|            stack_pointer += 1;
  |  | 9302|     84|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     84|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 9303|     84|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     84|    { \
  |  |  |  |  201|     84|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     84|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     84|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     84|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     84|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     84|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     84|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     84|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 84]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     84|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     84|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     84|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     84|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     84|    }
  |  |  ------------------
  |  |  |  Branch (9303:13): [True: 84, False: 0]
  |  |  ------------------
  |  | 9304|     84|        }
  |  | 9305|       |
  |  | 9306|  2.07k|        TARGET(LOAD_COMMON_CONSTANT) {
  |  |  ------------------
  |  |  |  |  132|  2.07k|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 9307|       |            #if _Py_TAIL_CALL_INTERP
  |  | 9308|       |            int opcode = LOAD_COMMON_CONSTANT;
  |  | 9309|       |            (void)(opcode);
  |  | 9310|       |            #endif
  |  | 9311|  2.07k|            frame->instr_ptr = next_instr;
  |  | 9312|  2.07k|            next_instr += 1;
  |  | 9313|  2.07k|            INSTRUCTION_STATS(LOAD_COMMON_CONSTANT);
  |  |  ------------------
  |  |  |  |   71|  2.07k|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 9314|  2.07k|            _PyStackRef value;
  |  | 9315|  2.07k|            assert(oparg < NUM_COMMON_CONSTANTS);
  |  |  ------------------
  |  |  |  Branch (9315:13): [True: 2.07k, False: 0]
  |  |  ------------------
  |  | 9316|  2.07k|            value = PyStackRef_FromPyObjectNew(tstate->interp->common_consts[oparg]);
  |  |  ------------------
  |  |  |  |  599|  2.07k|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|  2.07k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|  2.07k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 9317|  2.07k|            stack_pointer[0] = value;
  |  | 9318|  2.07k|            stack_pointer += 1;
  |  | 9319|  2.07k|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|  2.07k|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 9320|  2.07k|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|  2.07k|    { \
  |  |  |  |  201|  2.07k|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|  2.07k|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|  2.07k|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|  2.07k|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|  2.07k|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|  2.07k|        opcode = word.op.code; \
  |  |  |  |  |  |  253|  2.07k|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|  2.07k|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 2.07k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|  2.07k|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|  2.07k|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|  2.07k|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|  2.07k|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|  2.07k|    }
  |  |  ------------------
  |  |  |  Branch (9320:13): [True: 2.07k, False: 0]
  |  |  ------------------
  |  | 9321|  2.07k|        }
  |  | 9322|       |
  |  | 9323|  3.49k|        TARGET(LOAD_CONST) {
  |  |  ------------------
  |  |  |  |  132|  3.49k|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 9324|       |            #if _Py_TAIL_CALL_INTERP
  |  | 9325|       |            int opcode = LOAD_CONST;
  |  | 9326|       |            (void)(opcode);
  |  | 9327|       |            #endif
  |  | 9328|  3.49k|            frame->instr_ptr = next_instr;
  |  | 9329|  3.49k|            next_instr += 1;
  |  | 9330|  3.49k|            INSTRUCTION_STATS(LOAD_CONST);
  |  |  ------------------
  |  |  |  |   71|  3.49k|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 9331|  3.49k|            _PyStackRef value;
  |  | 9332|  3.49k|            PyObject *obj = GETITEM(FRAME_CO_CONSTS, oparg);
  |  |  ------------------
  |  |  |  |  235|  3.49k|#define GETITEM(v, i) PyTuple_GET_ITEM((v), (i))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|  3.49k|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   19|  3.49k|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|  3.49k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (9332:29): [True: 3.49k, False: 0]
  |  |  ------------------
  |  | 9333|      0|            value = PyStackRef_FromPyObjectBorrow(obj);
  |  | 9334|  3.49k|            stack_pointer[0] = value;
  |  | 9335|  3.49k|            stack_pointer += 1;
  |  | 9336|  3.49k|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|  3.49k|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 9337|  3.49k|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|  3.49k|    { \
  |  |  |  |  201|  3.49k|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|  3.49k|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|  3.49k|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|  3.49k|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|  3.49k|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|  3.49k|        opcode = word.op.code; \
  |  |  |  |  |  |  253|  3.49k|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|  3.49k|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 3.49k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|  3.49k|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|  3.49k|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|  3.49k|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|  3.49k|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|  3.49k|    }
  |  |  ------------------
  |  |  |  Branch (9337:13): [True: 3.49k, False: 0]
  |  |  ------------------
  |  | 9338|  3.49k|        }
  |  | 9339|       |
  |  | 9340|    191|        TARGET(LOAD_DEREF) {
  |  |  ------------------
  |  |  |  |  132|    191|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 9341|       |            #if _Py_TAIL_CALL_INTERP
  |  | 9342|       |            int opcode = LOAD_DEREF;
  |  | 9343|       |            (void)(opcode);
  |  | 9344|       |            #endif
  |  | 9345|    191|            frame->instr_ptr = next_instr;
  |  | 9346|    191|            next_instr += 1;
  |  | 9347|    191|            INSTRUCTION_STATS(LOAD_DEREF);
  |  |  ------------------
  |  |  |  |   71|    191|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 9348|    191|            _PyStackRef value;
  |  | 9349|    191|            PyCellObject *cell = (PyCellObject *)PyStackRef_AsPyObjectBorrow(GETLOCAL(oparg));
  |  |  ------------------
  |  |  |  |  284|    191|#define GETLOCAL(i)     (frame->localsplus[i])
  |  |  ------------------
  |  | 9350|    191|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 9351|    191|            value = _PyCell_GetStackRef(cell);
  |  | 9352|    191|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 9353|    191|            if (PyStackRef_IsNull(value)) {
  |  |  ------------------
  |  |  |  |  470|    191|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|    191|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    191|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (470:32): [True: 0, False: 191]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 9354|      0|                stack_pointer[0] = value;
  |  | 9355|      0|                stack_pointer += 1;
  |  | 9356|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 9357|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 9358|      0|                _PyEval_FormatExcUnbound(tstate, _PyFrame_GetCode(frame), oparg);
  |  | 9359|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 9360|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 9361|      0|            }
  |  | 9362|    191|            stack_pointer[0] = value;
  |  | 9363|    191|            stack_pointer += 1;
  |  | 9364|    191|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    191|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 9365|    191|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    191|    { \
  |  |  |  |  201|    191|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    191|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    191|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    191|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    191|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    191|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    191|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    191|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 191]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    191|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    191|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    191|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    191|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    191|    }
  |  |  ------------------
  |  |  |  Branch (9365:13): [True: 191, False: 0]
  |  |  ------------------
  |  | 9366|    191|        }
  |  | 9367|       |
  |  | 9368|    608|        TARGET(LOAD_FAST) {
  |  |  ------------------
  |  |  |  |  132|    608|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 9369|       |            #if _Py_TAIL_CALL_INTERP
  |  | 9370|       |            int opcode = LOAD_FAST;
  |  | 9371|       |            (void)(opcode);
  |  | 9372|       |            #endif
  |  | 9373|    608|            frame->instr_ptr = next_instr;
  |  | 9374|    608|            next_instr += 1;
  |  | 9375|    608|            INSTRUCTION_STATS(LOAD_FAST);
  |  |  ------------------
  |  |  |  |   71|    608|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 9376|    608|            _PyStackRef value;
  |  | 9377|    608|            assert(!PyStackRef_IsNull(GETLOCAL(oparg)));
  |  |  ------------------
  |  |  |  Branch (9377:13): [True: 608, False: 0]
  |  |  ------------------
  |  | 9378|    608|            value = PyStackRef_DUP(GETLOCAL(oparg));
  |  |  ------------------
  |  |  |  |  284|    608|#define GETLOCAL(i)     (frame->localsplus[i])
  |  |  ------------------
  |  | 9379|    608|            stack_pointer[0] = value;
  |  | 9380|    608|            stack_pointer += 1;
  |  | 9381|    608|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    608|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 9382|    608|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    608|    { \
  |  |  |  |  201|    608|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    608|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    608|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    608|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    608|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    608|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    608|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    608|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 608]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    608|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    608|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    608|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    608|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    608|    }
  |  |  ------------------
  |  |  |  Branch (9382:13): [True: 608, False: 0]
  |  |  ------------------
  |  | 9383|    608|        }
  |  | 9384|       |
  |  | 9385|     46|        TARGET(LOAD_FAST_AND_CLEAR) {
  |  |  ------------------
  |  |  |  |  132|     46|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 9386|       |            #if _Py_TAIL_CALL_INTERP
  |  | 9387|       |            int opcode = LOAD_FAST_AND_CLEAR;
  |  | 9388|       |            (void)(opcode);
  |  | 9389|       |            #endif
  |  | 9390|     46|            frame->instr_ptr = next_instr;
  |  | 9391|     46|            next_instr += 1;
  |  | 9392|     46|            INSTRUCTION_STATS(LOAD_FAST_AND_CLEAR);
  |  |  ------------------
  |  |  |  |   71|     46|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 9393|     46|            _PyStackRef value;
  |  | 9394|     46|            value = GETLOCAL(oparg);
  |  |  ------------------
  |  |  |  |  284|     46|#define GETLOCAL(i)     (frame->localsplus[i])
  |  |  ------------------
  |  | 9395|     46|            GETLOCAL(oparg) = PyStackRef_NULL;
  |  |  ------------------
  |  |  |  |  284|     46|#define GETLOCAL(i)     (frame->localsplus[i])
  |  |  ------------------
  |  | 9396|     46|            stack_pointer[0] = value;
  |  | 9397|     46|            stack_pointer += 1;
  |  | 9398|     46|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     46|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 9399|     46|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     46|    { \
  |  |  |  |  201|     46|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     46|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     46|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     46|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     46|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     46|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     46|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     46|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 46]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     46|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     46|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     46|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     46|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     46|    }
  |  |  ------------------
  |  |  |  Branch (9399:13): [True: 46, False: 0]
  |  |  ------------------
  |  | 9400|     46|        }
  |  | 9401|       |
  |  | 9402|  5.76k|        TARGET(LOAD_FAST_BORROW) {
  |  |  ------------------
  |  |  |  |  132|  5.76k|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 9403|       |            #if _Py_TAIL_CALL_INTERP
  |  | 9404|       |            int opcode = LOAD_FAST_BORROW;
  |  | 9405|       |            (void)(opcode);
  |  | 9406|       |            #endif
  |  | 9407|  5.76k|            frame->instr_ptr = next_instr;
  |  | 9408|  5.76k|            next_instr += 1;
  |  | 9409|  5.76k|            INSTRUCTION_STATS(LOAD_FAST_BORROW);
  |  |  ------------------
  |  |  |  |   71|  5.76k|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 9410|  5.76k|            _PyStackRef value;
  |  | 9411|  5.76k|            assert(!PyStackRef_IsNull(GETLOCAL(oparg)));
  |  |  ------------------
  |  |  |  Branch (9411:13): [True: 5.76k, False: 0]
  |  |  ------------------
  |  | 9412|  5.76k|            value = PyStackRef_Borrow(GETLOCAL(oparg));
  |  |  ------------------
  |  |  |  |  284|  5.76k|#define GETLOCAL(i)     (frame->localsplus[i])
  |  |  ------------------
  |  | 9413|  5.76k|            stack_pointer[0] = value;
  |  | 9414|  5.76k|            stack_pointer += 1;
  |  | 9415|  5.76k|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|  5.76k|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 9416|  5.76k|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|  5.76k|    { \
  |  |  |  |  201|  5.76k|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|  5.76k|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|  5.76k|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|  5.76k|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|  5.76k|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|  5.76k|        opcode = word.op.code; \
  |  |  |  |  |  |  253|  5.76k|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|  5.76k|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 5.76k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|  5.76k|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|  5.76k|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|  5.76k|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|  5.76k|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|  5.76k|    }
  |  |  ------------------
  |  |  |  Branch (9416:13): [True: 5.76k, False: 0]
  |  |  ------------------
  |  | 9417|  5.76k|        }
  |  | 9418|       |
  |  | 9419|  1.27k|        TARGET(LOAD_FAST_BORROW_LOAD_FAST_BORROW) {
  |  |  ------------------
  |  |  |  |  132|  1.27k|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 9420|       |            #if _Py_TAIL_CALL_INTERP
  |  | 9421|       |            int opcode = LOAD_FAST_BORROW_LOAD_FAST_BORROW;
  |  | 9422|       |            (void)(opcode);
  |  | 9423|       |            #endif
  |  | 9424|  1.27k|            frame->instr_ptr = next_instr;
  |  | 9425|  1.27k|            next_instr += 1;
  |  | 9426|  1.27k|            INSTRUCTION_STATS(LOAD_FAST_BORROW_LOAD_FAST_BORROW);
  |  |  ------------------
  |  |  |  |   71|  1.27k|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 9427|  1.27k|            _PyStackRef value1;
  |  | 9428|  1.27k|            _PyStackRef value2;
  |  | 9429|  1.27k|            uint32_t oparg1 = oparg >> 4;
  |  | 9430|  1.27k|            uint32_t oparg2 = oparg & 15;
  |  | 9431|  1.27k|            value1 = PyStackRef_Borrow(GETLOCAL(oparg1));
  |  |  ------------------
  |  |  |  |  284|  1.27k|#define GETLOCAL(i)     (frame->localsplus[i])
  |  |  ------------------
  |  | 9432|  1.27k|            value2 = PyStackRef_Borrow(GETLOCAL(oparg2));
  |  |  ------------------
  |  |  |  |  284|  1.27k|#define GETLOCAL(i)     (frame->localsplus[i])
  |  |  ------------------
  |  | 9433|  1.27k|            stack_pointer[0] = value1;
  |  | 9434|  1.27k|            stack_pointer[1] = value2;
  |  | 9435|  1.27k|            stack_pointer += 2;
  |  | 9436|  1.27k|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|  1.27k|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 9437|  1.27k|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|  1.27k|    { \
  |  |  |  |  201|  1.27k|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|  1.27k|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|  1.27k|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|  1.27k|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|  1.27k|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|  1.27k|        opcode = word.op.code; \
  |  |  |  |  |  |  253|  1.27k|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|  1.27k|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 1.27k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|  1.27k|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|  1.27k|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|  1.27k|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|  1.27k|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|  1.27k|    }
  |  |  ------------------
  |  |  |  Branch (9437:13): [True: 1.27k, False: 0]
  |  |  ------------------
  |  | 9438|  1.27k|        }
  |  | 9439|       |
  |  | 9440|     47|        TARGET(LOAD_FAST_CHECK) {
  |  |  ------------------
  |  |  |  |  132|     47|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 9441|       |            #if _Py_TAIL_CALL_INTERP
  |  | 9442|       |            int opcode = LOAD_FAST_CHECK;
  |  | 9443|       |            (void)(opcode);
  |  | 9444|       |            #endif
  |  | 9445|     47|            frame->instr_ptr = next_instr;
  |  | 9446|     47|            next_instr += 1;
  |  | 9447|     47|            INSTRUCTION_STATS(LOAD_FAST_CHECK);
  |  |  ------------------
  |  |  |  |   71|     47|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 9448|     47|            _PyStackRef value;
  |  | 9449|     47|            _PyStackRef value_s = GETLOCAL(oparg);
  |  |  ------------------
  |  |  |  |  284|     47|#define GETLOCAL(i)     (frame->localsplus[i])
  |  |  ------------------
  |  | 9450|     47|            if (PyStackRef_IsNull(value_s)) {
  |  |  ------------------
  |  |  |  |  470|     47|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|     47|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|     47|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (470:32): [True: 0, False: 47]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 9451|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 9452|      0|                _PyEval_FormatExcCheckArg(tstate, PyExc_UnboundLocalError,
  |  | 9453|      0|                    UNBOUNDLOCAL_ERROR_MSG,
  |  |  ------------------
  |  |  |  |  380|      0|    "cannot access local variable '%s' where it is not associated with a value"
  |  |  ------------------
  |  | 9454|      0|                    PyTuple_GetItem(_PyFrame_GetCode(frame)->co_localsplusnames, oparg)
  |  | 9455|      0|                );
  |  | 9456|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 9457|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 9458|      0|            }
  |  | 9459|     47|            value = PyStackRef_DUP(value_s);
  |  | 9460|     47|            stack_pointer[0] = value;
  |  | 9461|     47|            stack_pointer += 1;
  |  | 9462|     47|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     47|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 9463|     47|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     47|    { \
  |  |  |  |  201|     47|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     47|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     47|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     47|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     47|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     47|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     47|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     47|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 47]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     47|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     47|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     47|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     47|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     47|    }
  |  |  ------------------
  |  |  |  Branch (9463:13): [True: 47, False: 0]
  |  |  ------------------
  |  | 9464|     47|        }
  |  | 9465|       |
  |  | 9466|      1|        TARGET(LOAD_FAST_LOAD_FAST) {
  |  |  ------------------
  |  |  |  |  132|      1|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 9467|       |            #if _Py_TAIL_CALL_INTERP
  |  | 9468|       |            int opcode = LOAD_FAST_LOAD_FAST;
  |  | 9469|       |            (void)(opcode);
  |  | 9470|       |            #endif
  |  | 9471|      1|            frame->instr_ptr = next_instr;
  |  | 9472|      1|            next_instr += 1;
  |  | 9473|      1|            INSTRUCTION_STATS(LOAD_FAST_LOAD_FAST);
  |  |  ------------------
  |  |  |  |   71|      1|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 9474|      1|            _PyStackRef value1;
  |  | 9475|      1|            _PyStackRef value2;
  |  | 9476|      1|            uint32_t oparg1 = oparg >> 4;
  |  | 9477|      1|            uint32_t oparg2 = oparg & 15;
  |  | 9478|      1|            value1 = PyStackRef_DUP(GETLOCAL(oparg1));
  |  |  ------------------
  |  |  |  |  284|      1|#define GETLOCAL(i)     (frame->localsplus[i])
  |  |  ------------------
  |  | 9479|      1|            value2 = PyStackRef_DUP(GETLOCAL(oparg2));
  |  |  ------------------
  |  |  |  |  284|      1|#define GETLOCAL(i)     (frame->localsplus[i])
  |  |  ------------------
  |  | 9480|      1|            stack_pointer[0] = value1;
  |  | 9481|      1|            stack_pointer[1] = value2;
  |  | 9482|      1|            stack_pointer += 2;
  |  | 9483|      1|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      1|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 9484|      1|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      1|    { \
  |  |  |  |  201|      1|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      1|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      1|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      1|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      1|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      1|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      1|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      1|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      1|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      1|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      1|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      1|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      1|    }
  |  |  ------------------
  |  |  |  Branch (9484:13): [True: 1, False: 0]
  |  |  ------------------
  |  | 9485|      1|        }
  |  | 9486|       |
  |  | 9487|      0|        TARGET(LOAD_FROM_DICT_OR_DEREF) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 9488|       |            #if _Py_TAIL_CALL_INTERP
  |  | 9489|       |            int opcode = LOAD_FROM_DICT_OR_DEREF;
  |  | 9490|       |            (void)(opcode);
  |  | 9491|       |            #endif
  |  | 9492|      0|            frame->instr_ptr = next_instr;
  |  | 9493|      0|            next_instr += 1;
  |  | 9494|      0|            INSTRUCTION_STATS(LOAD_FROM_DICT_OR_DEREF);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 9495|      0|            _PyStackRef class_dict_st;
  |  | 9496|      0|            _PyStackRef value;
  |  | 9497|      0|            class_dict_st = stack_pointer[-1];
  |  | 9498|      0|            PyObject *name;
  |  | 9499|      0|            PyObject *class_dict = PyStackRef_AsPyObjectBorrow(class_dict_st);
  |  | 9500|      0|            assert(class_dict);
  |  |  ------------------
  |  |  |  Branch (9500:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 9501|      0|            assert(oparg >= 0 && oparg < _PyFrame_GetCode(frame)->co_nlocalsplus);
  |  |  ------------------
  |  |  |  Branch (9501:13): [True: 0, False: 0]
  |  |  |  Branch (9501:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 9502|      0|            name = PyTuple_GET_ITEM(_PyFrame_GetCode(frame)->co_localsplusnames, oparg);
  |  |  ------------------
  |  |  |  |   29|      0|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  |  |  ------------------
  |  |  |  |  |  |   19|      0|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (9502:20): [True: 0, False: 0]
  |  |  ------------------
  |  | 9503|      0|            int err;
  |  | 9504|      0|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 9505|      0|            PyObject* value_o = _PyMapping_GetOptionalItem2(class_dict, name, &err);
  |  | 9506|      0|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 9507|      0|            if (err < 0) {
  |  |  ------------------
  |  |  |  Branch (9507:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 9508|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 9509|      0|            }
  |  | 9510|      0|            if (!value_o) {
  |  |  ------------------
  |  |  |  Branch (9510:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 9511|      0|                PyCellObject *cell = (PyCellObject *)PyStackRef_AsPyObjectBorrow(GETLOCAL(oparg));
  |  |  ------------------
  |  |  |  |  284|      0|#define GETLOCAL(i)     (frame->localsplus[i])
  |  |  ------------------
  |  | 9512|      0|                value_o = PyCell_GetRef(cell);
  |  | 9513|      0|                if (value_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (9513:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 9514|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 9515|      0|                    _PyEval_FormatExcUnbound(tstate, _PyFrame_GetCode(frame), oparg);
  |  | 9516|      0|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 9517|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 9518|      0|                }
  |  | 9519|      0|            }
  |  | 9520|      0|            stack_pointer += -1;
  |  | 9521|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 9522|      0|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 9523|      0|            PyStackRef_CLOSE(class_dict_st);
  |  | 9524|      0|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 9525|      0|            value = PyStackRef_FromPyObjectSteal(value_o);
  |  | 9526|      0|            stack_pointer[0] = value;
  |  | 9527|      0|            stack_pointer += 1;
  |  | 9528|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 9529|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (9529:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 9530|      0|        }
  |  | 9531|       |
  |  | 9532|      0|        TARGET(LOAD_FROM_DICT_OR_GLOBALS) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 9533|       |            #if _Py_TAIL_CALL_INTERP
  |  | 9534|       |            int opcode = LOAD_FROM_DICT_OR_GLOBALS;
  |  | 9535|       |            (void)(opcode);
  |  | 9536|       |            #endif
  |  | 9537|      0|            frame->instr_ptr = next_instr;
  |  | 9538|      0|            next_instr += 1;
  |  | 9539|      0|            INSTRUCTION_STATS(LOAD_FROM_DICT_OR_GLOBALS);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 9540|      0|            _PyStackRef mod_or_class_dict;
  |  | 9541|      0|            _PyStackRef v;
  |  | 9542|      0|            mod_or_class_dict = stack_pointer[-1];
  |  | 9543|      0|            PyObject *name = GETITEM(FRAME_CO_NAMES, oparg);
  |  |  ------------------
  |  |  |  |  235|      0|#define GETITEM(v, i) PyTuple_GET_ITEM((v), (i))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   19|      0|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (9543:30): [True: 0, False: 0]
  |  |  ------------------
  |  | 9544|      0|            int err;
  |  | 9545|      0|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 9546|      0|            PyObject *v_o = _PyMapping_GetOptionalItem2(PyStackRef_AsPyObjectBorrow(mod_or_class_dict), name, &err);
  |  | 9547|      0|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 9548|      0|            stack_pointer += -1;
  |  | 9549|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 9550|      0|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 9551|      0|            PyStackRef_CLOSE(mod_or_class_dict);
  |  | 9552|      0|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 9553|      0|            if (err < 0) {
  |  |  ------------------
  |  |  |  Branch (9553:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 9554|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 9555|      0|            }
  |  | 9556|      0|            if (v_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (9556:17): [True: 0, False: 0]
  |  |  ------------------
  |  | 9557|      0|                if (PyDict_CheckExact(GLOBALS())
  |  |  ------------------
  |  |  |  |   19|      0|#define PyDict_CheckExact(op) Py_IS_TYPE((op), &PyDict_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      0|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (65:5): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 9558|      0|                    && PyDict_CheckExact(BUILTINS()))
  |  |  ------------------
  |  |  |  |   19|      0|#define PyDict_CheckExact(op) Py_IS_TYPE((op), &PyDict_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      0|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (65:5): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 9559|      0|                {
  |  | 9560|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 9561|      0|                    v_o = _PyDict_LoadGlobal((PyDictObject *)GLOBALS(),
  |  |  ------------------
  |  |  |  |  325|      0|#define GLOBALS() frame->f_globals
  |  |  ------------------
  |  | 9562|      0|                        (PyDictObject *)BUILTINS(),
  |  |  ------------------
  |  |  |  |  326|      0|#define BUILTINS() frame->f_builtins
  |  |  ------------------
  |  | 9563|      0|                        name);
  |  | 9564|      0|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 9565|      0|                    if (v_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (9565:25): [True: 0, False: 0]
  |  |  ------------------
  |  | 9566|      0|                        if (!_PyErr_Occurred(tstate)) {
  |  |  ------------------
  |  |  |  Branch (9566:29): [True: 0, False: 0]
  |  |  ------------------
  |  | 9567|      0|                            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 9568|      0|                            _PyEval_FormatExcCheckArg(tstate, PyExc_NameError,
  |  | 9569|      0|                                NAME_ERROR_MSG, name);
  |  |  ------------------
  |  |  |  |  384|      0|#define NAME_ERROR_MSG "name '%.200s' is not defined"
  |  |  ------------------
  |  | 9570|      0|                            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 9571|      0|                        }
  |  | 9572|      0|                        JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 9573|      0|                    }
  |  | 9574|      0|                    if (PyLazyImport_CheckExact(v_o)) {
  |  |  ------------------
  |  |  |  |   15|      0|#define PyLazyImport_CheckExact(op) Py_IS_TYPE((op), &PyLazyImport_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      0|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (65:5): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 9575|      0|                        _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 9576|      0|                        PyObject *l_v = _PyImport_LoadLazyImportTstate(tstate, v_o);
  |  | 9577|      0|                        Py_SETREF(v_o, l_v);
  |  |  ------------------
  |  |  |  |  352|      0|    do { \
  |  |  |  |  353|      0|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  ------------------
  |  |  |  |  354|      0|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  ------------------
  |  |  |  |  355|      0|        *_tmp_dst_ptr = (src); \
  |  |  |  |  356|      0|        Py_DECREF(_tmp_old_dst); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   80|      0|    do { \
  |  |  |  |  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|            break; \
  |  |  |  |  |  |   85|      0|        } \
  |  |  |  |  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |  |  |   91|      0|        } \
  |  |  |  |  |  |   92|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  357|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 9578|      0|                        stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 9579|      0|                        if (v_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (9579:29): [True: 0, False: 0]
  |  |  ------------------
  |  | 9580|      0|                            JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 9581|      0|                        }
  |  | 9582|      0|                    }
  |  | 9583|      0|                }
  |  | 9584|      0|                else {
  |  | 9585|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 9586|      0|                    v_o = _PyMapping_GetOptionalItem2(GLOBALS(), name, &err);
  |  |  ------------------
  |  |  |  |  325|      0|#define GLOBALS() frame->f_globals
  |  |  ------------------
  |  | 9587|      0|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 9588|      0|                    if (err < 0) {
  |  |  ------------------
  |  |  |  Branch (9588:25): [True: 0, False: 0]
  |  |  ------------------
  |  | 9589|      0|                        JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 9590|      0|                    }
  |  | 9591|      0|                    if (v_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (9591:25): [True: 0, False: 0]
  |  |  ------------------
  |  | 9592|      0|                        _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 9593|      0|                        v_o = _PyMapping_GetOptionalItem2(BUILTINS(), name, &err);
  |  |  ------------------
  |  |  |  |  326|      0|#define BUILTINS() frame->f_builtins
  |  |  ------------------
  |  | 9594|      0|                        stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 9595|      0|                        if (err < 0) {
  |  |  ------------------
  |  |  |  Branch (9595:29): [True: 0, False: 0]
  |  |  ------------------
  |  | 9596|      0|                            JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 9597|      0|                        }
  |  | 9598|      0|                        if (v_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (9598:29): [True: 0, False: 0]
  |  |  ------------------
  |  | 9599|      0|                            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 9600|      0|                            _PyEval_FormatExcCheckArg(
  |  | 9601|      0|                                tstate, PyExc_NameError,
  |  | 9602|      0|                                NAME_ERROR_MSG, name);
  |  |  ------------------
  |  |  |  |  384|      0|#define NAME_ERROR_MSG "name '%.200s' is not defined"
  |  |  ------------------
  |  | 9603|      0|                            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 9604|      0|                            JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 9605|      0|                        }
  |  | 9606|      0|                    }
  |  | 9607|      0|                    if (PyLazyImport_CheckExact(v_o)) {
  |  |  ------------------
  |  |  |  |   15|      0|#define PyLazyImport_CheckExact(op) Py_IS_TYPE((op), &PyLazyImport_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      0|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (65:5): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 9608|      0|                        _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 9609|      0|                        PyObject *l_v = _PyImport_LoadLazyImportTstate(tstate, v_o);
  |  | 9610|      0|                        Py_SETREF(v_o, l_v);
  |  |  ------------------
  |  |  |  |  352|      0|    do { \
  |  |  |  |  353|      0|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  ------------------
  |  |  |  |  354|      0|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  ------------------
  |  |  |  |  355|      0|        *_tmp_dst_ptr = (src); \
  |  |  |  |  356|      0|        Py_DECREF(_tmp_old_dst); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   80|      0|    do { \
  |  |  |  |  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|            break; \
  |  |  |  |  |  |   85|      0|        } \
  |  |  |  |  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |  |  |   91|      0|        } \
  |  |  |  |  |  |   92|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  357|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 9611|      0|                        stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 9612|      0|                        if (v_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (9612:29): [True: 0, False: 0]
  |  |  ------------------
  |  | 9613|      0|                            JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 9614|      0|                        }
  |  | 9615|      0|                    }
  |  | 9616|      0|                }
  |  | 9617|      0|            }
  |  | 9618|      0|            v = PyStackRef_FromPyObjectSteal(v_o);
  |  | 9619|      0|            stack_pointer[0] = v;
  |  | 9620|      0|            stack_pointer += 1;
  |  | 9621|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 9622|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (9622:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 9623|      0|        }
  |  | 9624|       |
  |  | 9625|    655|        TARGET(LOAD_GLOBAL) {
  |  |  ------------------
  |  |  |  |  132|    655|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 9626|       |            #if _Py_TAIL_CALL_INTERP
  |  | 9627|       |            int opcode = LOAD_GLOBAL;
  |  | 9628|       |            (void)(opcode);
  |  | 9629|       |            #endif
  |  | 9630|    655|            frame->instr_ptr = next_instr;
  |  | 9631|    655|            next_instr += 5;
  |  | 9632|    655|            INSTRUCTION_STATS(LOAD_GLOBAL);
  |  |  ------------------
  |  |  |  |   71|    655|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 9633|  1.16k|            PREDICTED_LOAD_GLOBAL:;
  |  | 9634|  1.16k|            _Py_CODEUNIT* const this_instr = next_instr - 5;
  |  | 9635|  1.16k|            (void)this_instr;
  |  | 9636|  1.16k|            _PyStackRef *res;
  |  | 9637|  1.16k|            _PyStackRef *null;
  |  | 9638|       |            // _SPECIALIZE_LOAD_GLOBAL
  |  | 9639|  1.16k|            {
  |  | 9640|  1.16k|                uint16_t counter = read_u16(&this_instr[1].cache);
  |  | 9641|  1.16k|                (void)counter;
  |  | 9642|  1.16k|                #if ENABLE_SPECIALIZATION
  |  | 9643|  1.16k|                if (ADAPTIVE_COUNTER_TRIGGERS(counter)) {
  |  |  ------------------
  |  |  |  |  354|  1.16k|    backoff_counter_triggers(forge_backoff_counter((COUNTER)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (354:5): [True: 212, False: 949]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 9644|    212|                    PyObject *name = GETITEM(FRAME_CO_NAMES, oparg>>1);
  |  |  ------------------
  |  |  |  |  235|    212|#define GETITEM(v, i) PyTuple_GET_ITEM((v), (i))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|    212|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   19|    212|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|    212|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (9644:38): [True: 212, False: 0]
  |  |  ------------------
  |  | 9645|      0|                    next_instr = this_instr;
  |  | 9646|    212|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 9647|    212|                    _Py_Specialize_LoadGlobal(GLOBALS(), BUILTINS(), next_instr, name);
  |  |  ------------------
  |  |  |  |  325|    212|#define GLOBALS() frame->f_globals
  |  |  ------------------
  |  |                                   _Py_Specialize_LoadGlobal(GLOBALS(), BUILTINS(), next_instr, name);
  |  |  ------------------
  |  |  |  |  326|    212|#define BUILTINS() frame->f_builtins
  |  |  ------------------
  |  | 9648|    212|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 9649|    212|                    DISPATCH_SAME_OPARG();
  |  |  ------------------
  |  |  |  |  216|    212|    { \
  |  |  |  |  217|    212|        opcode = next_instr->op.code; \
  |  |  |  |  218|    212|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    212|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  219|    212|        DISPATCH_GOTO_NON_TRACING(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  134|    212|#  define DISPATCH_GOTO_NON_TRACING() goto *DISPATCH_TABLE[opcode];
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  130|    212|#  define DISPATCH_TABLE opcode_targets_table
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  220|    212|    }
  |  |  ------------------
  |  | 9650|    212|                }
  |  | 9651|  1.16k|                OPCODE_DEFERRED_INC(LOAD_GLOBAL);
  |  |  ------------------
  |  |  |  |   90|  1.16k|#define OPCODE_DEFERRED_INC(opname) ((void)0)
  |  |  ------------------
  |  | 9652|  1.16k|                ADVANCE_ADAPTIVE_COUNTER(this_instr[1].counter);
  |  |  ------------------
  |  |  |  |  357|  1.16k|    do { \
  |  |  |  |  358|  1.16k|        (COUNTER) = advance_backoff_counter((COUNTER)); \
  |  |  |  |  359|  1.16k|    } while (0);
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (359:14): [Folded, False: 1.16k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 9653|  1.16k|                #endif  /* ENABLE_SPECIALIZATION */
  |  | 9654|  1.16k|            }
  |  | 9655|       |            /* Skip 1 cache entry */
  |  | 9656|       |            /* Skip 1 cache entry */
  |  | 9657|       |            /* Skip 1 cache entry */
  |  | 9658|       |            // _LOAD_GLOBAL
  |  | 9659|      0|            {
  |  | 9660|  1.16k|                res = &stack_pointer[0];
  |  | 9661|  1.16k|                PyObject *name = GETITEM(FRAME_CO_NAMES, oparg>>1);
  |  |  ------------------
  |  |  |  |  235|  1.16k|#define GETITEM(v, i) PyTuple_GET_ITEM((v), (i))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|  1.16k|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   19|  1.16k|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|    949|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (9661:34): [True: 949, False: 212]
  |  |  ------------------
  |  | 9662|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 9663|    949|                _PyEval_LoadGlobalStackRef(GLOBALS(), BUILTINS(), name, res);
  |  |  ------------------
  |  |  |  |  325|    949|#define GLOBALS() frame->f_globals
  |  |  ------------------
  |  |                               _PyEval_LoadGlobalStackRef(GLOBALS(), BUILTINS(), name, res);
  |  |  ------------------
  |  |  |  |  326|    949|#define BUILTINS() frame->f_builtins
  |  |  ------------------
  |  | 9664|    949|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 9665|    949|                if (PyStackRef_IsNull(*res)) {
  |  |  ------------------
  |  |  |  |  470|    949|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|    949|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|    949|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (470:32): [True: 0, False: 949]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 9666|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 9667|      0|                }
  |  | 9668|    949|            }
  |  | 9669|       |            // _PUSH_NULL_CONDITIONAL
  |  | 9670|    949|            {
  |  | 9671|    949|                null = &stack_pointer[1];
  |  | 9672|    949|                if (oparg & 1) {
  |  |  ------------------
  |  |  |  Branch (9672:21): [True: 488, False: 461]
  |  |  ------------------
  |  | 9673|    488|                    null[0] = PyStackRef_NULL;
  |  | 9674|    488|                }
  |  | 9675|    949|            }
  |  | 9676|    949|            stack_pointer += 1 + (oparg & 1);
  |  | 9677|    949|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    949|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 9678|    949|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    949|    { \
  |  |  |  |  201|    949|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    949|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    949|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    949|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    949|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    949|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    949|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    949|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 949]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    949|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    949|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    949|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    949|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    949|    }
  |  |  ------------------
  |  |  |  Branch (9678:13): [True: 949, False: 0]
  |  |  ------------------
  |  | 9679|    949|        }
  |  | 9680|       |
  |  | 9681|    754|        TARGET(LOAD_GLOBAL_BUILTIN) {
  |  |  ------------------
  |  |  |  |  132|    754|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 9682|       |            #if _Py_TAIL_CALL_INTERP
  |  | 9683|       |            int opcode = LOAD_GLOBAL_BUILTIN;
  |  | 9684|       |            (void)(opcode);
  |  | 9685|       |            #endif
  |  | 9686|    754|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 9687|    754|            (void)this_instr;
  |  | 9688|    754|            frame->instr_ptr = next_instr;
  |  | 9689|    754|            next_instr += 5;
  |  | 9690|    754|            INSTRUCTION_STATS(LOAD_GLOBAL_BUILTIN);
  |  |  ------------------
  |  |  |  |   71|    754|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 9691|    754|            static_assert(INLINE_CACHE_ENTRIES_LOAD_GLOBAL == 4, "incorrect cache size");
  |  | 9692|    754|            _PyStackRef res;
  |  | 9693|    754|            _PyStackRef *null;
  |  | 9694|       |            /* Skip 1 cache entry */
  |  | 9695|       |            // _GUARD_GLOBALS_VERSION
  |  | 9696|    754|            {
  |  | 9697|    754|                uint16_t version = read_u16(&this_instr[2].cache);
  |  | 9698|    754|                PyDictObject *dict = (PyDictObject *)GLOBALS();
  |  |  ------------------
  |  |  |  |  325|    754|#define GLOBALS() frame->f_globals
  |  |  ------------------
  |  | 9699|    754|                if (!PyDict_CheckExact(dict)) {
  |  |  ------------------
  |  |  |  |   19|    754|#define PyDict_CheckExact(op) Py_IS_TYPE((op), &PyDict_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|    754|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|    754|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|    754|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (9699:21): [True: 0, False: 754]
  |  |  ------------------
  |  | 9700|      0|                    UPDATE_MISS_STATS(LOAD_GLOBAL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 9701|      0|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_GLOBAL));
  |  |  ------------------
  |  |  |  Branch (9701:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 9702|      0|                    JUMP_TO_PREDICTED(LOAD_GLOBAL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 9703|      0|                }
  |  | 9704|    754|                PyDictKeysObject *keys = FT_ATOMIC_LOAD_PTR_ACQUIRE(dict->ma_keys);
  |  |  ------------------
  |  |  |  |  150|    754|#define FT_ATOMIC_LOAD_PTR_ACQUIRE(value) value
  |  |  ------------------
  |  | 9705|    754|                if (FT_ATOMIC_LOAD_UINT32_RELAXED(keys->dk_version) != version) {
  |  |  ------------------
  |  |  |  |  159|    754|#define FT_ATOMIC_LOAD_UINT32_RELAXED(value) value
  |  |  ------------------
  |  |  |  Branch (9705:21): [True: 182, False: 572]
  |  |  ------------------
  |  | 9706|    182|                    UPDATE_MISS_STATS(LOAD_GLOBAL);
  |  |  ------------------
  |  |  |  |  298|    182|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 9707|    182|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_GLOBAL));
  |  |  ------------------
  |  |  |  Branch (9707:21): [True: 182, False: 0]
  |  |  ------------------
  |  | 9708|    182|                    JUMP_TO_PREDICTED(LOAD_GLOBAL);
  |  |  ------------------
  |  |  |  |  136|    182|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 9709|      0|                }
  |  | 9710|    754|                assert(keys->dk_kind == DICT_KEYS_UNICODE);
  |  |  ------------------
  |  |  |  Branch (9710:17): [True: 572, False: 0]
  |  |  ------------------
  |  | 9711|    572|            }
  |  | 9712|       |            // _LOAD_GLOBAL_BUILTINS
  |  | 9713|    572|            {
  |  | 9714|    572|                uint16_t version = read_u16(&this_instr[3].cache);
  |  | 9715|    572|                uint16_t index = read_u16(&this_instr[4].cache);
  |  | 9716|    572|                PyDictObject *dict = (PyDictObject *)BUILTINS();
  |  |  ------------------
  |  |  |  |  326|    572|#define BUILTINS() frame->f_builtins
  |  |  ------------------
  |  | 9717|    572|                if (!PyDict_CheckExact(dict)) {
  |  |  ------------------
  |  |  |  |   19|    572|#define PyDict_CheckExact(op) Py_IS_TYPE((op), &PyDict_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|    572|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|    572|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|    572|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (9717:21): [True: 0, False: 572]
  |  |  ------------------
  |  | 9718|      0|                    UPDATE_MISS_STATS(LOAD_GLOBAL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 9719|      0|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_GLOBAL));
  |  |  ------------------
  |  |  |  Branch (9719:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 9720|      0|                    JUMP_TO_PREDICTED(LOAD_GLOBAL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 9721|      0|                }
  |  | 9722|    572|                PyDictKeysObject *keys = FT_ATOMIC_LOAD_PTR_ACQUIRE(dict->ma_keys);
  |  |  ------------------
  |  |  |  |  150|    572|#define FT_ATOMIC_LOAD_PTR_ACQUIRE(value) value
  |  |  ------------------
  |  | 9723|    572|                if (FT_ATOMIC_LOAD_UINT32_RELAXED(keys->dk_version) != version) {
  |  |  ------------------
  |  |  |  |  159|    572|#define FT_ATOMIC_LOAD_UINT32_RELAXED(value) value
  |  |  ------------------
  |  |  |  Branch (9723:21): [True: 213, False: 359]
  |  |  ------------------
  |  | 9724|    213|                    UPDATE_MISS_STATS(LOAD_GLOBAL);
  |  |  ------------------
  |  |  |  |  298|    213|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 9725|    213|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_GLOBAL));
  |  |  ------------------
  |  |  |  Branch (9725:21): [True: 213, False: 0]
  |  |  ------------------
  |  | 9726|    213|                    JUMP_TO_PREDICTED(LOAD_GLOBAL);
  |  |  ------------------
  |  |  |  |  136|    213|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 9727|      0|                }
  |  | 9728|    572|                assert(keys->dk_kind == DICT_KEYS_UNICODE);
  |  |  ------------------
  |  |  |  Branch (9728:17): [True: 359, False: 0]
  |  |  ------------------
  |  | 9729|    359|                PyDictUnicodeEntry *entries = DK_UNICODE_ENTRIES(keys);
  |  | 9730|    359|                PyObject *res_o = FT_ATOMIC_LOAD_PTR_RELAXED(entries[index].me_value);
  |  |  ------------------
  |  |  |  |  153|    359|#define FT_ATOMIC_LOAD_PTR_RELAXED(value) value
  |  |  ------------------
  |  | 9731|    359|                if (res_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (9731:21): [True: 0, False: 359]
  |  |  ------------------
  |  | 9732|      0|                    UPDATE_MISS_STATS(LOAD_GLOBAL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 9733|      0|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_GLOBAL));
  |  |  ------------------
  |  |  |  Branch (9733:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 9734|      0|                    JUMP_TO_PREDICTED(LOAD_GLOBAL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 9735|      0|                }
  |  | 9736|       |                #if Py_GIL_DISABLED
  |  | 9737|       |                int increfed = _Py_TryIncrefCompareStackRef(&entries[index].me_value, res_o, &res);
  |  | 9738|       |                if (!increfed) {
  |  | 9739|       |                    UPDATE_MISS_STATS(LOAD_GLOBAL);
  |  | 9740|       |                    assert(_PyOpcode_Deopt[opcode] == (LOAD_GLOBAL));
  |  | 9741|       |                    JUMP_TO_PREDICTED(LOAD_GLOBAL);
  |  | 9742|       |                }
  |  | 9743|       |                #else
  |  | 9744|    359|                res = PyStackRef_FromPyObjectNew(res_o);
  |  |  ------------------
  |  |  |  |  599|    359|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    359|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    359|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 9745|    359|                #endif
  |  | 9746|    359|                STAT_INC(LOAD_GLOBAL, hit);
  |  |  ------------------
  |  |  |  |   73|    359|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 9747|    359|            }
  |  | 9748|       |            // _PUSH_NULL_CONDITIONAL
  |  | 9749|      0|            {
  |  | 9750|    359|                null = &stack_pointer[1];
  |  | 9751|    359|                if (oparg & 1) {
  |  |  ------------------
  |  |  |  Branch (9751:21): [True: 232, False: 127]
  |  |  ------------------
  |  | 9752|    232|                    null[0] = PyStackRef_NULL;
  |  | 9753|    232|                }
  |  | 9754|    359|            }
  |  | 9755|    359|            stack_pointer[0] = res;
  |  | 9756|    359|            stack_pointer += 1 + (oparg & 1);
  |  | 9757|    359|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    359|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 9758|    359|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    359|    { \
  |  |  |  |  201|    359|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    359|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    359|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    359|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    359|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    359|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    359|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    359|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 359]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    359|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    359|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    359|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    359|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    359|    }
  |  |  ------------------
  |  |  |  Branch (9758:13): [True: 359, False: 0]
  |  |  ------------------
  |  | 9759|    359|        }
  |  | 9760|       |
  |  | 9761|  2.16k|        TARGET(LOAD_GLOBAL_MODULE) {
  |  |  ------------------
  |  |  |  |  132|  2.16k|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 9762|       |            #if _Py_TAIL_CALL_INTERP
  |  | 9763|       |            int opcode = LOAD_GLOBAL_MODULE;
  |  | 9764|       |            (void)(opcode);
  |  | 9765|       |            #endif
  |  | 9766|  2.16k|            _Py_CODEUNIT* const this_instr = next_instr;
  |  | 9767|  2.16k|            (void)this_instr;
  |  | 9768|  2.16k|            frame->instr_ptr = next_instr;
  |  | 9769|  2.16k|            next_instr += 5;
  |  | 9770|  2.16k|            INSTRUCTION_STATS(LOAD_GLOBAL_MODULE);
  |  |  ------------------
  |  |  |  |   71|  2.16k|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 9771|  2.16k|            static_assert(INLINE_CACHE_ENTRIES_LOAD_GLOBAL == 4, "incorrect cache size");
  |  | 9772|  2.16k|            _PyStackRef res;
  |  | 9773|  2.16k|            _PyStackRef *null;
  |  | 9774|       |            /* Skip 1 cache entry */
  |  | 9775|       |            // _NOP
  |  | 9776|  2.16k|            {
  |  | 9777|  2.16k|            }
  |  | 9778|       |            // _LOAD_GLOBAL_MODULE
  |  | 9779|  2.16k|            {
  |  | 9780|  2.16k|                uint16_t version = read_u16(&this_instr[2].cache);
  |  | 9781|  2.16k|                uint16_t index = read_u16(&this_instr[4].cache);
  |  | 9782|  2.16k|                PyDictObject *dict = (PyDictObject *)GLOBALS();
  |  |  ------------------
  |  |  |  |  325|  2.16k|#define GLOBALS() frame->f_globals
  |  |  ------------------
  |  | 9783|  2.16k|                if (!PyDict_CheckExact(dict)) {
  |  |  ------------------
  |  |  |  |   19|  2.16k|#define PyDict_CheckExact(op) Py_IS_TYPE((op), &PyDict_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|  2.16k|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|  2.16k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|  2.16k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (9783:21): [True: 0, False: 2.16k]
  |  |  ------------------
  |  | 9784|      0|                    UPDATE_MISS_STATS(LOAD_GLOBAL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 9785|      0|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_GLOBAL));
  |  |  ------------------
  |  |  |  Branch (9785:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 9786|      0|                    JUMP_TO_PREDICTED(LOAD_GLOBAL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 9787|      0|                }
  |  | 9788|  2.16k|                PyDictKeysObject *keys = FT_ATOMIC_LOAD_PTR_ACQUIRE(dict->ma_keys);
  |  |  ------------------
  |  |  |  |  150|  2.16k|#define FT_ATOMIC_LOAD_PTR_ACQUIRE(value) value
  |  |  ------------------
  |  | 9789|  2.16k|                if (FT_ATOMIC_LOAD_UINT32_RELAXED(keys->dk_version) != version) {
  |  |  ------------------
  |  |  |  |  159|  2.16k|#define FT_ATOMIC_LOAD_UINT32_RELAXED(value) value
  |  |  ------------------
  |  |  |  Branch (9789:21): [True: 111, False: 2.05k]
  |  |  ------------------
  |  | 9790|    111|                    UPDATE_MISS_STATS(LOAD_GLOBAL);
  |  |  ------------------
  |  |  |  |  298|    111|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 9791|    111|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_GLOBAL));
  |  |  ------------------
  |  |  |  Branch (9791:21): [True: 111, False: 0]
  |  |  ------------------
  |  | 9792|    111|                    JUMP_TO_PREDICTED(LOAD_GLOBAL);
  |  |  ------------------
  |  |  |  |  136|    111|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 9793|      0|                }
  |  | 9794|  2.16k|                assert(keys->dk_kind == DICT_KEYS_UNICODE);
  |  |  ------------------
  |  |  |  Branch (9794:17): [True: 2.05k, False: 0]
  |  |  ------------------
  |  | 9795|  2.05k|                PyDictUnicodeEntry *entries = DK_UNICODE_ENTRIES(keys);
  |  | 9796|  2.05k|                assert(index < DK_SIZE(keys));
  |  |  ------------------
  |  |  |  Branch (9796:17): [True: 2.05k, False: 0]
  |  |  ------------------
  |  | 9797|  2.05k|                PyObject *res_o = FT_ATOMIC_LOAD_PTR_RELAXED(entries[index].me_value);
  |  |  ------------------
  |  |  |  |  153|  2.05k|#define FT_ATOMIC_LOAD_PTR_RELAXED(value) value
  |  |  ------------------
  |  | 9798|  2.05k|                if (res_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (9798:21): [True: 0, False: 2.05k]
  |  |  ------------------
  |  | 9799|      0|                    UPDATE_MISS_STATS(LOAD_GLOBAL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  | 9800|      0|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_GLOBAL));
  |  |  ------------------
  |  |  |  Branch (9800:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 9801|      0|                    JUMP_TO_PREDICTED(LOAD_GLOBAL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  | 9802|      0|                }
  |  | 9803|       |                #if Py_GIL_DISABLED
  |  | 9804|       |                int increfed = _Py_TryIncrefCompareStackRef(&entries[index].me_value, res_o, &res);
  |  | 9805|       |                if (!increfed) {
  |  | 9806|       |                    UPDATE_MISS_STATS(LOAD_GLOBAL);
  |  | 9807|       |                    assert(_PyOpcode_Deopt[opcode] == (LOAD_GLOBAL));
  |  | 9808|       |                    JUMP_TO_PREDICTED(LOAD_GLOBAL);
  |  | 9809|       |                }
  |  | 9810|       |                #else
  |  | 9811|  2.05k|                res = PyStackRef_FromPyObjectNew(res_o);
  |  |  ------------------
  |  |  |  |  599|  2.05k|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|  2.05k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|  2.05k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 9812|  2.05k|                #endif
  |  | 9813|  2.05k|                STAT_INC(LOAD_GLOBAL, hit);
  |  |  ------------------
  |  |  |  |   73|  2.05k|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  | 9814|  2.05k|            }
  |  | 9815|       |            // _PUSH_NULL_CONDITIONAL
  |  | 9816|      0|            {
  |  | 9817|  2.05k|                null = &stack_pointer[1];
  |  | 9818|  2.05k|                if (oparg & 1) {
  |  |  ------------------
  |  |  |  Branch (9818:21): [True: 626, False: 1.42k]
  |  |  ------------------
  |  | 9819|    626|                    null[0] = PyStackRef_NULL;
  |  | 9820|    626|                }
  |  | 9821|  2.05k|            }
  |  | 9822|  2.05k|            stack_pointer[0] = res;
  |  | 9823|  2.05k|            stack_pointer += 1 + (oparg & 1);
  |  | 9824|  2.05k|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|  2.05k|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 9825|  2.05k|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|  2.05k|    { \
  |  |  |  |  201|  2.05k|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|  2.05k|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|  2.05k|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|  2.05k|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|  2.05k|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|  2.05k|        opcode = word.op.code; \
  |  |  |  |  |  |  253|  2.05k|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|  2.05k|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 2.05k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|  2.05k|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|  2.05k|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|  2.05k|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|  2.05k|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|  2.05k|    }
  |  |  ------------------
  |  |  |  Branch (9825:13): [True: 2.05k, False: 0]
  |  |  ------------------
  |  | 9826|  2.05k|        }
  |  | 9827|       |
  |  | 9828|     74|        TARGET(LOAD_LOCALS) {
  |  |  ------------------
  |  |  |  |  132|     74|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 9829|       |            #if _Py_TAIL_CALL_INTERP
  |  | 9830|       |            int opcode = LOAD_LOCALS;
  |  | 9831|       |            (void)(opcode);
  |  | 9832|       |            #endif
  |  | 9833|     74|            frame->instr_ptr = next_instr;
  |  | 9834|     74|            next_instr += 1;
  |  | 9835|     74|            INSTRUCTION_STATS(LOAD_LOCALS);
  |  |  ------------------
  |  |  |  |   71|     74|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 9836|     74|            _PyStackRef locals;
  |  | 9837|     74|            PyObject *l = LOCALS();
  |  |  ------------------
  |  |  |  |  327|     74|#define LOCALS() frame->f_locals
  |  |  ------------------
  |  | 9838|     74|            if (l == NULL) {
  |  |  ------------------
  |  |  |  Branch (9838:17): [True: 0, False: 74]
  |  |  ------------------
  |  | 9839|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 9840|      0|                _PyErr_SetString(tstate, PyExc_SystemError,
  |  | 9841|      0|                                 "no locals found");
  |  | 9842|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 9843|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 9844|      0|            }
  |  | 9845|     74|            locals = PyStackRef_FromPyObjectNew(l);
  |  |  ------------------
  |  |  |  |  599|     74|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     74|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     74|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 9846|     74|            stack_pointer[0] = locals;
  |  | 9847|     74|            stack_pointer += 1;
  |  | 9848|     74|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     74|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 9849|     74|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     74|    { \
  |  |  |  |  201|     74|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     74|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     74|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     74|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     74|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     74|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     74|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     74|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 74]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     74|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     74|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     74|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     74|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     74|    }
  |  |  ------------------
  |  |  |  Branch (9849:13): [True: 74, False: 0]
  |  |  ------------------
  |  | 9850|     74|        }
  |  | 9851|       |
  |  | 9852|    835|        TARGET(LOAD_NAME) {
  |  |  ------------------
  |  |  |  |  132|    835|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 9853|       |            #if _Py_TAIL_CALL_INTERP
  |  | 9854|       |            int opcode = LOAD_NAME;
  |  | 9855|       |            (void)(opcode);
  |  | 9856|       |            #endif
  |  | 9857|    835|            frame->instr_ptr = next_instr;
  |  | 9858|    835|            next_instr += 1;
  |  | 9859|    835|            INSTRUCTION_STATS(LOAD_NAME);
  |  |  ------------------
  |  |  |  |   71|    835|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 9860|    835|            _PyStackRef v;
  |  | 9861|    835|            PyObject *name = GETITEM(FRAME_CO_NAMES, oparg);
  |  |  ------------------
  |  |  |  |  235|    835|#define GETITEM(v, i) PyTuple_GET_ITEM((v), (i))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|    835|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   19|    835|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|    835|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (9861:30): [True: 835, False: 0]
  |  |  ------------------
  |  | 9862|      0|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 9863|    835|            PyObject *v_o = _PyEval_LoadName(tstate, frame, name);
  |  | 9864|    835|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 9865|    835|            if (v_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (9865:17): [True: 0, False: 835]
  |  |  ------------------
  |  | 9866|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 9867|      0|            }
  |  | 9868|    835|            if (PyLazyImport_CheckExact(v_o)) {
  |  |  ------------------
  |  |  |  |   15|    835|#define PyLazyImport_CheckExact(op) Py_IS_TYPE((op), &PyLazyImport_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|    835|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|    835|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|    835|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (65:5): [True: 0, False: 835]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 9869|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 9870|      0|                PyObject *l_v = _PyImport_LoadLazyImportTstate(tstate, v_o);
  |  | 9871|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 9872|      0|                if (l_v == NULL) {
  |  |  ------------------
  |  |  |  Branch (9872:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 9873|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 9874|      0|                    Py_DECREF(v_o);
  |  |  ------------------
  |  |  |  |   80|      0|    do { \
  |  |  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   84|      0|            break; \
  |  |  |  |   85|      0|        } \
  |  |  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |   91|      0|        } \
  |  |  |  |   92|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 9875|      0|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 9876|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 9877|      0|                }
  |  | 9878|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 9879|      0|                int err = PyDict_SetItem(GLOBALS(), name, l_v);
  |  |  ------------------
  |  |  |  |  325|      0|#define GLOBALS() frame->f_globals
  |  |  ------------------
  |  | 9880|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 9881|      0|                if (err < 0) {
  |  |  ------------------
  |  |  |  Branch (9881:21): [True: 0, False: 0]
  |  |  ------------------
  |  | 9882|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 9883|      0|                    Py_DECREF(v_o);
  |  |  ------------------
  |  |  |  |   80|      0|    do { \
  |  |  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   84|      0|            break; \
  |  |  |  |   85|      0|        } \
  |  |  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |   91|      0|        } \
  |  |  |  |   92|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 9884|      0|                    Py_DECREF(l_v);
  |  |  ------------------
  |  |  |  |   80|      0|    do { \
  |  |  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   84|      0|            break; \
  |  |  |  |   85|      0|        } \
  |  |  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |   91|      0|        } \
  |  |  |  |   92|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 9885|      0|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 9886|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 9887|      0|                }
  |  | 9888|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 9889|      0|                Py_SETREF(v_o, l_v);
  |  |  ------------------
  |  |  |  |  352|      0|    do { \
  |  |  |  |  353|      0|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  ------------------
  |  |  |  |  354|      0|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  ------------------
  |  |  |  |  355|      0|        *_tmp_dst_ptr = (src); \
  |  |  |  |  356|      0|        Py_DECREF(_tmp_old_dst); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   80|      0|    do { \
  |  |  |  |  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|            break; \
  |  |  |  |  |  |   85|      0|        } \
  |  |  |  |  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |  |  |   91|      0|        } \
  |  |  |  |  |  |   92|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  357|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (357:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 9890|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 9891|      0|            }
  |  | 9892|    835|            v = PyStackRef_FromPyObjectSteal(v_o);
  |  | 9893|    835|            stack_pointer[0] = v;
  |  | 9894|    835|            stack_pointer += 1;
  |  | 9895|    835|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    835|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 9896|    835|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    835|    { \
  |  |  |  |  201|    835|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    835|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    835|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    835|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    835|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    835|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    835|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    835|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 835]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    835|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    835|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    835|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    835|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    835|    }
  |  |  ------------------
  |  |  |  Branch (9896:13): [True: 835, False: 0]
  |  |  ------------------
  |  | 9897|    835|        }
  |  | 9898|       |
  |  | 9899|    713|        TARGET(LOAD_SMALL_INT) {
  |  |  ------------------
  |  |  |  |  132|    713|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 9900|       |            #if _Py_TAIL_CALL_INTERP
  |  | 9901|       |            int opcode = LOAD_SMALL_INT;
  |  | 9902|       |            (void)(opcode);
  |  | 9903|       |            #endif
  |  | 9904|    713|            frame->instr_ptr = next_instr;
  |  | 9905|    713|            next_instr += 1;
  |  | 9906|    713|            INSTRUCTION_STATS(LOAD_SMALL_INT);
  |  |  ------------------
  |  |  |  |   71|    713|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 9907|    713|            _PyStackRef value;
  |  | 9908|    713|            assert(oparg < _PY_NSMALLPOSINTS);
  |  |  ------------------
  |  |  |  Branch (9908:13): [True: 713, False: 0]
  |  |  ------------------
  |  | 9909|    713|            PyObject *obj = (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + oparg];
  |  |  ------------------
  |  |  |  |   59|    713|#define _PyLong_SMALL_INTS _Py_SINGLETON(small_ints)
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|    713|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|    713|    _PyRuntime.static_objects.NAME
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                           PyObject *obj = (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + oparg];
  |  |  ------------------
  |  |  |  |   98|    713|#define _PY_NSMALLNEGINTS           5
  |  |  ------------------
  |  | 9910|    713|            value = PyStackRef_FromPyObjectBorrow(obj);
  |  | 9911|    713|            stack_pointer[0] = value;
  |  | 9912|    713|            stack_pointer += 1;
  |  | 9913|    713|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    713|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 9914|    713|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    713|    { \
  |  |  |  |  201|    713|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    713|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    713|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    713|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    713|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    713|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    713|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    713|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 713]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    713|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    713|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    713|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    713|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    713|    }
  |  |  ------------------
  |  |  |  Branch (9914:13): [True: 713, False: 0]
  |  |  ------------------
  |  | 9915|    713|        }
  |  | 9916|       |
  |  | 9917|    312|        TARGET(LOAD_SPECIAL) {
  |  |  ------------------
  |  |  |  |  132|    312|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 9918|       |            #if _Py_TAIL_CALL_INTERP
  |  | 9919|       |            int opcode = LOAD_SPECIAL;
  |  | 9920|       |            (void)(opcode);
  |  | 9921|       |            #endif
  |  | 9922|    312|            frame->instr_ptr = next_instr;
  |  | 9923|    312|            next_instr += 1;
  |  | 9924|    312|            INSTRUCTION_STATS(LOAD_SPECIAL);
  |  |  ------------------
  |  |  |  |   71|    312|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 9925|    312|            _PyStackRef self;
  |  | 9926|    312|            _PyStackRef *method_and_self;
  |  | 9927|       |            // _INSERT_NULL
  |  | 9928|    312|            {
  |  | 9929|    312|                self = stack_pointer[-1];
  |  | 9930|    312|                method_and_self = &stack_pointer[-1];
  |  | 9931|    312|                method_and_self[1] = self;
  |  | 9932|    312|                method_and_self[0] = PyStackRef_NULL;
  |  | 9933|    312|            }
  |  | 9934|       |            // _LOAD_SPECIAL
  |  | 9935|    312|            {
  |  | 9936|    312|                method_and_self = &stack_pointer[-1];
  |  | 9937|    312|                PyObject *name = _Py_SpecialMethods[oparg].name;
  |  | 9938|    312|                stack_pointer += 1;
  |  | 9939|    312|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    312|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  | 9940|    312|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 9941|    312|                int err = _PyObject_LookupSpecialMethod(name, method_and_self);
  |  | 9942|    312|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 9943|    312|                if (err <= 0) {
  |  |  ------------------
  |  |  |  Branch (9943:21): [True: 0, False: 312]
  |  |  ------------------
  |  | 9944|      0|                    if (err == 0) {
  |  |  ------------------
  |  |  |  Branch (9944:25): [True: 0, False: 0]
  |  |  ------------------
  |  | 9945|      0|                        PyObject *owner = PyStackRef_AsPyObjectBorrow(method_and_self[1]);
  |  | 9946|      0|                        _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 9947|      0|                        const char *errfmt = _PyEval_SpecialMethodCanSuggest(owner, oparg)
  |  |  ------------------
  |  |  |  Branch (9947:46): [True: 0, False: 0]
  |  |  ------------------
  |  | 9948|      0|                        ? _Py_SpecialMethods[oparg].error_suggestion
  |  | 9949|      0|                    : _Py_SpecialMethods[oparg].error;
  |  | 9950|      0|                        stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 9951|      0|                        assert(!_PyErr_Occurred(tstate));
  |  |  ------------------
  |  |  |  Branch (9951:25): [True: 0, False: 0]
  |  |  ------------------
  |  | 9952|      0|                        assert(errfmt != NULL);
  |  |  ------------------
  |  |  |  Branch (9952:25): [True: 0, False: 0]
  |  |  ------------------
  |  | 9953|      0|                        _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 9954|      0|                        _PyErr_Format(tstate, PyExc_TypeError, errfmt, owner);
  |  | 9955|      0|                        stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 9956|      0|                    }
  |  | 9957|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  | 9958|      0|                }
  |  | 9959|    312|            }
  |  | 9960|    312|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    312|    { \
  |  |  |  |  201|    312|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    312|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    312|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    312|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    312|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    312|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    312|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    312|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 312]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    312|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    312|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    312|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    312|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    312|    }
  |  |  ------------------
  |  |  |  Branch (9960:13): [True: 312, False: 0]
  |  |  ------------------
  |  | 9961|    312|        }
  |  | 9962|       |
  |  | 9963|      7|        TARGET(LOAD_SUPER_ATTR) {
  |  |  ------------------
  |  |  |  |  132|      7|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  | 9964|       |            #if _Py_TAIL_CALL_INTERP
  |  | 9965|       |            int opcode = LOAD_SUPER_ATTR;
  |  | 9966|       |            (void)(opcode);
  |  | 9967|       |            #endif
  |  | 9968|      7|            frame->instr_ptr = next_instr;
  |  | 9969|      7|            next_instr += 2;
  |  | 9970|      7|            INSTRUCTION_STATS(LOAD_SUPER_ATTR);
  |  |  ------------------
  |  |  |  |   71|      7|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  | 9971|      7|            PREDICTED_LOAD_SUPER_ATTR:;
  |  | 9972|      7|            _Py_CODEUNIT* const this_instr = next_instr - 2;
  |  | 9973|      7|            (void)this_instr;
  |  | 9974|      7|            opcode = LOAD_SUPER_ATTR;
  |  |  ------------------
  |  |  |  |  108|      7|#define LOAD_SUPER_ATTR                         95
  |  |  ------------------
  |  | 9975|      7|            _PyStackRef global_super_st;
  |  | 9976|      7|            _PyStackRef class_st;
  |  | 9977|      7|            _PyStackRef self_st;
  |  | 9978|      7|            _PyStackRef attr;
  |  | 9979|      7|            _PyStackRef *null;
  |  | 9980|       |            // _SPECIALIZE_LOAD_SUPER_ATTR
  |  | 9981|      7|            {
  |  | 9982|      7|                class_st = stack_pointer[-2];
  |  | 9983|      7|                global_super_st = stack_pointer[-3];
  |  | 9984|      7|                uint16_t counter = read_u16(&this_instr[1].cache);
  |  | 9985|      7|                (void)counter;
  |  | 9986|      7|                #if ENABLE_SPECIALIZATION
  |  | 9987|      7|                int load_method = oparg & 1;
  |  | 9988|      7|                if (ADAPTIVE_COUNTER_TRIGGERS(counter)) {
  |  |  ------------------
  |  |  |  |  354|      7|    backoff_counter_triggers(forge_backoff_counter((COUNTER)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (354:5): [True: 3, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 9989|      3|                    next_instr = this_instr;
  |  | 9990|      3|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  | 9991|      3|                    _Py_Specialize_LoadSuperAttr(global_super_st, class_st, next_instr, load_method);
  |  | 9992|      3|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  | 9993|      3|                    DISPATCH_SAME_OPARG();
  |  |  ------------------
  |  |  |  |  216|      3|    { \
  |  |  |  |  217|      3|        opcode = next_instr->op.code; \
  |  |  |  |  218|      3|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      3|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  219|      3|        DISPATCH_GOTO_NON_TRACING(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  134|      3|#  define DISPATCH_GOTO_NON_TRACING() goto *DISPATCH_TABLE[opcode];
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  130|      3|#  define DISPATCH_TABLE opcode_targets_table
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  220|      3|    }
  |  |  ------------------
  |  | 9994|      3|                }
  |  | 9995|      7|                OPCODE_DEFERRED_INC(LOAD_SUPER_ATTR);
  |  |  ------------------
  |  |  |  |   90|      7|#define OPCODE_DEFERRED_INC(opname) ((void)0)
  |  |  ------------------
  |  | 9996|      7|                ADVANCE_ADAPTIVE_COUNTER(this_instr[1].counter);
  |  |  ------------------
  |  |  |  |  357|      7|    do { \
  |  |  |  |  358|      7|        (COUNTER) = advance_backoff_counter((COUNTER)); \
  |  |  |  |  359|      7|    } while (0);
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (359:14): [Folded, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 9997|      7|                #endif  /* ENABLE_SPECIALIZATION */
  |  | 9998|      7|            }
  |  | 9999|       |            // _LOAD_SUPER_ATTR
  |  |10000|      7|            {
  |  |10001|      7|                self_st = stack_pointer[-1];
  |  |10002|      7|                PyObject *global_super = PyStackRef_AsPyObjectBorrow(global_super_st);
  |  |10003|      7|                PyObject *class = PyStackRef_AsPyObjectBorrow(class_st);
  |  |10004|      7|                PyObject *self = PyStackRef_AsPyObjectBorrow(self_st);
  |  |10005|      7|                if (opcode == INSTRUMENTED_LOAD_SUPER_ATTR) {
  |  |  ------------------
  |  |  |  |  239|      7|#define INSTRUMENTED_LOAD_SUPER_ATTR           248
  |  |  ------------------
  |  |  |  Branch (10005:21): [True: 0, False: 7]
  |  |  ------------------
  |  |10006|      0|                    PyObject *arg = oparg & 2 ? class : &_PyInstrumentation_MISSING;
  |  |  ------------------
  |  |  |  Branch (10006:37): [True: 0, False: 0]
  |  |  ------------------
  |  |10007|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |10008|      0|                    int err = _Py_call_instrumentation_2args(
  |  |10009|      0|                        tstate, PY_MONITORING_EVENT_CALL,
  |  |  ------------------
  |  |  |  |   18|      0|#define PY_MONITORING_EVENT_CALL 4
  |  |  ------------------
  |  |10010|      0|                        frame, this_instr, global_super, arg);
  |  |10011|      0|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |10012|      0|                    if (err) {
  |  |  ------------------
  |  |  |  Branch (10012:25): [True: 0, False: 0]
  |  |  ------------------
  |  |10013|      0|                        _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |10014|      0|                        _PyStackRef tmp = self_st;
  |  |10015|      0|                        self_st = PyStackRef_NULL;
  |  |10016|      0|                        stack_pointer[-1] = self_st;
  |  |10017|      0|                        PyStackRef_CLOSE(tmp);
  |  |10018|      0|                        tmp = class_st;
  |  |10019|      0|                        class_st = PyStackRef_NULL;
  |  |10020|      0|                        stack_pointer[-2] = class_st;
  |  |10021|      0|                        PyStackRef_CLOSE(tmp);
  |  |10022|      0|                        tmp = global_super_st;
  |  |10023|      0|                        global_super_st = PyStackRef_NULL;
  |  |10024|      0|                        stack_pointer[-3] = global_super_st;
  |  |10025|      0|                        PyStackRef_CLOSE(tmp);
  |  |10026|      0|                        stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |10027|      0|                        stack_pointer += -3;
  |  |10028|      0|                        ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |10029|      0|                        JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |10030|      0|                    }
  |  |10031|      0|                }
  |  |10032|      7|                PyObject *super;
  |  |10033|      7|                {
  |  |10034|      7|                    PyObject *stack[] = {class, self};
  |  |10035|      7|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |10036|      7|                    super = PyObject_Vectorcall(global_super, stack, oparg & 2, NULL);
  |  |10037|      7|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |10038|      7|                }
  |  |10039|      7|                if (opcode == INSTRUMENTED_LOAD_SUPER_ATTR) {
  |  |  ------------------
  |  |  |  |  239|      7|#define INSTRUMENTED_LOAD_SUPER_ATTR           248
  |  |  ------------------
  |  |  |  Branch (10039:21): [True: 0, False: 7]
  |  |  ------------------
  |  |10040|      0|                    PyObject *arg = oparg & 2 ? class : &_PyInstrumentation_MISSING;
  |  |  ------------------
  |  |  |  Branch (10040:37): [True: 0, False: 0]
  |  |  ------------------
  |  |10041|      0|                    if (super == NULL) {
  |  |  ------------------
  |  |  |  Branch (10041:25): [True: 0, False: 0]
  |  |  ------------------
  |  |10042|      0|                        _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |10043|      0|                        _Py_call_instrumentation_exc2(
  |  |10044|      0|                            tstate, PY_MONITORING_EVENT_C_RAISE,
  |  |  ------------------
  |  |  |  |   45|      0|#define PY_MONITORING_EVENT_C_RAISE 17
  |  |  ------------------
  |  |10045|      0|                            frame, this_instr, global_super, arg);
  |  |10046|      0|                        stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |10047|      0|                    }
  |  |10048|      0|                    else {
  |  |10049|      0|                        _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |10050|      0|                        int err = _Py_call_instrumentation_2args(
  |  |10051|      0|                            tstate, PY_MONITORING_EVENT_C_RETURN,
  |  |  ------------------
  |  |  |  |   44|      0|#define PY_MONITORING_EVENT_C_RETURN 16
  |  |  ------------------
  |  |10052|      0|                            frame, this_instr, global_super, arg);
  |  |10053|      0|                        stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |10054|      0|                        if (err < 0) {
  |  |  ------------------
  |  |  |  Branch (10054:29): [True: 0, False: 0]
  |  |  ------------------
  |  |10055|      0|                            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |10056|      0|                            Py_CLEAR(super);
  |  |  ------------------
  |  |  |  |  484|      0|    do { \
  |  |  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  ------------------
  |  |  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  ------------------
  |  |  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  |  |  ------------------
  |  |  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   80|      0|    do { \
  |  |  |  |  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|            break; \
  |  |  |  |  |  |   85|      0|        } \
  |  |  |  |  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |  |  |   91|      0|        } \
  |  |  |  |  |  |   92|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  490|      0|        } \
  |  |  |  |  491|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |10057|      0|                            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |10058|      0|                        }
  |  |10059|      0|                    }
  |  |10060|      0|                }
  |  |10061|      7|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |10062|      7|                _PyStackRef tmp = self_st;
  |  |10063|      7|                self_st = PyStackRef_NULL;
  |  |10064|      7|                stack_pointer[-1] = self_st;
  |  |10065|      7|                PyStackRef_CLOSE(tmp);
  |  |10066|      7|                tmp = class_st;
  |  |10067|      7|                class_st = PyStackRef_NULL;
  |  |10068|      7|                stack_pointer[-2] = class_st;
  |  |10069|      7|                PyStackRef_CLOSE(tmp);
  |  |10070|      7|                tmp = global_super_st;
  |  |10071|      7|                global_super_st = PyStackRef_NULL;
  |  |10072|      7|                stack_pointer[-3] = global_super_st;
  |  |10073|      7|                PyStackRef_CLOSE(tmp);
  |  |10074|      7|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |10075|      7|                stack_pointer += -3;
  |  |10076|      7|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      7|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |10077|      7|                if (super == NULL) {
  |  |  ------------------
  |  |  |  Branch (10077:21): [True: 0, False: 7]
  |  |  ------------------
  |  |10078|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |10079|      0|                }
  |  |10080|      7|                PyObject *name = GETITEM(FRAME_CO_NAMES, oparg >> 2);
  |  |  ------------------
  |  |  |  |  235|      7|#define GETITEM(v, i) PyTuple_GET_ITEM((v), (i))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      7|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   19|      7|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (10080:34): [True: 4, False: 3]
  |  |  ------------------
  |  |10081|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |10082|      4|                PyObject *attr_o = PyObject_GetAttr(super, name);
  |  |10083|      4|                Py_DECREF(super);
  |  |  ------------------
  |  |  |  |   80|      4|    do { \
  |  |  |  |   81|      4|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   82|      4|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      4|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   84|      0|            break; \
  |  |  |  |   85|      0|        } \
  |  |  |  |   86|      4|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      4|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   87|      4|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (87:13): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   88|      4|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      4|    do { \
  |  |  |  |  |  |  113|      4|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  114|      4|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  118|      4|    } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   89|      4|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  213|      4|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   90|      4|            (*dealloc)(op); \
  |  |  |  |   91|      4|        } \
  |  |  |  |   92|      4|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (92:14): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |10084|      4|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |10085|      4|                if (attr_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (10085:21): [True: 0, False: 4]
  |  |  ------------------
  |  |10086|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |10087|      0|                }
  |  |10088|      4|                attr = PyStackRef_FromPyObjectSteal(attr_o);
  |  |10089|      4|            }
  |  |10090|       |            // _PUSH_NULL_CONDITIONAL
  |  |10091|      0|            {
  |  |10092|      4|                null = &stack_pointer[1];
  |  |10093|      4|                if (oparg & 1) {
  |  |  ------------------
  |  |  |  Branch (10093:21): [True: 2, False: 2]
  |  |  ------------------
  |  |10094|      2|                    null[0] = PyStackRef_NULL;
  |  |10095|      2|                }
  |  |10096|      4|            }
  |  |10097|      4|            stack_pointer[0] = attr;
  |  |10098|      4|            stack_pointer += 1 + (oparg & 1);
  |  |10099|      4|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      4|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |10100|      4|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      4|    { \
  |  |  |  |  201|      4|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      4|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      4|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      4|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      4|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      4|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      4|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      4|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      4|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      4|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      4|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      4|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      4|    }
  |  |  ------------------
  |  |  |  Branch (10100:13): [True: 4, False: 0]
  |  |  ------------------
  |  |10101|      4|        }
  |  |10102|       |
  |  |10103|     28|        TARGET(LOAD_SUPER_ATTR_ATTR) {
  |  |  ------------------
  |  |  |  |  132|     28|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |10104|       |            #if _Py_TAIL_CALL_INTERP
  |  |10105|       |            int opcode = LOAD_SUPER_ATTR_ATTR;
  |  |10106|       |            (void)(opcode);
  |  |10107|       |            #endif
  |  |10108|     28|            _Py_CODEUNIT* const this_instr = next_instr;
  |  |10109|     28|            (void)this_instr;
  |  |10110|     28|            frame->instr_ptr = next_instr;
  |  |10111|     28|            next_instr += 2;
  |  |10112|     28|            INSTRUCTION_STATS(LOAD_SUPER_ATTR_ATTR);
  |  |  ------------------
  |  |  |  |   71|     28|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |10113|     28|            static_assert(INLINE_CACHE_ENTRIES_LOAD_SUPER_ATTR == 1, "incorrect cache size");
  |  |10114|     28|            _PyStackRef global_super_st;
  |  |10115|     28|            _PyStackRef class_st;
  |  |10116|     28|            _PyStackRef self_st;
  |  |10117|     28|            _PyStackRef attr_st;
  |  |10118|       |            /* Skip 1 cache entry */
  |  |10119|     28|            self_st = stack_pointer[-1];
  |  |10120|     28|            class_st = stack_pointer[-2];
  |  |10121|     28|            global_super_st = stack_pointer[-3];
  |  |10122|     28|            PyObject *global_super = PyStackRef_AsPyObjectBorrow(global_super_st);
  |  |10123|     28|            PyObject *class = PyStackRef_AsPyObjectBorrow(class_st);
  |  |10124|     28|            PyObject *self = PyStackRef_AsPyObjectBorrow(self_st);
  |  |10125|     28|            assert(!(oparg & 1));
  |  |  ------------------
  |  |  |  Branch (10125:13): [True: 28, False: 0]
  |  |  ------------------
  |  |10126|     28|            if (global_super != (PyObject *)&PySuper_Type) {
  |  |  ------------------
  |  |  |  Branch (10126:17): [True: 0, False: 28]
  |  |  ------------------
  |  |10127|      0|                UPDATE_MISS_STATS(LOAD_SUPER_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |10128|      0|                assert(_PyOpcode_Deopt[opcode] == (LOAD_SUPER_ATTR));
  |  |  ------------------
  |  |  |  Branch (10128:17): [True: 0, False: 0]
  |  |  ------------------
  |  |10129|      0|                JUMP_TO_PREDICTED(LOAD_SUPER_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |10130|      0|            }
  |  |10131|     28|            if (!PyType_Check(class)) {
  |  |  ------------------
  |  |  |  |  766|     28|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     28|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     28|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (10131:17): [True: 0, False: 28]
  |  |  ------------------
  |  |10132|      0|                UPDATE_MISS_STATS(LOAD_SUPER_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |10133|      0|                assert(_PyOpcode_Deopt[opcode] == (LOAD_SUPER_ATTR));
  |  |  ------------------
  |  |  |  Branch (10133:17): [True: 0, False: 0]
  |  |  ------------------
  |  |10134|      0|                JUMP_TO_PREDICTED(LOAD_SUPER_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |10135|      0|            }
  |  |10136|     28|            STAT_INC(LOAD_SUPER_ATTR, hit);
  |  |  ------------------
  |  |  |  |   73|     28|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  |10137|     28|            PyObject *name = GETITEM(FRAME_CO_NAMES, oparg >> 2);
  |  |  ------------------
  |  |  |  |  235|     28|#define GETITEM(v, i) PyTuple_GET_ITEM((v), (i))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|     28|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   19|     28|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     28|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (10137:30): [True: 28, False: 0]
  |  |  ------------------
  |  |10138|      0|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |10139|     28|            PyObject *attr = _PySuper_Lookup((PyTypeObject *)class, self, name, NULL);
  |  |10140|     28|            _PyStackRef tmp = self_st;
  |  |10141|     28|            self_st = PyStackRef_NULL;
  |  |10142|     28|            stack_pointer[-1] = self_st;
  |  |10143|     28|            PyStackRef_CLOSE(tmp);
  |  |10144|     28|            tmp = class_st;
  |  |10145|     28|            class_st = PyStackRef_NULL;
  |  |10146|     28|            stack_pointer[-2] = class_st;
  |  |10147|     28|            PyStackRef_CLOSE(tmp);
  |  |10148|     28|            tmp = global_super_st;
  |  |10149|     28|            global_super_st = PyStackRef_NULL;
  |  |10150|     28|            stack_pointer[-3] = global_super_st;
  |  |10151|     28|            PyStackRef_CLOSE(tmp);
  |  |10152|     28|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |10153|     28|            stack_pointer += -3;
  |  |10154|     28|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     28|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |10155|     28|            if (attr == NULL) {
  |  |  ------------------
  |  |  |  Branch (10155:17): [True: 0, False: 28]
  |  |  ------------------
  |  |10156|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |10157|      0|            }
  |  |10158|     28|            attr_st = PyStackRef_FromPyObjectSteal(attr);
  |  |10159|     28|            stack_pointer[0] = attr_st;
  |  |10160|     28|            stack_pointer += 1;
  |  |10161|     28|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     28|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |10162|     28|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     28|    { \
  |  |  |  |  201|     28|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     28|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     28|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     28|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     28|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     28|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     28|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     28|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 28]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     28|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     28|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     28|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     28|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     28|    }
  |  |  ------------------
  |  |  |  Branch (10162:13): [True: 28, False: 0]
  |  |  ------------------
  |  |10163|     28|        }
  |  |10164|       |
  |  |10165|     58|        TARGET(LOAD_SUPER_ATTR_METHOD) {
  |  |  ------------------
  |  |  |  |  132|     58|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |10166|       |            #if _Py_TAIL_CALL_INTERP
  |  |10167|       |            int opcode = LOAD_SUPER_ATTR_METHOD;
  |  |10168|       |            (void)(opcode);
  |  |10169|       |            #endif
  |  |10170|     58|            _Py_CODEUNIT* const this_instr = next_instr;
  |  |10171|     58|            (void)this_instr;
  |  |10172|     58|            frame->instr_ptr = next_instr;
  |  |10173|     58|            next_instr += 2;
  |  |10174|     58|            INSTRUCTION_STATS(LOAD_SUPER_ATTR_METHOD);
  |  |  ------------------
  |  |  |  |   71|     58|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |10175|     58|            static_assert(INLINE_CACHE_ENTRIES_LOAD_SUPER_ATTR == 1, "incorrect cache size");
  |  |10176|     58|            _PyStackRef global_super_st;
  |  |10177|     58|            _PyStackRef class_st;
  |  |10178|     58|            _PyStackRef self_st;
  |  |10179|     58|            _PyStackRef attr;
  |  |10180|     58|            _PyStackRef self_or_null;
  |  |10181|       |            /* Skip 1 cache entry */
  |  |10182|       |            // _GUARD_LOAD_SUPER_ATTR_METHOD
  |  |10183|     58|            {
  |  |10184|     58|                class_st = stack_pointer[-2];
  |  |10185|     58|                global_super_st = stack_pointer[-3];
  |  |10186|     58|                PyObject *global_super = PyStackRef_AsPyObjectBorrow(global_super_st);
  |  |10187|     58|                PyObject *class = PyStackRef_AsPyObjectBorrow(class_st);
  |  |10188|     58|                assert(oparg & 1);
  |  |  ------------------
  |  |  |  Branch (10188:17): [True: 58, False: 0]
  |  |  ------------------
  |  |10189|     58|                if (global_super != (PyObject *)&PySuper_Type) {
  |  |  ------------------
  |  |  |  Branch (10189:21): [True: 0, False: 58]
  |  |  ------------------
  |  |10190|      0|                    UPDATE_MISS_STATS(LOAD_SUPER_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |10191|      0|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_SUPER_ATTR));
  |  |  ------------------
  |  |  |  Branch (10191:21): [True: 0, False: 0]
  |  |  ------------------
  |  |10192|      0|                    JUMP_TO_PREDICTED(LOAD_SUPER_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |10193|      0|                }
  |  |10194|     58|                if (!PyType_Check(class)) {
  |  |  ------------------
  |  |  |  |  766|     58|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     58|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     58|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (10194:21): [True: 0, False: 58]
  |  |  ------------------
  |  |10195|      0|                    UPDATE_MISS_STATS(LOAD_SUPER_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |10196|      0|                    assert(_PyOpcode_Deopt[opcode] == (LOAD_SUPER_ATTR));
  |  |  ------------------
  |  |  |  Branch (10196:21): [True: 0, False: 0]
  |  |  ------------------
  |  |10197|      0|                    JUMP_TO_PREDICTED(LOAD_SUPER_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |10198|      0|                }
  |  |10199|     58|            }
  |  |10200|       |            // _LOAD_SUPER_ATTR_METHOD
  |  |10201|     58|            {
  |  |10202|     58|                self_st = stack_pointer[-1];
  |  |10203|     58|                PyObject *class = PyStackRef_AsPyObjectBorrow(class_st);
  |  |10204|     58|                PyObject *self = PyStackRef_AsPyObjectBorrow(self_st);
  |  |10205|     58|                STAT_INC(LOAD_SUPER_ATTR, hit);
  |  |  ------------------
  |  |  |  |   73|     58|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  |10206|     58|                PyObject *name = GETITEM(FRAME_CO_NAMES, oparg >> 2);
  |  |  ------------------
  |  |  |  |  235|     58|#define GETITEM(v, i) PyTuple_GET_ITEM((v), (i))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|     58|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   19|     58|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     58|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (10206:34): [True: 58, False: 0]
  |  |  ------------------
  |  |10207|      0|                PyTypeObject *cls = (PyTypeObject *)class;
  |  |10208|     58|                int method_found = 0;
  |  |10209|     58|                PyObject *attr_o;
  |  |10210|     58|                {
  |  |10211|     58|                    int *method_found_ptr = &method_found;
  |  |10212|     58|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |10213|     58|                    attr_o = _PySuper_Lookup(cls, self, name,
  |  |10214|     58|                        Py_TYPE(self)->tp_getattro == PyObject_GenericGetAttr ? method_found_ptr : NULL);
  |  |  ------------------
  |  |  |  |  213|     58|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     58|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     58|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (10214:25): [True: 29, False: 29]
  |  |  ------------------
  |  |10215|     58|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |10216|     58|                }
  |  |10217|     58|                if (attr_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (10217:21): [True: 0, False: 58]
  |  |  ------------------
  |  |10218|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |10219|      0|                }
  |  |10220|     58|                if (method_found) {
  |  |  ------------------
  |  |  |  Branch (10220:21): [True: 29, False: 29]
  |  |  ------------------
  |  |10221|     29|                    self_or_null = self_st;
  |  |10222|     29|                } else {
  |  |10223|     29|                    stack_pointer += -1;
  |  |10224|     29|                    ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     29|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |10225|     29|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |10226|     29|                    PyStackRef_CLOSE(self_st);
  |  |10227|     29|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |10228|     29|                    self_or_null = PyStackRef_NULL;
  |  |10229|     29|                    stack_pointer += 1;
  |  |10230|     29|                }
  |  |10231|     58|                stack_pointer += -1;
  |  |10232|     58|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     58|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |10233|     58|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |10234|     58|                _PyStackRef tmp = global_super_st;
  |  |10235|     58|                global_super_st = self_or_null;
  |  |10236|     58|                stack_pointer[-2] = global_super_st;
  |  |10237|     58|                PyStackRef_CLOSE(tmp);
  |  |10238|     58|                tmp = class_st;
  |  |10239|     58|                class_st = PyStackRef_NULL;
  |  |10240|     58|                stack_pointer[-1] = class_st;
  |  |10241|     58|                PyStackRef_CLOSE(tmp);
  |  |10242|     58|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |10243|     58|                stack_pointer += -2;
  |  |10244|     58|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     58|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |10245|     58|                attr = PyStackRef_FromPyObjectSteal(attr_o);
  |  |10246|     58|            }
  |  |10247|      0|            stack_pointer[0] = attr;
  |  |10248|     58|            stack_pointer[1] = self_or_null;
  |  |10249|     58|            stack_pointer += 2;
  |  |10250|     58|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     58|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |10251|     58|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     58|    { \
  |  |  |  |  201|     58|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     58|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     58|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     58|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     58|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     58|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     58|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     58|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 58]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     58|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     58|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     58|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     58|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     58|    }
  |  |  ------------------
  |  |  |  Branch (10251:13): [True: 58, False: 0]
  |  |  ------------------
  |  |10252|     58|        }
  |  |10253|       |
  |  |10254|    105|        TARGET(MAKE_CELL) {
  |  |  ------------------
  |  |  |  |  132|    105|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |10255|       |            #if _Py_TAIL_CALL_INTERP
  |  |10256|       |            int opcode = MAKE_CELL;
  |  |10257|       |            (void)(opcode);
  |  |10258|       |            #endif
  |  |10259|    105|            frame->instr_ptr = next_instr;
  |  |10260|    105|            next_instr += 1;
  |  |10261|    105|            INSTRUCTION_STATS(MAKE_CELL);
  |  |  ------------------
  |  |  |  |   71|    105|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |10262|    105|            PyObject *initial = PyStackRef_AsPyObjectBorrow(GETLOCAL(oparg));
  |  |  ------------------
  |  |  |  |  284|    105|#define GETLOCAL(i)     (frame->localsplus[i])
  |  |  ------------------
  |  |10263|    105|            PyObject *cell = PyCell_New(initial);
  |  |10264|    105|            if (cell == NULL) {
  |  |  ------------------
  |  |  |  Branch (10264:17): [True: 0, False: 105]
  |  |  ------------------
  |  |10265|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |10266|      0|            }
  |  |10267|    105|            _PyStackRef tmp = GETLOCAL(oparg);
  |  |  ------------------
  |  |  |  |  284|    105|#define GETLOCAL(i)     (frame->localsplus[i])
  |  |  ------------------
  |  |10268|    105|            GETLOCAL(oparg) = PyStackRef_FromPyObjectSteal(cell);
  |  |  ------------------
  |  |  |  |  284|    105|#define GETLOCAL(i)     (frame->localsplus[i])
  |  |  ------------------
  |  |10269|    105|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |10270|    105|            PyStackRef_XCLOSE(tmp);
  |  |10271|    105|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |10272|    105|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    105|    { \
  |  |  |  |  201|    105|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    105|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    105|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    105|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    105|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    105|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    105|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    105|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 105]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    105|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    105|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    105|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    105|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    105|    }
  |  |  ------------------
  |  |  |  Branch (10272:13): [True: 105, False: 0]
  |  |  ------------------
  |  |10273|    105|        }
  |  |10274|       |
  |  |10275|    736|        TARGET(MAKE_FUNCTION) {
  |  |  ------------------
  |  |  |  |  132|    736|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |10276|       |            #if _Py_TAIL_CALL_INTERP
  |  |10277|       |            int opcode = MAKE_FUNCTION;
  |  |10278|       |            (void)(opcode);
  |  |10279|       |            #endif
  |  |10280|    736|            frame->instr_ptr = next_instr;
  |  |10281|    736|            next_instr += 1;
  |  |10282|    736|            INSTRUCTION_STATS(MAKE_FUNCTION);
  |  |  ------------------
  |  |  |  |   71|    736|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |10283|    736|            _PyStackRef codeobj_st;
  |  |10284|    736|            _PyStackRef func;
  |  |10285|    736|            _PyStackRef co;
  |  |10286|    736|            _PyStackRef value;
  |  |10287|       |            // _MAKE_FUNCTION
  |  |10288|    736|            {
  |  |10289|    736|                codeobj_st = stack_pointer[-1];
  |  |10290|    736|                PyObject *codeobj = PyStackRef_AsPyObjectBorrow(codeobj_st);
  |  |10291|    736|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |10292|    736|                PyFunctionObject *func_obj = (PyFunctionObject *)
  |  |10293|    736|                PyFunction_New(codeobj, GLOBALS());
  |  |  ------------------
  |  |  |  |  325|    736|#define GLOBALS() frame->f_globals
  |  |  ------------------
  |  |10294|    736|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |10295|    736|                if (func_obj == NULL) {
  |  |  ------------------
  |  |  |  Branch (10295:21): [True: 0, False: 736]
  |  |  ------------------
  |  |10296|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |10297|      0|                }
  |  |10298|    736|                co = codeobj_st;
  |  |10299|    736|                _PyFunction_SetVersion(
  |  |10300|    736|                                   func_obj, ((PyCodeObject *)codeobj)->co_version);
  |  |10301|    736|                func = PyStackRef_FromPyObjectSteal((PyObject *)func_obj);
  |  |10302|    736|            }
  |  |10303|       |            // _POP_TOP
  |  |10304|      0|            {
  |  |10305|    736|                value = co;
  |  |10306|    736|                stack_pointer[-1] = func;
  |  |10307|    736|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |10308|    736|                PyStackRef_XCLOSE(value);
  |  |10309|    736|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |10310|    736|            }
  |  |10311|    736|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    736|    { \
  |  |  |  |  201|    736|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    736|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    736|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    736|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    736|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    736|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    736|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    736|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 736]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    736|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    736|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    736|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    736|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    736|    }
  |  |  ------------------
  |  |  |  Branch (10311:13): [True: 736, False: 0]
  |  |  ------------------
  |  |10312|    736|        }
  |  |10313|       |
  |  |10314|    340|        TARGET(MAP_ADD) {
  |  |  ------------------
  |  |  |  |  132|    340|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |10315|       |            #if _Py_TAIL_CALL_INTERP
  |  |10316|       |            int opcode = MAP_ADD;
  |  |10317|       |            (void)(opcode);
  |  |10318|       |            #endif
  |  |10319|    340|            frame->instr_ptr = next_instr;
  |  |10320|    340|            next_instr += 1;
  |  |10321|    340|            INSTRUCTION_STATS(MAP_ADD);
  |  |  ------------------
  |  |  |  |   71|    340|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |10322|    340|            _PyStackRef dict_st;
  |  |10323|    340|            _PyStackRef key;
  |  |10324|    340|            _PyStackRef value;
  |  |10325|    340|            value = stack_pointer[-1];
  |  |10326|    340|            key = stack_pointer[-2];
  |  |10327|    340|            dict_st = stack_pointer[-3 - (oparg - 1)];
  |  |10328|    340|            PyObject *dict = PyStackRef_AsPyObjectBorrow(dict_st);
  |  |10329|    340|            assert(PyDict_CheckExact(dict));
  |  |  ------------------
  |  |  |  Branch (10329:13): [True: 340, False: 0]
  |  |  ------------------
  |  |10330|    340|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |10331|    340|            int err = _PyDict_SetItem_Take2(
  |  |10332|    340|                (PyDictObject *)dict,
  |  |10333|    340|                PyStackRef_AsPyObjectSteal(key),
  |  |10334|    340|                PyStackRef_AsPyObjectSteal(value)
  |  |10335|    340|            );
  |  |10336|    340|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |10337|    340|            if (err != 0) {
  |  |  ------------------
  |  |  |  Branch (10337:17): [True: 0, False: 340]
  |  |  ------------------
  |  |10338|      0|                JUMP_TO_LABEL(pop_2_error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |10339|      0|            }
  |  |10340|    340|            stack_pointer += -2;
  |  |10341|    340|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    340|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |10342|    340|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    340|    { \
  |  |  |  |  201|    340|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    340|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    340|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    340|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    340|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    340|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    340|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    340|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 340]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    340|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    340|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    340|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    340|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    340|    }
  |  |  ------------------
  |  |  |  Branch (10342:13): [True: 340, False: 0]
  |  |  ------------------
  |  |10343|    340|        }
  |  |10344|       |
  |  |10345|      0|        TARGET(MATCH_CLASS) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |10346|       |            #if _Py_TAIL_CALL_INTERP
  |  |10347|       |            int opcode = MATCH_CLASS;
  |  |10348|       |            (void)(opcode);
  |  |10349|       |            #endif
  |  |10350|      0|            frame->instr_ptr = next_instr;
  |  |10351|      0|            next_instr += 1;
  |  |10352|      0|            INSTRUCTION_STATS(MATCH_CLASS);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |10353|      0|            _PyStackRef subject;
  |  |10354|      0|            _PyStackRef type;
  |  |10355|      0|            _PyStackRef names;
  |  |10356|      0|            _PyStackRef attrs;
  |  |10357|      0|            _PyStackRef s;
  |  |10358|      0|            _PyStackRef tp;
  |  |10359|      0|            _PyStackRef n;
  |  |10360|      0|            _PyStackRef value;
  |  |10361|       |            // _MATCH_CLASS
  |  |10362|      0|            {
  |  |10363|      0|                names = stack_pointer[-1];
  |  |10364|      0|                type = stack_pointer[-2];
  |  |10365|      0|                subject = stack_pointer[-3];
  |  |10366|      0|                assert(PyTuple_CheckExact(PyStackRef_AsPyObjectBorrow(names)));
  |  |  ------------------
  |  |  |  Branch (10366:17): [True: 0, False: 0]
  |  |  ------------------
  |  |10367|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |10368|      0|                PyObject *attrs_o = _PyEval_MatchClass(tstate,
  |  |10369|      0|                    PyStackRef_AsPyObjectBorrow(subject),
  |  |10370|      0|                    PyStackRef_AsPyObjectBorrow(type), oparg,
  |  |10371|      0|                    PyStackRef_AsPyObjectBorrow(names));
  |  |10372|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |10373|      0|                if (attrs_o) {
  |  |  ------------------
  |  |  |  Branch (10373:21): [True: 0, False: 0]
  |  |  ------------------
  |  |10374|      0|                    assert(PyTuple_CheckExact(attrs_o));
  |  |  ------------------
  |  |  |  Branch (10374:21): [True: 0, False: 0]
  |  |  ------------------
  |  |10375|      0|                    attrs = PyStackRef_FromPyObjectSteal(attrs_o);
  |  |10376|      0|                }
  |  |10377|      0|                else {
  |  |10378|      0|                    if (_PyErr_Occurred(tstate)) {
  |  |  ------------------
  |  |  |  Branch (10378:25): [True: 0, False: 0]
  |  |  ------------------
  |  |10379|      0|                        JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |10380|      0|                    }
  |  |10381|      0|                    attrs = PyStackRef_None;
  |  |  ------------------
  |  |  |  |  473|      0|#define PyStackRef_None ((_PyStackRef){.bits = ((uintptr_t)&_Py_NoneStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |10382|      0|                }
  |  |10383|      0|                s = subject;
  |  |10384|      0|                tp = type;
  |  |10385|      0|                n = names;
  |  |10386|      0|            }
  |  |10387|       |            // _POP_TOP
  |  |10388|      0|            {
  |  |10389|      0|                value = n;
  |  |10390|      0|                stack_pointer[-3] = attrs;
  |  |10391|      0|                stack_pointer[-2] = s;
  |  |10392|      0|                stack_pointer[-1] = tp;
  |  |10393|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |10394|      0|                PyStackRef_XCLOSE(value);
  |  |10395|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |10396|      0|            }
  |  |10397|       |            // _POP_TOP
  |  |10398|      0|            {
  |  |10399|      0|                value = tp;
  |  |10400|      0|                stack_pointer += -1;
  |  |10401|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |10402|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |10403|      0|                PyStackRef_XCLOSE(value);
  |  |10404|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |10405|      0|            }
  |  |10406|       |            // _POP_TOP
  |  |10407|      0|            {
  |  |10408|      0|                value = s;
  |  |10409|      0|                stack_pointer += -1;
  |  |10410|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |10411|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |10412|      0|                PyStackRef_XCLOSE(value);
  |  |10413|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |10414|      0|            }
  |  |10415|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (10415:13): [True: 0, False: 0]
  |  |  ------------------
  |  |10416|      0|        }
  |  |10417|       |
  |  |10418|      0|        TARGET(MATCH_KEYS) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |10419|       |            #if _Py_TAIL_CALL_INTERP
  |  |10420|       |            int opcode = MATCH_KEYS;
  |  |10421|       |            (void)(opcode);
  |  |10422|       |            #endif
  |  |10423|      0|            frame->instr_ptr = next_instr;
  |  |10424|      0|            next_instr += 1;
  |  |10425|      0|            INSTRUCTION_STATS(MATCH_KEYS);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |10426|      0|            _PyStackRef subject;
  |  |10427|      0|            _PyStackRef keys;
  |  |10428|      0|            _PyStackRef values_or_none;
  |  |10429|      0|            keys = stack_pointer[-1];
  |  |10430|      0|            subject = stack_pointer[-2];
  |  |10431|      0|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |10432|      0|            PyObject *values_or_none_o = _PyEval_MatchKeys(tstate,
  |  |10433|      0|                PyStackRef_AsPyObjectBorrow(subject), PyStackRef_AsPyObjectBorrow(keys));
  |  |10434|      0|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |10435|      0|            if (values_or_none_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (10435:17): [True: 0, False: 0]
  |  |  ------------------
  |  |10436|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |10437|      0|            }
  |  |10438|      0|            values_or_none = PyStackRef_FromPyObjectSteal(values_or_none_o);
  |  |10439|      0|            stack_pointer[0] = values_or_none;
  |  |10440|      0|            stack_pointer += 1;
  |  |10441|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |10442|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (10442:13): [True: 0, False: 0]
  |  |  ------------------
  |  |10443|      0|        }
  |  |10444|       |
  |  |10445|      0|        TARGET(MATCH_MAPPING) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |10446|       |            #if _Py_TAIL_CALL_INTERP
  |  |10447|       |            int opcode = MATCH_MAPPING;
  |  |10448|       |            (void)(opcode);
  |  |10449|       |            #endif
  |  |10450|      0|            frame->instr_ptr = next_instr;
  |  |10451|      0|            next_instr += 1;
  |  |10452|      0|            INSTRUCTION_STATS(MATCH_MAPPING);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |10453|      0|            _PyStackRef subject;
  |  |10454|      0|            _PyStackRef res;
  |  |10455|      0|            subject = stack_pointer[-1];
  |  |10456|      0|            int match = PyStackRef_TYPE(subject)->tp_flags & Py_TPFLAGS_MAPPING;
  |  |  ------------------
  |  |  |  |  492|      0|#define Py_TPFLAGS_MAPPING (1 << 6)
  |  |  ------------------
  |  |10457|      0|            res = match ? PyStackRef_True : PyStackRef_False;
  |  |  ------------------
  |  |  |  |  471|      0|#define PyStackRef_True ((_PyStackRef){.bits = ((uintptr_t)&_Py_TrueStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                           res = match ? PyStackRef_True : PyStackRef_False;
  |  |  ------------------
  |  |  |  |  472|      0|#define PyStackRef_False ((_PyStackRef){.bits = ((uintptr_t)&_Py_FalseStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (10457:19): [True: 0, False: 0]
  |  |  ------------------
  |  |10458|      0|            stack_pointer[0] = res;
  |  |10459|      0|            stack_pointer += 1;
  |  |10460|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |10461|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (10461:13): [True: 0, False: 0]
  |  |  ------------------
  |  |10462|      0|        }
  |  |10463|       |
  |  |10464|      0|        TARGET(MATCH_SEQUENCE) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |10465|       |            #if _Py_TAIL_CALL_INTERP
  |  |10466|       |            int opcode = MATCH_SEQUENCE;
  |  |10467|       |            (void)(opcode);
  |  |10468|       |            #endif
  |  |10469|      0|            frame->instr_ptr = next_instr;
  |  |10470|      0|            next_instr += 1;
  |  |10471|      0|            INSTRUCTION_STATS(MATCH_SEQUENCE);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |10472|      0|            _PyStackRef subject;
  |  |10473|      0|            _PyStackRef res;
  |  |10474|      0|            subject = stack_pointer[-1];
  |  |10475|      0|            int match = PyStackRef_TYPE(subject)->tp_flags & Py_TPFLAGS_SEQUENCE;
  |  |  ------------------
  |  |  |  |  490|      0|#define Py_TPFLAGS_SEQUENCE (1 << 5)
  |  |  ------------------
  |  |10476|      0|            res = match ? PyStackRef_True : PyStackRef_False;
  |  |  ------------------
  |  |  |  |  471|      0|#define PyStackRef_True ((_PyStackRef){.bits = ((uintptr_t)&_Py_TrueStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                           res = match ? PyStackRef_True : PyStackRef_False;
  |  |  ------------------
  |  |  |  |  472|      0|#define PyStackRef_False ((_PyStackRef){.bits = ((uintptr_t)&_Py_FalseStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (10476:19): [True: 0, False: 0]
  |  |  ------------------
  |  |10477|      0|            stack_pointer[0] = res;
  |  |10478|      0|            stack_pointer += 1;
  |  |10479|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |10480|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (10480:13): [True: 0, False: 0]
  |  |  ------------------
  |  |10481|      0|        }
  |  |10482|       |
  |  |10483|    662|        TARGET(NOP) {
  |  |  ------------------
  |  |  |  |  132|    662|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |10484|       |            #if _Py_TAIL_CALL_INTERP
  |  |10485|       |            int opcode = NOP;
  |  |10486|       |            (void)(opcode);
  |  |10487|       |            #endif
  |  |10488|    662|            frame->instr_ptr = next_instr;
  |  |10489|    662|            next_instr += 1;
  |  |10490|    662|            INSTRUCTION_STATS(NOP);
  |  |  ------------------
  |  |  |  |   71|    662|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |10491|    662|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    662|    { \
  |  |  |  |  201|    662|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    662|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    662|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    662|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    662|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    662|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    662|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    662|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 662]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    662|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    662|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    662|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    662|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    662|    }
  |  |  ------------------
  |  |  |  Branch (10491:13): [True: 662, False: 0]
  |  |  ------------------
  |  |10492|    662|        }
  |  |10493|       |
  |  |10494|      0|        TARGET(NOT_TAKEN) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |10495|       |            #if _Py_TAIL_CALL_INTERP
  |  |10496|       |            int opcode = NOT_TAKEN;
  |  |10497|       |            (void)(opcode);
  |  |10498|       |            #endif
  |  |10499|      0|            frame->instr_ptr = next_instr;
  |  |10500|      0|            next_instr += 1;
  |  |10501|      0|            INSTRUCTION_STATS(NOT_TAKEN);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |10502|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (10502:13): [True: 0, False: 0]
  |  |  ------------------
  |  |10503|      0|        }
  |  |10504|       |
  |  |10505|     90|        TARGET(POP_EXCEPT) {
  |  |  ------------------
  |  |  |  |  132|     90|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |10506|       |            #if _Py_TAIL_CALL_INTERP
  |  |10507|       |            int opcode = POP_EXCEPT;
  |  |10508|       |            (void)(opcode);
  |  |10509|       |            #endif
  |  |10510|     90|            frame->instr_ptr = next_instr;
  |  |10511|     90|            next_instr += 1;
  |  |10512|     90|            INSTRUCTION_STATS(POP_EXCEPT);
  |  |  ------------------
  |  |  |  |   71|     90|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |10513|     90|            _PyStackRef exc_value;
  |  |10514|     90|            exc_value = stack_pointer[-1];
  |  |10515|     90|            _PyErr_StackItem *exc_info = tstate->exc_info;
  |  |10516|     90|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |10517|     90|            Py_XSETREF(exc_info->exc_value,
  |  |  ------------------
  |  |  |  |  374|     90|    do { \
  |  |  |  |  375|     90|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  546|     90|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  ------------------
  |  |  |  |  376|     90|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  546|     90|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  ------------------
  |  |  |  |  377|    180|        *_tmp_dst_ptr = (src); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (377:26): [True: 83, False: 7]
  |  |  |  |  ------------------
  |  |  |  |  378|     90|        Py_XDECREF(_tmp_old_dst); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   69|     90|    do { \
  |  |  |  |  |  |   70|     90|        PyObject *xop = _PyObject_CAST(arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|     90|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     90|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   71|     90|        if (xop != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (71:13): [True: 90, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   72|     90|            Py_DECREF(xop); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   80|     90|    do { \
  |  |  |  |  |  |  |  |   81|     90|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|     90|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|     90|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   82|     90|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  137|     90|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  171|     90|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   37|     90|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 90]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   84|      0|            break; \
  |  |  |  |  |  |  |  |   85|      0|        } \
  |  |  |  |  |  |  |  |   86|     90|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   20|     90|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   87|     90|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (87:13): [True: 84, False: 6]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   88|     84|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  112|     84|    do { \
  |  |  |  |  |  |  |  |  |  |  113|     84|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  |  |  |  |  114|     84|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 84]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  |  |  |  |  118|     84|    } while(0)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 84]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   89|     84|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  213|     84|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  171|     84|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   37|     84|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   90|     84|            (*dealloc)(op); \
  |  |  |  |  |  |  |  |   91|     84|        } \
  |  |  |  |  |  |  |  |   92|     90|    } while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (92:14): [Folded, False: 90]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   73|     90|        } \
  |  |  |  |  |  |   74|     90|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (74:14): [Folded, False: 90]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  379|     90|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (379:14): [Folded, False: 90]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |10518|     90|                       PyStackRef_IsNone(exc_value)
  |  |10519|     90|                       ? NULL : PyStackRef_AsPyObjectSteal(exc_value));
  |  |10520|     90|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |10521|     90|            stack_pointer += -1;
  |  |10522|     90|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     90|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |10523|     90|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     90|    { \
  |  |  |  |  201|     90|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     90|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     90|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     90|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     90|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     90|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     90|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     90|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 90]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     90|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     90|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     90|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     90|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     90|    }
  |  |  ------------------
  |  |  |  Branch (10523:13): [True: 90, False: 0]
  |  |  ------------------
  |  |10524|     90|        }
  |  |10525|       |
  |  |10526|    140|        TARGET(POP_ITER) {
  |  |  ------------------
  |  |  |  |  132|    140|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |10527|       |            #if _Py_TAIL_CALL_INTERP
  |  |10528|       |            int opcode = POP_ITER;
  |  |10529|       |            (void)(opcode);
  |  |10530|       |            #endif
  |  |10531|    140|            frame->instr_ptr = next_instr;
  |  |10532|    140|            next_instr += 1;
  |  |10533|    140|            INSTRUCTION_STATS(POP_ITER);
  |  |  ------------------
  |  |  |  |   71|    140|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |10534|    140|            _PyStackRef iter;
  |  |10535|    140|            _PyStackRef index_or_null;
  |  |10536|    140|            index_or_null = stack_pointer[-1];
  |  |10537|    140|            iter = stack_pointer[-2];
  |  |10538|    140|            (void)index_or_null;
  |  |10539|    140|            stack_pointer += -2;
  |  |10540|    140|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    140|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |10541|    140|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |10542|    140|            PyStackRef_CLOSE(iter);
  |  |10543|    140|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |10544|    140|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    140|    { \
  |  |  |  |  201|    140|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    140|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    140|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    140|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    140|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    140|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    140|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    140|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 140]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    140|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    140|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    140|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    140|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    140|    }
  |  |  ------------------
  |  |  |  Branch (10544:13): [True: 140, False: 0]
  |  |  ------------------
  |  |10545|    140|        }
  |  |10546|       |
  |  |10547|  1.06k|        TARGET(POP_JUMP_IF_FALSE) {
  |  |  ------------------
  |  |  |  |  132|  1.06k|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |10548|       |            #if _Py_TAIL_CALL_INTERP
  |  |10549|       |            int opcode = POP_JUMP_IF_FALSE;
  |  |10550|       |            (void)(opcode);
  |  |10551|       |            #endif
  |  |10552|  1.06k|            _Py_CODEUNIT* const this_instr = next_instr;
  |  |10553|  1.06k|            (void)this_instr;
  |  |10554|  1.06k|            frame->instr_ptr = next_instr;
  |  |10555|  1.06k|            next_instr += 2;
  |  |10556|  1.06k|            INSTRUCTION_STATS(POP_JUMP_IF_FALSE);
  |  |  ------------------
  |  |  |  |   71|  1.06k|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |10557|  1.06k|            _PyStackRef cond;
  |  |10558|       |            /* Skip 1 cache entry */
  |  |10559|  1.06k|            cond = stack_pointer[-1];
  |  |10560|  1.06k|            assert(PyStackRef_BoolCheck(cond));
  |  |  ------------------
  |  |  |  Branch (10560:13): [True: 1.06k, False: 0]
  |  |  ------------------
  |  |10561|  1.06k|            int flag = PyStackRef_IsFalse(cond);
  |  |  ------------------
  |  |  |  |  482|  1.06k|#define PyStackRef_IsFalse(REF) ((REF).bits == (((uintptr_t)&_Py_FalseStruct) | Py_TAG_REFCNT))
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.06k|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |10562|  1.06k|            RECORD_BRANCH_TAKEN(this_instr[1].cache, flag);
  |  |  ------------------
  |  |  |  |  373|  1.06k|    FT_ATOMIC_STORE_UINT16_RELAXED(       \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|  1.06k|#define FT_ATOMIC_STORE_UINT16_RELAXED(value, new_value) value = new_value
  |  |  |  |  ------------------
  |  |  |  |  374|  1.06k|        bitset, (FT_ATOMIC_LOAD_UINT16_RELAXED(bitset) << 1) | (flag))
  |  |  ------------------
  |  |10563|  1.06k|            JUMPBY(flag ? oparg : next_instr->op.code == NOT_TAKEN);
  |  |  ------------------
  |  |  |  |  260|  2.12k|#define JUMPBY(x)       (next_instr += (x))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (260:41): [True: 633, False: 427]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |10564|  1.06k|            stack_pointer += -1;
  |  |10565|  1.06k|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|  1.06k|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |10566|  1.06k|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|  1.06k|    { \
  |  |  |  |  201|  1.06k|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|  1.06k|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|  1.06k|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|  1.06k|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|  1.06k|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|  1.06k|        opcode = word.op.code; \
  |  |  |  |  |  |  253|  1.06k|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|  1.06k|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 1.06k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|  1.06k|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|  1.06k|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|  1.06k|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|  1.06k|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|  1.06k|    }
  |  |  ------------------
  |  |  |  Branch (10566:13): [True: 1.06k, False: 0]
  |  |  ------------------
  |  |10567|  1.06k|        }
  |  |10568|       |
  |  |10569|     86|        TARGET(POP_JUMP_IF_NONE) {
  |  |  ------------------
  |  |  |  |  132|     86|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |10570|       |            #if _Py_TAIL_CALL_INTERP
  |  |10571|       |            int opcode = POP_JUMP_IF_NONE;
  |  |10572|       |            (void)(opcode);
  |  |10573|       |            #endif
  |  |10574|     86|            _Py_CODEUNIT* const this_instr = next_instr;
  |  |10575|     86|            (void)this_instr;
  |  |10576|     86|            frame->instr_ptr = next_instr;
  |  |10577|     86|            next_instr += 2;
  |  |10578|     86|            INSTRUCTION_STATS(POP_JUMP_IF_NONE);
  |  |  ------------------
  |  |  |  |   71|     86|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |10579|     86|            _PyStackRef value;
  |  |10580|     86|            _PyStackRef b;
  |  |10581|     86|            _PyStackRef cond;
  |  |10582|       |            /* Skip 1 cache entry */
  |  |10583|       |            // _IS_NONE
  |  |10584|     86|            {
  |  |10585|     86|                value = stack_pointer[-1];
  |  |10586|     86|                if (PyStackRef_IsNone(value)) {
  |  |  ------------------
  |  |  |  |  483|     86|#define PyStackRef_IsNone(REF) ((REF).bits == (((uintptr_t)&_Py_NoneStruct) | Py_TAG_REFCNT))
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     86|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (483:32): [True: 45, False: 41]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |10587|     45|                    b = PyStackRef_True;
  |  |  ------------------
  |  |  |  |  471|     45|#define PyStackRef_True ((_PyStackRef){.bits = ((uintptr_t)&_Py_TrueStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     45|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |10588|     45|                }
  |  |10589|     41|                else {
  |  |10590|     41|                    b = PyStackRef_False;
  |  |  ------------------
  |  |  |  |  472|     41|#define PyStackRef_False ((_PyStackRef){.bits = ((uintptr_t)&_Py_FalseStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     41|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |10591|     41|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |10592|     41|                    _PyStackRef tmp = value;
  |  |10593|     41|                    value = b;
  |  |10594|     41|                    stack_pointer[-1] = value;
  |  |10595|     41|                    PyStackRef_CLOSE(tmp);
  |  |10596|     41|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |10597|     41|                }
  |  |10598|     86|            }
  |  |10599|       |            // _POP_JUMP_IF_TRUE
  |  |10600|     86|            {
  |  |10601|     86|                cond = b;
  |  |10602|     86|                assert(PyStackRef_BoolCheck(cond));
  |  |  ------------------
  |  |  |  Branch (10602:17): [True: 86, False: 0]
  |  |  ------------------
  |  |10603|     86|                int flag = PyStackRef_IsTrue(cond);
  |  |  ------------------
  |  |  |  |  481|     86|#define PyStackRef_IsTrue(REF) ((REF).bits == (((uintptr_t)&_Py_TrueStruct) | Py_TAG_REFCNT))
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     86|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |10604|     86|                RECORD_BRANCH_TAKEN(this_instr[1].cache, flag);
  |  |  ------------------
  |  |  |  |  373|     86|    FT_ATOMIC_STORE_UINT16_RELAXED(       \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     86|#define FT_ATOMIC_STORE_UINT16_RELAXED(value, new_value) value = new_value
  |  |  |  |  ------------------
  |  |  |  |  374|     86|        bitset, (FT_ATOMIC_LOAD_UINT16_RELAXED(bitset) << 1) | (flag))
  |  |  ------------------
  |  |10605|     86|                JUMPBY(flag ? oparg : next_instr->op.code == NOT_TAKEN);
  |  |  ------------------
  |  |  |  |  260|    172|#define JUMPBY(x)       (next_instr += (x))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (260:41): [True: 45, False: 41]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |10606|     86|            }
  |  |10607|      0|            stack_pointer += -1;
  |  |10608|     86|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     86|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |10609|     86|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     86|    { \
  |  |  |  |  201|     86|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     86|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     86|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     86|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     86|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     86|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     86|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     86|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 86]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     86|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     86|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     86|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     86|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     86|    }
  |  |  ------------------
  |  |  |  Branch (10609:13): [True: 86, False: 0]
  |  |  ------------------
  |  |10610|     86|        }
  |  |10611|       |
  |  |10612|    550|        TARGET(POP_JUMP_IF_NOT_NONE) {
  |  |  ------------------
  |  |  |  |  132|    550|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |10613|       |            #if _Py_TAIL_CALL_INTERP
  |  |10614|       |            int opcode = POP_JUMP_IF_NOT_NONE;
  |  |10615|       |            (void)(opcode);
  |  |10616|       |            #endif
  |  |10617|    550|            _Py_CODEUNIT* const this_instr = next_instr;
  |  |10618|    550|            (void)this_instr;
  |  |10619|    550|            frame->instr_ptr = next_instr;
  |  |10620|    550|            next_instr += 2;
  |  |10621|    550|            INSTRUCTION_STATS(POP_JUMP_IF_NOT_NONE);
  |  |  ------------------
  |  |  |  |   71|    550|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |10622|    550|            _PyStackRef value;
  |  |10623|    550|            _PyStackRef b;
  |  |10624|    550|            _PyStackRef cond;
  |  |10625|       |            /* Skip 1 cache entry */
  |  |10626|       |            // _IS_NONE
  |  |10627|    550|            {
  |  |10628|    550|                value = stack_pointer[-1];
  |  |10629|    550|                if (PyStackRef_IsNone(value)) {
  |  |  ------------------
  |  |  |  |  483|    550|#define PyStackRef_IsNone(REF) ((REF).bits == (((uintptr_t)&_Py_NoneStruct) | Py_TAG_REFCNT))
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    550|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (483:32): [True: 229, False: 321]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |10630|    229|                    b = PyStackRef_True;
  |  |  ------------------
  |  |  |  |  471|    229|#define PyStackRef_True ((_PyStackRef){.bits = ((uintptr_t)&_Py_TrueStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    229|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |10631|    229|                }
  |  |10632|    321|                else {
  |  |10633|    321|                    b = PyStackRef_False;
  |  |  ------------------
  |  |  |  |  472|    321|#define PyStackRef_False ((_PyStackRef){.bits = ((uintptr_t)&_Py_FalseStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    321|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |10634|    321|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |10635|    321|                    _PyStackRef tmp = value;
  |  |10636|    321|                    value = b;
  |  |10637|    321|                    stack_pointer[-1] = value;
  |  |10638|    321|                    PyStackRef_CLOSE(tmp);
  |  |10639|    321|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |10640|    321|                }
  |  |10641|    550|            }
  |  |10642|       |            // _POP_JUMP_IF_FALSE
  |  |10643|    550|            {
  |  |10644|    550|                cond = b;
  |  |10645|    550|                assert(PyStackRef_BoolCheck(cond));
  |  |  ------------------
  |  |  |  Branch (10645:17): [True: 550, False: 0]
  |  |  ------------------
  |  |10646|    550|                int flag = PyStackRef_IsFalse(cond);
  |  |  ------------------
  |  |  |  |  482|    550|#define PyStackRef_IsFalse(REF) ((REF).bits == (((uintptr_t)&_Py_FalseStruct) | Py_TAG_REFCNT))
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    550|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |10647|    550|                RECORD_BRANCH_TAKEN(this_instr[1].cache, flag);
  |  |  ------------------
  |  |  |  |  373|    550|    FT_ATOMIC_STORE_UINT16_RELAXED(       \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    550|#define FT_ATOMIC_STORE_UINT16_RELAXED(value, new_value) value = new_value
  |  |  |  |  ------------------
  |  |  |  |  374|    550|        bitset, (FT_ATOMIC_LOAD_UINT16_RELAXED(bitset) << 1) | (flag))
  |  |  ------------------
  |  |10648|    550|                JUMPBY(flag ? oparg : next_instr->op.code == NOT_TAKEN);
  |  |  ------------------
  |  |  |  |  260|  1.10k|#define JUMPBY(x)       (next_instr += (x))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (260:41): [True: 321, False: 229]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |10649|    550|            }
  |  |10650|      0|            stack_pointer += -1;
  |  |10651|    550|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    550|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |10652|    550|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    550|    { \
  |  |  |  |  201|    550|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    550|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    550|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    550|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    550|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    550|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    550|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    550|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 550]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    550|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    550|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    550|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    550|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    550|    }
  |  |  ------------------
  |  |  |  Branch (10652:13): [True: 550, False: 0]
  |  |  ------------------
  |  |10653|    550|        }
  |  |10654|       |
  |  |10655|  1.04k|        TARGET(POP_JUMP_IF_TRUE) {
  |  |  ------------------
  |  |  |  |  132|  1.04k|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |10656|       |            #if _Py_TAIL_CALL_INTERP
  |  |10657|       |            int opcode = POP_JUMP_IF_TRUE;
  |  |10658|       |            (void)(opcode);
  |  |10659|       |            #endif
  |  |10660|  1.04k|            _Py_CODEUNIT* const this_instr = next_instr;
  |  |10661|  1.04k|            (void)this_instr;
  |  |10662|  1.04k|            frame->instr_ptr = next_instr;
  |  |10663|  1.04k|            next_instr += 2;
  |  |10664|  1.04k|            INSTRUCTION_STATS(POP_JUMP_IF_TRUE);
  |  |  ------------------
  |  |  |  |   71|  1.04k|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |10665|  1.04k|            _PyStackRef cond;
  |  |10666|       |            /* Skip 1 cache entry */
  |  |10667|  1.04k|            cond = stack_pointer[-1];
  |  |10668|  1.04k|            assert(PyStackRef_BoolCheck(cond));
  |  |  ------------------
  |  |  |  Branch (10668:13): [True: 1.04k, False: 0]
  |  |  ------------------
  |  |10669|  1.04k|            int flag = PyStackRef_IsTrue(cond);
  |  |  ------------------
  |  |  |  |  481|  1.04k|#define PyStackRef_IsTrue(REF) ((REF).bits == (((uintptr_t)&_Py_TrueStruct) | Py_TAG_REFCNT))
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.04k|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |10670|  1.04k|            RECORD_BRANCH_TAKEN(this_instr[1].cache, flag);
  |  |  ------------------
  |  |  |  |  373|  1.04k|    FT_ATOMIC_STORE_UINT16_RELAXED(       \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|  1.04k|#define FT_ATOMIC_STORE_UINT16_RELAXED(value, new_value) value = new_value
  |  |  |  |  ------------------
  |  |  |  |  374|  1.04k|        bitset, (FT_ATOMIC_LOAD_UINT16_RELAXED(bitset) << 1) | (flag))
  |  |  ------------------
  |  |10671|  1.04k|            JUMPBY(flag ? oparg : next_instr->op.code == NOT_TAKEN);
  |  |  ------------------
  |  |  |  |  260|  2.09k|#define JUMPBY(x)       (next_instr += (x))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (260:41): [True: 765, False: 282]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |10672|  1.04k|            stack_pointer += -1;
  |  |10673|  1.04k|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|  1.04k|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |10674|  1.04k|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|  1.04k|    { \
  |  |  |  |  201|  1.04k|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|  1.04k|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|  1.04k|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|  1.04k|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|  1.04k|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|  1.04k|        opcode = word.op.code; \
  |  |  |  |  |  |  253|  1.04k|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|  1.04k|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 1.04k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|  1.04k|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|  1.04k|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|  1.04k|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|  1.04k|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|  1.04k|    }
  |  |  ------------------
  |  |  |  Branch (10674:13): [True: 1.04k, False: 0]
  |  |  ------------------
  |  |10675|  1.04k|        }
  |  |10676|       |
  |  |10677|  1.50k|        TARGET(POP_TOP) {
  |  |  ------------------
  |  |  |  |  132|  1.50k|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |10678|       |            #if _Py_TAIL_CALL_INTERP
  |  |10679|       |            int opcode = POP_TOP;
  |  |10680|       |            (void)(opcode);
  |  |10681|       |            #endif
  |  |10682|  1.50k|            frame->instr_ptr = next_instr;
  |  |10683|  1.50k|            next_instr += 1;
  |  |10684|  1.50k|            INSTRUCTION_STATS(POP_TOP);
  |  |  ------------------
  |  |  |  |   71|  1.50k|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |10685|  1.50k|            _PyStackRef value;
  |  |10686|  1.50k|            value = stack_pointer[-1];
  |  |10687|  1.50k|            stack_pointer += -1;
  |  |10688|  1.50k|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|  1.50k|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |10689|  1.50k|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |10690|  1.50k|            PyStackRef_XCLOSE(value);
  |  |10691|  1.50k|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |10692|  1.50k|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|  1.50k|    { \
  |  |  |  |  201|  1.50k|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|  1.50k|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|  1.50k|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|  1.50k|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|  1.50k|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|  1.50k|        opcode = word.op.code; \
  |  |  |  |  |  |  253|  1.50k|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|  1.50k|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 1.50k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|  1.50k|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|  1.50k|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|  1.50k|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|  1.50k|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|  1.50k|    }
  |  |  ------------------
  |  |  |  Branch (10692:13): [True: 1.50k, False: 0]
  |  |  ------------------
  |  |10693|  1.50k|        }
  |  |10694|       |
  |  |10695|     90|        TARGET(PUSH_EXC_INFO) {
  |  |  ------------------
  |  |  |  |  132|     90|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |10696|       |            #if _Py_TAIL_CALL_INTERP
  |  |10697|       |            int opcode = PUSH_EXC_INFO;
  |  |10698|       |            (void)(opcode);
  |  |10699|       |            #endif
  |  |10700|     90|            frame->instr_ptr = next_instr;
  |  |10701|     90|            next_instr += 1;
  |  |10702|     90|            INSTRUCTION_STATS(PUSH_EXC_INFO);
  |  |  ------------------
  |  |  |  |   71|     90|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |10703|     90|            _PyStackRef exc;
  |  |10704|     90|            _PyStackRef prev_exc;
  |  |10705|     90|            _PyStackRef new_exc;
  |  |10706|     90|            exc = stack_pointer[-1];
  |  |10707|     90|            _PyErr_StackItem *exc_info = tstate->exc_info;
  |  |10708|     90|            if (exc_info->exc_value != NULL) {
  |  |  ------------------
  |  |  |  Branch (10708:17): [True: 7, False: 83]
  |  |  ------------------
  |  |10709|      7|                prev_exc = PyStackRef_FromPyObjectSteal(exc_info->exc_value);
  |  |10710|      7|            }
  |  |10711|     83|            else {
  |  |10712|     83|                prev_exc = PyStackRef_None;
  |  |  ------------------
  |  |  |  |  473|     83|#define PyStackRef_None ((_PyStackRef){.bits = ((uintptr_t)&_Py_NoneStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     83|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |10713|     83|            }
  |  |10714|     90|            assert(PyStackRef_ExceptionInstanceCheck(exc));
  |  |  ------------------
  |  |  |  Branch (10714:13): [True: 90, False: 0]
  |  |  ------------------
  |  |10715|     90|            exc_info->exc_value = PyStackRef_AsPyObjectNew(exc);
  |  |  ------------------
  |  |  |  |  736|     90|#define PyStackRef_AsPyObjectNew(stackref) Py_NewRef(PyStackRef_AsPyObjectBorrow(stackref))
  |  |  |  |  ------------------
  |  |  |  |  |  |  550|     90|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|     90|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     90|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |10716|     90|            new_exc = exc;
  |  |10717|     90|            stack_pointer[-1] = prev_exc;
  |  |10718|     90|            stack_pointer[0] = new_exc;
  |  |10719|     90|            stack_pointer += 1;
  |  |10720|     90|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     90|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |10721|     90|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     90|    { \
  |  |  |  |  201|     90|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     90|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     90|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     90|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     90|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     90|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     90|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     90|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 90]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     90|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     90|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     90|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     90|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     90|    }
  |  |  ------------------
  |  |  |  Branch (10721:13): [True: 90, False: 0]
  |  |  ------------------
  |  |10722|     90|        }
  |  |10723|       |
  |  |10724|    583|        TARGET(PUSH_NULL) {
  |  |  ------------------
  |  |  |  |  132|    583|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |10725|       |            #if _Py_TAIL_CALL_INTERP
  |  |10726|       |            int opcode = PUSH_NULL;
  |  |10727|       |            (void)(opcode);
  |  |10728|       |            #endif
  |  |10729|    583|            frame->instr_ptr = next_instr;
  |  |10730|    583|            next_instr += 1;
  |  |10731|    583|            INSTRUCTION_STATS(PUSH_NULL);
  |  |  ------------------
  |  |  |  |   71|    583|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |10732|    583|            _PyStackRef res;
  |  |10733|    583|            res = PyStackRef_NULL;
  |  |10734|    583|            stack_pointer[0] = res;
  |  |10735|    583|            stack_pointer += 1;
  |  |10736|    583|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    583|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |10737|    583|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    583|    { \
  |  |  |  |  201|    583|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    583|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    583|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    583|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    583|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    583|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    583|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    583|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 583]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    583|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    583|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    583|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    583|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    583|    }
  |  |  ------------------
  |  |  |  Branch (10737:13): [True: 583, False: 0]
  |  |  ------------------
  |  |10738|    583|        }
  |  |10739|       |
  |  |10740|     10|        TARGET(RAISE_VARARGS) {
  |  |  ------------------
  |  |  |  |  132|     10|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |10741|       |            #if _Py_TAIL_CALL_INTERP
  |  |10742|       |            int opcode = RAISE_VARARGS;
  |  |10743|       |            (void)(opcode);
  |  |10744|       |            #endif
  |  |10745|     10|            _Py_CODEUNIT* const this_instr = next_instr;
  |  |10746|     10|            (void)this_instr;
  |  |10747|     10|            frame->instr_ptr = next_instr;
  |  |10748|     10|            next_instr += 1;
  |  |10749|     10|            INSTRUCTION_STATS(RAISE_VARARGS);
  |  |  ------------------
  |  |  |  |   71|     10|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |10750|     10|            _PyStackRef *args;
  |  |10751|     10|            args = &stack_pointer[-oparg];
  |  |10752|     10|            assert(oparg < 3);
  |  |  ------------------
  |  |  |  Branch (10752:13): [True: 10, False: 0]
  |  |  ------------------
  |  |10753|     10|            PyObject *cause = oparg == 2 ? PyStackRef_AsPyObjectSteal(args[1]) : NULL;
  |  |  ------------------
  |  |  |  Branch (10753:31): [True: 1, False: 9]
  |  |  ------------------
  |  |10754|     10|            PyObject *exc = oparg > 0 ? PyStackRef_AsPyObjectSteal(args[0]) : NULL;
  |  |  ------------------
  |  |  |  Branch (10754:29): [True: 10, False: 0]
  |  |  ------------------
  |  |10755|     10|            stack_pointer += -oparg;
  |  |10756|     10|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     10|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |10757|     10|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |10758|     10|            int err = do_raise(tstate, exc, cause);
  |  |10759|     10|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |10760|     10|            if (err) {
  |  |  ------------------
  |  |  |  Branch (10760:17): [True: 0, False: 10]
  |  |  ------------------
  |  |10761|      0|                assert(oparg == 0);
  |  |  ------------------
  |  |  |  Branch (10761:17): [True: 0, False: 0]
  |  |  ------------------
  |  |10762|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |10763|      0|                monitor_reraise(tstate, frame, this_instr);
  |  |10764|      0|                JUMP_TO_LABEL(exception_unwind);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |10765|      0|            }
  |  |10766|     10|            JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|     10|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |10767|      0|        }
  |  |10768|       |
  |  |10769|      6|        TARGET(RERAISE) {
  |  |  ------------------
  |  |  |  |  132|      6|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |10770|       |            #if _Py_TAIL_CALL_INTERP
  |  |10771|       |            int opcode = RERAISE;
  |  |10772|       |            (void)(opcode);
  |  |10773|       |            #endif
  |  |10774|      6|            _Py_CODEUNIT* const this_instr = next_instr;
  |  |10775|      6|            (void)this_instr;
  |  |10776|      6|            frame->instr_ptr = next_instr;
  |  |10777|      6|            next_instr += 1;
  |  |10778|      6|            INSTRUCTION_STATS(RERAISE);
  |  |  ------------------
  |  |  |  |   71|      6|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |10779|      6|            _PyStackRef *values;
  |  |10780|      6|            _PyStackRef exc_st;
  |  |10781|      6|            exc_st = stack_pointer[-1];
  |  |10782|      6|            values = &stack_pointer[-1 - oparg];
  |  |10783|      6|            PyObject *exc = PyStackRef_AsPyObjectSteal(exc_st);
  |  |10784|      6|            assert(oparg >= 0 && oparg <= 2);
  |  |  ------------------
  |  |  |  Branch (10784:13): [True: 6, False: 0]
  |  |  |  Branch (10784:13): [True: 6, False: 0]
  |  |  ------------------
  |  |10785|      6|            if (oparg) {
  |  |  ------------------
  |  |  |  Branch (10785:17): [True: 6, False: 0]
  |  |  ------------------
  |  |10786|      6|                frame->instr_ptr = _PyFrame_GetBytecode(frame) + PyStackRef_UntagInt(values[0]);
  |  |10787|      6|            }
  |  |10788|      6|            assert(exc && PyExceptionInstance_Check(exc));
  |  |  ------------------
  |  |  |  Branch (10788:13): [True: 6, False: 0]
  |  |  |  Branch (10788:13): [True: 6, False: 0]
  |  |  ------------------
  |  |10789|      6|            stack_pointer += -1;
  |  |10790|      6|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      6|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |10791|      6|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |10792|      6|            _PyErr_SetRaisedException(tstate, exc);
  |  |10793|      6|            monitor_reraise(tstate, frame, this_instr);
  |  |10794|      6|            JUMP_TO_LABEL(exception_unwind);
  |  |  ------------------
  |  |  |  |  135|      6|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |10795|      0|        }
  |  |10796|       |
  |  |10797|      0|        TARGET(RESERVED) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |10798|       |            #if _Py_TAIL_CALL_INTERP
  |  |10799|       |            int opcode = RESERVED;
  |  |10800|       |            (void)(opcode);
  |  |10801|       |            #endif
  |  |10802|      0|            frame->instr_ptr = next_instr;
  |  |10803|      0|            next_instr += 1;
  |  |10804|      0|            INSTRUCTION_STATS(RESERVED);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |10805|      0|            assert(0 && "Executing RESERVED instruction.");
  |  |  ------------------
  |  |  |  Branch (10805:13): [Folded, False: 0]
  |  |  |  Branch (10805:13): [True: 0, False: 0]
  |  |  ------------------
  |  |10806|      0|            Py_FatalError("Executing RESERVED instruction.");
  |  |  ------------------
  |  |  |  |  133|      0|#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))
  |  |  ------------------
  |  |10807|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (10807:13): [True: 0, False: 0]
  |  |  ------------------
  |  |10808|      0|        }
  |  |10809|       |
  |  |10810|    270|        TARGET(RESUME) {
  |  |  ------------------
  |  |  |  |  132|    270|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |10811|       |            #if _Py_TAIL_CALL_INTERP
  |  |10812|       |            int opcode = RESUME;
  |  |10813|       |            (void)(opcode);
  |  |10814|       |            #endif
  |  |10815|    270|            frame->instr_ptr = next_instr;
  |  |10816|    270|            next_instr += 2;
  |  |10817|    270|            INSTRUCTION_STATS(RESUME);
  |  |  ------------------
  |  |  |  |   71|    270|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |10818|    270|            PREDICTED_RESUME:;
  |  |10819|    270|            _Py_CODEUNIT* const this_instr = next_instr - 2;
  |  |10820|    270|            (void)this_instr;
  |  |10821|       |            // _LOAD_BYTECODE
  |  |10822|    270|            {
  |  |10823|       |                #ifdef Py_GIL_DISABLED
  |  |10824|       |                if (frame->tlbc_index !=
  |  |10825|       |                    ((_PyThreadStateImpl *)tstate)->tlbc_index) {
  |  |10826|       |                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |10827|       |                    _Py_CODEUNIT *bytecode =
  |  |10828|       |                    _PyEval_GetExecutableCode(tstate, _PyFrame_GetCode(frame));
  |  |10829|       |                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |10830|       |                    if (bytecode == NULL) {
  |  |10831|       |                        JUMP_TO_LABEL(error);
  |  |10832|       |                    }
  |  |10833|       |                    ptrdiff_t off = this_instr - _PyFrame_GetBytecode(frame);
  |  |10834|       |                    frame->tlbc_index = ((_PyThreadStateImpl *)tstate)->tlbc_index;
  |  |10835|       |                    frame->instr_ptr = bytecode + off;
  |  |10836|       |                    next_instr = frame->instr_ptr;
  |  |10837|       |                    DISPATCH();
  |  |10838|       |                }
  |  |10839|       |                #endif
  |  |10840|    270|            }
  |  |10841|       |            // _MAYBE_INSTRUMENT
  |  |10842|    270|            {
  |  |10843|       |                #ifdef Py_GIL_DISABLED
  |  |10844|       |
  |  |10845|       |                int check_instrumentation = 1;
  |  |10846|       |                #else
  |  |10847|    270|                int check_instrumentation = (tstate->tracing == 0);
  |  |10848|    270|                #endif
  |  |10849|    270|                if (check_instrumentation) {
  |  |  ------------------
  |  |  |  Branch (10849:21): [True: 270, False: 0]
  |  |  ------------------
  |  |10850|    270|                    uintptr_t global_version = _Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker) & ~_PY_EVAL_EVENTS_MASK;
  |  |  ------------------
  |  |  |  |  357|    270|#define _PY_EVAL_EVENTS_MASK ((1 << _PY_EVAL_EVENTS_BITS)-1)
  |  |  |  |  ------------------
  |  |  |  |  |  |  356|    270|#define _PY_EVAL_EVENTS_BITS 8
  |  |  |  |  ------------------
  |  |  ------------------
  |  |10851|    270|                    uintptr_t code_version = FT_ATOMIC_LOAD_UINTPTR_ACQUIRE(_PyFrame_GetCode(frame)->_co_instrumentation_version);
  |  |  ------------------
  |  |  |  |  152|    270|#define FT_ATOMIC_LOAD_UINTPTR_ACQUIRE(value) value
  |  |  ------------------
  |  |10852|    270|                    if (code_version != global_version) {
  |  |  ------------------
  |  |  |  Branch (10852:25): [True: 0, False: 270]
  |  |  ------------------
  |  |10853|      0|                        _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |10854|      0|                        int err = _Py_Instrument(_PyFrame_GetCode(frame), tstate->interp);
  |  |10855|      0|                        stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |10856|      0|                        if (err) {
  |  |  ------------------
  |  |  |  Branch (10856:29): [True: 0, False: 0]
  |  |  ------------------
  |  |10857|      0|                            JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |10858|      0|                        }
  |  |10859|      0|                        next_instr = this_instr;
  |  |10860|      0|                        DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (10860:25): [True: 0, False: 0]
  |  |  ------------------
  |  |10861|      0|                    }
  |  |10862|    270|                }
  |  |10863|    270|            }
  |  |10864|       |            // _QUICKEN_RESUME
  |  |10865|    270|            {
  |  |10866|    270|                uint16_t counter = read_u16(&this_instr[1].cache);
  |  |10867|    270|                (void)counter;
  |  |10868|    270|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |10869|    270|                _Py_Specialize_Resume(this_instr, tstate, frame);
  |  |10870|    270|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |10871|    270|            }
  |  |10872|       |            // _CHECK_PERIODIC_IF_NOT_YIELD_FROM
  |  |10873|    270|            {
  |  |10874|    270|                if ((oparg & RESUME_OPARG_LOCATION_MASK) < RESUME_AFTER_YIELD_FROM) {
  |  |  ------------------
  |  |  |  |   92|    270|#define RESUME_OPARG_LOCATION_MASK 0x7
  |  |  ------------------
  |  |                               if ((oparg & RESUME_OPARG_LOCATION_MASK) < RESUME_AFTER_YIELD_FROM) {
  |  |  ------------------
  |  |  |  |   88|    270|#define RESUME_AFTER_YIELD_FROM 2
  |  |  ------------------
  |  |  |  Branch (10874:21): [True: 263, False: 7]
  |  |  ------------------
  |  |10875|    263|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |10876|    263|                    int err = check_periodics(tstate);
  |  |10877|    263|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |10878|    263|                    if (err != 0) {
  |  |  ------------------
  |  |  |  Branch (10878:25): [True: 0, False: 263]
  |  |  ------------------
  |  |10879|      0|                        JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |10880|      0|                    }
  |  |10881|    263|                }
  |  |10882|    270|            }
  |  |10883|    270|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    270|    { \
  |  |  |  |  201|    270|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    270|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    270|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    270|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    270|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    270|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    270|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    270|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 270]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    270|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    270|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    270|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    270|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    270|    }
  |  |  ------------------
  |  |  |  Branch (10883:13): [True: 270, False: 0]
  |  |  ------------------
  |  |10884|    270|        }
  |  |10885|       |
  |  |10886|  1.42k|        TARGET(RESUME_CHECK) {
  |  |  ------------------
  |  |  |  |  132|  1.42k|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |10887|       |            #if _Py_TAIL_CALL_INTERP
  |  |10888|       |            int opcode = RESUME_CHECK;
  |  |10889|       |            (void)(opcode);
  |  |10890|       |            #endif
  |  |10891|  1.42k|            _Py_CODEUNIT* const this_instr = next_instr;
  |  |10892|  1.42k|            (void)this_instr;
  |  |10893|  1.42k|            frame->instr_ptr = next_instr;
  |  |10894|  1.42k|            next_instr += 2;
  |  |10895|  1.42k|            INSTRUCTION_STATS(RESUME_CHECK);
  |  |  ------------------
  |  |  |  |   71|  1.42k|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |10896|  1.42k|            static_assert(1 == 1, "incorrect cache size");
  |  |10897|       |            /* Skip 1 cache entry */
  |  |10898|       |            #if defined(__EMSCRIPTEN__)
  |  |10899|       |            if (_Py_emscripten_signal_clock == 0) {
  |  |10900|       |                UPDATE_MISS_STATS(RESUME);
  |  |10901|       |                assert(_PyOpcode_Deopt[opcode] == (RESUME));
  |  |10902|       |                JUMP_TO_PREDICTED(RESUME);
  |  |10903|       |            }
  |  |10904|       |            _Py_emscripten_signal_clock -= Py_EMSCRIPTEN_SIGNAL_HANDLING;
  |  |10905|       |            #endif
  |  |10906|  1.42k|            uintptr_t eval_breaker = _Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker);
  |  |10907|  1.42k|            uintptr_t version = FT_ATOMIC_LOAD_UINTPTR_ACQUIRE(_PyFrame_GetCode(frame)->_co_instrumentation_version);
  |  |  ------------------
  |  |  |  |  152|  1.42k|#define FT_ATOMIC_LOAD_UINTPTR_ACQUIRE(value) value
  |  |  ------------------
  |  |10908|  1.42k|            assert((version & _PY_EVAL_EVENTS_MASK) == 0);
  |  |  ------------------
  |  |  |  Branch (10908:13): [True: 1.42k, False: 0]
  |  |  ------------------
  |  |10909|  1.42k|            if (eval_breaker != version) {
  |  |  ------------------
  |  |  |  Branch (10909:17): [True: 0, False: 1.42k]
  |  |  ------------------
  |  |10910|      0|                UPDATE_MISS_STATS(RESUME);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |10911|      0|                assert(_PyOpcode_Deopt[opcode] == (RESUME));
  |  |  ------------------
  |  |  |  Branch (10911:17): [True: 0, False: 0]
  |  |  ------------------
  |  |10912|      0|                JUMP_TO_PREDICTED(RESUME);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |10913|      0|            }
  |  |10914|       |            #ifdef Py_GIL_DISABLED
  |  |10915|       |            if (frame->tlbc_index !=
  |  |10916|       |                ((_PyThreadStateImpl *)tstate)->tlbc_index) {
  |  |10917|       |                UPDATE_MISS_STATS(RESUME);
  |  |10918|       |                assert(_PyOpcode_Deopt[opcode] == (RESUME));
  |  |10919|       |                JUMP_TO_PREDICTED(RESUME);
  |  |10920|       |            }
  |  |10921|       |            #endif
  |  |10922|  1.42k|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|  1.42k|    { \
  |  |  |  |  201|  1.42k|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|  1.42k|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|  1.42k|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|  1.42k|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|  1.42k|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|  1.42k|        opcode = word.op.code; \
  |  |  |  |  |  |  253|  1.42k|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|  1.42k|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 1.42k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|  1.42k|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|  1.42k|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|  1.42k|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|  1.42k|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|  1.42k|    }
  |  |  ------------------
  |  |  |  Branch (10922:13): [True: 1.42k, False: 0]
  |  |  ------------------
  |  |10923|  1.42k|        }
  |  |10924|       |
  |  |10925|      0|        TARGET(RESUME_CHECK_JIT) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |10926|       |            #if _Py_TAIL_CALL_INTERP
  |  |10927|       |            int opcode = RESUME_CHECK_JIT;
  |  |10928|       |            (void)(opcode);
  |  |10929|       |            #endif
  |  |10930|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  |10931|      0|            (void)this_instr;
  |  |10932|      0|            frame->instr_ptr = next_instr;
  |  |10933|      0|            next_instr += 2;
  |  |10934|      0|            INSTRUCTION_STATS(RESUME_CHECK_JIT);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |10935|      0|            static_assert(1 == 1, "incorrect cache size");
  |  |10936|       |            /* Skip 1 cache entry */
  |  |10937|       |            // _RESUME_CHECK
  |  |10938|      0|            {
  |  |10939|       |                #if defined(__EMSCRIPTEN__)
  |  |10940|       |                if (_Py_emscripten_signal_clock == 0) {
  |  |10941|       |                    UPDATE_MISS_STATS(RESUME);
  |  |10942|       |                    assert(_PyOpcode_Deopt[opcode] == (RESUME));
  |  |10943|       |                    JUMP_TO_PREDICTED(RESUME);
  |  |10944|       |                }
  |  |10945|       |                _Py_emscripten_signal_clock -= Py_EMSCRIPTEN_SIGNAL_HANDLING;
  |  |10946|       |                #endif
  |  |10947|      0|                uintptr_t eval_breaker = _Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker);
  |  |10948|      0|                uintptr_t version = FT_ATOMIC_LOAD_UINTPTR_ACQUIRE(_PyFrame_GetCode(frame)->_co_instrumentation_version);
  |  |  ------------------
  |  |  |  |  152|      0|#define FT_ATOMIC_LOAD_UINTPTR_ACQUIRE(value) value
  |  |  ------------------
  |  |10949|      0|                assert((version & _PY_EVAL_EVENTS_MASK) == 0);
  |  |  ------------------
  |  |  |  Branch (10949:17): [True: 0, False: 0]
  |  |  ------------------
  |  |10950|      0|                if (eval_breaker != version) {
  |  |  ------------------
  |  |  |  Branch (10950:21): [True: 0, False: 0]
  |  |  ------------------
  |  |10951|      0|                    UPDATE_MISS_STATS(RESUME);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |10952|      0|                    assert(_PyOpcode_Deopt[opcode] == (RESUME));
  |  |  ------------------
  |  |  |  Branch (10952:21): [True: 0, False: 0]
  |  |  ------------------
  |  |10953|      0|                    JUMP_TO_PREDICTED(RESUME);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |10954|      0|                }
  |  |10955|       |                #ifdef Py_GIL_DISABLED
  |  |10956|       |                if (frame->tlbc_index !=
  |  |10957|       |                    ((_PyThreadStateImpl *)tstate)->tlbc_index) {
  |  |10958|       |                    UPDATE_MISS_STATS(RESUME);
  |  |10959|       |                    assert(_PyOpcode_Deopt[opcode] == (RESUME));
  |  |10960|       |                    JUMP_TO_PREDICTED(RESUME);
  |  |10961|       |                }
  |  |10962|       |                #endif
  |  |10963|      0|            }
  |  |10964|       |            // _JIT
  |  |10965|      0|            {
  |  |10966|       |                #ifdef _Py_TIER2
  |  |10967|       |                bool is_resume = this_instr->op.code == RESUME_CHECK_JIT;
  |  |10968|       |                _Py_BackoffCounter counter = this_instr[1].counter;
  |  |10969|       |                if ((backoff_counter_triggers(counter) &&
  |  |10970|       |                        !IS_JIT_TRACING() &&
  |  |10971|       |                        (this_instr->op.code == JUMP_BACKWARD_JIT || is_resume)) &&
  |  |10972|       |                    next_instr->op.code != ENTER_EXECUTOR) {
  |  |10973|       |                    _Py_CODEUNIT *insert_exec_at = this_instr;
  |  |10974|       |                    while (oparg > 255) {
  |  |10975|       |                        oparg >>= 8;
  |  |10976|       |                        insert_exec_at--;
  |  |10977|       |                    }
  |  |10978|       |                    int succ = _PyJit_TryInitializeTracing(tstate, frame, this_instr, insert_exec_at,
  |  |10979|       |                        is_resume ? insert_exec_at : next_instr, stack_pointer, 0, NULL, oparg, NULL);
  |  |10980|       |                    if (succ) {
  |  |10981|       |                        ENTER_TRACING();
  |  |10982|       |                    }
  |  |10983|       |                    else {
  |  |10984|       |                        this_instr[1].counter = restart_backoff_counter(counter);
  |  |10985|       |                    }
  |  |10986|       |                }
  |  |10987|       |                else {
  |  |10988|       |                    ADVANCE_ADAPTIVE_COUNTER(this_instr[1].counter);
  |  |10989|       |                }
  |  |10990|       |                #endif
  |  |10991|      0|            }
  |  |10992|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (10992:13): [True: 0, False: 0]
  |  |  ------------------
  |  |10993|      0|        }
  |  |10994|       |
  |  |10995|     21|        TARGET(RETURN_GENERATOR) {
  |  |  ------------------
  |  |  |  |  132|     21|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |10996|       |            #if _Py_TAIL_CALL_INTERP
  |  |10997|       |            int opcode = RETURN_GENERATOR;
  |  |10998|       |            (void)(opcode);
  |  |10999|       |            #endif
  |  |11000|     21|            frame->instr_ptr = next_instr;
  |  |11001|     21|            next_instr += 1;
  |  |11002|     21|            INSTRUCTION_STATS(RETURN_GENERATOR);
  |  |  ------------------
  |  |  |  |   71|     21|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |11003|     21|            _PyStackRef res;
  |  |11004|     21|            assert(PyStackRef_FunctionCheck(frame->f_funcobj));
  |  |  ------------------
  |  |  |  Branch (11004:13): [True: 21, False: 0]
  |  |  ------------------
  |  |11005|     21|            PyFunctionObject *func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj);
  |  |11006|     21|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |11007|     21|            PyGenObject *gen = (PyGenObject *)_Py_MakeCoro(func);
  |  |11008|     21|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |11009|     21|            if (gen == NULL) {
  |  |  ------------------
  |  |  |  Branch (11009:17): [True: 0, False: 21]
  |  |  ------------------
  |  |11010|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |11011|      0|            }
  |  |11012|     21|            assert(STACK_LEVEL() <= 2);
  |  |  ------------------
  |  |  |  Branch (11012:13): [True: 21, False: 0]
  |  |  ------------------
  |  |11013|     21|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |11014|     21|            _PyInterpreterFrame *gen_frame = &gen->gi_iframe;
  |  |11015|     21|            frame->instr_ptr++;
  |  |11016|     21|            _PyFrame_Copy(frame, gen_frame);
  |  |11017|     21|            assert(frame->frame_obj == NULL);
  |  |  ------------------
  |  |  |  Branch (11017:13): [True: 21, False: 0]
  |  |  ------------------
  |  |11018|     21|            gen->gi_frame_state = FRAME_CREATED;
  |  |11019|     21|            gen_frame->owner = FRAME_OWNED_BY_GENERATOR;
  |  |11020|     21|            _Py_LeaveRecursiveCallPy(tstate);
  |  |11021|     21|            _PyInterpreterFrame *prev = frame->previous;
  |  |11022|     21|            _PyThreadState_PopFrame(tstate, frame);
  |  |11023|     21|            frame = tstate->current_frame = prev;
  |  |11024|     21|            LOAD_IP(frame->return_offset);
  |  |  ------------------
  |  |  |  |  419|     21|#define LOAD_IP(OFFSET) do { \
  |  |  |  |  420|     21|        next_instr = frame->instr_ptr + (OFFSET); \
  |  |  |  |  421|     21|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:14): [Folded, False: 21]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |11025|     21|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |11026|     21|            res = PyStackRef_FromPyObjectStealMortal((PyObject *)gen);
  |  |11027|     21|            LLTRACE_RESUME_FRAME();
  |  |  ------------------
  |  |  |  |  188|     21|#define LLTRACE_RESUME_FRAME() ((void)0)
  |  |  ------------------
  |  |11028|     21|            stack_pointer[0] = res;
  |  |11029|     21|            stack_pointer += 1;
  |  |11030|     21|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     21|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |11031|     21|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     21|    { \
  |  |  |  |  201|     21|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     21|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     21|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     21|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     21|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     21|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     21|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     21|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 21]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     21|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     21|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     21|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     21|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     21|    }
  |  |  ------------------
  |  |  |  Branch (11031:13): [True: 21, False: 0]
  |  |  ------------------
  |  |11032|     21|        }
  |  |11033|       |
  |  |11034|  1.71k|        TARGET(RETURN_VALUE) {
  |  |  ------------------
  |  |  |  |  132|  1.71k|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |11035|       |            #if _Py_TAIL_CALL_INTERP
  |  |11036|       |            int opcode = RETURN_VALUE;
  |  |11037|       |            (void)(opcode);
  |  |11038|       |            #endif
  |  |11039|  1.71k|            frame->instr_ptr = next_instr;
  |  |11040|  1.71k|            next_instr += 1;
  |  |11041|  1.71k|            INSTRUCTION_STATS(RETURN_VALUE);
  |  |  ------------------
  |  |  |  |   71|  1.71k|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |11042|  1.71k|            _PyStackRef value;
  |  |11043|  1.71k|            _PyStackRef retval;
  |  |11044|  1.71k|            _PyStackRef res;
  |  |11045|       |            // _MAKE_HEAP_SAFE
  |  |11046|  1.71k|            {
  |  |11047|  1.71k|                value = stack_pointer[-1];
  |  |11048|  1.71k|                value = PyStackRef_MakeHeapSafe(value);
  |  |11049|  1.71k|            }
  |  |11050|       |            // _RETURN_VALUE
  |  |11051|  1.71k|            {
  |  |11052|  1.71k|                retval = value;
  |  |11053|  1.71k|                assert(frame->owner != FRAME_OWNED_BY_INTERPRETER);
  |  |  ------------------
  |  |  |  Branch (11053:17): [True: 1.71k, False: 0]
  |  |  ------------------
  |  |11054|  1.71k|                _PyStackRef temp = retval;
  |  |11055|  1.71k|                stack_pointer += -1;
  |  |11056|  1.71k|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|  1.71k|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |11057|  1.71k|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |11058|  1.71k|                assert(STACK_LEVEL() == 0);
  |  |  ------------------
  |  |  |  Branch (11058:17): [True: 1.71k, False: 0]
  |  |  ------------------
  |  |11059|  1.71k|                DTRACE_FUNCTION_RETURN();
  |  |  ------------------
  |  |  |  |  346|  1.71k|#define DTRACE_FUNCTION_RETURN() ((void)0)
  |  |  ------------------
  |  |11060|  1.71k|                _Py_LeaveRecursiveCallPy(tstate);
  |  |11061|  1.71k|                _PyInterpreterFrame *dying = frame;
  |  |11062|  1.71k|                frame = tstate->current_frame = dying->previous;
  |  |11063|  1.71k|                _PyEval_FrameClearAndPop(tstate, dying);
  |  |11064|  1.71k|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |11065|  1.71k|                LOAD_IP(frame->return_offset);
  |  |  ------------------
  |  |  |  |  419|  1.71k|#define LOAD_IP(OFFSET) do { \
  |  |  |  |  420|  1.71k|        next_instr = frame->instr_ptr + (OFFSET); \
  |  |  |  |  421|  1.71k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:14): [Folded, False: 1.71k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |11066|  1.71k|                res = temp;
  |  |11067|  1.71k|                LLTRACE_RESUME_FRAME();
  |  |  ------------------
  |  |  |  |  188|  1.71k|#define LLTRACE_RESUME_FRAME() ((void)0)
  |  |  ------------------
  |  |11068|  1.71k|            }
  |  |11069|      0|            stack_pointer[0] = res;
  |  |11070|  1.71k|            stack_pointer += 1;
  |  |11071|  1.71k|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|  1.71k|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |11072|  1.71k|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|  1.71k|    { \
  |  |  |  |  201|  1.71k|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|  1.71k|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|  1.71k|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|  1.71k|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|  1.71k|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|  1.71k|        opcode = word.op.code; \
  |  |  |  |  |  |  253|  1.71k|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|  1.71k|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 1.71k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|  1.71k|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|  1.71k|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|  1.71k|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|  1.71k|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|  1.71k|    }
  |  |  ------------------
  |  |  |  Branch (11072:13): [True: 1.71k, False: 0]
  |  |  ------------------
  |  |11073|  1.71k|        }
  |  |11074|       |
  |  |11075|      0|        TARGET(SEND) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |11076|       |            #if _Py_TAIL_CALL_INTERP
  |  |11077|       |            int opcode = SEND;
  |  |11078|       |            (void)(opcode);
  |  |11079|       |            #endif
  |  |11080|      0|            frame->instr_ptr = next_instr;
  |  |11081|      0|            next_instr += 2;
  |  |11082|      0|            INSTRUCTION_STATS(SEND);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |11083|      0|            PREDICTED_SEND:;
  |  |11084|      0|            _Py_CODEUNIT* const this_instr = next_instr - 2;
  |  |11085|      0|            (void)this_instr;
  |  |11086|      0|            _PyStackRef receiver;
  |  |11087|      0|            _PyStackRef null_or_index;
  |  |11088|      0|            _PyStackRef v;
  |  |11089|      0|            _PyStackRef retval;
  |  |11090|       |            // _SPECIALIZE_SEND
  |  |11091|      0|            {
  |  |11092|      0|                receiver = stack_pointer[-3];
  |  |11093|      0|                uint16_t counter = read_u16(&this_instr[1].cache);
  |  |11094|      0|                (void)counter;
  |  |11095|      0|                #if ENABLE_SPECIALIZATION
  |  |11096|      0|                if (ADAPTIVE_COUNTER_TRIGGERS(counter)) {
  |  |  ------------------
  |  |  |  |  354|      0|    backoff_counter_triggers(forge_backoff_counter((COUNTER)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (354:5): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |11097|      0|                    next_instr = this_instr;
  |  |11098|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |11099|      0|                    _Py_Specialize_Send(receiver, next_instr);
  |  |11100|      0|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |11101|      0|                    DISPATCH_SAME_OPARG();
  |  |  ------------------
  |  |  |  |  216|      0|    { \
  |  |  |  |  217|      0|        opcode = next_instr->op.code; \
  |  |  |  |  218|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  219|      0|        DISPATCH_GOTO_NON_TRACING(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  134|      0|#  define DISPATCH_GOTO_NON_TRACING() goto *DISPATCH_TABLE[opcode];
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  130|      0|#  define DISPATCH_TABLE opcode_targets_table
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  220|      0|    }
  |  |  ------------------
  |  |11102|      0|                }
  |  |11103|      0|                OPCODE_DEFERRED_INC(SEND);
  |  |  ------------------
  |  |  |  |   90|      0|#define OPCODE_DEFERRED_INC(opname) ((void)0)
  |  |  ------------------
  |  |11104|      0|                ADVANCE_ADAPTIVE_COUNTER(this_instr[1].counter);
  |  |  ------------------
  |  |  |  |  357|      0|    do { \
  |  |  |  |  358|      0|        (COUNTER) = advance_backoff_counter((COUNTER)); \
  |  |  |  |  359|      0|    } while (0);
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (359:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |11105|      0|                #endif  /* ENABLE_SPECIALIZATION */
  |  |11106|      0|            }
  |  |11107|       |            // _SEND
  |  |11108|      0|            {
  |  |11109|      0|                v = stack_pointer[-1];
  |  |11110|      0|                null_or_index = stack_pointer[-2];
  |  |11111|      0|                PyObject *receiver_o = PyStackRef_AsPyObjectBorrow(receiver);
  |  |11112|      0|                assert(frame->owner != FRAME_OWNED_BY_INTERPRETER);
  |  |  ------------------
  |  |  |  Branch (11112:17): [True: 0, False: 0]
  |  |  ------------------
  |  |11113|      0|                if (!IS_PEP523_HOOKED(tstate) &&
  |  |  ------------------
  |  |  |  |  517|      0|#define IS_PEP523_HOOKED(tstate) (tstate->interp->eval_frame != NULL)
  |  |  ------------------
  |  |  |  Branch (11113:21): [True: 0, False: 0]
  |  |  ------------------
  |  |11114|      0|                    (Py_TYPE(receiver_o) == &PyGen_Type || Py_TYPE(receiver_o) == &PyCoro_Type) &&
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                                   (Py_TYPE(receiver_o) == &PyGen_Type || Py_TYPE(receiver_o) == &PyCoro_Type) &&
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (11114:22): [True: 0, False: 0]
  |  |  |  Branch (11114:60): [True: 0, False: 0]
  |  |  ------------------
  |  |11115|      0|                    gen_try_set_executing((PyGenObject *)receiver_o))
  |  |  ------------------
  |  |  |  Branch (11115:21): [True: 0, False: 0]
  |  |  ------------------
  |  |11116|      0|                {
  |  |11117|      0|                    PyGenObject *gen = (PyGenObject *)receiver_o;
  |  |11118|      0|                    _PyInterpreterFrame *gen_frame = &gen->gi_iframe;
  |  |11119|      0|                    _PyFrame_StackPush(gen_frame, PyStackRef_MakeHeapSafe(v));
  |  |11120|      0|                    stack_pointer += -1;
  |  |11121|      0|                    ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |11122|      0|                    gen->gi_exc_state.previous_item = tstate->exc_info;
  |  |11123|      0|                    tstate->exc_info = &gen->gi_exc_state;
  |  |11124|      0|                    assert( 2u + oparg <= UINT16_MAX);
  |  |  ------------------
  |  |  |  Branch (11124:21): [True: 0, False: 0]
  |  |  ------------------
  |  |11125|      0|                    frame->return_offset = (uint16_t)( 2u + oparg);
  |  |11126|      0|                    assert(gen_frame->previous == NULL);
  |  |  ------------------
  |  |  |  Branch (11126:21): [True: 0, False: 0]
  |  |  ------------------
  |  |11127|      0|                    gen_frame->previous = frame;
  |  |11128|      0|                    DISPATCH_INLINED(gen_frame);
  |  |  ------------------
  |  |  |  |  223|      0|    do {                                                         \
  |  |  |  |  224|      0|        assert(!IS_PEP523_HOOKED(tstate));                       \
  |  |  |  |  225|      0|        _PyFrame_SetStackPointer(frame, stack_pointer);          \
  |  |  |  |  226|      0|        assert((NEW_FRAME)->previous == frame);                  \
  |  |  |  |  227|      0|        frame = tstate->current_frame = (NEW_FRAME);             \
  |  |  |  |  228|      0|        CALL_STAT_INC(inlined_py_calls);                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |   76|      0|#define CALL_STAT_INC(name) ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  229|      0|        JUMP_TO_LABEL(start_frame);                              \
  |  |  |  |  ------------------
  |  |  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  |  |  ------------------
  |  |  |  |  230|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (230:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (11128:21): [True: 0, False: 0]
  |  |  |  Branch (11128:21): [True: 0, False: 0]
  |  |  ------------------
  |  |11129|      0|                }
  |  |11130|      0|                if (!PyStackRef_IsNull(null_or_index) && PyStackRef_IsNone(v)) {
  |  |  ------------------
  |  |  |  |  470|      0|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|      0|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      0|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                               if (!PyStackRef_IsNull(null_or_index) && PyStackRef_IsNone(v)) {
  |  |  ------------------
  |  |  |  |  483|      0|#define PyStackRef_IsNone(REF) ((REF).bits == (((uintptr_t)&_Py_NoneStruct) | Py_TAG_REFCNT))
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (483:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (11130:21): [True: 0, False: 0]
  |  |  ------------------
  |  |11131|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |11132|      0|                    _PyStackRef item = _PyForIter_VirtualIteratorNext(tstate, frame, receiver, &null_or_index);
  |  |11133|      0|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |11134|      0|                    if (!PyStackRef_IsValid(item)) {
  |  |  ------------------
  |  |  |  Branch (11134:25): [True: 0, False: 0]
  |  |  ------------------
  |  |11135|      0|                        if (PyStackRef_IsError(item)) {
  |  |  ------------------
  |  |  |  Branch (11135:29): [True: 0, False: 0]
  |  |  ------------------
  |  |11136|      0|                            JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |11137|      0|                        }
  |  |11138|      0|                        JUMPBY(oparg);
  |  |  ------------------
  |  |  |  |  260|      0|#define JUMPBY(x)       (next_instr += (x))
  |  |  ------------------
  |  |11139|      0|                        stack_pointer[-2] = null_or_index;
  |  |11140|      0|                        DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (11140:25): [True: 0, False: 0]
  |  |  ------------------
  |  |11141|      0|                    }
  |  |11142|      0|                    retval = item;
  |  |11143|      0|                }
  |  |11144|      0|                else {
  |  |11145|      0|                    PyObject *v_o = PyStackRef_AsPyObjectBorrow(v);
  |  |11146|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |11147|      0|                    PySendResultPair res = _PyIter_Send(receiver_o, v_o);
  |  |11148|      0|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |11149|      0|                    if (res.kind == PYGEN_ERROR) {
  |  |  ------------------
  |  |  |  Branch (11149:25): [True: 0, False: 0]
  |  |  ------------------
  |  |11150|      0|                        JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |11151|      0|                    }
  |  |11152|      0|                    stack_pointer += -1;
  |  |11153|      0|                    ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |11154|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |11155|      0|                    PyStackRef_CLOSE(v);
  |  |11156|      0|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |11157|      0|                    retval = PyStackRef_FromPyObjectSteal(res.object);
  |  |11158|      0|                    if (res.kind == PYGEN_RETURN) {
  |  |  ------------------
  |  |  |  Branch (11158:25): [True: 0, False: 0]
  |  |  ------------------
  |  |11159|      0|                        JUMPBY(oparg);
  |  |  ------------------
  |  |  |  |  260|      0|#define JUMPBY(x)       (next_instr += (x))
  |  |  ------------------
  |  |11160|      0|                    }
  |  |11161|      0|                    stack_pointer += 1;
  |  |11162|      0|                }
  |  |11163|      0|            }
  |  |11164|      0|            stack_pointer[-2] = null_or_index;
  |  |11165|      0|            stack_pointer[-1] = retval;
  |  |11166|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (11166:13): [True: 0, False: 0]
  |  |  ------------------
  |  |11167|      0|        }
  |  |11168|       |
  |  |11169|      0|        TARGET(SEND_ASYNC_GEN) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |11170|       |            #if _Py_TAIL_CALL_INTERP
  |  |11171|       |            int opcode = SEND_ASYNC_GEN;
  |  |11172|       |            (void)(opcode);
  |  |11173|       |            #endif
  |  |11174|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  |11175|      0|            (void)this_instr;
  |  |11176|      0|            frame->instr_ptr = next_instr;
  |  |11177|      0|            next_instr += 2;
  |  |11178|      0|            INSTRUCTION_STATS(SEND_ASYNC_GEN);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |11179|      0|            static_assert(INLINE_CACHE_ENTRIES_SEND == 1, "incorrect cache size");
  |  |11180|      0|            _PyStackRef iter;
  |  |11181|      0|            _PyStackRef null_in;
  |  |11182|      0|            _PyStackRef v;
  |  |11183|      0|            _PyStackRef asend;
  |  |11184|      0|            _PyStackRef null_out;
  |  |11185|      0|            _PyStackRef retval;
  |  |11186|       |            /* Skip 1 cache entry */
  |  |11187|       |            // _GUARD_3OS_ASYNC_GEN_ASEND
  |  |11188|      0|            {
  |  |11189|      0|                iter = stack_pointer[-3];
  |  |11190|      0|                PyObject *iter_o = PyStackRef_AsPyObjectBorrow(iter);
  |  |11191|      0|                if (!PyAsyncGenASend_CheckExact(iter_o)) {
  |  |  ------------------
  |  |  |  |   48|      0|#define PyAsyncGenASend_CheckExact(op) Py_IS_TYPE((op), &_PyAsyncGenASend_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      0|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (11191:21): [True: 0, False: 0]
  |  |  ------------------
  |  |11192|      0|                    UPDATE_MISS_STATS(SEND);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |11193|      0|                    assert(_PyOpcode_Deopt[opcode] == (SEND));
  |  |  ------------------
  |  |  |  Branch (11193:21): [True: 0, False: 0]
  |  |  ------------------
  |  |11194|      0|                    JUMP_TO_PREDICTED(SEND);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |11195|      0|                }
  |  |11196|      0|            }
  |  |11197|       |            // _SEND_ASYNC_GEN
  |  |11198|      0|            {
  |  |11199|      0|                v = stack_pointer[-1];
  |  |11200|      0|                null_in = stack_pointer[-2];
  |  |11201|      0|                PyObject *iter_o = PyStackRef_AsPyObjectBorrow(iter);
  |  |11202|      0|                assert(PyAsyncGenASend_CheckExact(iter_o));
  |  |  ------------------
  |  |  |  Branch (11202:17): [True: 0, False: 0]
  |  |  ------------------
  |  |11203|      0|                PyObject *val = PyStackRef_AsPyObjectBorrow(v);
  |  |11204|      0|                PyObject *retval_o;
  |  |11205|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |11206|      0|                PySendResult what = _PyAsyncGenASend_Send(iter_o, val, &retval_o);
  |  |11207|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |11208|      0|                if (what == PYGEN_ERROR) {
  |  |  ------------------
  |  |  |  Branch (11208:21): [True: 0, False: 0]
  |  |  ------------------
  |  |11209|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |11210|      0|                }
  |  |11211|      0|                stack_pointer += -1;
  |  |11212|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |11213|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |11214|      0|                PyStackRef_CLOSE(v);
  |  |11215|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |11216|      0|                asend = iter;
  |  |11217|      0|                null_out = null_in;
  |  |11218|      0|                retval = PyStackRef_FromPyObjectSteal(retval_o);
  |  |11219|      0|                if (what == PYGEN_RETURN) {
  |  |  ------------------
  |  |  |  Branch (11219:21): [True: 0, False: 0]
  |  |  ------------------
  |  |11220|      0|                    JUMPBY(oparg);
  |  |  ------------------
  |  |  |  |  260|      0|#define JUMPBY(x)       (next_instr += (x))
  |  |  ------------------
  |  |11221|      0|                }
  |  |11222|      0|            }
  |  |11223|      0|            stack_pointer[-2] = asend;
  |  |11224|      0|            stack_pointer[-1] = null_out;
  |  |11225|      0|            stack_pointer[0] = retval;
  |  |11226|      0|            stack_pointer += 1;
  |  |11227|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |11228|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (11228:13): [True: 0, False: 0]
  |  |  ------------------
  |  |11229|      0|        }
  |  |11230|       |
  |  |11231|      0|        TARGET(SEND_GEN) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |11232|       |            #if _Py_TAIL_CALL_INTERP
  |  |11233|       |            int opcode = SEND_GEN;
  |  |11234|       |            (void)(opcode);
  |  |11235|       |            #endif
  |  |11236|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  |11237|      0|            (void)this_instr;
  |  |11238|      0|            frame->instr_ptr = next_instr;
  |  |11239|      0|            next_instr += 2;
  |  |11240|      0|            INSTRUCTION_STATS(SEND_GEN);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |11241|      0|            static_assert(INLINE_CACHE_ENTRIES_SEND == 1, "incorrect cache size");
  |  |11242|      0|            _PyStackRef receiver;
  |  |11243|      0|            _PyStackRef v;
  |  |11244|      0|            _PyStackRef gen_frame;
  |  |11245|      0|            _PyStackRef new_frame;
  |  |11246|       |            /* Skip 1 cache entry */
  |  |11247|       |            // _CHECK_PEP_523
  |  |11248|      0|            {
  |  |11249|      0|                if (IS_PEP523_HOOKED(tstate)) {
  |  |  ------------------
  |  |  |  |  517|      0|#define IS_PEP523_HOOKED(tstate) (tstate->interp->eval_frame != NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (517:34): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |11250|      0|                    UPDATE_MISS_STATS(SEND);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |11251|      0|                    assert(_PyOpcode_Deopt[opcode] == (SEND));
  |  |  ------------------
  |  |  |  Branch (11251:21): [True: 0, False: 0]
  |  |  ------------------
  |  |11252|      0|                    JUMP_TO_PREDICTED(SEND);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |11253|      0|                }
  |  |11254|      0|            }
  |  |11255|       |            // _SEND_GEN_FRAME
  |  |11256|      0|            {
  |  |11257|      0|                v = stack_pointer[-1];
  |  |11258|      0|                receiver = stack_pointer[-3];
  |  |11259|      0|                PyGenObject *gen = (PyGenObject *)PyStackRef_AsPyObjectBorrow(receiver);
  |  |11260|      0|                if (Py_TYPE(gen) != &PyGen_Type && Py_TYPE(gen) != &PyCoro_Type) {
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                               if (Py_TYPE(gen) != &PyGen_Type && Py_TYPE(gen) != &PyCoro_Type) {
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (11260:21): [True: 0, False: 0]
  |  |  |  Branch (11260:52): [True: 0, False: 0]
  |  |  ------------------
  |  |11261|      0|                    UPDATE_MISS_STATS(SEND);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |11262|      0|                    assert(_PyOpcode_Deopt[opcode] == (SEND));
  |  |  ------------------
  |  |  |  Branch (11262:21): [True: 0, False: 0]
  |  |  ------------------
  |  |11263|      0|                    JUMP_TO_PREDICTED(SEND);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |11264|      0|                }
  |  |11265|      0|                if (!gen_try_set_executing((PyGenObject *)gen)) {
  |  |  ------------------
  |  |  |  Branch (11265:21): [True: 0, False: 0]
  |  |  ------------------
  |  |11266|      0|                    UPDATE_MISS_STATS(SEND);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |11267|      0|                    assert(_PyOpcode_Deopt[opcode] == (SEND));
  |  |  ------------------
  |  |  |  Branch (11267:21): [True: 0, False: 0]
  |  |  ------------------
  |  |11268|      0|                    JUMP_TO_PREDICTED(SEND);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |11269|      0|                }
  |  |11270|      0|                STAT_INC(SEND, hit);
  |  |  ------------------
  |  |  |  |   73|      0|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  |11271|      0|                _PyInterpreterFrame *pushed_frame = &gen->gi_iframe;
  |  |11272|      0|                _PyFrame_StackPush(pushed_frame, PyStackRef_MakeHeapSafe(v));
  |  |11273|      0|                gen->gi_exc_state.previous_item = tstate->exc_info;
  |  |11274|      0|                tstate->exc_info = &gen->gi_exc_state;
  |  |11275|      0|                assert( 2u + oparg <= UINT16_MAX);
  |  |  ------------------
  |  |  |  Branch (11275:17): [True: 0, False: 0]
  |  |  ------------------
  |  |11276|      0|                frame->return_offset = (uint16_t)( 2u + oparg);
  |  |11277|      0|                pushed_frame->previous = frame;
  |  |11278|      0|                gen_frame = PyStackRef_Wrap(pushed_frame);
  |  |11279|      0|            }
  |  |11280|       |            // _PUSH_FRAME
  |  |11281|      0|            {
  |  |11282|      0|                new_frame = gen_frame;
  |  |11283|      0|                assert(!IS_PEP523_HOOKED(tstate));
  |  |  ------------------
  |  |  |  Branch (11283:17): [True: 0, False: 0]
  |  |  ------------------
  |  |11284|      0|                _PyInterpreterFrame *temp = PyStackRef_Unwrap(new_frame);
  |  |11285|      0|                stack_pointer += -1;
  |  |11286|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |11287|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |11288|      0|                assert(temp->previous == frame || temp->previous->previous == frame);
  |  |  ------------------
  |  |  |  Branch (11288:17): [True: 0, False: 0]
  |  |  |  Branch (11288:17): [True: 0, False: 0]
  |  |  ------------------
  |  |11289|      0|                CALL_STAT_INC(inlined_py_calls);
  |  |  ------------------
  |  |  |  |   76|      0|#define CALL_STAT_INC(name) ((void)0)
  |  |  ------------------
  |  |11290|      0|                frame = tstate->current_frame = temp;
  |  |11291|      0|                tstate->py_recursion_remaining--;
  |  |11292|      0|                LOAD_SP();
  |  |  ------------------
  |  |  |  |  425|      0|#define LOAD_SP() \
  |  |  |  |  426|      0|stack_pointer = _PyFrame_GetStackPointer(frame)
  |  |  ------------------
  |  |11293|      0|                LOAD_IP(0);
  |  |  ------------------
  |  |  |  |  419|      0|#define LOAD_IP(OFFSET) do { \
  |  |  |  |  420|      0|        next_instr = frame->instr_ptr + (OFFSET); \
  |  |  |  |  421|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |11294|      0|                DTRACE_FUNCTION_ENTRY();
  |  |  ------------------
  |  |  |  |  345|      0|#define DTRACE_FUNCTION_ENTRY() ((void)0)
  |  |  ------------------
  |  |11295|      0|                LLTRACE_RESUME_FRAME();
  |  |  ------------------
  |  |  |  |  188|      0|#define LLTRACE_RESUME_FRAME() ((void)0)
  |  |  ------------------
  |  |11296|      0|            }
  |  |11297|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (11297:13): [True: 0, False: 0]
  |  |  ------------------
  |  |11298|      0|        }
  |  |11299|       |
  |  |11300|      0|        TARGET(SEND_VIRTUAL) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |11301|       |            #if _Py_TAIL_CALL_INTERP
  |  |11302|       |            int opcode = SEND_VIRTUAL;
  |  |11303|       |            (void)(opcode);
  |  |11304|       |            #endif
  |  |11305|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  |11306|      0|            (void)this_instr;
  |  |11307|      0|            frame->instr_ptr = next_instr;
  |  |11308|      0|            next_instr += 2;
  |  |11309|      0|            INSTRUCTION_STATS(SEND_VIRTUAL);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |11310|      0|            static_assert(INLINE_CACHE_ENTRIES_SEND == 1, "incorrect cache size");
  |  |11311|      0|            _PyStackRef val;
  |  |11312|      0|            _PyStackRef nos;
  |  |11313|      0|            _PyStackRef iter;
  |  |11314|      0|            _PyStackRef null_or_index;
  |  |11315|      0|            _PyStackRef none;
  |  |11316|      0|            _PyStackRef next;
  |  |11317|       |            /* Skip 1 cache entry */
  |  |11318|       |            // _GUARD_TOS_IS_NONE
  |  |11319|      0|            {
  |  |11320|      0|                val = stack_pointer[-1];
  |  |11321|      0|                if (!PyStackRef_IsNone(val)) {
  |  |  ------------------
  |  |  |  |  483|      0|#define PyStackRef_IsNone(REF) ((REF).bits == (((uintptr_t)&_Py_NoneStruct) | Py_TAG_REFCNT))
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (11321:21): [True: 0, False: 0]
  |  |  ------------------
  |  |11322|      0|                    UPDATE_MISS_STATS(SEND);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |11323|      0|                    assert(_PyOpcode_Deopt[opcode] == (SEND));
  |  |  ------------------
  |  |  |  Branch (11323:21): [True: 0, False: 0]
  |  |  ------------------
  |  |11324|      0|                    JUMP_TO_PREDICTED(SEND);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |11325|      0|                }
  |  |11326|      0|            }
  |  |11327|       |            // _GUARD_NOS_NOT_NULL
  |  |11328|      0|            {
  |  |11329|      0|                nos = stack_pointer[-2];
  |  |11330|      0|                if (PyStackRef_IsNull(nos)) {
  |  |  ------------------
  |  |  |  |  470|      0|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|      0|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      0|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (470:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |11331|      0|                    UPDATE_MISS_STATS(SEND);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |11332|      0|                    assert(_PyOpcode_Deopt[opcode] == (SEND));
  |  |  ------------------
  |  |  |  Branch (11332:21): [True: 0, False: 0]
  |  |  ------------------
  |  |11333|      0|                    JUMP_TO_PREDICTED(SEND);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |11334|      0|                }
  |  |11335|      0|            }
  |  |11336|       |            // _SEND_VIRTUAL
  |  |11337|      0|            {
  |  |11338|      0|                none = val;
  |  |11339|      0|                null_or_index = nos;
  |  |11340|      0|                iter = stack_pointer[-3];
  |  |11341|      0|                PyObject *iter_o = PyStackRef_AsPyObjectBorrow(iter);
  |  |11342|      0|                Py_ssize_t index = PyStackRef_UntagInt(null_or_index);
  |  |11343|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |11344|      0|                _PyObjectIndexPair next_index = Py_TYPE(iter_o)->_tp_iteritem(iter_o, index);
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |11345|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |11346|      0|                PyObject *next_o = next_index.object;
  |  |11347|      0|                index = next_index.index;
  |  |11348|      0|                if (next_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (11348:21): [True: 0, False: 0]
  |  |  ------------------
  |  |11349|      0|                    if (index < 0) {
  |  |  ------------------
  |  |  |  Branch (11349:25): [True: 0, False: 0]
  |  |  ------------------
  |  |11350|      0|                        JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |11351|      0|                    }
  |  |11352|      0|                    next = none;
  |  |11353|      0|                    JUMPBY(oparg);
  |  |  ------------------
  |  |  |  |  260|      0|#define JUMPBY(x)       (next_instr += (x))
  |  |  ------------------
  |  |11354|      0|                    DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (11354:21): [True: 0, False: 0]
  |  |  ------------------
  |  |11355|      0|                }
  |  |11356|      0|                next = PyStackRef_FromPyObjectSteal(next_o);
  |  |11357|      0|                null_or_index = PyStackRef_TagInt(index);
  |  |11358|      0|            }
  |  |11359|      0|            stack_pointer[-2] = null_or_index;
  |  |11360|      0|            stack_pointer[-1] = next;
  |  |11361|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (11361:13): [True: 0, False: 0]
  |  |  ------------------
  |  |11362|      0|        }
  |  |11363|       |
  |  |11364|      0|        TARGET(SETUP_ANNOTATIONS) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |11365|       |            #if _Py_TAIL_CALL_INTERP
  |  |11366|       |            int opcode = SETUP_ANNOTATIONS;
  |  |11367|       |            (void)(opcode);
  |  |11368|       |            #endif
  |  |11369|      0|            frame->instr_ptr = next_instr;
  |  |11370|      0|            next_instr += 1;
  |  |11371|      0|            INSTRUCTION_STATS(SETUP_ANNOTATIONS);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |11372|      0|            if (LOCALS() == NULL) {
  |  |  ------------------
  |  |  |  |  327|      0|#define LOCALS() frame->f_locals
  |  |  ------------------
  |  |  |  Branch (11372:17): [True: 0, False: 0]
  |  |  ------------------
  |  |11373|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |11374|      0|                _PyErr_Format(tstate, PyExc_SystemError,
  |  |11375|      0|                              "no locals found when setting up annotations");
  |  |11376|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |11377|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |11378|      0|            }
  |  |11379|      0|            int err;
  |  |11380|      0|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |11381|      0|            PyObject* ann_dict = _PyMapping_GetOptionalItem2(LOCALS(), &_Py_ID(__annotations__), &err);
  |  |  ------------------
  |  |  |  |  327|      0|#define LOCALS() frame->f_locals
  |  |  ------------------
  |  |                           PyObject* ann_dict = _PyMapping_GetOptionalItem2(LOCALS(), &_Py_ID(__annotations__), &err);
  |  |  ------------------
  |  |  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |11382|      0|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |11383|      0|            if (err < 0) {
  |  |  ------------------
  |  |  |  Branch (11383:17): [True: 0, False: 0]
  |  |  ------------------
  |  |11384|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |11385|      0|            }
  |  |11386|      0|            if (ann_dict == NULL) {
  |  |  ------------------
  |  |  |  Branch (11386:17): [True: 0, False: 0]
  |  |  ------------------
  |  |11387|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |11388|      0|                ann_dict = PyDict_New();
  |  |11389|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |11390|      0|                if (ann_dict == NULL) {
  |  |  ------------------
  |  |  |  Branch (11390:21): [True: 0, False: 0]
  |  |  ------------------
  |  |11391|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |11392|      0|                }
  |  |11393|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |11394|      0|                err = PyObject_SetItem(LOCALS(), &_Py_ID(__annotations__),
  |  |  ------------------
  |  |  |  |  327|      0|#define LOCALS() frame->f_locals
  |  |  ------------------
  |  |                               err = PyObject_SetItem(LOCALS(), &_Py_ID(__annotations__),
  |  |  ------------------
  |  |  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |11395|      0|                                       ann_dict);
  |  |11396|      0|                Py_DECREF(ann_dict);
  |  |  ------------------
  |  |  |  |   80|      0|    do { \
  |  |  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   84|      0|            break; \
  |  |  |  |   85|      0|        } \
  |  |  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |   91|      0|        } \
  |  |  |  |   92|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |11397|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |11398|      0|                if (err) {
  |  |  ------------------
  |  |  |  Branch (11398:21): [True: 0, False: 0]
  |  |  ------------------
  |  |11399|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |11400|      0|                }
  |  |11401|      0|            }
  |  |11402|      0|            else {
  |  |11403|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |11404|      0|                Py_DECREF(ann_dict);
  |  |  ------------------
  |  |  |  |   80|      0|    do { \
  |  |  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   84|      0|            break; \
  |  |  |  |   85|      0|        } \
  |  |  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |   91|      0|        } \
  |  |  |  |   92|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |11405|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |11406|      0|            }
  |  |11407|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (11407:13): [True: 0, False: 0]
  |  |  ------------------
  |  |11408|      0|        }
  |  |11409|       |
  |  |11410|      1|        TARGET(SET_ADD) {
  |  |  ------------------
  |  |  |  |  132|      1|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |11411|       |            #if _Py_TAIL_CALL_INTERP
  |  |11412|       |            int opcode = SET_ADD;
  |  |11413|       |            (void)(opcode);
  |  |11414|       |            #endif
  |  |11415|      1|            frame->instr_ptr = next_instr;
  |  |11416|      1|            next_instr += 1;
  |  |11417|      1|            INSTRUCTION_STATS(SET_ADD);
  |  |  ------------------
  |  |  |  |   71|      1|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |11418|      1|            _PyStackRef set;
  |  |11419|      1|            _PyStackRef v;
  |  |11420|      1|            v = stack_pointer[-1];
  |  |11421|      1|            set = stack_pointer[-2 - (oparg-1)];
  |  |11422|      1|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |11423|      1|            int err = _PySet_AddTakeRef((PySetObject *)PyStackRef_AsPyObjectBorrow(set),
  |  |11424|      1|                                        PyStackRef_AsPyObjectSteal(v));
  |  |11425|      1|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |11426|      1|            if (err) {
  |  |  ------------------
  |  |  |  Branch (11426:17): [True: 0, False: 1]
  |  |  ------------------
  |  |11427|      0|                JUMP_TO_LABEL(pop_1_error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |11428|      0|            }
  |  |11429|      1|            stack_pointer += -1;
  |  |11430|      1|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      1|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |11431|      1|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      1|    { \
  |  |  |  |  201|      1|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      1|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      1|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      1|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      1|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      1|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      1|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      1|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      1|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      1|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      1|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      1|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      1|    }
  |  |  ------------------
  |  |  |  Branch (11431:13): [True: 1, False: 0]
  |  |  ------------------
  |  |11432|      1|        }
  |  |11433|       |
  |  |11434|    175|        TARGET(SET_FUNCTION_ATTRIBUTE) {
  |  |  ------------------
  |  |  |  |  132|    175|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |11435|       |            #if _Py_TAIL_CALL_INTERP
  |  |11436|       |            int opcode = SET_FUNCTION_ATTRIBUTE;
  |  |11437|       |            (void)(opcode);
  |  |11438|       |            #endif
  |  |11439|    175|            frame->instr_ptr = next_instr;
  |  |11440|    175|            next_instr += 1;
  |  |11441|    175|            INSTRUCTION_STATS(SET_FUNCTION_ATTRIBUTE);
  |  |  ------------------
  |  |  |  |   71|    175|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |11442|    175|            _PyStackRef attr_st;
  |  |11443|    175|            _PyStackRef func_in;
  |  |11444|    175|            _PyStackRef func_out;
  |  |11445|    175|            func_in = stack_pointer[-1];
  |  |11446|    175|            attr_st = stack_pointer[-2];
  |  |11447|    175|            PyObject *func = PyStackRef_AsPyObjectBorrow(func_in);
  |  |11448|    175|            PyObject *attr = PyStackRef_AsPyObjectSteal(attr_st);
  |  |11449|    175|            func_out = func_in;
  |  |11450|    175|            assert(PyFunction_Check(func));
  |  |  ------------------
  |  |  |  Branch (11450:13): [True: 175, False: 0]
  |  |  ------------------
  |  |11451|    175|            size_t offset = _Py_FunctionAttributeOffsets[oparg];
  |  |11452|    175|            assert(offset != 0);
  |  |  ------------------
  |  |  |  Branch (11452:13): [True: 175, False: 0]
  |  |  ------------------
  |  |11453|    175|            PyObject **ptr = (PyObject **)(((char *)func) + offset);
  |  |11454|    175|            assert(*ptr == NULL);
  |  |  ------------------
  |  |  |  Branch (11454:13): [True: 175, False: 0]
  |  |  ------------------
  |  |11455|    175|            *ptr = attr;
  |  |11456|    175|            stack_pointer[-2] = func_out;
  |  |11457|    175|            stack_pointer += -1;
  |  |11458|    175|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    175|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |11459|    175|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    175|    { \
  |  |  |  |  201|    175|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    175|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    175|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    175|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    175|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    175|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    175|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    175|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 175]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    175|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    175|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    175|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    175|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    175|    }
  |  |  ------------------
  |  |  |  Branch (11459:13): [True: 175, False: 0]
  |  |  ------------------
  |  |11460|    175|        }
  |  |11461|       |
  |  |11462|      0|        TARGET(SET_UPDATE) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |11463|       |            #if _Py_TAIL_CALL_INTERP
  |  |11464|       |            int opcode = SET_UPDATE;
  |  |11465|       |            (void)(opcode);
  |  |11466|       |            #endif
  |  |11467|      0|            frame->instr_ptr = next_instr;
  |  |11468|      0|            next_instr += 1;
  |  |11469|      0|            INSTRUCTION_STATS(SET_UPDATE);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |11470|      0|            _PyStackRef set;
  |  |11471|      0|            _PyStackRef iterable;
  |  |11472|      0|            _PyStackRef i;
  |  |11473|      0|            _PyStackRef value;
  |  |11474|       |            // _SET_UPDATE
  |  |11475|      0|            {
  |  |11476|      0|                iterable = stack_pointer[-1];
  |  |11477|      0|                set = stack_pointer[-2 - (oparg-1)];
  |  |11478|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |11479|      0|                int err = _PySet_Update(PyStackRef_AsPyObjectBorrow(set),
  |  |11480|      0|                                    PyStackRef_AsPyObjectBorrow(iterable));
  |  |11481|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |11482|      0|                if (err < 0) {
  |  |  ------------------
  |  |  |  Branch (11482:21): [True: 0, False: 0]
  |  |  ------------------
  |  |11483|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |11484|      0|                }
  |  |11485|      0|                i = iterable;
  |  |11486|      0|            }
  |  |11487|       |            // _POP_TOP
  |  |11488|      0|            {
  |  |11489|      0|                value = i;
  |  |11490|      0|                stack_pointer += -1;
  |  |11491|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |11492|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |11493|      0|                PyStackRef_XCLOSE(value);
  |  |11494|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |11495|      0|            }
  |  |11496|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (11496:13): [True: 0, False: 0]
  |  |  ------------------
  |  |11497|      0|        }
  |  |11498|       |
  |  |11499|    277|        TARGET(STORE_ATTR) {
  |  |  ------------------
  |  |  |  |  132|    277|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |11500|       |            #if _Py_TAIL_CALL_INTERP
  |  |11501|       |            int opcode = STORE_ATTR;
  |  |11502|       |            (void)(opcode);
  |  |11503|       |            #endif
  |  |11504|    277|            frame->instr_ptr = next_instr;
  |  |11505|    277|            next_instr += 5;
  |  |11506|    277|            INSTRUCTION_STATS(STORE_ATTR);
  |  |  ------------------
  |  |  |  |   71|    277|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |11507|    277|            PREDICTED_STORE_ATTR:;
  |  |11508|    277|            _Py_CODEUNIT* const this_instr = next_instr - 5;
  |  |11509|    277|            (void)this_instr;
  |  |11510|    277|            _PyStackRef owner;
  |  |11511|    277|            _PyStackRef v;
  |  |11512|       |            // _SPECIALIZE_STORE_ATTR
  |  |11513|    277|            {
  |  |11514|    277|                owner = stack_pointer[-1];
  |  |11515|    277|                uint16_t counter = read_u16(&this_instr[1].cache);
  |  |11516|    277|                (void)counter;
  |  |11517|    277|                #if ENABLE_SPECIALIZATION
  |  |11518|    277|                if (ADAPTIVE_COUNTER_TRIGGERS(counter)) {
  |  |  ------------------
  |  |  |  |  354|    277|    backoff_counter_triggers(forge_backoff_counter((COUNTER)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (354:5): [True: 64, False: 213]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |11519|     64|                    PyObject *name = GETITEM(FRAME_CO_NAMES, oparg);
  |  |  ------------------
  |  |  |  |  235|     64|#define GETITEM(v, i) PyTuple_GET_ITEM((v), (i))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|     64|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   19|     64|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     64|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (11519:38): [True: 64, False: 0]
  |  |  ------------------
  |  |11520|      0|                    next_instr = this_instr;
  |  |11521|     64|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |11522|     64|                    _Py_Specialize_StoreAttr(owner, next_instr, name);
  |  |11523|     64|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |11524|     64|                    DISPATCH_SAME_OPARG();
  |  |  ------------------
  |  |  |  |  216|     64|    { \
  |  |  |  |  217|     64|        opcode = next_instr->op.code; \
  |  |  |  |  218|     64|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     64|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  219|     64|        DISPATCH_GOTO_NON_TRACING(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  134|     64|#  define DISPATCH_GOTO_NON_TRACING() goto *DISPATCH_TABLE[opcode];
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  130|     64|#  define DISPATCH_TABLE opcode_targets_table
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  220|     64|    }
  |  |  ------------------
  |  |11525|     64|                }
  |  |11526|    277|                OPCODE_DEFERRED_INC(STORE_ATTR);
  |  |  ------------------
  |  |  |  |   90|    277|#define OPCODE_DEFERRED_INC(opname) ((void)0)
  |  |  ------------------
  |  |11527|    277|                ADVANCE_ADAPTIVE_COUNTER(this_instr[1].counter);
  |  |  ------------------
  |  |  |  |  357|    277|    do { \
  |  |  |  |  358|    277|        (COUNTER) = advance_backoff_counter((COUNTER)); \
  |  |  |  |  359|    277|    } while (0);
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (359:14): [Folded, False: 277]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |11528|    277|                #endif  /* ENABLE_SPECIALIZATION */
  |  |11529|    277|            }
  |  |11530|       |            /* Skip 3 cache entries */
  |  |11531|       |            // _STORE_ATTR
  |  |11532|      0|            {
  |  |11533|    277|                v = stack_pointer[-2];
  |  |11534|    277|                PyObject *name = GETITEM(FRAME_CO_NAMES, oparg);
  |  |  ------------------
  |  |  |  |  235|    277|#define GETITEM(v, i) PyTuple_GET_ITEM((v), (i))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|    277|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   19|    277|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|    213|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (11534:34): [True: 213, False: 64]
  |  |  ------------------
  |  |11535|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |11536|    213|                int err = PyObject_SetAttr(PyStackRef_AsPyObjectBorrow(owner),
  |  |11537|    213|                                       name, PyStackRef_AsPyObjectBorrow(v));
  |  |11538|    213|                _PyStackRef tmp = owner;
  |  |11539|    213|                owner = PyStackRef_NULL;
  |  |11540|    213|                stack_pointer[-1] = owner;
  |  |11541|    213|                PyStackRef_CLOSE(tmp);
  |  |11542|    213|                tmp = v;
  |  |11543|    213|                v = PyStackRef_NULL;
  |  |11544|    213|                stack_pointer[-2] = v;
  |  |11545|    213|                PyStackRef_CLOSE(tmp);
  |  |11546|    213|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |11547|    213|                stack_pointer += -2;
  |  |11548|    213|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    213|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |11549|    213|                if (err) {
  |  |  ------------------
  |  |  |  Branch (11549:21): [True: 0, False: 213]
  |  |  ------------------
  |  |11550|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |11551|      0|                }
  |  |11552|    213|            }
  |  |11553|    213|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    213|    { \
  |  |  |  |  201|    213|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    213|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    213|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    213|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    213|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    213|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    213|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    213|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 213]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    213|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    213|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    213|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    213|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    213|    }
  |  |  ------------------
  |  |  |  Branch (11553:13): [True: 213, False: 0]
  |  |  ------------------
  |  |11554|    213|        }
  |  |11555|       |
  |  |11556|    685|        TARGET(STORE_ATTR_INSTANCE_VALUE) {
  |  |  ------------------
  |  |  |  |  132|    685|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |11557|       |            #if _Py_TAIL_CALL_INTERP
  |  |11558|       |            int opcode = STORE_ATTR_INSTANCE_VALUE;
  |  |11559|       |            (void)(opcode);
  |  |11560|       |            #endif
  |  |11561|    685|            _Py_CODEUNIT* const this_instr = next_instr;
  |  |11562|    685|            (void)this_instr;
  |  |11563|    685|            frame->instr_ptr = next_instr;
  |  |11564|    685|            next_instr += 5;
  |  |11565|    685|            INSTRUCTION_STATS(STORE_ATTR_INSTANCE_VALUE);
  |  |  ------------------
  |  |  |  |   71|    685|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |11566|    685|            static_assert(INLINE_CACHE_ENTRIES_STORE_ATTR == 4, "incorrect cache size");
  |  |11567|    685|            _PyStackRef value;
  |  |11568|    685|            _PyStackRef owner;
  |  |11569|    685|            _PyStackRef o;
  |  |11570|       |            /* Skip 1 cache entry */
  |  |11571|       |            // _LOCK_OBJECT
  |  |11572|    685|            {
  |  |11573|    685|                value = stack_pointer[-1];
  |  |11574|    685|                if (!LOCK_OBJECT(PyStackRef_AsPyObjectBorrow(value))) {
  |  |  ------------------
  |  |  |  |  321|    685|#  define LOCK_OBJECT(op) (1)
  |  |  ------------------
  |  |  |  Branch (11574:21): [Folded, False: 685]
  |  |  ------------------
  |  |11575|      0|                    UPDATE_MISS_STATS(STORE_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |11576|      0|                    assert(_PyOpcode_Deopt[opcode] == (STORE_ATTR));
  |  |  ------------------
  |  |  |  Branch (11576:21): [True: 0, False: 0]
  |  |  ------------------
  |  |11577|      0|                    JUMP_TO_PREDICTED(STORE_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |11578|      0|                }
  |  |11579|    685|            }
  |  |11580|       |            // _GUARD_TYPE_VERSION_LOCKED
  |  |11581|    685|            {
  |  |11582|    685|                owner = value;
  |  |11583|    685|                uint32_t type_version = read_u32(&this_instr[2].cache);
  |  |11584|    685|                PyObject *owner_o = PyStackRef_AsPyObjectBorrow(owner);
  |  |11585|    685|                assert(type_version != 0);
  |  |  ------------------
  |  |  |  Branch (11585:17): [True: 685, False: 0]
  |  |  ------------------
  |  |11586|    685|                PyTypeObject *tp = Py_TYPE(owner_o);
  |  |  ------------------
  |  |  |  |  213|    685|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    685|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    685|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |11587|    685|                if (FT_ATOMIC_LOAD_UINT_RELAXED(tp->tp_version_tag) != type_version) {
  |  |  ------------------
  |  |  |  |  189|    685|#define FT_ATOMIC_LOAD_UINT_RELAXED(value) value
  |  |  ------------------
  |  |  |  Branch (11587:21): [True: 0, False: 685]
  |  |  ------------------
  |  |11588|      0|                    UNLOCK_OBJECT(owner_o);
  |  |  ------------------
  |  |  |  |  322|      0|#  define UNLOCK_OBJECT(op) ((void)0)
  |  |  ------------------
  |  |11589|      0|                    if (true) {
  |  |  ------------------
  |  |  |  Branch (11589:25): [True: 0, Folded]
  |  |  ------------------
  |  |11590|      0|                        UPDATE_MISS_STATS(STORE_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |11591|      0|                        assert(_PyOpcode_Deopt[opcode] == (STORE_ATTR));
  |  |  ------------------
  |  |  |  Branch (11591:25): [True: 0, False: 0]
  |  |  ------------------
  |  |11592|      0|                        JUMP_TO_PREDICTED(STORE_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |11593|      0|                    }
  |  |11594|      0|                }
  |  |11595|    685|            }
  |  |11596|       |            // _GUARD_DORV_NO_DICT
  |  |11597|    685|            {
  |  |11598|    685|                PyObject *owner_o = PyStackRef_AsPyObjectBorrow(owner);
  |  |11599|    685|                assert(Py_TYPE(owner_o)->tp_dictoffset < 0);
  |  |  ------------------
  |  |  |  Branch (11599:17): [True: 685, False: 0]
  |  |  ------------------
  |  |11600|    685|                assert(Py_TYPE(owner_o)->tp_flags & Py_TPFLAGS_INLINE_VALUES);
  |  |  ------------------
  |  |  |  Branch (11600:17): [True: 685, False: 0]
  |  |  ------------------
  |  |11601|    685|                if (_PyObject_GetManagedDict(owner_o) ||
  |  |  ------------------
  |  |  |  Branch (11601:21): [True: 0, False: 685]
  |  |  ------------------
  |  |11602|    685|                    !FT_ATOMIC_LOAD_UINT8(_PyObject_InlineValues(owner_o)->valid)) {
  |  |  ------------------
  |  |  |  |  154|    685|#define FT_ATOMIC_LOAD_UINT8(value) value
  |  |  ------------------
  |  |  |  Branch (11602:21): [True: 0, False: 685]
  |  |  ------------------
  |  |11603|      0|                    UNLOCK_OBJECT(owner_o);
  |  |  ------------------
  |  |  |  |  322|      0|#  define UNLOCK_OBJECT(op) ((void)0)
  |  |  ------------------
  |  |11604|      0|                    if (true) {
  |  |  ------------------
  |  |  |  Branch (11604:25): [True: 0, Folded]
  |  |  ------------------
  |  |11605|      0|                        UPDATE_MISS_STATS(STORE_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |11606|      0|                        assert(_PyOpcode_Deopt[opcode] == (STORE_ATTR));
  |  |  ------------------
  |  |  |  Branch (11606:25): [True: 0, False: 0]
  |  |  ------------------
  |  |11607|      0|                        JUMP_TO_PREDICTED(STORE_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |11608|      0|                    }
  |  |11609|      0|                }
  |  |11610|    685|            }
  |  |11611|       |            // _STORE_ATTR_INSTANCE_VALUE
  |  |11612|    685|            {
  |  |11613|    685|                value = stack_pointer[-2];
  |  |11614|    685|                uint16_t offset = read_u16(&this_instr[4].cache);
  |  |11615|    685|                PyObject *owner_o = PyStackRef_AsPyObjectBorrow(owner);
  |  |11616|    685|                STAT_INC(STORE_ATTR, hit);
  |  |  ------------------
  |  |  |  |   73|    685|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  |11617|    685|                assert(_PyObject_GetManagedDict(owner_o) == NULL);
  |  |  ------------------
  |  |  |  Branch (11617:17): [True: 685, False: 0]
  |  |  ------------------
  |  |11618|    685|                PyObject **value_ptr = (PyObject**)(((char *)owner_o) + offset);
  |  |11619|    685|                PyObject *old_value = *value_ptr;
  |  |11620|    685|                FT_ATOMIC_STORE_PTR_RELEASE(*value_ptr, PyStackRef_AsPyObjectSteal(value));
  |  |  ------------------
  |  |  |  |  164|    685|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  |  |  ------------------
  |  |11621|    685|                if (old_value == NULL) {
  |  |  ------------------
  |  |  |  Branch (11621:21): [True: 561, False: 124]
  |  |  ------------------
  |  |11622|    561|                    PyDictValues *values = _PyObject_InlineValues(owner_o);
  |  |11623|    561|                    Py_ssize_t index = value_ptr - values->values;
  |  |11624|    561|                    _PyDictValues_AddToInsertionOrder(values, index);
  |  |11625|    561|                }
  |  |11626|    685|                UNLOCK_OBJECT(owner_o);
  |  |  ------------------
  |  |  |  |  322|    685|#  define UNLOCK_OBJECT(op) ((void)0)
  |  |  ------------------
  |  |11627|    685|                o = owner;
  |  |11628|    685|                stack_pointer[-2] = o;
  |  |11629|    685|                stack_pointer += -1;
  |  |11630|    685|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    685|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |11631|    685|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |11632|    685|                Py_XDECREF(old_value);
  |  |  ------------------
  |  |  |  |   69|    685|    do { \
  |  |  |  |   70|    685|        PyObject *xop = _PyObject_CAST(arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    685|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    685|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   71|    685|        if (xop != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (71:13): [True: 124, False: 561]
  |  |  |  |  ------------------
  |  |  |  |   72|    124|            Py_DECREF(xop); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   80|    124|    do { \
  |  |  |  |  |  |   81|    124|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|    124|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|    124|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   82|    124|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  137|    124|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|    124|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|    124|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (137:28): [True: 93, False: 31]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|     93|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   22|     93|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   84|     93|            break; \
  |  |  |  |  |  |   85|     93|        } \
  |  |  |  |  |  |   86|    124|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|     31|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   87|     31|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (87:13): [True: 31, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   88|     31|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|     31|    do { \
  |  |  |  |  |  |  |  |  113|     31|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  |  |  114|     31|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 31]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  |  |  118|     31|    } while(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 31]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   89|     31|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  213|     31|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|     31|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|     31|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   90|     31|            (*dealloc)(op); \
  |  |  |  |  |  |   91|     31|        } \
  |  |  |  |  |  |   92|     31|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (92:14): [Folded, False: 31]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   73|    124|        } \
  |  |  |  |   74|    685|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (74:14): [Folded, False: 685]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |11633|    685|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |11634|    685|            }
  |  |11635|       |            // _POP_TOP
  |  |11636|      0|            {
  |  |11637|    685|                value = o;
  |  |11638|    685|                stack_pointer += -1;
  |  |11639|    685|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    685|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |11640|    685|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |11641|    685|                PyStackRef_XCLOSE(value);
  |  |11642|    685|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |11643|    685|            }
  |  |11644|    685|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    685|    { \
  |  |  |  |  201|    685|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    685|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    685|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    685|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    685|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    685|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    685|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    685|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 685]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    685|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    685|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    685|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    685|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    685|    }
  |  |  ------------------
  |  |  |  Branch (11644:13): [True: 685, False: 0]
  |  |  ------------------
  |  |11645|    685|        }
  |  |11646|       |
  |  |11647|     29|        TARGET(STORE_ATTR_SLOT) {
  |  |  ------------------
  |  |  |  |  132|     29|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |11648|       |            #if _Py_TAIL_CALL_INTERP
  |  |11649|       |            int opcode = STORE_ATTR_SLOT;
  |  |11650|       |            (void)(opcode);
  |  |11651|       |            #endif
  |  |11652|     29|            _Py_CODEUNIT* const this_instr = next_instr;
  |  |11653|     29|            (void)this_instr;
  |  |11654|     29|            frame->instr_ptr = next_instr;
  |  |11655|     29|            next_instr += 5;
  |  |11656|     29|            INSTRUCTION_STATS(STORE_ATTR_SLOT);
  |  |  ------------------
  |  |  |  |   71|     29|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |11657|     29|            static_assert(INLINE_CACHE_ENTRIES_STORE_ATTR == 4, "incorrect cache size");
  |  |11658|     29|            _PyStackRef owner;
  |  |11659|     29|            _PyStackRef value;
  |  |11660|     29|            _PyStackRef o;
  |  |11661|       |            /* Skip 1 cache entry */
  |  |11662|       |            // _GUARD_TYPE_VERSION
  |  |11663|     29|            {
  |  |11664|     29|                owner = stack_pointer[-1];
  |  |11665|     29|                uint32_t type_version = read_u32(&this_instr[2].cache);
  |  |11666|     29|                PyTypeObject *tp = Py_TYPE(PyStackRef_AsPyObjectBorrow(owner));
  |  |  ------------------
  |  |  |  |  213|     29|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     29|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     29|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |11667|     29|                assert(type_version != 0);
  |  |  ------------------
  |  |  |  Branch (11667:17): [True: 29, False: 0]
  |  |  ------------------
  |  |11668|     29|                if (FT_ATOMIC_LOAD_UINT_RELAXED(tp->tp_version_tag) != type_version) {
  |  |  ------------------
  |  |  |  |  189|     29|#define FT_ATOMIC_LOAD_UINT_RELAXED(value) value
  |  |  ------------------
  |  |  |  Branch (11668:21): [True: 0, False: 29]
  |  |  ------------------
  |  |11669|      0|                    UPDATE_MISS_STATS(STORE_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |11670|      0|                    assert(_PyOpcode_Deopt[opcode] == (STORE_ATTR));
  |  |  ------------------
  |  |  |  Branch (11670:21): [True: 0, False: 0]
  |  |  ------------------
  |  |11671|      0|                    JUMP_TO_PREDICTED(STORE_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |11672|      0|                }
  |  |11673|     29|            }
  |  |11674|       |            // _STORE_ATTR_SLOT
  |  |11675|     29|            {
  |  |11676|     29|                value = stack_pointer[-2];
  |  |11677|     29|                uint16_t index = read_u16(&this_instr[4].cache);
  |  |11678|     29|                PyObject *owner_o = PyStackRef_AsPyObjectBorrow(owner);
  |  |11679|     29|                if (!LOCK_OBJECT(owner_o)) {
  |  |  ------------------
  |  |  |  |  321|     29|#  define LOCK_OBJECT(op) (1)
  |  |  ------------------
  |  |  |  Branch (11679:21): [Folded, False: 29]
  |  |  ------------------
  |  |11680|      0|                    UPDATE_MISS_STATS(STORE_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |11681|      0|                    assert(_PyOpcode_Deopt[opcode] == (STORE_ATTR));
  |  |  ------------------
  |  |  |  Branch (11681:21): [True: 0, False: 0]
  |  |  ------------------
  |  |11682|      0|                    JUMP_TO_PREDICTED(STORE_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |11683|      0|                }
  |  |11684|     29|                char *addr = (char *)owner_o + index;
  |  |11685|     29|                STAT_INC(STORE_ATTR, hit);
  |  |  ------------------
  |  |  |  |   73|     29|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  |11686|     29|                PyObject *old_value = *(PyObject **)addr;
  |  |11687|     29|                FT_ATOMIC_STORE_PTR_RELEASE(*(PyObject **)addr, PyStackRef_AsPyObjectSteal(value));
  |  |  ------------------
  |  |  |  |  164|     29|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  |  |  ------------------
  |  |11688|     29|                UNLOCK_OBJECT(owner_o);
  |  |  ------------------
  |  |  |  |  322|     29|#  define UNLOCK_OBJECT(op) ((void)0)
  |  |  ------------------
  |  |11689|     29|                o = owner;
  |  |11690|     29|                stack_pointer[-2] = o;
  |  |11691|     29|                stack_pointer += -1;
  |  |11692|     29|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     29|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |11693|     29|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |11694|     29|                Py_XDECREF(old_value);
  |  |  ------------------
  |  |  |  |   69|     29|    do { \
  |  |  |  |   70|     29|        PyObject *xop = _PyObject_CAST(arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     29|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     29|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   71|     29|        if (xop != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (71:13): [True: 0, False: 29]
  |  |  |  |  ------------------
  |  |  |  |   72|      0|            Py_DECREF(xop); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   80|      0|    do { \
  |  |  |  |  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|            break; \
  |  |  |  |  |  |   85|      0|        } \
  |  |  |  |  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |  |  |   91|      0|        } \
  |  |  |  |  |  |   92|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   73|      0|        } \
  |  |  |  |   74|     29|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (74:14): [Folded, False: 29]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |11695|     29|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |11696|     29|            }
  |  |11697|       |            // _POP_TOP
  |  |11698|      0|            {
  |  |11699|     29|                value = o;
  |  |11700|     29|                stack_pointer += -1;
  |  |11701|     29|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     29|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |11702|     29|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |11703|     29|                PyStackRef_XCLOSE(value);
  |  |11704|     29|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |11705|     29|            }
  |  |11706|     29|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     29|    { \
  |  |  |  |  201|     29|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     29|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     29|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     29|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     29|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     29|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     29|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     29|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 29]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     29|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     29|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     29|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     29|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     29|    }
  |  |  ------------------
  |  |  |  Branch (11706:13): [True: 29, False: 0]
  |  |  ------------------
  |  |11707|     29|        }
  |  |11708|       |
  |  |11709|      0|        TARGET(STORE_ATTR_WITH_HINT) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |11710|       |            #if _Py_TAIL_CALL_INTERP
  |  |11711|       |            int opcode = STORE_ATTR_WITH_HINT;
  |  |11712|       |            (void)(opcode);
  |  |11713|       |            #endif
  |  |11714|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  |11715|      0|            (void)this_instr;
  |  |11716|      0|            frame->instr_ptr = next_instr;
  |  |11717|      0|            next_instr += 5;
  |  |11718|      0|            INSTRUCTION_STATS(STORE_ATTR_WITH_HINT);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |11719|      0|            static_assert(INLINE_CACHE_ENTRIES_STORE_ATTR == 4, "incorrect cache size");
  |  |11720|      0|            _PyStackRef owner;
  |  |11721|      0|            _PyStackRef value;
  |  |11722|      0|            _PyStackRef o;
  |  |11723|       |            /* Skip 1 cache entry */
  |  |11724|       |            // _GUARD_TYPE_VERSION
  |  |11725|      0|            {
  |  |11726|      0|                owner = stack_pointer[-1];
  |  |11727|      0|                uint32_t type_version = read_u32(&this_instr[2].cache);
  |  |11728|      0|                PyTypeObject *tp = Py_TYPE(PyStackRef_AsPyObjectBorrow(owner));
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |11729|      0|                assert(type_version != 0);
  |  |  ------------------
  |  |  |  Branch (11729:17): [True: 0, False: 0]
  |  |  ------------------
  |  |11730|      0|                if (FT_ATOMIC_LOAD_UINT_RELAXED(tp->tp_version_tag) != type_version) {
  |  |  ------------------
  |  |  |  |  189|      0|#define FT_ATOMIC_LOAD_UINT_RELAXED(value) value
  |  |  ------------------
  |  |  |  Branch (11730:21): [True: 0, False: 0]
  |  |  ------------------
  |  |11731|      0|                    UPDATE_MISS_STATS(STORE_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |11732|      0|                    assert(_PyOpcode_Deopt[opcode] == (STORE_ATTR));
  |  |  ------------------
  |  |  |  Branch (11732:21): [True: 0, False: 0]
  |  |  ------------------
  |  |11733|      0|                    JUMP_TO_PREDICTED(STORE_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |11734|      0|                }
  |  |11735|      0|            }
  |  |11736|       |            // _STORE_ATTR_WITH_HINT
  |  |11737|      0|            {
  |  |11738|      0|                value = stack_pointer[-2];
  |  |11739|      0|                uint16_t hint = read_u16(&this_instr[4].cache);
  |  |11740|      0|                PyObject *owner_o = PyStackRef_AsPyObjectBorrow(owner);
  |  |11741|      0|                assert(Py_TYPE(owner_o)->tp_flags & Py_TPFLAGS_MANAGED_DICT);
  |  |  ------------------
  |  |  |  Branch (11741:17): [True: 0, False: 0]
  |  |  ------------------
  |  |11742|      0|                PyDictObject *dict = _PyObject_GetManagedDict(owner_o);
  |  |11743|      0|                if (dict == NULL) {
  |  |  ------------------
  |  |  |  Branch (11743:21): [True: 0, False: 0]
  |  |  ------------------
  |  |11744|      0|                    UPDATE_MISS_STATS(STORE_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |11745|      0|                    assert(_PyOpcode_Deopt[opcode] == (STORE_ATTR));
  |  |  ------------------
  |  |  |  Branch (11745:21): [True: 0, False: 0]
  |  |  ------------------
  |  |11746|      0|                    JUMP_TO_PREDICTED(STORE_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |11747|      0|                }
  |  |11748|      0|                if (!LOCK_OBJECT(dict)) {
  |  |  ------------------
  |  |  |  |  321|      0|#  define LOCK_OBJECT(op) (1)
  |  |  ------------------
  |  |  |  Branch (11748:21): [Folded, False: 0]
  |  |  ------------------
  |  |11749|      0|                    UPDATE_MISS_STATS(STORE_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |11750|      0|                    assert(_PyOpcode_Deopt[opcode] == (STORE_ATTR));
  |  |  ------------------
  |  |  |  Branch (11750:21): [True: 0, False: 0]
  |  |  ------------------
  |  |11751|      0|                    JUMP_TO_PREDICTED(STORE_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |11752|      0|                }
  |  |11753|      0|                assert(PyDict_CheckExact((PyObject *)dict));
  |  |  ------------------
  |  |  |  Branch (11753:17): [True: 0, False: 0]
  |  |  ------------------
  |  |11754|      0|                PyObject *name = GETITEM(FRAME_CO_NAMES, oparg);
  |  |  ------------------
  |  |  |  |  235|      0|#define GETITEM(v, i) PyTuple_GET_ITEM((v), (i))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   19|      0|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (11754:34): [True: 0, False: 0]
  |  |  ------------------
  |  |11755|      0|                if (hint >= (size_t)dict->ma_keys->dk_nentries ||
  |  |  ------------------
  |  |  |  Branch (11755:21): [True: 0, False: 0]
  |  |  ------------------
  |  |11756|      0|                    dict->ma_keys->dk_kind != DICT_KEYS_UNICODE) {
  |  |  ------------------
  |  |  |  Branch (11756:21): [True: 0, False: 0]
  |  |  ------------------
  |  |11757|      0|                    UNLOCK_OBJECT(dict);
  |  |  ------------------
  |  |  |  |  322|      0|#  define UNLOCK_OBJECT(op) ((void)0)
  |  |  ------------------
  |  |11758|      0|                    if (true) {
  |  |  ------------------
  |  |  |  Branch (11758:25): [True: 0, Folded]
  |  |  ------------------
  |  |11759|      0|                        UPDATE_MISS_STATS(STORE_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |11760|      0|                        assert(_PyOpcode_Deopt[opcode] == (STORE_ATTR));
  |  |  ------------------
  |  |  |  Branch (11760:25): [True: 0, False: 0]
  |  |  ------------------
  |  |11761|      0|                        JUMP_TO_PREDICTED(STORE_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |11762|      0|                    }
  |  |11763|      0|                }
  |  |11764|      0|                PyDictUnicodeEntry *ep = DK_UNICODE_ENTRIES(dict->ma_keys) + hint;
  |  |11765|      0|                if (ep->me_key != name) {
  |  |  ------------------
  |  |  |  Branch (11765:21): [True: 0, False: 0]
  |  |  ------------------
  |  |11766|      0|                    UNLOCK_OBJECT(dict);
  |  |  ------------------
  |  |  |  |  322|      0|#  define UNLOCK_OBJECT(op) ((void)0)
  |  |  ------------------
  |  |11767|      0|                    if (true) {
  |  |  ------------------
  |  |  |  Branch (11767:25): [True: 0, Folded]
  |  |  ------------------
  |  |11768|      0|                        UPDATE_MISS_STATS(STORE_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |11769|      0|                        assert(_PyOpcode_Deopt[opcode] == (STORE_ATTR));
  |  |  ------------------
  |  |  |  Branch (11769:25): [True: 0, False: 0]
  |  |  ------------------
  |  |11770|      0|                        JUMP_TO_PREDICTED(STORE_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |11771|      0|                    }
  |  |11772|      0|                }
  |  |11773|      0|                PyObject *old_value = ep->me_value;
  |  |11774|      0|                if (old_value == NULL) {
  |  |  ------------------
  |  |  |  Branch (11774:21): [True: 0, False: 0]
  |  |  ------------------
  |  |11775|      0|                    UNLOCK_OBJECT(dict);
  |  |  ------------------
  |  |  |  |  322|      0|#  define UNLOCK_OBJECT(op) ((void)0)
  |  |  ------------------
  |  |11776|      0|                    if (true) {
  |  |  ------------------
  |  |  |  Branch (11776:25): [True: 0, Folded]
  |  |  ------------------
  |  |11777|      0|                        UPDATE_MISS_STATS(STORE_ATTR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |11778|      0|                        assert(_PyOpcode_Deopt[opcode] == (STORE_ATTR));
  |  |  ------------------
  |  |  |  Branch (11778:25): [True: 0, False: 0]
  |  |  ------------------
  |  |11779|      0|                        JUMP_TO_PREDICTED(STORE_ATTR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |11780|      0|                    }
  |  |11781|      0|                }
  |  |11782|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |11783|      0|                _PyDict_NotifyEvent(PyDict_EVENT_MODIFIED, dict, name, PyStackRef_AsPyObjectBorrow(value));
  |  |11784|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |11785|      0|                FT_ATOMIC_STORE_PTR_RELEASE(ep->me_value, PyStackRef_AsPyObjectSteal(value));
  |  |  ------------------
  |  |  |  |  164|      0|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  |  |  ------------------
  |  |11786|      0|                UNLOCK_OBJECT(dict);
  |  |  ------------------
  |  |  |  |  322|      0|#  define UNLOCK_OBJECT(op) ((void)0)
  |  |  ------------------
  |  |11787|      0|                STAT_INC(STORE_ATTR, hit);
  |  |  ------------------
  |  |  |  |   73|      0|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  |11788|      0|                o = owner;
  |  |11789|      0|                stack_pointer[-2] = o;
  |  |11790|      0|                stack_pointer += -1;
  |  |11791|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |11792|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |11793|      0|                Py_XDECREF(old_value);
  |  |  ------------------
  |  |  |  |   69|      0|    do { \
  |  |  |  |   70|      0|        PyObject *xop = _PyObject_CAST(arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   71|      0|        if (xop != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (71:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   72|      0|            Py_DECREF(xop); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   80|      0|    do { \
  |  |  |  |  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|            break; \
  |  |  |  |  |  |   85|      0|        } \
  |  |  |  |  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |  |  |   91|      0|        } \
  |  |  |  |  |  |   92|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   73|      0|        } \
  |  |  |  |   74|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (74:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |11794|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |11795|      0|            }
  |  |11796|       |            // _POP_TOP
  |  |11797|      0|            {
  |  |11798|      0|                value = o;
  |  |11799|      0|                stack_pointer += -1;
  |  |11800|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |11801|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |11802|      0|                PyStackRef_XCLOSE(value);
  |  |11803|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |11804|      0|            }
  |  |11805|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (11805:13): [True: 0, False: 0]
  |  |  ------------------
  |  |11806|      0|        }
  |  |11807|       |
  |  |11808|     91|        TARGET(STORE_DEREF) {
  |  |  ------------------
  |  |  |  |  132|     91|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |11809|       |            #if _Py_TAIL_CALL_INTERP
  |  |11810|       |            int opcode = STORE_DEREF;
  |  |11811|       |            (void)(opcode);
  |  |11812|       |            #endif
  |  |11813|     91|            frame->instr_ptr = next_instr;
  |  |11814|     91|            next_instr += 1;
  |  |11815|     91|            INSTRUCTION_STATS(STORE_DEREF);
  |  |  ------------------
  |  |  |  |   71|     91|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |11816|     91|            _PyStackRef v;
  |  |11817|     91|            v = stack_pointer[-1];
  |  |11818|     91|            PyCellObject *cell = (PyCellObject *)PyStackRef_AsPyObjectBorrow(GETLOCAL(oparg));
  |  |  ------------------
  |  |  |  |  284|     91|#define GETLOCAL(i)     (frame->localsplus[i])
  |  |  ------------------
  |  |11819|     91|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |11820|     91|            PyCell_SetTakeRef(cell, PyStackRef_AsPyObjectSteal(v));
  |  |11821|     91|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |11822|     91|            stack_pointer += -1;
  |  |11823|     91|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     91|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |11824|     91|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     91|    { \
  |  |  |  |  201|     91|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     91|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     91|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     91|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     91|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     91|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     91|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     91|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 91]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     91|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     91|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     91|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     91|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     91|    }
  |  |  ------------------
  |  |  |  Branch (11824:13): [True: 91, False: 0]
  |  |  ------------------
  |  |11825|     91|        }
  |  |11826|       |
  |  |11827|  1.59k|        TARGET(STORE_FAST) {
  |  |  ------------------
  |  |  |  |  132|  1.59k|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |11828|       |            #if _Py_TAIL_CALL_INTERP
  |  |11829|       |            int opcode = STORE_FAST;
  |  |11830|       |            (void)(opcode);
  |  |11831|       |            #endif
  |  |11832|  1.59k|            frame->instr_ptr = next_instr;
  |  |11833|  1.59k|            next_instr += 1;
  |  |11834|  1.59k|            INSTRUCTION_STATS(STORE_FAST);
  |  |  ------------------
  |  |  |  |   71|  1.59k|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |11835|  1.59k|            _PyStackRef value;
  |  |11836|  1.59k|            _PyStackRef trash;
  |  |11837|       |            // _SWAP_FAST
  |  |11838|  1.59k|            {
  |  |11839|  1.59k|                value = stack_pointer[-1];
  |  |11840|  1.59k|                _PyStackRef tmp = GETLOCAL(oparg);
  |  |  ------------------
  |  |  |  |  284|  1.59k|#define GETLOCAL(i)     (frame->localsplus[i])
  |  |  ------------------
  |  |11841|  1.59k|                GETLOCAL(oparg) = value;
  |  |  ------------------
  |  |  |  |  284|  1.59k|#define GETLOCAL(i)     (frame->localsplus[i])
  |  |  ------------------
  |  |11842|  1.59k|                trash = tmp;
  |  |11843|  1.59k|            }
  |  |11844|       |            // _POP_TOP
  |  |11845|  1.59k|            {
  |  |11846|  1.59k|                value = trash;
  |  |11847|  1.59k|                stack_pointer += -1;
  |  |11848|  1.59k|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|  1.59k|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |11849|  1.59k|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |11850|  1.59k|                PyStackRef_XCLOSE(value);
  |  |11851|  1.59k|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |11852|  1.59k|            }
  |  |11853|  1.59k|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|  1.59k|    { \
  |  |  |  |  201|  1.59k|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|  1.59k|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|  1.59k|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|  1.59k|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|  1.59k|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|  1.59k|        opcode = word.op.code; \
  |  |  |  |  |  |  253|  1.59k|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|  1.59k|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 1.59k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|  1.59k|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|  1.59k|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|  1.59k|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|  1.59k|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|  1.59k|    }
  |  |  ------------------
  |  |  |  Branch (11853:13): [True: 1.59k, False: 0]
  |  |  ------------------
  |  |11854|  1.59k|        }
  |  |11855|       |
  |  |11856|    467|        TARGET(STORE_FAST_LOAD_FAST) {
  |  |  ------------------
  |  |  |  |  132|    467|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |11857|       |            #if _Py_TAIL_CALL_INTERP
  |  |11858|       |            int opcode = STORE_FAST_LOAD_FAST;
  |  |11859|       |            (void)(opcode);
  |  |11860|       |            #endif
  |  |11861|    467|            frame->instr_ptr = next_instr;
  |  |11862|    467|            next_instr += 1;
  |  |11863|    467|            INSTRUCTION_STATS(STORE_FAST_LOAD_FAST);
  |  |  ------------------
  |  |  |  |   71|    467|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |11864|    467|            _PyStackRef value1;
  |  |11865|    467|            _PyStackRef value2;
  |  |11866|    467|            value1 = stack_pointer[-1];
  |  |11867|    467|            uint32_t oparg1 = oparg >> 4;
  |  |11868|    467|            uint32_t oparg2 = oparg & 15;
  |  |11869|    467|            _PyStackRef tmp = GETLOCAL(oparg1);
  |  |  ------------------
  |  |  |  |  284|    467|#define GETLOCAL(i)     (frame->localsplus[i])
  |  |  ------------------
  |  |11870|    467|            GETLOCAL(oparg1) = value1;
  |  |  ------------------
  |  |  |  |  284|    467|#define GETLOCAL(i)     (frame->localsplus[i])
  |  |  ------------------
  |  |11871|    467|            value2 = PyStackRef_DUP(GETLOCAL(oparg2));
  |  |  ------------------
  |  |  |  |  284|    467|#define GETLOCAL(i)     (frame->localsplus[i])
  |  |  ------------------
  |  |11872|    467|            stack_pointer[-1] = value2;
  |  |11873|    467|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |11874|    467|            PyStackRef_XCLOSE(tmp);
  |  |11875|    467|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |11876|    467|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    467|    { \
  |  |  |  |  201|    467|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    467|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    467|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    467|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    467|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    467|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    467|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    467|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 467]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    467|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    467|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    467|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    467|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    467|    }
  |  |  ------------------
  |  |  |  Branch (11876:13): [True: 467, False: 0]
  |  |  ------------------
  |  |11877|    467|        }
  |  |11878|       |
  |  |11879|     78|        TARGET(STORE_FAST_STORE_FAST) {
  |  |  ------------------
  |  |  |  |  132|     78|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |11880|       |            #if _Py_TAIL_CALL_INTERP
  |  |11881|       |            int opcode = STORE_FAST_STORE_FAST;
  |  |11882|       |            (void)(opcode);
  |  |11883|       |            #endif
  |  |11884|     78|            frame->instr_ptr = next_instr;
  |  |11885|     78|            next_instr += 1;
  |  |11886|     78|            INSTRUCTION_STATS(STORE_FAST_STORE_FAST);
  |  |  ------------------
  |  |  |  |   71|     78|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |11887|     78|            _PyStackRef value2;
  |  |11888|     78|            _PyStackRef value1;
  |  |11889|     78|            value1 = stack_pointer[-1];
  |  |11890|     78|            value2 = stack_pointer[-2];
  |  |11891|     78|            uint32_t oparg1 = oparg >> 4;
  |  |11892|     78|            uint32_t oparg2 = oparg & 15;
  |  |11893|     78|            _PyStackRef tmp = GETLOCAL(oparg1);
  |  |  ------------------
  |  |  |  |  284|     78|#define GETLOCAL(i)     (frame->localsplus[i])
  |  |  ------------------
  |  |11894|     78|            GETLOCAL(oparg1) = value1;
  |  |  ------------------
  |  |  |  |  284|     78|#define GETLOCAL(i)     (frame->localsplus[i])
  |  |  ------------------
  |  |11895|     78|            stack_pointer += -1;
  |  |11896|     78|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     78|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |11897|     78|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |11898|     78|            PyStackRef_XCLOSE(tmp);
  |  |11899|     78|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |11900|     78|            tmp = GETLOCAL(oparg2);
  |  |  ------------------
  |  |  |  |  284|     78|#define GETLOCAL(i)     (frame->localsplus[i])
  |  |  ------------------
  |  |11901|     78|            GETLOCAL(oparg2) = value2;
  |  |  ------------------
  |  |  |  |  284|     78|#define GETLOCAL(i)     (frame->localsplus[i])
  |  |  ------------------
  |  |11902|     78|            stack_pointer += -1;
  |  |11903|     78|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     78|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |11904|     78|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |11905|     78|            PyStackRef_XCLOSE(tmp);
  |  |11906|     78|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |11907|     78|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     78|    { \
  |  |  |  |  201|     78|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     78|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     78|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     78|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     78|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     78|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     78|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     78|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 78]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     78|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     78|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     78|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     78|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     78|    }
  |  |  ------------------
  |  |  |  Branch (11907:13): [True: 78, False: 0]
  |  |  ------------------
  |  |11908|     78|        }
  |  |11909|       |
  |  |11910|     24|        TARGET(STORE_GLOBAL) {
  |  |  ------------------
  |  |  |  |  132|     24|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |11911|       |            #if _Py_TAIL_CALL_INTERP
  |  |11912|       |            int opcode = STORE_GLOBAL;
  |  |11913|       |            (void)(opcode);
  |  |11914|       |            #endif
  |  |11915|     24|            frame->instr_ptr = next_instr;
  |  |11916|     24|            next_instr += 1;
  |  |11917|     24|            INSTRUCTION_STATS(STORE_GLOBAL);
  |  |  ------------------
  |  |  |  |   71|     24|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |11918|     24|            _PyStackRef v;
  |  |11919|     24|            v = stack_pointer[-1];
  |  |11920|     24|            PyObject *name = GETITEM(FRAME_CO_NAMES, oparg);
  |  |  ------------------
  |  |  |  |  235|     24|#define GETITEM(v, i) PyTuple_GET_ITEM((v), (i))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|     24|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   19|     24|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     24|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (11920:30): [True: 24, False: 0]
  |  |  ------------------
  |  |11921|      0|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |11922|     24|            int err = PyDict_SetItem(GLOBALS(), name, PyStackRef_AsPyObjectBorrow(v));
  |  |  ------------------
  |  |  |  |  325|     24|#define GLOBALS() frame->f_globals
  |  |  ------------------
  |  |11923|     24|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |11924|     24|            stack_pointer += -1;
  |  |11925|     24|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     24|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |11926|     24|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |11927|     24|            PyStackRef_CLOSE(v);
  |  |11928|     24|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |11929|     24|            if (err) {
  |  |  ------------------
  |  |  |  Branch (11929:17): [True: 0, False: 24]
  |  |  ------------------
  |  |11930|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |11931|      0|            }
  |  |11932|     24|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     24|    { \
  |  |  |  |  201|     24|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     24|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     24|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     24|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     24|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     24|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     24|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     24|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 24]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     24|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     24|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     24|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     24|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     24|    }
  |  |  ------------------
  |  |  |  Branch (11932:13): [True: 24, False: 0]
  |  |  ------------------
  |  |11933|     24|        }
  |  |11934|       |
  |  |11935|  1.57k|        TARGET(STORE_NAME) {
  |  |  ------------------
  |  |  |  |  132|  1.57k|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |11936|       |            #if _Py_TAIL_CALL_INTERP
  |  |11937|       |            int opcode = STORE_NAME;
  |  |11938|       |            (void)(opcode);
  |  |11939|       |            #endif
  |  |11940|  1.57k|            frame->instr_ptr = next_instr;
  |  |11941|  1.57k|            next_instr += 1;
  |  |11942|  1.57k|            INSTRUCTION_STATS(STORE_NAME);
  |  |  ------------------
  |  |  |  |   71|  1.57k|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |11943|  1.57k|            _PyStackRef v;
  |  |11944|  1.57k|            v = stack_pointer[-1];
  |  |11945|  1.57k|            PyObject *name = GETITEM(FRAME_CO_NAMES, oparg);
  |  |  ------------------
  |  |  |  |  235|  1.57k|#define GETITEM(v, i) PyTuple_GET_ITEM((v), (i))
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|  1.57k|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   19|  1.57k|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|  1.57k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (11945:30): [True: 1.57k, False: 0]
  |  |  ------------------
  |  |11946|  1.57k|            PyObject *ns = LOCALS();
  |  |  ------------------
  |  |  |  |  327|  1.57k|#define LOCALS() frame->f_locals
  |  |  ------------------
  |  |11947|  1.57k|            int err;
  |  |11948|  1.57k|            if (ns == NULL) {
  |  |  ------------------
  |  |  |  Branch (11948:17): [True: 0, False: 1.57k]
  |  |  ------------------
  |  |11949|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |11950|      0|                _PyErr_Format(tstate, PyExc_SystemError,
  |  |11951|      0|                              "no locals found when storing %R", name);
  |  |11952|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |11953|      0|                stack_pointer += -1;
  |  |11954|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |11955|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |11956|      0|                PyStackRef_CLOSE(v);
  |  |11957|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |11958|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |11959|      0|            }
  |  |11960|  1.57k|            if (PyDict_CheckExact(ns)) {
  |  |  ------------------
  |  |  |  |   19|  1.57k|#define PyDict_CheckExact(op) Py_IS_TYPE((op), &PyDict_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|  1.57k|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|  1.57k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|  1.57k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (65:5): [True: 1.57k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |11961|  1.57k|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |11962|  1.57k|                err = PyDict_SetItem(ns, name, PyStackRef_AsPyObjectBorrow(v));
  |  |11963|  1.57k|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |11964|  1.57k|            }
  |  |11965|      0|            else {
  |  |11966|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |11967|      0|                err = PyObject_SetItem(ns, name, PyStackRef_AsPyObjectBorrow(v));
  |  |11968|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |11969|      0|            }
  |  |11970|  1.57k|            stack_pointer += -1;
  |  |11971|  1.57k|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|  1.57k|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |11972|  1.57k|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |11973|  1.57k|            PyStackRef_CLOSE(v);
  |  |11974|  1.57k|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |11975|  1.57k|            if (err) {
  |  |  ------------------
  |  |  |  Branch (11975:17): [True: 0, False: 1.57k]
  |  |  ------------------
  |  |11976|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |11977|      0|            }
  |  |11978|  1.57k|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|  1.57k|    { \
  |  |  |  |  201|  1.57k|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|  1.57k|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|  1.57k|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|  1.57k|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|  1.57k|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|  1.57k|        opcode = word.op.code; \
  |  |  |  |  |  |  253|  1.57k|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|  1.57k|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 1.57k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|  1.57k|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|  1.57k|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|  1.57k|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|  1.57k|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|  1.57k|    }
  |  |  ------------------
  |  |  |  Branch (11978:13): [True: 1.57k, False: 0]
  |  |  ------------------
  |  |11979|  1.57k|        }
  |  |11980|       |
  |  |11981|      0|        TARGET(STORE_SLICE) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |11982|       |            #if _Py_TAIL_CALL_INTERP
  |  |11983|       |            int opcode = STORE_SLICE;
  |  |11984|       |            (void)(opcode);
  |  |11985|       |            #endif
  |  |11986|      0|            frame->instr_ptr = next_instr;
  |  |11987|      0|            next_instr += 1;
  |  |11988|      0|            INSTRUCTION_STATS(STORE_SLICE);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |11989|      0|            _PyStackRef v;
  |  |11990|      0|            _PyStackRef container;
  |  |11991|      0|            _PyStackRef start;
  |  |11992|      0|            _PyStackRef stop;
  |  |11993|       |            // _SPECIALIZE_STORE_SLICE
  |  |11994|      0|            {
  |  |11995|      0|                #if ENABLE_SPECIALIZATION
  |  |11996|      0|                OPCODE_DEFERRED_INC(STORE_SLICE);
  |  |  ------------------
  |  |  |  |   90|      0|#define OPCODE_DEFERRED_INC(opname) ((void)0)
  |  |  ------------------
  |  |11997|      0|                #endif  /* ENABLE_SPECIALIZATION */
  |  |11998|      0|            }
  |  |11999|       |            // _STORE_SLICE
  |  |12000|      0|            {
  |  |12001|      0|                stop = stack_pointer[-1];
  |  |12002|      0|                start = stack_pointer[-2];
  |  |12003|      0|                container = stack_pointer[-3];
  |  |12004|      0|                v = stack_pointer[-4];
  |  |12005|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |12006|      0|                PyObject *slice = _PyBuildSlice_ConsumeRefs(PyStackRef_AsPyObjectSteal(start),
  |  |12007|      0|                    PyStackRef_AsPyObjectSteal(stop));
  |  |12008|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |12009|      0|                int err;
  |  |12010|      0|                if (slice == NULL) {
  |  |  ------------------
  |  |  |  Branch (12010:21): [True: 0, False: 0]
  |  |  ------------------
  |  |12011|      0|                    err = 1;
  |  |12012|      0|                }
  |  |12013|      0|                else {
  |  |12014|      0|                    stack_pointer += -2;
  |  |12015|      0|                    ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |12016|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |12017|      0|                    err = PyObject_SetItem(PyStackRef_AsPyObjectBorrow(container), slice, PyStackRef_AsPyObjectBorrow(v));
  |  |12018|      0|                    Py_DECREF(slice);
  |  |  ------------------
  |  |  |  |   80|      0|    do { \
  |  |  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   84|      0|            break; \
  |  |  |  |   85|      0|        } \
  |  |  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |   91|      0|        } \
  |  |  |  |   92|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |12019|      0|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |12020|      0|                    stack_pointer += 2;
  |  |12021|      0|                }
  |  |12022|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |12023|      0|                _PyStackRef tmp = container;
  |  |12024|      0|                container = PyStackRef_NULL;
  |  |12025|      0|                stack_pointer[-3] = container;
  |  |12026|      0|                PyStackRef_CLOSE(tmp);
  |  |12027|      0|                tmp = v;
  |  |12028|      0|                v = PyStackRef_NULL;
  |  |12029|      0|                stack_pointer[-4] = v;
  |  |12030|      0|                PyStackRef_CLOSE(tmp);
  |  |12031|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |12032|      0|                stack_pointer += -4;
  |  |12033|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |12034|      0|                if (err) {
  |  |  ------------------
  |  |  |  Branch (12034:21): [True: 0, False: 0]
  |  |  ------------------
  |  |12035|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |12036|      0|                }
  |  |12037|      0|            }
  |  |12038|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (12038:13): [True: 0, False: 0]
  |  |  ------------------
  |  |12039|      0|        }
  |  |12040|       |
  |  |12041|     26|        TARGET(STORE_SUBSCR) {
  |  |  ------------------
  |  |  |  |  132|     26|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |12042|       |            #if _Py_TAIL_CALL_INTERP
  |  |12043|       |            int opcode = STORE_SUBSCR;
  |  |12044|       |            (void)(opcode);
  |  |12045|       |            #endif
  |  |12046|     26|            frame->instr_ptr = next_instr;
  |  |12047|     26|            next_instr += 2;
  |  |12048|     26|            INSTRUCTION_STATS(STORE_SUBSCR);
  |  |  ------------------
  |  |  |  |   71|     26|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |12049|     26|            PREDICTED_STORE_SUBSCR:;
  |  |12050|     26|            _Py_CODEUNIT* const this_instr = next_instr - 2;
  |  |12051|     26|            (void)this_instr;
  |  |12052|     26|            _PyStackRef container;
  |  |12053|     26|            _PyStackRef sub;
  |  |12054|     26|            _PyStackRef v;
  |  |12055|       |            // _SPECIALIZE_STORE_SUBSCR
  |  |12056|     26|            {
  |  |12057|     26|                sub = stack_pointer[-1];
  |  |12058|     26|                container = stack_pointer[-2];
  |  |12059|     26|                uint16_t counter = read_u16(&this_instr[1].cache);
  |  |12060|     26|                (void)counter;
  |  |12061|     26|                #if ENABLE_SPECIALIZATION
  |  |12062|     26|                if (ADAPTIVE_COUNTER_TRIGGERS(counter)) {
  |  |  ------------------
  |  |  |  |  354|     26|    backoff_counter_triggers(forge_backoff_counter((COUNTER)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (354:5): [True: 5, False: 21]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |12063|      5|                    next_instr = this_instr;
  |  |12064|      5|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |12065|      5|                    _Py_Specialize_StoreSubscr(container, sub, next_instr);
  |  |12066|      5|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |12067|      5|                    DISPATCH_SAME_OPARG();
  |  |  ------------------
  |  |  |  |  216|      5|    { \
  |  |  |  |  217|      5|        opcode = next_instr->op.code; \
  |  |  |  |  218|      5|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      5|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  219|      5|        DISPATCH_GOTO_NON_TRACING(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  134|      5|#  define DISPATCH_GOTO_NON_TRACING() goto *DISPATCH_TABLE[opcode];
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  130|      5|#  define DISPATCH_TABLE opcode_targets_table
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  220|      5|    }
  |  |  ------------------
  |  |12068|      5|                }
  |  |12069|     26|                OPCODE_DEFERRED_INC(STORE_SUBSCR);
  |  |  ------------------
  |  |  |  |   90|     26|#define OPCODE_DEFERRED_INC(opname) ((void)0)
  |  |  ------------------
  |  |12070|     26|                ADVANCE_ADAPTIVE_COUNTER(this_instr[1].counter);
  |  |  ------------------
  |  |  |  |  357|     26|    do { \
  |  |  |  |  358|     26|        (COUNTER) = advance_backoff_counter((COUNTER)); \
  |  |  |  |  359|     26|    } while (0);
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (359:14): [Folded, False: 26]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |12071|     26|                #endif  /* ENABLE_SPECIALIZATION */
  |  |12072|     26|            }
  |  |12073|       |            // _STORE_SUBSCR
  |  |12074|     26|            {
  |  |12075|     26|                v = stack_pointer[-3];
  |  |12076|     26|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |12077|     26|                int err = PyObject_SetItem(PyStackRef_AsPyObjectBorrow(container), PyStackRef_AsPyObjectBorrow(sub), PyStackRef_AsPyObjectBorrow(v));
  |  |12078|     26|                _PyStackRef tmp = sub;
  |  |12079|     26|                sub = PyStackRef_NULL;
  |  |12080|     26|                stack_pointer[-1] = sub;
  |  |12081|     26|                PyStackRef_CLOSE(tmp);
  |  |12082|     26|                tmp = container;
  |  |12083|     26|                container = PyStackRef_NULL;
  |  |12084|     26|                stack_pointer[-2] = container;
  |  |12085|     26|                PyStackRef_CLOSE(tmp);
  |  |12086|     26|                tmp = v;
  |  |12087|     26|                v = PyStackRef_NULL;
  |  |12088|     26|                stack_pointer[-3] = v;
  |  |12089|     26|                PyStackRef_CLOSE(tmp);
  |  |12090|     26|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |12091|     26|                stack_pointer += -3;
  |  |12092|     26|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     26|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |12093|     26|                if (err) {
  |  |  ------------------
  |  |  |  Branch (12093:21): [True: 0, False: 26]
  |  |  ------------------
  |  |12094|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |12095|      0|                }
  |  |12096|     26|            }
  |  |12097|     26|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     26|    { \
  |  |  |  |  201|     26|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     26|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     21|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     21|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     21|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     21|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     21|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     21|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 21]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     21|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     21|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     21|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     21|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     21|    }
  |  |  ------------------
  |  |  |  Branch (12097:13): [True: 21, False: 5]
  |  |  ------------------
  |  |12098|     21|        }
  |  |12099|       |
  |  |12100|    103|        TARGET(STORE_SUBSCR_DICT) {
  |  |  ------------------
  |  |  |  |  132|    103|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |12101|       |            #if _Py_TAIL_CALL_INTERP
  |  |12102|       |            int opcode = STORE_SUBSCR_DICT;
  |  |12103|       |            (void)(opcode);
  |  |12104|       |            #endif
  |  |12105|    103|            _Py_CODEUNIT* const this_instr = next_instr;
  |  |12106|    103|            (void)this_instr;
  |  |12107|    103|            frame->instr_ptr = next_instr;
  |  |12108|    103|            next_instr += 2;
  |  |12109|    103|            INSTRUCTION_STATS(STORE_SUBSCR_DICT);
  |  |  ------------------
  |  |  |  |   71|    103|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |12110|    103|            static_assert(INLINE_CACHE_ENTRIES_STORE_SUBSCR == 1, "incorrect cache size");
  |  |12111|    103|            _PyStackRef nos;
  |  |12112|    103|            _PyStackRef value;
  |  |12113|    103|            _PyStackRef dict_st;
  |  |12114|    103|            _PyStackRef sub;
  |  |12115|    103|            _PyStackRef st;
  |  |12116|       |            // _GUARD_NOS_DICT_STORE_SUBSCRIPT
  |  |12117|    103|            {
  |  |12118|    103|                nos = stack_pointer[-2];
  |  |12119|    103|                PyObject *o = PyStackRef_AsPyObjectBorrow(nos);
  |  |12120|    103|                if (!Py_TYPE(o)->tp_as_mapping) {
  |  |  ------------------
  |  |  |  |  213|    103|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    103|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    103|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (12120:21): [True: 0, False: 103]
  |  |  ------------------
  |  |12121|      0|                    UPDATE_MISS_STATS(STORE_SUBSCR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |12122|      0|                    assert(_PyOpcode_Deopt[opcode] == (STORE_SUBSCR));
  |  |  ------------------
  |  |  |  Branch (12122:21): [True: 0, False: 0]
  |  |  ------------------
  |  |12123|      0|                    JUMP_TO_PREDICTED(STORE_SUBSCR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |12124|      0|                }
  |  |12125|    103|                if (Py_TYPE(o)->tp_as_mapping->mp_ass_subscript != _PyDict_StoreSubscript) {
  |  |  ------------------
  |  |  |  |  213|    103|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    103|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    103|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (12125:21): [True: 0, False: 103]
  |  |  ------------------
  |  |12126|      0|                    UPDATE_MISS_STATS(STORE_SUBSCR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |12127|      0|                    assert(_PyOpcode_Deopt[opcode] == (STORE_SUBSCR));
  |  |  ------------------
  |  |  |  Branch (12127:21): [True: 0, False: 0]
  |  |  ------------------
  |  |12128|      0|                    JUMP_TO_PREDICTED(STORE_SUBSCR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |12129|      0|                }
  |  |12130|    103|            }
  |  |12131|       |            /* Skip 1 cache entry */
  |  |12132|       |            // _STORE_SUBSCR_DICT
  |  |12133|    103|            {
  |  |12134|    103|                sub = stack_pointer[-1];
  |  |12135|    103|                dict_st = nos;
  |  |12136|    103|                value = stack_pointer[-3];
  |  |12137|    103|                PyObject *dict = PyStackRef_AsPyObjectBorrow(dict_st);
  |  |12138|    103|                assert(Py_TYPE(dict)->tp_as_mapping->mp_ass_subscript == _PyDict_StoreSubscript);
  |  |  ------------------
  |  |  |  Branch (12138:17): [True: 103, False: 0]
  |  |  ------------------
  |  |12139|    103|                STAT_INC(STORE_SUBSCR, hit);
  |  |  ------------------
  |  |  |  |   73|    103|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  |12140|    103|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |12141|    103|                int err = _PyDict_SetItem_Take2((PyDictObject *)dict,
  |  |12142|    103|                    PyStackRef_AsPyObjectSteal(sub),
  |  |12143|    103|                    PyStackRef_AsPyObjectSteal(value));
  |  |12144|    103|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |12145|    103|                if (err) {
  |  |  ------------------
  |  |  |  Branch (12145:21): [True: 0, False: 103]
  |  |  ------------------
  |  |12146|      0|                    stack_pointer += -3;
  |  |12147|      0|                    ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |12148|      0|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |12149|      0|                    PyStackRef_CLOSE(dict_st);
  |  |12150|      0|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |12151|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |12152|      0|                }
  |  |12153|    103|                st = dict_st;
  |  |12154|    103|            }
  |  |12155|       |            // _POP_TOP
  |  |12156|      0|            {
  |  |12157|    103|                value = st;
  |  |12158|    103|                stack_pointer += -3;
  |  |12159|    103|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    103|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |12160|    103|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |12161|    103|                PyStackRef_XCLOSE(value);
  |  |12162|    103|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |12163|    103|            }
  |  |12164|    103|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    103|    { \
  |  |  |  |  201|    103|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    103|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    103|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    103|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    103|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    103|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    103|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    103|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 103]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    103|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    103|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    103|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    103|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    103|    }
  |  |  ------------------
  |  |  |  Branch (12164:13): [True: 103, False: 0]
  |  |  ------------------
  |  |12165|    103|        }
  |  |12166|       |
  |  |12167|      0|        TARGET(STORE_SUBSCR_LIST_INT) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |12168|       |            #if _Py_TAIL_CALL_INTERP
  |  |12169|       |            int opcode = STORE_SUBSCR_LIST_INT;
  |  |12170|       |            (void)(opcode);
  |  |12171|       |            #endif
  |  |12172|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  |12173|      0|            (void)this_instr;
  |  |12174|      0|            frame->instr_ptr = next_instr;
  |  |12175|      0|            next_instr += 2;
  |  |12176|      0|            INSTRUCTION_STATS(STORE_SUBSCR_LIST_INT);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |12177|      0|            static_assert(INLINE_CACHE_ENTRIES_STORE_SUBSCR == 1, "incorrect cache size");
  |  |12178|      0|            _PyStackRef value;
  |  |12179|      0|            _PyStackRef nos;
  |  |12180|      0|            _PyStackRef list_st;
  |  |12181|      0|            _PyStackRef sub_st;
  |  |12182|      0|            _PyStackRef ls;
  |  |12183|      0|            _PyStackRef ss;
  |  |12184|       |            // _GUARD_TOS_INT
  |  |12185|      0|            {
  |  |12186|      0|                value = stack_pointer[-1];
  |  |12187|      0|                PyObject *value_o = PyStackRef_AsPyObjectBorrow(value);
  |  |12188|      0|                if (!_PyLong_CheckExactAndCompact(value_o)) {
  |  |  ------------------
  |  |  |  Branch (12188:21): [True: 0, False: 0]
  |  |  ------------------
  |  |12189|      0|                    UPDATE_MISS_STATS(STORE_SUBSCR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |12190|      0|                    assert(_PyOpcode_Deopt[opcode] == (STORE_SUBSCR));
  |  |  ------------------
  |  |  |  Branch (12190:21): [True: 0, False: 0]
  |  |  ------------------
  |  |12191|      0|                    JUMP_TO_PREDICTED(STORE_SUBSCR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |12192|      0|                }
  |  |12193|      0|            }
  |  |12194|       |            // _GUARD_NOS_LIST
  |  |12195|      0|            {
  |  |12196|      0|                nos = stack_pointer[-2];
  |  |12197|      0|                PyObject *o = PyStackRef_AsPyObjectBorrow(nos);
  |  |12198|      0|                if (!PyList_CheckExact(o)) {
  |  |  ------------------
  |  |  |  |   26|      0|#define PyList_CheckExact(op) Py_IS_TYPE((op), &PyList_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      0|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (12198:21): [True: 0, False: 0]
  |  |  ------------------
  |  |12199|      0|                    UPDATE_MISS_STATS(STORE_SUBSCR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |12200|      0|                    assert(_PyOpcode_Deopt[opcode] == (STORE_SUBSCR));
  |  |  ------------------
  |  |  |  Branch (12200:21): [True: 0, False: 0]
  |  |  ------------------
  |  |12201|      0|                    JUMP_TO_PREDICTED(STORE_SUBSCR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |12202|      0|                }
  |  |12203|      0|            }
  |  |12204|       |            /* Skip 1 cache entry */
  |  |12205|       |            // _STORE_SUBSCR_LIST_INT
  |  |12206|      0|            {
  |  |12207|      0|                sub_st = value;
  |  |12208|      0|                list_st = nos;
  |  |12209|      0|                value = stack_pointer[-3];
  |  |12210|      0|                PyObject *sub = PyStackRef_AsPyObjectBorrow(sub_st);
  |  |12211|      0|                PyObject *list = PyStackRef_AsPyObjectBorrow(list_st);
  |  |12212|      0|                assert(PyLong_CheckExact(sub));
  |  |  ------------------
  |  |  |  Branch (12212:17): [True: 0, False: 0]
  |  |  ------------------
  |  |12213|      0|                assert(PyList_CheckExact(list));
  |  |  ------------------
  |  |  |  Branch (12213:17): [True: 0, False: 0]
  |  |  ------------------
  |  |12214|      0|                Py_ssize_t index = _PyLong_CompactValue((PyLongObject *)sub);
  |  |12215|      0|                if (!LOCK_OBJECT(list)) {
  |  |  ------------------
  |  |  |  |  321|      0|#  define LOCK_OBJECT(op) (1)
  |  |  ------------------
  |  |  |  Branch (12215:21): [Folded, False: 0]
  |  |  ------------------
  |  |12216|      0|                    UPDATE_MISS_STATS(STORE_SUBSCR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |12217|      0|                    assert(_PyOpcode_Deopt[opcode] == (STORE_SUBSCR));
  |  |  ------------------
  |  |  |  Branch (12217:21): [True: 0, False: 0]
  |  |  ------------------
  |  |12218|      0|                    JUMP_TO_PREDICTED(STORE_SUBSCR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |12219|      0|                }
  |  |12220|      0|                Py_ssize_t len = PyList_GET_SIZE(list);
  |  |  ------------------
  |  |  |  |   38|      0|#define PyList_GET_SIZE(op) PyList_GET_SIZE(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |12221|      0|                if (index < 0) {
  |  |  ------------------
  |  |  |  Branch (12221:21): [True: 0, False: 0]
  |  |  ------------------
  |  |12222|      0|                    index += len;
  |  |12223|      0|                }
  |  |12224|      0|                if (index < 0 || index >= len) {
  |  |  ------------------
  |  |  |  Branch (12224:21): [True: 0, False: 0]
  |  |  |  Branch (12224:34): [True: 0, False: 0]
  |  |  ------------------
  |  |12225|      0|                    UNLOCK_OBJECT(list);
  |  |  ------------------
  |  |  |  |  322|      0|#  define UNLOCK_OBJECT(op) ((void)0)
  |  |  ------------------
  |  |12226|      0|                    if (true) {
  |  |  ------------------
  |  |  |  Branch (12226:25): [True: 0, Folded]
  |  |  ------------------
  |  |12227|      0|                        UPDATE_MISS_STATS(STORE_SUBSCR);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |12228|      0|                        assert(_PyOpcode_Deopt[opcode] == (STORE_SUBSCR));
  |  |  ------------------
  |  |  |  Branch (12228:25): [True: 0, False: 0]
  |  |  ------------------
  |  |12229|      0|                        JUMP_TO_PREDICTED(STORE_SUBSCR);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |12230|      0|                    }
  |  |12231|      0|                }
  |  |12232|      0|                STAT_INC(STORE_SUBSCR, hit);
  |  |  ------------------
  |  |  |  |   73|      0|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  |12233|      0|                PyObject *old_value = PyList_GET_ITEM(list, index);
  |  |  ------------------
  |  |  |  |   40|      0|#define PyList_GET_ITEM(op, index) (_PyList_CAST(op)->ob_item[(index)])
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|    (assert(PyList_Check(op)), _Py_CAST(PyListObject*, (op)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (12233:39): [True: 0, False: 0]
  |  |  ------------------
  |  |12234|      0|                FT_ATOMIC_STORE_PTR_RELEASE(_PyList_ITEMS(list)[index],
  |  |  ------------------
  |  |  |  |  164|      0|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (164:55): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |12235|      0|                                        PyStackRef_AsPyObjectSteal(value));
  |  |12236|      0|                assert(old_value != NULL);
  |  |  ------------------
  |  |  |  Branch (12236:17): [True: 0, False: 0]
  |  |  ------------------
  |  |12237|      0|                UNLOCK_OBJECT(list);
  |  |  ------------------
  |  |  |  |  322|      0|#  define UNLOCK_OBJECT(op) ((void)0)
  |  |  ------------------
  |  |12238|      0|                ls = list_st;
  |  |12239|      0|                ss = sub_st;
  |  |12240|      0|                stack_pointer[-3] = ls;
  |  |12241|      0|                stack_pointer[-2] = ss;
  |  |12242|      0|                stack_pointer += -1;
  |  |12243|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |12244|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |12245|      0|                Py_DECREF(old_value);
  |  |  ------------------
  |  |  |  |   80|      0|    do { \
  |  |  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   84|      0|            break; \
  |  |  |  |   85|      0|        } \
  |  |  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |   91|      0|        } \
  |  |  |  |   92|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |12246|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |12247|      0|            }
  |  |12248|       |            // _POP_TOP_INT
  |  |12249|      0|            {
  |  |12250|      0|                value = ss;
  |  |12251|      0|                assert(PyLong_CheckExact(PyStackRef_AsPyObjectBorrow(value)));
  |  |  ------------------
  |  |  |  Branch (12251:17): [True: 0, False: 0]
  |  |  ------------------
  |  |12252|      0|                PyStackRef_CLOSE_SPECIALIZED(value, _PyLong_ExactDealloc);
  |  |12253|      0|            }
  |  |12254|       |            // _POP_TOP
  |  |12255|      0|            {
  |  |12256|      0|                value = ls;
  |  |12257|      0|                stack_pointer += -2;
  |  |12258|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |12259|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |12260|      0|                PyStackRef_XCLOSE(value);
  |  |12261|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |12262|      0|            }
  |  |12263|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (12263:13): [True: 0, False: 0]
  |  |  ------------------
  |  |12264|      0|        }
  |  |12265|       |
  |  |12266|    513|        TARGET(SWAP) {
  |  |  ------------------
  |  |  |  |  132|    513|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |12267|       |            #if _Py_TAIL_CALL_INTERP
  |  |12268|       |            int opcode = SWAP;
  |  |12269|       |            (void)(opcode);
  |  |12270|       |            #endif
  |  |12271|    513|            frame->instr_ptr = next_instr;
  |  |12272|    513|            next_instr += 1;
  |  |12273|    513|            INSTRUCTION_STATS(SWAP);
  |  |  ------------------
  |  |  |  |   71|    513|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |12274|    513|            _PyStackRef bottom;
  |  |12275|    513|            _PyStackRef top;
  |  |12276|    513|            top = stack_pointer[-1];
  |  |12277|    513|            bottom = stack_pointer[-2 - (oparg-2)];
  |  |12278|    513|            _PyStackRef temp = bottom;
  |  |12279|    513|            bottom = top;
  |  |12280|    513|            top = temp;
  |  |12281|    513|            stack_pointer[-2 - (oparg-2)] = bottom;
  |  |12282|    513|            stack_pointer[-1] = top;
  |  |12283|    513|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    513|    { \
  |  |  |  |  201|    513|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    513|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    513|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    513|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    513|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    513|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    513|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    513|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 513]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    513|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    513|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    513|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    513|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    513|    }
  |  |  ------------------
  |  |  |  Branch (12283:13): [True: 513, False: 0]
  |  |  ------------------
  |  |12284|    513|        }
  |  |12285|       |
  |  |12286|    314|        TARGET(TO_BOOL) {
  |  |  ------------------
  |  |  |  |  132|    314|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |12287|       |            #if _Py_TAIL_CALL_INTERP
  |  |12288|       |            int opcode = TO_BOOL;
  |  |12289|       |            (void)(opcode);
  |  |12290|       |            #endif
  |  |12291|    314|            frame->instr_ptr = next_instr;
  |  |12292|    314|            next_instr += 4;
  |  |12293|    314|            INSTRUCTION_STATS(TO_BOOL);
  |  |  ------------------
  |  |  |  |   71|    314|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |12294|    344|            PREDICTED_TO_BOOL:;
  |  |12295|    344|            _Py_CODEUNIT* const this_instr = next_instr - 4;
  |  |12296|    344|            (void)this_instr;
  |  |12297|    344|            _PyStackRef value;
  |  |12298|    344|            _PyStackRef res;
  |  |12299|       |            // _SPECIALIZE_TO_BOOL
  |  |12300|    344|            {
  |  |12301|    344|                value = stack_pointer[-1];
  |  |12302|    344|                uint16_t counter = read_u16(&this_instr[1].cache);
  |  |12303|    344|                (void)counter;
  |  |12304|    344|                #if ENABLE_SPECIALIZATION
  |  |12305|    344|                if (ADAPTIVE_COUNTER_TRIGGERS(counter)) {
  |  |  ------------------
  |  |  |  |  354|    344|    backoff_counter_triggers(forge_backoff_counter((COUNTER)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (354:5): [True: 66, False: 278]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |12306|     66|                    next_instr = this_instr;
  |  |12307|     66|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |12308|     66|                    _Py_Specialize_ToBool(value, next_instr);
  |  |12309|     66|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |12310|     66|                    DISPATCH_SAME_OPARG();
  |  |  ------------------
  |  |  |  |  216|     66|    { \
  |  |  |  |  217|     66|        opcode = next_instr->op.code; \
  |  |  |  |  218|     66|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     66|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  219|     66|        DISPATCH_GOTO_NON_TRACING(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  134|     66|#  define DISPATCH_GOTO_NON_TRACING() goto *DISPATCH_TABLE[opcode];
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  130|     66|#  define DISPATCH_TABLE opcode_targets_table
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  220|     66|    }
  |  |  ------------------
  |  |12311|     66|                }
  |  |12312|    344|                OPCODE_DEFERRED_INC(TO_BOOL);
  |  |  ------------------
  |  |  |  |   90|    344|#define OPCODE_DEFERRED_INC(opname) ((void)0)
  |  |  ------------------
  |  |12313|    344|                ADVANCE_ADAPTIVE_COUNTER(this_instr[1].counter);
  |  |  ------------------
  |  |  |  |  357|    344|    do { \
  |  |  |  |  358|    344|        (COUNTER) = advance_backoff_counter((COUNTER)); \
  |  |  |  |  359|    344|    } while (0);
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (359:14): [Folded, False: 344]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |12314|    344|                #endif  /* ENABLE_SPECIALIZATION */
  |  |12315|    344|            }
  |  |12316|       |            /* Skip 2 cache entries */
  |  |12317|       |            // _TO_BOOL
  |  |12318|    344|            {
  |  |12319|    344|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |12320|    344|                int err = PyObject_IsTrue(PyStackRef_AsPyObjectBorrow(value));
  |  |12321|    344|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |12322|    344|                stack_pointer += -1;
  |  |12323|    344|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    344|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |12324|    344|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |12325|    344|                PyStackRef_CLOSE(value);
  |  |12326|    344|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |12327|    344|                if (err < 0) {
  |  |  ------------------
  |  |  |  Branch (12327:21): [True: 0, False: 344]
  |  |  ------------------
  |  |12328|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |12329|      0|                }
  |  |12330|    344|                res = err ? PyStackRef_True : PyStackRef_False;
  |  |  ------------------
  |  |  |  |  471|    116|#define PyStackRef_True ((_PyStackRef){.bits = ((uintptr_t)&_Py_TrueStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    116|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                               res = err ? PyStackRef_True : PyStackRef_False;
  |  |  ------------------
  |  |  |  |  472|    572|#define PyStackRef_False ((_PyStackRef){.bits = ((uintptr_t)&_Py_FalseStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    228|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (12330:23): [True: 116, False: 228]
  |  |  ------------------
  |  |12331|    344|            }
  |  |12332|      0|            stack_pointer[0] = res;
  |  |12333|    344|            stack_pointer += 1;
  |  |12334|    344|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|    344|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |12335|    344|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    344|    { \
  |  |  |  |  201|    344|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    344|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    278|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    278|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    278|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    278|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    278|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    278|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 278]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    278|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    278|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    278|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    278|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    278|    }
  |  |  ------------------
  |  |  |  Branch (12335:13): [True: 278, False: 66]
  |  |  ------------------
  |  |12336|    278|        }
  |  |12337|       |
  |  |12338|      0|        TARGET(TO_BOOL_ALWAYS_TRUE) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |12339|       |            #if _Py_TAIL_CALL_INTERP
  |  |12340|       |            int opcode = TO_BOOL_ALWAYS_TRUE;
  |  |12341|       |            (void)(opcode);
  |  |12342|       |            #endif
  |  |12343|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  |12344|      0|            (void)this_instr;
  |  |12345|      0|            frame->instr_ptr = next_instr;
  |  |12346|      0|            next_instr += 4;
  |  |12347|      0|            INSTRUCTION_STATS(TO_BOOL_ALWAYS_TRUE);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |12348|      0|            static_assert(INLINE_CACHE_ENTRIES_TO_BOOL == 3, "incorrect cache size");
  |  |12349|      0|            _PyStackRef owner;
  |  |12350|      0|            _PyStackRef value;
  |  |12351|      0|            _PyStackRef res;
  |  |12352|      0|            _PyStackRef v;
  |  |12353|       |            /* Skip 1 cache entry */
  |  |12354|       |            // _GUARD_TYPE_VERSION
  |  |12355|      0|            {
  |  |12356|      0|                owner = stack_pointer[-1];
  |  |12357|      0|                uint32_t type_version = read_u32(&this_instr[2].cache);
  |  |12358|      0|                PyTypeObject *tp = Py_TYPE(PyStackRef_AsPyObjectBorrow(owner));
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |12359|      0|                assert(type_version != 0);
  |  |  ------------------
  |  |  |  Branch (12359:17): [True: 0, False: 0]
  |  |  ------------------
  |  |12360|      0|                if (FT_ATOMIC_LOAD_UINT_RELAXED(tp->tp_version_tag) != type_version) {
  |  |  ------------------
  |  |  |  |  189|      0|#define FT_ATOMIC_LOAD_UINT_RELAXED(value) value
  |  |  ------------------
  |  |  |  Branch (12360:21): [True: 0, False: 0]
  |  |  ------------------
  |  |12361|      0|                    UPDATE_MISS_STATS(TO_BOOL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |12362|      0|                    assert(_PyOpcode_Deopt[opcode] == (TO_BOOL));
  |  |  ------------------
  |  |  |  Branch (12362:21): [True: 0, False: 0]
  |  |  ------------------
  |  |12363|      0|                    JUMP_TO_PREDICTED(TO_BOOL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |12364|      0|                }
  |  |12365|      0|            }
  |  |12366|       |            // _REPLACE_WITH_TRUE
  |  |12367|      0|            {
  |  |12368|      0|                value = owner;
  |  |12369|      0|                res = PyStackRef_True;
  |  |  ------------------
  |  |  |  |  471|      0|#define PyStackRef_True ((_PyStackRef){.bits = ((uintptr_t)&_Py_TrueStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |12370|      0|                v = value;
  |  |12371|      0|            }
  |  |12372|       |            // _POP_TOP
  |  |12373|      0|            {
  |  |12374|      0|                value = v;
  |  |12375|      0|                stack_pointer[-1] = res;
  |  |12376|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |12377|      0|                PyStackRef_XCLOSE(value);
  |  |12378|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |12379|      0|            }
  |  |12380|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (12380:13): [True: 0, False: 0]
  |  |  ------------------
  |  |12381|      0|        }
  |  |12382|       |
  |  |12383|    338|        TARGET(TO_BOOL_BOOL) {
  |  |  ------------------
  |  |  |  |  132|    338|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |12384|       |            #if _Py_TAIL_CALL_INTERP
  |  |12385|       |            int opcode = TO_BOOL_BOOL;
  |  |12386|       |            (void)(opcode);
  |  |12387|       |            #endif
  |  |12388|    338|            _Py_CODEUNIT* const this_instr = next_instr;
  |  |12389|    338|            (void)this_instr;
  |  |12390|    338|            frame->instr_ptr = next_instr;
  |  |12391|    338|            next_instr += 4;
  |  |12392|    338|            INSTRUCTION_STATS(TO_BOOL_BOOL);
  |  |  ------------------
  |  |  |  |   71|    338|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |12393|    338|            static_assert(INLINE_CACHE_ENTRIES_TO_BOOL == 3, "incorrect cache size");
  |  |12394|    338|            _PyStackRef value;
  |  |12395|       |            /* Skip 1 cache entry */
  |  |12396|       |            /* Skip 2 cache entries */
  |  |12397|    338|            value = stack_pointer[-1];
  |  |12398|    338|            if (!PyStackRef_BoolCheck(value)) {
  |  |  ------------------
  |  |  |  Branch (12398:17): [True: 0, False: 338]
  |  |  ------------------
  |  |12399|      0|                UPDATE_MISS_STATS(TO_BOOL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |12400|      0|                assert(_PyOpcode_Deopt[opcode] == (TO_BOOL));
  |  |  ------------------
  |  |  |  Branch (12400:17): [True: 0, False: 0]
  |  |  ------------------
  |  |12401|      0|                JUMP_TO_PREDICTED(TO_BOOL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |12402|      0|            }
  |  |12403|    338|            STAT_INC(TO_BOOL, hit);
  |  |  ------------------
  |  |  |  |   73|    338|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  |12404|    338|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    338|    { \
  |  |  |  |  201|    338|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    338|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    338|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    338|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    338|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    338|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    338|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    338|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 338]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    338|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    338|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    338|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    338|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    338|    }
  |  |  ------------------
  |  |  |  Branch (12404:13): [True: 338, False: 0]
  |  |  ------------------
  |  |12405|    338|        }
  |  |12406|       |
  |  |12407|     57|        TARGET(TO_BOOL_INT) {
  |  |  ------------------
  |  |  |  |  132|     57|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |12408|       |            #if _Py_TAIL_CALL_INTERP
  |  |12409|       |            int opcode = TO_BOOL_INT;
  |  |12410|       |            (void)(opcode);
  |  |12411|       |            #endif
  |  |12412|     57|            _Py_CODEUNIT* const this_instr = next_instr;
  |  |12413|     57|            (void)this_instr;
  |  |12414|     57|            frame->instr_ptr = next_instr;
  |  |12415|     57|            next_instr += 4;
  |  |12416|     57|            INSTRUCTION_STATS(TO_BOOL_INT);
  |  |  ------------------
  |  |  |  |   71|     57|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |12417|     57|            static_assert(INLINE_CACHE_ENTRIES_TO_BOOL == 3, "incorrect cache size");
  |  |12418|     57|            _PyStackRef value;
  |  |12419|     57|            _PyStackRef res;
  |  |12420|     57|            _PyStackRef v;
  |  |12421|       |            // _GUARD_TOS_INT
  |  |12422|     57|            {
  |  |12423|     57|                value = stack_pointer[-1];
  |  |12424|     57|                PyObject *value_o = PyStackRef_AsPyObjectBorrow(value);
  |  |12425|     57|                if (!_PyLong_CheckExactAndCompact(value_o)) {
  |  |  ------------------
  |  |  |  Branch (12425:21): [True: 0, False: 57]
  |  |  ------------------
  |  |12426|      0|                    UPDATE_MISS_STATS(TO_BOOL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |12427|      0|                    assert(_PyOpcode_Deopt[opcode] == (TO_BOOL));
  |  |  ------------------
  |  |  |  Branch (12427:21): [True: 0, False: 0]
  |  |  ------------------
  |  |12428|      0|                    JUMP_TO_PREDICTED(TO_BOOL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |12429|      0|                }
  |  |12430|     57|            }
  |  |12431|       |            /* Skip 1 cache entry */
  |  |12432|       |            /* Skip 2 cache entries */
  |  |12433|       |            // _TO_BOOL_INT
  |  |12434|     57|            {
  |  |12435|     57|                STAT_INC(TO_BOOL, hit);
  |  |  ------------------
  |  |  |  |   73|     57|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  |12436|     57|                PyObject *value_o = PyStackRef_AsPyObjectBorrow(value);
  |  |12437|     57|                res = (_PyLong_IsZero((PyLongObject *)value_o)) ? PyStackRef_False : PyStackRef_True;
  |  |  ------------------
  |  |  |  |  472|     41|#define PyStackRef_False ((_PyStackRef){.bits = ((uintptr_t)&_Py_FalseStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     41|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                               res = (_PyLong_IsZero((PyLongObject *)value_o)) ? PyStackRef_False : PyStackRef_True;
  |  |  ------------------
  |  |  |  |  471|     73|#define PyStackRef_True ((_PyStackRef){.bits = ((uintptr_t)&_Py_TrueStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     16|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (12437:23): [True: 41, False: 16]
  |  |  ------------------
  |  |12438|     57|                v = value;
  |  |12439|     57|            }
  |  |12440|       |            // _POP_TOP_INT
  |  |12441|     57|            {
  |  |12442|     57|                value = v;
  |  |12443|     57|                assert(PyLong_CheckExact(PyStackRef_AsPyObjectBorrow(value)));
  |  |  ------------------
  |  |  |  Branch (12443:17): [True: 57, False: 0]
  |  |  ------------------
  |  |12444|     57|                PyStackRef_CLOSE_SPECIALIZED(value, _PyLong_ExactDealloc);
  |  |12445|     57|            }
  |  |12446|      0|            stack_pointer[-1] = res;
  |  |12447|     57|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     57|    { \
  |  |  |  |  201|     57|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     57|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     57|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     57|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     57|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     57|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     57|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     57|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 57]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     57|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     57|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     57|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     57|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     57|    }
  |  |  ------------------
  |  |  |  Branch (12447:13): [True: 57, False: 0]
  |  |  ------------------
  |  |12448|     57|        }
  |  |12449|       |
  |  |12450|     56|        TARGET(TO_BOOL_LIST) {
  |  |  ------------------
  |  |  |  |  132|     56|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |12451|       |            #if _Py_TAIL_CALL_INTERP
  |  |12452|       |            int opcode = TO_BOOL_LIST;
  |  |12453|       |            (void)(opcode);
  |  |12454|       |            #endif
  |  |12455|     56|            _Py_CODEUNIT* const this_instr = next_instr;
  |  |12456|     56|            (void)this_instr;
  |  |12457|     56|            frame->instr_ptr = next_instr;
  |  |12458|     56|            next_instr += 4;
  |  |12459|     56|            INSTRUCTION_STATS(TO_BOOL_LIST);
  |  |  ------------------
  |  |  |  |   71|     56|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |12460|     56|            static_assert(INLINE_CACHE_ENTRIES_TO_BOOL == 3, "incorrect cache size");
  |  |12461|     56|            _PyStackRef tos;
  |  |12462|     56|            _PyStackRef value;
  |  |12463|     56|            _PyStackRef res;
  |  |12464|     56|            _PyStackRef v;
  |  |12465|       |            // _GUARD_TOS_LIST
  |  |12466|     56|            {
  |  |12467|     56|                tos = stack_pointer[-1];
  |  |12468|     56|                PyObject *o = PyStackRef_AsPyObjectBorrow(tos);
  |  |12469|     56|                if (!PyList_CheckExact(o)) {
  |  |  ------------------
  |  |  |  |   26|     56|#define PyList_CheckExact(op) Py_IS_TYPE((op), &PyList_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|     56|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|     56|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     56|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (12469:21): [True: 0, False: 56]
  |  |  ------------------
  |  |12470|      0|                    UPDATE_MISS_STATS(TO_BOOL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |12471|      0|                    assert(_PyOpcode_Deopt[opcode] == (TO_BOOL));
  |  |  ------------------
  |  |  |  Branch (12471:21): [True: 0, False: 0]
  |  |  ------------------
  |  |12472|      0|                    JUMP_TO_PREDICTED(TO_BOOL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |12473|      0|                }
  |  |12474|     56|            }
  |  |12475|       |            /* Skip 1 cache entry */
  |  |12476|       |            /* Skip 2 cache entries */
  |  |12477|       |            // _TO_BOOL_LIST
  |  |12478|     56|            {
  |  |12479|     56|                value = tos;
  |  |12480|     56|                PyObject *value_o = PyStackRef_AsPyObjectBorrow(value);
  |  |12481|     56|                assert(PyList_CheckExact(value_o));
  |  |  ------------------
  |  |  |  Branch (12481:17): [True: 56, False: 0]
  |  |  ------------------
  |  |12482|     56|                STAT_INC(TO_BOOL, hit);
  |  |  ------------------
  |  |  |  |   73|     56|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  |12483|     56|                res = PyList_GET_SIZE(value_o) ? PyStackRef_True : PyStackRef_False;
  |  |  ------------------
  |  |  |  |   38|     56|#define PyList_GET_SIZE(op) PyList_GET_SIZE(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     56|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     56|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:29): [True: 26, False: 30]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                               res = PyList_GET_SIZE(value_o) ? PyStackRef_True : PyStackRef_False;
  |  |  ------------------
  |  |  |  |  471|     26|#define PyStackRef_True ((_PyStackRef){.bits = ((uintptr_t)&_Py_TrueStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     26|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                               res = PyList_GET_SIZE(value_o) ? PyStackRef_True : PyStackRef_False;
  |  |  ------------------
  |  |  |  |  472|     86|#define PyStackRef_False ((_PyStackRef){.bits = ((uintptr_t)&_Py_FalseStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     30|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |12484|     56|                v = value;
  |  |12485|     56|            }
  |  |12486|       |            // _POP_TOP
  |  |12487|      0|            {
  |  |12488|     56|                value = v;
  |  |12489|     56|                stack_pointer[-1] = res;
  |  |12490|     56|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |12491|     56|                PyStackRef_XCLOSE(value);
  |  |12492|     56|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |12493|     56|            }
  |  |12494|     56|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     56|    { \
  |  |  |  |  201|     56|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     56|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     56|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     56|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     56|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     56|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     56|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     56|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 56]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     56|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     56|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     56|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     56|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     56|    }
  |  |  ------------------
  |  |  |  Branch (12494:13): [True: 56, False: 0]
  |  |  ------------------
  |  |12495|     56|        }
  |  |12496|       |
  |  |12497|     86|        TARGET(TO_BOOL_NONE) {
  |  |  ------------------
  |  |  |  |  132|     86|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |12498|       |            #if _Py_TAIL_CALL_INTERP
  |  |12499|       |            int opcode = TO_BOOL_NONE;
  |  |12500|       |            (void)(opcode);
  |  |12501|       |            #endif
  |  |12502|     86|            _Py_CODEUNIT* const this_instr = next_instr;
  |  |12503|     86|            (void)this_instr;
  |  |12504|     86|            frame->instr_ptr = next_instr;
  |  |12505|     86|            next_instr += 4;
  |  |12506|     86|            INSTRUCTION_STATS(TO_BOOL_NONE);
  |  |  ------------------
  |  |  |  |   71|     86|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |12507|     86|            static_assert(INLINE_CACHE_ENTRIES_TO_BOOL == 3, "incorrect cache size");
  |  |12508|     86|            _PyStackRef value;
  |  |12509|     86|            _PyStackRef res;
  |  |12510|       |            /* Skip 1 cache entry */
  |  |12511|       |            /* Skip 2 cache entries */
  |  |12512|     86|            value = stack_pointer[-1];
  |  |12513|     86|            if (!PyStackRef_IsNone(value)) {
  |  |  ------------------
  |  |  |  |  483|     86|#define PyStackRef_IsNone(REF) ((REF).bits == (((uintptr_t)&_Py_NoneStruct) | Py_TAG_REFCNT))
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     86|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (12513:17): [True: 30, False: 56]
  |  |  ------------------
  |  |12514|     30|                UPDATE_MISS_STATS(TO_BOOL);
  |  |  ------------------
  |  |  |  |  298|     30|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |12515|     30|                assert(_PyOpcode_Deopt[opcode] == (TO_BOOL));
  |  |  ------------------
  |  |  |  Branch (12515:17): [True: 30, False: 0]
  |  |  ------------------
  |  |12516|     30|                JUMP_TO_PREDICTED(TO_BOOL);
  |  |  ------------------
  |  |  |  |  136|     30|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |12517|      0|            }
  |  |12518|     56|            STAT_INC(TO_BOOL, hit);
  |  |  ------------------
  |  |  |  |   73|     56|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  |12519|     56|            res = PyStackRef_False;
  |  |  ------------------
  |  |  |  |  472|     56|#define PyStackRef_False ((_PyStackRef){.bits = ((uintptr_t)&_Py_FalseStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     56|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |12520|     56|            stack_pointer[-1] = res;
  |  |12521|     56|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     56|    { \
  |  |  |  |  201|     56|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     56|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     56|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     56|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     56|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     56|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     56|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     56|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 56]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     56|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     56|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     56|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     56|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     56|    }
  |  |  ------------------
  |  |  |  Branch (12521:13): [True: 56, False: 0]
  |  |  ------------------
  |  |12522|     56|        }
  |  |12523|       |
  |  |12524|    221|        TARGET(TO_BOOL_STR) {
  |  |  ------------------
  |  |  |  |  132|    221|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |12525|       |            #if _Py_TAIL_CALL_INTERP
  |  |12526|       |            int opcode = TO_BOOL_STR;
  |  |12527|       |            (void)(opcode);
  |  |12528|       |            #endif
  |  |12529|    221|            _Py_CODEUNIT* const this_instr = next_instr;
  |  |12530|    221|            (void)this_instr;
  |  |12531|    221|            frame->instr_ptr = next_instr;
  |  |12532|    221|            next_instr += 4;
  |  |12533|    221|            INSTRUCTION_STATS(TO_BOOL_STR);
  |  |  ------------------
  |  |  |  |   71|    221|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |12534|    221|            static_assert(INLINE_CACHE_ENTRIES_TO_BOOL == 3, "incorrect cache size");
  |  |12535|    221|            _PyStackRef value;
  |  |12536|    221|            _PyStackRef res;
  |  |12537|    221|            _PyStackRef v;
  |  |12538|       |            // _GUARD_TOS_UNICODE
  |  |12539|    221|            {
  |  |12540|    221|                value = stack_pointer[-1];
  |  |12541|    221|                PyObject *value_o = PyStackRef_AsPyObjectBorrow(value);
  |  |12542|    221|                if (!PyUnicode_CheckExact(value_o)) {
  |  |  ------------------
  |  |  |  |  104|    221|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|    221|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|    221|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|    221|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (12542:21): [True: 0, False: 221]
  |  |  ------------------
  |  |12543|      0|                    UPDATE_MISS_STATS(TO_BOOL);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |12544|      0|                    assert(_PyOpcode_Deopt[opcode] == (TO_BOOL));
  |  |  ------------------
  |  |  |  Branch (12544:21): [True: 0, False: 0]
  |  |  ------------------
  |  |12545|      0|                    JUMP_TO_PREDICTED(TO_BOOL);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |12546|      0|                }
  |  |12547|    221|            }
  |  |12548|       |            /* Skip 1 cache entry */
  |  |12549|       |            /* Skip 2 cache entries */
  |  |12550|       |            // _TO_BOOL_STR
  |  |12551|    221|            {
  |  |12552|    221|                STAT_INC(TO_BOOL, hit);
  |  |  ------------------
  |  |  |  |   73|    221|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  |12553|    221|                PyObject *value_o = PyStackRef_AsPyObjectBorrow(value);
  |  |12554|    221|                res = value_o == &_Py_STR(empty) ? PyStackRef_False : PyStackRef_True;
  |  |  ------------------
  |  |  |  |  919|    221|     (_Py_SINGLETON(strings.literals._py_ ## NAME._ascii.ob_base))
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|    221|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   16|    221|    _PyRuntime.static_objects.NAME
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                               res = value_o == &_Py_STR(empty) ? PyStackRef_False : PyStackRef_True;
  |  |  ------------------
  |  |  |  |  472|     44|#define PyStackRef_False ((_PyStackRef){.bits = ((uintptr_t)&_Py_FalseStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     44|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                               res = value_o == &_Py_STR(empty) ? PyStackRef_False : PyStackRef_True;
  |  |  ------------------
  |  |  |  |  471|    398|#define PyStackRef_True ((_PyStackRef){.bits = ((uintptr_t)&_Py_TrueStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    177|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (12554:23): [True: 44, False: 177]
  |  |  ------------------
  |  |12555|    221|                v = value;
  |  |12556|    221|            }
  |  |12557|       |            // _POP_TOP_UNICODE
  |  |12558|    221|            {
  |  |12559|    221|                value = v;
  |  |12560|    221|                assert(PyUnicode_CheckExact(PyStackRef_AsPyObjectBorrow(value)));
  |  |  ------------------
  |  |  |  Branch (12560:17): [True: 221, False: 0]
  |  |  ------------------
  |  |12561|    221|                PyStackRef_CLOSE_SPECIALIZED(value, _PyUnicode_ExactDealloc);
  |  |12562|    221|            }
  |  |12563|      0|            stack_pointer[-1] = res;
  |  |12564|    221|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    221|    { \
  |  |  |  |  201|    221|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    221|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    221|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    221|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    221|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    221|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    221|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    221|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 221]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    221|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    221|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    221|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    221|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    221|    }
  |  |  ------------------
  |  |  |  Branch (12564:13): [True: 221, False: 0]
  |  |  ------------------
  |  |12565|    221|        }
  |  |12566|       |
  |  |12567|      0|        TARGET(TRACE_RECORD) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |12568|       |            #if _Py_TAIL_CALL_INTERP
  |  |12569|       |            int opcode = TRACE_RECORD;
  |  |12570|       |            (void)(opcode);
  |  |12571|       |            #endif
  |  |12572|      0|            _Py_CODEUNIT* const prev_instr = frame->instr_ptr;
  |  |12573|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  |12574|      0|            (void)this_instr;
  |  |12575|      0|            frame->instr_ptr = next_instr;
  |  |12576|      0|            next_instr += 1;
  |  |12577|      0|            INSTRUCTION_STATS(TRACE_RECORD);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |12578|      0|            opcode = TRACE_RECORD;
  |  |  ------------------
  |  |  |  |  246|      0|#define TRACE_RECORD                           255
  |  |  ------------------
  |  |12579|       |            #if _Py_TIER2
  |  |12580|       |            assert(IS_JIT_TRACING());
  |  |12581|       |            next_instr = this_instr;
  |  |12582|       |            frame->instr_ptr = prev_instr;
  |  |12583|       |            opcode = next_instr->op.code;
  |  |12584|       |            bool stop_tracing = (
  |  |12585|       |                                 opcode == WITH_EXCEPT_START ||
  |  |12586|       |                                 opcode == RERAISE ||
  |  |12587|       |                                 opcode == CLEANUP_THROW ||
  |  |12588|       |                                 opcode == PUSH_EXC_INFO ||
  |  |12589|       |                                 opcode == INTERPRETER_EXIT ||
  |  |12590|       |                                 (opcode >= MIN_INSTRUMENTED_OPCODE && opcode != ENTER_EXECUTOR)
  |  |12591|       |            );
  |  |12592|       |            _PyThreadStateImpl *_tstate = (_PyThreadStateImpl *)tstate;
  |  |12593|       |            _PyJitTracerState *tracer = _tstate->jit_tracer_state;
  |  |12594|       |            assert(tracer != NULL);
  |  |12595|       |            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |12596|       |            int full = !_PyJit_translate_single_bytecode_to_trace(tstate, frame, next_instr, stop_tracing ? _DEOPT : 0);
  |  |12597|       |            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |12598|       |            if (full) {
  |  |12599|       |                LEAVE_TRACING();
  |  |12600|       |                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |12601|       |                int err = stop_tracing_and_jit(tstate, frame);
  |  |12602|       |                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |12603|       |                if (err < 0) {
  |  |12604|       |                    JUMP_TO_LABEL(error);
  |  |12605|       |                }
  |  |12606|       |                DISPATCH();
  |  |12607|       |            }
  |  |12608|       |            for (int i = 0; i < tracer->prev_state.recorded_count; i++) {
  |  |12609|       |                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |12610|       |                Py_CLEAR(tracer->prev_state.recorded_values[i]);
  |  |12611|       |                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |12612|       |            }
  |  |12613|       |            tracer->prev_state.recorded_count = 0;
  |  |12614|       |            tracer->prev_state.instr = next_instr;
  |  |12615|       |            PyObject *prev_code = PyStackRef_AsPyObjectBorrow(frame->f_executable);
  |  |12616|       |            if (tracer->prev_state.instr_code != (PyCodeObject *)prev_code) {
  |  |12617|       |                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |12618|       |                Py_SETREF(tracer->prev_state.instr_code, (PyCodeObject*)Py_NewRef((prev_code)));
  |  |12619|       |                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |12620|       |            }
  |  |12621|       |            tracer->prev_state.instr_frame = frame;
  |  |12622|       |            tracer->prev_state.instr_oparg = oparg;
  |  |12623|       |            tracer->prev_state.instr_stacklevel = PyStackRef_IsNone(frame->f_executable) ? 2 : STACK_LEVEL();
  |  |12624|       |            if (_PyOpcode_Caches[_PyOpcode_Deopt[opcode]]
  |  |12625|       |                // Branch opcodes use the cache for branch history, not
  |  |12626|       |                // specialization counters.  Don't reset it.
  |  |12627|       |                && !IS_CONDITIONAL_JUMP_OPCODE(opcode)) {
  |  |12628|       |                (&next_instr[1])->counter = trigger_backoff_counter();
  |  |12629|       |            }
  |  |12630|       |            const _PyOpcodeRecordEntry *record_entry = &_PyOpcode_RecordEntries[opcode];
  |  |12631|       |            for (int i = 0; i < record_entry->count; i++) {
  |  |12632|       |                _Py_RecordFuncPtr doesnt_escape = _PyOpcode_RecordFunctions[record_entry->indices[i]];
  |  |12633|       |                doesnt_escape(frame, stack_pointer, oparg, &tracer->prev_state.recorded_values[i]);
  |  |12634|       |            }
  |  |12635|       |            tracer->prev_state.recorded_count = record_entry->count;
  |  |12636|       |            DISPATCH_GOTO_NON_TRACING();
  |  |12637|       |            #else
  |  |12638|      0|            (void)prev_instr;
  |  |12639|      0|            Py_FatalError("JIT instruction executed in non-jit build.");
  |  |  ------------------
  |  |  |  |  133|      0|#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))
  |  |  ------------------
  |  |12640|      0|            #endif
  |  |12641|      0|        }
  |  |12642|       |
  |  |12643|      0|        TARGET(UNARY_INVERT) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |12644|       |            #if _Py_TAIL_CALL_INTERP
  |  |12645|       |            int opcode = UNARY_INVERT;
  |  |12646|       |            (void)(opcode);
  |  |12647|       |            #endif
  |  |12648|      0|            frame->instr_ptr = next_instr;
  |  |12649|      0|            next_instr += 1;
  |  |12650|      0|            INSTRUCTION_STATS(UNARY_INVERT);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |12651|      0|            _PyStackRef value;
  |  |12652|      0|            _PyStackRef res;
  |  |12653|      0|            _PyStackRef v;
  |  |12654|       |            // _UNARY_INVERT
  |  |12655|      0|            {
  |  |12656|      0|                value = stack_pointer[-1];
  |  |12657|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |12658|      0|                PyObject *res_o = PyNumber_Invert(PyStackRef_AsPyObjectBorrow(value));
  |  |12659|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |12660|      0|                if (res_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (12660:21): [True: 0, False: 0]
  |  |  ------------------
  |  |12661|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |12662|      0|                }
  |  |12663|      0|                res = PyStackRef_FromPyObjectSteal(res_o);
  |  |12664|      0|                v = value;
  |  |12665|      0|            }
  |  |12666|       |            // _POP_TOP
  |  |12667|      0|            {
  |  |12668|      0|                value = v;
  |  |12669|      0|                stack_pointer[-1] = res;
  |  |12670|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |12671|      0|                PyStackRef_XCLOSE(value);
  |  |12672|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |12673|      0|            }
  |  |12674|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (12674:13): [True: 0, False: 0]
  |  |  ------------------
  |  |12675|      0|        }
  |  |12676|       |
  |  |12677|      0|        TARGET(UNARY_NEGATIVE) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |12678|       |            #if _Py_TAIL_CALL_INTERP
  |  |12679|       |            int opcode = UNARY_NEGATIVE;
  |  |12680|       |            (void)(opcode);
  |  |12681|       |            #endif
  |  |12682|      0|            frame->instr_ptr = next_instr;
  |  |12683|      0|            next_instr += 1;
  |  |12684|      0|            INSTRUCTION_STATS(UNARY_NEGATIVE);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |12685|      0|            _PyStackRef value;
  |  |12686|      0|            _PyStackRef res;
  |  |12687|      0|            _PyStackRef v;
  |  |12688|       |            // _UNARY_NEGATIVE
  |  |12689|      0|            {
  |  |12690|      0|                value = stack_pointer[-1];
  |  |12691|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |12692|      0|                PyObject *res_o = PyNumber_Negative(PyStackRef_AsPyObjectBorrow(value));
  |  |12693|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |12694|      0|                if (res_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (12694:21): [True: 0, False: 0]
  |  |  ------------------
  |  |12695|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |12696|      0|                }
  |  |12697|      0|                res = PyStackRef_FromPyObjectSteal(res_o);
  |  |12698|      0|                v = value;
  |  |12699|      0|            }
  |  |12700|       |            // _POP_TOP
  |  |12701|      0|            {
  |  |12702|      0|                value = v;
  |  |12703|      0|                stack_pointer[-1] = res;
  |  |12704|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |12705|      0|                PyStackRef_XCLOSE(value);
  |  |12706|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |12707|      0|            }
  |  |12708|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (12708:13): [True: 0, False: 0]
  |  |  ------------------
  |  |12709|      0|        }
  |  |12710|       |
  |  |12711|      0|        TARGET(UNARY_NOT) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |12712|       |            #if _Py_TAIL_CALL_INTERP
  |  |12713|       |            int opcode = UNARY_NOT;
  |  |12714|       |            (void)(opcode);
  |  |12715|       |            #endif
  |  |12716|      0|            frame->instr_ptr = next_instr;
  |  |12717|      0|            next_instr += 1;
  |  |12718|      0|            INSTRUCTION_STATS(UNARY_NOT);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |12719|      0|            _PyStackRef value;
  |  |12720|      0|            _PyStackRef res;
  |  |12721|      0|            value = stack_pointer[-1];
  |  |12722|      0|            assert(PyStackRef_BoolCheck(value));
  |  |  ------------------
  |  |  |  Branch (12722:13): [True: 0, False: 0]
  |  |  ------------------
  |  |12723|      0|            res = PyStackRef_IsFalse(value)
  |  |  ------------------
  |  |  |  |  482|      0|#define PyStackRef_IsFalse(REF) ((REF).bits == (((uintptr_t)&_Py_FalseStruct) | Py_TAG_REFCNT))
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (482:33): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |12724|      0|            ? PyStackRef_True : PyStackRef_False;
  |  |  ------------------
  |  |  |  |  471|      0|#define PyStackRef_True ((_PyStackRef){.bits = ((uintptr_t)&_Py_TrueStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                           ? PyStackRef_True : PyStackRef_False;
  |  |  ------------------
  |  |  |  |  472|      0|#define PyStackRef_False ((_PyStackRef){.bits = ((uintptr_t)&_Py_FalseStruct) | Py_TAG_REFCNT })
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |12725|      0|            stack_pointer[-1] = res;
  |  |12726|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (12726:13): [True: 0, False: 0]
  |  |  ------------------
  |  |12727|      0|        }
  |  |12728|       |
  |  |12729|      0|        TARGET(UNPACK_EX) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |12730|       |            #if _Py_TAIL_CALL_INTERP
  |  |12731|       |            int opcode = UNPACK_EX;
  |  |12732|       |            (void)(opcode);
  |  |12733|       |            #endif
  |  |12734|      0|            frame->instr_ptr = next_instr;
  |  |12735|      0|            next_instr += 1;
  |  |12736|      0|            INSTRUCTION_STATS(UNPACK_EX);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |12737|      0|            _PyStackRef seq;
  |  |12738|      0|            _PyStackRef *top;
  |  |12739|      0|            seq = stack_pointer[-1];
  |  |12740|      0|            top = &stack_pointer[(oparg & 0xFF) + (oparg >> 8)];
  |  |12741|      0|            PyObject *seq_o = PyStackRef_AsPyObjectSteal(seq);
  |  |12742|      0|            stack_pointer += -1;
  |  |12743|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |12744|      0|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |12745|      0|            int res = _PyEval_UnpackIterableStackRef(tstate, seq_o, oparg & 0xFF, oparg >> 8, top);
  |  |12746|      0|            Py_DECREF(seq_o);
  |  |  ------------------
  |  |  |  |   80|      0|    do { \
  |  |  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   84|      0|            break; \
  |  |  |  |   85|      0|        } \
  |  |  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |   91|      0|        } \
  |  |  |  |   92|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |12747|      0|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |12748|      0|            if (res == 0) {
  |  |  ------------------
  |  |  |  Branch (12748:17): [True: 0, False: 0]
  |  |  ------------------
  |  |12749|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |12750|      0|            }
  |  |12751|      0|            stack_pointer += 1 + (oparg & 0xFF) + (oparg >> 8);
  |  |12752|      0|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |12753|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (12753:13): [True: 0, False: 0]
  |  |  ------------------
  |  |12754|      0|        }
  |  |12755|       |
  |  |12756|     18|        TARGET(UNPACK_SEQUENCE) {
  |  |  ------------------
  |  |  |  |  132|     18|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |12757|       |            #if _Py_TAIL_CALL_INTERP
  |  |12758|       |            int opcode = UNPACK_SEQUENCE;
  |  |12759|       |            (void)(opcode);
  |  |12760|       |            #endif
  |  |12761|     18|            frame->instr_ptr = next_instr;
  |  |12762|     18|            next_instr += 2;
  |  |12763|     18|            INSTRUCTION_STATS(UNPACK_SEQUENCE);
  |  |  ------------------
  |  |  |  |   71|     18|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |12764|     18|            PREDICTED_UNPACK_SEQUENCE:;
  |  |12765|     18|            _Py_CODEUNIT* const this_instr = next_instr - 2;
  |  |12766|     18|            (void)this_instr;
  |  |12767|     18|            _PyStackRef seq;
  |  |12768|     18|            _PyStackRef *top;
  |  |12769|       |            // _SPECIALIZE_UNPACK_SEQUENCE
  |  |12770|     18|            {
  |  |12771|     18|                seq = stack_pointer[-1];
  |  |12772|     18|                uint16_t counter = read_u16(&this_instr[1].cache);
  |  |12773|     18|                (void)counter;
  |  |12774|     18|                #if ENABLE_SPECIALIZATION
  |  |12775|     18|                if (ADAPTIVE_COUNTER_TRIGGERS(counter)) {
  |  |  ------------------
  |  |  |  |  354|     18|    backoff_counter_triggers(forge_backoff_counter((COUNTER)))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (354:5): [True: 7, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |12776|      7|                    next_instr = this_instr;
  |  |12777|      7|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |12778|      7|                    _Py_Specialize_UnpackSequence(seq, next_instr, oparg);
  |  |12779|      7|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |12780|      7|                    DISPATCH_SAME_OPARG();
  |  |  ------------------
  |  |  |  |  216|      7|    { \
  |  |  |  |  217|      7|        opcode = next_instr->op.code; \
  |  |  |  |  218|      7|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      7|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  219|      7|        DISPATCH_GOTO_NON_TRACING(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  134|      7|#  define DISPATCH_GOTO_NON_TRACING() goto *DISPATCH_TABLE[opcode];
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  130|      7|#  define DISPATCH_TABLE opcode_targets_table
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  220|      7|    }
  |  |  ------------------
  |  |12781|      7|                }
  |  |12782|     18|                OPCODE_DEFERRED_INC(UNPACK_SEQUENCE);
  |  |  ------------------
  |  |  |  |   90|     18|#define OPCODE_DEFERRED_INC(opname) ((void)0)
  |  |  ------------------
  |  |12783|     18|                ADVANCE_ADAPTIVE_COUNTER(this_instr[1].counter);
  |  |  ------------------
  |  |  |  |  357|     18|    do { \
  |  |  |  |  358|     18|        (COUNTER) = advance_backoff_counter((COUNTER)); \
  |  |  |  |  359|     18|    } while (0);
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (359:14): [Folded, False: 18]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |12784|     18|                #endif  /* ENABLE_SPECIALIZATION */
  |  |12785|     18|                (void)seq;
  |  |12786|     18|                (void)counter;
  |  |12787|     18|            }
  |  |12788|       |            // _UNPACK_SEQUENCE
  |  |12789|     18|            {
  |  |12790|     18|                top = &stack_pointer[-1 + oparg];
  |  |12791|     18|                PyObject *seq_o = PyStackRef_AsPyObjectSteal(seq);
  |  |12792|     18|                stack_pointer += -1;
  |  |12793|     18|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     18|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |12794|     18|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |12795|     18|                int res = _PyEval_UnpackIterableStackRef(tstate, seq_o, oparg, -1, top);
  |  |12796|     18|                Py_DECREF(seq_o);
  |  |  ------------------
  |  |  |  |   80|     18|    do { \
  |  |  |  |   81|     18|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     18|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     18|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   82|     18|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|     18|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|     18|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     18|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 18]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   84|      0|            break; \
  |  |  |  |   85|      0|        } \
  |  |  |  |   86|     18|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|     18|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   87|     18|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (87:13): [True: 5, False: 13]
  |  |  |  |  ------------------
  |  |  |  |   88|      5|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      5|    do { \
  |  |  |  |  |  |  113|      5|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  114|      5|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  118|      5|    } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 5]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   89|      5|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  213|      5|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   90|      5|            (*dealloc)(op); \
  |  |  |  |   91|      5|        } \
  |  |  |  |   92|     18|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (92:14): [Folded, False: 18]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |12797|     18|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |12798|     18|                if (res == 0) {
  |  |  ------------------
  |  |  |  Branch (12798:21): [True: 0, False: 18]
  |  |  ------------------
  |  |12799|      0|                    JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |12800|      0|                }
  |  |12801|     18|            }
  |  |12802|     18|            stack_pointer += oparg;
  |  |12803|     18|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     18|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |12804|     18|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     18|    { \
  |  |  |  |  201|     18|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     18|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     11|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     11|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     11|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     11|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     11|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     11|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 11]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     11|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     11|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     11|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     11|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     11|    }
  |  |  ------------------
  |  |  |  Branch (12804:13): [True: 11, False: 7]
  |  |  ------------------
  |  |12805|     11|        }
  |  |12806|       |
  |  |12807|      0|        TARGET(UNPACK_SEQUENCE_LIST) {
  |  |  ------------------
  |  |  |  |  132|      0|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |12808|       |            #if _Py_TAIL_CALL_INTERP
  |  |12809|       |            int opcode = UNPACK_SEQUENCE_LIST;
  |  |12810|       |            (void)(opcode);
  |  |12811|       |            #endif
  |  |12812|      0|            _Py_CODEUNIT* const this_instr = next_instr;
  |  |12813|      0|            (void)this_instr;
  |  |12814|      0|            frame->instr_ptr = next_instr;
  |  |12815|      0|            next_instr += 2;
  |  |12816|      0|            INSTRUCTION_STATS(UNPACK_SEQUENCE_LIST);
  |  |  ------------------
  |  |  |  |   71|      0|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |12817|      0|            static_assert(INLINE_CACHE_ENTRIES_UNPACK_SEQUENCE == 1, "incorrect cache size");
  |  |12818|      0|            _PyStackRef tos;
  |  |12819|      0|            _PyStackRef seq;
  |  |12820|      0|            _PyStackRef *values;
  |  |12821|       |            // _GUARD_TOS_LIST
  |  |12822|      0|            {
  |  |12823|      0|                tos = stack_pointer[-1];
  |  |12824|      0|                PyObject *o = PyStackRef_AsPyObjectBorrow(tos);
  |  |12825|      0|                if (!PyList_CheckExact(o)) {
  |  |  ------------------
  |  |  |  |   26|      0|#define PyList_CheckExact(op) Py_IS_TYPE((op), &PyList_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      0|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (12825:21): [True: 0, False: 0]
  |  |  ------------------
  |  |12826|      0|                    UPDATE_MISS_STATS(UNPACK_SEQUENCE);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |12827|      0|                    assert(_PyOpcode_Deopt[opcode] == (UNPACK_SEQUENCE));
  |  |  ------------------
  |  |  |  Branch (12827:21): [True: 0, False: 0]
  |  |  ------------------
  |  |12828|      0|                    JUMP_TO_PREDICTED(UNPACK_SEQUENCE);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |12829|      0|                }
  |  |12830|      0|            }
  |  |12831|       |            /* Skip 1 cache entry */
  |  |12832|       |            // _UNPACK_SEQUENCE_LIST
  |  |12833|      0|            {
  |  |12834|      0|                seq = tos;
  |  |12835|      0|                values = &stack_pointer[-1];
  |  |12836|      0|                PyObject *seq_o = PyStackRef_AsPyObjectBorrow(seq);
  |  |12837|      0|                assert(PyList_CheckExact(seq_o));
  |  |  ------------------
  |  |  |  Branch (12837:17): [True: 0, False: 0]
  |  |  ------------------
  |  |12838|      0|                if (!LOCK_OBJECT(seq_o)) {
  |  |  ------------------
  |  |  |  |  321|      0|#  define LOCK_OBJECT(op) (1)
  |  |  ------------------
  |  |  |  Branch (12838:21): [Folded, False: 0]
  |  |  ------------------
  |  |12839|      0|                    UPDATE_MISS_STATS(UNPACK_SEQUENCE);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |12840|      0|                    assert(_PyOpcode_Deopt[opcode] == (UNPACK_SEQUENCE));
  |  |  ------------------
  |  |  |  Branch (12840:21): [True: 0, False: 0]
  |  |  ------------------
  |  |12841|      0|                    JUMP_TO_PREDICTED(UNPACK_SEQUENCE);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |12842|      0|                }
  |  |12843|      0|                if (PyList_GET_SIZE(seq_o) != oparg) {
  |  |  ------------------
  |  |  |  |   38|      0|#define PyList_GET_SIZE(op) PyList_GET_SIZE(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (12843:21): [True: 0, False: 0]
  |  |  ------------------
  |  |12844|      0|                    UNLOCK_OBJECT(seq_o);
  |  |  ------------------
  |  |  |  |  322|      0|#  define UNLOCK_OBJECT(op) ((void)0)
  |  |  ------------------
  |  |12845|      0|                    if (true) {
  |  |  ------------------
  |  |  |  Branch (12845:25): [True: 0, Folded]
  |  |  ------------------
  |  |12846|      0|                        UPDATE_MISS_STATS(UNPACK_SEQUENCE);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |12847|      0|                        assert(_PyOpcode_Deopt[opcode] == (UNPACK_SEQUENCE));
  |  |  ------------------
  |  |  |  Branch (12847:25): [True: 0, False: 0]
  |  |  ------------------
  |  |12848|      0|                        JUMP_TO_PREDICTED(UNPACK_SEQUENCE);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |12849|      0|                    }
  |  |12850|      0|                }
  |  |12851|      0|                STAT_INC(UNPACK_SEQUENCE, hit);
  |  |  ------------------
  |  |  |  |   73|      0|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  |12852|      0|                PyObject **items = _PyList_ITEMS(seq_o);
  |  |  ------------------
  |  |  |  |   30|      0|#define _PyList_ITEMS(op) _Py_RVALUE(_PyList_CAST(op)->ob_item)
  |  |  |  |  ------------------
  |  |  |  |  |  |  277|      0|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (277:37): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |12853|      0|                for (int i = oparg; --i >= 0; ) {
  |  |  ------------------
  |  |  |  Branch (12853:37): [True: 0, False: 0]
  |  |  ------------------
  |  |12854|      0|                    *values++ = PyStackRef_FromPyObjectNew(items[i]);
  |  |  ------------------
  |  |  |  |  599|      0|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |12855|      0|                }
  |  |12856|      0|                UNLOCK_OBJECT(seq_o);
  |  |  ------------------
  |  |  |  |  322|      0|#  define UNLOCK_OBJECT(op) ((void)0)
  |  |  ------------------
  |  |12857|      0|                stack_pointer += -1 + oparg;
  |  |12858|      0|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      0|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |12859|      0|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |12860|      0|                PyStackRef_CLOSE(seq);
  |  |12861|      0|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |12862|      0|            }
  |  |12863|      0|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      0|    { \
  |  |  |  |  201|      0|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      0|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      0|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      0|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      0|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      0|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      0|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      0|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      0|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      0|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      0|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      0|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      0|    }
  |  |  ------------------
  |  |  |  Branch (12863:13): [True: 0, False: 0]
  |  |  ------------------
  |  |12864|      0|        }
  |  |12865|       |
  |  |12866|     13|        TARGET(UNPACK_SEQUENCE_TUPLE) {
  |  |  ------------------
  |  |  |  |  132|     13|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |12867|       |            #if _Py_TAIL_CALL_INTERP
  |  |12868|       |            int opcode = UNPACK_SEQUENCE_TUPLE;
  |  |12869|       |            (void)(opcode);
  |  |12870|       |            #endif
  |  |12871|     13|            _Py_CODEUNIT* const this_instr = next_instr;
  |  |12872|     13|            (void)this_instr;
  |  |12873|     13|            frame->instr_ptr = next_instr;
  |  |12874|     13|            next_instr += 2;
  |  |12875|     13|            INSTRUCTION_STATS(UNPACK_SEQUENCE_TUPLE);
  |  |  ------------------
  |  |  |  |   71|     13|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |12876|     13|            static_assert(INLINE_CACHE_ENTRIES_UNPACK_SEQUENCE == 1, "incorrect cache size");
  |  |12877|     13|            _PyStackRef tos;
  |  |12878|     13|            _PyStackRef seq;
  |  |12879|     13|            _PyStackRef *values;
  |  |12880|       |            // _GUARD_TOS_TUPLE
  |  |12881|     13|            {
  |  |12882|     13|                tos = stack_pointer[-1];
  |  |12883|     13|                PyObject *o = PyStackRef_AsPyObjectBorrow(tos);
  |  |12884|     13|                if (!PyTuple_CheckExact(o)) {
  |  |  ------------------
  |  |  |  |   28|     13|#define PyTuple_CheckExact(op) Py_IS_TYPE((op), &PyTuple_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|     13|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|     13|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     13|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (12884:21): [True: 0, False: 13]
  |  |  ------------------
  |  |12885|      0|                    UPDATE_MISS_STATS(UNPACK_SEQUENCE);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |12886|      0|                    assert(_PyOpcode_Deopt[opcode] == (UNPACK_SEQUENCE));
  |  |  ------------------
  |  |  |  Branch (12886:21): [True: 0, False: 0]
  |  |  ------------------
  |  |12887|      0|                    JUMP_TO_PREDICTED(UNPACK_SEQUENCE);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |12888|      0|                }
  |  |12889|     13|            }
  |  |12890|       |            /* Skip 1 cache entry */
  |  |12891|       |            // _UNPACK_SEQUENCE_TUPLE
  |  |12892|     13|            {
  |  |12893|     13|                seq = tos;
  |  |12894|     13|                values = &stack_pointer[-1];
  |  |12895|     13|                PyObject *seq_o = PyStackRef_AsPyObjectBorrow(seq);
  |  |12896|     13|                assert(PyTuple_CheckExact(seq_o));
  |  |  ------------------
  |  |  |  Branch (12896:17): [True: 13, False: 0]
  |  |  ------------------
  |  |12897|     13|                if (PyTuple_GET_SIZE(seq_o) != oparg) {
  |  |  ------------------
  |  |  |  |   27|     13|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     13|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     13|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (12897:21): [True: 0, False: 13]
  |  |  ------------------
  |  |12898|      0|                    UPDATE_MISS_STATS(UNPACK_SEQUENCE);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |12899|      0|                    assert(_PyOpcode_Deopt[opcode] == (UNPACK_SEQUENCE));
  |  |  ------------------
  |  |  |  Branch (12899:21): [True: 0, False: 0]
  |  |  ------------------
  |  |12900|      0|                    JUMP_TO_PREDICTED(UNPACK_SEQUENCE);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |12901|      0|                }
  |  |12902|     13|                STAT_INC(UNPACK_SEQUENCE, hit);
  |  |  ------------------
  |  |  |  |   73|     13|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  |12903|     13|                PyObject **items = _PyTuple_ITEMS(seq_o);
  |  |  ------------------
  |  |  |  |   26|     13|#define _PyTuple_ITEMS(op) _Py_RVALUE(_PyTuple_CAST(op)->ob_item)
  |  |  |  |  ------------------
  |  |  |  |  |  |  277|     26|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (277:37): [True: 13, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |12904|     52|                for (int i = oparg; --i >= 0; ) {
  |  |  ------------------
  |  |  |  Branch (12904:37): [True: 39, False: 13]
  |  |  ------------------
  |  |12905|     39|                    *values++ = PyStackRef_FromPyObjectNew(items[i]);
  |  |  ------------------
  |  |  |  |  599|     39|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     39|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     39|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |12906|     39|                }
  |  |12907|     13|                stack_pointer += -1 + oparg;
  |  |12908|     13|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     13|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |12909|     13|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |12910|     13|                PyStackRef_CLOSE(seq);
  |  |12911|     13|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |12912|     13|            }
  |  |12913|     13|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     13|    { \
  |  |  |  |  201|     13|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     13|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     13|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     13|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     13|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     13|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     13|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     13|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 13]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     13|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     13|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     13|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     13|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     13|    }
  |  |  ------------------
  |  |  |  Branch (12913:13): [True: 13, False: 0]
  |  |  ------------------
  |  |12914|     13|        }
  |  |12915|       |
  |  |12916|     63|        TARGET(UNPACK_SEQUENCE_TWO_TUPLE) {
  |  |  ------------------
  |  |  |  |  132|     63|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |12917|       |            #if _Py_TAIL_CALL_INTERP
  |  |12918|       |            int opcode = UNPACK_SEQUENCE_TWO_TUPLE;
  |  |12919|       |            (void)(opcode);
  |  |12920|       |            #endif
  |  |12921|     63|            _Py_CODEUNIT* const this_instr = next_instr;
  |  |12922|     63|            (void)this_instr;
  |  |12923|     63|            frame->instr_ptr = next_instr;
  |  |12924|     63|            next_instr += 2;
  |  |12925|     63|            INSTRUCTION_STATS(UNPACK_SEQUENCE_TWO_TUPLE);
  |  |  ------------------
  |  |  |  |   71|     63|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |12926|     63|            static_assert(INLINE_CACHE_ENTRIES_UNPACK_SEQUENCE == 1, "incorrect cache size");
  |  |12927|     63|            _PyStackRef tos;
  |  |12928|     63|            _PyStackRef seq;
  |  |12929|     63|            _PyStackRef val1;
  |  |12930|     63|            _PyStackRef val0;
  |  |12931|       |            // _GUARD_TOS_TUPLE
  |  |12932|     63|            {
  |  |12933|     63|                tos = stack_pointer[-1];
  |  |12934|     63|                PyObject *o = PyStackRef_AsPyObjectBorrow(tos);
  |  |12935|     63|                if (!PyTuple_CheckExact(o)) {
  |  |  ------------------
  |  |  |  |   28|     63|#define PyTuple_CheckExact(op) Py_IS_TYPE((op), &PyTuple_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|     63|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|     63|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     63|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (12935:21): [True: 0, False: 63]
  |  |  ------------------
  |  |12936|      0|                    UPDATE_MISS_STATS(UNPACK_SEQUENCE);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |12937|      0|                    assert(_PyOpcode_Deopt[opcode] == (UNPACK_SEQUENCE));
  |  |  ------------------
  |  |  |  Branch (12937:21): [True: 0, False: 0]
  |  |  ------------------
  |  |12938|      0|                    JUMP_TO_PREDICTED(UNPACK_SEQUENCE);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |12939|      0|                }
  |  |12940|     63|            }
  |  |12941|       |            /* Skip 1 cache entry */
  |  |12942|       |            // _UNPACK_SEQUENCE_TWO_TUPLE
  |  |12943|     63|            {
  |  |12944|     63|                seq = tos;
  |  |12945|     63|                assert(oparg == 2);
  |  |  ------------------
  |  |  |  Branch (12945:17): [True: 63, False: 0]
  |  |  ------------------
  |  |12946|     63|                PyObject *seq_o = PyStackRef_AsPyObjectBorrow(seq);
  |  |12947|     63|                assert(PyTuple_CheckExact(seq_o));
  |  |  ------------------
  |  |  |  Branch (12947:17): [True: 63, False: 0]
  |  |  ------------------
  |  |12948|     63|                if (PyTuple_GET_SIZE(seq_o) != 2) {
  |  |  ------------------
  |  |  |  |   27|     63|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     63|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     63|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (12948:21): [True: 0, False: 63]
  |  |  ------------------
  |  |12949|      0|                    UPDATE_MISS_STATS(UNPACK_SEQUENCE);
  |  |  ------------------
  |  |  |  |  298|      0|#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
  |  |  ------------------
  |  |12950|      0|                    assert(_PyOpcode_Deopt[opcode] == (UNPACK_SEQUENCE));
  |  |  ------------------
  |  |  |  Branch (12950:21): [True: 0, False: 0]
  |  |  ------------------
  |  |12951|      0|                    JUMP_TO_PREDICTED(UNPACK_SEQUENCE);
  |  |  ------------------
  |  |  |  |  136|      0|#  define JUMP_TO_PREDICTED(name) goto PREDICTED_##name;
  |  |  ------------------
  |  |12952|      0|                }
  |  |12953|     63|                STAT_INC(UNPACK_SEQUENCE, hit);
  |  |  ------------------
  |  |  |  |   73|     63|#define STAT_INC(opname, name) ((void)0)
  |  |  ------------------
  |  |12954|     63|                val0 = PyStackRef_FromPyObjectNew(PyTuple_GET_ITEM(seq_o, 0));
  |  |  ------------------
  |  |  |  |  599|     63|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     63|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    126|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (37:38): [True: 63, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |12955|     63|                val1 = PyStackRef_FromPyObjectNew(PyTuple_GET_ITEM(seq_o, 1));
  |  |  ------------------
  |  |  |  |  599|     63|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     63|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    126|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (37:38): [True: 63, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |12956|      0|                stack_pointer[-1] = val1;
  |  |12957|     63|                stack_pointer[0] = val0;
  |  |12958|     63|                stack_pointer += 1;
  |  |12959|     63|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     63|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |12960|     63|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |12961|     63|                PyStackRef_CLOSE(seq);
  |  |12962|     63|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |12963|     63|            }
  |  |12964|     63|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     63|    { \
  |  |  |  |  201|     63|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     63|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     63|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     63|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     63|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     63|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     63|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     63|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 63]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     63|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     63|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     63|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     63|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     63|    }
  |  |  ------------------
  |  |  |  Branch (12964:13): [True: 63, False: 0]
  |  |  ------------------
  |  |12965|     63|        }
  |  |12966|       |
  |  |12967|      2|        TARGET(WITH_EXCEPT_START) {
  |  |  ------------------
  |  |  |  |  132|      2|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |12968|       |            #if _Py_TAIL_CALL_INTERP
  |  |12969|       |            int opcode = WITH_EXCEPT_START;
  |  |12970|       |            (void)(opcode);
  |  |12971|       |            #endif
  |  |12972|      2|            frame->instr_ptr = next_instr;
  |  |12973|      2|            next_instr += 1;
  |  |12974|      2|            INSTRUCTION_STATS(WITH_EXCEPT_START);
  |  |  ------------------
  |  |  |  |   71|      2|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |12975|      2|            _PyStackRef exit_func;
  |  |12976|      2|            _PyStackRef exit_self;
  |  |12977|      2|            _PyStackRef lasti;
  |  |12978|      2|            _PyStackRef val;
  |  |12979|      2|            _PyStackRef res;
  |  |12980|      2|            val = stack_pointer[-1];
  |  |12981|      2|            lasti = stack_pointer[-3];
  |  |12982|      2|            exit_self = stack_pointer[-4];
  |  |12983|      2|            exit_func = stack_pointer[-5];
  |  |12984|      2|            PyObject *exc, *tb;
  |  |12985|      2|            PyObject *val_o = PyStackRef_AsPyObjectBorrow(val);
  |  |12986|      2|            PyObject *exit_func_o = PyStackRef_AsPyObjectBorrow(exit_func);
  |  |12987|      2|            assert(val_o && PyExceptionInstance_Check(val_o));
  |  |  ------------------
  |  |  |  Branch (12987:13): [True: 2, False: 0]
  |  |  |  Branch (12987:13): [True: 2, False: 0]
  |  |  ------------------
  |  |12988|      2|            exc = PyExceptionInstance_Class(val_o);
  |  |  ------------------
  |  |  |  |   69|      2|#define PyExceptionInstance_Class(x) _PyObject_CAST(Py_TYPE(x))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |12989|      2|            PyObject *original_tb = tb = PyException_GetTraceback(val_o);
  |  |12990|      2|            if (tb == NULL) {
  |  |  ------------------
  |  |  |  Branch (12990:17): [True: 0, False: 2]
  |  |  ------------------
  |  |12991|      0|                tb = Py_None;
  |  |  ------------------
  |  |  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  |  |12992|      0|            }
  |  |12993|      2|            assert(PyStackRef_IsTaggedInt(lasti));
  |  |  ------------------
  |  |  |  Branch (12993:13): [True: 2, False: 0]
  |  |  ------------------
  |  |12994|      2|            (void)lasti;
  |  |12995|      2|            PyObject* res_o;
  |  |12996|      2|            {
  |  |12997|      2|                PyObject *stack[5] = {NULL, PyStackRef_AsPyObjectBorrow(exit_self), exc, val_o, tb};
  |  |12998|      2|                int has_self = !PyStackRef_IsNull(exit_self);
  |  |  ------------------
  |  |  |  |  470|      2|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  467|      2|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      2|#define Py_TAG_REFCNT 1
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |12999|      2|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |13000|      2|                res_o = PyObject_Vectorcall(exit_func_o, stack + 2 - has_self,
  |  |13001|      2|                    (3 + has_self) | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL);
  |  |  ------------------
  |  |  |  |  287|      2|    (_Py_STATIC_CAST(size_t, 1) << (8 * sizeof(size_t) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  |   34|      2|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |13002|      2|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |13003|      2|            }
  |  |13004|      2|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |13005|      2|            Py_XDECREF(original_tb);
  |  |  ------------------
  |  |  |  |   69|      2|    do { \
  |  |  |  |   70|      2|        PyObject *xop = _PyObject_CAST(arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   71|      2|        if (xop != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (71:13): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   72|      2|            Py_DECREF(xop); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   80|      2|    do { \
  |  |  |  |  |  |   81|      2|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      2|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  137|      2|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   84|      0|            break; \
  |  |  |  |  |  |   85|      0|        } \
  |  |  |  |  |  |   86|      2|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      2|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      2|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (87:13): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |  |  |   91|      0|        } \
  |  |  |  |  |  |   92|      2|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (92:14): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   73|      2|        } \
  |  |  |  |   74|      2|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (74:14): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |13006|      2|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |13007|      2|            if (res_o == NULL) {
  |  |  ------------------
  |  |  |  Branch (13007:17): [True: 0, False: 2]
  |  |  ------------------
  |  |13008|      0|                JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |13009|      0|            }
  |  |13010|      2|            res = PyStackRef_FromPyObjectSteal(res_o);
  |  |13011|      2|            stack_pointer[0] = res;
  |  |13012|      2|            stack_pointer += 1;
  |  |13013|      2|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|      2|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |13014|      2|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|      2|    { \
  |  |  |  |  201|      2|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|      2|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|      2|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|      2|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|      2|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|      2|        opcode = word.op.code; \
  |  |  |  |  |  |  253|      2|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|      2|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|      2|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|      2|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|      2|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|      2|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|      2|    }
  |  |  ------------------
  |  |  |  Branch (13014:13): [True: 2, False: 0]
  |  |  ------------------
  |  |13015|      2|        }
  |  |13016|       |
  |  |13017|     24|        TARGET(YIELD_VALUE) {
  |  |  ------------------
  |  |  |  |  132|     24|#  define TARGET(op) TARGET_##op:
  |  |  ------------------
  |  |13018|       |            #if _Py_TAIL_CALL_INTERP
  |  |13019|       |            int opcode = YIELD_VALUE;
  |  |13020|       |            (void)(opcode);
  |  |13021|       |            #endif
  |  |13022|     24|            frame->instr_ptr = next_instr;
  |  |13023|     24|            next_instr += 1;
  |  |13024|     24|            INSTRUCTION_STATS(YIELD_VALUE);
  |  |  ------------------
  |  |  |  |   71|     24|#define INSTRUCTION_STATS(op) ((void)0)
  |  |  ------------------
  |  |13025|     24|            opcode = YIELD_VALUE;
  |  |  ------------------
  |  |  |  |  132|     24|#define YIELD_VALUE                            119
  |  |  ------------------
  |  |13026|     24|            _PyStackRef value;
  |  |13027|     24|            _PyStackRef retval;
  |  |13028|       |            // _MAKE_HEAP_SAFE
  |  |13029|     24|            {
  |  |13030|     24|                value = stack_pointer[-1];
  |  |13031|     24|                value = PyStackRef_MakeHeapSafe(value);
  |  |13032|     24|            }
  |  |13033|       |            // _YIELD_VALUE
  |  |13034|     24|            {
  |  |13035|     24|                retval = value;
  |  |13036|     24|                assert(frame->owner != FRAME_OWNED_BY_INTERPRETER);
  |  |  ------------------
  |  |  |  Branch (13036:17): [True: 24, False: 0]
  |  |  ------------------
  |  |13037|     24|                frame->instr_ptr++;
  |  |13038|     24|                PyGenObject *gen = _PyGen_GetGeneratorFromFrame(frame);
  |  |13039|     24|                assert(FRAME_SUSPENDED_YIELD_FROM == FRAME_SUSPENDED + 1);
  |  |  ------------------
  |  |  |  Branch (13039:17): [True: 24, Folded]
  |  |  ------------------
  |  |13040|     24|                assert(oparg == 0 || oparg == 1);
  |  |  ------------------
  |  |  |  Branch (13040:17): [True: 24, False: 0]
  |  |  |  Branch (13040:17): [True: 0, False: 0]
  |  |  ------------------
  |  |13041|     24|                _PyStackRef temp = retval;
  |  |13042|     24|                stack_pointer += -1;
  |  |13043|     24|                ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     24|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |13044|     24|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |13045|     24|                DTRACE_FUNCTION_RETURN();
  |  |  ------------------
  |  |  |  |  346|     24|#define DTRACE_FUNCTION_RETURN() ((void)0)
  |  |  ------------------
  |  |13046|     24|                tstate->exc_info = gen->gi_exc_state.previous_item;
  |  |13047|     24|                gen->gi_exc_state.previous_item = NULL;
  |  |13048|     24|                _Py_LeaveRecursiveCallPy(tstate);
  |  |13049|     24|                _PyInterpreterFrame *gen_frame = frame;
  |  |13050|     24|                frame = tstate->current_frame = frame->previous;
  |  |13051|     24|                gen_frame->previous = NULL;
  |  |13052|     24|                ((_PyThreadStateImpl *)tstate)->generator_return_kind = GENERATOR_YIELD;
  |  |13053|     24|                FT_ATOMIC_STORE_INT8_RELEASE(gen->gi_frame_state, FRAME_SUSPENDED + oparg);
  |  |  ------------------
  |  |  |  |  167|     24|#define FT_ATOMIC_STORE_INT8_RELEASE(value, new_value) value = new_value
  |  |  ------------------
  |  |13054|     24|                assert(INLINE_CACHE_ENTRIES_SEND == INLINE_CACHE_ENTRIES_FOR_ITER);
  |  |  ------------------
  |  |  |  Branch (13054:17): [True: 24, Folded]
  |  |  ------------------
  |  |13055|       |                #if TIER_ONE && defined(Py_DEBUG)
  |  |13056|       |                if (!PyStackRef_IsNone(frame->f_executable)) {
  |  |13057|       |                    Py_ssize_t i = frame->instr_ptr - _PyFrame_GetBytecode(frame);
  |  |13058|       |                    assert(i >= 0 && i <= INT_MAX);
  |  |13059|       |                    int opcode = _Py_GetBaseCodeUnit(_PyFrame_GetCode(frame), (int)i).op.code;
  |  |13060|       |                    assert(opcode == SEND || opcode == FOR_ITER);
  |  |13061|       |                }
  |  |13062|       |                #endif
  |  |13063|     24|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |13064|     24|                LOAD_IP(1 + INLINE_CACHE_ENTRIES_SEND);
  |  |  ------------------
  |  |  |  |  419|     24|#define LOAD_IP(OFFSET) do { \
  |  |  |  |  420|     24|        next_instr = frame->instr_ptr + (OFFSET); \
  |  |  |  |  421|     24|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (421:14): [Folded, False: 24]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |13065|     24|                value = temp;
  |  |13066|     24|                LLTRACE_RESUME_FRAME();
  |  |  ------------------
  |  |  |  |  188|     24|#define LLTRACE_RESUME_FRAME() ((void)0)
  |  |  ------------------
  |  |13067|     24|            }
  |  |13068|      0|            stack_pointer[0] = value;
  |  |13069|     24|            stack_pointer += 1;
  |  |13070|     24|            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
  |  |  ------------------
  |  |  |  |  511|     24|#define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0
  |  |  ------------------
  |  |13071|     24|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     24|    { \
  |  |  |  |  201|     24|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     24|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     24|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     24|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     24|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     24|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     24|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     24|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 24]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     24|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     24|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     24|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     24|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     24|    }
  |  |  ------------------
  |  |  |  Branch (13071:13): [True: 24, False: 0]
  |  |  ------------------
  |  |13072|     24|        }
  |  |13073|       |
  |  |13074|       |            /* END INSTRUCTIONS */
  |  |13075|      0|#if !_Py_TAIL_CALL_INTERP
  |  |13076|      0|#if USE_COMPUTED_GOTOS
  |  |13077|      0|        _unknown_opcode:
  |  |13078|       |#else
  |  |13079|       |        EXTRA_CASES  // From pycore_opcode_metadata.h, a 'case' for each unused opcode
  |  |13080|       |#endif
  |  |13081|       |            /* Tell C compilers not to hold the opcode variable in the loop.
  |  |13082|       |               next_instr points the current instruction without TARGET(). */
  |  |13083|      0|            opcode = next_instr->op.code;
  |  |13084|      0|            _PyErr_Format(tstate, PyExc_SystemError,
  |  |13085|      0|              "%U:%d: unknown opcode %d",
  |  |13086|      0|              _PyFrame_GetCode(frame)->co_filename,
  |  |13087|      0|              PyUnstable_InterpreterFrame_GetLine(frame),
  |  |13088|      0|              opcode);
  |  |13089|      0|JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |13090|       |
  |  |13091|       |
  |  |13092|      0|        }
  |  |13093|       |
  |  |13094|       |        /* This should never be reached. Every opcode should end with DISPATCH()
  |  |13095|       |           or goto error. */
  |  |13096|      0|        Py_UNREACHABLE();
  |  |  ------------------
  |  |  |  |  264|      0|#  define Py_UNREACHABLE() __builtin_unreachable()
  |  |  ------------------
  |  |13097|      0|#endif /* _Py_TAIL_CALL_INTERP */
  |  |13098|       |        /* BEGIN LABELS */
  |  |13099|       |
  |  |13100|      0|        LABEL(pop_2_error)
  |  |  ------------------
  |  |  |  |  137|      0|#  define LABEL(name) name:
  |  |  ------------------
  |  |13101|      0|        {
  |  |13102|      0|            stack_pointer -= 2;
  |  |13103|      0|            assert(WITHIN_STACK_BOUNDS());
  |  |  ------------------
  |  |  |  Branch (13103:13): [True: 0, False: 0]
  |  |  |  Branch (13103:13): [True: 0, False: 0]
  |  |  |  Branch (13103:13): [True: 0, False: 0]
  |  |  ------------------
  |  |13104|      0|            JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |13105|      0|        }
  |  |13106|       |
  |  |13107|      1|        LABEL(pop_1_error)
  |  |  ------------------
  |  |  |  |  137|      1|#  define LABEL(name) name:
  |  |  ------------------
  |  |13108|      1|        {
  |  |13109|      1|            stack_pointer -= 1;
  |  |13110|      1|            assert(WITHIN_STACK_BOUNDS());
  |  |  ------------------
  |  |  |  Branch (13110:13): [True: 1, False: 0]
  |  |  |  Branch (13110:13): [True: 1, False: 0]
  |  |  |  Branch (13110:13): [True: 0, False: 1]
  |  |  ------------------
  |  |13111|      1|            JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      1|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |13112|      0|        }
  |  |13113|       |
  |  |13114|    102|        LABEL(error)
  |  |  ------------------
  |  |  |  |  137|    102|#  define LABEL(name) name:
  |  |  ------------------
  |  |13115|    102|        {
  |  |13116|       |            #ifdef NDEBUG
  |  |13117|       |            if (!_PyErr_Occurred(tstate)) {
  |  |13118|       |                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |13119|       |                _PyErr_SetString(tstate, PyExc_SystemError,
  |  |13120|       |                             "error return without exception set");
  |  |13121|       |                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |13122|       |            }
  |  |13123|       |            #else
  |  |13124|    102|            assert(_PyErr_Occurred(tstate));
  |  |  ------------------
  |  |  |  Branch (13124:13): [True: 102, False: 0]
  |  |  ------------------
  |  |13125|    102|            #endif
  |  |13126|    102|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |13127|    102|            STOP_TRACING();
  |  |  ------------------
  |  |  |  |  168|    102|#define STOP_TRACING() ((void)(0));
  |  |  ------------------
  |  |13128|    102|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |13129|    102|            assert(frame->owner != FRAME_OWNED_BY_INTERPRETER);
  |  |  ------------------
  |  |  |  Branch (13129:13): [True: 102, False: 0]
  |  |  ------------------
  |  |13130|    102|            if (!_PyFrame_IsIncomplete(frame)) {
  |  |  ------------------
  |  |  |  Branch (13130:17): [True: 102, False: 0]
  |  |  ------------------
  |  |13131|    102|                _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |13132|    102|                PyFrameObject *f = _PyFrame_GetFrameObject(frame);
  |  |13133|    102|                stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |13134|    102|                if (f != NULL) {
  |  |  ------------------
  |  |  |  Branch (13134:21): [True: 102, False: 0]
  |  |  ------------------
  |  |13135|    102|                    _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |13136|    102|                    PyTraceBack_Here(f);
  |  |13137|    102|                    stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |13138|    102|                }
  |  |13139|    102|            }
  |  |13140|    102|            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |13141|    102|            _PyEval_MonitorRaise(tstate, frame, next_instr-1);
  |  |13142|    102|            JUMP_TO_LABEL(exception_unwind);
  |  |  ------------------
  |  |  |  |  135|    102|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |13143|      0|        }
  |  |13144|       |
  |  |13145|    108|        LABEL(exception_unwind)
  |  |  ------------------
  |  |  |  |  137|    108|#  define LABEL(name) name:
  |  |  ------------------
  |  |13146|    108|        {
  |  |13147|    108|            STOP_TRACING();
  |  |  ------------------
  |  |  |  |  168|    108|#define STOP_TRACING() ((void)(0));
  |  |  ------------------
  |  |13148|    108|            int offset = INSTR_OFFSET()-1;
  |  |  ------------------
  |  |  |  |  249|    108|#define INSTR_OFFSET() ((int)(next_instr - _PyFrame_GetBytecode(frame)))
  |  |  ------------------
  |  |13149|    108|            int level, handler, lasti;
  |  |13150|    108|            int handled = get_exception_handler(_PyFrame_GetCode(frame), offset, &level, &handler, &lasti);
  |  |13151|    108|            if (handled == 0) {
  |  |  ------------------
  |  |  |  Branch (13151:17): [True: 14, False: 94]
  |  |  ------------------
  |  |13152|     14|                assert(_PyErr_Occurred(tstate));
  |  |  ------------------
  |  |  |  Branch (13152:17): [True: 14, False: 0]
  |  |  ------------------
  |  |13153|     14|                _PyStackRef *stackbase = _PyFrame_Stackbase(frame);
  |  |13154|     29|                while (frame->stackpointer > stackbase) {
  |  |  ------------------
  |  |  |  Branch (13154:24): [True: 15, False: 14]
  |  |  ------------------
  |  |13155|     15|                    _PyStackRef ref = _PyFrame_StackPop(frame);
  |  |13156|     15|                    PyStackRef_XCLOSE(ref);
  |  |13157|     15|                }
  |  |13158|     14|                monitor_unwind(tstate, frame, next_instr-1);
  |  |13159|     14|                JUMP_TO_LABEL(exit_unwind);
  |  |  ------------------
  |  |  |  |  135|     14|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |13160|      0|            }
  |  |13161|    108|            assert(STACK_LEVEL() >= level);
  |  |  ------------------
  |  |  |  Branch (13161:13): [True: 94, False: 0]
  |  |  ------------------
  |  |13162|     94|            _PyStackRef *new_top = _PyFrame_Stackbase(frame) + level;
  |  |13163|     94|            assert(frame->stackpointer >= new_top);
  |  |  ------------------
  |  |  |  Branch (13163:13): [True: 94, False: 0]
  |  |  ------------------
  |  |13164|    242|            while (frame->stackpointer > new_top) {
  |  |  ------------------
  |  |  |  Branch (13164:20): [True: 148, False: 94]
  |  |  ------------------
  |  |13165|    148|                _PyStackRef ref = _PyFrame_StackPop(frame);
  |  |13166|    148|                PyStackRef_XCLOSE(ref);
  |  |13167|    148|            }
  |  |13168|     94|            if (lasti) {
  |  |  ------------------
  |  |  |  Branch (13168:17): [True: 6, False: 88]
  |  |  ------------------
  |  |13169|      6|                int frame_lasti = _PyInterpreterFrame_LASTI(frame);
  |  |  ------------------
  |  |  |  |   18|      6|    ((int)((IF)->instr_ptr - _PyFrame_GetBytecode((IF))))
  |  |  ------------------
  |  |13170|      6|                _PyStackRef lasti = PyStackRef_TagInt(frame_lasti);
  |  |13171|      6|                _PyFrame_StackPush(frame, lasti);
  |  |13172|      6|            }
  |  |13173|     94|            PyObject *exc = _PyErr_GetRaisedException(tstate);
  |  |13174|     94|            _PyFrame_StackPush(frame, PyStackRef_FromPyObjectSteal(exc));
  |  |13175|     94|            next_instr = _PyFrame_GetBytecode(frame) + handler;
  |  |13176|     94|            int err = monitor_handled(tstate, frame, next_instr, exc);
  |  |13177|     94|            if (err < 0) {
  |  |  ------------------
  |  |  |  Branch (13177:17): [True: 0, False: 94]
  |  |  ------------------
  |  |13178|      0|                JUMP_TO_LABEL(exception_unwind);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |13179|      0|            }
  |  |13180|       |            #ifdef Py_DEBUG
  |  |13181|       |            if (frame->lltrace >= 5) {
  |  |13182|       |                lltrace_resume_frame(frame);
  |  |13183|       |            }
  |  |13184|       |            #endif
  |  |13185|     94|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |13186|       |            #if _Py_TAIL_CALL_INTERP
  |  |13187|       |            int opcode;
  |  |13188|       |            #endif
  |  |13189|     94|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|     94|    { \
  |  |  |  |  201|     94|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|     94|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|     94|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|     94|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|     94|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|     94|        opcode = word.op.code; \
  |  |  |  |  |  |  253|     94|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|     94|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 94]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|     94|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|     94|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|     94|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|     94|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|     94|    }
  |  |  ------------------
  |  |  |  Branch (13189:13): [True: 94, False: 0]
  |  |  ------------------
  |  |13190|     94|        }
  |  |13191|       |
  |  |13192|     14|        LABEL(exit_unwind)
  |  |  ------------------
  |  |  |  |  137|     14|#  define LABEL(name) name:
  |  |  ------------------
  |  |13193|     14|        {
  |  |13194|     14|            assert(_PyErr_Occurred(tstate));
  |  |  ------------------
  |  |  |  Branch (13194:13): [True: 14, False: 0]
  |  |  ------------------
  |  |13195|     14|            DTRACE_FUNCTION_RETURN();
  |  |  ------------------
  |  |  |  |  346|     14|#define DTRACE_FUNCTION_RETURN() ((void)0)
  |  |  ------------------
  |  |13196|     14|            JUMP_TO_LABEL(exit_unwind_notrace);
  |  |  ------------------
  |  |  |  |  135|     14|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |13197|      0|        }
  |  |13198|       |
  |  |13199|     14|        LABEL(exit_unwind_notrace)
  |  |  ------------------
  |  |  |  |  137|     14|#  define LABEL(name) name:
  |  |  ------------------
  |  |13200|     14|        {
  |  |13201|     14|            assert(_PyErr_Occurred(tstate));
  |  |  ------------------
  |  |  |  Branch (13201:13): [True: 14, False: 0]
  |  |  ------------------
  |  |13202|     14|            _Py_LeaveRecursiveCallPy(tstate);
  |  |13203|     14|            assert(frame->owner != FRAME_OWNED_BY_INTERPRETER);
  |  |  ------------------
  |  |  |  Branch (13203:13): [True: 14, False: 0]
  |  |  ------------------
  |  |13204|     14|            _PyInterpreterFrame *dying = frame;
  |  |13205|     14|            frame = tstate->current_frame = dying->previous;
  |  |13206|     14|            _PyEval_FrameClearAndPop(tstate, dying);
  |  |13207|     14|            frame->return_offset = 0;
  |  |13208|     14|            if (frame->owner == FRAME_OWNED_BY_INTERPRETER) {
  |  |  ------------------
  |  |  |  Branch (13208:17): [True: 9, False: 5]
  |  |  ------------------
  |  |13209|      9|                tstate->current_frame = frame->previous;
  |  |13210|      9|                #if !_Py_TAIL_CALL_INTERP
  |  |13211|      9|                assert(frame == &entry.frame);
  |  |  ------------------
  |  |  |  Branch (13211:17): [True: 9, False: 0]
  |  |  ------------------
  |  |13212|      9|                #endif
  |  |13213|       |                #ifdef _Py_TIER2
  |  |13214|       |                _PyStackRef executor = frame->localsplus[0];
  |  |13215|       |                assert(tstate->current_executor == NULL);
  |  |13216|       |                if (!PyStackRef_IsNull(executor)) {
  |  |13217|       |                    tstate->current_executor = PyStackRef_AsPyObjectBorrow(executor);
  |  |13218|       |                    PyStackRef_CLOSE(executor);
  |  |13219|       |                }
  |  |13220|       |                #endif
  |  |13221|      9|                return NULL;
  |  |13222|      9|            }
  |  |13223|      5|            next_instr = frame->instr_ptr;
  |  |13224|      5|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |13225|      5|            JUMP_TO_LABEL(error);
  |  |  ------------------
  |  |  |  |  135|      5|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |13226|      0|        }
  |  |13227|       |
  |  |13228|    785|        LABEL(start_frame)
  |  |  ------------------
  |  |  |  |  137|    785|#  define LABEL(name) name:
  |  |  ------------------
  |  |13229|    785|        {
  |  |13230|    785|            int too_deep = _Py_EnterRecursivePy(tstate);
  |  |13231|    785|            if (too_deep) {
  |  |  ------------------
  |  |  |  Branch (13231:17): [True: 0, False: 785]
  |  |  ------------------
  |  |13232|      0|                JUMP_TO_LABEL(exit_unwind_notrace);
  |  |  ------------------
  |  |  |  |  135|      0|#  define JUMP_TO_LABEL(name) goto name;
  |  |  ------------------
  |  |13233|      0|            }
  |  |13234|    785|            DTRACE_FUNCTION_ENTRY();
  |  |  ------------------
  |  |  |  |  345|    785|#define DTRACE_FUNCTION_ENTRY() ((void)0)
  |  |  ------------------
  |  |13235|    785|            next_instr = frame->instr_ptr;
  |  |13236|       |            #ifdef Py_DEBUG
  |  |13237|       |            int lltrace = maybe_lltrace_resume_frame(frame, GLOBALS());
  |  |13238|       |            if (lltrace < 0) {
  |  |13239|       |                JUMP_TO_LABEL(exit_unwind);
  |  |13240|       |            }
  |  |13241|       |            frame->lltrace = lltrace;
  |  |13242|       |            assert(!_PyErr_Occurred(tstate));
  |  |13243|       |            #endif
  |  |13244|    785|            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |13245|       |            #if _Py_TAIL_CALL_INTERP
  |  |13246|       |            int opcode;
  |  |13247|       |            #endif
  |  |13248|    785|            DISPATCH();
  |  |  ------------------
  |  |  |  |  200|    785|    { \
  |  |  |  |  201|    785|        assert(frame->stackpointer == NULL); \
  |  |  |  |  202|    785|        NEXTOPARG(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  250|    785|#define NEXTOPARG()  do { \
  |  |  |  |  |  |  251|    785|        _Py_CODEUNIT word  = {.cache = FT_ATOMIC_LOAD_UINT16_RELAXED(*(uint16_t*)next_instr)}; \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  158|    785|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  252|    785|        opcode = word.op.code; \
  |  |  |  |  |  |  253|    785|        oparg = word.op.arg; \
  |  |  |  |  |  |  254|    785|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (254:14): [Folded, False: 785]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  203|    785|        PRE_DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  176|    785|#define PRE_DISPATCH_GOTO() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |  204|    785|        DISPATCH_GOTO(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  133|    785|#  define DISPATCH_GOTO() goto *opcode_targets[opcode]
  |  |  |  |  ------------------
  |  |  |  |  205|    785|    }
  |  |  ------------------
  |  |  |  Branch (13248:13): [True: 785, False: 0]
  |  |  ------------------
  |  |13249|    785|        }
  |  |13250|       |
  |  |13251|       |        #if _Py_TAIL_CALL_INTERP && !defined(_Py_TIER2)
  |  |13252|       |        Py_GCC_ATTRIBUTE((unused))
  |  |13253|       |        #endif
  |  |13254|      0|        LABEL(stop_tracing)
  |  |  ------------------
  |  |  |  |  137|      0|#  define LABEL(name) name:
  |  |  ------------------
  |  |13255|      0|        {
  |  |13256|       |            #if _Py_TIER2
  |  |13257|       |            assert(IS_JIT_TRACING());
  |  |13258|       |            int opcode = next_instr->op.code;
  |  |13259|       |            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |13260|       |            _PyJit_translate_single_bytecode_to_trace(tstate, frame, NULL, _EXIT_TRACE);
  |  |13261|       |            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |13262|       |            LEAVE_TRACING();
  |  |13263|       |            _PyFrame_SetStackPointer(frame, stack_pointer);
  |  |13264|       |            int err = stop_tracing_and_jit(tstate, frame);
  |  |13265|       |            stack_pointer = _PyFrame_GetStackPointer(frame);
  |  |13266|       |            if (err < 0) {
  |  |13267|       |                JUMP_TO_LABEL(error);
  |  |13268|       |            }
  |  |13269|       |            DISPATCH_GOTO_NON_TRACING();
  |  |13270|       |            #else
  |  |13271|      0|            Py_FatalError("JIT label executed in non-jit build.");
  |  |  ------------------
  |  |  |  |  133|      0|#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))
  |  |  ------------------
  |  |13272|      0|            #endif
  |  |13273|      0|        }
  |  |13274|       |
  |  |13275|       |/* END LABELS */
  |  |13276|      0|#undef TIER_ONE
  ------------------
 1321|      0|#endif
 1322|       |
 1323|       |
 1324|      0|early_exit:
 1325|      0|    assert(_PyErr_Occurred(tstate));
  ------------------
  |  Branch (1325:5): [True: 0, False: 0]
  ------------------
 1326|      0|    _Py_LeaveRecursiveCallPy(tstate);
 1327|      0|    assert(frame->owner != FRAME_OWNED_BY_INTERPRETER);
  ------------------
  |  Branch (1327:5): [True: 0, False: 0]
  ------------------
 1328|       |    // GH-99729: We need to unlink the frame *before* clearing it:
 1329|      0|    _PyInterpreterFrame *dying = frame;
 1330|      0|    frame = tstate->current_frame = dying->previous;
 1331|      0|    _PyEval_FrameClearAndPop(tstate, dying);
 1332|      0|    frame->return_offset = 0;
 1333|      0|    assert(frame->owner == FRAME_OWNED_BY_INTERPRETER);
  ------------------
  |  Branch (1333:5): [True: 0, False: 0]
  ------------------
 1334|       |    /* Restore previous frame and exit */
 1335|      0|    tstate->current_frame = frame->previous;
 1336|       |    return NULL;
 1337|      0|}
_PyEval_FrameClearAndPop:
 1988|  1.72k|{
 1989|       |    // Update last_profiled_frame for remote profiler frame caching.
 1990|       |    // By this point, tstate->current_frame is already set to the parent frame.
 1991|       |    // Only update if we're popping the exact frame that was last profiled.
 1992|       |    // This avoids corrupting the cache when transient frames (called and returned
 1993|       |    // between profiler samples) update last_profiled_frame to addresses the
 1994|       |    // profiler never saw.
 1995|  1.72k|    if (tstate->last_profiled_frame != NULL && tstate->last_profiled_frame == frame) {
  ------------------
  |  Branch (1995:9): [True: 0, False: 1.72k]
  |  Branch (1995:48): [True: 0, False: 0]
  ------------------
 1996|      0|        tstate->last_profiled_frame = tstate->current_frame;
 1997|      0|    }
 1998|       |
 1999|  1.72k|    if (frame->owner == FRAME_OWNED_BY_THREAD) {
  ------------------
  |  Branch (1999:9): [True: 1.71k, False: 17]
  ------------------
 2000|  1.71k|        clear_thread_frame(tstate, frame);
 2001|  1.71k|    }
 2002|     17|    else {
 2003|     17|        clear_gen_frame(tstate, frame);
 2004|     17|    }
 2005|  1.72k|}
_PyEvalFramePushAndInit:
 2012|  1.11k|{
 2013|  1.11k|    PyFunctionObject *func_obj = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(func);
 2014|  1.11k|    PyCodeObject * code = (PyCodeObject *)func_obj->func_code;
 2015|  1.11k|    CALL_STAT_INC(frames_pushed);
  ------------------
  |  |   76|  1.11k|#define CALL_STAT_INC(name) ((void)0)
  ------------------
 2016|  1.11k|    _PyInterpreterFrame *frame = _PyThreadState_PushFrame(tstate, code->co_framesize);
 2017|  1.11k|    if (frame == NULL) {
  ------------------
  |  Branch (2017:9): [True: 0, False: 1.11k]
  ------------------
 2018|      0|        goto fail;
 2019|      0|    }
 2020|  1.11k|    _PyFrame_Initialize(tstate, frame, func, locals, code, 0, previous);
 2021|  1.11k|    if (initialize_locals(tstate, func_obj, frame->localsplus, args, argcount, kwnames)) {
  ------------------
  |  Branch (2021:9): [True: 0, False: 1.11k]
  ------------------
 2022|      0|        assert(frame->owner == FRAME_OWNED_BY_THREAD);
  ------------------
  |  Branch (2022:9): [True: 0, False: 0]
  ------------------
 2023|      0|        clear_thread_frame(tstate, frame);
 2024|      0|        return NULL;
 2025|      0|    }
 2026|  1.11k|    return frame;
 2027|      0|fail:
 2028|       |    /* Consume the references */
 2029|      0|    PyStackRef_CLOSE(func);
 2030|      0|    Py_XDECREF(locals);
  ------------------
  |  |   69|      0|    do { \
  |  |   70|      0|        PyObject *xop = _PyObject_CAST(arg); \
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   71|      0|        if (xop != NULL) { \
  |  |  ------------------
  |  |  |  Branch (71:13): [True: 0, False: 0]
  |  |  ------------------
  |  |   72|      0|            Py_DECREF(xop); \
  |  |  ------------------
  |  |  |  |   80|      0|    do { \
  |  |  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   84|      0|            break; \
  |  |  |  |   85|      0|        } \
  |  |  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |   91|      0|        } \
  |  |  |  |   92|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   73|      0|        } \
  |  |   74|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (74:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2031|      0|    for (size_t i = 0; i < argcount; i++) {
  ------------------
  |  Branch (2031:24): [True: 0, False: 0]
  ------------------
 2032|      0|        PyStackRef_CLOSE(args[i]);
 2033|      0|    }
 2034|      0|    if (kwnames) {
  ------------------
  |  Branch (2034:9): [True: 0, False: 0]
  ------------------
 2035|      0|        Py_ssize_t kwcount = PyTuple_GET_SIZE(kwnames);
  ------------------
  |  |   27|      0|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2036|      0|        for (Py_ssize_t i = 0; i < kwcount; i++) {
  ------------------
  |  Branch (2036:32): [True: 0, False: 0]
  ------------------
 2037|      0|            PyStackRef_CLOSE(args[i+argcount]);
 2038|      0|        }
 2039|      0|    }
 2040|      0|    PyErr_NoMemory();
 2041|       |    return NULL;
 2042|  1.11k|}
_PyEvalFramePushAndInit_Ex:
 2050|      7|{
 2051|      7|    bool has_dict = (kwargs != NULL && PyDict_GET_SIZE(kwargs) > 0);
  ------------------
  |  |   63|      1|#define PyDict_GET_SIZE(op) PyDict_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2051:22): [True: 1, False: 6]
  |  Branch (2051:40): [True: 0, False: 1]
  ------------------
 2052|      7|    PyObject *kwnames = NULL;
 2053|      7|    _PyStackRef *newargs;
 2054|      7|    PyObject *const *object_array = NULL;
 2055|      7|    _PyStackRef stack_array[8] = {0};
 2056|      7|    if (has_dict) {
  ------------------
  |  Branch (2056:9): [True: 0, False: 7]
  ------------------
 2057|      0|        object_array = _PyStack_UnpackDict(tstate, _PyTuple_ITEMS(callargs), nargs, kwargs, &kwnames);
  ------------------
  |  |   26|      0|#define _PyTuple_ITEMS(op) _Py_RVALUE(_PyTuple_CAST(op)->ob_item)
  |  |  ------------------
  |  |  |  |  277|      0|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2058|      0|        if (object_array == NULL) {
  ------------------
  |  Branch (2058:13): [True: 0, False: 0]
  ------------------
 2059|      0|            PyStackRef_CLOSE(func);
 2060|      0|            goto error;
 2061|      0|        }
 2062|      0|        size_t nkwargs = PyDict_GET_SIZE(kwargs);
  ------------------
  |  |   63|      0|#define PyDict_GET_SIZE(op) PyDict_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2063|      0|        assert(sizeof(PyObject *) == sizeof(_PyStackRef));
  ------------------
  |  Branch (2063:9): [True: 0, Folded]
  ------------------
 2064|      0|        newargs = (_PyStackRef *)object_array;
 2065|       |        /* Positional args are borrowed from callargs tuple, need new reference */
 2066|      0|        for (Py_ssize_t i = 0; i < nargs; i++) {
  ------------------
  |  Branch (2066:32): [True: 0, False: 0]
  ------------------
 2067|      0|            newargs[i] = PyStackRef_FromPyObjectNew(object_array[i]);
  ------------------
  |  |  599|      0|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2068|      0|        }
 2069|       |        /* Keyword args are owned by _PyStack_UnpackDict, steal them */
 2070|      0|        for (size_t i = 0; i < nkwargs; i++) {
  ------------------
  |  Branch (2070:28): [True: 0, False: 0]
  ------------------
 2071|      0|            newargs[nargs + i] = PyStackRef_FromPyObjectSteal(object_array[nargs + i]);
 2072|      0|        }
 2073|      0|    }
 2074|      7|    else {
 2075|      7|        if (nargs <= 8) {
  ------------------
  |  Branch (2075:13): [True: 7, False: 0]
  ------------------
 2076|      7|            newargs = stack_array;
 2077|      7|        }
 2078|      0|        else {
 2079|      0|            newargs = PyMem_Malloc(sizeof(_PyStackRef) *nargs);
 2080|      0|            if (newargs == NULL) {
  ------------------
  |  Branch (2080:17): [True: 0, False: 0]
  ------------------
 2081|      0|                PyErr_NoMemory();
 2082|      0|                PyStackRef_CLOSE(func);
 2083|      0|                goto error;
 2084|      0|            }
 2085|      0|        }
 2086|       |        /* We need to create a new reference for all our args since the new frame steals them. */
 2087|     20|        for (Py_ssize_t i = 0; i < nargs; i++) {
  ------------------
  |  Branch (2087:32): [True: 13, False: 7]
  ------------------
 2088|     13|            newargs[i] = PyStackRef_FromPyObjectNew(PyTuple_GET_ITEM(callargs, i));
  ------------------
  |  |  599|     13|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     13|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     26|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (37:38): [True: 13, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2089|     13|        }
 2090|      7|    }
 2091|      7|    _PyInterpreterFrame *new_frame = _PyEvalFramePushAndInit(
 2092|      7|        tstate, func, locals,
 2093|      7|        newargs, nargs, kwnames, previous
 2094|      7|    );
 2095|      7|    if (has_dict) {
  ------------------
  |  Branch (2095:9): [True: 0, False: 7]
  ------------------
 2096|      0|        _PyStack_UnpackDict_FreeNoDecRef(object_array, kwnames);
 2097|      0|    }
 2098|      7|    else if (nargs > 8) {
  ------------------
  |  Branch (2098:14): [True: 0, False: 7]
  ------------------
 2099|      0|       PyMem_Free((void *)newargs);
 2100|      0|    }
 2101|       |    /* No need to decref func here because the reference has been stolen by
 2102|       |       _PyEvalFramePushAndInit.
 2103|       |    */
 2104|      7|    Py_DECREF(callargs);
  ------------------
  |  |   80|      7|    do { \
  |  |   81|      7|        PyObject *op = _PyObject_CAST(arg); \
  |  |  ------------------
  |  |  |  |  171|      7|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|      7|        if (_Py_IsImmortal(op)) { \
  |  |  ------------------
  |  |  |  |  137|      7|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      7|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:28): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   84|      0|            break; \
  |  |   85|      0|        } \
  |  |   86|      7|        _Py_DECREF_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   20|      7|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   87|      7|        if (--op->ob_refcnt == 0) { \
  |  |  ------------------
  |  |  |  Branch (87:13): [True: 2, False: 5]
  |  |  ------------------
  |  |   88|      2|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  ------------------
  |  |  |  |  112|      2|    do { \
  |  |  |  |  113|      2|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  114|      2|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (114:13): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  117|      0|        } \
  |  |  |  |  118|      2|    } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:13): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   89|      2|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  ------------------
  |  |  |  |  213|      2|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   90|      2|            (*dealloc)(op); \
  |  |   91|      2|        } \
  |  |   92|      7|    } while (0)
  |  |  ------------------
  |  |  |  Branch (92:14): [Folded, False: 7]
  |  |  ------------------
  ------------------
 2105|      7|    Py_XDECREF(kwargs);
  ------------------
  |  |   69|      7|    do { \
  |  |   70|      7|        PyObject *xop = _PyObject_CAST(arg); \
  |  |  ------------------
  |  |  |  |  171|      7|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   71|      7|        if (xop != NULL) { \
  |  |  ------------------
  |  |  |  Branch (71:13): [True: 1, False: 6]
  |  |  ------------------
  |  |   72|      1|            Py_DECREF(xop); \
  |  |  ------------------
  |  |  |  |   80|      1|    do { \
  |  |  |  |   81|      1|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   82|      1|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      1|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   84|      0|            break; \
  |  |  |  |   85|      0|        } \
  |  |  |  |   86|      1|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      1|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   87|      1|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (87:13): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   88|      1|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      1|    do { \
  |  |  |  |  |  |  113|      1|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  114|      1|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  118|      1|    } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   89|      1|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  213|      1|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   90|      1|            (*dealloc)(op); \
  |  |  |  |   91|      1|        } \
  |  |  |  |   92|      1|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (92:14): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   73|      1|        } \
  |  |   74|      7|    } while (0)
  |  |  ------------------
  |  |  |  Branch (74:14): [Folded, False: 7]
  |  |  ------------------
  ------------------
 2106|      7|    return new_frame;
 2107|      0|error:
 2108|      0|    Py_DECREF(callargs);
  ------------------
  |  |   80|      0|    do { \
  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  ------------------
  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   84|      0|            break; \
  |  |   85|      0|        } \
  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  ------------------
  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  ------------------
  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  ------------------
  |  |  |  |  112|      0|    do { \
  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  117|      0|        } \
  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   90|      0|            (*dealloc)(op); \
  |  |   91|      0|        } \
  |  |   92|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2109|      0|    Py_XDECREF(kwargs);
  ------------------
  |  |   69|      0|    do { \
  |  |   70|      0|        PyObject *xop = _PyObject_CAST(arg); \
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   71|      0|        if (xop != NULL) { \
  |  |  ------------------
  |  |  |  Branch (71:13): [True: 0, False: 0]
  |  |  ------------------
  |  |   72|      0|            Py_DECREF(xop); \
  |  |  ------------------
  |  |  |  |   80|      0|    do { \
  |  |  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   84|      0|            break; \
  |  |  |  |   85|      0|        } \
  |  |  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |   91|      0|        } \
  |  |  |  |   92|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   73|      0|        } \
  |  |   74|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (74:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2110|       |    return NULL;
 2111|      7|}
_PyEval_Vector:
 2118|    418|{
 2119|    418|    size_t total_args = argcount;
 2120|    418|    if (kwnames) {
  ------------------
  |  Branch (2120:9): [True: 30, False: 388]
  ------------------
 2121|     30|        total_args += PyTuple_GET_SIZE(kwnames);
  ------------------
  |  |   27|     30|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     30|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     30|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2122|     30|    }
 2123|    418|    _PyStackRef stack_array[8] = {0};
 2124|    418|    _PyStackRef *arguments;
 2125|    418|    if (total_args <= 8) {
  ------------------
  |  Branch (2125:9): [True: 418, False: 0]
  ------------------
 2126|    418|        arguments = stack_array;
 2127|    418|    }
 2128|      0|    else {
 2129|      0|        arguments = PyMem_Malloc(sizeof(_PyStackRef) * total_args);
 2130|      0|        if (arguments == NULL) {
  ------------------
  |  Branch (2130:13): [True: 0, False: 0]
  ------------------
 2131|      0|            return PyErr_NoMemory();
 2132|      0|        }
 2133|      0|    }
 2134|       |    /* _PyEvalFramePushAndInit consumes the references
 2135|       |     * to func, locals and all its arguments */
 2136|    418|    Py_XINCREF(locals);
  ------------------
  |  |  514|    418|#  define Py_XINCREF(op) Py_XINCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    418|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    418|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2137|  1.16k|    for (size_t i = 0; i < argcount; i++) {
  ------------------
  |  Branch (2137:24): [True: 744, False: 418]
  ------------------
 2138|    744|        arguments[i] = PyStackRef_FromPyObjectNew(args[i]);
  ------------------
  |  |  599|    744|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    744|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    744|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2139|    744|    }
 2140|    418|    if (kwnames) {
  ------------------
  |  Branch (2140:9): [True: 30, False: 388]
  ------------------
 2141|     30|        Py_ssize_t kwcount = PyTuple_GET_SIZE(kwnames);
  ------------------
  |  |   27|     30|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     30|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     30|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2142|     91|        for (Py_ssize_t i = 0; i < kwcount; i++) {
  ------------------
  |  Branch (2142:32): [True: 61, False: 30]
  ------------------
 2143|     61|            arguments[i+argcount] = PyStackRef_FromPyObjectNew(args[i+argcount]);
  ------------------
  |  |  599|     61|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     61|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     61|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2144|     61|        }
 2145|     30|    }
 2146|    418|    _PyInterpreterFrame *frame = _PyEvalFramePushAndInit(
 2147|    418|        tstate, PyStackRef_FromPyObjectNew(func), locals,
  ------------------
  |  |  599|    418|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    418|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    418|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2148|    418|        arguments, argcount, kwnames, NULL);
 2149|    418|    if (total_args > 8) {
  ------------------
  |  Branch (2149:9): [True: 0, False: 418]
  ------------------
 2150|      0|        PyMem_Free(arguments);
 2151|      0|    }
 2152|    418|    if (frame == NULL) {
  ------------------
  |  Branch (2152:9): [True: 0, False: 418]
  ------------------
 2153|      0|        return NULL;
 2154|      0|    }
 2155|    418|    EVAL_CALL_STAT_INC(EVAL_CALL_VECTOR);
  ------------------
  |  |   79|    418|#define EVAL_CALL_STAT_INC(name) ((void)0)
  ------------------
 2156|    418|    return _PyEval_EvalFrame(tstate, frame, 0);
 2157|    418|}
_PyEval_UnpackIterableStackRef:
 2334|     11|{
 2335|     11|    int i = 0, j = 0;
 2336|     11|    Py_ssize_t ll = 0;
 2337|     11|    PyObject *it;  /* iter(v) */
 2338|     11|    PyObject *w;
 2339|     11|    PyObject *l = NULL; /* variable list */
 2340|     11|    assert(v != NULL);
  ------------------
  |  Branch (2340:5): [True: 11, False: 0]
  ------------------
 2341|       |
 2342|     11|    it = PyObject_GetIter(v);
 2343|     11|    if (it == NULL) {
  ------------------
  |  Branch (2343:9): [True: 0, False: 11]
  ------------------
 2344|      0|        if (_PyErr_ExceptionMatches(tstate, PyExc_TypeError) &&
  ------------------
  |  Branch (2344:13): [True: 0, False: 0]
  ------------------
 2345|      0|            Py_TYPE(v)->tp_iter == NULL && !PySequence_Check(v))
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2345:13): [True: 0, False: 0]
  |  Branch (2345:44): [True: 0, False: 0]
  ------------------
 2346|      0|        {
 2347|      0|            _PyErr_Format(tstate, PyExc_TypeError,
 2348|      0|                          "cannot unpack non-iterable %.200s object",
 2349|      0|                          Py_TYPE(v)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2350|      0|        }
 2351|      0|        return 0;
 2352|      0|    }
 2353|       |
 2354|     34|    for (; i < argcnt; i++) {
  ------------------
  |  Branch (2354:12): [True: 23, False: 11]
  ------------------
 2355|     23|        w = PyIter_Next(it);
 2356|     23|        if (w == NULL) {
  ------------------
  |  Branch (2356:13): [True: 0, False: 23]
  ------------------
 2357|       |            /* Iterator done, via error or exhaustion. */
 2358|      0|            if (!_PyErr_Occurred(tstate)) {
  ------------------
  |  Branch (2358:17): [True: 0, False: 0]
  ------------------
 2359|      0|                if (argcntafter == -1) {
  ------------------
  |  Branch (2359:21): [True: 0, False: 0]
  ------------------
 2360|      0|                    _PyErr_Format(tstate, PyExc_ValueError,
 2361|      0|                                  "not enough values to unpack "
 2362|      0|                                  "(expected %d, got %d)",
 2363|      0|                                  argcnt, i);
 2364|      0|                }
 2365|      0|                else {
 2366|      0|                    _PyErr_Format(tstate, PyExc_ValueError,
 2367|      0|                                  "not enough values to unpack "
 2368|      0|                                  "(expected at least %d, got %d)",
 2369|      0|                                  argcnt + argcntafter, i);
 2370|      0|                }
 2371|      0|            }
 2372|      0|            goto Error;
 2373|      0|        }
 2374|     23|        *--sp = PyStackRef_FromPyObjectSteal(w);
 2375|     23|    }
 2376|       |
 2377|     11|    if (argcntafter == -1) {
  ------------------
  |  Branch (2377:9): [True: 11, False: 0]
  ------------------
 2378|       |        /* We better have exhausted the iterator now. */
 2379|     11|        w = PyIter_Next(it);
 2380|     11|        if (w == NULL) {
  ------------------
  |  Branch (2380:13): [True: 11, False: 0]
  ------------------
 2381|     11|            if (_PyErr_Occurred(tstate))
  ------------------
  |  Branch (2381:17): [True: 0, False: 11]
  ------------------
 2382|      0|                goto Error;
 2383|     11|            Py_DECREF(it);
  ------------------
  |  |   80|     11|    do { \
  |  |   81|     11|        PyObject *op = _PyObject_CAST(arg); \
  |  |  ------------------
  |  |  |  |  171|     11|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     11|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|     11|        if (_Py_IsImmortal(op)) { \
  |  |  ------------------
  |  |  |  |  137|     11|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     11|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     11|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:28): [True: 0, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   84|      0|            break; \
  |  |   85|      0|        } \
  |  |   86|     11|        _Py_DECREF_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   20|     11|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   87|     11|        if (--op->ob_refcnt == 0) { \
  |  |  ------------------
  |  |  |  Branch (87:13): [True: 11, False: 0]
  |  |  ------------------
  |  |   88|     11|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  ------------------
  |  |  |  |  112|     11|    do { \
  |  |  |  |  113|     11|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  114|     11|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (114:13): [True: 0, False: 11]
  |  |  |  |  ------------------
  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  117|      0|        } \
  |  |  |  |  118|     11|    } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:13): [Folded, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   89|     11|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  ------------------
  |  |  |  |  213|     11|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     11|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     11|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   90|     11|            (*dealloc)(op); \
  |  |   91|     11|        } \
  |  |   92|     11|    } while (0)
  |  |  ------------------
  |  |  |  Branch (92:14): [Folded, False: 11]
  |  |  ------------------
  ------------------
 2384|     11|            return 1;
 2385|     11|        }
 2386|      0|        Py_DECREF(w);
  ------------------
  |  |   80|      0|    do { \
  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  ------------------
  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   84|      0|            break; \
  |  |   85|      0|        } \
  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  ------------------
  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  ------------------
  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  ------------------
  |  |  |  |  112|      0|    do { \
  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  117|      0|        } \
  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   90|      0|            (*dealloc)(op); \
  |  |   91|      0|        } \
  |  |   92|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2387|       |
 2388|      0|        if (PyList_CheckExact(v) || PyTuple_CheckExact(v)
  ------------------
  |  |   26|      0|#define PyList_CheckExact(op) Py_IS_TYPE((op), &PyList_Type)
  |  |  ------------------
  |  |  |  |   65|      0|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (65:5): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      if (PyList_CheckExact(v) || PyTuple_CheckExact(v)
  ------------------
  |  |   28|      0|#define PyTuple_CheckExact(op) Py_IS_TYPE((op), &PyTuple_Type)
  |  |  ------------------
  |  |  |  |   65|      0|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (65:5): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2389|      0|              || PyDict_CheckExact(v)) {
  ------------------
  |  |   19|      0|#define PyDict_CheckExact(op) Py_IS_TYPE((op), &PyDict_Type)
  |  |  ------------------
  |  |  |  |   65|      0|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (65:5): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2390|      0|            ll = PyDict_CheckExact(v) ? PyDict_Size(v) : Py_SIZE(v);
  ------------------
  |  |   19|      0|#define PyDict_CheckExact(op) Py_IS_TYPE((op), &PyDict_Type)
  |  |  ------------------
  |  |  |  |   65|      0|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (65:5): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                          ll = PyDict_CheckExact(v) ? PyDict_Size(v) : Py_SIZE(v);
  ------------------
  |  |  214|      0|#  define Py_SIZE(ob) _Py_SIZE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2391|      0|            if (ll > argcnt) {
  ------------------
  |  Branch (2391:17): [True: 0, False: 0]
  ------------------
 2392|      0|                _PyErr_Format(tstate, PyExc_ValueError,
 2393|      0|                              "too many values to unpack (expected %d, got %zd)",
 2394|      0|                              argcnt, ll);
 2395|      0|                goto Error;
 2396|      0|            }
 2397|      0|        }
 2398|      0|        _PyErr_Format(tstate, PyExc_ValueError,
 2399|      0|                      "too many values to unpack (expected %d)",
 2400|      0|                      argcnt);
 2401|      0|        goto Error;
 2402|      0|    }
 2403|       |
 2404|      0|    l = PySequence_List(it);
 2405|      0|    if (l == NULL)
  ------------------
  |  Branch (2405:9): [True: 0, False: 0]
  ------------------
 2406|      0|        goto Error;
 2407|      0|    *--sp = PyStackRef_FromPyObjectSteal(l);
 2408|      0|    i++;
 2409|       |
 2410|      0|    ll = PyList_GET_SIZE(l);
  ------------------
  |  |   38|      0|#define PyList_GET_SIZE(op) PyList_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2411|      0|    if (ll < argcntafter) {
  ------------------
  |  Branch (2411:9): [True: 0, False: 0]
  ------------------
 2412|      0|        _PyErr_Format(tstate, PyExc_ValueError,
 2413|      0|            "not enough values to unpack (expected at least %d, got %zd)",
 2414|      0|            argcnt + argcntafter, argcnt + ll);
 2415|      0|        goto Error;
 2416|      0|    }
 2417|       |
 2418|       |    /* Pop the "after-variable" args off the list. */
 2419|      0|    for (j = argcntafter; j > 0; j--, i++) {
  ------------------
  |  Branch (2419:27): [True: 0, False: 0]
  ------------------
 2420|      0|        *--sp = PyStackRef_FromPyObjectSteal(PyList_GET_ITEM(l, ll - j));
  ------------------
  |  |   40|      0|#define PyList_GET_ITEM(op, index) (_PyList_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   26|      0|    (assert(PyList_Check(op)), _Py_CAST(PyListObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2420:46): [True: 0, False: 0]
  ------------------
 2421|      0|    }
 2422|       |    /* Resize the list. */
 2423|      0|    Py_SET_SIZE(l, ll - argcntafter);
  ------------------
  |  |  216|      0|#  define Py_SET_SIZE(ob, size) _Py_SET_SIZE_impl(_PyVarObject_CAST(ob), (size))
  |  |  ------------------
  |  |  |  |  182|      0|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2424|      0|    Py_DECREF(it);
  ------------------
  |  |   80|      0|    do { \
  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  ------------------
  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   84|      0|            break; \
  |  |   85|      0|        } \
  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  ------------------
  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  ------------------
  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  ------------------
  |  |  |  |  112|      0|    do { \
  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  117|      0|        } \
  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   90|      0|            (*dealloc)(op); \
  |  |   91|      0|        } \
  |  |   92|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2425|      0|    return 1;
 2426|       |
 2427|      0|Error:
 2428|      0|    for (; i > 0; i--, sp++) {
  ------------------
  |  Branch (2428:12): [True: 0, False: 0]
  ------------------
 2429|      0|        PyStackRef_CLOSE(*sp);
 2430|      0|    }
 2431|       |    Py_XDECREF(it);
  ------------------
  |  |   69|      0|    do { \
  |  |   70|      0|        PyObject *xop = _PyObject_CAST(arg); \
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   71|      0|        if (xop != NULL) { \
  |  |  ------------------
  |  |  |  Branch (71:13): [True: 0, False: 0]
  |  |  ------------------
  |  |   72|      0|            Py_DECREF(xop); \
  |  |  ------------------
  |  |  |  |   80|      0|    do { \
  |  |  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   84|      0|            break; \
  |  |  |  |   85|      0|        } \
  |  |  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |   91|      0|        } \
  |  |  |  |   92|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   73|      0|        } \
  |  |   74|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (74:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2432|      0|    return 0;
 2433|      0|}
_PyEval_MonitorRaise:
 2440|    102|{
 2441|    102|    if (no_tools_for_local_event(tstate, frame, PY_MONITORING_EVENT_RAISE)) {
  ------------------
  |  |   32|    102|#define PY_MONITORING_EVENT_RAISE 11
  ------------------
  |  Branch (2441:9): [True: 102, False: 0]
  ------------------
 2442|    102|        return;
 2443|    102|    }
 2444|      0|    do_monitor_exc(tstate, frame, instr, PY_MONITORING_EVENT_RAISE);
  ------------------
  |  |   32|      0|#define PY_MONITORING_EVENT_RAISE 11
  ------------------
 2445|      0|}
_PyEval_NoToolsForUnwind:
 2449|      1|{
 2450|      1|    return no_tools_for_local_event(tstate, frame, PY_MONITORING_EVENT_PY_UNWIND);
  ------------------
  |  |   34|      1|#define PY_MONITORING_EVENT_PY_UNWIND 13
  ------------------
 2451|      1|}
_PyEval_GetFrame:
 2587|     67|{
 2588|     67|    PyThreadState *tstate = _PyThreadState_GET();
 2589|     67|    return _PyThreadState_GetFrame(tstate);
 2590|     67|}
_PyEval_GetBuiltins:
 2608|     16|{
 2609|     16|    _PyInterpreterFrame *frame = _PyThreadState_GetFrame(tstate);
 2610|     16|    if (frame != NULL) {
  ------------------
  |  Branch (2610:9): [True: 14, False: 2]
  ------------------
 2611|     14|        return frame->f_builtins;
 2612|     14|    }
 2613|      2|    return tstate->interp->builtins;
 2614|     16|}
PyEval_GetBuiltins:
 2618|     16|{
 2619|     16|    PyThreadState *tstate = _PyThreadState_GET();
 2620|     16|    return _PyEval_GetBuiltins(tstate);
 2621|     16|}
PyEval_GetGlobals:
 2730|     26|{
 2731|     26|    PyThreadState *tstate = _PyThreadState_GET();
 2732|     26|    return _PyEval_GetGlobals(tstate);
 2733|     26|}
_PyEval_EnsureBuiltins:
 2793|     14|{
 2794|     14|    PyObject *builtins = get_globals_builtins(globals);
 2795|     14|    if (builtins == NULL) {
  ------------------
  |  Branch (2795:9): [True: 14, False: 0]
  ------------------
 2796|     14|        if (_PyErr_Occurred(tstate)) {
  ------------------
  |  Branch (2796:13): [True: 0, False: 14]
  ------------------
 2797|      0|            return -1;
 2798|      0|        }
 2799|     14|        builtins = PyEval_GetBuiltins();  // borrowed
 2800|     14|        if (builtins == NULL) {
  ------------------
  |  Branch (2800:13): [True: 0, False: 14]
  ------------------
 2801|      0|            assert(_PyErr_Occurred(tstate));
  ------------------
  |  Branch (2801:13): [True: 0, False: 0]
  ------------------
 2802|      0|            return -1;
 2803|      0|        }
 2804|     14|        Py_INCREF(builtins);
  ------------------
  |  |  310|     14|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     14|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     14|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2805|     14|        if (set_globals_builtins(globals, builtins) < 0) {
  ------------------
  |  Branch (2805:13): [True: 0, False: 14]
  ------------------
 2806|      0|            Py_DECREF(builtins);
  ------------------
  |  |   80|      0|    do { \
  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  ------------------
  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   84|      0|            break; \
  |  |   85|      0|        } \
  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  ------------------
  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  ------------------
  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  ------------------
  |  |  |  |  112|      0|    do { \
  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  117|      0|        } \
  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   90|      0|            (*dealloc)(op); \
  |  |   91|      0|        } \
  |  |   92|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2807|      0|            return -1;
 2808|      0|        }
 2809|     14|    }
 2810|     14|    if (p_builtins != NULL) {
  ------------------
  |  Branch (2810:9): [True: 0, False: 14]
  ------------------
 2811|      0|        *p_builtins = builtins;
 2812|      0|    }
 2813|     14|    else {
 2814|       |        Py_DECREF(builtins);
  ------------------
  |  |   80|     14|    do { \
  |  |   81|     14|        PyObject *op = _PyObject_CAST(arg); \
  |  |  ------------------
  |  |  |  |  171|     14|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     14|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|     14|        if (_Py_IsImmortal(op)) { \
  |  |  ------------------
  |  |  |  |  137|     14|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     14|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     14|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:28): [True: 0, False: 14]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   84|      0|            break; \
  |  |   85|      0|        } \
  |  |   86|     14|        _Py_DECREF_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   20|     14|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   87|     14|        if (--op->ob_refcnt == 0) { \
  |  |  ------------------
  |  |  |  Branch (87:13): [True: 0, False: 14]
  |  |  ------------------
  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  ------------------
  |  |  |  |  112|      0|    do { \
  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  117|      0|        } \
  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   90|      0|            (*dealloc)(op); \
  |  |   91|      0|        } \
  |  |   92|     14|    } while (0)
  |  |  ------------------
  |  |  |  Branch (92:14): [Folded, False: 14]
  |  |  ------------------
  ------------------
 2815|     14|    }
 2816|     14|    return 0;
 2817|     14|}
_PyEval_EnsureBuiltinsWithModule:
 2822|      7|{
 2823|      7|    PyObject *builtins = get_globals_builtins(globals);
 2824|      7|    if (builtins == NULL) {
  ------------------
  |  Branch (2824:9): [True: 7, False: 0]
  ------------------
 2825|      7|        if (_PyErr_Occurred(tstate)) {
  ------------------
  |  Branch (2825:13): [True: 0, False: 7]
  ------------------
 2826|      0|            return -1;
 2827|      0|        }
 2828|      7|        builtins = PyImport_ImportModuleLevel("builtins", NULL, NULL, NULL, 0);
 2829|      7|        if (builtins == NULL) {
  ------------------
  |  Branch (2829:13): [True: 0, False: 7]
  ------------------
 2830|      0|            return -1;
 2831|      0|        }
 2832|      7|        if (set_globals_builtins(globals, builtins) < 0) {
  ------------------
  |  Branch (2832:13): [True: 0, False: 7]
  ------------------
 2833|      0|            Py_DECREF(builtins);
  ------------------
  |  |   80|      0|    do { \
  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  ------------------
  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   84|      0|            break; \
  |  |   85|      0|        } \
  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  ------------------
  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  ------------------
  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  ------------------
  |  |  |  |  112|      0|    do { \
  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  117|      0|        } \
  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   90|      0|            (*dealloc)(op); \
  |  |   91|      0|        } \
  |  |   92|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2834|      0|            return -1;
 2835|      0|        }
 2836|      7|    }
 2837|      7|    if (p_builtins != NULL) {
  ------------------
  |  Branch (2837:9): [True: 7, False: 0]
  ------------------
 2838|      7|        *p_builtins = builtins;
 2839|      7|    }
 2840|      0|    else {
 2841|       |        Py_DECREF(builtins);
  ------------------
  |  |   80|      0|    do { \
  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  ------------------
  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   84|      0|            break; \
  |  |   85|      0|        } \
  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  ------------------
  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  ------------------
  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  ------------------
  |  |  |  |  112|      0|    do { \
  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  117|      0|        } \
  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   90|      0|            (*dealloc)(op); \
  |  |   91|      0|        } \
  |  |   92|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 2842|      0|    }
 2843|      7|    return 0;
 2844|      7|}
_PyEval_SliceIndex:
 2924|     20|{
 2925|     20|    if (Py_IsNone(v)) {
  ------------------
  |  |  621|     20|#define Py_IsNone(x) Py_Is((x), Py_None)
  |  |  ------------------
  |  |  |  |  187|     20|#define Py_Is(x, y) ((x) == (y))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (187:21): [True: 9, False: 11]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2926|      9|        return 1;
 2927|      9|    }
 2928|     11|    return _PyEval_SliceIndexNotNone(v, pi);
 2929|     20|}
_PyEval_SliceIndexNotNone:
 2933|     11|{
 2934|     11|    PyThreadState *tstate = _PyThreadState_GET();
 2935|     11|    Py_ssize_t x;
 2936|     11|    if (PyLong_CheckExact(v) && _PyLong_IsCompact((PyLongObject *)v)) {
  ------------------
  |  |   14|     11|#define PyLong_CheckExact(op) Py_IS_TYPE((op), &PyLong_Type)
  |  |  ------------------
  |  |  |  |   65|     22|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     11|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     11|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (65:5): [True: 11, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2936:33): [True: 11, False: 0]
  ------------------
 2937|     11|        *pi = _PyLong_CompactValue((PyLongObject *)v);
 2938|     11|        return 1;
 2939|     11|    }
 2940|      0|    if (_PyIndex_Check(v)) {
  ------------------
  |  Branch (2940:9): [True: 0, False: 0]
  ------------------
 2941|      0|        x = PyNumber_AsSsize_t(v, NULL);
 2942|      0|        if (x == -1 && _PyErr_Occurred(tstate))
  ------------------
  |  Branch (2942:13): [True: 0, False: 0]
  |  Branch (2942:24): [True: 0, False: 0]
  ------------------
 2943|      0|            return 0;
 2944|      0|    }
 2945|      0|    else {
 2946|      0|        _PyErr_SetString(tstate, PyExc_TypeError,
 2947|      0|                         "slice indices must be integers or "
 2948|      0|                         "have an __index__ method");
 2949|      0|        return 0;
 2950|      0|    }
 2951|      0|    *pi = x;
 2952|      0|    return 1;
 2953|      0|}
_PyEval_UnpackIndices:
 2959|      5|{
 2960|      5|    if (len < 0) {
  ------------------
  |  Branch (2960:9): [True: 0, False: 5]
  ------------------
 2961|      0|        return 0;
 2962|      0|    }
 2963|      5|    *istart = 0;
 2964|      5|    *istop = PY_SSIZE_T_MAX;
  ------------------
  |  |  137|      5|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
 2965|      5|    if (!_PyEval_SliceIndex(start, istart)) {
  ------------------
  |  Branch (2965:9): [True: 0, False: 5]
  ------------------
 2966|      0|        return 0;
 2967|      0|    }
 2968|      5|    if (!_PyEval_SliceIndex(stop, istop)) {
  ------------------
  |  Branch (2968:9): [True: 0, False: 5]
  ------------------
 2969|      0|        return 0;
 2970|      0|    }
 2971|      5|    PySlice_AdjustIndices(len, istart, istop, 1);
 2972|      5|    return 1;
 2973|      5|}
_PyEval_ImportName:
 2979|     62|{
 2980|     62|    PyObject *import_func;
 2981|     62|    if (PyMapping_GetOptionalItem(builtins, &_Py_ID(__import__),
  ------------------
  |  |  917|     62|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     62|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     62|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2981:9): [True: 0, False: 62]
  ------------------
 2982|     62|                                  &import_func) < 0) {
 2983|      0|        return NULL;
 2984|      0|    }
 2985|     62|    if (import_func == NULL) {
  ------------------
  |  Branch (2985:9): [True: 0, False: 62]
  ------------------
 2986|      0|        _PyErr_SetString(tstate, PyExc_ImportError, "__import__ not found");
 2987|      0|        return NULL;
 2988|      0|    }
 2989|       |
 2990|     62|    PyObject *res = _PyEval_ImportNameWithImport(
 2991|     62|        tstate, import_func, globals, locals, name, fromlist, level);
 2992|       |    Py_DECREF(import_func);
  ------------------
  |  |   80|     62|    do { \
  |  |   81|     62|        PyObject *op = _PyObject_CAST(arg); \
  |  |  ------------------
  |  |  |  |  171|     62|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     62|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|     62|        if (_Py_IsImmortal(op)) { \
  |  |  ------------------
  |  |  |  |  137|     62|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     62|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     62|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:28): [True: 0, False: 62]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   84|      0|            break; \
  |  |   85|      0|        } \
  |  |   86|     62|        _Py_DECREF_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   20|     62|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   87|     62|        if (--op->ob_refcnt == 0) { \
  |  |  ------------------
  |  |  |  Branch (87:13): [True: 0, False: 62]
  |  |  ------------------
  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  ------------------
  |  |  |  |  112|      0|    do { \
  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  117|      0|        } \
  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   90|      0|            (*dealloc)(op); \
  |  |   91|      0|        } \
  |  |   92|     62|    } while (0)
  |  |  ------------------
  |  |  |  Branch (92:14): [Folded, False: 62]
  |  |  ------------------
  ------------------
 2993|     62|    return res;
 2994|     62|}
_PyEval_ImportNameWithImport:
 3000|     62|{
 3001|     62|    if (locals == NULL) {
  ------------------
  |  Branch (3001:9): [True: 6, False: 56]
  ------------------
 3002|      6|        locals = Py_None;
  ------------------
  |  |  616|      6|#  define Py_None (&_Py_NoneStruct)
  ------------------
 3003|      6|    }
 3004|       |
 3005|       |    /* Fast path for not overloaded __import__. */
 3006|     62|    if (_PyImport_IsDefaultImportFunc(tstate->interp, import_func)) {
  ------------------
  |  Branch (3006:9): [True: 62, False: 0]
  ------------------
 3007|     62|        int ilevel = PyLong_AsInt(level);
 3008|     62|        if (ilevel == -1 && _PyErr_Occurred(tstate)) {
  ------------------
  |  Branch (3008:13): [True: 0, False: 62]
  |  Branch (3008:29): [True: 0, False: 0]
  ------------------
 3009|      0|            return NULL;
 3010|      0|        }
 3011|     62|        return PyImport_ImportModuleLevelObject(
 3012|     62|                        name,
 3013|     62|                        globals,
 3014|     62|                        locals,
 3015|     62|                        fromlist,
 3016|     62|                        ilevel);
 3017|     62|    }
 3018|       |
 3019|      0|    PyObject *args[5] = {name, globals, locals, fromlist, level};
 3020|       |    PyObject *res = PyObject_Vectorcall(import_func, args, 5, NULL);
 3021|      0|    return res;
 3022|     62|}
_PyEval_LazyImportName:
 3073|     49|{
 3074|     49|    PyObject *res = NULL;
 3075|     49|    PyImport_LazyImportsMode mode = PyImport_GetLazyImportsMode();
 3076|       |    // Check if global policy overrides the local syntax
 3077|     49|    switch (mode) {
  ------------------
  |  Branch (3077:13): [True: 49, False: 0]
  ------------------
 3078|      0|        case PyImport_LAZY_NONE:
  ------------------
  |  Branch (3078:9): [True: 0, False: 49]
  ------------------
 3079|      0|            lazy = 0;
 3080|      0|            break;
 3081|      0|        case PyImport_LAZY_ALL:
  ------------------
  |  Branch (3081:9): [True: 0, False: 49]
  ------------------
 3082|      0|            if (!lazy) {
  ------------------
  |  Branch (3082:17): [True: 0, False: 0]
  ------------------
 3083|      0|                lazy = is_lazy_import_module_level();
 3084|      0|            }
 3085|      0|            break;
 3086|     49|        case PyImport_LAZY_NORMAL:
  ------------------
  |  Branch (3086:9): [True: 49, False: 0]
  ------------------
 3087|     49|            break;
 3088|     49|    }
 3089|       |
 3090|     49|    if (!lazy && mode != PyImport_LAZY_NONE && is_lazy_import_module_level()) {
  ------------------
  |  Branch (3090:9): [True: 45, False: 4]
  |  Branch (3090:18): [True: 45, False: 0]
  |  Branch (3090:48): [True: 45, False: 0]
  ------------------
 3091|       |        // See if __lazy_modules__ forces this to be lazy.
 3092|     45|        lazy = check_lazy_import_compatibility(tstate, globals, name, level);
 3093|     45|        if (lazy < 0) {
  ------------------
  |  Branch (3093:13): [True: 0, False: 45]
  ------------------
 3094|      0|            return NULL;
 3095|      0|        }
 3096|     45|    }
 3097|       |
 3098|     49|    if (!lazy) {
  ------------------
  |  Branch (3098:9): [True: 45, False: 4]
  ------------------
 3099|       |        // Not a lazy import or lazy imports are disabled, fallback to the
 3100|       |        // regular import.
 3101|     45|        return _PyEval_ImportName(tstate, builtins, globals, locals,
 3102|     45|                                  name, fromlist, level);
 3103|     45|    }
 3104|       |
 3105|      4|    PyObject *lazy_import_func;
 3106|      4|    if (PyMapping_GetOptionalItem(builtins, &_Py_ID(__lazy_import__),
  ------------------
  |  |  917|      4|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      4|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      4|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3106:9): [True: 0, False: 4]
  ------------------
 3107|      4|                                  &lazy_import_func) < 0) {
 3108|      0|        goto error;
 3109|      0|    }
 3110|      4|    if (lazy_import_func == NULL) {
  ------------------
  |  Branch (3110:9): [True: 0, False: 4]
  ------------------
 3111|      0|        assert(!PyErr_Occurred());
  ------------------
  |  Branch (3111:9): [True: 0, False: 0]
  ------------------
 3112|      0|        _PyErr_SetString(tstate, PyExc_ImportError,
 3113|      0|                         "__lazy_import__ not found");
 3114|      0|        goto error;
 3115|      0|    }
 3116|       |
 3117|      4|    if (locals == NULL) {
  ------------------
  |  Branch (3117:9): [True: 0, False: 4]
  ------------------
 3118|      0|        locals = Py_None;
  ------------------
  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  ------------------
 3119|      0|    }
 3120|       |
 3121|      4|    if (_PyImport_IsDefaultLazyImportFunc(tstate->interp, lazy_import_func)) {
  ------------------
  |  Branch (3121:9): [True: 4, False: 0]
  ------------------
 3122|      4|        int ilevel = PyLong_AsInt(level);
 3123|      4|        if (ilevel == -1 && PyErr_Occurred()) {
  ------------------
  |  Branch (3123:13): [True: 0, False: 4]
  |  Branch (3123:29): [True: 0, False: 0]
  ------------------
 3124|      0|            goto error;
 3125|      0|        }
 3126|       |
 3127|      4|        res = _PyImport_LazyImportModuleLevelObject(
 3128|      4|            tstate, name, builtins, globals, locals, fromlist, ilevel
 3129|      4|        );
 3130|      4|        goto error;
 3131|      4|    }
 3132|       |
 3133|      0|    PyObject *args[6] = {name, globals, locals, fromlist, level, builtins};
 3134|      0|    res = PyObject_Vectorcall(lazy_import_func, args, 6, NULL);
 3135|      4|error:
 3136|       |    Py_XDECREF(lazy_import_func);
  ------------------
  |  |   69|      4|    do { \
  |  |   70|      4|        PyObject *xop = _PyObject_CAST(arg); \
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   71|      4|        if (xop != NULL) { \
  |  |  ------------------
  |  |  |  Branch (71:13): [True: 4, False: 0]
  |  |  ------------------
  |  |   72|      4|            Py_DECREF(xop); \
  |  |  ------------------
  |  |  |  |   80|      4|    do { \
  |  |  |  |   81|      4|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   82|      4|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      4|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 4]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   84|      0|            break; \
  |  |  |  |   85|      0|        } \
  |  |  |  |   86|      4|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      4|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   87|      4|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (87:13): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |   91|      0|        } \
  |  |  |  |   92|      4|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (92:14): [Folded, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   73|      4|        } \
  |  |   74|      4|    } while (0)
  |  |  ------------------
  |  |  |  Branch (74:14): [Folded, False: 4]
  |  |  ------------------
  ------------------
 3137|      4|    return res;
 3138|      0|}
_PyEval_ImportFrom:
 3142|     32|{
 3143|     32|    PyObject *x;
 3144|     32|    PyObject *fullmodname, *mod_name, *origin, *mod_name_or_unknown, *errmsg, *spec;
 3145|       |
 3146|     32|    if (PyObject_GetOptionalAttr(v, name, &x) != 0) {
  ------------------
  |  Branch (3146:9): [True: 32, False: 0]
  ------------------
 3147|     32|        return x;
 3148|     32|    }
 3149|       |    /* Issue #17636: in case this failed because of a circular relative
 3150|       |       import, try to fallback on reading the module directly from
 3151|       |       sys.modules. */
 3152|      0|    if (PyObject_GetOptionalAttr(v, &_Py_ID(__name__), &mod_name) < 0) {
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3152:9): [True: 0, False: 0]
  ------------------
 3153|      0|        return NULL;
 3154|      0|    }
 3155|      0|    if (mod_name == NULL || !PyUnicode_Check(mod_name)) {
  ------------------
  |  |  103|      0|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (3155:9): [True: 0, False: 0]
  |  Branch (3155:29): [True: 0, False: 0]
  ------------------
 3156|      0|        Py_CLEAR(mod_name);
  ------------------
  |  |  484|      0|    do { \
  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |   80|      0|    do { \
  |  |  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   84|      0|            break; \
  |  |  |  |   85|      0|        } \
  |  |  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |   91|      0|        } \
  |  |  |  |   92|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3157|      0|        goto error;
 3158|      0|    }
 3159|      0|    fullmodname = PyUnicode_FromFormat("%U.%U", mod_name, name);
 3160|      0|    if (fullmodname == NULL) {
  ------------------
  |  Branch (3160:9): [True: 0, False: 0]
  ------------------
 3161|      0|        Py_DECREF(mod_name);
  ------------------
  |  |   80|      0|    do { \
  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  ------------------
  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   84|      0|            break; \
  |  |   85|      0|        } \
  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  ------------------
  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  ------------------
  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  ------------------
  |  |  |  |  112|      0|    do { \
  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  117|      0|        } \
  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   90|      0|            (*dealloc)(op); \
  |  |   91|      0|        } \
  |  |   92|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3162|      0|        return NULL;
 3163|      0|    }
 3164|      0|    x = PyImport_GetModule(fullmodname);
 3165|      0|    Py_DECREF(fullmodname);
  ------------------
  |  |   80|      0|    do { \
  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  ------------------
  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   84|      0|            break; \
  |  |   85|      0|        } \
  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  ------------------
  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  ------------------
  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  ------------------
  |  |  |  |  112|      0|    do { \
  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  117|      0|        } \
  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   90|      0|            (*dealloc)(op); \
  |  |   91|      0|        } \
  |  |   92|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3166|      0|    if (x == NULL && !_PyErr_Occurred(tstate)) {
  ------------------
  |  Branch (3166:9): [True: 0, False: 0]
  |  Branch (3166:22): [True: 0, False: 0]
  ------------------
 3167|      0|        goto error;
 3168|      0|    }
 3169|      0|    Py_DECREF(mod_name);
  ------------------
  |  |   80|      0|    do { \
  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  ------------------
  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   84|      0|            break; \
  |  |   85|      0|        } \
  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  ------------------
  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  ------------------
  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  ------------------
  |  |  |  |  112|      0|    do { \
  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  117|      0|        } \
  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   90|      0|            (*dealloc)(op); \
  |  |   91|      0|        } \
  |  |   92|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3170|      0|    return x;
 3171|       |
 3172|      0| error:
 3173|      0|    if (mod_name == NULL) {
  ------------------
  |  Branch (3173:9): [True: 0, False: 0]
  ------------------
 3174|      0|        mod_name_or_unknown = PyUnicode_FromString("<unknown module name>");
 3175|      0|        if (mod_name_or_unknown == NULL) {
  ------------------
  |  Branch (3175:13): [True: 0, False: 0]
  ------------------
 3176|      0|            return NULL;
 3177|      0|        }
 3178|      0|    } else {
 3179|      0|        mod_name_or_unknown = mod_name;
 3180|      0|    }
 3181|       |    // mod_name is no longer an owned reference
 3182|      0|    assert(mod_name_or_unknown);
  ------------------
  |  Branch (3182:5): [True: 0, False: 0]
  ------------------
 3183|      0|    assert(mod_name == NULL || mod_name == mod_name_or_unknown);
  ------------------
  |  Branch (3183:5): [True: 0, False: 0]
  |  Branch (3183:5): [True: 0, False: 0]
  ------------------
 3184|       |
 3185|      0|    origin = NULL;
 3186|      0|    if (PyObject_GetOptionalAttr(v, &_Py_ID(__spec__), &spec) < 0) {
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3186:9): [True: 0, False: 0]
  ------------------
 3187|      0|        Py_DECREF(mod_name_or_unknown);
  ------------------
  |  |   80|      0|    do { \
  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  ------------------
  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   84|      0|            break; \
  |  |   85|      0|        } \
  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  ------------------
  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  ------------------
  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  ------------------
  |  |  |  |  112|      0|    do { \
  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  117|      0|        } \
  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   90|      0|            (*dealloc)(op); \
  |  |   91|      0|        } \
  |  |   92|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3188|      0|        return NULL;
 3189|      0|    }
 3190|      0|    if (spec == NULL) {
  ------------------
  |  Branch (3190:9): [True: 0, False: 0]
  ------------------
 3191|      0|        errmsg = PyUnicode_FromFormat(
 3192|      0|            "cannot import name %R from %R (unknown location)",
 3193|      0|            name, mod_name_or_unknown
 3194|      0|        );
 3195|      0|        goto done_with_errmsg;
 3196|      0|    }
 3197|      0|    if (_PyModuleSpec_GetFileOrigin(spec, &origin) < 0) {
  ------------------
  |  Branch (3197:9): [True: 0, False: 0]
  ------------------
 3198|      0|        goto done;
 3199|      0|    }
 3200|       |
 3201|      0|    int is_possibly_shadowing = _PyModule_IsPossiblyShadowing(origin);
 3202|      0|    if (is_possibly_shadowing < 0) {
  ------------------
  |  Branch (3202:9): [True: 0, False: 0]
  ------------------
 3203|      0|        goto done;
 3204|      0|    }
 3205|      0|    int is_possibly_shadowing_stdlib = 0;
 3206|      0|    if (is_possibly_shadowing) {
  ------------------
  |  Branch (3206:9): [True: 0, False: 0]
  ------------------
 3207|      0|        PyObject *stdlib_modules;
 3208|      0|        if (PySys_GetOptionalAttrString("stdlib_module_names", &stdlib_modules) < 0) {
  ------------------
  |  Branch (3208:13): [True: 0, False: 0]
  ------------------
 3209|      0|            goto done;
 3210|      0|        }
 3211|      0|        if (stdlib_modules && PyAnySet_Check(stdlib_modules)) {
  ------------------
  |  |   31|      0|    (Py_IS_TYPE((ob), &PySet_Type) || Py_IS_TYPE((ob), &PyFrozenSet_Type) || \
  |  |  ------------------
  |  |  |  |   65|      0|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (65:5): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (Py_IS_TYPE((ob), &PySet_Type) || Py_IS_TYPE((ob), &PyFrozenSet_Type) || \
  |  |  ------------------
  |  |  |  |   65|      0|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (65:5): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   32|      0|      PyType_IsSubtype(Py_TYPE(ob), &PySet_Type) || \
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (32:7): [True: 0, False: 0]
  |  |  ------------------
  |  |   33|      0|      PyType_IsSubtype(Py_TYPE(ob), &PyFrozenSet_Type))
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (33:7): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (3211:13): [True: 0, False: 0]
  ------------------
 3212|      0|            is_possibly_shadowing_stdlib = PySet_Contains(stdlib_modules, mod_name_or_unknown);
 3213|      0|            if (is_possibly_shadowing_stdlib < 0) {
  ------------------
  |  Branch (3213:17): [True: 0, False: 0]
  ------------------
 3214|      0|                Py_DECREF(stdlib_modules);
  ------------------
  |  |   80|      0|    do { \
  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  ------------------
  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   84|      0|            break; \
  |  |   85|      0|        } \
  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  ------------------
  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  ------------------
  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  ------------------
  |  |  |  |  112|      0|    do { \
  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  117|      0|        } \
  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   90|      0|            (*dealloc)(op); \
  |  |   91|      0|        } \
  |  |   92|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3215|      0|                goto done;
 3216|      0|            }
 3217|      0|        }
 3218|      0|        Py_XDECREF(stdlib_modules);
  ------------------
  |  |   69|      0|    do { \
  |  |   70|      0|        PyObject *xop = _PyObject_CAST(arg); \
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   71|      0|        if (xop != NULL) { \
  |  |  ------------------
  |  |  |  Branch (71:13): [True: 0, False: 0]
  |  |  ------------------
  |  |   72|      0|            Py_DECREF(xop); \
  |  |  ------------------
  |  |  |  |   80|      0|    do { \
  |  |  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   84|      0|            break; \
  |  |  |  |   85|      0|        } \
  |  |  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |   91|      0|        } \
  |  |  |  |   92|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   73|      0|        } \
  |  |   74|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (74:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3219|      0|    }
 3220|       |
 3221|      0|    if (origin == NULL && PyModule_Check(v)) {
  ------------------
  |  |   12|      0|#define PyModule_Check(op) PyObject_TypeCheck((op), &PyModule_Type)
  |  |  ------------------
  |  |  |  |  378|      0|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (378:40): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3221:9): [True: 0, False: 0]
  ------------------
 3222|       |        // Fall back to __file__ for diagnostics if we don't have
 3223|       |        // an origin that is a location
 3224|      0|        origin = PyModule_GetFilenameObject(v);
 3225|      0|        if (origin == NULL) {
  ------------------
  |  Branch (3225:13): [True: 0, False: 0]
  ------------------
 3226|      0|            if (!PyErr_ExceptionMatches(PyExc_SystemError)) {
  ------------------
  |  Branch (3226:17): [True: 0, False: 0]
  ------------------
 3227|      0|                goto done;
 3228|      0|            }
 3229|       |            // PyModule_GetFilenameObject raised "module filename missing"
 3230|      0|            _PyErr_Clear(tstate);
 3231|      0|        }
 3232|      0|        assert(origin == NULL || PyUnicode_Check(origin));
  ------------------
  |  Branch (3232:9): [True: 0, False: 0]
  |  Branch (3232:9): [True: 0, False: 0]
  ------------------
 3233|      0|    }
 3234|       |
 3235|      0|    if (is_possibly_shadowing_stdlib) {
  ------------------
  |  Branch (3235:9): [True: 0, False: 0]
  ------------------
 3236|      0|        assert(origin);
  ------------------
  |  Branch (3236:9): [True: 0, False: 0]
  ------------------
 3237|      0|        errmsg = PyUnicode_FromFormat(
 3238|      0|            "cannot import name %R from %R "
 3239|      0|            "(consider renaming %R since it has the same "
 3240|      0|            "name as the standard library module named %R "
 3241|      0|            "and prevents importing that standard library module)",
 3242|      0|            name, mod_name_or_unknown, origin, mod_name_or_unknown
 3243|      0|        );
 3244|      0|    }
 3245|      0|    else {
 3246|      0|        int rc = _PyModuleSpec_IsInitializing(spec);
 3247|      0|        if (rc < 0) {
  ------------------
  |  Branch (3247:13): [True: 0, False: 0]
  ------------------
 3248|      0|            goto done;
 3249|      0|        }
 3250|      0|        else if (rc > 0) {
  ------------------
  |  Branch (3250:18): [True: 0, False: 0]
  ------------------
 3251|      0|            if (is_possibly_shadowing) {
  ------------------
  |  Branch (3251:17): [True: 0, False: 0]
  ------------------
 3252|      0|                assert(origin);
  ------------------
  |  Branch (3252:17): [True: 0, False: 0]
  ------------------
 3253|       |                // For non-stdlib modules, only mention the possibility of
 3254|       |                // shadowing if the module is being initialized.
 3255|      0|                errmsg = PyUnicode_FromFormat(
 3256|      0|                    "cannot import name %R from %R "
 3257|      0|                    "(consider renaming %R if it has the same name "
 3258|      0|                    "as a library you intended to import)",
 3259|      0|                    name, mod_name_or_unknown, origin
 3260|      0|                );
 3261|      0|            }
 3262|      0|            else if (origin) {
  ------------------
  |  Branch (3262:22): [True: 0, False: 0]
  ------------------
 3263|      0|                errmsg = PyUnicode_FromFormat(
 3264|      0|                    "cannot import name %R from partially initialized module %R "
 3265|      0|                    "(most likely due to a circular import) (%S)",
 3266|      0|                    name, mod_name_or_unknown, origin
 3267|      0|                );
 3268|      0|            }
 3269|      0|            else {
 3270|      0|                errmsg = PyUnicode_FromFormat(
 3271|      0|                    "cannot import name %R from partially initialized module %R "
 3272|      0|                    "(most likely due to a circular import)",
 3273|      0|                    name, mod_name_or_unknown
 3274|      0|                );
 3275|      0|            }
 3276|      0|        }
 3277|      0|        else {
 3278|      0|            assert(rc == 0);
  ------------------
  |  Branch (3278:13): [True: 0, False: 0]
  ------------------
 3279|      0|            if (origin) {
  ------------------
  |  Branch (3279:17): [True: 0, False: 0]
  ------------------
 3280|      0|                errmsg = PyUnicode_FromFormat(
 3281|      0|                    "cannot import name %R from %R (%S)",
 3282|      0|                    name, mod_name_or_unknown, origin
 3283|      0|                );
 3284|      0|            }
 3285|      0|            else {
 3286|      0|                errmsg = PyUnicode_FromFormat(
 3287|      0|                    "cannot import name %R from %R (unknown location)",
 3288|      0|                    name, mod_name_or_unknown
 3289|      0|                );
 3290|      0|            }
 3291|      0|        }
 3292|      0|    }
 3293|       |
 3294|      0|done_with_errmsg:
 3295|      0|    if (errmsg != NULL) {
  ------------------
  |  Branch (3295:9): [True: 0, False: 0]
  ------------------
 3296|       |        /* NULL checks for mod_name and origin done by _PyErr_SetImportErrorWithNameFrom */
 3297|      0|        _PyErr_SetImportErrorWithNameFrom(errmsg, mod_name, origin, name);
 3298|      0|        Py_DECREF(errmsg);
  ------------------
  |  |   80|      0|    do { \
  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  ------------------
  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   84|      0|            break; \
  |  |   85|      0|        } \
  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  ------------------
  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  ------------------
  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  ------------------
  |  |  |  |  112|      0|    do { \
  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  117|      0|        } \
  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   90|      0|            (*dealloc)(op); \
  |  |   91|      0|        } \
  |  |   92|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3299|      0|    }
 3300|       |
 3301|      0|done:
 3302|      0|    Py_XDECREF(origin);
  ------------------
  |  |   69|      0|    do { \
  |  |   70|      0|        PyObject *xop = _PyObject_CAST(arg); \
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   71|      0|        if (xop != NULL) { \
  |  |  ------------------
  |  |  |  Branch (71:13): [True: 0, False: 0]
  |  |  ------------------
  |  |   72|      0|            Py_DECREF(xop); \
  |  |  ------------------
  |  |  |  |   80|      0|    do { \
  |  |  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   84|      0|            break; \
  |  |  |  |   85|      0|        } \
  |  |  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |   91|      0|        } \
  |  |  |  |   92|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   73|      0|        } \
  |  |   74|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (74:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3303|      0|    Py_XDECREF(spec);
  ------------------
  |  |   69|      0|    do { \
  |  |   70|      0|        PyObject *xop = _PyObject_CAST(arg); \
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   71|      0|        if (xop != NULL) { \
  |  |  ------------------
  |  |  |  Branch (71:13): [True: 0, False: 0]
  |  |  ------------------
  |  |   72|      0|            Py_DECREF(xop); \
  |  |  ------------------
  |  |  |  |   80|      0|    do { \
  |  |  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   84|      0|            break; \
  |  |  |  |   85|      0|        } \
  |  |  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |   91|      0|        } \
  |  |  |  |   92|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   73|      0|        } \
  |  |   74|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (74:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3304|      0|    Py_DECREF(mod_name_or_unknown);
  ------------------
  |  |   80|      0|    do { \
  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  ------------------
  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   84|      0|            break; \
  |  |   85|      0|        } \
  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  ------------------
  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  ------------------
  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  ------------------
  |  |  |  |  112|      0|    do { \
  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  117|      0|        } \
  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   90|      0|            (*dealloc)(op); \
  |  |   91|      0|        } \
  |  |   92|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3305|       |    return NULL;
 3306|      0|}
_PyEval_CheckExceptTypeValid:
 3374|     89|{
 3375|     89|    if (PyTuple_Check(right)) {
  ------------------
  |  |   27|     89|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TUPLE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     89|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 7, False: 82]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3376|      7|        Py_ssize_t i, length;
 3377|      7|        length = PyTuple_GET_SIZE(right);
  ------------------
  |  |   27|      7|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      7|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3378|     21|        for (i = 0; i < length; i++) {
  ------------------
  |  Branch (3378:21): [True: 14, False: 7]
  ------------------
 3379|     14|            PyObject *exc = PyTuple_GET_ITEM(right, i);
  ------------------
  |  |   29|     14|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|     14|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     14|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3379:29): [True: 14, False: 0]
  ------------------
 3380|     14|            if (!PyExceptionClass_Check(exc)) {
  ------------------
  |  |   61|     14|    (PyType_Check((x)) &&                                               \
  |  |  ------------------
  |  |  |  |  766|     28|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     14|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     14|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (766:28): [True: 14, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   62|     14|     PyType_FastSubclass((PyTypeObject*)(x), Py_TPFLAGS_BASE_EXC_SUBCLASS))
  |  |  ------------------
  |  |  |  |  760|     14|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 14, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3381|      0|                _PyErr_SetString(tstate, PyExc_TypeError,
 3382|      0|                    CANNOT_CATCH_MSG);
  ------------------
  |  | 3366|      0|#define CANNOT_CATCH_MSG "catching classes that do not inherit from "\
  |  | 3367|      0|                         "BaseException is not allowed"
  ------------------
 3383|      0|                return -1;
 3384|      0|            }
 3385|     14|        }
 3386|      7|    }
 3387|     82|    else {
 3388|     82|        if (!PyExceptionClass_Check(right)) {
  ------------------
  |  |   61|     82|    (PyType_Check((x)) &&                                               \
  |  |  ------------------
  |  |  |  |  766|    164|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     82|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     82|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (766:28): [True: 82, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   62|     82|     PyType_FastSubclass((PyTypeObject*)(x), Py_TPFLAGS_BASE_EXC_SUBCLASS))
  |  |  ------------------
  |  |  |  |  760|     82|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 82, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3389|      0|            _PyErr_SetString(tstate, PyExc_TypeError,
 3390|      0|                CANNOT_CATCH_MSG);
  ------------------
  |  | 3366|      0|#define CANNOT_CATCH_MSG "catching classes that do not inherit from "\
  |  | 3367|      0|                         "BaseException is not allowed"
  ------------------
 3391|      0|            return -1;
 3392|      0|        }
 3393|     82|    }
 3394|     89|    return 0;
 3395|     89|}
_Py_Check_ArgsIterable:
 3436|      1|{
 3437|      1|    if (Py_TYPE(args)->tp_iter == NULL && !PySequence_Check(args)) {
  ------------------
  |  |  213|      1|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3437:9): [True: 0, False: 1]
  |  Branch (3437:43): [True: 0, False: 0]
  ------------------
 3438|      0|        _PyErr_Format(tstate, PyExc_TypeError,
 3439|      0|                      "Value after * must be an iterable, not %.200s",
 3440|      0|                      Py_TYPE(args)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3441|      0|        return -1;
 3442|      0|    }
 3443|      1|    return 0;
 3444|      1|}
_PyEval_LoadGlobalStackRef:
 3630|    949|{
 3631|    949|    if (PyAnyDict_CheckExact(globals) && PyAnyDict_CheckExact(builtins)) {
  ------------------
  |  |   41|  1.89k|    (PyDict_CheckExact(ob) || PyFrozenDict_CheckExact(ob))
  |  |  ------------------
  |  |  |  |   19|    949|#define PyDict_CheckExact(op) Py_IS_TYPE((op), &PyDict_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|  1.89k|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|    949|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|    949|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (65:5): [True: 949, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (PyDict_CheckExact(ob) || PyFrozenDict_CheckExact(ob))
  |  |  ------------------
  |  |  |  |   38|      0|#define PyFrozenDict_CheckExact(op) Py_IS_TYPE((op), &PyFrozenDict_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      0|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (65:5): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  if (PyAnyDict_CheckExact(globals) && PyAnyDict_CheckExact(builtins)) {
  ------------------
  |  |   41|    949|    (PyDict_CheckExact(ob) || PyFrozenDict_CheckExact(ob))
  |  |  ------------------
  |  |  |  |   19|    949|#define PyDict_CheckExact(op) Py_IS_TYPE((op), &PyDict_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|  1.89k|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|    949|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|    949|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (65:5): [True: 949, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (PyDict_CheckExact(ob) || PyFrozenDict_CheckExact(ob))
  |  |  ------------------
  |  |  |  |   38|      0|#define PyFrozenDict_CheckExact(op) Py_IS_TYPE((op), &PyFrozenDict_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      0|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (65:5): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3632|    949|        _PyDict_LoadGlobalStackRef((PyDictObject *)globals,
 3633|    949|                                    (PyDictObject *)builtins,
 3634|    949|                                    name, writeto);
 3635|    949|        if (PyStackRef_IsNull(*writeto) && !PyErr_Occurred()) {
  ------------------
  |  |  470|  1.89k|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  ------------------
  |  |  |  |  467|    949|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    949|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (470:32): [True: 0, False: 949]
  |  |  ------------------
  ------------------
  |  Branch (3635:44): [True: 0, False: 0]
  ------------------
 3636|       |            /* _PyDict_LoadGlobal() returns NULL without raising
 3637|       |                * an exception if the key doesn't exist */
 3638|      0|            _PyEval_FormatExcCheckArg(PyThreadState_GET(), PyExc_NameError,
  ------------------
  |  |   63|      0|#define PyThreadState_GET() PyThreadState_Get()
  ------------------
 3639|      0|                                        NAME_ERROR_MSG, name);
  ------------------
  |  |  384|      0|#define NAME_ERROR_MSG "name '%.200s' is not defined"
  ------------------
 3640|      0|        }
 3641|    949|    }
 3642|      0|    else {
 3643|       |        /* Slow-path if globals or builtins is not a dict */
 3644|       |        /* namespace 1: globals */
 3645|      0|        PyObject *res;
 3646|      0|        if (PyMapping_GetOptionalItem(globals, name, &res) < 0) {
  ------------------
  |  Branch (3646:13): [True: 0, False: 0]
  ------------------
 3647|      0|            *writeto = PyStackRef_NULL;
 3648|      0|            return;
 3649|      0|        }
 3650|      0|        if (res == NULL) {
  ------------------
  |  Branch (3650:13): [True: 0, False: 0]
  ------------------
 3651|       |            /* namespace 2: builtins */
 3652|      0|            if (PyMapping_GetOptionalItem(builtins, name, &res) < 0) {
  ------------------
  |  Branch (3652:17): [True: 0, False: 0]
  ------------------
 3653|      0|                *writeto = PyStackRef_NULL;
 3654|      0|                return;
 3655|      0|            }
 3656|      0|            if (res == NULL) {
  ------------------
  |  Branch (3656:17): [True: 0, False: 0]
  ------------------
 3657|      0|                _PyEval_FormatExcCheckArg(
 3658|      0|                            PyThreadState_GET(), PyExc_NameError,
  ------------------
  |  |   63|      0|#define PyThreadState_GET() PyThreadState_Get()
  ------------------
 3659|      0|                            NAME_ERROR_MSG, name);
  ------------------
  |  |  384|      0|#define NAME_ERROR_MSG "name '%.200s' is not defined"
  ------------------
 3660|      0|                *writeto = PyStackRef_NULL;
 3661|      0|                return;
 3662|      0|            }
 3663|      0|        }
 3664|      0|        *writeto = PyStackRef_FromPyObjectSteal(res);
 3665|      0|    }
 3666|       |
 3667|    949|    PyObject *res_o = PyStackRef_AsPyObjectBorrow(*writeto);
 3668|    949|    if (res_o != NULL && PyLazyImport_CheckExact(res_o)) {
  ------------------
  |  |   15|    949|#define PyLazyImport_CheckExact(op) Py_IS_TYPE((op), &PyLazyImport_Type)
  |  |  ------------------
  |  |  |  |   65|    949|    (_PyObject_CAST(ob)->ob_type == (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    949|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    949|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (65:5): [True: 0, False: 949]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3668:9): [True: 949, False: 0]
  ------------------
 3669|      0|        PyObject *l_v = _PyImport_LoadLazyImportTstate(PyThreadState_GET(), res_o);
  ------------------
  |  |   63|      0|#define PyThreadState_GET() PyThreadState_Get()
  ------------------
 3670|      0|        PyStackRef_CLOSE(writeto[0]);
 3671|      0|        if (l_v == NULL) {
  ------------------
  |  Branch (3671:13): [True: 0, False: 0]
  ------------------
 3672|      0|            assert(PyErr_Occurred());
  ------------------
  |  Branch (3672:13): [True: 0, False: 0]
  ------------------
 3673|      0|            *writeto = PyStackRef_NULL;
 3674|      0|            return;
 3675|      0|        }
 3676|      0|        int err = PyDict_SetItem(globals, name, l_v);
 3677|      0|        if (err < 0) {
  ------------------
  |  Branch (3677:13): [True: 0, False: 0]
  ------------------
 3678|      0|            Py_DECREF(l_v);
  ------------------
  |  |   80|      0|    do { \
  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  ------------------
  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   84|      0|            break; \
  |  |   85|      0|        } \
  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  ------------------
  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  ------------------
  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  ------------------
  |  |  |  |  112|      0|    do { \
  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  117|      0|        } \
  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   90|      0|            (*dealloc)(op); \
  |  |   91|      0|        } \
  |  |   92|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3679|      0|            *writeto = PyStackRef_NULL;
 3680|      0|            return;
 3681|      0|        }
 3682|      0|        *writeto = PyStackRef_FromPyObjectSteal(l_v);
 3683|      0|    }
 3684|    949|}
_PyEval_LoadName:
 3712|    835|{
 3713|       |
 3714|    835|    PyObject *value;
 3715|    835|    if (frame->f_locals == NULL) {
  ------------------
  |  Branch (3715:9): [True: 0, False: 835]
  ------------------
 3716|      0|        _PyErr_SetString(tstate, PyExc_SystemError,
 3717|      0|                            "no locals found");
 3718|      0|        return NULL;
 3719|      0|    }
 3720|    835|    if (PyMapping_GetOptionalItem(frame->f_locals, name, &value) < 0) {
  ------------------
  |  Branch (3720:9): [True: 0, False: 835]
  ------------------
 3721|      0|        return NULL;
 3722|      0|    }
 3723|    835|    if (value != NULL) {
  ------------------
  |  Branch (3723:9): [True: 539, False: 296]
  ------------------
 3724|    539|        return value;
 3725|    539|    }
 3726|    296|    if (PyDict_GetItemRef(frame->f_globals, name, &value) < 0) {
  ------------------
  |  Branch (3726:9): [True: 0, False: 296]
  ------------------
 3727|      0|        return NULL;
 3728|      0|    }
 3729|    296|    if (value != NULL) {
  ------------------
  |  Branch (3729:9): [True: 132, False: 164]
  ------------------
 3730|    132|        return value;
 3731|    132|    }
 3732|    164|    if (PyMapping_GetOptionalItem(frame->f_builtins, name, &value) < 0) {
  ------------------
  |  Branch (3732:9): [True: 0, False: 164]
  ------------------
 3733|      0|        return NULL;
 3734|      0|    }
 3735|    164|    if (value == NULL) {
  ------------------
  |  Branch (3735:9): [True: 0, False: 164]
  ------------------
 3736|      0|        _PyEval_FormatExcCheckArg(
 3737|      0|                    tstate, PyExc_NameError,
 3738|      0|                    NAME_ERROR_MSG, name);
  ------------------
  |  |  384|      0|#define NAME_ERROR_MSG "name '%.200s' is not defined"
  ------------------
 3739|      0|    }
 3740|    164|    return value;
 3741|    164|}
_PyForIter_VirtualIteratorNext:
 3744|     54|{
 3745|     54|    PyObject *iter_o = PyStackRef_AsPyObjectBorrow(iter);
 3746|     54|    _PyStackRef index = *index_ptr;
 3747|     54|    if (PyStackRef_IsTaggedInt(index)) {
  ------------------
  |  Branch (3747:9): [True: 38, False: 16]
  ------------------
 3748|     38|        intptr_t i = PyStackRef_UntagInt(index);
 3749|     38|        assert(i >= 0);
  ------------------
  |  Branch (3749:9): [True: 38, False: 0]
  ------------------
 3750|     38|        _PyObjectIndexPair next_index = Py_TYPE(iter_o)->_tp_iteritem(iter_o, i);
  ------------------
  |  |  213|     38|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     38|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     38|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3751|     38|        i = next_index.index;
 3752|     38|        PyObject *next = next_index.object;
 3753|     38|        if (next == NULL) {
  ------------------
  |  Branch (3753:13): [True: 6, False: 32]
  ------------------
 3754|      6|            return i < 0 ? PyStackRef_ERROR : PyStackRef_NULL;
  ------------------
  |  Branch (3754:20): [True: 0, False: 6]
  ------------------
 3755|      6|        }
 3756|     32|        *index_ptr = PyStackRef_TagInt(i);
 3757|     32|        return PyStackRef_FromPyObjectSteal(next);
 3758|     38|    }
 3759|     16|    PyObject *next = (*Py_TYPE(iter_o)->tp_iternext)(iter_o);
  ------------------
  |  |  213|     16|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     16|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     16|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3760|     16|    if (next == NULL) {
  ------------------
  |  Branch (3760:9): [True: 6, False: 10]
  ------------------
 3761|      6|        if (_PyErr_Occurred(tstate)) {
  ------------------
  |  Branch (3761:13): [True: 0, False: 6]
  ------------------
 3762|      0|            if (_PyErr_ExceptionMatches(tstate, PyExc_StopIteration)) {
  ------------------
  |  Branch (3762:17): [True: 0, False: 0]
  ------------------
 3763|      0|                _PyEval_MonitorRaise(tstate, frame, frame->instr_ptr);
 3764|      0|                _PyErr_Clear(tstate);
 3765|      0|            }
 3766|      0|            else {
 3767|      0|                return PyStackRef_ERROR;
 3768|      0|            }
 3769|      0|        }
 3770|      6|        return PyStackRef_NULL;
 3771|      6|    }
 3772|     10|    return PyStackRef_FromPyObjectSteal(next);
 3773|     16|}
ceval.c:hardware_stack_limits:
  140|      1|{
  141|       |#ifdef WIN32
  142|       |    ULONG_PTR low, high;
  143|       |    GetCurrentThreadStackLimits(&low, &high);
  144|       |    *top = (uintptr_t)high;
  145|       |    ULONG guarantee = 0;
  146|       |    SetThreadStackGuarantee(&guarantee);
  147|       |    *base = (uintptr_t)low + guarantee;
  148|       |#elif defined(__APPLE__)
  149|       |    pthread_t this_thread = pthread_self();
  150|       |    void *stack_addr = pthread_get_stackaddr_np(this_thread); // top of the stack
  151|       |    size_t stack_size = pthread_get_stacksize_np(this_thread);
  152|       |    *top = (uintptr_t)stack_addr;
  153|       |    *base = ((uintptr_t)stack_addr) - stack_size;
  154|       |#else
  155|       |    /// XXX musl supports HAVE_PTHRED_GETATTR_NP, but the resulting stack size
  156|       |    /// (on alpine at least) is much smaller than expected and imposes undue limits
  157|       |    /// compared to the old stack size estimation.  (We assume musl is not glibc.)
  158|      1|#  if defined(HAVE_PTHREAD_GETATTR_NP) && !defined(_AIX) && \
  159|      1|        !defined(__NetBSD__) && (defined(__GLIBC__) || !defined(__linux__))
  160|      1|    size_t stack_size, guard_size;
  161|      1|    void *stack_addr;
  162|      1|    pthread_attr_t attr;
  163|      1|    int err = pthread_getattr_np(pthread_self(), &attr);
  164|      1|    if (err == 0) {
  ------------------
  |  Branch (164:9): [True: 1, False: 0]
  ------------------
  165|      1|        err = pthread_attr_getguardsize(&attr, &guard_size);
  166|      1|        err |= pthread_attr_getstack(&attr, &stack_addr, &stack_size);
  167|      1|        err |= pthread_attr_destroy(&attr);
  168|      1|    }
  169|      1|    if (err == 0) {
  ------------------
  |  Branch (169:9): [True: 1, False: 0]
  ------------------
  170|      1|        *base = ((uintptr_t)stack_addr) + guard_size;
  171|      1|        *top = (uintptr_t)stack_addr + stack_size;
  172|      1|        return;
  173|      1|    }
  174|      0|#  endif
  175|       |    // Add some space for caller function then round to minimum page size
  176|       |    // This is a guess at the top of the stack, but should be a reasonably
  177|       |    // good guess if called from _PyThreadState_Attach when creating a thread.
  178|       |    // If the thread is attached deep in a call stack, then the guess will be poor.
  179|      0|#if _Py_STACK_GROWS_DOWN
  180|      0|    uintptr_t top_addr = _Py_SIZE_ROUND_UP(sp + 8*sizeof(void*), SYSTEM_PAGE_SIZE);
  ------------------
  |  |  213|      0|#define _Py_SIZE_ROUND_UP(n, a) (((size_t)(n) + \
  |  |  214|      0|        (size_t)((a) - 1)) & ~(size_t)((a) - 1))
  ------------------
  181|      0|    *top = top_addr;
  182|      0|    *base = top_addr - Py_C_STACK_SIZE;
  ------------------
  |  |   77|      0|#  define Py_C_STACK_SIZE 4000000
  ------------------
  183|       |#  else
  184|       |    uintptr_t base_addr = _Py_SIZE_ROUND_DOWN(sp - 8*sizeof(void*), SYSTEM_PAGE_SIZE);
  185|       |    *base = base_addr;
  186|       |    *top = base_addr + Py_C_STACK_SIZE;
  187|       |#endif
  188|      0|#endif
  189|      0|}
ceval.c:tstate_set_stack:
  194|      1|{
  195|      1|    assert(base < top);
  ------------------
  |  Branch (195:5): [True: 1, False: 0]
  ------------------
  196|      1|    assert((top - base) >= _PyOS_MIN_STACK_SIZE);
  ------------------
  |  Branch (196:5): [True: 1, False: 0]
  ------------------
  197|       |
  198|       |#ifdef _Py_THREAD_SANITIZER
  199|       |    // Thread sanitizer crashes if we use more than half the stack.
  200|       |    uintptr_t stacksize = top - base;
  201|       |#  if _Py_STACK_GROWS_DOWN
  202|       |    base += stacksize/2;
  203|       |#  else
  204|       |    top -= stacksize/2;
  205|       |#  endif
  206|       |#endif
  207|      1|    _PyThreadStateImpl *_tstate = (_PyThreadStateImpl *)tstate;
  208|      1|#if _Py_STACK_GROWS_DOWN
  209|      1|    _tstate->c_stack_top = top;
  210|      1|    _tstate->c_stack_hard_limit = base + _PyOS_STACK_MARGIN_BYTES;
  ------------------
  |  |   55|      1|#define _PyOS_STACK_MARGIN_BYTES (_PyOS_STACK_MARGIN * sizeof(void *))
  |  |  ------------------
  |  |  |  |   54|      1|#define _PyOS_STACK_MARGIN (1 << _PyOS_LOG2_STACK_MARGIN)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      1|#  define _PyOS_LOG2_STACK_MARGIN 11
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  211|      1|    _tstate->c_stack_soft_limit = base + _PyOS_STACK_MARGIN_BYTES * 2;
  ------------------
  |  |   55|      1|#define _PyOS_STACK_MARGIN_BYTES (_PyOS_STACK_MARGIN * sizeof(void *))
  |  |  ------------------
  |  |  |  |   54|      1|#define _PyOS_STACK_MARGIN (1 << _PyOS_LOG2_STACK_MARGIN)
  |  |  |  |  ------------------
  |  |  |  |  |  |   52|      1|#  define _PyOS_LOG2_STACK_MARGIN 11
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  212|      1|#  ifndef NDEBUG
  213|       |    // Sanity checks
  214|      1|    _PyThreadStateImpl *ts = (_PyThreadStateImpl *)tstate;
  215|      1|    assert(ts->c_stack_hard_limit <= ts->c_stack_soft_limit);
  ------------------
  |  Branch (215:5): [True: 1, False: 0]
  ------------------
  216|      1|    assert(ts->c_stack_soft_limit < ts->c_stack_top);
  ------------------
  |  Branch (216:5): [True: 1, False: 0]
  ------------------
  217|      1|#  endif
  218|       |#else
  219|       |    _tstate->c_stack_top = base;
  220|       |    _tstate->c_stack_hard_limit = top - _PyOS_STACK_MARGIN_BYTES;
  221|       |    _tstate->c_stack_soft_limit = top - _PyOS_STACK_MARGIN_BYTES * 2;
  222|       |#  ifndef NDEBUG
  223|       |    // Sanity checks
  224|       |    _PyThreadStateImpl *ts = (_PyThreadStateImpl *)tstate;
  225|       |    assert(ts->c_stack_hard_limit >= ts->c_stack_soft_limit);
  226|       |    assert(ts->c_stack_soft_limit > ts->c_stack_top);
  227|       |#  endif
  228|       |#endif
  229|      1|}
ceval.c:clear_thread_frame:
 1956|  1.71k|{
 1957|  1.71k|    assert(frame->owner == FRAME_OWNED_BY_THREAD);
  ------------------
  |  Branch (1957:5): [True: 1.71k, False: 0]
  ------------------
 1958|       |    // Make sure that this is, indeed, the top frame. We can't check this in
 1959|       |    // _PyThreadState_PopFrame, since f_code is already cleared at that point:
 1960|  1.71k|    assert((PyObject **)frame + _PyFrame_GetCode(frame)->co_framesize ==
  ------------------
  |  Branch (1960:5): [True: 1.71k, False: 0]
  ------------------
 1961|  1.71k|        tstate->datastack_top);
 1962|  1.71k|    assert(frame->frame_obj == NULL || frame->frame_obj->f_frame == frame);
  ------------------
  |  Branch (1962:5): [True: 1.61k, False: 93]
  |  Branch (1962:5): [True: 93, False: 0]
  ------------------
 1963|  1.71k|    _PyFrame_ClearExceptCode(frame);
 1964|  1.71k|    PyStackRef_CLEAR(frame->f_executable);
  ------------------
  |  |  711|  1.71k|    do { \
  |  |  712|  1.71k|        _PyStackRef *_tmp_op_ptr = &(REF); \
  |  |  713|  1.71k|        _PyStackRef _tmp_old_op = (*_tmp_op_ptr); \
  |  |  714|  1.71k|        *_tmp_op_ptr = PyStackRef_NULL; \
  |  |  715|  1.71k|        PyStackRef_XCLOSE(_tmp_old_op); \
  |  |  716|  1.71k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (716:14): [Folded, False: 1.71k]
  |  |  ------------------
  ------------------
 1965|  1.71k|    _PyThreadState_PopFrame(tstate, frame);
 1966|  1.71k|}
ceval.c:clear_gen_frame:
 1970|     17|{
 1971|     17|    assert(frame->owner == FRAME_OWNED_BY_GENERATOR);
  ------------------
  |  Branch (1971:5): [True: 17, False: 0]
  ------------------
 1972|     17|    PyGenObject *gen = _PyGen_GetGeneratorFromFrame(frame);
 1973|     17|    FT_ATOMIC_STORE_INT8_RELEASE(gen->gi_frame_state, FRAME_CLEARED);
  ------------------
  |  |  167|     17|#define FT_ATOMIC_STORE_INT8_RELEASE(value, new_value) value = new_value
  ------------------
 1974|     17|    assert(tstate->exc_info == &gen->gi_exc_state);
  ------------------
  |  Branch (1974:5): [True: 17, False: 0]
  ------------------
 1975|     17|    tstate->exc_info = gen->gi_exc_state.previous_item;
 1976|     17|    gen->gi_exc_state.previous_item = NULL;
 1977|     17|    assert(frame->frame_obj == NULL || frame->frame_obj->f_frame == frame);
  ------------------
  |  Branch (1977:5): [True: 17, False: 0]
  |  Branch (1977:5): [True: 0, False: 0]
  ------------------
 1978|     17|    frame->previous = NULL;
 1979|     17|    _PyFrame_ClearExceptCode(frame);
 1980|     17|    _PyErr_ClearExcState(&gen->gi_exc_state);
 1981|       |    // gh-143939: There must not be any escaping calls between setting
 1982|       |    // the generator return kind and returning from _PyEval_EvalFrame.
 1983|     17|    ((_PyThreadStateImpl *)tstate)->generator_return_kind = GENERATOR_RETURN;
 1984|     17|}
ceval.c:initialize_locals:
 1709|  1.11k|{
 1710|  1.11k|    PyCodeObject *co = (PyCodeObject*)func->func_code;
 1711|  1.11k|    const Py_ssize_t total_args = co->co_argcount + co->co_kwonlyargcount;
 1712|       |    /* Create a dictionary for keyword parameters (**kwags) */
 1713|  1.11k|    PyObject *kwdict;
 1714|  1.11k|    Py_ssize_t i;
 1715|  1.11k|    if (co->co_flags & CO_VARKEYWORDS) {
  ------------------
  |  |  121|  1.11k|#define CO_VARKEYWORDS  0x0008
  ------------------
  |  Branch (1715:9): [True: 138, False: 977]
  ------------------
 1716|    138|        kwdict = PyDict_New();
 1717|    138|        if (kwdict == NULL) {
  ------------------
  |  Branch (1717:13): [True: 0, False: 138]
  ------------------
 1718|      0|            goto fail_pre_positional;
 1719|      0|        }
 1720|    138|        i = total_args;
 1721|    138|        if (co->co_flags & CO_VARARGS) {
  ------------------
  |  |  120|    138|#define CO_VARARGS      0x0004
  ------------------
  |  Branch (1721:13): [True: 108, False: 30]
  ------------------
 1722|    108|            i++;
 1723|    108|        }
 1724|    138|        assert(PyStackRef_IsNull(localsplus[i]));
  ------------------
  |  Branch (1724:9): [True: 138, False: 0]
  ------------------
 1725|    138|        localsplus[i] = PyStackRef_FromPyObjectSteal(kwdict);
 1726|    138|    }
 1727|    977|    else {
 1728|    977|        kwdict = NULL;
 1729|    977|    }
 1730|       |
 1731|       |    /* Copy all positional arguments into local variables */
 1732|  1.11k|    Py_ssize_t j, n;
 1733|  1.11k|    if (argcount > co->co_argcount) {
  ------------------
  |  Branch (1733:9): [True: 243, False: 872]
  ------------------
 1734|    243|        n = co->co_argcount;
 1735|    243|    }
 1736|    872|    else {
 1737|    872|        n = argcount;
 1738|    872|    }
 1739|  2.84k|    for (j = 0; j < n; j++) {
  ------------------
  |  Branch (1739:17): [True: 1.73k, False: 1.11k]
  ------------------
 1740|  1.73k|        assert(PyStackRef_IsNull(localsplus[j]));
  ------------------
  |  Branch (1740:9): [True: 1.73k, False: 0]
  ------------------
 1741|  1.73k|        localsplus[j] = args[j];
 1742|  1.73k|    }
 1743|       |
 1744|       |    /* Pack other positional arguments into the *args argument */
 1745|  1.11k|    if (co->co_flags & CO_VARARGS) {
  ------------------
  |  |  120|  1.11k|#define CO_VARARGS      0x0004
  ------------------
  |  Branch (1745:9): [True: 247, False: 868]
  ------------------
 1746|    247|        PyObject *u = NULL;
 1747|    247|        if (argcount == n) {
  ------------------
  |  Branch (1747:13): [True: 4, False: 243]
  ------------------
 1748|      4|            u = (PyObject *)&_Py_SINGLETON(tuple_empty);
  ------------------
  |  |   18|      4|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  ------------------
  |  |  |  |   16|      4|    _PyRuntime.static_objects.NAME
  |  |  ------------------
  ------------------
 1749|      4|        }
 1750|    243|        else {
 1751|    243|            u = _PyTuple_FromStackRefStealOnSuccess(args + n, argcount - n);
 1752|    243|            if (u == NULL) {
  ------------------
  |  Branch (1752:17): [True: 0, False: 243]
  ------------------
 1753|      0|                for (Py_ssize_t i = n; i < argcount; i++) {
  ------------------
  |  Branch (1753:40): [True: 0, False: 0]
  ------------------
 1754|      0|                    PyStackRef_CLOSE(args[i]);
 1755|      0|                }
 1756|      0|            }
 1757|    243|        }
 1758|    247|        if (u == NULL) {
  ------------------
  |  Branch (1758:13): [True: 0, False: 247]
  ------------------
 1759|      0|            goto fail_post_positional;
 1760|      0|        }
 1761|    247|        assert(PyStackRef_AsPyObjectBorrow(localsplus[total_args]) == NULL);
  ------------------
  |  Branch (1761:9): [True: 247, False: 0]
  ------------------
 1762|    247|        localsplus[total_args] = PyStackRef_FromPyObjectSteal(u);
 1763|    247|    }
 1764|    868|    else if (argcount > n) {
  ------------------
  |  Branch (1764:14): [True: 0, False: 868]
  ------------------
 1765|       |        /* Too many positional args. Error is reported later */
 1766|      0|        for (j = n; j < argcount; j++) {
  ------------------
  |  Branch (1766:21): [True: 0, False: 0]
  ------------------
 1767|      0|            PyStackRef_CLOSE(args[j]);
 1768|      0|        }
 1769|      0|    }
 1770|       |
 1771|       |    /* Handle keyword arguments */
 1772|  1.11k|    if (kwnames != NULL) {
  ------------------
  |  Branch (1772:9): [True: 94, False: 1.02k]
  ------------------
 1773|     94|        Py_ssize_t kwcount = PyTuple_GET_SIZE(kwnames);
  ------------------
  |  |   27|     94|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     94|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     94|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1774|    233|        for (i = 0; i < kwcount; i++) {
  ------------------
  |  Branch (1774:21): [True: 139, False: 94]
  ------------------
 1775|    139|            PyObject **co_varnames;
 1776|    139|            PyObject *keyword = PyTuple_GET_ITEM(kwnames, i);
  ------------------
  |  |   29|    139|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|    139|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    139|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1776:33): [True: 139, False: 0]
  ------------------
 1777|      0|            _PyStackRef value_stackref = args[i+argcount];
 1778|    139|            Py_ssize_t j;
 1779|       |
 1780|    139|            if (keyword == NULL || !PyUnicode_Check(keyword)) {
  ------------------
  |  |  103|    139|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|    139|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (1780:17): [True: 0, False: 139]
  |  Branch (1780:36): [True: 0, False: 139]
  ------------------
 1781|      0|                _PyErr_Format(tstate, PyExc_TypeError,
 1782|      0|                            "%U() keywords must be strings",
 1783|      0|                          func->func_qualname);
 1784|      0|                goto kw_fail;
 1785|      0|            }
 1786|       |
 1787|       |            /* Speed hack: do raw pointer compares. As names are
 1788|       |            normally interned this should almost always hit. */
 1789|    139|            co_varnames = ((PyTupleObject *)(co->co_localsplusnames))->ob_item;
 1790|    512|            for (j = co->co_posonlyargcount; j < total_args; j++) {
  ------------------
  |  Branch (1790:46): [True: 512, False: 0]
  ------------------
 1791|    512|                PyObject *varname = co_varnames[j];
 1792|    512|                if (varname == keyword) {
  ------------------
  |  Branch (1792:21): [True: 139, False: 373]
  ------------------
 1793|    139|                    goto kw_found;
 1794|    139|                }
 1795|    512|            }
 1796|       |
 1797|       |            /* Slow fallback, just in case */
 1798|      0|            for (j = co->co_posonlyargcount; j < total_args; j++) {
  ------------------
  |  Branch (1798:46): [True: 0, False: 0]
  ------------------
 1799|      0|                PyObject *varname = co_varnames[j];
 1800|      0|                int cmp = PyObject_RichCompareBool( keyword, varname, Py_EQ);
  ------------------
  |  |  654|      0|#define Py_EQ 2
  ------------------
 1801|      0|                if (cmp > 0) {
  ------------------
  |  Branch (1801:21): [True: 0, False: 0]
  ------------------
 1802|      0|                    goto kw_found;
 1803|      0|                }
 1804|      0|                else if (cmp < 0) {
  ------------------
  |  Branch (1804:26): [True: 0, False: 0]
  ------------------
 1805|      0|                    goto kw_fail;
 1806|      0|                }
 1807|      0|            }
 1808|       |
 1809|      0|            assert(j >= total_args);
  ------------------
  |  Branch (1809:13): [True: 0, False: 0]
  ------------------
 1810|      0|            if (kwdict == NULL) {
  ------------------
  |  Branch (1810:17): [True: 0, False: 0]
  ------------------
 1811|       |
 1812|      0|                if (co->co_posonlyargcount
  ------------------
  |  Branch (1812:21): [True: 0, False: 0]
  ------------------
 1813|      0|                    && positional_only_passed_as_keyword(tstate, co,
  ------------------
  |  Branch (1813:24): [True: 0, False: 0]
  ------------------
 1814|      0|                                                        kwcount, kwnames,
 1815|      0|                                                        func->func_qualname))
 1816|      0|                {
 1817|      0|                    goto kw_fail;
 1818|      0|                }
 1819|       |
 1820|      0|                PyObject* suggestion_keyword = NULL;
 1821|      0|                if (total_args > co->co_posonlyargcount) {
  ------------------
  |  Branch (1821:21): [True: 0, False: 0]
  ------------------
 1822|      0|                    PyObject* possible_keywords = PyList_New(total_args - co->co_posonlyargcount);
 1823|       |
 1824|      0|                    if (!possible_keywords) {
  ------------------
  |  Branch (1824:25): [True: 0, False: 0]
  ------------------
 1825|      0|                        PyErr_Clear();
 1826|      0|                    } else {
 1827|      0|                        for (Py_ssize_t k = co->co_posonlyargcount; k < total_args; k++) {
  ------------------
  |  Branch (1827:69): [True: 0, False: 0]
  ------------------
 1828|      0|                            PyList_SET_ITEM(possible_keywords, k - co->co_posonlyargcount, co_varnames[k]);
  ------------------
  |  |   50|      0|    PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1829|      0|                        }
 1830|       |
 1831|      0|                        suggestion_keyword = _Py_CalculateSuggestions(possible_keywords, keyword);
 1832|      0|                        Py_DECREF(possible_keywords);
  ------------------
  |  |   80|      0|    do { \
  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  ------------------
  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   84|      0|            break; \
  |  |   85|      0|        } \
  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  ------------------
  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  ------------------
  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  ------------------
  |  |  |  |  112|      0|    do { \
  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  117|      0|        } \
  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   90|      0|            (*dealloc)(op); \
  |  |   91|      0|        } \
  |  |   92|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1833|      0|                    }
 1834|      0|                }
 1835|       |
 1836|      0|                if (suggestion_keyword) {
  ------------------
  |  Branch (1836:21): [True: 0, False: 0]
  ------------------
 1837|      0|                    _PyErr_Format(tstate, PyExc_TypeError,
 1838|      0|                                "%U() got an unexpected keyword argument '%S'. Did you mean '%S'?",
 1839|      0|                                func->func_qualname, keyword, suggestion_keyword);
 1840|      0|                    Py_DECREF(suggestion_keyword);
  ------------------
  |  |   80|      0|    do { \
  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  ------------------
  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   84|      0|            break; \
  |  |   85|      0|        } \
  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  ------------------
  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  ------------------
  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  ------------------
  |  |  |  |  112|      0|    do { \
  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  117|      0|        } \
  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   90|      0|            (*dealloc)(op); \
  |  |   91|      0|        } \
  |  |   92|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1841|      0|                } else {
 1842|      0|                    _PyErr_Format(tstate, PyExc_TypeError,
 1843|      0|                                "%U() got an unexpected keyword argument '%S'",
 1844|      0|                                func->func_qualname, keyword);
 1845|      0|                }
 1846|       |
 1847|      0|                goto kw_fail;
 1848|      0|            }
 1849|       |
 1850|      0|            if (PyDict_SetItem(kwdict, keyword, PyStackRef_AsPyObjectBorrow(value_stackref)) == -1) {
  ------------------
  |  Branch (1850:17): [True: 0, False: 0]
  ------------------
 1851|      0|                goto kw_fail;
 1852|      0|            }
 1853|      0|            PyStackRef_CLOSE(value_stackref);
 1854|      0|            continue;
 1855|       |
 1856|      0|        kw_fail:
 1857|      0|            for (;i < kwcount; i++) {
  ------------------
  |  Branch (1857:19): [True: 0, False: 0]
  ------------------
 1858|      0|                PyStackRef_CLOSE(args[i+argcount]);
 1859|      0|            }
 1860|      0|            goto fail_post_args;
 1861|       |
 1862|    139|        kw_found:
 1863|    139|            if (PyStackRef_AsPyObjectBorrow(localsplus[j]) != NULL) {
  ------------------
  |  Branch (1863:17): [True: 0, False: 139]
  ------------------
 1864|      0|                _PyErr_Format(tstate, PyExc_TypeError,
 1865|      0|                            "%U() got multiple values for argument '%S'",
 1866|      0|                          func->func_qualname, keyword);
 1867|      0|                goto kw_fail;
 1868|      0|            }
 1869|    139|            localsplus[j] = value_stackref;
 1870|    139|        }
 1871|     94|    }
 1872|       |
 1873|       |    /* Check the number of positional arguments */
 1874|  1.11k|    if ((argcount > co->co_argcount) && !(co->co_flags & CO_VARARGS)) {
  ------------------
  |  |  120|    243|#define CO_VARARGS      0x0004
  ------------------
  |  Branch (1874:9): [True: 243, False: 872]
  |  Branch (1874:41): [True: 0, False: 243]
  ------------------
 1875|      0|        too_many_positional(tstate, co, argcount, func->func_defaults, localsplus,
 1876|      0|                            func->func_qualname);
 1877|      0|        goto fail_post_args;
 1878|      0|    }
 1879|       |
 1880|       |    /* Add missing positional arguments (copy default values from defs) */
 1881|  1.11k|    if (argcount < co->co_argcount) {
  ------------------
  |  Branch (1881:9): [True: 62, False: 1.05k]
  ------------------
 1882|     62|        Py_ssize_t defcount = func->func_defaults == NULL ? 0 : PyTuple_GET_SIZE(func->func_defaults);
  ------------------
  |  |   27|     62|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     62|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     62|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1882:31): [True: 0, False: 62]
  ------------------
 1883|     62|        Py_ssize_t m = co->co_argcount - defcount;
 1884|     62|        Py_ssize_t missing = 0;
 1885|     64|        for (i = argcount; i < m; i++) {
  ------------------
  |  Branch (1885:28): [True: 2, False: 62]
  ------------------
 1886|      2|            if (PyStackRef_IsNull(localsplus[i])) {
  ------------------
  |  |  470|      2|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  ------------------
  |  |  |  |  467|      2|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      2|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (470:32): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 1887|      0|                missing++;
 1888|      0|            }
 1889|      2|        }
 1890|     62|        if (missing) {
  ------------------
  |  Branch (1890:13): [True: 0, False: 62]
  ------------------
 1891|      0|            missing_arguments(tstate, co, missing, defcount, localsplus,
 1892|      0|                              func->func_qualname);
 1893|      0|            goto fail_post_args;
 1894|      0|        }
 1895|     62|        if (n > m)
  ------------------
  |  Branch (1895:13): [True: 4, False: 58]
  ------------------
 1896|      4|            i = n - m;
 1897|     58|        else
 1898|     58|            i = 0;
 1899|     62|        if (defcount) {
  ------------------
  |  Branch (1899:13): [True: 62, False: 0]
  ------------------
 1900|     62|            PyObject **defs = &PyTuple_GET_ITEM(func->func_defaults, 0);
  ------------------
  |  |   29|     62|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|     62|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     62|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1900:32): [True: 62, False: 0]
  ------------------
 1901|    133|            for (; i < defcount; i++) {
  ------------------
  |  Branch (1901:20): [True: 71, False: 62]
  ------------------
 1902|     71|                if (PyStackRef_AsPyObjectBorrow(localsplus[m+i]) == NULL) {
  ------------------
  |  Branch (1902:21): [True: 66, False: 5]
  ------------------
 1903|     66|                    PyObject *def = defs[i];
 1904|     66|                    localsplus[m+i] = PyStackRef_FromPyObjectNew(def);
  ------------------
  |  |  599|     66|#define PyStackRef_FromPyObjectNew(obj) _PyStackRef_FromPyObjectNew(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     66|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     66|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1905|     66|                }
 1906|     71|            }
 1907|     62|        }
 1908|     62|    }
 1909|       |
 1910|       |    /* Add missing keyword arguments (copy default values from kwdefs) */
 1911|  1.11k|    if (co->co_kwonlyargcount > 0) {
  ------------------
  |  Branch (1911:9): [True: 153, False: 962]
  ------------------
 1912|    153|        Py_ssize_t missing = 0;
 1913|    393|        for (i = co->co_argcount; i < total_args; i++) {
  ------------------
  |  Branch (1913:35): [True: 240, False: 153]
  ------------------
 1914|    240|            if (PyStackRef_AsPyObjectBorrow(localsplus[i]) != NULL)
  ------------------
  |  Branch (1914:17): [True: 132, False: 108]
  ------------------
 1915|    132|                continue;
 1916|    108|            PyObject *varname = PyTuple_GET_ITEM(co->co_localsplusnames, i);
  ------------------
  |  |   29|    108|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|    108|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    108|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1916:33): [True: 108, False: 0]
  ------------------
 1917|    108|            if (func->func_kwdefaults != NULL) {
  ------------------
  |  Branch (1917:17): [True: 108, False: 0]
  ------------------
 1918|    108|                PyObject *def;
 1919|    108|                if (PyDict_GetItemRef(func->func_kwdefaults, varname, &def) < 0) {
  ------------------
  |  Branch (1919:21): [True: 0, False: 108]
  ------------------
 1920|      0|                    goto fail_post_args;
 1921|      0|                }
 1922|    108|                if (def) {
  ------------------
  |  Branch (1922:21): [True: 108, False: 0]
  ------------------
 1923|    108|                    localsplus[i] = PyStackRef_FromPyObjectSteal(def);
 1924|    108|                    continue;
 1925|    108|                }
 1926|    108|            }
 1927|      0|            missing++;
 1928|      0|        }
 1929|    153|        if (missing) {
  ------------------
  |  Branch (1929:13): [True: 0, False: 153]
  ------------------
 1930|      0|            missing_arguments(tstate, co, missing, -1, localsplus,
 1931|      0|                              func->func_qualname);
 1932|      0|            goto fail_post_args;
 1933|      0|        }
 1934|    153|    }
 1935|  1.11k|    return 0;
 1936|       |
 1937|      0|fail_pre_positional:
 1938|      0|    for (j = 0; j < argcount; j++) {
  ------------------
  |  Branch (1938:17): [True: 0, False: 0]
  ------------------
 1939|      0|        PyStackRef_CLOSE(args[j]);
 1940|      0|    }
 1941|       |    /* fall through */
 1942|      0|fail_post_positional:
 1943|      0|    if (kwnames) {
  ------------------
  |  Branch (1943:9): [True: 0, False: 0]
  ------------------
 1944|      0|        Py_ssize_t kwcount = PyTuple_GET_SIZE(kwnames);
  ------------------
  |  |   27|      0|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1945|      0|        for (j = argcount; j < argcount+kwcount; j++) {
  ------------------
  |  Branch (1945:28): [True: 0, False: 0]
  ------------------
 1946|      0|            PyStackRef_CLOSE(args[j]);
 1947|      0|        }
 1948|      0|    }
 1949|       |    /* fall through */
 1950|      0|fail_post_args:
 1951|      0|    return -1;
 1952|      0|}
ceval.c:_PyEval_GetGlobals:
 2720|     26|{
 2721|     26|    _PyInterpreterFrame *current_frame = _PyThreadState_GetFrame(tstate);
 2722|     26|    if (current_frame == NULL) {
  ------------------
  |  Branch (2722:9): [True: 7, False: 19]
  ------------------
 2723|      7|        return NULL;
 2724|      7|    }
 2725|     19|    return current_frame->f_globals;
 2726|     26|}
ceval.c:get_globals_builtins:
 2753|     21|{
 2754|     21|    PyObject *builtins = NULL;
 2755|     21|    if (PyAnyDict_Check(globals)) {
  ------------------
  |  |   43|     21|    (PyDict_Check(ob) || PyFrozenDict_Check(ob))
  |  |  ------------------
  |  |  |  |   18|     21|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|     42|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (760:41): [True: 21, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (PyDict_Check(ob) || PyFrozenDict_Check(ob))
  |  |  ------------------
  |  |  |  |   37|      0|#define PyFrozenDict_Check(op) PyObject_TypeCheck((op), &PyFrozenDict_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |  378|      0|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (378:40): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2756|     21|        if (PyDict_GetItemRef(globals, &_Py_ID(__builtins__), &builtins) < 0) {
  ------------------
  |  |  917|     21|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     21|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     21|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2756:13): [True: 0, False: 21]
  ------------------
 2757|      0|            return NULL;
 2758|      0|        }
 2759|     21|    }
 2760|      0|    else {
 2761|      0|        if (PyMapping_GetOptionalItem(
  ------------------
  |  Branch (2761:13): [True: 0, False: 0]
  ------------------
 2762|      0|                        globals, &_Py_ID(__builtins__), &builtins) < 0)
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2763|      0|        {
 2764|      0|            return NULL;
 2765|      0|        }
 2766|      0|    }
 2767|     21|    return builtins;
 2768|     21|}
ceval.c:set_globals_builtins:
 2772|     21|{
 2773|     21|    if (PyDict_Check(globals)) {
  ------------------
  |  |   18|     21|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     21|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 21, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2774|     21|        if (PyDict_SetItem(globals, &_Py_ID(__builtins__), builtins) < 0) {
  ------------------
  |  |  917|     21|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     21|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     21|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2774:13): [True: 0, False: 21]
  ------------------
 2775|      0|            return -1;
 2776|      0|        }
 2777|     21|    }
 2778|      0|    else {
 2779|      0|        if (PyObject_SetItem(globals, &_Py_ID(__builtins__), builtins) < 0) {
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2779:13): [True: 0, False: 0]
  ------------------
 2780|      0|            if (PyFrozenDict_Check(globals)) {
  ------------------
  |  |   37|      0|#define PyFrozenDict_Check(op) PyObject_TypeCheck((op), &PyFrozenDict_Type)
  |  |  ------------------
  |  |  |  |  378|      0|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (378:40): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2781|      0|                PyErr_SetString(PyExc_TypeError,
 2782|      0|                                "cannot assign __builtins__ to frozendict globals");
 2783|      0|            }
 2784|      0|            return -1;
 2785|      0|        }
 2786|      0|    }
 2787|     21|    return 0;
 2788|     21|}
ceval.c:is_lazy_import_module_level:
 3064|     45|{
 3065|     45|    _PyInterpreterFrame *frame = _PyEval_GetFrame();
 3066|     45|    return frame != NULL && frame->f_globals == frame->f_locals;
  ------------------
  |  Branch (3066:12): [True: 45, False: 0]
  |  Branch (3066:29): [True: 45, False: 0]
  ------------------
 3067|     45|}
ceval.c:check_lazy_import_compatibility:
 3027|     45|{
 3028|       |     // Check if this module should be imported lazily due to
 3029|       |     // the compatibility mode support via __lazy_modules__.
 3030|     45|    PyObject *lazy_modules = NULL;
 3031|     45|    PyObject *abs_name = NULL;
 3032|     45|    int res = -1;
 3033|       |
 3034|     45|    if (globals != NULL &&
  ------------------
  |  Branch (3034:9): [True: 45, False: 0]
  ------------------
 3035|     45|        PyMapping_GetOptionalItem(globals, &_Py_ID(__lazy_modules__),
  ------------------
  |  |  917|     45|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     45|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     45|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3035:9): [True: 0, False: 45]
  ------------------
 3036|     45|                                  &lazy_modules) < 0)
 3037|      0|    {
 3038|      0|        return -1;
 3039|      0|    }
 3040|     45|    if (lazy_modules == NULL) {
  ------------------
  |  Branch (3040:9): [True: 45, False: 0]
  ------------------
 3041|     45|        assert(!PyErr_Occurred());
  ------------------
  |  Branch (3041:9): [True: 45, False: 0]
  ------------------
 3042|     45|        return 0;
 3043|     45|    }
 3044|       |
 3045|      0|    int ilevel = PyLong_AsInt(level);
 3046|      0|    if (ilevel == -1 && _PyErr_Occurred(tstate)) {
  ------------------
  |  Branch (3046:9): [True: 0, False: 0]
  |  Branch (3046:25): [True: 0, False: 0]
  ------------------
 3047|      0|        goto error;
 3048|      0|    }
 3049|       |
 3050|      0|    abs_name = _PyImport_GetAbsName(tstate, name, globals, ilevel);
 3051|      0|    if (abs_name == NULL) {
  ------------------
  |  Branch (3051:9): [True: 0, False: 0]
  ------------------
 3052|      0|        goto error;
 3053|      0|    }
 3054|       |
 3055|      0|    res = PySequence_Contains(lazy_modules, abs_name);
 3056|      0|error:
 3057|      0|    Py_XDECREF(abs_name);
  ------------------
  |  |   69|      0|    do { \
  |  |   70|      0|        PyObject *xop = _PyObject_CAST(arg); \
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   71|      0|        if (xop != NULL) { \
  |  |  ------------------
  |  |  |  Branch (71:13): [True: 0, False: 0]
  |  |  ------------------
  |  |   72|      0|            Py_DECREF(xop); \
  |  |  ------------------
  |  |  |  |   80|      0|    do { \
  |  |  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   84|      0|            break; \
  |  |  |  |   85|      0|        } \
  |  |  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |   91|      0|        } \
  |  |  |  |   92|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   73|      0|        } \
  |  |   74|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (74:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3058|       |    Py_XDECREF(lazy_modules);
  ------------------
  |  |   69|      0|    do { \
  |  |   70|      0|        PyObject *xop = _PyObject_CAST(arg); \
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   71|      0|        if (xop != NULL) { \
  |  |  ------------------
  |  |  |  Branch (71:13): [True: 0, False: 0]
  |  |  ------------------
  |  |   72|      0|            Py_DECREF(xop); \
  |  |  ------------------
  |  |  |  |   80|      0|    do { \
  |  |  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   84|      0|            break; \
  |  |  |  |   85|      0|        } \
  |  |  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |   91|      0|        } \
  |  |  |  |   92|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   73|      0|        } \
  |  |   74|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (74:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3059|      0|    return res;
 3060|      0|}

ceval.c:check_invalid_reentrancy:
  142|    452|{
  143|       |#if defined(Py_DEBUG) && defined(Py_GIL_DISABLED)
  144|       |    // In the free-threaded build, the interpreter must not be re-entered if
  145|       |    // the world-is-stopped.  If so, that's a bug somewhere (quite likely in
  146|       |    // the painfully complex typeobject code).
  147|       |    PyInterpreterState *interp = _PyInterpreterState_GET();
  148|       |    assert(!interp->stoptheworld.world_stopped);
  149|       |#endif
  150|    452|}
ceval.c:monitor_reraise:
  405|      6|{
  406|      6|    if (no_tools_for_local_event(tstate, frame, PY_MONITORING_EVENT_RERAISE)) {
  ------------------
  |  |   36|      6|#define PY_MONITORING_EVENT_RERAISE 15
  ------------------
  |  Branch (406:9): [True: 6, False: 0]
  ------------------
  407|      6|        return;
  408|      6|    }
  409|      0|    do_monitor_exc(tstate, frame, instr, PY_MONITORING_EVENT_RERAISE);
  ------------------
  |  |   36|      0|#define PY_MONITORING_EVENT_RERAISE 15
  ------------------
  410|      0|}
ceval.c:do_raise:
  518|     10|{
  519|     10|    PyObject *type = NULL, *value = NULL;
  520|       |
  521|     10|    if (exc == NULL) {
  ------------------
  |  Branch (521:9): [True: 0, False: 10]
  ------------------
  522|       |        /* Reraise */
  523|      0|        _PyErr_StackItem *exc_info = _PyErr_GetTopmostException(tstate);
  524|      0|        exc = exc_info->exc_value;
  525|      0|        if (Py_IsNone(exc) || exc == NULL) {
  ------------------
  |  |  621|      0|#define Py_IsNone(x) Py_Is((x), Py_None)
  |  |  ------------------
  |  |  |  |  187|      0|#define Py_Is(x, y) ((x) == (y))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (187:21): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (525:31): [True: 0, False: 0]
  ------------------
  526|      0|            _PyErr_SetString(tstate, PyExc_RuntimeError,
  527|      0|                             "No active exception to reraise");
  528|      0|            return 0;
  529|      0|        }
  530|      0|        Py_INCREF(exc);
  ------------------
  |  |  310|      0|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  531|      0|        assert(PyExceptionInstance_Check(exc));
  ------------------
  |  Branch (531:9): [True: 0, False: 0]
  ------------------
  532|      0|        _PyErr_SetRaisedException(tstate, exc);
  533|      0|        return 1;
  534|      0|    }
  535|       |
  536|       |    /* We support the following forms of raise:
  537|       |       raise
  538|       |       raise <instance>
  539|       |       raise <type> */
  540|       |
  541|     10|    if (PyExceptionClass_Check(exc)) {
  ------------------
  |  |   61|     10|    (PyType_Check((x)) &&                                               \
  |  |  ------------------
  |  |  |  |  766|     20|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     10|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (766:28): [True: 0, False: 10]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   62|     10|     PyType_FastSubclass((PyTypeObject*)(x), Py_TPFLAGS_BASE_EXC_SUBCLASS))
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  542|      0|        type = exc;
  543|      0|        value = _PyObject_CallNoArgs(exc);
  544|      0|        if (value == NULL)
  ------------------
  |  Branch (544:13): [True: 0, False: 0]
  ------------------
  545|      0|            goto raise_error;
  546|      0|        if (!PyExceptionInstance_Check(value)) {
  ------------------
  |  |   65|      0|    PyType_FastSubclass(Py_TYPE(x), Py_TPFLAGS_BASE_EXC_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (546:13): [True: 0, False: 0]
  ------------------
  547|      0|            _PyErr_Format(tstate, PyExc_TypeError,
  548|      0|                          "calling %R should have returned an instance of "
  549|      0|                          "BaseException, not %R",
  550|      0|                          type, Py_TYPE(value));
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  551|      0|             goto raise_error;
  552|      0|        }
  553|      0|    }
  554|     10|    else if (PyExceptionInstance_Check(exc)) {
  ------------------
  |  |   65|     10|    PyType_FastSubclass(Py_TYPE(x), Py_TPFLAGS_BASE_EXC_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     10|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 10, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  555|     10|        value = exc;
  556|     10|        type = PyExceptionInstance_Class(exc);
  ------------------
  |  |   69|     10|#define PyExceptionInstance_Class(x) _PyObject_CAST(Py_TYPE(x))
  |  |  ------------------
  |  |  |  |  171|     10|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  557|     10|        Py_INCREF(type);
  ------------------
  |  |  310|     10|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     10|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  558|     10|    }
  559|      0|    else {
  560|       |        /* Not something you can raise.  You get an exception
  561|       |           anyway, just not what you specified :-) */
  562|      0|        Py_DECREF(exc);
  ------------------
  |  |   80|      0|    do { \
  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  ------------------
  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   84|      0|            break; \
  |  |   85|      0|        } \
  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  ------------------
  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  ------------------
  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  ------------------
  |  |  |  |  112|      0|    do { \
  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  117|      0|        } \
  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   90|      0|            (*dealloc)(op); \
  |  |   91|      0|        } \
  |  |   92|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  563|      0|        _PyErr_SetString(tstate, PyExc_TypeError,
  564|      0|                         "exceptions must derive from BaseException");
  565|      0|        goto raise_error;
  566|      0|    }
  567|       |
  568|     10|    assert(type != NULL);
  ------------------
  |  Branch (568:5): [True: 10, False: 0]
  ------------------
  569|     10|    assert(value != NULL);
  ------------------
  |  Branch (569:5): [True: 10, False: 0]
  ------------------
  570|       |
  571|     10|    if (cause) {
  ------------------
  |  Branch (571:9): [True: 1, False: 9]
  ------------------
  572|      1|        PyObject *fixed_cause;
  573|      1|        if (PyExceptionClass_Check(cause)) {
  ------------------
  |  |   61|      1|    (PyType_Check((x)) &&                                               \
  |  |  ------------------
  |  |  |  |  766|      2|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (766:28): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   62|      1|     PyType_FastSubclass((PyTypeObject*)(x), Py_TPFLAGS_BASE_EXC_SUBCLASS))
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  574|      0|            fixed_cause = _PyObject_CallNoArgs(cause);
  575|      0|            if (fixed_cause == NULL)
  ------------------
  |  Branch (575:17): [True: 0, False: 0]
  ------------------
  576|      0|                goto raise_error;
  577|      0|            if (!PyExceptionInstance_Check(fixed_cause)) {
  ------------------
  |  |   65|      0|    PyType_FastSubclass(Py_TYPE(x), Py_TPFLAGS_BASE_EXC_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (577:17): [True: 0, False: 0]
  ------------------
  578|      0|                _PyErr_Format(tstate, PyExc_TypeError,
  579|      0|                              "calling %R should have returned an instance of "
  580|      0|                              "BaseException, not %R",
  581|      0|                              cause, Py_TYPE(fixed_cause));
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  582|      0|                Py_DECREF(fixed_cause);
  ------------------
  |  |   80|      0|    do { \
  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  ------------------
  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   84|      0|            break; \
  |  |   85|      0|        } \
  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  ------------------
  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  ------------------
  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  ------------------
  |  |  |  |  112|      0|    do { \
  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  117|      0|        } \
  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   90|      0|            (*dealloc)(op); \
  |  |   91|      0|        } \
  |  |   92|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  583|      0|                goto raise_error;
  584|      0|            }
  585|      0|            Py_DECREF(cause);
  ------------------
  |  |   80|      0|    do { \
  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  ------------------
  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   84|      0|            break; \
  |  |   85|      0|        } \
  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  ------------------
  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  ------------------
  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  ------------------
  |  |  |  |  112|      0|    do { \
  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  117|      0|        } \
  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   90|      0|            (*dealloc)(op); \
  |  |   91|      0|        } \
  |  |   92|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  586|      0|        }
  587|      1|        else if (PyExceptionInstance_Check(cause)) {
  ------------------
  |  |   65|      1|    PyType_FastSubclass(Py_TYPE(x), Py_TPFLAGS_BASE_EXC_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      1|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  588|      0|            fixed_cause = cause;
  589|      0|        }
  590|      1|        else if (Py_IsNone(cause)) {
  ------------------
  |  |  621|      1|#define Py_IsNone(x) Py_Is((x), Py_None)
  |  |  ------------------
  |  |  |  |  187|      1|#define Py_Is(x, y) ((x) == (y))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (187:21): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  591|      1|            Py_DECREF(cause);
  ------------------
  |  |   80|      1|    do { \
  |  |   81|      1|        PyObject *op = _PyObject_CAST(arg); \
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|      1|        if (_Py_IsImmortal(op)) { \
  |  |  ------------------
  |  |  |  |  137|      1|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:28): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   83|      1|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   22|      1|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   84|      1|            break; \
  |  |   85|      1|        } \
  |  |   86|      1|        _Py_DECREF_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  ------------------
  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  ------------------
  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  ------------------
  |  |  |  |  112|      0|    do { \
  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  117|      0|        } \
  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   90|      0|            (*dealloc)(op); \
  |  |   91|      0|        } \
  |  |   92|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  592|      1|            fixed_cause = NULL;
  593|      1|        }
  594|      0|        else {
  595|      0|            _PyErr_SetString(tstate, PyExc_TypeError,
  596|      0|                             "exception causes must derive from "
  597|      0|                             "BaseException");
  598|      0|            goto raise_error;
  599|      0|        }
  600|      1|        PyException_SetCause(value, fixed_cause);
  601|      1|    }
  602|       |
  603|     10|    _PyErr_SetObject(tstate, type, value);
  604|       |    /* _PyErr_SetObject incref's its arguments */
  605|     10|    Py_DECREF(value);
  ------------------
  |  |   80|     10|    do { \
  |  |   81|     10|        PyObject *op = _PyObject_CAST(arg); \
  |  |  ------------------
  |  |  |  |  171|     10|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|     10|        if (_Py_IsImmortal(op)) { \
  |  |  ------------------
  |  |  |  |  137|     10|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     10|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:28): [True: 0, False: 10]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   84|      0|            break; \
  |  |   85|      0|        } \
  |  |   86|     10|        _Py_DECREF_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   20|     10|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   87|     10|        if (--op->ob_refcnt == 0) { \
  |  |  ------------------
  |  |  |  Branch (87:13): [True: 0, False: 10]
  |  |  ------------------
  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  ------------------
  |  |  |  |  112|      0|    do { \
  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  117|      0|        } \
  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   90|      0|            (*dealloc)(op); \
  |  |   91|      0|        } \
  |  |   92|     10|    } while (0)
  |  |  ------------------
  |  |  |  Branch (92:14): [Folded, False: 10]
  |  |  ------------------
  ------------------
  606|     10|    Py_DECREF(type);
  ------------------
  |  |   80|     10|    do { \
  |  |   81|     10|        PyObject *op = _PyObject_CAST(arg); \
  |  |  ------------------
  |  |  |  |  171|     10|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|     10|        if (_Py_IsImmortal(op)) { \
  |  |  ------------------
  |  |  |  |  137|     10|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     10|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:28): [True: 6, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   83|      6|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   22|      6|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   84|      6|            break; \
  |  |   85|      6|        } \
  |  |   86|     10|        _Py_DECREF_STAT_INC(); \
  |  |  ------------------
  |  |  |  |   20|      4|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  ------------------
  |  |   87|      4|        if (--op->ob_refcnt == 0) { \
  |  |  ------------------
  |  |  |  Branch (87:13): [True: 0, False: 4]
  |  |  ------------------
  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  ------------------
  |  |  |  |  112|      0|    do { \
  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  117|      0|        } \
  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  ------------------
  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   90|      0|            (*dealloc)(op); \
  |  |   91|      0|        } \
  |  |   92|      4|    } while (0)
  |  |  ------------------
  |  |  |  Branch (92:14): [Folded, False: 4]
  |  |  ------------------
  ------------------
  607|     10|    return 0;
  608|       |
  609|      0|raise_error:
  610|      0|    Py_XDECREF(value);
  ------------------
  |  |   69|      0|    do { \
  |  |   70|      0|        PyObject *xop = _PyObject_CAST(arg); \
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   71|      0|        if (xop != NULL) { \
  |  |  ------------------
  |  |  |  Branch (71:13): [True: 0, False: 0]
  |  |  ------------------
  |  |   72|      0|            Py_DECREF(xop); \
  |  |  ------------------
  |  |  |  |   80|      0|    do { \
  |  |  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   84|      0|            break; \
  |  |  |  |   85|      0|        } \
  |  |  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |   91|      0|        } \
  |  |  |  |   92|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   73|      0|        } \
  |  |   74|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (74:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  611|      0|    Py_XDECREF(type);
  ------------------
  |  |   69|      0|    do { \
  |  |   70|      0|        PyObject *xop = _PyObject_CAST(arg); \
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   71|      0|        if (xop != NULL) { \
  |  |  ------------------
  |  |  |  Branch (71:13): [True: 0, False: 0]
  |  |  ------------------
  |  |   72|      0|            Py_DECREF(xop); \
  |  |  ------------------
  |  |  |  |   80|      0|    do { \
  |  |  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   84|      0|            break; \
  |  |  |  |   85|      0|        } \
  |  |  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |   91|      0|        } \
  |  |  |  |   92|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   73|      0|        } \
  |  |   74|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (74:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  612|       |    Py_XDECREF(cause);
  ------------------
  |  |   69|      0|    do { \
  |  |   70|      0|        PyObject *xop = _PyObject_CAST(arg); \
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   71|      0|        if (xop != NULL) { \
  |  |  ------------------
  |  |  |  Branch (71:13): [True: 0, False: 0]
  |  |  ------------------
  |  |   72|      0|            Py_DECREF(xop); \
  |  |  ------------------
  |  |  |  |   80|      0|    do { \
  |  |  |  |   81|      0|        PyObject *op = _PyObject_CAST(arg); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   82|      0|        if (_Py_IsImmortal(op)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:28): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   83|      0|            _Py_DECREF_IMMORTAL_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   22|      0|#  define _Py_DECREF_IMMORTAL_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   84|      0|            break; \
  |  |  |  |   85|      0|        } \
  |  |  |  |   86|      0|        _Py_DECREF_STAT_INC(); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _Py_DECREF_STAT_INC() ((void)0)
  |  |  |  |  ------------------
  |  |  |  |   87|      0|        if (--op->ob_refcnt == 0) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (87:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   88|      0|            _PyReftracerTrack(op, PyRefTracer_DESTROY); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|    do { \
  |  |  |  |  |  |  113|      0|        struct _reftracer_runtime_state *tracer = &_PyRuntime.ref_tracer; \
  |  |  |  |  |  |  114|      0|        if (tracer->tracer_func != NULL) { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (114:13): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  115|      0|            void *data = tracer->tracer_data; \
  |  |  |  |  |  |  116|      0|            tracer->tracer_func((obj), (operation), data); \
  |  |  |  |  |  |  117|      0|        } \
  |  |  |  |  |  |  118|      0|    } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (118:13): [Folded, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   89|      0|            destructor dealloc = Py_TYPE(op)->tp_dealloc; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   90|      0|            (*dealloc)(op); \
  |  |  |  |   91|      0|        } \
  |  |  |  |   92|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (92:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   73|      0|        } \
  |  |   74|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (74:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  613|      0|    return 0;
  614|     10|}
ceval.c:get_exception_handler:
  459|    108|{
  460|    108|    unsigned char *start = (unsigned char *)PyBytes_AS_STRING(code->co_exceptiontable);
  ------------------
  |  |   27|    108|#define PyBytes_AS_STRING(op) PyBytes_AS_STRING(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    108|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    108|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  461|    108|    unsigned char *end = start + PyBytes_GET_SIZE(code->co_exceptiontable);
  ------------------
  |  |   33|    108|#define PyBytes_GET_SIZE(self) PyBytes_GET_SIZE(_PyObject_CAST(self))
  |  |  ------------------
  |  |  |  |  171|    108|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    108|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  462|       |    /* Invariants:
  463|       |     * start_table == end_table OR
  464|       |     * start_table points to a legal entry and end_table points
  465|       |     * beyond the table or to a legal entry that is after index.
  466|       |     */
  467|    108|    if (end - start > MAX_LINEAR_SEARCH) {
  ------------------
  |  |  455|    108|#define MAX_LINEAR_SEARCH 40
  ------------------
  |  Branch (467:9): [True: 47, False: 61]
  ------------------
  468|     47|        int offset;
  469|     47|        parse_varint(start, &offset);
  470|     47|        if (offset > index) {
  ------------------
  |  Branch (470:13): [True: 0, False: 47]
  ------------------
  471|      0|            return 0;
  472|      0|        }
  473|     75|        do {
  474|     75|            unsigned char * mid = start + ((end-start)>>1);
  475|     75|            mid = scan_back_to_entry_start(mid);
  476|     75|            parse_varint(mid, &offset);
  477|     75|            if (offset > index) {
  ------------------
  |  Branch (477:17): [True: 67, False: 8]
  ------------------
  478|     67|                end = mid;
  479|     67|            }
  480|      8|            else {
  481|      8|                start = mid;
  482|      8|            }
  483|       |
  484|     75|        } while (end - start > MAX_LINEAR_SEARCH);
  ------------------
  |  |  455|     75|#define MAX_LINEAR_SEARCH 40
  ------------------
  |  Branch (484:18): [True: 28, False: 47]
  ------------------
  485|     47|    }
  486|    108|    unsigned char *scan = start;
  487|    163|    while (scan < end) {
  ------------------
  |  Branch (487:12): [True: 155, False: 8]
  ------------------
  488|    155|        int start_offset, size;
  489|    155|        scan = parse_varint(scan, &start_offset);
  490|    155|        if (start_offset > index) {
  ------------------
  |  Branch (490:13): [True: 6, False: 149]
  ------------------
  491|      6|            break;
  492|      6|        }
  493|    149|        scan = parse_varint(scan, &size);
  494|    149|        if (start_offset + size > index) {
  ------------------
  |  Branch (494:13): [True: 94, False: 55]
  ------------------
  495|     94|            scan = parse_varint(scan, handler);
  496|     94|            int depth_and_lasti;
  497|     94|            parse_varint(scan, &depth_and_lasti);
  498|     94|            *level = depth_and_lasti >> 1;
  499|     94|            *lasti = depth_and_lasti & 1;
  500|     94|            return 1;
  501|     94|        }
  502|     55|        scan = skip_to_next_entry(scan, end);
  503|     55|    }
  504|     14|    return 0;
  505|    108|}
ceval.c:scan_back_to_entry_start:
  441|     75|scan_back_to_entry_start(unsigned char *p) {
  442|    197|    for (; (p[0]&128) == 0; p--);
  ------------------
  |  Branch (442:12): [True: 122, False: 75]
  ------------------
  443|     75|    return p;
  444|     75|}
ceval.c:skip_to_next_entry:
  447|     55|skip_to_next_entry(unsigned char *p, unsigned char *end) {
  448|    214|    while (p < end && ((p[0] & 128) == 0)) {
  ------------------
  |  Branch (448:12): [True: 211, False: 3]
  |  Branch (448:23): [True: 159, False: 52]
  ------------------
  449|    159|        p++;
  450|    159|    }
  451|     55|    return p;
  452|     55|}
ceval.c:monitor_unwind:
  433|     14|{
  434|     14|    if (no_tools_for_local_event(tstate, frame, PY_MONITORING_EVENT_PY_UNWIND)) {
  ------------------
  |  |   34|     14|#define PY_MONITORING_EVENT_PY_UNWIND 13
  ------------------
  |  Branch (434:9): [True: 14, False: 0]
  ------------------
  435|     14|        return;
  436|     14|    }
  437|      0|    do_monitor_exc(tstate, frame, instr, PY_MONITORING_EVENT_PY_UNWIND);
  ------------------
  |  |   34|      0|#define PY_MONITORING_EVENT_PY_UNWIND 13
  ------------------
  438|      0|}
ceval.c:monitor_handled:
  384|     94|{
  385|     94|    if (no_tools_for_local_event(tstate, frame, PY_MONITORING_EVENT_EXCEPTION_HANDLED)) {
  ------------------
  |  |   33|     94|#define PY_MONITORING_EVENT_EXCEPTION_HANDLED 12
  ------------------
  |  Branch (385:9): [True: 94, False: 0]
  ------------------
  386|     94|        return 0;
  387|     94|    }
  388|      0|    return _Py_call_instrumentation_arg(tstate, PY_MONITORING_EVENT_EXCEPTION_HANDLED, frame, instr, exc);
  ------------------
  |  |   33|      0|#define PY_MONITORING_EVENT_EXCEPTION_HANDLED 12
  ------------------
  389|     94|}
ceval.c:no_tools_for_local_event:
  369|    217|{
  370|    217|    assert(event < _PY_MONITORING_UNGROUPED_EVENTS);
  ------------------
  |  Branch (370:5): [True: 217, False: 0]
  ------------------
  371|    217|    _PyCoMonitoringData *data = _PyFrame_GetCode(frame)->_co_monitoring;
  372|    217|    if (data) {
  ------------------
  |  Branch (372:9): [True: 0, False: 217]
  ------------------
  373|      0|        return data->active_monitors.tools[event] == 0;
  374|      0|    }
  375|    217|    else {
  376|    217|        return no_tools_for_global_event(tstate, event);
  377|    217|    }
  378|    217|}
ceval.c:no_tools_for_global_event:
  363|    217|{
  364|    217|    return tstate->interp->monitors.tools[event] == 0;
  365|    217|}

_PyEval_InitGIL:
  504|      1|{
  505|      1|    assert(tstate->interp->ceval.gil == NULL);
  ------------------
  |  Branch (505:5): [True: 1, False: 0]
  ------------------
  506|      1|    if (!own_gil) {
  ------------------
  |  Branch (506:9): [True: 0, False: 1]
  ------------------
  507|       |        /* The interpreter will share the main interpreter's instead. */
  508|      0|        PyInterpreterState *main_interp = _PyInterpreterState_Main();
  509|      0|        assert(tstate->interp != main_interp);
  ------------------
  |  Branch (509:9): [True: 0, False: 0]
  ------------------
  510|      0|        struct _gil_runtime_state *gil = main_interp->ceval.gil;
  511|      0|        init_shared_gil(tstate->interp, gil);
  512|      0|        assert(!current_thread_holds_gil(gil, tstate));
  ------------------
  |  Branch (512:9): [True: 0, False: 0]
  ------------------
  513|      0|    }
  514|      1|    else {
  515|      1|        PyThread_init_thread();
  516|      1|        init_own_gil(tstate->interp, &tstate->interp->_gil);
  517|      1|    }
  518|       |
  519|       |    // Lock the GIL and mark the current thread as attached.
  520|      1|    _PyThreadState_Attach(tstate);
  521|      1|}
_PyEval_FiniGIL:
  525|      1|{
  526|      1|    struct _gil_runtime_state *gil = interp->ceval.gil;
  527|      1|    if (gil == NULL) {
  ------------------
  |  Branch (527:9): [True: 1, False: 0]
  ------------------
  528|       |        /* It was already finalized (or hasn't been initialized yet). */
  529|      1|        assert(!interp->ceval.own_gil);
  ------------------
  |  Branch (529:9): [True: 1, False: 0]
  ------------------
  530|      1|        return;
  531|      1|    }
  532|      0|    else if (!interp->ceval.own_gil) {
  ------------------
  |  Branch (532:14): [True: 0, False: 0]
  ------------------
  533|       |#ifdef Py_DEBUG
  534|       |        PyInterpreterState *main_interp = _PyInterpreterState_Main();
  535|       |        assert(main_interp != NULL && interp != main_interp);
  536|       |        assert(interp->ceval.gil == main_interp->ceval.gil);
  537|       |#endif
  538|      0|        interp->ceval.gil = NULL;
  539|      0|        return;
  540|      0|    }
  541|       |
  542|      0|    if (!gil_created(gil)) {
  ------------------
  |  Branch (542:9): [True: 0, False: 0]
  ------------------
  543|       |        /* First Py_InitializeFromConfig() call: the GIL doesn't exist
  544|       |           yet: do nothing. */
  545|      0|        return;
  546|      0|    }
  547|       |
  548|      0|    destroy_gil(gil);
  549|      0|    assert(!gil_created(gil));
  ------------------
  |  Branch (549:5): [True: 0, False: 0]
  ------------------
  550|      0|    interp->ceval.gil = NULL;
  551|      0|}
_PyEval_AcquireLock:
  590|    328|{
  591|    328|    _Py_EnsureTstateNotNULL(tstate);
  ------------------
  |  |  196|    328|    _Py_EnsureFuncTstateNotNULL(__func__, (tstate))
  ------------------
  592|    328|    take_gil(tstate);
  593|    328|}
_PyEval_ReleaseLock:
  599|    327|{
  600|    327|    assert(tstate != NULL);
  ------------------
  |  Branch (600:5): [True: 327, False: 0]
  ------------------
  601|    327|    assert(tstate->interp == interp);
  ------------------
  |  Branch (601:5): [True: 327, False: 0]
  ------------------
  602|    327|    drop_gil(interp, tstate, final_release);
  603|    327|}
PyEval_SaveThread:
  644|    327|{
  645|    327|    PyThreadState *tstate = _PyThreadState_GET();
  646|    327|    _PyThreadState_Detach(tstate);
  647|    327|    return tstate;
  648|    327|}
PyEval_RestoreThread:
  652|    327|{
  653|       |#ifdef MS_WINDOWS
  654|       |    int err = GetLastError();
  655|       |#endif
  656|       |
  657|    327|    _Py_EnsureTstateNotNULL(tstate);
  ------------------
  |  |  196|    327|    _Py_EnsureFuncTstateNotNULL(__func__, (tstate))
  ------------------
  658|    327|    _PyThreadState_Attach(tstate);
  659|       |
  660|       |#ifdef MS_WINDOWS
  661|       |    SetLastError(err);
  662|       |#endif
  663|    327|}
_PyEval_InitState:
 1075|      1|{
 1076|      1|    _gil_initialize(&interp->_gil);
 1077|      1|}
_PyRunRemoteDebugger:
 1259|     33|{
 1260|     33|    const PyConfig *config = _PyInterpreterState_GetConfig(tstate->interp);
 1261|     33|    if (config->remote_debug == 1
  ------------------
  |  Branch (1261:9): [True: 33, False: 0]
  ------------------
 1262|     33|         && tstate->remote_debugger_support.debugger_pending_call == 1)
  ------------------
  |  Branch (1262:13): [True: 0, False: 33]
  ------------------
 1263|      0|    {
 1264|      0|        tstate->remote_debugger_support.debugger_pending_call = 0;
 1265|       |
 1266|       |        // Immediately make a copy in case of a race with another debugger
 1267|       |        // process that's trying to write to the buffer. At least this way
 1268|       |        // we'll be internally consistent: what we audit is what we run.
 1269|      0|        const size_t pathsz
 1270|      0|            = sizeof(tstate->remote_debugger_support.debugger_script_path);
 1271|       |
 1272|      0|        char *path = PyMem_Malloc(pathsz);
 1273|      0|        if (path) {
  ------------------
  |  Branch (1273:13): [True: 0, False: 0]
  ------------------
 1274|       |            // And don't assume the debugger correctly null terminated it.
 1275|      0|            memcpy(
 1276|      0|                path,
 1277|      0|                tstate->remote_debugger_support.debugger_script_path,
 1278|      0|                pathsz);
 1279|      0|            path[pathsz - 1] = '\0';
 1280|      0|            if (*path) {
  ------------------
  |  Branch (1280:17): [True: 0, False: 0]
  ------------------
 1281|      0|                PyObject *path_obj = PyUnicode_DecodeFSDefault(path);
 1282|      0|                if (path_obj == NULL) {
  ------------------
  |  Branch (1282:21): [True: 0, False: 0]
  ------------------
 1283|      0|                    PyErr_FormatUnraisable("Can't decode debugger script");
 1284|      0|                }
 1285|      0|                else {
 1286|      0|                    run_remote_debugger_script(path_obj);
 1287|      0|                    Py_DECREF(path_obj);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1288|      0|                }
 1289|      0|            }
 1290|      0|            PyMem_Free(path);
 1291|      0|        }
 1292|      0|    }
 1293|     33|    return 0;
 1294|     33|}
_Py_HandlePending:
 1358|      2|{
 1359|      2|    uintptr_t breaker = _Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker);
 1360|       |
 1361|       |    /* Stop-the-world */
 1362|      2|    if ((breaker & _PY_EVAL_PLEASE_STOP_BIT) != 0) {
  ------------------
  |  |  351|      2|#define _PY_EVAL_PLEASE_STOP_BIT (1U << 5)
  ------------------
  |  Branch (1362:9): [True: 0, False: 2]
  ------------------
 1363|      0|        _Py_unset_eval_breaker_bit(tstate, _PY_EVAL_PLEASE_STOP_BIT);
  ------------------
  |  |  351|      0|#define _PY_EVAL_PLEASE_STOP_BIT (1U << 5)
  ------------------
 1364|      0|        _PyThreadState_Suspend(tstate);
 1365|       |
 1366|       |        /* The attach blocks until the stop-the-world event is complete. */
 1367|      0|        _PyThreadState_Attach(tstate);
 1368|      0|    }
 1369|       |
 1370|       |    /* Pending signals */
 1371|      2|    if ((breaker & _PY_SIGNALS_PENDING_BIT) != 0) {
  ------------------
  |  |  347|      2|#define _PY_SIGNALS_PENDING_BIT (1U << 1)
  ------------------
  |  Branch (1371:9): [True: 0, False: 2]
  ------------------
 1372|      0|        if (handle_signals(tstate) != 0) {
  ------------------
  |  Branch (1372:13): [True: 0, False: 0]
  ------------------
 1373|      0|            return -1;
 1374|      0|        }
 1375|      0|    }
 1376|       |
 1377|       |    /* Pending calls */
 1378|      2|    if ((breaker & _PY_CALLS_TO_DO_BIT) != 0) {
  ------------------
  |  |  348|      2|#define _PY_CALLS_TO_DO_BIT (1U << 2)
  ------------------
  |  Branch (1378:9): [True: 0, False: 2]
  ------------------
 1379|      0|        if (make_pending_calls(tstate) != 0) {
  ------------------
  |  Branch (1379:13): [True: 0, False: 0]
  ------------------
 1380|      0|            return -1;
 1381|      0|        }
 1382|      0|    }
 1383|       |
 1384|       |#ifdef Py_GIL_DISABLED
 1385|       |    /* Objects with refcounts to merge */
 1386|       |    if ((breaker & _PY_EVAL_EXPLICIT_MERGE_BIT) != 0) {
 1387|       |        _Py_unset_eval_breaker_bit(tstate, _PY_EVAL_EXPLICIT_MERGE_BIT);
 1388|       |        _Py_brc_merge_refcounts(tstate);
 1389|       |    }
 1390|       |    /* Process deferred memory frees held by QSBR */
 1391|       |    if (_Py_qsbr_should_process(((_PyThreadStateImpl *)tstate)->qsbr)) {
 1392|       |        _PyMem_ProcessDelayed(tstate);
 1393|       |    }
 1394|       |#endif
 1395|       |
 1396|       |    /* GC scheduled to run */
 1397|      2|    if ((breaker & _PY_GC_SCHEDULED_BIT) != 0) {
  ------------------
  |  |  350|      2|#define _PY_GC_SCHEDULED_BIT (1U << 4)
  ------------------
  |  Branch (1397:9): [True: 2, False: 0]
  ------------------
 1398|      2|        _Py_unset_eval_breaker_bit(tstate, _PY_GC_SCHEDULED_BIT);
  ------------------
  |  |  350|      2|#define _PY_GC_SCHEDULED_BIT (1U << 4)
  ------------------
 1399|      2|        _Py_RunGC(tstate);
 1400|       |#ifdef _Py_TIER2
 1401|       |        _Py_ClearExecutorDeletionList(tstate->interp);
 1402|       |#endif
 1403|      2|    }
 1404|       |
 1405|       |#ifdef _Py_TIER2
 1406|       |    if ((breaker & _PY_EVAL_JIT_INVALIDATE_COLD_BIT) != 0) {
 1407|       |        _Py_unset_eval_breaker_bit(tstate, _PY_EVAL_JIT_INVALIDATE_COLD_BIT);
 1408|       |        _Py_Executors_InvalidateCold(tstate->interp);
 1409|       |        tstate->interp->executor_creation_counter = JIT_CLEANUP_THRESHOLD;
 1410|       |        _Py_ClearExecutorDeletionList(tstate->interp);
 1411|       |    }
 1412|       |#endif
 1413|       |
 1414|       |    /* GIL drop request */
 1415|      2|    if ((breaker & _PY_GIL_DROP_REQUEST_BIT) != 0) {
  ------------------
  |  |  346|      2|#define _PY_GIL_DROP_REQUEST_BIT (1U << 0)
  ------------------
  |  Branch (1415:9): [True: 0, False: 2]
  ------------------
 1416|       |        /* Give another thread a chance */
 1417|      0|        _PyThreadState_Detach(tstate);
 1418|       |
 1419|       |        /* Other threads may run now */
 1420|       |
 1421|      0|        _PyThreadState_Attach(tstate);
 1422|      0|    }
 1423|       |
 1424|       |    /* Check for asynchronous exception. */
 1425|      2|    if ((breaker & _PY_ASYNC_EXCEPTION_BIT) != 0) {
  ------------------
  |  |  349|      2|#define _PY_ASYNC_EXCEPTION_BIT (1U << 3)
  ------------------
  |  Branch (1425:9): [True: 0, False: 2]
  ------------------
 1426|      0|        if (_PyEval_RaiseAsyncExc(tstate) < 0) {
  ------------------
  |  Branch (1426:13): [True: 0, False: 0]
  ------------------
 1427|      0|            return -1;
 1428|      0|        }
 1429|      0|    }
 1430|       |
 1431|      2|#if defined(Py_REMOTE_DEBUG) && defined(Py_SUPPORTS_REMOTE_DEBUG)
 1432|      2|    _PyRunRemoteDebugger(tstate);
 1433|      2|#endif
 1434|       |
 1435|      2|    return 0;
 1436|      2|}
ceval_gil.c:gil_created:
  156|    330|{
  157|    330|    if (gil == NULL) {
  ------------------
  |  Branch (157:9): [True: 0, False: 330]
  ------------------
  158|      0|        return 0;
  159|      0|    }
  160|    330|    return (_Py_atomic_load_int_acquire(&gil->locked) >= 0);
  161|    330|}
ceval_gil.c:init_own_gil:
  490|      1|{
  491|      1|    assert(!gil_created(gil));
  ------------------
  |  Branch (491:5): [True: 1, False: 0]
  ------------------
  492|       |#ifdef Py_GIL_DISABLED
  493|       |    const PyConfig *config = _PyInterpreterState_GetConfig(interp);
  494|       |    gil->enabled = config->enable_gil == _PyConfig_GIL_ENABLE ? INT_MAX : 0;
  495|       |#endif
  496|      1|    create_gil(gil);
  497|      1|    assert(gil_created(gil));
  ------------------
  |  Branch (497:5): [True: 1, False: 0]
  ------------------
  498|      1|    interp->ceval.gil = gil;
  499|      1|    interp->ceval.own_gil = 1;
  500|      1|}
ceval_gil.c:create_gil:
  164|      1|{
  165|      1|    MUTEX_INIT(gil->mutex);
  ------------------
  |  |  111|      1|    if (PyMUTEX_INIT(&(mut))) { \
  |  |  ------------------
  |  |  |  |   57|      1|#define PyMUTEX_INIT(mut)       pthread_mutex_init((mut), NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (57:33): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  112|      1|        Py_FatalError("PyMUTEX_INIT(" #mut ") failed"); };
  |  |  ------------------
  |  |  |  |  133|      0|#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))
  |  |  ------------------
  ------------------
  166|      1|#ifdef FORCE_SWITCHING
  167|      1|    MUTEX_INIT(gil->switch_mutex);
  ------------------
  |  |  111|      1|    if (PyMUTEX_INIT(&(mut))) { \
  |  |  ------------------
  |  |  |  |   57|      1|#define PyMUTEX_INIT(mut)       pthread_mutex_init((mut), NULL)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (57:33): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  112|      1|        Py_FatalError("PyMUTEX_INIT(" #mut ") failed"); };
  |  |  ------------------
  |  |  |  |  133|      0|#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))
  |  |  ------------------
  ------------------
  168|      1|#endif
  169|      1|    COND_INIT(gil->cond);
  ------------------
  |  |  124|      1|    if (PyCOND_INIT(&(cond))) { \
  |  |  ------------------
  |  |  |  |   62|      1|#define PyCOND_INIT(cond)       _PyThread_cond_init(cond)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (62:33): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  125|      1|        Py_FatalError("PyCOND_INIT(" #cond ") failed"); };
  |  |  ------------------
  |  |  |  |  133|      0|#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))
  |  |  ------------------
  ------------------
  170|      1|#ifdef FORCE_SWITCHING
  171|      1|    COND_INIT(gil->switch_cond);
  ------------------
  |  |  124|      1|    if (PyCOND_INIT(&(cond))) { \
  |  |  ------------------
  |  |  |  |   62|      1|#define PyCOND_INIT(cond)       _PyThread_cond_init(cond)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (62:33): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  125|      1|        Py_FatalError("PyCOND_INIT(" #cond ") failed"); };
  |  |  ------------------
  |  |  |  |  133|      0|#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))
  |  |  ------------------
  ------------------
  172|      1|#endif
  173|      1|    _Py_atomic_store_ptr_relaxed(&gil->last_holder, 0);
  174|      1|    _Py_ANNOTATE_RWLOCK_CREATE(&gil->locked);
  175|      1|    _Py_atomic_store_int_release(&gil->locked, 0);
  176|      1|}
ceval_gil.c:take_gil:
  287|    328|{
  288|    328|    int err = errno;
  289|       |
  290|    328|    assert(tstate != NULL);
  ------------------
  |  Branch (290:5): [True: 328, False: 0]
  ------------------
  291|       |    /* We shouldn't be using a thread state that isn't viable any more. */
  292|       |    // XXX It may be more correct to check tstate->_status.finalizing.
  293|       |    // XXX assert(!tstate->_status.cleared);
  294|       |
  295|    328|    if (_PyThreadState_MustExit(tstate)) {
  ------------------
  |  Branch (295:9): [True: 0, False: 328]
  ------------------
  296|       |        /* bpo-39877: If Py_Finalize() has been called and tstate is not the
  297|       |           thread which called Py_Finalize(), this thread cannot continue.
  298|       |
  299|       |           This code path can be reached by a daemon thread after Py_Finalize()
  300|       |           completes.
  301|       |
  302|       |           This used to call a *thread_exit API, but that was not safe as it
  303|       |           lacks stack unwinding and local variable destruction important to
  304|       |           C++. gh-87135: The best that can be done is to hang the thread as
  305|       |           the public APIs calling this have no error reporting mechanism (!).
  306|       |         */
  307|      0|        _PyThreadState_HangThread(tstate);
  308|      0|    }
  309|       |
  310|    328|    assert(_PyThreadState_CheckConsistency(tstate));
  ------------------
  |  Branch (310:5): [True: 328, False: 0]
  ------------------
  311|    328|    PyInterpreterState *interp = tstate->interp;
  312|    328|    struct _gil_runtime_state *gil = interp->ceval.gil;
  313|       |#ifdef Py_GIL_DISABLED
  314|       |    if (!_Py_atomic_load_int_relaxed(&gil->enabled)) {
  315|       |        return;
  316|       |    }
  317|       |#endif
  318|       |
  319|       |    /* Check that _PyEval_InitThreads() was called to create the lock */
  320|    328|    assert(gil_created(gil));
  ------------------
  |  Branch (320:5): [True: 328, False: 0]
  ------------------
  321|       |
  322|    656|    MUTEX_LOCK(gil->mutex);
  ------------------
  |  |  117|    328|    if (PyMUTEX_LOCK(&(mut))) { \
  |  |  ------------------
  |  |  |  |   59|    328|#define PyMUTEX_LOCK(mut)       pthread_mutex_lock(mut)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (59:33): [True: 0, False: 328]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  118|    328|        Py_FatalError("PyMUTEX_LOCK(" #mut ") failed"); };
  |  |  ------------------
  |  |  |  |  133|      0|#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))
  |  |  ------------------
  ------------------
  323|       |
  324|    656|    tstate->gil_requested = 1;
  325|       |
  326|    656|    int drop_requested = 0;
  327|    656|    while (_Py_atomic_load_int_relaxed(&gil->locked)) {
  ------------------
  |  Branch (327:12): [True: 0, False: 328]
  ------------------
  328|      0|        unsigned long saved_switchnum = gil->switch_number;
  329|       |
  330|      0|        unsigned long interval = _Py_atomic_load_ulong_relaxed(&gil->interval);
  ------------------
  |  |  615|      0|    _Py_atomic_load_uint64_relaxed((uint64_t *)p)
  ------------------
  331|      0|        if (interval < 1) {
  ------------------
  |  Branch (331:13): [True: 0, False: 0]
  ------------------
  332|      0|            interval = 1;
  333|      0|        }
  334|      0|        int timed_out = 0;
  335|      0|        COND_TIMED_WAIT(gil->cond, gil->mutex, interval, timed_out);
  ------------------
  |  |  136|      0|    { \
  |  |  137|      0|        int r = PyCOND_TIMEDWAIT(&(cond), &(mut), (microseconds)); \
  |  |  138|      0|        if (r < 0) \
  |  |  ------------------
  |  |  |  Branch (138:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  139|      0|            Py_FatalError("PyCOND_WAIT(" #cond ") failed"); \
  |  |  ------------------
  |  |  |  |  133|      0|#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))
  |  |  ------------------
  |  |  140|      0|        if (r) /* 1 == timeout, 2 == impl. can't say, so assume timeout */ \
  |  |  ------------------
  |  |  |  Branch (140:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  141|      0|            timeout_result = 1; \
  |  |  142|      0|        else \
  |  |  143|      0|            timeout_result = 0; \
  |  |  144|      0|    } \
  ------------------
  336|       |
  337|       |        /* If we timed out and no switch occurred in the meantime, it is time
  338|       |           to ask the GIL-holding thread to drop it. */
  339|      0|        if (timed_out &&
  ------------------
  |  Branch (339:13): [True: 0, False: 0]
  ------------------
  340|      0|            _Py_atomic_load_int_relaxed(&gil->locked) &&
  ------------------
  |  Branch (340:13): [True: 0, False: 0]
  ------------------
  341|      0|            gil->switch_number == saved_switchnum)
  ------------------
  |  Branch (341:13): [True: 0, False: 0]
  ------------------
  342|      0|        {
  343|      0|            PyThreadState *holder_tstate =
  344|      0|                (PyThreadState*)_Py_atomic_load_ptr_relaxed(&gil->last_holder);
  345|      0|            if (_PyThreadState_MustExit(tstate)) {
  ------------------
  |  Branch (345:17): [True: 0, False: 0]
  ------------------
  346|      0|                MUTEX_UNLOCK(gil->mutex);
  ------------------
  |  |  120|      0|    if (PyMUTEX_UNLOCK(&(mut))) { \
  |  |  ------------------
  |  |  |  |   60|      0|#define PyMUTEX_UNLOCK(mut)     pthread_mutex_unlock(mut)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (60:33): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  121|      0|        Py_FatalError("PyMUTEX_UNLOCK(" #mut ") failed"); };
  |  |  ------------------
  |  |  |  |  133|      0|#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))
  |  |  ------------------
  ------------------
  347|       |                // gh-96387: If the loop requested a drop request in a previous
  348|       |                // iteration, reset the request. Otherwise, drop_gil() can
  349|       |                // block forever waiting for the thread which exited. Drop
  350|       |                // requests made by other threads are also reset: these threads
  351|       |                // may have to request again a drop request (iterate one more
  352|       |                // time).
  353|      0|                if (drop_requested) {
  ------------------
  |  Branch (353:21): [True: 0, False: 0]
  ------------------
  354|      0|                    _Py_unset_eval_breaker_bit(holder_tstate, _PY_GIL_DROP_REQUEST_BIT);
  ------------------
  |  |  346|      0|#define _PY_GIL_DROP_REQUEST_BIT (1U << 0)
  ------------------
  355|      0|                }
  356|       |                // gh-87135: hang the thread as *thread_exit() is not a safe
  357|       |                // API. It lacks stack unwind and local variable destruction.
  358|      0|                _PyThreadState_HangThread(tstate);
  359|      0|            }
  360|      0|            assert(_PyThreadState_CheckConsistency(tstate));
  ------------------
  |  Branch (360:13): [True: 0, False: 0]
  ------------------
  361|       |
  362|      0|            _Py_set_eval_breaker_bit(holder_tstate, _PY_GIL_DROP_REQUEST_BIT);
  ------------------
  |  |  346|      0|#define _PY_GIL_DROP_REQUEST_BIT (1U << 0)
  ------------------
  363|      0|            drop_requested = 1;
  364|      0|        }
  365|      0|    }
  366|       |
  367|       |#ifdef Py_GIL_DISABLED
  368|       |    if (!_Py_atomic_load_int_relaxed(&gil->enabled)) {
  369|       |        // Another thread disabled the GIL between our check above and
  370|       |        // now. Don't take the GIL, signal any other waiting threads, and
  371|       |        // return.
  372|       |        COND_SIGNAL(gil->cond);
  373|       |        MUTEX_UNLOCK(gil->mutex);
  374|       |        return;
  375|       |    }
  376|       |#endif
  377|       |
  378|    328|#ifdef FORCE_SWITCHING
  379|       |    /* This mutex must be taken before modifying gil->last_holder:
  380|       |       see drop_gil(). */
  381|    656|    MUTEX_LOCK(gil->switch_mutex);
  ------------------
  |  |  117|    328|    if (PyMUTEX_LOCK(&(mut))) { \
  |  |  ------------------
  |  |  |  |   59|    328|#define PyMUTEX_LOCK(mut)       pthread_mutex_lock(mut)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (59:33): [True: 0, False: 328]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  118|    328|        Py_FatalError("PyMUTEX_LOCK(" #mut ") failed"); };
  |  |  ------------------
  |  |  |  |  133|      0|#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))
  |  |  ------------------
  ------------------
  382|    656|#endif
  383|       |    /* We now hold the GIL */
  384|    656|    _Py_atomic_store_int_relaxed(&gil->locked, 1);
  385|    656|    _Py_ANNOTATE_RWLOCK_ACQUIRED(&gil->locked, /*is_write=*/1);
  386|       |
  387|    656|    if (tstate != (PyThreadState*)_Py_atomic_load_ptr_relaxed(&gil->last_holder)) {
  ------------------
  |  Branch (387:9): [True: 1, False: 327]
  ------------------
  388|      1|        _Py_atomic_store_ptr_relaxed(&gil->last_holder, tstate);
  389|      1|        ++gil->switch_number;
  390|      1|    }
  391|       |
  392|    656|#ifdef FORCE_SWITCHING
  393|    656|    COND_SIGNAL(gil->switch_cond);
  ------------------
  |  |  130|    328|    if (PyCOND_SIGNAL(&(cond))) { \
  |  |  ------------------
  |  |  |  |   64|    328|#define PyCOND_SIGNAL(cond)     pthread_cond_signal(cond)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (64:33): [True: 0, False: 328]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  131|    328|        Py_FatalError("PyCOND_SIGNAL(" #cond ") failed"); };
  |  |  ------------------
  |  |  |  |  133|      0|#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))
  |  |  ------------------
  ------------------
  394|    328|    MUTEX_UNLOCK(gil->switch_mutex);
  ------------------
  |  |  120|    328|    if (PyMUTEX_UNLOCK(&(mut))) { \
  |  |  ------------------
  |  |  |  |   60|    328|#define PyMUTEX_UNLOCK(mut)     pthread_mutex_unlock(mut)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (60:33): [True: 0, False: 328]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  121|    328|        Py_FatalError("PyMUTEX_UNLOCK(" #mut ") failed"); };
  |  |  ------------------
  |  |  |  |  133|      0|#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))
  |  |  ------------------
  ------------------
  395|    328|#endif
  396|       |
  397|    328|    if (_PyThreadState_MustExit(tstate)) {
  ------------------
  |  Branch (397:9): [True: 0, False: 328]
  ------------------
  398|       |        /* bpo-36475: If Py_Finalize() has been called and tstate is not
  399|       |           the thread which called Py_Finalize(), gh-87135: hang the
  400|       |           thread.
  401|       |
  402|       |           This code path can be reached by a daemon thread which was waiting
  403|       |           in take_gil() while the main thread called
  404|       |           wait_for_thread_shutdown() from Py_Finalize(). */
  405|      0|        MUTEX_UNLOCK(gil->mutex);
  ------------------
  |  |  120|      0|    if (PyMUTEX_UNLOCK(&(mut))) { \
  |  |  ------------------
  |  |  |  |   60|      0|#define PyMUTEX_UNLOCK(mut)     pthread_mutex_unlock(mut)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (60:33): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  121|      0|        Py_FatalError("PyMUTEX_UNLOCK(" #mut ") failed"); };
  |  |  ------------------
  |  |  |  |  133|      0|#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))
  |  |  ------------------
  ------------------
  406|       |        /* tstate could be a dangling pointer, so don't pass it to
  407|       |           drop_gil(). */
  408|      0|        drop_gil(interp, NULL, 1);
  409|      0|        _PyThreadState_HangThread(tstate);
  410|      0|    }
  411|    328|    assert(_PyThreadState_CheckConsistency(tstate));
  ------------------
  |  Branch (411:5): [True: 328, False: 0]
  ------------------
  412|       |
  413|    328|    tstate->gil_requested = 0;
  414|    328|    tstate->holds_gil = 1;
  415|    328|    _Py_unset_eval_breaker_bit(tstate, _PY_GIL_DROP_REQUEST_BIT);
  ------------------
  |  |  346|    328|#define _PY_GIL_DROP_REQUEST_BIT (1U << 0)
  ------------------
  416|    328|    update_eval_breaker_for_thread(interp, tstate);
  417|       |
  418|    328|    MUTEX_UNLOCK(gil->mutex);
  ------------------
  |  |  120|    328|    if (PyMUTEX_UNLOCK(&(mut))) { \
  |  |  ------------------
  |  |  |  |   60|    328|#define PyMUTEX_UNLOCK(mut)     pthread_mutex_unlock(mut)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (60:33): [True: 0, False: 328]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  121|    328|        Py_FatalError("PyMUTEX_UNLOCK(" #mut ") failed"); };
  |  |  ------------------
  |  |  |  |  133|      0|#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))
  |  |  ------------------
  ------------------
  419|       |
  420|       |    errno = err;
  421|    328|    return;
  422|    328|}
ceval_gil.c:update_eval_breaker_for_thread:
   74|    328|{
   75|       |#ifdef Py_GIL_DISABLED
   76|       |    // Free-threaded builds eagerly update the eval_breaker on *all* threads as
   77|       |    // needed, so this function doesn't apply.
   78|       |    return;
   79|       |#endif
   80|       |
   81|    328|    int32_t npending = _Py_atomic_load_int32_relaxed(
   82|    328|        &interp->ceval.pending.npending);
   83|    328|    if (npending) {
  ------------------
  |  Branch (83:9): [True: 0, False: 328]
  ------------------
   84|      0|        _Py_set_eval_breaker_bit(tstate, _PY_CALLS_TO_DO_BIT);
  ------------------
  |  |  348|      0|#define _PY_CALLS_TO_DO_BIT (1U << 2)
  ------------------
   85|      0|    }
   86|    328|    else if (_Py_IsMainThread()) {
  ------------------
  |  Branch (86:14): [True: 328, False: 0]
  ------------------
   87|    328|        npending = _Py_atomic_load_int32_relaxed(
   88|    328|            &_PyRuntime.ceval.pending_mainthread.npending);
   89|    328|        if (npending) {
  ------------------
  |  Branch (89:13): [True: 0, False: 328]
  ------------------
   90|      0|            _Py_set_eval_breaker_bit(tstate, _PY_CALLS_TO_DO_BIT);
  ------------------
  |  |  348|      0|#define _PY_CALLS_TO_DO_BIT (1U << 2)
  ------------------
   91|      0|        }
   92|    328|    }
   93|       |
   94|       |    // _PY_CALLS_TO_DO_BIT was derived from other state above, so the only bits
   95|       |    // we copy from our interpreter's state are the instrumentation version.
   96|    328|    copy_eval_breaker_bits(&interp->ceval.instrumentation_version,
   97|    328|                           &tstate->eval_breaker,
   98|    328|                           ~_PY_EVAL_EVENTS_MASK);
  ------------------
  |  |  357|    328|#define _PY_EVAL_EVENTS_MASK ((1 << _PY_EVAL_EVENTS_BITS)-1)
  |  |  ------------------
  |  |  |  |  356|    328|#define _PY_EVAL_EVENTS_BITS 8
  |  |  ------------------
  ------------------
   99|    328|}
ceval_gil.c:copy_eval_breaker_bits:
   56|    328|{
   57|    328|    uintptr_t from_bits = _Py_atomic_load_uintptr_relaxed(from) & mask;
   58|    328|    uintptr_t old_value = _Py_atomic_load_uintptr_relaxed(to);
   59|    328|    uintptr_t to_bits = old_value & mask;
   60|    328|    if (from_bits == to_bits) {
  ------------------
  |  Branch (60:9): [True: 328, False: 0]
  ------------------
   61|    328|        return;
   62|    328|    }
   63|       |
   64|      0|    uintptr_t new_value;
   65|      0|    do {
   66|      0|        new_value = (old_value & ~mask) | from_bits;
   67|      0|    } while (!_Py_atomic_compare_exchange_uintptr(to, &old_value, new_value));
  ------------------
  |  Branch (67:14): [True: 0, False: 0]
  ------------------
   68|      0|}
ceval_gil.c:drop_gil:
  218|    327|{
  219|    327|    struct _ceval_state *ceval = &interp->ceval;
  220|       |    /* If final_release is true, the caller is indicating that we're releasing
  221|       |       the GIL for the last time in this thread.  This is particularly
  222|       |       relevant when the current thread state is finalizing or its
  223|       |       interpreter is finalizing (either may be in an inconsistent
  224|       |       state).  In that case the current thread will definitely
  225|       |       never try to acquire the GIL again. */
  226|       |    // XXX It may be more correct to check tstate->_status.finalizing.
  227|       |    // XXX assert(final_release || !tstate->_status.cleared);
  228|       |
  229|    327|    assert(final_release || tstate != NULL);
  ------------------
  |  Branch (229:5): [True: 0, False: 327]
  |  Branch (229:5): [True: 327, False: 0]
  ------------------
  230|    327|    struct _gil_runtime_state *gil = ceval->gil;
  231|       |#ifdef Py_GIL_DISABLED
  232|       |    // Check if we have the GIL before dropping it. tstate will be NULL if
  233|       |    // take_gil() detected that this thread has been destroyed, in which case
  234|       |    // we know we have the GIL.
  235|       |    if (tstate != NULL && !tstate->holds_gil) {
  236|       |        return;
  237|       |    }
  238|       |#endif
  239|    327|    if (!_Py_atomic_load_int_relaxed(&gil->locked)) {
  ------------------
  |  Branch (239:9): [True: 0, False: 327]
  ------------------
  240|      0|        Py_FatalError("drop_gil: GIL is not locked");
  ------------------
  |  |  133|      0|#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))
  ------------------
  241|      0|    }
  242|       |
  243|    327|    if (!final_release) {
  ------------------
  |  Branch (243:9): [True: 327, False: 0]
  ------------------
  244|       |        /* Sub-interpreter support: threads might have been switched
  245|       |           under our feet using PyThreadState_Swap(). Fix the GIL last
  246|       |           holder variable so that our heuristics work. */
  247|    327|        _Py_atomic_store_ptr_relaxed(&gil->last_holder, tstate);
  248|    327|    }
  249|       |
  250|    327|    drop_gil_impl(tstate, gil);
  251|       |
  252|    327|#ifdef FORCE_SWITCHING
  253|       |    /* We might be releasing the GIL for the last time in this thread.  In that
  254|       |       case there's a possible race with tstate->interp getting deleted after
  255|       |       gil->mutex is unlocked and before the following code runs, leading to a
  256|       |       crash.  We can use final_release to indicate the thread is done with the
  257|       |       GIL, and that's the only time we might delete the interpreter.  See
  258|       |       https://github.com/python/cpython/issues/104341. */
  259|    327|    if (!final_release &&
  ------------------
  |  Branch (259:9): [True: 327, False: 0]
  ------------------
  260|    327|        _Py_eval_breaker_bit_is_set(tstate, _PY_GIL_DROP_REQUEST_BIT)) {
  ------------------
  |  |  346|    327|#define _PY_GIL_DROP_REQUEST_BIT (1U << 0)
  ------------------
  |  Branch (260:9): [True: 0, False: 327]
  ------------------
  261|      0|        MUTEX_LOCK(gil->switch_mutex);
  ------------------
  |  |  117|      0|    if (PyMUTEX_LOCK(&(mut))) { \
  |  |  ------------------
  |  |  |  |   59|      0|#define PyMUTEX_LOCK(mut)       pthread_mutex_lock(mut)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (59:33): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  118|      0|        Py_FatalError("PyMUTEX_LOCK(" #mut ") failed"); };
  |  |  ------------------
  |  |  |  |  133|      0|#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))
  |  |  ------------------
  ------------------
  262|       |        /* Not switched yet => wait */
  263|      0|        if (((PyThreadState*)_Py_atomic_load_ptr_relaxed(&gil->last_holder)) == tstate)
  ------------------
  |  Branch (263:13): [True: 0, False: 0]
  ------------------
  264|      0|        {
  265|      0|            assert(_PyThreadState_CheckConsistency(tstate));
  ------------------
  |  Branch (265:13): [True: 0, False: 0]
  ------------------
  266|      0|            _Py_unset_eval_breaker_bit(tstate, _PY_GIL_DROP_REQUEST_BIT);
  ------------------
  |  |  346|      0|#define _PY_GIL_DROP_REQUEST_BIT (1U << 0)
  ------------------
  267|       |            /* NOTE: if COND_WAIT does not atomically start waiting when
  268|       |               releasing the mutex, another thread can run through, take
  269|       |               the GIL and drop it again, and reset the condition
  270|       |               before we even had a chance to wait for it. */
  271|      0|            COND_WAIT(gil->switch_cond, gil->switch_mutex);
  ------------------
  |  |  133|      0|    if (PyCOND_WAIT(&(cond), &(mut))) { \
  |  |  ------------------
  |  |  |  |   66|      0|#define PyCOND_WAIT(cond, mut)  pthread_cond_wait((cond), (mut))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (66:33): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  134|      0|        Py_FatalError("PyCOND_WAIT(" #cond ") failed"); };
  |  |  ------------------
  |  |  |  |  133|      0|#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))
  |  |  ------------------
  ------------------
  272|      0|        }
  273|      0|        MUTEX_UNLOCK(gil->switch_mutex);
  ------------------
  |  |  120|      0|    if (PyMUTEX_UNLOCK(&(mut))) { \
  |  |  ------------------
  |  |  |  |   60|      0|#define PyMUTEX_UNLOCK(mut)     pthread_mutex_unlock(mut)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (60:33): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  121|      0|        Py_FatalError("PyMUTEX_UNLOCK(" #mut ") failed"); };
  |  |  ------------------
  |  |  |  |  133|      0|#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))
  |  |  ------------------
  ------------------
  274|      0|    }
  275|    327|#endif
  276|    327|}
ceval_gil.c:drop_gil_impl:
  204|    327|{
  205|    327|    MUTEX_LOCK(gil->mutex);
  ------------------
  |  |  117|    327|    if (PyMUTEX_LOCK(&(mut))) { \
  |  |  ------------------
  |  |  |  |   59|    327|#define PyMUTEX_LOCK(mut)       pthread_mutex_lock(mut)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (59:33): [True: 0, False: 327]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  118|    327|        Py_FatalError("PyMUTEX_LOCK(" #mut ") failed"); };
  |  |  ------------------
  |  |  |  |  133|      0|#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))
  |  |  ------------------
  ------------------
  206|    327|    _Py_ANNOTATE_RWLOCK_RELEASED(&gil->locked, /*is_write=*/1);
  207|    327|    _Py_atomic_store_int_relaxed(&gil->locked, 0);
  208|    327|    if (tstate != NULL) {
  ------------------
  |  Branch (208:9): [True: 327, False: 0]
  ------------------
  209|    327|        tstate->holds_gil = 0;
  210|    327|        tstate->gil_requested = 0;
  211|    327|    }
  212|    327|    COND_SIGNAL(gil->cond);
  ------------------
  |  |  130|    327|    if (PyCOND_SIGNAL(&(cond))) { \
  |  |  ------------------
  |  |  |  |   64|    327|#define PyCOND_SIGNAL(cond)     pthread_cond_signal(cond)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (64:33): [True: 0, False: 327]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  131|    327|        Py_FatalError("PyCOND_SIGNAL(" #cond ") failed"); };
  |  |  ------------------
  |  |  |  |  133|      0|#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))
  |  |  ------------------
  ------------------
  213|    327|    MUTEX_UNLOCK(gil->mutex);
  ------------------
  |  |  120|    327|    if (PyMUTEX_UNLOCK(&(mut))) { \
  |  |  ------------------
  |  |  |  |   60|    327|#define PyMUTEX_UNLOCK(mut)     pthread_mutex_unlock(mut)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (60:33): [True: 0, False: 327]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  121|    327|        Py_FatalError("PyMUTEX_UNLOCK(" #mut ") failed"); };
  |  |  ------------------
  |  |  |  |  133|      0|#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))
  |  |  ------------------
  ------------------
  214|    327|}
ceval_gil.c:_gil_initialize:
  150|      1|{
  151|      1|    gil->locked = -1;
  152|      1|    gil->interval = DEFAULT_INTERVAL;
  ------------------
  |  |  147|      1|#define DEFAULT_INTERVAL 5000
  ------------------
  153|      1|}

ceval.c:_Py_EnterRecursivePy:
  405|    785|static inline int _Py_EnterRecursivePy(PyThreadState *tstate) {
  406|    785|    return (tstate->py_recursion_remaining-- <= 0) &&
  ------------------
  |  Branch (406:12): [True: 0, False: 785]
  ------------------
  407|      0|        _Py_CheckRecursiveCallPy(tstate);
  ------------------
  |  Branch (407:9): [True: 0, False: 0]
  ------------------
  408|    785|}
ceval.c:check_periodics:
  520|  3.32k|check_periodics(PyThreadState *tstate) {
  521|  3.32k|    _Py_CHECK_EMSCRIPTEN_SIGNALS_PERIODICALLY();
  522|  3.32k|    QSBR_QUIESCENT_STATE(tstate);
  523|  3.32k|    if (_Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker) & _PY_EVAL_EVENTS_MASK) {
  ------------------
  |  |  357|  3.32k|#define _PY_EVAL_EVENTS_MASK ((1 << _PY_EVAL_EVENTS_BITS)-1)
  |  |  ------------------
  |  |  |  |  356|  3.32k|#define _PY_EVAL_EVENTS_BITS 8
  |  |  ------------------
  ------------------
  |  Branch (523:9): [True: 2, False: 3.32k]
  ------------------
  524|      2|        return _Py_HandlePending(tstate);
  525|      2|    }
  526|  3.32k|    return 0;
  527|  3.32k|}
ceval.c:gen_try_set_executing:
  533|      7|{
  534|       |#ifdef Py_GIL_DISABLED
  535|       |    if (!_PyObject_IsUniquelyReferenced((PyObject *)gen)) {
  536|       |        int8_t frame_state = _Py_atomic_load_int8_relaxed(&gen->gi_frame_state);
  537|       |        while (frame_state < FRAME_SUSPENDED_YIELD_FROM_LOCKED) {
  538|       |            if (_Py_atomic_compare_exchange_int8(&gen->gi_frame_state,
  539|       |                                                 &frame_state,
  540|       |                                                 FRAME_EXECUTING)) {
  541|       |                return true;
  542|       |            }
  543|       |        }
  544|       |        // NB: We return false for FRAME_SUSPENDED_YIELD_FROM_LOCKED as well.
  545|       |        // That case is rare enough that we can just handle it in the deopt.
  546|       |        return false;
  547|       |    }
  548|       |#endif
  549|       |    // Use faster non-atomic modifications in the GIL-enabled build and when
  550|       |    // the object is uniquely referenced in the free-threaded build.
  551|      7|    if (gen->gi_frame_state < FRAME_EXECUTING) {
  ------------------
  |  Branch (551:9): [True: 7, False: 0]
  ------------------
  552|      7|        assert(gen->gi_frame_state != FRAME_SUSPENDED_YIELD_FROM_LOCKED);
  ------------------
  |  Branch (552:9): [True: 7, False: 0]
  ------------------
  553|      7|        gen->gi_frame_state = FRAME_EXECUTING;
  554|      7|        return true;
  555|      7|    }
  556|      0|    return false;
  557|      7|}
ceval.c:_Py_LeaveRecursiveCallPy:
  410|  1.77k|static inline void _Py_LeaveRecursiveCallPy(PyThreadState *tstate)  {
  411|  1.77k|    tstate->py_recursion_remaining++;
  412|  1.77k|}

bltinmodule.c:builtin___import__:
   41|     10|{
   42|     10|    PyObject *return_value = NULL;
   43|     10|    #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
   44|       |
   45|     10|    #define NUM_KEYWORDS 5
   46|     10|    static struct {
   47|     10|        PyGC_Head _this_is_not_used;
   48|     10|        PyObject_VAR_HEAD
   49|     10|        Py_hash_t ob_hash;
   50|     10|        PyObject *ob_item[NUM_KEYWORDS];
   51|     10|    } _kwtuple = {
   52|     10|        .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
  ------------------
  |  |   97|     10|    {                                     \
  |  |   98|     10|        PyObject_HEAD_INIT(type)          \
  |  |  ------------------
  |  |  |  |   90|     10|    {                               \
  |  |  |  |   91|     10|        { _Py_STATIC_IMMORTAL_INITIAL_REFCNT },    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   50|     10|#define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   47|     10|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|     10|#define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  583|     10|#define _Py_STATICALLY_ALLOCATED_FLAG (1 << 2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  581|     10|#define _Py_IMMORTAL_FLAGS (1 << 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   92|     10|        (type)                      \
  |  |  |  |   93|     10|    },
  |  |  ------------------
  |  |   99|     10|        (size)                            \
  |  |  100|     10|    },
  ------------------
   53|     10|        .ob_hash = -1,
   54|     10|        .ob_item = { &_Py_ID(name), &_Py_ID(globals), &_Py_ID(locals), &_Py_ID(fromlist), &_Py_ID(level), },
  ------------------
  |  |  917|     10|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     10|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     10|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      .ob_item = { &_Py_ID(name), &_Py_ID(globals), &_Py_ID(locals), &_Py_ID(fromlist), &_Py_ID(level), },
  ------------------
  |  |  917|     10|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     10|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     10|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      .ob_item = { &_Py_ID(name), &_Py_ID(globals), &_Py_ID(locals), &_Py_ID(fromlist), &_Py_ID(level), },
  ------------------
  |  |  917|     10|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     10|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     10|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      .ob_item = { &_Py_ID(name), &_Py_ID(globals), &_Py_ID(locals), &_Py_ID(fromlist), &_Py_ID(level), },
  ------------------
  |  |  917|     10|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     10|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     10|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      .ob_item = { &_Py_ID(name), &_Py_ID(globals), &_Py_ID(locals), &_Py_ID(fromlist), &_Py_ID(level), },
  ------------------
  |  |  917|     10|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     10|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     10|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   55|     10|    };
   56|     10|    #undef NUM_KEYWORDS
   57|     10|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
   58|       |
   59|       |    #else  // !Py_BUILD_CORE
   60|       |    #  define KWTUPLE NULL
   61|       |    #endif  // !Py_BUILD_CORE
   62|       |
   63|     10|    static const char * const _keywords[] = {"name", "globals", "locals", "fromlist", "level", NULL};
   64|     10|    static _PyArg_Parser _parser = {
   65|     10|        .keywords = _keywords,
   66|     10|        .fname = "__import__",
   67|     10|        .kwtuple = KWTUPLE,
  ------------------
  |  |   57|     10|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
  ------------------
   68|     10|    };
   69|     10|    #undef KWTUPLE
   70|     10|    PyObject *argsbuf[5];
   71|     10|    Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
  ------------------
  |  |   27|      1|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (71:36): [True: 1, False: 9]
  ------------------
   72|     10|    PyObject *name;
   73|     10|    PyObject *globals = NULL;
   74|     10|    PyObject *locals = NULL;
   75|     10|    PyObject *fromlist = NULL;
   76|     10|    int level = 0;
   77|       |
   78|     10|    args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser,
  ------------------
  |  |   88|     10|    (((minkw) == 0 && (kwargs) == NULL && (kwnames) == NULL && \
  |  |  ------------------
  |  |  |  Branch (88:7): [True: 0, Folded]
  |  |  |  Branch (88:23): [True: 0, Folded]
  |  |  |  Branch (88:43): [True: 9, False: 1]
  |  |  ------------------
  |  |   89|     10|      (minpos) <= (nargs) && ((varpos) || (nargs) <= (maxpos)) && (args) != NULL) ? \
  |  |  ------------------
  |  |  |  Branch (89:7): [True: 9, False: 0]
  |  |  |  Branch (89:31): [Folded, False: 9]
  |  |  |  Branch (89:43): [True: 9, False: 0]
  |  |  |  Branch (89:67): [True: 9, False: 0]
  |  |  ------------------
  |  |   90|     10|      (args) : \
  |  |   91|     10|     _PyArg_UnpackKeywords((args), (nargs), (kwargs), (kwnames), (parser), \
  |  |   92|      1|                           (minpos), (maxpos), (minkw), (varpos), (buf)))
  ------------------
   79|     10|            /*minpos*/ 1, /*maxpos*/ 5, /*minkw*/ 0, /*varpos*/ 0, argsbuf);
   80|     10|    if (!args) {
  ------------------
  |  Branch (80:9): [True: 0, False: 10]
  ------------------
   81|      0|        goto exit;
   82|      0|    }
   83|     10|    name = args[0];
   84|     10|    if (!noptargs) {
  ------------------
  |  Branch (84:9): [True: 2, False: 8]
  ------------------
   85|      2|        goto skip_optional_pos;
   86|      2|    }
   87|      8|    if (args[1]) {
  ------------------
  |  Branch (87:9): [True: 7, False: 1]
  ------------------
   88|      7|        globals = args[1];
   89|      7|        if (!--noptargs) {
  ------------------
  |  Branch (89:13): [True: 0, False: 7]
  ------------------
   90|      0|            goto skip_optional_pos;
   91|      0|        }
   92|      7|    }
   93|      8|    if (args[2]) {
  ------------------
  |  Branch (93:9): [True: 7, False: 1]
  ------------------
   94|      7|        locals = args[2];
   95|      7|        if (!--noptargs) {
  ------------------
  |  Branch (95:13): [True: 0, False: 7]
  ------------------
   96|      0|            goto skip_optional_pos;
   97|      0|        }
   98|      7|    }
   99|      8|    if (args[3]) {
  ------------------
  |  Branch (99:9): [True: 8, False: 0]
  ------------------
  100|      8|        fromlist = args[3];
  101|      8|        if (!--noptargs) {
  ------------------
  |  Branch (101:13): [True: 0, False: 8]
  ------------------
  102|      0|            goto skip_optional_pos;
  103|      0|        }
  104|      8|    }
  105|      8|    level = PyLong_AsInt(args[4]);
  106|      8|    if (level == -1 && PyErr_Occurred()) {
  ------------------
  |  Branch (106:9): [True: 0, False: 8]
  |  Branch (106:24): [True: 0, False: 0]
  ------------------
  107|      0|        goto exit;
  108|      0|    }
  109|     10|skip_optional_pos:
  110|     10|    return_value = builtin___import___impl(module, name, globals, locals, fromlist, level);
  111|       |
  112|     10|exit:
  113|     10|    return return_value;
  114|     10|}
bltinmodule.c:builtin_exec:
  611|     14|{
  612|     14|    PyObject *return_value = NULL;
  613|     14|    #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
  614|       |
  615|     14|    #define NUM_KEYWORDS 3
  616|     14|    static struct {
  617|     14|        PyGC_Head _this_is_not_used;
  618|     14|        PyObject_VAR_HEAD
  619|     14|        Py_hash_t ob_hash;
  620|     14|        PyObject *ob_item[NUM_KEYWORDS];
  621|     14|    } _kwtuple = {
  622|     14|        .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
  ------------------
  |  |   97|     14|    {                                     \
  |  |   98|     14|        PyObject_HEAD_INIT(type)          \
  |  |  ------------------
  |  |  |  |   90|     14|    {                               \
  |  |  |  |   91|     14|        { _Py_STATIC_IMMORTAL_INITIAL_REFCNT },    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   50|     14|#define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   47|     14|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|     14|#define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  583|     14|#define _Py_STATICALLY_ALLOCATED_FLAG (1 << 2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  581|     14|#define _Py_IMMORTAL_FLAGS (1 << 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   92|     14|        (type)                      \
  |  |  |  |   93|     14|    },
  |  |  ------------------
  |  |   99|     14|        (size)                            \
  |  |  100|     14|    },
  ------------------
  623|     14|        .ob_hash = -1,
  624|     14|        .ob_item = { &_Py_ID(globals), &_Py_ID(locals), &_Py_ID(closure), },
  ------------------
  |  |  917|     14|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     14|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     14|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      .ob_item = { &_Py_ID(globals), &_Py_ID(locals), &_Py_ID(closure), },
  ------------------
  |  |  917|     14|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     14|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     14|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      .ob_item = { &_Py_ID(globals), &_Py_ID(locals), &_Py_ID(closure), },
  ------------------
  |  |  917|     14|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     14|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     14|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  625|     14|    };
  626|     14|    #undef NUM_KEYWORDS
  627|     14|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
  628|       |
  629|       |    #else  // !Py_BUILD_CORE
  630|       |    #  define KWTUPLE NULL
  631|       |    #endif  // !Py_BUILD_CORE
  632|       |
  633|     14|    static const char * const _keywords[] = {"", "globals", "locals", "closure", NULL};
  634|     14|    static _PyArg_Parser _parser = {
  635|     14|        .keywords = _keywords,
  636|     14|        .fname = "exec",
  637|     14|        .kwtuple = KWTUPLE,
  ------------------
  |  |  627|     14|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
  ------------------
  638|     14|    };
  639|     14|    #undef KWTUPLE
  640|     14|    PyObject *argsbuf[4];
  641|     14|    Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
  ------------------
  |  |   27|      0|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (641:36): [True: 0, False: 14]
  ------------------
  642|     14|    PyObject *source;
  643|     14|    PyObject *globals = Py_None;
  ------------------
  |  |  616|     14|#  define Py_None (&_Py_NoneStruct)
  ------------------
  644|     14|    PyObject *locals = Py_None;
  ------------------
  |  |  616|     14|#  define Py_None (&_Py_NoneStruct)
  ------------------
  645|     14|    PyObject *closure = NULL;
  646|       |
  647|     14|    args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser,
  ------------------
  |  |   88|     14|    (((minkw) == 0 && (kwargs) == NULL && (kwnames) == NULL && \
  |  |  ------------------
  |  |  |  Branch (88:7): [True: 0, Folded]
  |  |  |  Branch (88:23): [True: 0, Folded]
  |  |  |  Branch (88:43): [True: 14, False: 0]
  |  |  ------------------
  |  |   89|     14|      (minpos) <= (nargs) && ((varpos) || (nargs) <= (maxpos)) && (args) != NULL) ? \
  |  |  ------------------
  |  |  |  Branch (89:7): [True: 14, False: 0]
  |  |  |  Branch (89:31): [Folded, False: 14]
  |  |  |  Branch (89:43): [True: 14, False: 0]
  |  |  |  Branch (89:67): [True: 14, False: 0]
  |  |  ------------------
  |  |   90|     14|      (args) : \
  |  |   91|     14|     _PyArg_UnpackKeywords((args), (nargs), (kwargs), (kwnames), (parser), \
  |  |   92|      0|                           (minpos), (maxpos), (minkw), (varpos), (buf)))
  ------------------
  648|     14|            /*minpos*/ 1, /*maxpos*/ 3, /*minkw*/ 0, /*varpos*/ 0, argsbuf);
  649|     14|    if (!args) {
  ------------------
  |  Branch (649:9): [True: 0, False: 14]
  ------------------
  650|      0|        goto exit;
  651|      0|    }
  652|     14|    source = args[0];
  653|     14|    if (!noptargs) {
  ------------------
  |  Branch (653:9): [True: 0, False: 14]
  ------------------
  654|      0|        goto skip_optional_pos;
  655|      0|    }
  656|     14|    if (args[1]) {
  ------------------
  |  Branch (656:9): [True: 14, False: 0]
  ------------------
  657|     14|        globals = args[1];
  658|     14|        if (!--noptargs) {
  ------------------
  |  Branch (658:13): [True: 14, False: 0]
  ------------------
  659|     14|            goto skip_optional_pos;
  660|     14|        }
  661|     14|    }
  662|      0|    if (args[2]) {
  ------------------
  |  Branch (662:9): [True: 0, False: 0]
  ------------------
  663|      0|        locals = args[2];
  664|      0|        if (!--noptargs) {
  ------------------
  |  Branch (664:13): [True: 0, False: 0]
  ------------------
  665|      0|            goto skip_optional_pos;
  666|      0|        }
  667|      0|    }
  668|     14|skip_optional_pos:
  669|     14|    if (!noptargs) {
  ------------------
  |  Branch (669:9): [True: 14, False: 0]
  ------------------
  670|     14|        goto skip_optional_kwonly;
  671|     14|    }
  672|      0|    closure = args[3];
  673|     14|skip_optional_kwonly:
  674|     14|    return_value = builtin_exec_impl(module, source, globals, locals, closure);
  675|       |
  676|     14|exit:
  677|     14|    return return_value;
  678|     14|}
bltinmodule.c:builtin_globals:
  697|     18|{
  698|     18|    return builtin_globals_impl(module);
  699|     18|}
bltinmodule.c:builtin_hasattr:
  717|     82|{
  718|     82|    PyObject *return_value = NULL;
  719|     82|    PyObject *obj;
  720|     82|    PyObject *name;
  721|       |
  722|     82|    if (!_PyArg_CheckPositional("hasattr", nargs, 2, 2)) {
  ------------------
  |  |   31|     82|    (((min) <= (nargs) && (nargs) <= (max)) \
  |  |  ------------------
  |  |  |  Branch (31:7): [True: 82, False: 0]
  |  |  |  Branch (31:27): [True: 82, False: 0]
  |  |  ------------------
  |  |   32|     82|     || _PyArg_CheckPositional((funcname), (nargs), (min), (max)))
  |  |  ------------------
  |  |  |  Branch (32:9): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  723|      0|        goto exit;
  724|      0|    }
  725|     82|    obj = args[0];
  726|     82|    name = args[1];
  727|     82|    return_value = builtin_hasattr_impl(module, obj, name);
  728|       |
  729|     82|exit:
  730|     82|    return return_value;
  731|     82|}
bltinmodule.c:builtin_isinstance:
 1335|     11|{
 1336|     11|    PyObject *return_value = NULL;
 1337|     11|    PyObject *obj;
 1338|     11|    PyObject *class_or_tuple;
 1339|       |
 1340|     11|    if (!_PyArg_CheckPositional("isinstance", nargs, 2, 2)) {
  ------------------
  |  |   31|     11|    (((min) <= (nargs) && (nargs) <= (max)) \
  |  |  ------------------
  |  |  |  Branch (31:7): [True: 11, False: 0]
  |  |  |  Branch (31:27): [True: 11, False: 0]
  |  |  ------------------
  |  |   32|     11|     || _PyArg_CheckPositional((funcname), (nargs), (min), (max)))
  |  |  ------------------
  |  |  |  Branch (32:9): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1341|      0|        goto exit;
 1342|      0|    }
 1343|     11|    obj = args[0];
 1344|     11|    class_or_tuple = args[1];
 1345|     11|    return_value = builtin_isinstance_impl(module, obj, class_or_tuple);
 1346|       |
 1347|     11|exit:
 1348|     11|    return return_value;
 1349|     11|}
bltinmodule.c:builtin_setattr:
  775|     41|{
  776|     41|    PyObject *return_value = NULL;
  777|     41|    PyObject *obj;
  778|     41|    PyObject *name;
  779|     41|    PyObject *value;
  780|       |
  781|     41|    if (!_PyArg_CheckPositional("setattr", nargs, 3, 3)) {
  ------------------
  |  |   31|     41|    (((min) <= (nargs) && (nargs) <= (max)) \
  |  |  ------------------
  |  |  |  Branch (31:7): [True: 41, False: 0]
  |  |  |  Branch (31:27): [True: 41, False: 0]
  |  |  ------------------
  |  |   32|     41|     || _PyArg_CheckPositional((funcname), (nargs), (min), (max)))
  |  |  ------------------
  |  |  |  Branch (32:9): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  782|      0|        goto exit;
  783|      0|    }
  784|     41|    obj = args[0];
  785|     41|    name = args[1];
  786|     41|    value = args[2];
  787|     41|    return_value = builtin_setattr_impl(module, obj, name, value);
  788|       |
  789|     41|exit:
  790|     41|    return return_value;
  791|     41|}

import.c:_imp_extension_suffixes:
  139|      2|{
  140|      2|    return _imp_extension_suffixes_impl(module);
  141|      2|}
import.c:_imp_acquire_lock:
   48|     96|{
   49|     96|    return _imp_acquire_lock_impl(module);
   50|     96|}
import.c:_imp_release_lock:
   68|     96|{
   69|     96|    return _imp_release_lock_impl(module);
   70|     96|}
import.c:_imp_find_frozen:
  194|     16|{
  195|     16|    PyObject *return_value = NULL;
  196|     16|    #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
  197|       |
  198|     16|    #define NUM_KEYWORDS 1
  199|     16|    static struct {
  200|     16|        PyGC_Head _this_is_not_used;
  201|     16|        PyObject_VAR_HEAD
  202|     16|        Py_hash_t ob_hash;
  203|     16|        PyObject *ob_item[NUM_KEYWORDS];
  204|     16|    } _kwtuple = {
  205|     16|        .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
  ------------------
  |  |   97|     16|    {                                     \
  |  |   98|     16|        PyObject_HEAD_INIT(type)          \
  |  |  ------------------
  |  |  |  |   90|     16|    {                               \
  |  |  |  |   91|     16|        { _Py_STATIC_IMMORTAL_INITIAL_REFCNT },    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   50|     16|#define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   47|     16|#define _Py_IMMORTAL_INITIAL_REFCNT (3ULL << 30)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define _Py_STATIC_IMMORTAL_INITIAL_REFCNT (((Py_ssize_t)_Py_IMMORTAL_INITIAL_REFCNT) | (_Py_STATIC_FLAG_BITS << 48))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|     16|#define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  583|     16|#define _Py_STATICALLY_ALLOCATED_FLAG (1 << 2)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               #define _Py_STATIC_FLAG_BITS ((Py_ssize_t)(_Py_STATICALLY_ALLOCATED_FLAG | _Py_IMMORTAL_FLAGS))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  581|     16|#define _Py_IMMORTAL_FLAGS (1 << 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   92|     16|        (type)                      \
  |  |  |  |   93|     16|    },
  |  |  ------------------
  |  |   99|     16|        (size)                            \
  |  |  100|     16|    },
  ------------------
  206|     16|        .ob_hash = -1,
  207|     16|        .ob_item = { &_Py_ID(withdata), },
  ------------------
  |  |  917|     16|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     16|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     16|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  208|     16|    };
  209|     16|    #undef NUM_KEYWORDS
  210|     16|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
  211|       |
  212|       |    #else  // !Py_BUILD_CORE
  213|       |    #  define KWTUPLE NULL
  214|       |    #endif  // !Py_BUILD_CORE
  215|       |
  216|     16|    static const char * const _keywords[] = {"", "withdata", NULL};
  217|     16|    static _PyArg_Parser _parser = {
  218|     16|        .keywords = _keywords,
  219|     16|        .fname = "find_frozen",
  220|     16|        .kwtuple = KWTUPLE,
  ------------------
  |  |  210|     16|    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
  ------------------
  221|     16|    };
  222|     16|    #undef KWTUPLE
  223|     16|    PyObject *argsbuf[2];
  224|     16|    Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
  ------------------
  |  |   27|      0|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (224:36): [True: 0, False: 16]
  ------------------
  225|     16|    PyObject *name;
  226|     16|    int withdata = 0;
  227|       |
  228|     16|    args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser,
  ------------------
  |  |   88|     16|    (((minkw) == 0 && (kwargs) == NULL && (kwnames) == NULL && \
  |  |  ------------------
  |  |  |  Branch (88:7): [True: 0, Folded]
  |  |  |  Branch (88:23): [True: 0, Folded]
  |  |  |  Branch (88:43): [True: 16, False: 0]
  |  |  ------------------
  |  |   89|     16|      (minpos) <= (nargs) && ((varpos) || (nargs) <= (maxpos)) && (args) != NULL) ? \
  |  |  ------------------
  |  |  |  Branch (89:7): [True: 16, False: 0]
  |  |  |  Branch (89:31): [Folded, False: 16]
  |  |  |  Branch (89:43): [True: 16, False: 0]
  |  |  |  Branch (89:67): [True: 16, False: 0]
  |  |  ------------------
  |  |   90|     16|      (args) : \
  |  |   91|     16|     _PyArg_UnpackKeywords((args), (nargs), (kwargs), (kwnames), (parser), \
  |  |   92|      0|                           (minpos), (maxpos), (minkw), (varpos), (buf)))
  ------------------
  229|     16|            /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf);
  230|     16|    if (!args) {
  ------------------
  |  Branch (230:9): [True: 0, False: 16]
  ------------------
  231|      0|        goto exit;
  232|      0|    }
  233|     16|    if (!PyUnicode_Check(args[0])) {
  ------------------
  |  |  103|     16|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     16|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (233:9): [True: 0, False: 16]
  ------------------
  234|      0|        _PyArg_BadArgument("find_frozen", "argument 1", "str", args[0]);
  235|      0|        goto exit;
  236|      0|    }
  237|     16|    name = args[0];
  238|     16|    if (!noptargs) {
  ------------------
  |  Branch (238:9): [True: 16, False: 0]
  ------------------
  239|     16|        goto skip_optional_kwonly;
  240|     16|    }
  241|      0|    withdata = PyObject_IsTrue(args[1]);
  242|      0|    if (withdata < 0) {
  ------------------
  |  Branch (242:9): [True: 0, False: 0]
  ------------------
  243|      0|        goto exit;
  244|      0|    }
  245|     16|skip_optional_kwonly:
  246|     16|    return_value = _imp_find_frozen_impl(module, name, withdata);
  247|       |
  248|     16|exit:
  249|     16|    return return_value;
  250|     16|}
import.c:_imp_get_frozen_object:
  267|     14|{
  268|     14|    PyObject *return_value = NULL;
  269|     14|    PyObject *name;
  270|     14|    PyObject *dataobj = Py_None;
  ------------------
  |  |  616|     14|#  define Py_None (&_Py_NoneStruct)
  ------------------
  271|       |
  272|     14|    if (!_PyArg_CheckPositional("get_frozen_object", nargs, 1, 2)) {
  ------------------
  |  |   31|     14|    (((min) <= (nargs) && (nargs) <= (max)) \
  |  |  ------------------
  |  |  |  Branch (31:7): [True: 14, False: 0]
  |  |  |  Branch (31:27): [True: 14, False: 0]
  |  |  ------------------
  |  |   32|     14|     || _PyArg_CheckPositional((funcname), (nargs), (min), (max)))
  |  |  ------------------
  |  |  |  Branch (32:9): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  273|      0|        goto exit;
  274|      0|    }
  275|     14|    if (!PyUnicode_Check(args[0])) {
  ------------------
  |  |  103|     14|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     14|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (275:9): [True: 0, False: 14]
  ------------------
  276|      0|        _PyArg_BadArgument("get_frozen_object", "argument 1", "str", args[0]);
  277|      0|        goto exit;
  278|      0|    }
  279|     14|    name = args[0];
  280|     14|    if (nargs < 2) {
  ------------------
  |  Branch (280:9): [True: 14, False: 0]
  ------------------
  281|     14|        goto skip_optional;
  282|     14|    }
  283|      0|    dataobj = args[1];
  284|     14|skip_optional:
  285|     14|    return_value = _imp_get_frozen_object_impl(module, name, dataobj);
  286|       |
  287|     14|exit:
  288|     14|    return return_value;
  289|     14|}
import.c:_imp_is_frozen_package:
  305|      1|{
  306|      1|    PyObject *return_value = NULL;
  307|      1|    PyObject *name;
  308|       |
  309|      1|    if (!PyUnicode_Check(arg)) {
  ------------------
  |  |  103|      1|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      1|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (309:9): [True: 0, False: 1]
  ------------------
  310|      0|        _PyArg_BadArgument("is_frozen_package", "argument", "str", arg);
  311|      0|        goto exit;
  312|      0|    }
  313|      1|    name = arg;
  314|      1|    return_value = _imp_is_frozen_package_impl(module, name);
  315|       |
  316|      1|exit:
  317|      1|    return return_value;
  318|      1|}
import.c:_imp_is_builtin:
  334|     27|{
  335|     27|    PyObject *return_value = NULL;
  336|     27|    PyObject *name;
  337|       |
  338|     27|    if (!PyUnicode_Check(arg)) {
  ------------------
  |  |  103|     27|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     27|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (338:9): [True: 0, False: 27]
  ------------------
  339|      0|        _PyArg_BadArgument("is_builtin", "argument", "str", arg);
  340|      0|        goto exit;
  341|      0|    }
  342|     27|    name = arg;
  343|     27|    return_value = _imp_is_builtin_impl(module, name);
  344|       |
  345|     27|exit:
  346|     27|    return return_value;
  347|     27|}
import.c:_imp_is_frozen:
  363|      1|{
  364|      1|    PyObject *return_value = NULL;
  365|      1|    PyObject *name;
  366|       |
  367|      1|    if (!PyUnicode_Check(arg)) {
  ------------------
  |  |  103|      1|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      1|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (367:9): [True: 0, False: 1]
  ------------------
  368|      0|        _PyArg_BadArgument("is_frozen", "argument", "str", arg);
  369|      0|        goto exit;
  370|      0|    }
  371|      1|    name = arg;
  372|      1|    return_value = _imp_is_frozen_impl(module, name);
  373|       |
  374|      1|exit:
  375|      1|    return return_value;
  376|      1|}
import.c:_imp_exec_builtin:
  542|     11|{
  543|     11|    PyObject *return_value = NULL;
  544|     11|    int _return_value;
  545|       |
  546|     11|    _return_value = _imp_exec_builtin_impl(module, mod);
  547|     11|    if ((_return_value == -1) && PyErr_Occurred()) {
  ------------------
  |  Branch (547:9): [True: 0, False: 11]
  |  Branch (547:34): [True: 0, False: 0]
  ------------------
  548|      0|        goto exit;
  549|      0|    }
  550|     11|    return_value = PyLong_FromLong((long)_return_value);
  551|       |
  552|     11|exit:
  553|     11|    return return_value;
  554|     11|}
import.c:_imp__set_lazy_attributes:
  640|     22|{
  641|     22|    PyObject *return_value = NULL;
  642|     22|    PyObject *modobj;
  643|     22|    PyObject *name;
  644|       |
  645|     22|    if (!_PyArg_CheckPositional("_set_lazy_attributes", nargs, 2, 2)) {
  ------------------
  |  |   31|     22|    (((min) <= (nargs) && (nargs) <= (max)) \
  |  |  ------------------
  |  |  |  Branch (31:7): [True: 22, False: 0]
  |  |  |  Branch (31:27): [True: 22, False: 0]
  |  |  ------------------
  |  |   32|     22|     || _PyArg_CheckPositional((funcname), (nargs), (min), (max)))
  |  |  ------------------
  |  |  |  Branch (32:9): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  646|      0|        goto exit;
  647|      0|    }
  648|     22|    modobj = args[0];
  649|     22|    if (!PyUnicode_Check(args[1])) {
  ------------------
  |  |  103|     22|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     22|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (649:9): [True: 0, False: 22]
  ------------------
  650|      0|        _PyArg_BadArgument("_set_lazy_attributes", "argument 2", "str", args[1]);
  651|      0|        goto exit;
  652|      0|    }
  653|     22|    name = args[1];
  654|     22|    return_value = _imp__set_lazy_attributes_impl(module, modobj, name);
  655|       |
  656|     22|exit:
  657|     22|    return return_value;
  658|     22|}

sysmodule.c:sys_audit:
   83|     24|{
   84|     24|    PyObject *return_value = NULL;
   85|     24|    const char *event;
   86|     24|    PyObject *__clinic_args = NULL;
   87|       |
   88|     24|    if (!_PyArg_CheckPositional("audit", nargs, 1, PY_SSIZE_T_MAX)) {
  ------------------
  |  |   31|     24|    (((min) <= (nargs) && (nargs) <= (max)) \
  |  |  ------------------
  |  |  |  Branch (31:7): [True: 24, False: 0]
  |  |  |  Branch (31:27): [True: 24, False: 0]
  |  |  ------------------
  |  |   32|     24|     || _PyArg_CheckPositional((funcname), (nargs), (min), (max)))
  |  |  ------------------
  |  |  |  Branch (32:9): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   89|      0|        goto exit;
   90|      0|    }
   91|     24|    if (!PyUnicode_Check(args[0])) {
  ------------------
  |  |  103|     24|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     24|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (91:9): [True: 0, False: 24]
  ------------------
   92|      0|        _PyArg_BadArgument("audit", "argument 1", "str", args[0]);
   93|      0|        goto exit;
   94|      0|    }
   95|     24|    Py_ssize_t event_length;
   96|     24|    event = PyUnicode_AsUTF8AndSize(args[0], &event_length);
   97|     24|    if (event == NULL) {
  ------------------
  |  Branch (97:9): [True: 0, False: 24]
  ------------------
   98|      0|        goto exit;
   99|      0|    }
  100|     24|    if (strlen(event) != (size_t)event_length) {
  ------------------
  |  Branch (100:9): [True: 0, False: 24]
  ------------------
  101|      0|        PyErr_SetString(PyExc_ValueError, "embedded null character");
  102|      0|        goto exit;
  103|      0|    }
  104|     24|    __clinic_args = PyTuple_FromArray(args + 1, nargs - 1);
  105|     24|    if (__clinic_args == NULL) {
  ------------------
  |  Branch (105:9): [True: 0, False: 24]
  ------------------
  106|      0|        goto exit;
  107|      0|    }
  108|     24|    return_value = sys_audit_impl(module, event, __clinic_args);
  109|       |
  110|     24|exit:
  111|       |    /* Cleanup for args */
  112|     24|    Py_XDECREF(__clinic_args);
  ------------------
  |  |  524|     24|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     24|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     24|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  113|       |
  114|     24|    return return_value;
  115|     24|}
sysmodule.c:sys_getfilesystemencoding:
  288|      2|{
  289|      2|    return sys_getfilesystemencoding_impl(module);
  290|      2|}
sysmodule.c:sys_getfilesystemencodeerrors:
  306|      1|{
  307|      1|    return sys_getfilesystemencodeerrors_impl(module);
  308|      1|}
sysmodule.c:sys__getframe:
 1122|      1|{
 1123|      1|    PyObject *return_value = NULL;
 1124|      1|    int depth = 0;
 1125|       |
 1126|      1|    if (!_PyArg_CheckPositional("_getframe", nargs, 0, 1)) {
  ------------------
  |  |   31|      1|    (((min) <= (nargs) && (nargs) <= (max)) \
  |  |  ------------------
  |  |  |  Branch (31:7): [True: 1, False: 0]
  |  |  |  Branch (31:27): [True: 1, False: 0]
  |  |  ------------------
  |  |   32|      1|     || _PyArg_CheckPositional((funcname), (nargs), (min), (max)))
  |  |  ------------------
  |  |  |  Branch (32:9): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1127|      0|        goto exit;
 1128|      0|    }
 1129|      1|    if (nargs < 1) {
  ------------------
  |  Branch (1129:9): [True: 1, False: 0]
  ------------------
 1130|      1|        goto skip_optional;
 1131|      1|    }
 1132|      0|    depth = PyLong_AsInt(args[0]);
 1133|      0|    if (depth == -1 && PyErr_Occurred()) {
  ------------------
  |  Branch (1133:9): [True: 0, False: 0]
  |  Branch (1133:24): [True: 0, False: 0]
  ------------------
 1134|      0|        goto exit;
 1135|      0|    }
 1136|      1|skip_optional:
 1137|      1|    return_value = sys__getframe_impl(module, depth);
 1138|       |
 1139|      1|exit:
 1140|      1|    return return_value;
 1141|      1|}
sysmodule.c:sys__get_cpu_count_config:
 1735|      1|{
 1736|      1|    PyObject *return_value = NULL;
 1737|      1|    int _return_value;
 1738|       |
 1739|      1|    _return_value = sys__get_cpu_count_config_impl(module);
 1740|      1|    if ((_return_value == -1) && PyErr_Occurred()) {
  ------------------
  |  Branch (1740:9): [True: 1, False: 0]
  |  Branch (1740:34): [True: 0, False: 1]
  ------------------
 1741|      0|        goto exit;
 1742|      0|    }
 1743|      1|    return_value = PyLong_FromLong((long)_return_value);
 1744|       |
 1745|      1|exit:
 1746|      1|    return return_value;
 1747|      1|}

PyCodec_Register:
   32|      1|{
   33|      1|    PyInterpreterState *interp = _PyInterpreterState_GET();
   34|      1|    assert(interp->codecs.initialized);
  ------------------
  |  Branch (34:5): [True: 1, False: 0]
  ------------------
   35|      1|    if (search_function == NULL) {
  ------------------
  |  Branch (35:9): [True: 0, False: 1]
  ------------------
   36|      0|        PyErr_BadArgument();
   37|      0|        goto onError;
   38|      0|    }
   39|      1|    if (!PyCallable_Check(search_function)) {
  ------------------
  |  Branch (39:9): [True: 0, False: 1]
  ------------------
   40|      0|        PyErr_SetString(PyExc_TypeError, "argument must be callable");
   41|      0|        goto onError;
   42|      0|    }
   43|      1|    FT_MUTEX_LOCK(&interp->codecs.search_path_mutex);
  ------------------
  |  |  204|      1|#define FT_MUTEX_LOCK(lock) do {} while (0)
  |  |  ------------------
  |  |  |  Branch (204:42): [Folded, False: 1]
  |  |  ------------------
  ------------------
   44|      1|    int ret = PyList_Append(interp->codecs.search_path, search_function);
   45|      1|    FT_MUTEX_UNLOCK(&interp->codecs.search_path_mutex);
  ------------------
  |  |  206|      1|#define FT_MUTEX_UNLOCK(lock) do {} while (0)
  |  |  ------------------
  |  |  |  Branch (206:44): [Folded, False: 1]
  |  |  ------------------
  ------------------
   46|       |
   47|      1|    return ret;
   48|       |
   49|      0| onError:
   50|      0|    return -1;
   51|      1|}
_PyCodec_Lookup:
  136|      6|{
  137|      6|    if (encoding == NULL) {
  ------------------
  |  Branch (137:9): [True: 0, False: 6]
  ------------------
  138|      0|        PyErr_BadArgument();
  139|      0|        return NULL;
  140|      0|    }
  141|       |
  142|      6|    PyInterpreterState *interp = _PyInterpreterState_GET();
  143|      6|    assert(interp->codecs.initialized);
  ------------------
  |  Branch (143:5): [True: 6, False: 0]
  ------------------
  144|       |
  145|       |    /* Convert the encoding to a normalized Python string: all
  146|       |       ASCII letters are converted to lower case, spaces are
  147|       |       replaced with hyphens. */
  148|      6|    PyObject *v = normalizestring(encoding);
  149|      6|    if (v == NULL) {
  ------------------
  |  Branch (149:9): [True: 0, False: 6]
  ------------------
  150|      0|        return NULL;
  151|      0|    }
  152|       |
  153|       |    /* Intern the string. We'll make it immortal later if lookup succeeds. */
  154|      6|    _PyUnicode_InternMortal(interp, &v);
  155|       |
  156|       |    /* First, try to lookup the name in the registry dictionary */
  157|      6|    PyObject *result;
  158|      6|    if (PyDict_GetItemRef(interp->codecs.search_cache, v, &result) < 0) {
  ------------------
  |  Branch (158:9): [True: 0, False: 6]
  ------------------
  159|      0|        goto onError;
  160|      0|    }
  161|      6|    if (result != NULL) {
  ------------------
  |  Branch (161:9): [True: 5, False: 1]
  ------------------
  162|      5|        Py_DECREF(v);
  ------------------
  |  |  430|      5|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  163|      5|        return result;
  164|      5|    }
  165|       |
  166|       |    /* Next, scan the search functions in order of registration */
  167|      1|    const Py_ssize_t len = PyList_Size(interp->codecs.search_path);
  168|      1|    if (len < 0)
  ------------------
  |  Branch (168:9): [True: 0, False: 1]
  ------------------
  169|      0|        goto onError;
  170|      1|    if (len == 0) {
  ------------------
  |  Branch (170:9): [True: 0, False: 1]
  ------------------
  171|      0|        PyErr_SetString(PyExc_LookupError,
  172|      0|                        "no codec search functions registered: "
  173|      0|                        "can't find encoding");
  174|      0|        goto onError;
  175|      0|    }
  176|       |
  177|      1|    Py_ssize_t i;
  178|      1|    for (i = 0; i < len; i++) {
  ------------------
  |  Branch (178:17): [True: 1, False: 0]
  ------------------
  179|      1|        PyObject *func;
  180|       |
  181|      1|        func = PyList_GetItemRef(interp->codecs.search_path, i);
  182|      1|        if (func == NULL)
  ------------------
  |  Branch (182:13): [True: 0, False: 1]
  ------------------
  183|      0|            goto onError;
  184|      1|        result = PyObject_CallOneArg(func, v);
  185|      1|        Py_DECREF(func);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  186|      1|        if (result == NULL)
  ------------------
  |  Branch (186:13): [True: 0, False: 1]
  ------------------
  187|      0|            goto onError;
  188|      1|        if (result == Py_None) {
  ------------------
  |  |  616|      1|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (188:13): [True: 0, False: 1]
  ------------------
  189|      0|            Py_CLEAR(result);
  ------------------
  |  |  484|      0|    do { \
  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  190|      0|            continue;
  191|      0|        }
  192|      1|        if (!PyTuple_Check(result) || PyTuple_GET_SIZE(result) != 4) {
  ------------------
  |  |   27|      1|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TUPLE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      2|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
                      if (!PyTuple_Check(result) || PyTuple_GET_SIZE(result) != 4) {
  ------------------
  |  |   27|      1|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (192:13): [True: 0, False: 1]
  |  Branch (192:39): [True: 0, False: 1]
  ------------------
  193|      0|            PyErr_SetString(PyExc_TypeError,
  194|      0|                            "codec search functions must return 4-tuples");
  195|      0|            Py_DECREF(result);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  196|      0|            goto onError;
  197|      0|        }
  198|      1|        break;
  199|      1|    }
  200|      1|    if (result == NULL) {
  ------------------
  |  Branch (200:9): [True: 0, False: 1]
  ------------------
  201|       |        /* XXX Perhaps we should cache misses too ? */
  202|      0|        PyErr_Format(PyExc_LookupError,
  203|      0|                     "unknown encoding: %s", encoding);
  204|      0|        goto onError;
  205|      0|    }
  206|       |
  207|      1|    _PyUnicode_InternImmortal(interp, &v);
  208|       |
  209|       |    /* Cache and return the result */
  210|      1|    if (PyDict_SetItem(interp->codecs.search_cache, v, result) < 0) {
  ------------------
  |  Branch (210:9): [True: 0, False: 1]
  ------------------
  211|      0|        Py_DECREF(result);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  212|      0|        goto onError;
  213|      0|    }
  214|      1|    Py_DECREF(v);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  215|      1|    return result;
  216|       |
  217|      0| onError:
  218|      0|    Py_DECREF(v);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  219|       |    return NULL;
  220|      1|}
_PyCodecInfo_GetIncrementalDecoder:
  340|      1|{
  341|      1|    return codec_makeincrementalcodec(codec_info, errors,
  342|      1|                                      "incrementaldecoder");
  343|      1|}
_PyCodecInfo_GetIncrementalEncoder:
  347|      2|{
  348|      2|    return codec_makeincrementalcodec(codec_info, errors,
  349|      2|                                      "incrementalencoder");
  350|      2|}
_PyCodec_LookupTextEncoding:
  514|      3|{
  515|      3|    PyObject *codec;
  516|      3|    PyObject *attr;
  517|      3|    int is_text_codec;
  518|       |
  519|      3|    codec = _PyCodec_Lookup(encoding);
  520|      3|    if (codec == NULL)
  ------------------
  |  Branch (520:9): [True: 0, False: 3]
  ------------------
  521|      0|        return NULL;
  522|       |
  523|       |    /* Backwards compatibility: assume any raw tuple describes a text
  524|       |     * encoding, and the same for anything lacking the private
  525|       |     * attribute.
  526|       |     */
  527|      3|    if (!PyTuple_CheckExact(codec)) {
  ------------------
  |  |   28|      3|#define PyTuple_CheckExact(op) Py_IS_TYPE((op), &PyTuple_Type)
  |  |  ------------------
  |  |  |  |  215|      3|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (527:9): [True: 3, False: 0]
  ------------------
  528|      3|        if (PyObject_GetOptionalAttr(codec, &_Py_ID(_is_text_encoding), &attr) < 0) {
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (528:13): [True: 0, False: 3]
  ------------------
  529|      0|            Py_DECREF(codec);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  530|      0|            return NULL;
  531|      0|        }
  532|      3|        if (attr != NULL) {
  ------------------
  |  Branch (532:13): [True: 3, False: 0]
  ------------------
  533|      3|            is_text_codec = PyObject_IsTrue(attr);
  534|      3|            Py_DECREF(attr);
  ------------------
  |  |  430|      3|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  535|      3|            if (is_text_codec <= 0) {
  ------------------
  |  Branch (535:17): [True: 0, False: 3]
  ------------------
  536|      0|                Py_DECREF(codec);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  537|      0|                if (!is_text_codec) {
  ------------------
  |  Branch (537:21): [True: 0, False: 0]
  ------------------
  538|      0|                    if (alternate_command != NULL) {
  ------------------
  |  Branch (538:25): [True: 0, False: 0]
  ------------------
  539|      0|                        PyErr_Format(PyExc_LookupError,
  540|      0|                                     "'%.400s' is not a text encoding; "
  541|      0|                                     "use %s to handle arbitrary codecs",
  542|      0|                                     encoding, alternate_command);
  543|      0|                    }
  544|      0|                    else {
  545|      0|                        PyErr_Format(PyExc_LookupError,
  546|      0|                                     "'%.400s' is not a text encoding",
  547|      0|                                     encoding);
  548|      0|                    }
  549|      0|                }
  550|      0|                return NULL;
  551|      0|            }
  552|      3|        }
  553|      3|    }
  554|       |
  555|       |    /* This appears to be a valid text encoding */
  556|      3|    return codec;
  557|      3|}
PyCodec_LookupError:
  649|      6|{
  650|      6|    PyInterpreterState *interp = _PyInterpreterState_GET();
  651|      6|    assert(interp->codecs.initialized);
  ------------------
  |  Branch (651:5): [True: 6, False: 0]
  ------------------
  652|       |
  653|      6|    if (name==NULL)
  ------------------
  |  Branch (653:9): [True: 0, False: 6]
  ------------------
  654|      0|        name = "strict";
  655|      6|    PyObject *handler;
  656|      6|    if (PyDict_GetItemStringRef(interp->codecs.error_registry, name, &handler) < 0) {
  ------------------
  |  Branch (656:9): [True: 0, False: 6]
  ------------------
  657|      0|        return NULL;
  658|      0|    }
  659|      6|    if (handler == NULL) {
  ------------------
  |  Branch (659:9): [True: 0, False: 6]
  ------------------
  660|      0|        PyErr_Format(PyExc_LookupError, "unknown error handler name '%.400s'", name);
  661|      0|        return NULL;
  662|      0|    }
  663|      6|    return handler;
  664|      6|}
_PyCodec_InitRegistry:
 1566|      1|{
 1567|      1|    static struct {
 1568|      1|        const char *name;
 1569|      1|        PyMethodDef def;
 1570|      1|    } methods[] =
 1571|      1|    {
 1572|      1|        {
 1573|      1|            "strict",
 1574|      1|            {
 1575|      1|                "strict_errors",
 1576|      1|                strict_errors,
 1577|      1|                METH_O,
  ------------------
  |  |   99|      1|#define METH_O        0x0008
  ------------------
 1578|      1|                PyDoc_STR("Implements the 'strict' error handling, which "
  ------------------
  |  |  204|      1|#define PyDoc_STR(str) str
  ------------------
 1579|      1|                          "raises a UnicodeError on coding errors.")
 1580|      1|            }
 1581|      1|        },
 1582|      1|        {
 1583|      1|            "ignore",
 1584|      1|            {
 1585|      1|                "ignore_errors",
 1586|      1|                ignore_errors,
 1587|      1|                METH_O,
  ------------------
  |  |   99|      1|#define METH_O        0x0008
  ------------------
 1588|      1|                PyDoc_STR("Implements the 'ignore' error handling, which "
  ------------------
  |  |  204|      1|#define PyDoc_STR(str) str
  ------------------
 1589|      1|                          "ignores malformed data and continues.")
 1590|      1|            }
 1591|      1|        },
 1592|      1|        {
 1593|      1|            "replace",
 1594|      1|            {
 1595|      1|                "replace_errors",
 1596|      1|                replace_errors,
 1597|      1|                METH_O,
  ------------------
  |  |   99|      1|#define METH_O        0x0008
  ------------------
 1598|      1|                PyDoc_STR("Implements the 'replace' error handling, which "
  ------------------
  |  |  204|      1|#define PyDoc_STR(str) str
  ------------------
 1599|      1|                          "replaces malformed data with a replacement marker.")
 1600|      1|            }
 1601|      1|        },
 1602|      1|        {
 1603|      1|            "xmlcharrefreplace",
 1604|      1|            {
 1605|      1|                "xmlcharrefreplace_errors",
 1606|      1|                xmlcharrefreplace_errors,
 1607|      1|                METH_O,
  ------------------
  |  |   99|      1|#define METH_O        0x0008
  ------------------
 1608|      1|                PyDoc_STR("Implements the 'xmlcharrefreplace' error handling, "
  ------------------
  |  |  204|      1|#define PyDoc_STR(str) str
  ------------------
 1609|      1|                          "which replaces an unencodable character with the "
 1610|      1|                          "appropriate XML character reference.")
 1611|      1|            }
 1612|      1|        },
 1613|      1|        {
 1614|      1|            "backslashreplace",
 1615|      1|            {
 1616|      1|                "backslashreplace_errors",
 1617|      1|                backslashreplace_errors,
 1618|      1|                METH_O,
  ------------------
  |  |   99|      1|#define METH_O        0x0008
  ------------------
 1619|      1|                PyDoc_STR("Implements the 'backslashreplace' error handling, "
  ------------------
  |  |  204|      1|#define PyDoc_STR(str) str
  ------------------
 1620|      1|                          "which replaces malformed data with a backslashed "
 1621|      1|                          "escape sequence.")
 1622|      1|            }
 1623|      1|        },
 1624|      1|        {
 1625|      1|            "namereplace",
 1626|      1|            {
 1627|      1|                "namereplace_errors",
 1628|      1|                namereplace_errors,
 1629|      1|                METH_O,
  ------------------
  |  |   99|      1|#define METH_O        0x0008
  ------------------
 1630|      1|                PyDoc_STR("Implements the 'namereplace' error handling, "
  ------------------
  |  |  204|      1|#define PyDoc_STR(str) str
  ------------------
 1631|      1|                          "which replaces an unencodable character with a "
 1632|      1|                          "\\N{...} escape sequence.")
 1633|      1|            }
 1634|      1|        },
 1635|      1|        {
 1636|      1|            "surrogatepass",
 1637|      1|            {
 1638|      1|                "surrogatepass",
 1639|      1|                surrogatepass_errors,
 1640|      1|                METH_O
  ------------------
  |  |   99|      1|#define METH_O        0x0008
  ------------------
 1641|      1|            }
 1642|      1|        },
 1643|      1|        {
 1644|      1|            "surrogateescape",
 1645|      1|            {
 1646|      1|                "surrogateescape",
 1647|      1|                surrogateescape_errors,
 1648|      1|                METH_O
  ------------------
  |  |   99|      1|#define METH_O        0x0008
  ------------------
 1649|      1|            }
 1650|      1|        }
 1651|      1|    };
 1652|       |    // ensure that the built-in error handlers' names are kept in sync
 1653|      1|    assert(Py_ARRAY_LENGTH(methods) == Py_ARRAY_LENGTH(codecs_builtin_error_handlers));
  ------------------
  |  Branch (1653:5): [True: 1, Folded]
  ------------------
 1654|       |
 1655|      1|    assert(interp->codecs.initialized == 0);
  ------------------
  |  Branch (1655:5): [True: 1, False: 0]
  ------------------
 1656|      1|    interp->codecs.search_path = PyList_New(0);
 1657|      1|    if (interp->codecs.search_path == NULL) {
  ------------------
  |  Branch (1657:9): [True: 0, False: 1]
  ------------------
 1658|      0|        return PyStatus_NoMemory();
 1659|      0|    }
 1660|      1|    interp->codecs.search_cache = PyDict_New();
 1661|      1|    if (interp->codecs.search_cache == NULL) {
  ------------------
  |  Branch (1661:9): [True: 0, False: 1]
  ------------------
 1662|      0|        return PyStatus_NoMemory();
 1663|      0|    }
 1664|      1|    interp->codecs.error_registry = PyDict_New();
 1665|      1|    if (interp->codecs.error_registry == NULL) {
  ------------------
  |  Branch (1665:9): [True: 0, False: 1]
  ------------------
 1666|      0|        return PyStatus_NoMemory();
 1667|      0|    }
 1668|      9|    for (size_t i = 0; i < Py_ARRAY_LENGTH(methods); ++i) {
  ------------------
  |  |  196|      9|    (sizeof(array) / sizeof((array)[0]))
  ------------------
  |  Branch (1668:24): [True: 8, False: 1]
  ------------------
 1669|      8|        PyObject *func = PyCFunction_NewEx(&methods[i].def, NULL, NULL);
  ------------------
  |  |   87|      8|#define PyCFunction_NewEx(ML, SELF, MOD) PyCMethod_New((ML), (SELF), (MOD), NULL)
  ------------------
 1670|      8|        if (func == NULL) {
  ------------------
  |  Branch (1670:13): [True: 0, False: 8]
  ------------------
 1671|      0|            return PyStatus_NoMemory();
 1672|      0|        }
 1673|       |
 1674|      8|        int res = PyDict_SetItemString(interp->codecs.error_registry,
 1675|      8|                                       methods[i].name, func);
 1676|      8|        Py_DECREF(func);
  ------------------
  |  |  430|      8|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      8|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1677|      8|        if (res < 0) {
  ------------------
  |  Branch (1677:13): [True: 0, False: 8]
  ------------------
 1678|      0|            return PyStatus_Error("Failed to insert into codec error registry");
 1679|      0|        }
 1680|      8|    }
 1681|       |
 1682|      1|    interp->codecs.initialized = 1;
 1683|       |
 1684|       |    // Importing `encodings' will call back into this module to register codec
 1685|       |    // search functions, so this is done after everything else is initialized.
 1686|      1|    PyObject *mod = PyImport_ImportModule("encodings");
 1687|      1|    if (mod == NULL) {
  ------------------
  |  Branch (1687:9): [True: 0, False: 1]
  ------------------
 1688|      0|        return PyStatus_Error("Failed to import encodings module");
 1689|      0|    }
 1690|      1|    Py_DECREF(mod);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1691|       |
 1692|      1|    return PyStatus_Ok();
 1693|      1|}
codecs.c:normalizestring:
   91|      6|{
   92|      6|    size_t i;
   93|      6|    size_t len = strlen(string);
   94|      6|    char *p;
   95|      6|    PyObject *v;
   96|       |
   97|      6|    if (len > PY_SSIZE_T_MAX) {
  ------------------
  |  |  137|      6|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (97:9): [True: 0, False: 6]
  ------------------
   98|      0|        PyErr_SetString(PyExc_OverflowError, "string is too large");
   99|      0|        return NULL;
  100|      0|    }
  101|       |
  102|      6|    p = PyMem_Malloc(len + 1);
  103|      6|    if (p == NULL)
  ------------------
  |  Branch (103:9): [True: 0, False: 6]
  ------------------
  104|      0|        return PyErr_NoMemory();
  105|     36|    for (i = 0; i < len; i++) {
  ------------------
  |  Branch (105:17): [True: 30, False: 6]
  ------------------
  106|     30|        char ch = string[i];
  107|     30|        if (ch == ' ')
  ------------------
  |  Branch (107:13): [True: 0, False: 30]
  ------------------
  108|      0|            ch = '-';
  109|     30|        else
  110|     30|            ch = Py_TOLOWER(Py_CHARMASK(ch));
  ------------------
  |  |   32|     30|#define Py_TOLOWER(c) (_Py_ctype_tolower[Py_CHARMASK(c)])
  |  |  ------------------
  |  |  |  |  138|     30|#define Py_CHARMASK(c) ((unsigned char)((c) & 0xff))
  |  |  ------------------
  ------------------
  111|     30|        p[i] = ch;
  112|     30|    }
  113|      6|    p[i] = '\0';
  114|      6|    v = PyUnicode_FromString(p);
  115|      6|    PyMem_Free(p);
  116|      6|    return v;
  117|      6|}
codecs.c:codec_makeincrementalcodec:
  283|      3|{
  284|      3|    PyObject *ret, *inccodec;
  285|       |
  286|      3|    inccodec = PyObject_GetAttrString(codec_info, attrname);
  287|      3|    if (inccodec == NULL)
  ------------------
  |  Branch (287:9): [True: 0, False: 3]
  ------------------
  288|      0|        return NULL;
  289|      3|    if (errors)
  ------------------
  |  Branch (289:9): [True: 3, False: 0]
  ------------------
  290|      3|        ret = PyObject_CallFunction(inccodec, "s", errors);
  291|      0|    else
  292|      0|        ret = _PyObject_CallNoArgs(inccodec);
  293|      3|    Py_DECREF(inccodec);
  ------------------
  |  |  430|      3|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  294|      3|    return ret;
  295|      3|}

initconfig.c:config_dict_get:
   20|     71|{
   21|     71|    PyObject *item;
   22|     71|    if (_config_dict_get(dict, name, &item) < 0) {
  ------------------
  |  Branch (22:9): [True: 0, False: 71]
  ------------------
   23|      0|        if (!PyErr_Occurred()) {
  ------------------
  |  Branch (23:13): [True: 0, False: 0]
  ------------------
   24|      0|            PyErr_Format(PyExc_ValueError, "missing config key: %s", name);
   25|      0|        }
   26|      0|        return NULL;
   27|      0|    }
   28|     71|    return item;
   29|     71|}
initconfig.c:_config_dict_get:
    4|     71|{
    5|     71|    PyObject *item;
    6|     71|    if (PyDict_GetItemStringRef(dict, name, &item) < 0) {
  ------------------
  |  Branch (6:9): [True: 0, False: 71]
  ------------------
    7|      0|        return -1;
    8|      0|    }
    9|     71|    if (item == NULL) {
  ------------------
  |  Branch (9:9): [True: 0, False: 71]
  ------------------
   10|       |        // We do not set an exception.
   11|      0|        return -1;
   12|      0|    }
   13|     71|    *p_item = item;
   14|     71|    return 0;
   15|     71|}

PyContextVar_New:
  267|      1|{
  268|      1|    PyObject *pyname = PyUnicode_FromString(name);
  269|      1|    if (pyname == NULL) {
  ------------------
  |  Branch (269:9): [True: 0, False: 1]
  ------------------
  270|      0|        return NULL;
  271|      0|    }
  272|      1|    PyContextVar *var = contextvar_new(pyname, def);
  273|      1|    Py_DECREF(pyname);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  274|      1|    return (PyObject *)var;
  275|      1|}
_PyContext_Init:
 1355|      1|{
 1356|      1|    PyObject *missing = get_token_missing();
 1357|      1|    assert(PyUnstable_IsImmortal(missing));
  ------------------
  |  Branch (1357:5): [True: 1, False: 0]
  ------------------
 1358|      1|    if (PyDict_SetItemString(
  ------------------
  |  Branch (1358:9): [True: 0, False: 1]
  ------------------
 1359|      1|        _PyType_GetDict(&PyContextToken_Type), "MISSING", missing))
 1360|      0|    {
 1361|      0|        Py_DECREF(missing);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1362|      0|        return _PyStatus_ERR("can't init context types");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 1363|      0|    }
 1364|      1|    Py_DECREF(missing);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1365|       |
 1366|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 1367|      1|}
context.c:contextvar_new:
  868|      1|{
  869|      1|    if (!PyUnicode_Check(name)) {
  ------------------
  |  |  103|      1|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      1|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (869:9): [True: 0, False: 1]
  ------------------
  870|      0|        PyErr_SetString(PyExc_TypeError,
  871|      0|                        "context variable name must be a str");
  872|      0|        return NULL;
  873|      0|    }
  874|       |
  875|      1|    PyContextVar *var = PyObject_GC_New(PyContextVar, &PyContextVar_Type);
  ------------------
  |  |  181|      1|    _Py_CAST(type*, _PyObject_GC_New(typeobj))
  |  |  ------------------
  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  876|      1|    if (var == NULL) {
  ------------------
  |  Branch (876:9): [True: 0, False: 1]
  ------------------
  877|      0|        return NULL;
  878|      0|    }
  879|       |
  880|      1|    var->var_name = Py_NewRef(name);
  ------------------
  |  |  550|      1|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  881|      1|    var->var_default = Py_XNewRef(def);
  ------------------
  |  |  551|      1|#  define Py_XNewRef(obj) _Py_XNewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  882|       |
  883|      1|#ifndef Py_GIL_DISABLED
  884|      1|    var->var_cached = NULL;
  885|      1|    var->var_cached_tsid = 0;
  886|      1|    var->var_cached_tsver = 0;
  887|      1|#endif
  888|       |
  889|      1|    var->var_hash = contextvar_generate_hash(var, name);
  890|      1|    if (var->var_hash == -1) {
  ------------------
  |  Branch (890:9): [True: 0, False: 1]
  ------------------
  891|      0|        Py_DECREF(var);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  892|      0|        return NULL;
  893|      0|    }
  894|       |
  895|      1|    if (_PyObject_GC_MAY_BE_TRACKED(name) ||
  ------------------
  |  Branch (895:9): [True: 0, False: 1]
  ------------------
  896|      1|            (def != NULL && _PyObject_GC_MAY_BE_TRACKED(def)))
  ------------------
  |  Branch (896:14): [True: 0, False: 1]
  |  Branch (896:29): [True: 0, False: 0]
  ------------------
  897|      0|    {
  898|      0|        PyObject_GC_Track(var);
  899|      0|    }
  900|      1|    return var;
  901|      1|}
context.c:contextvar_generate_hash:
  840|      1|{
  841|       |    /* Take hash of `name` and XOR it with the object's addr.
  842|       |
  843|       |       The structure of the tree is encoded in objects' hashes, which
  844|       |       means that sufficiently similar hashes would result in tall trees
  845|       |       with many Collision nodes.  Which would, in turn, result in slower
  846|       |       get and set operations.
  847|       |
  848|       |       The XORing helps to ensure that:
  849|       |
  850|       |       (1) sequentially allocated ContextVar objects have
  851|       |           different hashes;
  852|       |
  853|       |       (2) context variables with equal names have
  854|       |           different hashes.
  855|       |    */
  856|       |
  857|      1|    Py_hash_t name_hash = PyObject_Hash(name);
  858|      1|    if (name_hash == -1) {
  ------------------
  |  Branch (858:9): [True: 0, False: 1]
  ------------------
  859|      0|        return -1;
  860|      0|    }
  861|       |
  862|      1|    Py_hash_t res = Py_HashPointer(addr) ^ name_hash;
  863|      1|    return res == -1 ? -2 : res;
  ------------------
  |  Branch (863:12): [True: 0, False: 1]
  ------------------
  864|      1|}
context.c:get_token_missing:
 1345|      1|{
 1346|      1|    return (PyObject *)&_Py_SINGLETON(context_token_missing);
  ------------------
  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  ------------------
  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  ------------------
  ------------------
 1347|      1|}

_Py_xi_global_state_init:
 3119|      1|{
 3120|      1|    assert(state != NULL);
  ------------------
  |  Branch (3120:5): [True: 1, False: 0]
  ------------------
 3121|      1|    xid_lookup_init(&state->data_lookup);
 3122|      1|    return 0;
 3123|      1|}
_Py_xi_state_init:
 3134|      1|{
 3135|      1|    assert(state != NULL);
  ------------------
  |  Branch (3135:5): [True: 1, False: 0]
  ------------------
 3136|      1|    assert(interp == NULL || state == _PyXI_GET_STATE(interp));
  ------------------
  |  Branch (3136:5): [True: 1, False: 0]
  |  Branch (3136:5): [True: 0, False: 0]
  ------------------
 3137|       |
 3138|       |    // Initialize pickle function cache (before any fallible ops).
 3139|      1|    state->pickle.dumps = NULL;
 3140|      1|    state->pickle.loads = NULL;
 3141|       |
 3142|      1|    xid_lookup_init(&state->data_lookup);
 3143|       |
 3144|       |    // Initialize exceptions.
 3145|      1|    if (interp != NULL) {
  ------------------
  |  Branch (3145:9): [True: 0, False: 1]
  ------------------
 3146|      0|        if (init_static_exctypes(&state->exceptions, interp) < 0) {
  ------------------
  |  Branch (3146:13): [True: 0, False: 0]
  ------------------
 3147|      0|            fini_heap_exctypes(&state->exceptions);
 3148|      0|            return -1;
 3149|      0|        }
 3150|      0|    }
 3151|      1|    if (init_heap_exctypes(&state->exceptions) < 0) {
  ------------------
  |  Branch (3151:9): [True: 0, False: 1]
  ------------------
 3152|      0|        return -1;
 3153|      0|    }
 3154|       |
 3155|      1|    return 0;
 3156|      1|}
_PyXI_Init:
 3180|      1|{
 3181|      1|    if (_Py_IsMainInterpreter(interp)) {
  ------------------
  |  Branch (3181:9): [True: 1, False: 0]
  ------------------
 3182|      1|        _PyXI_global_state_t *global_state = _PyXI_GET_GLOBAL_STATE(interp);
  ------------------
  |  |  276|      1|#define _PyXI_GET_GLOBAL_STATE(interp) (&(interp)->runtime->xi)
  ------------------
 3183|      1|        if (global_state == NULL) {
  ------------------
  |  Branch (3183:13): [True: 0, False: 1]
  ------------------
 3184|      0|            PyErr_PrintEx(0);
 3185|      0|            return _PyStatus_ERR(
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 3186|      0|                    "failed to get global cross-interpreter state");
 3187|      0|        }
 3188|      1|        if (_Py_xi_global_state_init(global_state) < 0) {
  ------------------
  |  Branch (3188:13): [True: 0, False: 1]
  ------------------
 3189|      0|            PyErr_PrintEx(0);
 3190|      0|            return _PyStatus_ERR(
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 3191|      0|                    "failed to initialize  global cross-interpreter state");
 3192|      0|        }
 3193|      1|    }
 3194|       |
 3195|      1|    _PyXI_state_t *state = _PyXI_GET_STATE(interp);
  ------------------
  |  |  277|      1|#define _PyXI_GET_STATE(interp) (&(interp)->xi)
  ------------------
 3196|      1|    if (state == NULL) {
  ------------------
  |  Branch (3196:9): [True: 0, False: 1]
  ------------------
 3197|      0|        PyErr_PrintEx(0);
 3198|      0|        return _PyStatus_ERR(
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 3199|      0|                "failed to get interpreter's cross-interpreter state");
 3200|      0|    }
 3201|       |    // The static types were already initialized in _PyXI_InitTypes(),
 3202|       |    // so we pass in NULL here to avoid initializing them again.
 3203|      1|    if (_Py_xi_state_init(state, NULL) < 0) {
  ------------------
  |  Branch (3203:9): [True: 0, False: 1]
  ------------------
 3204|      0|        PyErr_PrintEx(0);
 3205|      0|        return _PyStatus_ERR(
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 3206|      0|                "failed to initialize interpreter's cross-interpreter state");
 3207|      0|    }
 3208|       |
 3209|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 3210|      1|}
_PyXI_InitTypes:
 3237|      1|{
 3238|      1|    if (init_static_exctypes(&_PyXI_GET_STATE(interp)->exceptions, interp) < 0) {
  ------------------
  |  |  277|      1|#define _PyXI_GET_STATE(interp) (&(interp)->xi)
  ------------------
  |  Branch (3238:9): [True: 0, False: 1]
  ------------------
 3239|      0|        PyErr_PrintEx(0);
 3240|      0|        return _PyStatus_ERR(
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 3241|      0|                "failed to initialize the cross-interpreter exception types");
 3242|      0|    }
 3243|       |    // We would initialize heap types here too but that leads to ref leaks.
 3244|       |    // Instead, we initialize them in _PyXI_Init().
 3245|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 3246|      1|}

crossinterp.c:_xidregistry_add_type:
  254|      7|{
  255|      7|    dlregitem_t *newhead = PyMem_RawMalloc(sizeof(dlregitem_t));
  256|      7|    if (newhead == NULL) {
  ------------------
  |  Branch (256:9): [True: 0, False: 7]
  ------------------
  257|      0|        return -1;
  258|      0|    }
  259|      7|    assert((getdata.basic == NULL) != (getdata.fallback == NULL));
  ------------------
  |  Branch (259:5): [True: 7, False: 0]
  ------------------
  260|      7|    *newhead = (dlregitem_t){
  261|       |        // We do not keep a reference, to avoid keeping the class alive.
  262|      7|        .cls = cls,
  263|      7|        .refcount = 1,
  264|      7|        .getdata = getdata,
  265|      7|    };
  266|      7|    if (cls->tp_flags & Py_TPFLAGS_HEAPTYPE) {
  ------------------
  |  |  503|      7|#define Py_TPFLAGS_HEAPTYPE (1UL << 9)
  ------------------
  |  Branch (266:9): [True: 0, False: 7]
  ------------------
  267|       |        // XXX Assign a callback to clear the entry from the registry?
  268|      0|        newhead->weakref = PyWeakref_NewRef((PyObject *)cls, NULL);
  269|      0|        if (newhead->weakref == NULL) {
  ------------------
  |  Branch (269:13): [True: 0, False: 0]
  ------------------
  270|      0|            PyMem_RawFree(newhead);
  271|      0|            return -1;
  272|      0|        }
  273|      0|    }
  274|      7|    newhead->next = xidregistry->head;
  275|      7|    if (newhead->next != NULL) {
  ------------------
  |  Branch (275:9): [True: 6, False: 1]
  ------------------
  276|      6|        newhead->next->prev = newhead;
  277|      6|    }
  278|      7|    xidregistry->head = newhead;
  279|      7|    return 0;
  280|      7|}
crossinterp.c:xid_lookup_init:
   23|      2|{
   24|      2|    _xidregistry_init(&state->registry);
   25|      2|}
crossinterp.c:_xidregistry_init:
  145|      2|{
  146|      2|    if (registry->initialized) {
  ------------------
  |  Branch (146:9): [True: 0, False: 2]
  ------------------
  147|      0|        return;
  148|      0|    }
  149|      2|    registry->initialized = 1;
  150|       |
  151|      2|    if (registry->global) {
  ------------------
  |  Branch (151:9): [True: 1, False: 1]
  ------------------
  152|       |        // Registering the builtins is cheap so we don't bother doing it lazily.
  153|      1|        assert(registry->head == NULL);
  ------------------
  |  Branch (153:9): [True: 1, False: 0]
  ------------------
  154|      1|        _register_builtins_for_crossinterpreter_data(registry);
  155|      1|    }
  156|      2|}
crossinterp.c:_register_builtins_for_crossinterpreter_data:
  791|      1|{
  792|      1|#define REGISTER(TYPE, GETDATA) \
  793|      1|    _xidregistry_add_type(xidregistry, (PyTypeObject *)TYPE, \
  794|      1|                          ((_PyXIData_getdata_t){.basic=(GETDATA)}))
  795|      1|#define REGISTER_FALLBACK(TYPE, GETDATA) \
  796|      1|    _xidregistry_add_type(xidregistry, (PyTypeObject *)TYPE, \
  797|      1|                          ((_PyXIData_getdata_t){.fallback=(GETDATA)}))
  798|       |    // None
  799|      1|    if (REGISTER(Py_TYPE(Py_None), _none_shared) != 0) {
  ------------------
  |  |  793|      1|    _xidregistry_add_type(xidregistry, (PyTypeObject *)TYPE, \
  |  |  794|      1|                          ((_PyXIData_getdata_t){.basic=(GETDATA)}))
  ------------------
  |  Branch (799:9): [True: 0, False: 1]
  ------------------
  800|      0|        Py_FatalError("could not register None for cross-interpreter sharing");
  ------------------
  |  |  133|      0|#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))
  ------------------
  801|      0|    }
  802|       |
  803|       |    // int
  804|      1|    if (REGISTER(&PyLong_Type, _long_shared) != 0) {
  ------------------
  |  |  793|      1|    _xidregistry_add_type(xidregistry, (PyTypeObject *)TYPE, \
  |  |  794|      1|                          ((_PyXIData_getdata_t){.basic=(GETDATA)}))
  ------------------
  |  Branch (804:9): [True: 0, False: 1]
  ------------------
  805|      0|        Py_FatalError("could not register int for cross-interpreter sharing");
  ------------------
  |  |  133|      0|#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))
  ------------------
  806|      0|    }
  807|       |
  808|       |    // bytes
  809|      1|    if (REGISTER(&PyBytes_Type, _PyBytes_GetXIData) != 0) {
  ------------------
  |  |  793|      1|    _xidregistry_add_type(xidregistry, (PyTypeObject *)TYPE, \
  |  |  794|      1|                          ((_PyXIData_getdata_t){.basic=(GETDATA)}))
  ------------------
  |  Branch (809:9): [True: 0, False: 1]
  ------------------
  810|      0|        Py_FatalError("could not register bytes for cross-interpreter sharing");
  ------------------
  |  |  133|      0|#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))
  ------------------
  811|      0|    }
  812|       |
  813|       |    // str
  814|      1|    if (REGISTER(&PyUnicode_Type, _str_shared) != 0) {
  ------------------
  |  |  793|      1|    _xidregistry_add_type(xidregistry, (PyTypeObject *)TYPE, \
  |  |  794|      1|                          ((_PyXIData_getdata_t){.basic=(GETDATA)}))
  ------------------
  |  Branch (814:9): [True: 0, False: 1]
  ------------------
  815|      0|        Py_FatalError("could not register str for cross-interpreter sharing");
  ------------------
  |  |  133|      0|#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))
  ------------------
  816|      0|    }
  817|       |
  818|       |    // bool
  819|      1|    if (REGISTER(&PyBool_Type, _bool_shared) != 0) {
  ------------------
  |  |  793|      1|    _xidregistry_add_type(xidregistry, (PyTypeObject *)TYPE, \
  |  |  794|      1|                          ((_PyXIData_getdata_t){.basic=(GETDATA)}))
  ------------------
  |  Branch (819:9): [True: 0, False: 1]
  ------------------
  820|      0|        Py_FatalError("could not register bool for cross-interpreter sharing");
  ------------------
  |  |  133|      0|#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))
  ------------------
  821|      0|    }
  822|       |
  823|       |    // float
  824|      1|    if (REGISTER(&PyFloat_Type, _float_shared) != 0) {
  ------------------
  |  |  793|      1|    _xidregistry_add_type(xidregistry, (PyTypeObject *)TYPE, \
  |  |  794|      1|                          ((_PyXIData_getdata_t){.basic=(GETDATA)}))
  ------------------
  |  Branch (824:9): [True: 0, False: 1]
  ------------------
  825|      0|        Py_FatalError("could not register float for cross-interpreter sharing");
  ------------------
  |  |  133|      0|#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))
  ------------------
  826|      0|    }
  827|       |
  828|       |    // tuple
  829|      1|    if (REGISTER_FALLBACK(&PyTuple_Type, _tuple_shared) != 0) {
  ------------------
  |  |  796|      1|    _xidregistry_add_type(xidregistry, (PyTypeObject *)TYPE, \
  |  |  797|      1|                          ((_PyXIData_getdata_t){.fallback=(GETDATA)}))
  ------------------
  |  Branch (829:9): [True: 0, False: 1]
  ------------------
  830|      0|        Py_FatalError("could not register tuple for cross-interpreter sharing");
  ------------------
  |  |  133|      0|#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))
  ------------------
  831|      0|    }
  832|       |
  833|       |    // For now, we do not register PyCode_Type or PyFunction_Type.
  834|      1|#undef REGISTER
  835|      1|#undef REGISTER_FALLBACK
  836|      1|}

crossinterp.c:init_static_exctypes:
  139|      1|{
  140|      1|    assert(state == &_PyXI_GET_STATE(interp)->exceptions);
  ------------------
  |  Branch (140:5): [True: 1, False: 0]
  ------------------
  141|      1|    PyTypeObject *base = (PyTypeObject *)PyExc_Exception;
  142|       |
  143|       |    // PyExc_InterpreterError
  144|      1|    _PyExc_InterpreterError.tp_base = base;
  145|      1|    _PyExc_InterpreterError.tp_traverse = base->tp_traverse;
  146|      1|    _PyExc_InterpreterError.tp_clear = base->tp_clear;
  147|      1|    if (_PyStaticType_InitBuiltin(interp, &_PyExc_InterpreterError) < 0) {
  ------------------
  |  Branch (147:9): [True: 0, False: 1]
  ------------------
  148|      0|        goto error;
  149|      0|    }
  150|      1|    state->PyExc_InterpreterError = (PyObject *)&_PyExc_InterpreterError;
  151|       |
  152|       |    // PyExc_InterpreterNotFoundError
  153|      1|    _PyExc_InterpreterNotFoundError.tp_traverse = base->tp_traverse;
  154|      1|    _PyExc_InterpreterNotFoundError.tp_clear = base->tp_clear;
  155|      1|    if (_PyStaticType_InitBuiltin(interp, &_PyExc_InterpreterNotFoundError) < 0) {
  ------------------
  |  Branch (155:9): [True: 0, False: 1]
  ------------------
  156|      0|        goto error;
  157|      0|    }
  158|      1|    state->PyExc_InterpreterNotFoundError =
  159|      1|            (PyObject *)&_PyExc_InterpreterNotFoundError;
  160|       |
  161|      1|    return 0;
  162|       |
  163|      0|error:
  164|      0|    fini_static_exctypes(state, interp);
  165|      0|    return -1;
  166|      1|}
crossinterp.c:init_heap_exctypes:
  184|      1|{
  185|      1|    if (_init_notshareableerror(state) < 0) {
  ------------------
  |  Branch (185:9): [True: 0, False: 1]
  ------------------
  186|      0|        goto error;
  187|      0|    }
  188|      1|    return 0;
  189|       |
  190|      0|error:
  191|      0|    fini_heap_exctypes(state);
  192|      0|    return -1;
  193|      1|}
crossinterp.c:_init_notshareableerror:
   46|      1|{
   47|      1|    const char *name = "concurrent.interpreters.NotShareableError";
   48|      1|    PyObject *base = PyExc_TypeError;
   49|      1|    PyObject *ns = NULL;
   50|      1|    PyObject *exctype = PyErr_NewException(name, base, ns);
   51|      1|    if (exctype == NULL) {
  ------------------
  |  Branch (51:9): [True: 0, False: 1]
  ------------------
   52|      0|        return -1;
   53|      0|    }
   54|      1|    state->PyExc_NotShareableError = exctype;
   55|      1|    return 0;
   56|      1|}

_PyDtoa_Init:
 2806|      1|{
 2807|      1|#if _PY_SHORT_FLOAT_REPR == 1 && !defined(Py_USING_MEMORY_DEBUGGER)
 2808|      1|    Bigint **p5s = interp->dtoa.p5s;
 2809|       |
 2810|       |    // 5**4 = 625
 2811|      1|    Bigint *p5 = i2b(625);
 2812|      1|    if (p5 == NULL) {
  ------------------
  |  Branch (2812:9): [True: 0, False: 1]
  ------------------
 2813|      0|        return PyStatus_NoMemory();
 2814|      0|    }
 2815|      1|    p5s[0] = p5;
 2816|       |
 2817|       |    // compute 5**8, 5**16, 5**32, ..., 5**512
 2818|      8|    for (Py_ssize_t i = 1; i < Bigint_Pow5size; i++) {
  ------------------
  |  |  471|      8|#define Bigint_Pow5size 8
  ------------------
  |  Branch (2818:28): [True: 7, False: 1]
  ------------------
 2819|      7|        p5 = mult(p5, p5);
 2820|      7|        if (p5 == NULL) {
  ------------------
  |  Branch (2820:13): [True: 0, False: 7]
  ------------------
 2821|      0|            return PyStatus_NoMemory();
 2822|      0|        }
 2823|      7|        p5s[i] = p5;
 2824|      7|    }
 2825|       |
 2826|      1|#endif
 2827|      1|    return PyStatus_Ok();
 2828|      1|}
dtoa.c:Balloc:
  341|      8|{
  342|      8|    int x;
  343|      8|    Bigint *rv;
  344|      8|    unsigned int len;
  345|      8|    PyInterpreterState *interp = _PyInterpreterState_GET();
  346|       |
  347|      8|    if (k <= Bigint_Kmax && (rv = freelist[k]))
  ------------------
  |  |  468|     16|#define Bigint_Kmax 7
  ------------------
                  if (k <= Bigint_Kmax && (rv = freelist[k]))
  ------------------
  |  |  333|      8|#define freelist interp->dtoa.freelist
  ------------------
  |  Branch (347:9): [True: 8, False: 0]
  |  Branch (347:29): [True: 0, False: 8]
  ------------------
  348|      0|        freelist[k] = rv->next;
  ------------------
  |  |  333|      0|#define freelist interp->dtoa.freelist
  ------------------
  349|      8|    else {
  350|      8|        x = 1 << k;
  351|      8|        len = (sizeof(Bigint) + (x-1)*sizeof(ULong) + sizeof(double) - 1)
  352|      8|            /sizeof(double);
  353|      8|        if (k <= Bigint_Kmax &&
  ------------------
  |  |  468|     16|#define Bigint_Kmax 7
  ------------------
  |  Branch (353:13): [True: 8, False: 0]
  ------------------
  354|      8|            pmem_next - private_mem + len <= (Py_ssize_t)Bigint_PREALLOC_SIZE
  ------------------
  |  |  335|      8|#define pmem_next interp->dtoa.preallocated_next
  ------------------
                          pmem_next - private_mem + len <= (Py_ssize_t)Bigint_PREALLOC_SIZE
  ------------------
  |  |  334|      8|#define private_mem interp->dtoa.preallocated
  ------------------
                          pmem_next - private_mem + len <= (Py_ssize_t)Bigint_PREALLOC_SIZE
  ------------------
  |  |  477|      8|    ((PRIVATE_MEM+sizeof(double)-1)/sizeof(double))
  |  |  ------------------
  |  |  |  |  474|      8|#define PRIVATE_MEM 2304
  |  |  ------------------
  ------------------
  |  Branch (354:13): [True: 8, False: 0]
  ------------------
  355|      8|        ) {
  356|      8|            rv = (Bigint*)pmem_next;
  ------------------
  |  |  335|      8|#define pmem_next interp->dtoa.preallocated_next
  ------------------
  357|      8|            pmem_next += len;
  ------------------
  |  |  335|      8|#define pmem_next interp->dtoa.preallocated_next
  ------------------
  358|      8|        }
  359|      0|        else {
  360|      0|            rv = (Bigint*)MALLOC(len*sizeof(double));
  ------------------
  |  |  133|      0|#define MALLOC PyMem_Malloc
  ------------------
  361|      0|            if (rv == NULL)
  ------------------
  |  Branch (361:17): [True: 0, False: 0]
  ------------------
  362|      0|                return NULL;
  363|      0|        }
  364|      8|        rv->k = k;
  365|      8|        rv->maxwds = x;
  366|      8|    }
  367|      8|    rv->sign = rv->wds = 0;
  368|      8|    return rv;
  369|      8|}
dtoa.c:i2b:
  595|      1|{
  596|      1|    Bigint *b;
  597|       |
  598|      1|    b = Balloc(1);
  599|      1|    if (b == NULL)
  ------------------
  |  Branch (599:9): [True: 0, False: 1]
  ------------------
  600|      0|        return NULL;
  601|      1|    b->x[0] = i;
  602|      1|    b->wds = 1;
  603|      1|    return b;
  604|      1|}
dtoa.c:mult:
  611|      7|{
  612|      7|    Bigint *c;
  613|      7|    int k, wa, wb, wc;
  614|      7|    ULong *x, *xa, *xae, *xb, *xbe, *xc, *xc0;
  615|      7|    ULong y;
  616|      7|    ULLong carry, z;
  617|       |
  618|      7|    if ((!a->x[0] && a->wds == 1) || (!b->x[0] && b->wds == 1)) {
  ------------------
  |  Branch (618:10): [True: 0, False: 7]
  |  Branch (618:22): [True: 0, False: 0]
  |  Branch (618:39): [True: 0, False: 7]
  |  Branch (618:51): [True: 0, False: 0]
  ------------------
  619|      0|        c = Balloc(0);
  620|      0|        if (c == NULL)
  ------------------
  |  Branch (620:13): [True: 0, False: 0]
  ------------------
  621|      0|            return NULL;
  622|      0|        c->wds = 1;
  623|      0|        c->x[0] = 0;
  624|      0|        return c;
  625|      0|    }
  626|       |
  627|      7|    if (a->wds < b->wds) {
  ------------------
  |  Branch (627:9): [True: 0, False: 7]
  ------------------
  628|      0|        c = a;
  629|      0|        a = b;
  630|      0|        b = c;
  631|      0|    }
  632|      7|    k = a->k;
  633|      7|    wa = a->wds;
  634|      7|    wb = b->wds;
  635|      7|    wc = wa + wb;
  636|      7|    if (wc > a->maxwds)
  ------------------
  |  Branch (636:9): [True: 5, False: 2]
  ------------------
  637|      5|        k++;
  638|      7|    c = Balloc(k);
  639|      7|    if (c == NULL)
  ------------------
  |  Branch (639:9): [True: 0, False: 7]
  ------------------
  640|      0|        return NULL;
  641|     89|    for(x = c->x, xa = x + wc; x < xa; x++)
  ------------------
  |  Branch (641:32): [True: 82, False: 7]
  ------------------
  642|     82|        *x = 0;
  643|      7|    xa = a->x;
  644|      7|    xae = xa + wa;
  645|      7|    xb = b->x;
  646|      7|    xbe = xb + wb;
  647|      7|    xc0 = c->x;
  648|     48|    for(; xb < xbe; xc0++) {
  ------------------
  |  Branch (648:11): [True: 41, False: 7]
  ------------------
  649|     41|        if ((y = *xb++)) {
  ------------------
  |  Branch (649:13): [True: 41, False: 0]
  ------------------
  650|     41|            x = xa;
  651|     41|            xc = xc0;
  652|     41|            carry = 0;
  653|    501|            do {
  654|    501|                z = *x++ * (ULLong)y + *xc + carry;
  655|    501|                carry = z >> 32;
  656|    501|                *xc++ = (ULong)(z & FFFFFFFF);
  ------------------
  |  |  285|    501|#define FFFFFFFF 0xffffffffUL
  ------------------
  657|    501|            }
  658|    501|            while(x < xae);
  ------------------
  |  Branch (658:19): [True: 460, False: 41]
  ------------------
  659|     41|            *xc = (ULong)carry;
  660|     41|        }
  661|     41|    }
  662|     11|    for(xc0 = c->x, xc = xc0 + wc; wc > 0 && !*--xc; --wc) ;
  ------------------
  |  Branch (662:36): [True: 11, False: 0]
  |  Branch (662:46): [True: 4, False: 7]
  ------------------
  663|      7|    c->wds = wc;
  664|      7|    return c;
  665|      7|}

_PyErr_SetRaisedException:
   25|    599|{
   26|    599|    PyObject *old_exc = tstate->current_exception;
   27|    599|    tstate->current_exception = exc;
   28|    599|    Py_XDECREF(old_exc);
  ------------------
  |  |  524|    599|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    599|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    599|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   29|    599|}
_PyErr_Restore:
   60|    256|{
   61|    256|    if (type == NULL) {
  ------------------
  |  Branch (61:9): [True: 142, False: 114]
  ------------------
   62|    142|        assert(value == NULL);
  ------------------
  |  Branch (62:9): [True: 142, False: 0]
  ------------------
   63|    142|        assert(traceback == NULL);
  ------------------
  |  Branch (63:9): [True: 142, False: 0]
  ------------------
   64|    142|        _PyErr_SetRaisedException(tstate, NULL);
   65|    142|        return;
   66|    142|    }
   67|    256|    assert(PyExceptionClass_Check(type));
  ------------------
  |  Branch (67:5): [True: 114, False: 0]
  |  Branch (67:5): [True: 114, False: 0]
  ------------------
   68|    114|    if (value != NULL && type == (PyObject *)Py_TYPE(value)) {
  ------------------
  |  |  213|    114|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    114|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    114|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (68:9): [True: 114, False: 0]
  |  Branch (68:26): [True: 114, False: 0]
  ------------------
   69|       |        /* Already normalized */
   70|       |#ifdef Py_DEBUG
   71|       |        PyObject *tb = PyException_GetTraceback(value);
   72|       |        assert(tb != Py_None);
   73|       |        Py_XDECREF(tb);
   74|       |#endif
   75|    114|    }
   76|      0|    else {
   77|      0|        PyObject *exc = _PyErr_CreateException(type, value);
   78|      0|        Py_XDECREF(value);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   79|      0|        if (exc == NULL) {
  ------------------
  |  Branch (79:13): [True: 0, False: 0]
  ------------------
   80|      0|            Py_DECREF(type);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   81|      0|            Py_XDECREF(traceback);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   82|      0|            return;
   83|      0|        }
   84|      0|        value = exc;
   85|      0|    }
   86|    114|    assert(PyExceptionInstance_Check(value));
  ------------------
  |  Branch (86:5): [True: 114, False: 0]
  ------------------
   87|    114|    if (traceback != NULL) {
  ------------------
  |  Branch (87:9): [True: 0, False: 114]
  ------------------
   88|      0|        if (PyException_SetTraceback(value, traceback) < 0) {
  ------------------
  |  Branch (88:13): [True: 0, False: 0]
  ------------------
   89|      0|            Py_DECREF(traceback);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   90|      0|            Py_DECREF(value);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   91|      0|            Py_DECREF(type);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   92|      0|            return;
   93|      0|        }
   94|      0|        Py_DECREF(traceback);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   95|      0|    }
   96|    114|    _PyErr_SetRaisedException(tstate, value);
   97|    114|    Py_DECREF(type);
  ------------------
  |  |  430|    114|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    114|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    114|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   98|    114|}
PyErr_SetRaisedException:
  109|    287|{
  110|    287|    PyThreadState *tstate = _PyThreadState_GET();
  111|    287|    _PyErr_SetRaisedException(tstate, exc);
  112|    287|}
_PyErr_GetTopmostException:
  116|    114|{
  117|    114|    _PyErr_StackItem *exc_info = tstate->exc_info;
  118|    114|    assert(exc_info);
  ------------------
  |  Branch (118:5): [True: 114, False: 0]
  ------------------
  119|       |
  120|    116|    while (exc_info->exc_value == NULL && exc_info->previous_item != NULL)
  ------------------
  |  Branch (120:12): [True: 107, False: 9]
  |  Branch (120:43): [True: 2, False: 105]
  ------------------
  121|      2|    {
  122|      2|        exc_info = exc_info->previous_item;
  123|      2|    }
  124|    114|    assert(!Py_IsNone(exc_info->exc_value));
  ------------------
  |  Branch (124:5): [True: 114, False: 0]
  ------------------
  125|    114|    return exc_info;
  126|    114|}
_PyErr_SetObject:
  152|    114|{
  153|    114|    PyObject *exc_value;
  154|    114|    PyObject *tb = NULL;
  155|       |
  156|    114|    if (exception != NULL &&
  ------------------
  |  Branch (156:9): [True: 114, False: 0]
  ------------------
  157|    114|        !PyExceptionClass_Check(exception)) {
  ------------------
  |  |   61|    114|    (PyType_Check((x)) &&                                               \
  |  |  ------------------
  |  |  |  |  766|    228|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    114|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    114|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (766:28): [True: 114, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   62|    114|     PyType_FastSubclass((PyTypeObject*)(x), Py_TPFLAGS_BASE_EXC_SUBCLASS))
  |  |  ------------------
  |  |  |  |  760|    114|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 114, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  158|      0|        _PyErr_Format(tstate, PyExc_SystemError,
  159|      0|                      "_PyErr_SetObject: "
  160|      0|                      "exception %R is not a BaseException subclass",
  161|      0|                      exception);
  162|      0|        return;
  163|      0|    }
  164|       |    /* Normalize the exception */
  165|    114|    int is_subclass = 0;
  166|    114|    if (value != NULL && PyExceptionInstance_Check(value)) {
  ------------------
  |  |   65|    114|    PyType_FastSubclass(Py_TYPE(x), Py_TPFLAGS_BASE_EXC_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|    114|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 79, False: 35]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (166:9): [True: 114, False: 0]
  ------------------
  167|     79|        is_subclass = PyObject_IsSubclass((PyObject *)Py_TYPE(value), exception);
  ------------------
  |  |  213|     79|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     79|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     79|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  168|     79|        if (is_subclass < 0) {
  ------------------
  |  Branch (168:13): [True: 0, False: 79]
  ------------------
  169|      0|            return;
  170|      0|        }
  171|     79|    }
  172|    114|    Py_XINCREF(value);
  ------------------
  |  |  514|    114|#  define Py_XINCREF(op) Py_XINCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    114|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    114|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  173|    114|    if (!is_subclass) {
  ------------------
  |  Branch (173:9): [True: 35, False: 79]
  ------------------
  174|       |        /* We must normalize the value right now */
  175|       |
  176|       |        /* Issue #23571: functions must not be called with an
  177|       |            exception set */
  178|     35|        _PyErr_Clear(tstate);
  179|       |
  180|     35|        PyObject *fixed_value = _PyErr_CreateException(exception, value);
  181|     35|        if (fixed_value == NULL) {
  ------------------
  |  Branch (181:13): [True: 0, False: 35]
  ------------------
  182|      0|            PyObject *exc = _PyErr_GetRaisedException(tstate);
  183|      0|            assert(PyExceptionInstance_Check(exc));
  ------------------
  |  Branch (183:13): [True: 0, False: 0]
  ------------------
  184|       |
  185|      0|            PyObject *note = get_normalization_failure_note(tstate, exception, value);
  186|      0|            Py_XDECREF(value);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  187|      0|            if (note != NULL) {
  ------------------
  |  Branch (187:17): [True: 0, False: 0]
  ------------------
  188|       |                /* ignore errors in _PyException_AddNote - they will be overwritten below */
  189|      0|                _PyException_AddNote(exc, note);
  190|      0|                Py_DECREF(note);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  191|      0|            }
  192|      0|            _PyErr_SetRaisedException(tstate, exc);
  193|      0|            return;
  194|      0|        }
  195|     35|        Py_XSETREF(value, fixed_value);
  ------------------
  |  |  374|     35|    do { \
  |  |  375|     35|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|     35|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  376|     35|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|     35|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  377|     35|        *_tmp_dst_ptr = (src); \
  |  |  378|     35|        Py_XDECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  524|     35|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     35|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     35|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  379|     35|    } while (0)
  |  |  ------------------
  |  |  |  Branch (379:14): [Folded, False: 35]
  |  |  ------------------
  ------------------
  196|     35|    }
  197|       |
  198|    114|    exc_value = _PyErr_GetTopmostException(tstate)->exc_value;
  199|    114|    if (exc_value != NULL && exc_value != Py_None) {
  ------------------
  |  |  616|      9|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (199:9): [True: 9, False: 105]
  |  Branch (199:30): [True: 9, False: 0]
  ------------------
  200|       |        /* Implicit exception chaining */
  201|      9|        Py_INCREF(exc_value);
  ------------------
  |  |  310|      9|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      9|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      9|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  202|       |        /* Avoid creating new reference cycles through the
  203|       |           context chain, while taking care not to hang on
  204|       |           pre-existing ones.
  205|       |           This is O(chain length) but context chains are
  206|       |           usually very short. Sensitive readers may try
  207|       |           to inline the call to PyException_GetContext. */
  208|      9|        if (exc_value != value) {
  ------------------
  |  Branch (208:13): [True: 9, False: 0]
  ------------------
  209|      9|            PyObject *o = exc_value, *context;
  210|      9|            PyObject *slow_o = o;  /* Floyd's cycle detection algo */
  211|      9|            int slow_update_toggle = 0;
  212|      9|            while ((context = PyException_GetContext(o))) {
  ------------------
  |  Branch (212:20): [True: 0, False: 9]
  ------------------
  213|      0|                Py_DECREF(context);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  214|      0|                if (context == value) {
  ------------------
  |  Branch (214:21): [True: 0, False: 0]
  ------------------
  215|      0|                    PyException_SetContext(o, NULL);
  216|      0|                    break;
  217|      0|                }
  218|      0|                o = context;
  219|      0|                if (o == slow_o) {
  ------------------
  |  Branch (219:21): [True: 0, False: 0]
  ------------------
  220|       |                    /* pre-existing cycle - all exceptions on the
  221|       |                       path were visited and checked.  */
  222|      0|                    break;
  223|      0|                }
  224|      0|                if (slow_update_toggle) {
  ------------------
  |  Branch (224:21): [True: 0, False: 0]
  ------------------
  225|      0|                    slow_o = PyException_GetContext(slow_o);
  226|      0|                    Py_DECREF(slow_o);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  227|      0|                }
  228|      0|                slow_update_toggle = !slow_update_toggle;
  229|      0|            }
  230|      9|            PyException_SetContext(value, exc_value);
  231|      9|        }
  232|      0|        else {
  233|      0|            Py_DECREF(exc_value);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  234|      0|        }
  235|      9|    }
  236|    114|    assert(value != NULL);
  ------------------
  |  Branch (236:5): [True: 114, False: 0]
  ------------------
  237|    114|    if (PyExceptionInstance_Check(value))
  ------------------
  |  |   65|    114|    PyType_FastSubclass(Py_TYPE(x), Py_TPFLAGS_BASE_EXC_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|    114|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 114, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  238|    114|        tb = PyException_GetTraceback(value);
  239|    114|    _PyErr_Restore(tstate, Py_NewRef(Py_TYPE(value)), value, tb);
  ------------------
  |  |  550|    114|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    114|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    114|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  240|    114|}
PyErr_SetObject:
  244|     13|{
  245|     13|    PyThreadState *tstate = _PyThreadState_GET();
  246|     13|    _PyErr_SetObject(tstate, exception, value);
  247|     13|}
_PyErr_SetKeyError:
  258|     59|{
  259|     59|    PyThreadState *tstate = _PyThreadState_GET();
  260|       |
  261|       |    // PyObject_CallOneArg() must not be called with an exception set,
  262|       |    // otherwise _Py_CheckFunctionResult() can fail if the function returned
  263|       |    // a result with an excception set.
  264|     59|    _PyErr_Clear(tstate);
  265|       |
  266|     59|    PyObject *exc = PyObject_CallOneArg(PyExc_KeyError, arg);
  267|     59|    if (!exc) {
  ------------------
  |  Branch (267:9): [True: 0, False: 59]
  ------------------
  268|       |        /* caller will expect error to be set anyway */
  269|      0|        return;
  270|      0|    }
  271|       |
  272|     59|    _PyErr_SetObject(tstate, (PyObject*)Py_TYPE(exc), exc);
  ------------------
  |  |  213|     59|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     59|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     59|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  273|     59|    Py_DECREF(exc);
  ------------------
  |  |  430|     59|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     59|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     59|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  274|     59|}
_PyErr_SetString:
  294|      1|{
  295|      1|    PyObject *value = PyUnicode_FromString(string);
  296|      1|    if (value != NULL) {
  ------------------
  |  Branch (296:9): [True: 1, False: 0]
  ------------------
  297|      1|        _PyErr_SetObject(tstate, exception, value);
  298|      1|        Py_DECREF(value);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  299|      1|    }
  300|      1|}
PyErr_SetString:
  304|      1|{
  305|      1|    PyThreadState *tstate = _PyThreadState_GET();
  306|      1|    _PyErr_SetString(tstate, exception, string);
  307|      1|}
PyErr_Occurred:
  321|  14.1k|{
  322|       |    /* The caller must hold a thread state. */
  323|  14.1k|    _Py_AssertHoldsTstate();
  ------------------
  |  |  306|  14.1k|#define _Py_AssertHoldsTstate() _Py_AssertHoldsTstateFunc(__func__)
  ------------------
  324|       |
  325|  14.1k|    PyThreadState *tstate = _PyThreadState_GET();
  326|  14.1k|    return _PyErr_Occurred(tstate);
  327|  14.1k|}
PyErr_GivenExceptionMatches:
  332|    163|{
  333|    163|    if (err == NULL || exc == NULL) {
  ------------------
  |  Branch (333:9): [True: 0, False: 163]
  |  Branch (333:24): [True: 0, False: 163]
  ------------------
  334|       |        /* maybe caused by "import exceptions" that failed early on */
  335|      0|        return 0;
  336|      0|    }
  337|    163|    if (PyTuple_Check(exc)) {
  ------------------
  |  |   27|    163|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TUPLE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|    163|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 7, False: 156]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  338|      7|        Py_ssize_t i, n;
  339|      7|        n = PyTuple_Size(exc);
  340|      7|        for (i = 0; i < n; i++) {
  ------------------
  |  Branch (340:21): [True: 7, False: 0]
  ------------------
  341|       |            /* Test recursively */
  342|      7|             if (PyErr_GivenExceptionMatches(
  ------------------
  |  Branch (342:18): [True: 7, False: 0]
  ------------------
  343|      7|                 err, PyTuple_GET_ITEM(exc, i)))
  ------------------
  |  |   29|      7|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|      7|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (343:23): [True: 7, False: 0]
  ------------------
  344|      7|             {
  345|      7|                 return 1;
  346|      7|             }
  347|      7|        }
  348|      0|        return 0;
  349|      7|    }
  350|       |    /* err might be an instance, so check its class. */
  351|    156|    if (PyExceptionInstance_Check(err))
  ------------------
  |  |   65|    156|    PyType_FastSubclass(Py_TYPE(x), Py_TPFLAGS_BASE_EXC_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|    156|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 110, False: 46]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  352|    110|        err = PyExceptionInstance_Class(err);
  ------------------
  |  |   69|    110|#define PyExceptionInstance_Class(x) _PyObject_CAST(Py_TYPE(x))
  |  |  ------------------
  |  |  |  |  171|    110|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    110|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  353|       |
  354|    156|    if (PyExceptionClass_Check(err) && PyExceptionClass_Check(exc)) {
  ------------------
  |  |   61|    312|    (PyType_Check((x)) &&                                               \
  |  |  ------------------
  |  |  |  |  766|    312|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    156|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    156|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (766:28): [True: 156, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   62|    312|     PyType_FastSubclass((PyTypeObject*)(x), Py_TPFLAGS_BASE_EXC_SUBCLASS))
  |  |  ------------------
  |  |  |  |  760|    156|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 156, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  if (PyExceptionClass_Check(err) && PyExceptionClass_Check(exc)) {
  ------------------
  |  |   61|    156|    (PyType_Check((x)) &&                                               \
  |  |  ------------------
  |  |  |  |  766|    312|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    156|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    156|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (766:28): [True: 156, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   62|    156|     PyType_FastSubclass((PyTypeObject*)(x), Py_TPFLAGS_BASE_EXC_SUBCLASS))
  |  |  ------------------
  |  |  |  |  760|    156|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 156, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  355|    156|        return PyType_IsSubtype((PyTypeObject *)err, (PyTypeObject *)exc);
  356|    156|    }
  357|       |
  358|      0|    return err == exc;
  359|    156|}
_PyErr_ExceptionMatches:
  364|     46|{
  365|     46|    return PyErr_GivenExceptionMatches(_PyErr_Occurred(tstate), exc);
  366|     46|}
PyErr_ExceptionMatches:
  371|     42|{
  372|     42|    PyThreadState *tstate = _PyThreadState_GET();
  373|     42|    return _PyErr_ExceptionMatches(tstate, exc);
  374|     42|}
_PyErr_GetRaisedException:
  499|    431|_PyErr_GetRaisedException(PyThreadState *tstate) {
  500|    431|    PyObject *exc = tstate->current_exception;
  501|       |    tstate->current_exception = NULL;
  502|    431|    return exc;
  503|    431|}
PyErr_GetRaisedException:
  507|    287|{
  508|    287|    PyThreadState *tstate = _PyThreadState_GET();
  509|    287|    return _PyErr_GetRaisedException(tstate);
  510|    287|}
_PyErr_Clear:
  539|    142|{
  540|    142|    _PyErr_Restore(tstate, NULL, NULL, NULL);
  541|    142|}
PyErr_Clear:
  546|     22|{
  547|     22|    PyThreadState *tstate = _PyThreadState_GET();
  548|     22|    _PyErr_Clear(tstate);
  549|     22|}
PyErr_SetFromErrnoWithFilenameObject:
  810|      5|{
  811|       |    return PyErr_SetFromErrnoWithFilenameObjects(exc, filenameObject, NULL);
  812|      5|}
PyErr_SetFromErrnoWithFilenameObjects:
  816|     10|{
  817|     10|    PyThreadState *tstate = _PyThreadState_GET();
  818|     10|    PyObject *message;
  819|     10|    PyObject *v, *args;
  820|     10|    int i = errno;
  821|       |#ifdef MS_WINDOWS
  822|       |    WCHAR *s_buf = NULL;
  823|       |#endif /* Unix/Windows */
  824|       |
  825|     10|#ifdef EINTR
  826|     10|    if (i == EINTR && PyErr_CheckSignals())
  ------------------
  |  Branch (826:9): [True: 0, False: 10]
  |  Branch (826:23): [True: 0, False: 0]
  ------------------
  827|      0|        return NULL;
  828|     10|#endif
  829|       |
  830|     10|#ifndef MS_WINDOWS
  831|     10|    if (i != 0) {
  ------------------
  |  Branch (831:9): [True: 10, False: 0]
  ------------------
  832|     10|        const char *s = strerror(i);
  833|     10|        message = PyUnicode_DecodeLocale(s, "surrogateescape");
  834|     10|    }
  835|      0|    else {
  836|       |        /* Sometimes errno didn't get set */
  837|      0|        message = PyUnicode_FromString("Error");
  838|      0|    }
  839|       |#else
  840|       |    if (i == 0)
  841|       |        message = PyUnicode_FromString("Error"); /* Sometimes errno didn't get set */
  842|       |    else
  843|       |    {
  844|       |        /* Note that the Win32 errors do not lineup with the
  845|       |           errno error.  So if the error is in the MSVC error
  846|       |           table, we use it, otherwise we assume it really _is_
  847|       |           a Win32 error code
  848|       |        */
  849|       |        if (i > 0 && i < _sys_nerr) {
  850|       |            message = PyUnicode_FromString(_sys_errlist[i]);
  851|       |        }
  852|       |        else {
  853|       |            int len = FormatMessageW(
  854|       |                FORMAT_MESSAGE_ALLOCATE_BUFFER |
  855|       |                FORMAT_MESSAGE_FROM_SYSTEM |
  856|       |                FORMAT_MESSAGE_IGNORE_INSERTS,
  857|       |                NULL,                   /* no message source */
  858|       |                i,
  859|       |                MAKELANGID(LANG_NEUTRAL,
  860|       |                           SUBLANG_DEFAULT),
  861|       |                           /* Default language */
  862|       |                (LPWSTR) &s_buf,
  863|       |                0,                      /* size not used */
  864|       |                NULL);                  /* no args */
  865|       |            if (len==0) {
  866|       |                /* Only ever seen this in out-of-mem
  867|       |                   situations */
  868|       |                s_buf = NULL;
  869|       |                message = PyUnicode_FromFormat("Windows Error 0x%x", i);
  870|       |            } else {
  871|       |                /* remove trailing cr/lf and dots */
  872|       |                while (len > 0 && (s_buf[len-1] <= L' ' || s_buf[len-1] == L'.'))
  873|       |                    s_buf[--len] = L'\0';
  874|       |                message = PyUnicode_FromWideChar(s_buf, len);
  875|       |            }
  876|       |        }
  877|       |    }
  878|       |#endif /* Unix/Windows */
  879|       |
  880|     10|    if (message == NULL)
  ------------------
  |  Branch (880:9): [True: 0, False: 10]
  ------------------
  881|      0|    {
  882|       |#ifdef MS_WINDOWS
  883|       |        LocalFree(s_buf);
  884|       |#endif
  885|      0|        return NULL;
  886|      0|    }
  887|       |
  888|     10|    if (filenameObject != NULL) {
  ------------------
  |  Branch (888:9): [True: 5, False: 5]
  ------------------
  889|      5|        if (filenameObject2 != NULL)
  ------------------
  |  Branch (889:13): [True: 0, False: 5]
  ------------------
  890|      0|            args = Py_BuildValue("(iOOiO)", i, message, filenameObject, 0, filenameObject2);
  891|      5|        else
  892|      5|            args = Py_BuildValue("(iOO)", i, message, filenameObject);
  893|      5|    } else {
  894|      5|        assert(filenameObject2 == NULL);
  ------------------
  |  Branch (894:9): [True: 5, False: 0]
  ------------------
  895|      5|        args = Py_BuildValue("(iO)", i, message);
  896|      5|    }
  897|     10|    Py_DECREF(message);
  ------------------
  |  |  430|     10|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     10|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  898|       |
  899|     10|    if (args != NULL) {
  ------------------
  |  Branch (899:9): [True: 10, False: 0]
  ------------------
  900|     10|        v = PyObject_Call(exc, args, NULL);
  901|     10|        Py_DECREF(args);
  ------------------
  |  |  430|     10|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     10|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  902|     10|        if (v != NULL) {
  ------------------
  |  Branch (902:13): [True: 10, False: 0]
  ------------------
  903|     10|            _PyErr_SetObject(tstate, (PyObject *) Py_TYPE(v), v);
  ------------------
  |  |  213|     10|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     10|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  904|     10|            Py_DECREF(v);
  ------------------
  |  |  430|     10|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     10|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  905|     10|        }
  906|     10|    }
  907|       |#ifdef MS_WINDOWS
  908|       |    LocalFree(s_buf);
  909|       |#endif
  910|       |    return NULL;
  911|     10|}
PyErr_SetFromErrno:
  932|      5|{
  933|      5|    return PyErr_SetFromErrnoWithFilenameObjects(exc, NULL, NULL);
  934|      5|}
_PyErr_FormatV:
 1211|     21|{
 1212|     21|    PyObject* string;
 1213|       |
 1214|       |    /* Issue #23571: PyUnicode_FromFormatV() must not be called with an
 1215|       |       exception set, it calls arbitrary Python code like PyObject_Repr() */
 1216|     21|    _PyErr_Clear(tstate);
 1217|       |
 1218|     21|    string = PyUnicode_FromFormatV(format, vargs);
 1219|     21|    if (string != NULL) {
  ------------------
  |  Branch (1219:9): [True: 21, False: 0]
  ------------------
 1220|     21|        _PyErr_SetObject(tstate, exception, string);
 1221|     21|        Py_DECREF(string);
  ------------------
  |  |  430|     21|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     21|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     21|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1222|     21|    }
 1223|       |    return NULL;
 1224|     21|}
PyErr_Format:
 1249|     21|{
 1250|     21|    PyThreadState *tstate = _PyThreadState_GET();
 1251|     21|    va_list vargs;
 1252|     21|    va_start(vargs, format);
 1253|     21|    _PyErr_FormatV(tstate, exception, format, vargs);
 1254|     21|    va_end(vargs);
 1255|       |    return NULL;
 1256|     21|}
PyErr_NewException:
 1288|      2|{
 1289|      2|    PyThreadState *tstate = _PyThreadState_GET();
 1290|      2|    PyObject *modulename = NULL;
 1291|      2|    PyObject *mydict = NULL;
 1292|      2|    PyObject *bases = NULL;
 1293|      2|    PyObject *result = NULL;
 1294|       |
 1295|      2|    const char *dot = strrchr(name, '.');
 1296|      2|    if (dot == NULL) {
  ------------------
  |  Branch (1296:9): [True: 0, False: 2]
  ------------------
 1297|      0|        _PyErr_SetString(tstate, PyExc_SystemError,
 1298|      0|                         "PyErr_NewException: name must be module.class");
 1299|      0|        return NULL;
 1300|      0|    }
 1301|      2|    if (base == NULL) {
  ------------------
  |  Branch (1301:9): [True: 0, False: 2]
  ------------------
 1302|      0|        base = PyExc_Exception;
 1303|      0|    }
 1304|      2|    if (dict == NULL) {
  ------------------
  |  Branch (1304:9): [True: 2, False: 0]
  ------------------
 1305|      2|        dict = mydict = PyDict_New();
 1306|      2|        if (dict == NULL)
  ------------------
  |  Branch (1306:13): [True: 0, False: 2]
  ------------------
 1307|      0|            goto failure;
 1308|      2|    }
 1309|       |
 1310|      2|    int r = PyDict_Contains(dict, &_Py_ID(__module__));
  ------------------
  |  |  917|      2|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      2|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      2|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1311|      2|    if (r < 0) {
  ------------------
  |  Branch (1311:9): [True: 0, False: 2]
  ------------------
 1312|      0|        goto failure;
 1313|      0|    }
 1314|      2|    if (r == 0) {
  ------------------
  |  Branch (1314:9): [True: 2, False: 0]
  ------------------
 1315|      2|        modulename = PyUnicode_FromStringAndSize(name,
 1316|      2|                                             (Py_ssize_t)(dot-name));
 1317|      2|        if (modulename == NULL)
  ------------------
  |  Branch (1317:13): [True: 0, False: 2]
  ------------------
 1318|      0|            goto failure;
 1319|      2|        if (PyDict_SetItem(dict, &_Py_ID(__module__), modulename) != 0)
  ------------------
  |  |  917|      2|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      2|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      2|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1319:13): [True: 0, False: 2]
  ------------------
 1320|      0|            goto failure;
 1321|      2|    }
 1322|      2|    if (PyTuple_Check(base)) {
  ------------------
  |  |   27|      2|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TUPLE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      2|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 1, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1323|      1|        bases = Py_NewRef(base);
  ------------------
  |  |  550|      1|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1324|      1|    } else {
 1325|      1|        bases = PyTuple_Pack(1, base);
 1326|      1|        if (bases == NULL)
  ------------------
  |  Branch (1326:13): [True: 0, False: 1]
  ------------------
 1327|      0|            goto failure;
 1328|      1|    }
 1329|       |    /* Create a real class. */
 1330|      2|    result = PyObject_CallFunction((PyObject *)&PyType_Type, "sOO",
 1331|      2|                                   dot+1, bases, dict);
 1332|      2|  failure:
 1333|      2|    Py_XDECREF(bases);
  ------------------
  |  |  524|      2|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1334|      2|    Py_XDECREF(mydict);
  ------------------
  |  |  524|      2|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1335|      2|    Py_XDECREF(modulename);
  ------------------
  |  |  524|      2|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1336|      2|    return result;
 1337|      2|}
_PyErr_InitTypes:
 1400|      1|{
 1401|      1|    if (_PyStructSequence_InitBuiltin(interp, &UnraisableHookArgsType,
  ------------------
  |  Branch (1401:9): [True: 0, False: 1]
  ------------------
 1402|      1|                                      &UnraisableHookArgs_desc) < 0)
 1403|      0|    {
 1404|      0|        return _PyStatus_ERR("failed to initialize UnraisableHookArgs type");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 1405|      0|    }
 1406|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 1407|      1|}
errors.c:_PyErr_CreateException:
   33|     35|{
   34|     35|    PyObject *exc;
   35|       |
   36|     35|    if (value == NULL || value == Py_None) {
  ------------------
  |  |  616|     35|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (36:9): [True: 0, False: 35]
  |  Branch (36:26): [True: 0, False: 35]
  ------------------
   37|      0|        exc = _PyObject_CallNoArgs(exception_type);
   38|      0|    }
   39|     35|    else if (PyTuple_Check(value)) {
  ------------------
  |  |   27|     35|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TUPLE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     35|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 0, False: 35]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   40|      0|        exc = PyObject_Call(exception_type, value, NULL);
   41|      0|    }
   42|     35|    else {
   43|     35|        exc = PyObject_CallOneArg(exception_type, value);
   44|     35|    }
   45|       |
   46|     35|    if (exc != NULL && !PyExceptionInstance_Check(exc)) {
  ------------------
  |  |   65|     35|    PyType_FastSubclass(Py_TYPE(x), Py_TPFLAGS_BASE_EXC_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     35|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (46:9): [True: 35, False: 0]
  |  Branch (46:24): [True: 0, False: 35]
  ------------------
   47|      0|        PyErr_Format(PyExc_TypeError,
   48|      0|                     "calling %R should have returned an instance of "
   49|      0|                     "BaseException, not %s",
   50|      0|                     exception_type, Py_TYPE(exc)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   51|      0|        Py_CLEAR(exc);
  ------------------
  |  |  484|      0|    do { \
  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
   52|      0|    }
   53|       |
   54|     35|    return exc;
   55|     35|}

_Py_ResetForceASCII:
  325|      6|{
  326|      6|    force_ascii = -1;
  ------------------
  |  |  210|      6|#define force_ascii (_PyRuntime.fileutils.force_ascii)
  ------------------
  327|      6|}
_Py_DecodeLocaleEx:
  600|     17|{
  601|     17|    if (current_locale) {
  ------------------
  |  Branch (601:9): [True: 10, False: 7]
  ------------------
  602|       |#ifdef _Py_FORCE_UTF8_LOCALE
  603|       |        return _Py_DecodeUTF8Ex(arg, strlen(arg), wstr, wlen, reason,
  604|       |                                errors);
  605|       |#else
  606|     10|        return decode_current_locale(arg, wstr, wlen, reason, errors);
  607|     10|#endif
  608|     10|    }
  609|       |
  610|       |#ifdef _Py_FORCE_UTF8_FS_ENCODING
  611|       |    return _Py_DecodeUTF8Ex(arg, strlen(arg), wstr, wlen, reason,
  612|       |                            errors);
  613|       |#else
  614|      7|    int use_utf8 = (_PyRuntime.preconfig.utf8_mode >= 1);
  615|       |#ifdef MS_WINDOWS
  616|       |    use_utf8 |= (_PyRuntime.preconfig.legacy_windows_fs_encoding == 0);
  617|       |#endif
  618|      7|    if (use_utf8) {
  ------------------
  |  Branch (618:9): [True: 7, False: 0]
  ------------------
  619|      7|        return _Py_DecodeUTF8Ex(arg, strlen(arg), wstr, wlen, reason,
  620|      7|                                errors);
  621|      7|    }
  622|       |
  623|      0|#ifdef USE_FORCE_ASCII
  624|      0|    if (force_ascii == -1) {
  ------------------
  |  |  210|      0|#define force_ascii (_PyRuntime.fileutils.force_ascii)
  ------------------
  |  Branch (624:9): [True: 0, False: 0]
  ------------------
  625|      0|        force_ascii = check_force_ascii();
  ------------------
  |  |  210|      0|#define force_ascii (_PyRuntime.fileutils.force_ascii)
  ------------------
  626|      0|    }
  627|       |
  628|      0|    if (force_ascii) {
  ------------------
  |  |  210|      0|#define force_ascii (_PyRuntime.fileutils.force_ascii)
  |  |  ------------------
  |  |  |  Branch (210:21): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  629|       |        /* force ASCII encoding to workaround mbstowcs() issue */
  630|      0|        return decode_ascii(arg, wstr, wlen, reason, errors);
  631|      0|    }
  632|      0|#endif
  633|       |
  634|      0|    return decode_current_locale(arg, wstr, wlen, reason, errors);
  635|      0|#endif   /* !_Py_FORCE_UTF8_FS_ENCODING */
  636|      0|}
Py_DecodeLocale:
  660|      6|{
  661|      6|    wchar_t *wstr;
  662|      6|    int res = _Py_DecodeLocaleEx(arg, &wstr, wlen,
  663|      6|                                 NULL, 0,
  664|      6|                                 _Py_ERROR_SURROGATEESCAPE);
  665|      6|    if (res != 0) {
  ------------------
  |  Branch (665:9): [True: 0, False: 6]
  ------------------
  666|      0|        assert(res != -3);
  ------------------
  |  Branch (666:9): [True: 0, False: 0]
  ------------------
  667|      0|        if (wlen != NULL) {
  ------------------
  |  Branch (667:13): [True: 0, False: 0]
  ------------------
  668|      0|            *wlen = (size_t)res;
  669|      0|        }
  670|      0|        return NULL;
  671|      0|    }
  672|      6|    return wstr;
  673|      6|}
_Py_EncodeLocaleRaw:
  871|     16|{
  872|     16|    return encode_locale(text, error_pos, 1, 0);
  873|     16|}
_Py_fstat_noraise:
 1232|      4|{
 1233|       |#ifdef MS_WINDOWS
 1234|       |    BY_HANDLE_FILE_INFORMATION info;
 1235|       |    FILE_BASIC_INFO basicInfo;
 1236|       |    FILE_ID_INFO idInfo;
 1237|       |    FILE_ID_INFO *pIdInfo = &idInfo;
 1238|       |    HANDLE h;
 1239|       |    int type;
 1240|       |
 1241|       |    h = _Py_get_osfhandle_noraise(fd);
 1242|       |
 1243|       |    if (h == INVALID_HANDLE_VALUE) {
 1244|       |        /* errno is already set by _get_osfhandle, but we also set
 1245|       |           the Win32 error for callers who expect that */
 1246|       |        SetLastError(ERROR_INVALID_HANDLE);
 1247|       |        return -1;
 1248|       |    }
 1249|       |    memset(status, 0, sizeof(*status));
 1250|       |
 1251|       |    type = GetFileType(h);
 1252|       |    if (type == FILE_TYPE_UNKNOWN) {
 1253|       |        DWORD error = GetLastError();
 1254|       |        if (error != 0) {
 1255|       |            errno = winerror_to_errno(error);
 1256|       |            return -1;
 1257|       |        }
 1258|       |        /* else: valid but unknown file */
 1259|       |    }
 1260|       |
 1261|       |    if (type != FILE_TYPE_DISK) {
 1262|       |        if (type == FILE_TYPE_CHAR)
 1263|       |            status->st_mode = _S_IFCHR;
 1264|       |        else if (type == FILE_TYPE_PIPE)
 1265|       |            status->st_mode = _S_IFIFO;
 1266|       |        return 0;
 1267|       |    }
 1268|       |
 1269|       |    if (!GetFileInformationByHandle(h, &info) ||
 1270|       |        !GetFileInformationByHandleEx(h, FileBasicInfo, &basicInfo, sizeof(basicInfo))) {
 1271|       |        /* The Win32 error is already set, but we also set errno for
 1272|       |           callers who expect it */
 1273|       |        errno = winerror_to_errno(GetLastError());
 1274|       |        return -1;
 1275|       |    }
 1276|       |
 1277|       |    if (!GetFileInformationByHandleEx(h, FileIdInfo, &idInfo, sizeof(idInfo))) {
 1278|       |        /* Failed to get FileIdInfo, so do not pass it along */
 1279|       |        pIdInfo = NULL;
 1280|       |    }
 1281|       |
 1282|       |    _Py_attribute_data_to_stat(&info, 0, &basicInfo, pIdInfo, status);
 1283|       |    return 0;
 1284|       |#else
 1285|      4|    return fstat(fd, status);
 1286|      4|#endif
 1287|      4|}
_Py_wstat:
 1329|     10|{
 1330|     10|    int err;
 1331|       |#ifdef MS_WINDOWS
 1332|       |    struct _stat wstatbuf;
 1333|       |    err = _wstat(path, &wstatbuf);
 1334|       |    if (!err) {
 1335|       |        buf->st_mode = wstatbuf.st_mode;
 1336|       |    }
 1337|       |#else
 1338|     10|    char *fname;
 1339|     10|    fname = _Py_EncodeLocaleRaw(path, NULL);
 1340|     10|    if (fname == NULL) {
  ------------------
  |  Branch (1340:9): [True: 0, False: 10]
  ------------------
 1341|      0|        errno = EINVAL;
 1342|      0|        return -1;
 1343|      0|    }
 1344|     10|    err = stat(fname, buf);
 1345|     10|    PyMem_RawFree(fname);
 1346|     10|#endif
 1347|     10|    return err;
 1348|     10|}
_Py_wfopen:
 1713|      5|{
 1714|      5|    FILE *f;
 1715|      5|    if (PySys_Audit("open", "uui", path, mode, 0) < 0) {
  ------------------
  |  Branch (1715:9): [True: 0, False: 5]
  ------------------
 1716|      0|        return NULL;
 1717|      0|    }
 1718|      5|#ifndef MS_WINDOWS
 1719|      5|    char *cpath;
 1720|      5|    char cmode[10];
 1721|      5|    size_t r;
 1722|      5|    r = wcstombs(cmode, mode, 10);
 1723|      5|    if (r == DECODE_ERROR || r >= 10) {
  ------------------
  |  Branch (1723:9): [True: 0, False: 5]
  |  Branch (1723:30): [True: 0, False: 5]
  ------------------
 1724|      0|        errno = EINVAL;
 1725|      0|        return NULL;
 1726|      0|    }
 1727|      5|    cpath = _Py_EncodeLocaleRaw(path, NULL);
 1728|      5|    if (cpath == NULL) {
  ------------------
  |  Branch (1728:9): [True: 0, False: 5]
  ------------------
 1729|      0|        return NULL;
 1730|      0|    }
 1731|      5|    f = fopen(cpath, cmode);
 1732|      5|    PyMem_RawFree(cpath);
 1733|       |#else
 1734|       |    f = _wfopen(path, mode);
 1735|       |#endif
 1736|      5|    if (f == NULL)
  ------------------
  |  Branch (1736:9): [True: 5, False: 0]
  ------------------
 1737|      5|        return NULL;
 1738|      0|    if (make_non_inheritable(fileno(f)) < 0) {
  ------------------
  |  Branch (1738:9): [True: 0, False: 0]
  ------------------
 1739|      0|        fclose(f);
 1740|      0|        return NULL;
 1741|      0|    }
 1742|      0|    return f;
 1743|      0|}
_Py_wreadlink:
 2069|      1|{
 2070|      1|    char *cpath;
 2071|      1|    char cbuf[MAXPATHLEN];
 2072|      1|    size_t cbuf_len = Py_ARRAY_LENGTH(cbuf);
  ------------------
  |  |  196|      1|    (sizeof(array) / sizeof((array)[0]))
  ------------------
 2073|      1|    wchar_t *wbuf;
 2074|      1|    Py_ssize_t res;
 2075|      1|    size_t r1;
 2076|       |
 2077|      1|    cpath = _Py_EncodeLocaleRaw(path, NULL);
 2078|      1|    if (cpath == NULL) {
  ------------------
  |  Branch (2078:9): [True: 0, False: 1]
  ------------------
 2079|      0|        errno = EINVAL;
 2080|      0|        return -1;
 2081|      0|    }
 2082|      1|    res = readlink(cpath, cbuf, cbuf_len);
 2083|      1|    PyMem_RawFree(cpath);
 2084|      1|    if (res == -1) {
  ------------------
  |  Branch (2084:9): [True: 1, False: 0]
  ------------------
 2085|      1|        return -1;
 2086|      1|    }
 2087|      0|    if ((size_t)res == cbuf_len) {
  ------------------
  |  Branch (2087:9): [True: 0, False: 0]
  ------------------
 2088|      0|        errno = EINVAL;
 2089|      0|        return -1;
 2090|      0|    }
 2091|      0|    cbuf[res] = '\0'; /* buf will be null terminated */
 2092|      0|    wbuf = Py_DecodeLocale(cbuf, &r1);
 2093|      0|    if (wbuf == NULL) {
  ------------------
  |  Branch (2093:9): [True: 0, False: 0]
  ------------------
 2094|      0|        errno = EINVAL;
 2095|      0|        return -1;
 2096|      0|    }
 2097|       |    /* wbuf must have space to store the trailing NUL character */
 2098|      0|    if (buflen <= r1) {
  ------------------
  |  Branch (2098:9): [True: 0, False: 0]
  ------------------
 2099|      0|        PyMem_RawFree(wbuf);
 2100|      0|        errno = EINVAL;
 2101|      0|        return -1;
 2102|      0|    }
 2103|      0|    wcsncpy(buf, wbuf, buflen);
 2104|      0|    PyMem_RawFree(wbuf);
 2105|      0|    return (int)r1;
 2106|      0|}
_Py_isabs:
 2156|     40|{
 2157|       |#ifdef MS_WINDOWS
 2158|       |    const wchar_t *tail;
 2159|       |    HRESULT hr = PathCchSkipRoot(path, &tail);
 2160|       |    if (FAILED(hr) || path == tail) {
 2161|       |        return 0;
 2162|       |    }
 2163|       |    if (tail == &path[1] && (path[0] == SEP || path[0] == ALTSEP)) {
 2164|       |        // Exclude paths with leading SEP
 2165|       |        return 0;
 2166|       |    }
 2167|       |    if (tail == &path[2] && path[1] == L':') {
 2168|       |        // Exclude drive-relative paths (e.g. C:filename.ext)
 2169|       |        return 0;
 2170|       |    }
 2171|       |    return 1;
 2172|       |#else
 2173|     40|    return (path[0] == SEP);
  ------------------
  |  |   29|     40|#  define SEP L'/'
  ------------------
 2174|     40|#endif
 2175|     40|}
_Py_abspath:
 2185|      1|{
 2186|      1|    if (path[0] == '\0' || !wcscmp(path, L".")) {
  ------------------
  |  Branch (2186:9): [True: 0, False: 1]
  |  Branch (2186:28): [True: 0, False: 1]
  ------------------
 2187|      0|        wchar_t cwd[MAXPATHLEN + 1];
 2188|      0|        cwd[Py_ARRAY_LENGTH(cwd) - 1] = 0;
  ------------------
  |  |  196|      0|    (sizeof(array) / sizeof((array)[0]))
  ------------------
 2189|      0|        if (!_Py_wgetcwd(cwd, Py_ARRAY_LENGTH(cwd) - 1)) {
  ------------------
  |  |  196|      0|    (sizeof(array) / sizeof((array)[0]))
  ------------------
  |  Branch (2189:13): [True: 0, False: 0]
  ------------------
 2190|       |            /* unable to get the current directory */
 2191|      0|            return -1;
 2192|      0|        }
 2193|      0|        *abspath_p = _PyMem_RawWcsdup(cwd);
 2194|      0|        return 0;
 2195|      0|    }
 2196|       |
 2197|      1|    if (_Py_isabs(path)) {
  ------------------
  |  Branch (2197:9): [True: 1, False: 0]
  ------------------
 2198|      1|        *abspath_p = _PyMem_RawWcsdup(path);
 2199|      1|        return 0;
 2200|      1|    }
 2201|       |
 2202|       |#ifdef MS_WINDOWS
 2203|       |    return _PyOS_getfullpathname(path, abspath_p);
 2204|       |#else
 2205|      0|    wchar_t cwd[MAXPATHLEN + 1];
 2206|      0|    cwd[Py_ARRAY_LENGTH(cwd) - 1] = 0;
  ------------------
  |  |  196|      0|    (sizeof(array) / sizeof((array)[0]))
  ------------------
 2207|      0|    if (!_Py_wgetcwd(cwd, Py_ARRAY_LENGTH(cwd) - 1)) {
  ------------------
  |  |  196|      0|    (sizeof(array) / sizeof((array)[0]))
  ------------------
  |  Branch (2207:9): [True: 0, False: 0]
  ------------------
 2208|       |        /* unable to get the current directory */
 2209|      0|        return -1;
 2210|      0|    }
 2211|       |
 2212|      0|    size_t cwd_len = wcslen(cwd);
 2213|      0|    size_t path_len = wcslen(path);
 2214|      0|    size_t len = cwd_len + 1 + path_len + 1;
 2215|      0|    if (len <= (size_t)PY_SSIZE_T_MAX / sizeof(wchar_t)) {
  ------------------
  |  |  137|      0|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (2215:9): [True: 0, False: 0]
  ------------------
 2216|      0|        *abspath_p = PyMem_RawMalloc(len * sizeof(wchar_t));
 2217|      0|    }
 2218|      0|    else {
 2219|      0|        *abspath_p = NULL;
 2220|      0|    }
 2221|      0|    if (*abspath_p == NULL) {
  ------------------
  |  Branch (2221:9): [True: 0, False: 0]
  ------------------
 2222|      0|        return 0;
 2223|      0|    }
 2224|       |
 2225|      0|    wchar_t *abspath = *abspath_p;
 2226|      0|    memcpy(abspath, cwd, cwd_len * sizeof(wchar_t));
 2227|      0|    abspath += cwd_len;
 2228|       |
 2229|      0|    *abspath = (wchar_t)SEP;
  ------------------
  |  |   29|      0|#  define SEP L'/'
  ------------------
 2230|      0|    abspath++;
 2231|       |
 2232|      0|    memcpy(abspath, path, path_len * sizeof(wchar_t));
 2233|      0|    abspath += path_len;
 2234|       |
 2235|      0|    *abspath = 0;
 2236|      0|    return 0;
 2237|      0|#endif
 2238|      0|}
_Py_skiproot:
 2310|     19|{
 2311|     19|    assert(drvsize);
  ------------------
  |  Branch (2311:5): [True: 19, False: 0]
  ------------------
 2312|     19|    assert(rootsize);
  ------------------
  |  Branch (2312:5): [True: 19, False: 0]
  ------------------
 2313|     19|#ifndef MS_WINDOWS
 2314|     19|#define IS_SEP(x) (*(x) == SEP)
 2315|     19|    *drvsize = 0;
 2316|     19|    if (!IS_SEP(&path[0])) {
  ------------------
  |  | 2314|     19|#define IS_SEP(x) (*(x) == SEP)
  |  |  ------------------
  |  |  |  |   29|     19|#  define SEP L'/'
  |  |  ------------------
  ------------------
  |  Branch (2316:9): [True: 0, False: 19]
  ------------------
 2317|       |        // Relative path, e.g.: 'foo'
 2318|      0|        *rootsize = 0;
 2319|      0|    }
 2320|     19|    else if (!IS_SEP(&path[1]) || IS_SEP(&path[2])) {
  ------------------
  |  | 2314|     38|#define IS_SEP(x) (*(x) == SEP)
  |  |  ------------------
  |  |  |  |   29|     19|#  define SEP L'/'
  |  |  ------------------
  ------------------
                  else if (!IS_SEP(&path[1]) || IS_SEP(&path[2])) {
  ------------------
  |  | 2314|      0|#define IS_SEP(x) (*(x) == SEP)
  |  |  ------------------
  |  |  |  |   29|      0|#  define SEP L'/'
  |  |  ------------------
  |  |  |  Branch (2314:19): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2320:14): [True: 19, False: 0]
  ------------------
 2321|       |        // Absolute path, e.g.: '/foo', '///foo', '////foo', etc.
 2322|     19|        *rootsize = 1;
 2323|     19|    }
 2324|      0|    else {
 2325|       |        // Precisely two leading slashes, e.g.: '//foo'. Implementation defined per POSIX, see
 2326|       |        // https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_13
 2327|      0|        *rootsize = 2;
 2328|      0|    }
 2329|     19|#undef IS_SEP
 2330|       |#else
 2331|       |    const wchar_t *pEnd = size >= 0 ? &path[size] : NULL;
 2332|       |#define IS_END(x) (pEnd ? (x) == pEnd : !*(x))
 2333|       |#define IS_SEP(x) (*(x) == SEP || *(x) == ALTSEP)
 2334|       |#define SEP_OR_END(x) (IS_SEP(x) || IS_END(x))
 2335|       |    if (IS_SEP(&path[0])) {
 2336|       |        if (IS_SEP(&path[1])) {
 2337|       |            // Device drives, e.g. \\.\device or \\?\device
 2338|       |            // UNC drives, e.g. \\server\share or \\?\UNC\server\share
 2339|       |            Py_ssize_t idx;
 2340|       |            if (path[2] == L'?' && IS_SEP(&path[3]) &&
 2341|       |                (path[4] == L'U' || path[4] == L'u') &&
 2342|       |                (path[5] == L'N' || path[5] == L'n') &&
 2343|       |                (path[6] == L'C' || path[6] == L'c') &&
 2344|       |                IS_SEP(&path[7]))
 2345|       |            {
 2346|       |                idx = 8;
 2347|       |            }
 2348|       |            else {
 2349|       |                idx = 2;
 2350|       |            }
 2351|       |            while (!SEP_OR_END(&path[idx])) {
 2352|       |                idx++;
 2353|       |            }
 2354|       |            if (IS_END(&path[idx])) {
 2355|       |                *drvsize = idx;
 2356|       |                *rootsize = 0;
 2357|       |            }
 2358|       |            else {
 2359|       |                idx++;
 2360|       |                while (!SEP_OR_END(&path[idx])) {
 2361|       |                    idx++;
 2362|       |                }
 2363|       |                *drvsize = idx;
 2364|       |                if (IS_END(&path[idx])) {
 2365|       |                    *rootsize = 0;
 2366|       |                }
 2367|       |                else {
 2368|       |                    *rootsize = 1;
 2369|       |                }
 2370|       |            }
 2371|       |        }
 2372|       |        else {
 2373|       |            // Relative path with root, e.g. \Windows
 2374|       |            *drvsize = 0;
 2375|       |            *rootsize = 1;
 2376|       |        }
 2377|       |    }
 2378|       |    else if (!IS_END(&path[0]) && path[1] == L':') {
 2379|       |        *drvsize = 2;
 2380|       |        if (IS_SEP(&path[2])) {
 2381|       |            // Absolute drive-letter path, e.g. X:\Windows
 2382|       |            *rootsize = 1;
 2383|       |        }
 2384|       |        else {
 2385|       |            // Relative path with drive, e.g. X:Windows
 2386|       |            *rootsize = 0;
 2387|       |        }
 2388|       |    }
 2389|       |    else {
 2390|       |        // Relative path, e.g. Windows
 2391|       |        *drvsize = 0;
 2392|       |        *rootsize = 0;
 2393|       |    }
 2394|       |#undef SEP_OR_END
 2395|       |#undef IS_SEP
 2396|       |#undef IS_END
 2397|       |#endif
 2398|     19|}
_Py_add_relfile:
 2470|     13|{
 2471|     13|    assert(dirname != NULL && relfile != NULL);
  ------------------
  |  Branch (2471:5): [True: 13, False: 0]
  |  Branch (2471:5): [True: 13, False: 0]
  ------------------
 2472|     13|    assert(bufsize > 0);
  ------------------
  |  Branch (2472:5): [True: 13, False: 0]
  ------------------
 2473|     13|    return join_relfile(dirname, bufsize, dirname, relfile);
 2474|     13|}
_Py_normpath_and_size:
 2496|     19|{
 2497|     19|    assert(path != NULL);
  ------------------
  |  Branch (2497:5): [True: 19, False: 0]
  ------------------
 2498|     19|    if ((size < 0 && !path[0]) || size == 0) {
  ------------------
  |  Branch (2498:10): [True: 14, False: 5]
  |  Branch (2498:22): [True: 0, False: 14]
  |  Branch (2498:35): [True: 0, False: 19]
  ------------------
 2499|      0|        *normsize = 0;
 2500|      0|        return path;
 2501|      0|    }
 2502|     19|    wchar_t *pEnd = size >= 0 ? &path[size] : NULL;
  ------------------
  |  Branch (2502:21): [True: 5, False: 14]
  ------------------
 2503|     19|    wchar_t *p1 = path;     // sequentially scanned address in the path
 2504|     19|    wchar_t *p2 = path;     // destination of a scanned character to be ljusted
 2505|     19|    wchar_t *minP2 = path;  // the beginning of the destination range
 2506|     19|    wchar_t lastC = L'\0';  // the last ljusted character, p2[-1] in most cases
 2507|       |
 2508|     19|#define IS_END(x) (pEnd ? (x) == pEnd : !*(x))
 2509|       |#ifdef ALTSEP
 2510|       |#define IS_SEP(x) (*(x) == SEP || *(x) == ALTSEP)
 2511|       |#else
 2512|     19|#define IS_SEP(x) (*(x) == SEP)
 2513|     19|#endif
 2514|     19|#define SEP_OR_END(x) (IS_SEP(x) || IS_END(x))
 2515|       |
 2516|     19|    Py_ssize_t drvsize, rootsize;
 2517|     19|    _Py_skiproot(path, size, &drvsize, &rootsize);
 2518|     19|    if (drvsize || rootsize) {
  ------------------
  |  Branch (2518:9): [True: 0, False: 19]
  |  Branch (2518:20): [True: 19, False: 0]
  ------------------
 2519|       |        // Skip past root and update minP2
 2520|     19|        p1 = &path[drvsize + rootsize];
 2521|     19|#ifndef ALTSEP
 2522|     19|        p2 = p1;
 2523|       |#else
 2524|       |        for (; p2 < p1; ++p2) {
 2525|       |            if (*p2 == ALTSEP) {
 2526|       |                *p2 = SEP;
 2527|       |            }
 2528|       |        }
 2529|       |#endif
 2530|     19|        minP2 = p2 - 1;
 2531|     19|        lastC = *minP2;
 2532|       |#ifdef MS_WINDOWS
 2533|       |        if (lastC != SEP) {
 2534|       |            minP2++;
 2535|       |        }
 2536|       |#endif
 2537|     19|    }
 2538|     19|    if (p1[0] == L'.' && SEP_OR_END(&p1[1])) {
  ------------------
  |  | 2514|      0|#define SEP_OR_END(x) (IS_SEP(x) || IS_END(x))
  |  |  ------------------
  |  |  |  | 2512|      0|#define IS_SEP(x) (*(x) == SEP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#  define SEP L'/'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2512:19): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define SEP_OR_END(x) (IS_SEP(x) || IS_END(x))
  |  |  ------------------
  |  |  |  | 2508|      0|#define IS_END(x) (pEnd ? (x) == pEnd : !*(x))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2508:19): [True: 0, False: 0]
  |  |  |  |  |  Branch (2508:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2538:9): [True: 0, False: 19]
  ------------------
 2539|       |        // Skip leading '.\'
 2540|      0|        lastC = *++p1;
 2541|       |#ifdef ALTSEP
 2542|       |        if (lastC == ALTSEP) {
 2543|       |            lastC = SEP;
 2544|       |        }
 2545|       |#endif
 2546|      0|        while (IS_SEP(p1)) {
  ------------------
  |  | 2512|      0|#define IS_SEP(x) (*(x) == SEP)
  |  |  ------------------
  |  |  |  |   29|      0|#  define SEP L'/'
  |  |  ------------------
  |  |  |  Branch (2512:19): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2547|      0|            p1++;
 2548|      0|        }
 2549|      0|    }
 2550|       |
 2551|       |    /* if pEnd is specified, check that. Else, check for null terminator */
 2552|  1.05k|    for (; !IS_END(p1); ++p1) {
  ------------------
  |  | 2508|  1.05k|#define IS_END(x) (pEnd ? (x) == pEnd : !*(x))
  |  |  ------------------
  |  |  |  Branch (2508:20): [True: 310, False: 745]
  |  |  ------------------
  ------------------
  |  Branch (2552:12): [True: 1.03k, False: 19]
  ------------------
 2553|  1.03k|        wchar_t c = *p1;
 2554|       |#ifdef ALTSEP
 2555|       |        if (c == ALTSEP) {
 2556|       |            c = SEP;
 2557|       |        }
 2558|       |#endif
 2559|  1.03k|        if (lastC == SEP) {
  ------------------
  |  |   29|  1.03k|#  define SEP L'/'
  ------------------
  |  Branch (2559:13): [True: 92, False: 944]
  ------------------
 2560|     92|            if (c == L'.') {
  ------------------
  |  Branch (2560:17): [True: 0, False: 92]
  ------------------
 2561|      0|                int sep_at_1 = SEP_OR_END(&p1[1]);
  ------------------
  |  | 2514|      0|#define SEP_OR_END(x) (IS_SEP(x) || IS_END(x))
  |  |  ------------------
  |  |  |  | 2512|      0|#define IS_SEP(x) (*(x) == SEP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#  define SEP L'/'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2512:19): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define SEP_OR_END(x) (IS_SEP(x) || IS_END(x))
  |  |  ------------------
  |  |  |  | 2508|      0|#define IS_END(x) (pEnd ? (x) == pEnd : !*(x))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2508:19): [True: 0, False: 0]
  |  |  |  |  |  Branch (2508:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2562|      0|                int sep_at_2 = !sep_at_1 && SEP_OR_END(&p1[2]);
  ------------------
  |  | 2514|      0|#define SEP_OR_END(x) (IS_SEP(x) || IS_END(x))
  |  |  ------------------
  |  |  |  | 2512|      0|#define IS_SEP(x) (*(x) == SEP)
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#  define SEP L'/'
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2512:19): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define SEP_OR_END(x) (IS_SEP(x) || IS_END(x))
  |  |  ------------------
  |  |  |  | 2508|      0|#define IS_END(x) (pEnd ? (x) == pEnd : !*(x))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (2508:19): [True: 0, False: 0]
  |  |  |  |  |  Branch (2508:20): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2562:32): [True: 0, False: 0]
  ------------------
 2563|      0|                if (sep_at_2 && p1[1] == L'.') {
  ------------------
  |  Branch (2563:21): [True: 0, False: 0]
  |  Branch (2563:33): [True: 0, False: 0]
  ------------------
 2564|      0|                    wchar_t *p3 = p2;
 2565|      0|                    while (p3 != minP2 && *--p3 == SEP) { }
  ------------------
  |  |   29|      0|#  define SEP L'/'
  ------------------
  |  Branch (2565:28): [True: 0, False: 0]
  |  Branch (2565:43): [True: 0, False: 0]
  ------------------
 2566|      0|                    while (p3 != minP2 && *(p3 - 1) != SEP) { --p3; }
  ------------------
  |  |   29|      0|#  define SEP L'/'
  ------------------
  |  Branch (2566:28): [True: 0, False: 0]
  |  Branch (2566:43): [True: 0, False: 0]
  ------------------
 2567|      0|                    if (p2 == minP2
  ------------------
  |  Branch (2567:25): [True: 0, False: 0]
  ------------------
 2568|      0|                        || (p3[0] == L'.' && p3[1] == L'.' && IS_SEP(&p3[2])))
  ------------------
  |  | 2512|      0|#define IS_SEP(x) (*(x) == SEP)
  |  |  ------------------
  |  |  |  |   29|      0|#  define SEP L'/'
  |  |  ------------------
  |  |  |  Branch (2512:19): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2568:29): [True: 0, False: 0]
  |  Branch (2568:46): [True: 0, False: 0]
  ------------------
 2569|      0|                    {
 2570|       |                        // Previous segment is also ../, so append instead.
 2571|       |                        // Relative path does not absorb ../ at minP2 as well.
 2572|      0|                        *p2++ = L'.';
 2573|      0|                        *p2++ = L'.';
 2574|      0|                        lastC = L'.';
 2575|      0|                    } else if (p3[0] == SEP) {
  ------------------
  |  |   29|      0|#  define SEP L'/'
  ------------------
  |  Branch (2575:32): [True: 0, False: 0]
  ------------------
 2576|       |                        // Absolute path, so absorb segment
 2577|      0|                        p2 = p3 + 1;
 2578|      0|                    } else {
 2579|      0|                        p2 = p3;
 2580|      0|                    }
 2581|      0|                    p1 += 1;
 2582|      0|                } else if (sep_at_1) {
  ------------------
  |  Branch (2582:28): [True: 0, False: 0]
  ------------------
 2583|      0|                } else {
 2584|      0|                    *p2++ = lastC = c;
 2585|      0|                }
 2586|     92|            } else if (c == SEP) {
  ------------------
  |  |   29|     92|#  define SEP L'/'
  ------------------
  |  Branch (2586:24): [True: 0, False: 92]
  ------------------
 2587|     92|            } else {
 2588|     92|                *p2++ = lastC = c;
 2589|     92|            }
 2590|    944|        } else {
 2591|    944|            *p2++ = lastC = c;
 2592|    944|        }
 2593|  1.03k|    }
 2594|     19|    *p2 = L'\0';
 2595|     19|    if (p2 != minP2) {
  ------------------
  |  Branch (2595:9): [True: 19, False: 0]
  ------------------
 2596|     19|        while (--p2 != minP2 && *p2 == SEP) {
  ------------------
  |  |   29|     19|#  define SEP L'/'
  ------------------
  |  Branch (2596:16): [True: 19, False: 0]
  |  Branch (2596:33): [True: 0, False: 19]
  ------------------
 2597|      0|            *p2 = L'\0';
 2598|      0|        }
 2599|     19|    } else {
 2600|      0|        --p2;
 2601|      0|    }
 2602|     19|    *normsize = p2 - path + 1;
 2603|     19|#undef SEP_OR_END
 2604|     19|#undef IS_SEP
 2605|     19|#undef IS_END
 2606|     19|    return path;
 2607|     19|}
_Py_normpath:
 2616|     14|{
 2617|     14|    Py_ssize_t norm_length;
 2618|     14|    return _Py_normpath_and_size(path, size, &norm_length);
 2619|     14|}
_Py_GetTicksPerSecond:
 3083|      2|{
 3084|      2|#if defined(HAVE_SYSCONF) && defined(_SC_CLK_TCK)
 3085|      2|    long value = sysconf(_SC_CLK_TCK);
 3086|      2|    if (value < 1) {
  ------------------
  |  Branch (3086:9): [True: 0, False: 2]
  ------------------
 3087|      0|        return -1;
 3088|      0|    }
 3089|      2|    *ticks_per_second = value;
 3090|       |#elif defined(HZ)
 3091|       |    assert(HZ >= 1);
 3092|       |    *ticks_per_second = HZ;
 3093|       |#else
 3094|       |    // Magic fallback value; may be bogus
 3095|       |    *ticks_per_second = 60;
 3096|       |#endif
 3097|      2|    return 0;
 3098|      2|}
_Py_IsValidFD:
 3106|      3|{
 3107|       |/* dup() is faster than fstat(): fstat() can require input/output operations,
 3108|       |   whereas dup() doesn't. There is a low risk of EMFILE/ENFILE at Python
 3109|       |   startup. Problem: dup() doesn't check if the file descriptor is valid on
 3110|       |   some platforms.
 3111|       |
 3112|       |   fcntl(fd, F_GETFD) is even faster, because it only checks the process table.
 3113|       |   It is preferred over dup() when available, since it cannot fail with the
 3114|       |   "too many open files" error (EMFILE).
 3115|       |
 3116|       |   bpo-30225: On macOS Tiger, when stdout is redirected to a pipe and the other
 3117|       |   side of the pipe is closed, dup(1) succeed, whereas fstat(1, &st) fails with
 3118|       |   EBADF. FreeBSD has similar issue (bpo-32849).
 3119|       |
 3120|       |   Only use dup() on Linux where dup() is enough to detect invalid FD
 3121|       |   (bpo-32849).
 3122|       |*/
 3123|      3|    if (fd < 0) {
  ------------------
  |  Branch (3123:9): [True: 0, False: 3]
  ------------------
 3124|      0|        return 0;
 3125|      0|    }
 3126|      3|#if defined(F_GETFD) && ( \
 3127|      3|        defined(__linux__) || \
 3128|      3|        defined(__APPLE__) || \
 3129|      3|        (defined(__wasm__) && !defined(__wasi__)))
 3130|      3|    return fcntl(fd, F_GETFD) >= 0;
 3131|       |#elif defined(__linux__)
 3132|       |    int fd2 = dup(fd);
 3133|       |    if (fd2 >= 0) {
 3134|       |        close(fd2);
 3135|       |    }
 3136|       |    return (fd2 >= 0);
 3137|       |#elif defined(MS_WINDOWS)
 3138|       |    HANDLE hfile;
 3139|       |    _Py_BEGIN_SUPPRESS_IPH
 3140|       |    hfile = (HANDLE)_get_osfhandle(fd);
 3141|       |    _Py_END_SUPPRESS_IPH
 3142|       |    return (hfile != INVALID_HANDLE_VALUE
 3143|       |            && GetFileType(hfile) != FILE_TYPE_UNKNOWN);
 3144|       |#else
 3145|       |    struct stat st;
 3146|       |    return (fstat(fd, &st) == 0);
 3147|       |#endif
 3148|      3|}
fileutils.c:_Py_mbstowcs:
  147|     20|{
  148|     20|    size_t count = mbstowcs(dest, src, n);
  149|     20|    if (dest != NULL && count != DECODE_ERROR) {
  ------------------
  |  Branch (149:9): [True: 10, False: 10]
  |  Branch (149:25): [True: 10, False: 0]
  ------------------
  150|    260|        for (size_t i=0; i < count; i++) {
  ------------------
  |  Branch (150:26): [True: 250, False: 10]
  ------------------
  151|    250|            wchar_t ch = dest[i];
  152|    250|            if (!is_valid_wide_char(ch)) {
  ------------------
  |  Branch (152:17): [True: 0, False: 250]
  ------------------
  153|      0|                return DECODE_ERROR;
  154|      0|            }
  155|    250|        }
  156|     10|    }
  157|     20|    return count;
  158|     20|}
fileutils.c:is_valid_wide_char:
  121|    250|{
  122|       |#ifdef HAVE_NON_UNICODE_WCHAR_T_REPRESENTATION
  123|       |    /* Oracle Solaris doesn't use Unicode code points as wchar_t encoding
  124|       |       for non-Unicode locales, which makes values higher than _Py_MAX_UNICODE
  125|       |       possibly valid. */
  126|       |    return 1;
  127|       |#endif
  128|    250|    if (Py_UNICODE_IS_SURROGATE(ch)) {
  ------------------
  |  Branch (128:9): [True: 0, False: 250]
  ------------------
  129|       |        // Reject lone surrogate characters
  130|      0|        return 0;
  131|      0|    }
  132|    250|#if SIZEOF_WCHAR_T > 2
  133|    250|    if (ch > _Py_MAX_UNICODE) {
  ------------------
  |  |   16|    250|#define _Py_MAX_UNICODE 0x10ffff
  ------------------
  |  Branch (133:9): [True: 0, False: 250]
  ------------------
  134|       |        // bpo-35883: Reject characters outside [U+0000; U+10ffff] range.
  135|       |        // The glibc mbstowcs() UTF-8 decoder does not respect the RFC 3629,
  136|       |        // it creates characters outside the [U+0000; U+10ffff] range:
  137|       |        // https://sourceware.org/bugzilla/show_bug.cgi?id=2373
  138|      0|        return 0;
  139|      0|    }
  140|    250|#endif
  141|    250|    return 1;
  142|    250|}
fileutils.c:decode_current_locale:
  460|     10|{
  461|     10|    wchar_t *res;
  462|     10|    size_t argsize;
  463|     10|    size_t count;
  464|     10|#ifdef HAVE_MBRTOWC
  465|     10|    unsigned char *in;
  466|     10|    wchar_t *out;
  467|     10|    mbstate_t mbs;
  468|     10|#endif
  469|       |
  470|     10|    int surrogateescape;
  471|     10|    if (get_surrogateescape(errors, &surrogateescape) < 0) {
  ------------------
  |  Branch (471:9): [True: 0, False: 10]
  ------------------
  472|      0|        return -3;
  473|      0|    }
  474|       |
  475|       |#ifdef HAVE_BROKEN_MBSTOWCS
  476|       |    /* Some platforms have a broken implementation of
  477|       |     * mbstowcs which does not count the characters that
  478|       |     * would result from conversion.  Use an upper bound.
  479|       |     */
  480|       |    argsize = strlen(arg);
  481|       |#else
  482|     10|    argsize = _Py_mbstowcs(NULL, arg, 0);
  483|     10|#endif
  484|     10|    if (argsize != DECODE_ERROR) {
  ------------------
  |  Branch (484:9): [True: 10, False: 0]
  ------------------
  485|     10|        if (argsize > PY_SSIZE_T_MAX / sizeof(wchar_t) - 1) {
  ------------------
  |  |  137|     10|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (485:13): [True: 0, False: 10]
  ------------------
  486|      0|            return -1;
  487|      0|        }
  488|     10|        res = (wchar_t *)PyMem_RawMalloc((argsize + 1) * sizeof(wchar_t));
  489|     10|        if (!res) {
  ------------------
  |  Branch (489:13): [True: 0, False: 10]
  ------------------
  490|      0|            return -1;
  491|      0|        }
  492|       |
  493|     10|        count = _Py_mbstowcs(res, arg, argsize + 1);
  494|     10|        if (count != DECODE_ERROR) {
  ------------------
  |  Branch (494:13): [True: 10, False: 0]
  ------------------
  495|     10|            *wstr = res;
  496|     10|            if (wlen != NULL) {
  ------------------
  |  Branch (496:17): [True: 10, False: 0]
  ------------------
  497|     10|                *wlen = count;
  498|     10|            }
  499|     10|            return 0;
  500|     10|        }
  501|      0|        PyMem_RawFree(res);
  502|      0|    }
  503|       |
  504|       |    /* Conversion failed. Fall back to escaping with surrogateescape. */
  505|      0|#ifdef HAVE_MBRTOWC
  506|       |    /* Try conversion with mbrtwoc (C99), and escape non-decodable bytes. */
  507|       |
  508|       |    /* Overallocate; as multi-byte characters are in the argument, the
  509|       |       actual output could use less memory. */
  510|      0|    argsize = strlen(arg) + 1;
  511|      0|    if (argsize > PY_SSIZE_T_MAX / sizeof(wchar_t)) {
  ------------------
  |  |  137|      0|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (511:9): [True: 0, False: 0]
  ------------------
  512|      0|        return -1;
  513|      0|    }
  514|      0|    res = (wchar_t*)PyMem_RawMalloc(argsize * sizeof(wchar_t));
  515|      0|    if (!res) {
  ------------------
  |  Branch (515:9): [True: 0, False: 0]
  ------------------
  516|      0|        return -1;
  517|      0|    }
  518|       |
  519|      0|    in = (unsigned char*)arg;
  520|      0|    out = res;
  521|      0|    memset(&mbs, 0, sizeof mbs);
  522|      0|    while (argsize) {
  ------------------
  |  Branch (522:12): [True: 0, False: 0]
  ------------------
  523|      0|        size_t converted = _Py_mbrtowc(out, (char*)in, argsize, &mbs);
  524|      0|        if (converted == 0) {
  ------------------
  |  Branch (524:13): [True: 0, False: 0]
  ------------------
  525|       |            /* Reached end of string; null char stored. */
  526|      0|            break;
  527|      0|        }
  528|       |
  529|      0|        if (converted == DECODE_ERROR || converted == INCOMPLETE_CHARACTER) {
  ------------------
  |  Branch (529:13): [True: 0, False: 0]
  |  Branch (529:42): [True: 0, False: 0]
  ------------------
  530|      0|            if (!surrogateescape) {
  ------------------
  |  Branch (530:17): [True: 0, False: 0]
  ------------------
  531|      0|                goto decode_error;
  532|      0|            }
  533|       |
  534|       |            /* Decoding error. Escape as UTF-8b, and start over in the initial
  535|       |               shift state. */
  536|      0|            *out++ = 0xdc00 + *in++;
  537|      0|            argsize--;
  538|      0|            memset(&mbs, 0, sizeof mbs);
  539|      0|            continue;
  540|      0|        }
  541|       |
  542|       |        // _Py_mbrtowc() reject lone surrogate characters
  543|      0|        assert(!Py_UNICODE_IS_SURROGATE(*out));
  ------------------
  |  Branch (543:9): [True: 0, False: 0]
  ------------------
  544|       |
  545|       |        /* successfully converted some bytes */
  546|      0|        in += converted;
  547|      0|        argsize -= converted;
  548|      0|        out++;
  549|      0|    }
  550|      0|    if (wlen != NULL) {
  ------------------
  |  Branch (550:9): [True: 0, False: 0]
  ------------------
  551|      0|        *wlen = out - res;
  552|      0|    }
  553|      0|    *wstr = res;
  554|      0|    return 0;
  555|       |
  556|      0|decode_error:
  557|      0|    PyMem_RawFree(res);
  558|      0|    if (wlen) {
  ------------------
  |  Branch (558:9): [True: 0, False: 0]
  ------------------
  559|      0|        *wlen = in - (unsigned char*)arg;
  560|      0|    }
  561|      0|    if (reason) {
  ------------------
  |  Branch (561:9): [True: 0, False: 0]
  ------------------
  562|      0|        *reason = "decoding error";
  563|      0|    }
  564|      0|    return -2;
  565|       |#else   /* HAVE_MBRTOWC */
  566|       |    /* Cannot use C locale for escaping; manually escape as if charset
  567|       |       is ASCII (i.e. escape all bytes > 128. This will still roundtrip
  568|       |       correctly in the locale's charset, which must be an ASCII superset. */
  569|       |    return decode_ascii(arg, wstr, wlen, reason, errors);
  570|       |#endif   /* HAVE_MBRTOWC */
  571|      0|}
fileutils.c:get_surrogateescape:
   63|     10|{
   64|     10|    switch (errors)
   65|     10|    {
   66|      0|    case _Py_ERROR_STRICT:
  ------------------
  |  Branch (66:5): [True: 0, False: 10]
  ------------------
   67|      0|        *surrogateescape = 0;
   68|      0|        return 0;
   69|     10|    case _Py_ERROR_SURROGATEESCAPE:
  ------------------
  |  Branch (69:5): [True: 10, False: 0]
  ------------------
   70|     10|        *surrogateescape = 1;
   71|     10|        return 0;
   72|      0|    default:
  ------------------
  |  Branch (72:5): [True: 0, False: 10]
  ------------------
   73|      0|        return -1;
   74|     10|    }
   75|     10|}
fileutils.c:encode_locale:
  834|     16|{
  835|     16|    char *str;
  836|     16|    int res = encode_locale_ex(text, &str, error_pos, NULL,
  837|     16|                               raw_malloc, current_locale,
  838|     16|                               _Py_ERROR_SURROGATEESCAPE);
  839|     16|    if (res != -2 && error_pos) {
  ------------------
  |  Branch (839:9): [True: 16, False: 0]
  |  Branch (839:22): [True: 0, False: 16]
  ------------------
  840|      0|        *error_pos = (size_t)-1;
  841|      0|    }
  842|     16|    if (res != 0) {
  ------------------
  |  Branch (842:9): [True: 0, False: 16]
  ------------------
  843|      0|        return NULL;
  844|      0|    }
  845|     16|    return str;
  846|     16|}
fileutils.c:encode_locale_ex:
  791|     16|{
  792|     16|    if (current_locale) {
  ------------------
  |  Branch (792:9): [True: 0, False: 16]
  ------------------
  793|       |#ifdef _Py_FORCE_UTF8_LOCALE
  794|       |        return _Py_EncodeUTF8Ex(text, str, error_pos, reason,
  795|       |                                raw_malloc, errors);
  796|       |#else
  797|      0|        return encode_current_locale(text, str, error_pos, reason,
  798|      0|                                     raw_malloc, errors);
  799|      0|#endif
  800|      0|    }
  801|       |
  802|       |#ifdef _Py_FORCE_UTF8_FS_ENCODING
  803|       |    return _Py_EncodeUTF8Ex(text, str, error_pos, reason,
  804|       |                            raw_malloc, errors);
  805|       |#else
  806|     16|    int use_utf8 = (_PyRuntime.preconfig.utf8_mode >= 1);
  807|       |#ifdef MS_WINDOWS
  808|       |    use_utf8 |= (_PyRuntime.preconfig.legacy_windows_fs_encoding == 0);
  809|       |#endif
  810|     16|    if (use_utf8) {
  ------------------
  |  Branch (810:9): [True: 16, False: 0]
  ------------------
  811|     16|        return _Py_EncodeUTF8Ex(text, str, error_pos, reason,
  812|     16|                                raw_malloc, errors);
  813|     16|    }
  814|       |
  815|      0|#ifdef USE_FORCE_ASCII
  816|      0|    if (force_ascii == -1) {
  ------------------
  |  |  210|      0|#define force_ascii (_PyRuntime.fileutils.force_ascii)
  ------------------
  |  Branch (816:9): [True: 0, False: 0]
  ------------------
  817|      0|        force_ascii = check_force_ascii();
  ------------------
  |  |  210|      0|#define force_ascii (_PyRuntime.fileutils.force_ascii)
  ------------------
  818|      0|    }
  819|       |
  820|      0|    if (force_ascii) {
  ------------------
  |  |  210|      0|#define force_ascii (_PyRuntime.fileutils.force_ascii)
  |  |  ------------------
  |  |  |  Branch (210:21): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  821|      0|        return encode_ascii(text, str, error_pos, reason,
  822|      0|                            raw_malloc, errors);
  823|      0|    }
  824|      0|#endif
  825|       |
  826|      0|    return encode_current_locale(text, str, error_pos, reason,
  827|      0|                                 raw_malloc, errors);
  828|      0|#endif   /* _Py_FORCE_UTF8_FS_ENCODING */
  829|      0|}
fileutils.c:join_relfile:
 2404|     13|{
 2405|       |#ifdef MS_WINDOWS
 2406|       |    if (FAILED(PathCchCombineEx(buffer, bufsize, dirname, relfile,
 2407|       |        PATHCCH_ALLOW_LONG_PATHS))) {
 2408|       |        return -1;
 2409|       |    }
 2410|       |#else
 2411|     13|    assert(!_Py_isabs(relfile));
  ------------------
  |  Branch (2411:5): [True: 13, False: 0]
  ------------------
 2412|     13|    size_t dirlen = wcslen(dirname);
 2413|     13|    size_t rellen = wcslen(relfile);
 2414|     13|    size_t maxlen = bufsize - 1;
 2415|     13|    if (maxlen > MAXPATHLEN || dirlen >= maxlen || rellen >= maxlen - dirlen) {
  ------------------
  |  |   43|     26|#    define MAXPATHLEN PATH_MAX
  ------------------
  |  Branch (2415:9): [True: 0, False: 13]
  |  Branch (2415:32): [True: 0, False: 13]
  |  Branch (2415:52): [True: 0, False: 13]
  ------------------
 2416|      0|        return -1;
 2417|      0|    }
 2418|     13|    if (dirlen == 0) {
  ------------------
  |  Branch (2418:9): [True: 0, False: 13]
  ------------------
 2419|       |        // We do not add a leading separator.
 2420|      0|        wcscpy(buffer, relfile);
 2421|      0|    }
 2422|     13|    else {
 2423|     13|        if (dirname != buffer) {
  ------------------
  |  Branch (2423:13): [True: 0, False: 13]
  ------------------
 2424|      0|            wcscpy(buffer, dirname);
 2425|      0|        }
 2426|     13|        size_t relstart = dirlen;
 2427|     13|        if (dirlen > 1 && dirname[dirlen - 1] != SEP) {
  ------------------
  |  |   29|     13|#  define SEP L'/'
  ------------------
  |  Branch (2427:13): [True: 13, False: 0]
  |  Branch (2427:27): [True: 13, False: 0]
  ------------------
 2428|     13|            buffer[dirlen] = SEP;
  ------------------
  |  |   29|     13|#  define SEP L'/'
  ------------------
 2429|     13|            relstart += 1;
 2430|     13|        }
 2431|     13|        wcscpy(&buffer[relstart], relfile);
 2432|     13|    }
 2433|     13|#endif
 2434|     13|    return 0;
 2435|     13|}

_PyFrame_MakeAndSetFrameObject:
   22|     93|{
   23|     93|    assert(frame->frame_obj == NULL);
  ------------------
  |  Branch (23:5): [True: 93, False: 0]
  ------------------
   24|     93|    PyObject *exc = PyErr_GetRaisedException();
   25|       |
   26|     93|    PyFrameObject *f = _PyFrame_New_NoTrack(_PyFrame_GetCode(frame));
   27|     93|    if (f == NULL) {
  ------------------
  |  Branch (27:9): [True: 0, False: 93]
  ------------------
   28|      0|        Py_XDECREF(exc);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   29|      0|        return NULL;
   30|      0|    }
   31|     93|    PyErr_SetRaisedException(exc);
   32|       |
   33|       |    // GH-97002: There was a time when a frame object could be created when we
   34|       |    // are allocating the new frame object f above, so frame->frame_obj would
   35|       |    // be assigned already. That path does not exist anymore. We won't call any
   36|       |    // Python code in this function and garbage collection will not run.
   37|       |    // Notice that _PyFrame_New_NoTrack() can potentially raise a MemoryError,
   38|       |    // but it won't allocate a traceback until the frame unwinds, so we are safe
   39|       |    // here.
   40|     93|    assert(frame->frame_obj == NULL);
  ------------------
  |  Branch (40:5): [True: 93, False: 0]
  ------------------
   41|     93|    assert(frame->owner != FRAME_OWNED_BY_FRAME_OBJECT);
  ------------------
  |  Branch (41:5): [True: 93, False: 0]
  ------------------
   42|     93|    f->f_frame = frame;
   43|     93|    frame->frame_obj = f;
   44|     93|    return f;
   45|     93|}
_PyFrame_ClearLocals:
   94|  1.71k|{
   95|  1.71k|    assert(frame->stackpointer != NULL);
  ------------------
  |  Branch (95:5): [True: 1.71k, False: 0]
  ------------------
   96|  1.71k|    _PyStackRef *sp = frame->stackpointer;
   97|  1.71k|    _PyStackRef *locals = frame->localsplus;
   98|  1.71k|    frame->stackpointer = locals;
   99|  6.82k|    while (sp > locals) {
  ------------------
  |  Branch (99:12): [True: 5.10k, False: 1.71k]
  ------------------
  100|  5.10k|        sp--;
  101|  5.10k|        PyStackRef_XCLOSE(*sp);
  102|  5.10k|    }
  103|       |    Py_CLEAR(frame->f_locals);
  ------------------
  |  |  484|  1.71k|    do { \
  |  |  485|  1.71k|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|  1.71k|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|  1.71k|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|  1.71k|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|  1.71k|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 100, False: 1.61k]
  |  |  ------------------
  |  |  488|    100|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|    100|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|    100|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|    100|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    100|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    100|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|    100|        } \
  |  |  491|  1.71k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 1.71k]
  |  |  ------------------
  ------------------
  104|  1.71k|}
_PyFrame_ClearExceptCode:
  108|  1.73k|{
  109|       |    /* It is the responsibility of the owning generator/coroutine
  110|       |     * to have cleared the enclosing generator, if any. */
  111|  1.73k|    assert(frame->owner != FRAME_OWNED_BY_GENERATOR ||
  ------------------
  |  Branch (111:5): [True: 1.71k, False: 21]
  |  Branch (111:5): [True: 21, False: 0]
  ------------------
  112|  1.73k|           FT_ATOMIC_LOAD_INT8_RELAXED(_PyGen_GetGeneratorFromFrame(frame)->gi_frame_state) == FRAME_CLEARED);
  113|       |    // GH-99729: Clearing this frame can expose the stack (via finalizers). It's
  114|       |    // crucial that this frame has been unlinked, and is no longer visible:
  115|  1.73k|    assert(_PyThreadState_GET()->current_frame != frame);
  ------------------
  |  Branch (115:5): [True: 1.73k, False: 0]
  ------------------
  116|  1.73k|    if (frame->frame_obj) {
  ------------------
  |  Branch (116:9): [True: 93, False: 1.64k]
  ------------------
  117|     93|        PyFrameObject *f = frame->frame_obj;
  118|     93|        frame->frame_obj = NULL;
  119|     93|        if (!_PyObject_IsUniquelyReferenced((PyObject *)f)) {
  ------------------
  |  Branch (119:13): [True: 14, False: 79]
  ------------------
  120|     14|            take_ownership(f, frame);
  121|     14|            Py_DECREF(f);
  ------------------
  |  |  430|     14|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     14|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     14|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  122|     14|            return;
  123|     14|        }
  124|     79|        Py_DECREF(f);
  ------------------
  |  |  430|     79|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     79|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     79|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  125|     79|    }
  126|  1.71k|    _PyFrame_ClearLocals(frame);
  127|  1.71k|    PyStackRef_CLEAR(frame->f_funcobj);
  ------------------
  |  |  711|  1.71k|    do { \
  |  |  712|  1.71k|        _PyStackRef *_tmp_op_ptr = &(REF); \
  |  |  713|  1.71k|        _PyStackRef _tmp_old_op = (*_tmp_op_ptr); \
  |  |  714|  1.71k|        *_tmp_op_ptr = PyStackRef_NULL; \
  |  |  715|  1.71k|        PyStackRef_XCLOSE(_tmp_old_op); \
  |  |  716|  1.71k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (716:14): [Folded, False: 1.71k]
  |  |  ------------------
  ------------------
  128|  1.71k|}
frame.c:take_ownership:
   49|     14|{
   50|     14|    Py_BEGIN_CRITICAL_SECTION(f);
  ------------------
  |  |   51|     14|    {
  ------------------
   51|     14|    assert(frame->owner < FRAME_OWNED_BY_INTERPRETER);
  ------------------
  |  Branch (51:5): [True: 14, False: 0]
  ------------------
   52|     14|    assert(frame->owner != FRAME_OWNED_BY_FRAME_OBJECT);
  ------------------
  |  Branch (52:5): [True: 14, False: 0]
  ------------------
   53|     14|    _PyInterpreterFrame *new_frame = (_PyInterpreterFrame *)f->_f_frame_data;
   54|     14|    _PyFrame_Copy(frame, new_frame);
   55|       |    // _PyFrame_Copy takes the reference to the executable,
   56|       |    // so we need to restore it.
   57|     14|    new_frame->f_executable = PyStackRef_DUP(new_frame->f_executable);
   58|     14|    f->f_frame = new_frame;
   59|     14|    new_frame->owner = FRAME_OWNED_BY_FRAME_OBJECT;
   60|     14|    if (_PyFrame_IsIncomplete(new_frame)) {
  ------------------
  |  Branch (60:9): [True: 0, False: 14]
  ------------------
   61|       |        // This may be a newly-created generator or coroutine frame. Since it's
   62|       |        // dead anyways, just pretend that the first RESUME ran:
   63|      0|        PyCodeObject *code = _PyFrame_GetCode(new_frame);
   64|      0|        new_frame->instr_ptr =
   65|      0|            _PyFrame_GetBytecode(new_frame) + code->_co_firsttraceable + 1;
   66|      0|    }
   67|     14|    assert(!_PyFrame_IsIncomplete(new_frame));
  ------------------
  |  Branch (67:5): [True: 14, False: 0]
  ------------------
   68|     14|    assert(f->f_back == NULL);
  ------------------
  |  Branch (68:5): [True: 14, False: 0]
  ------------------
   69|     14|    _PyInterpreterFrame *prev = _PyFrame_GetFirstComplete(frame->previous);
   70|     14|    if (prev) {
  ------------------
  |  Branch (70:9): [True: 14, False: 0]
  ------------------
   71|     14|        assert(prev->owner < FRAME_OWNED_BY_INTERPRETER);
  ------------------
  |  Branch (71:9): [True: 14, False: 0]
  ------------------
   72|     14|        PyObject *exc = PyErr_GetRaisedException();
   73|       |        /* Link PyFrameObjects.f_back and remove link through _PyInterpreterFrame.previous */
   74|     14|        PyFrameObject *back = _PyFrame_GetFrameObject(prev);
   75|     14|        if (back == NULL) {
  ------------------
  |  Branch (75:13): [True: 0, False: 14]
  ------------------
   76|       |            /* Memory error here. */
   77|      0|            assert(PyErr_ExceptionMatches(PyExc_MemoryError));
  ------------------
  |  Branch (77:13): [True: 0, False: 0]
  ------------------
   78|       |            /* Nothing we can do about it */
   79|      0|            PyErr_Clear();
   80|      0|        }
   81|     14|        else {
   82|     14|            f->f_back = (PyFrameObject *)Py_NewRef(back);
  ------------------
  |  |  550|     14|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     14|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     14|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   83|     14|        }
   84|     14|        PyErr_SetRaisedException(exc);
   85|     14|    }
   86|     14|    if (!_PyObject_GC_IS_TRACKED((PyObject *)f)) {
  ------------------
  |  |   81|     14|#define _PyObject_GC_IS_TRACKED(op) _PyObject_GC_IS_TRACKED(_Py_CAST(PyObject*, op))
  |  |  ------------------
  |  |  |  |   37|     14|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (86:9): [True: 14, False: 0]
  ------------------
   87|     14|        _PyObject_GC_TRACK((PyObject *)f);
  ------------------
  |  |  513|     14|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     14|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     14|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   88|     14|    }
   89|     14|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|     14|    }
  ------------------
   90|     14|}

_PyGC_InitState:
  114|      1|{
  115|      1|#define INIT_HEAD(GEN) \
  116|      1|    do { \
  117|      1|        GEN.head._gc_next = (uintptr_t)&GEN.head; \
  118|      1|        GEN.head._gc_prev = (uintptr_t)&GEN.head; \
  119|      1|    } while (0)
  120|       |
  121|      4|    for (int i = 0; i < NUM_GENERATIONS; i++) {
  ------------------
  |  |  217|      4|#define NUM_GENERATIONS 3
  ------------------
  |  Branch (121:21): [True: 3, False: 1]
  ------------------
  122|      3|        assert(gcstate->generations[i].count == 0);
  ------------------
  |  Branch (122:9): [True: 3, False: 0]
  ------------------
  123|      3|        INIT_HEAD(gcstate->generations[i]);
  ------------------
  |  |  116|      3|    do { \
  |  |  117|      3|        GEN.head._gc_next = (uintptr_t)&GEN.head; \
  |  |  118|      3|        GEN.head._gc_prev = (uintptr_t)&GEN.head; \
  |  |  119|      3|    } while (0)
  |  |  ------------------
  |  |  |  Branch (119:14): [Folded, False: 3]
  |  |  ------------------
  ------------------
  124|      3|    };
  125|      1|    gcstate->generation0 = GEN_HEAD(gcstate, 0);
  ------------------
  |  |  101|      1|#define GEN_HEAD(gcstate, n) (&(gcstate)->generations[n].head)
  ------------------
  126|      1|    INIT_HEAD(gcstate->permanent_generation);
  ------------------
  |  |  116|      1|    do { \
  |  |  117|      1|        GEN.head._gc_next = (uintptr_t)&GEN.head; \
  |  |  118|      1|        GEN.head._gc_prev = (uintptr_t)&GEN.head; \
  |  |  119|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (119:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  127|       |
  128|      1|#undef INIT_HEAD
  129|      1|}
_PyGC_Init:
  134|      1|{
  135|      1|    GCState *gcstate = &interp->gc;
  136|       |
  137|      1|    gcstate->generation_stats = PyMem_RawCalloc(1, sizeof(struct gc_stats));
  138|      1|    if (gcstate->generation_stats == NULL) {
  ------------------
  |  Branch (138:9): [True: 0, False: 1]
  ------------------
  139|      0|        return _PyStatus_NO_MEMORY();
  ------------------
  |  |   33|      0|#define _PyStatus_NO_MEMORY() _PyStatus_ERR(_PyStatus_NO_MEMORY_ERRMSG)
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  ------------------
  140|      0|    }
  141|       |
  142|      1|    gcstate->garbage = PyList_New(0);
  143|      1|    if (gcstate->garbage == NULL) {
  ------------------
  |  Branch (143:9): [True: 0, False: 1]
  ------------------
  144|      0|        return _PyStatus_NO_MEMORY();
  ------------------
  |  |   33|      0|#define _PyStatus_NO_MEMORY() _PyStatus_ERR(_PyStatus_NO_MEMORY_ERRMSG)
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  ------------------
  145|      0|    }
  146|       |
  147|      1|    gcstate->callbacks = PyList_New(0);
  148|      1|    if (gcstate->callbacks == NULL) {
  ------------------
  |  Branch (148:9): [True: 0, False: 1]
  ------------------
  149|      0|        return _PyStatus_NO_MEMORY();
  ------------------
  |  |   33|      0|#define _PyStatus_NO_MEMORY() _PyStatus_ERR(_PyStatus_NO_MEMORY_ERRMSG)
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  ------------------
  150|      0|    }
  151|       |
  152|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
  153|      1|}
PyObject_GC_Track:
 1928|    137|{
 1929|    137|    PyObject *op = _PyObject_CAST(op_raw);
  ------------------
  |  |  171|    137|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  ------------------
  |  |  |  |   37|    137|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
 1930|    137|    if (_PyObject_GC_IS_TRACKED(op)) {
  ------------------
  |  |   81|    137|#define _PyObject_GC_IS_TRACKED(op) _PyObject_GC_IS_TRACKED(_Py_CAST(PyObject*, op))
  |  |  ------------------
  |  |  |  |   37|    137|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  |  Branch (81:37): [True: 0, False: 137]
  |  |  ------------------
  ------------------
 1931|      0|        _PyObject_ASSERT_FAILED_MSG(op,
  ------------------
  |  |  426|      0|    _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__)
  ------------------
 1932|      0|                                    "object already tracked "
 1933|      0|                                    "by the garbage collector");
 1934|      0|    }
 1935|    137|    _PyObject_GC_TRACK(op);
  ------------------
  |  |  513|    137|        _PyObject_GC_TRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    137|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    137|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1936|       |
 1937|       |#ifdef Py_DEBUG
 1938|       |    /* Check that the object is valid: validate objects traversed
 1939|       |       by tp_traverse() */
 1940|       |    traverseproc traverse = Py_TYPE(op)->tp_traverse;
 1941|       |    (void)traverse(op, visit_validate, op);
 1942|       |#endif
 1943|    137|}
PyObject_GC_UnTrack:
 1947|  3.36k|{
 1948|  3.36k|    PyObject *op = _PyObject_CAST(op_raw);
  ------------------
  |  |  171|  3.36k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  ------------------
  |  |  |  |   37|  3.36k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
 1949|       |    /* The code for some objects, such as tuples, is a bit
 1950|       |     * sloppy about when the object is tracked and untracked. */
 1951|  3.36k|    if (_PyObject_GC_IS_TRACKED(op)) {
  ------------------
  |  |   81|  3.36k|#define _PyObject_GC_IS_TRACKED(op) _PyObject_GC_IS_TRACKED(_Py_CAST(PyObject*, op))
  |  |  ------------------
  |  |  |  |   37|  3.36k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  |  Branch (81:37): [True: 2.81k, False: 552]
  |  |  ------------------
  ------------------
 1952|  2.81k|        _PyObject_GC_UNTRACK(op);
  ------------------
  |  |  515|  2.81k|        _PyObject_GC_UNTRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  2.81k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.81k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1953|  2.81k|    }
 1954|  3.36k|}
PyObject_IS_GC:
 1958|  7.78k|{
 1959|  7.78k|    return _PyObject_IS_GC(obj);
 1960|  7.78k|}
_Py_ScheduleGC:
 1964|  1.50k|{
 1965|  1.50k|    if (!_Py_eval_breaker_bit_is_set(tstate, _PY_GC_SCHEDULED_BIT))
  ------------------
  |  |  350|  1.50k|#define _PY_GC_SCHEDULED_BIT (1U << 4)
  ------------------
  |  Branch (1965:9): [True: 2, False: 1.50k]
  ------------------
 1966|      2|    {
 1967|      2|        _Py_set_eval_breaker_bit(tstate, _PY_GC_SCHEDULED_BIT);
  ------------------
  |  |  350|      2|#define _PY_GC_SCHEDULED_BIT (1U << 4)
  ------------------
 1968|      2|    }
 1969|  1.50k|}
_PyObject_GC_Link:
 1973|  8.68k|{
 1974|  8.68k|    PyGC_Head *gc = AS_GC(op);
  ------------------
  |  |   52|  8.68k|#define AS_GC(op) _Py_AS_GC(op)
  ------------------
 1975|       |    // gc must be correctly aligned
 1976|  8.68k|    _PyObject_ASSERT(op, ((uintptr_t)gc & (sizeof(uintptr_t)-1)) == 0);
  ------------------
  |  |  423|  8.68k|    _PyObject_ASSERT_WITH_MSG((obj), expr, NULL)
  |  |  ------------------
  |  |  |  |  421|  8.68k|    _PyObject_ASSERT_FROM((obj), expr, (msg), __FILE__, __LINE__, __func__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  414|  8.68k|    ((expr) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (414:6): [True: 8.68k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  415|  8.68k|      ? (void)(0) \
  |  |  |  |  |  |  416|  8.68k|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1977|       |
 1978|  8.68k|    PyThreadState *tstate = _PyThreadState_GET();
 1979|  8.68k|    GCState *gcstate = &tstate->interp->gc;
 1980|  8.68k|    gc->_gc_next = 0;
 1981|  8.68k|    gc->_gc_prev = 0;
 1982|  8.68k|    gcstate->generations[0].count++; /* number of allocated GC objects */
 1983|  8.68k|    if (gcstate->generations[0].count > gcstate->generations[0].threshold &&
  ------------------
  |  Branch (1983:9): [True: 1.50k, False: 7.17k]
  ------------------
 1984|  1.50k|        gcstate->enabled &&
  ------------------
  |  Branch (1984:9): [True: 1.50k, False: 0]
  ------------------
 1985|  1.50k|        gcstate->generations[0].threshold &&
  ------------------
  |  Branch (1985:9): [True: 1.50k, False: 0]
  ------------------
 1986|  1.50k|        !_Py_atomic_load_int_relaxed(&gcstate->collecting) &&
  ------------------
  |  Branch (1986:9): [True: 1.50k, False: 0]
  ------------------
 1987|  1.50k|        !_PyErr_Occurred(tstate))
  ------------------
  |  Branch (1987:9): [True: 1.50k, False: 0]
  ------------------
 1988|  1.50k|    {
 1989|  1.50k|        _Py_ScheduleGC(tstate);
 1990|  1.50k|    }
 1991|  8.68k|}
_Py_RunGC:
 1995|      2|{
 1996|      2|    GCState *gcstate = get_gc_state();
 1997|      2|    if (!gcstate->enabled) {
  ------------------
  |  Branch (1997:9): [True: 0, False: 2]
  ------------------
 1998|      0|        return;
 1999|      0|    }
 2000|      2|    gc_collect_main(tstate, GENERATION_AUTO, _Py_GC_REASON_HEAP);
  ------------------
  |  |   56|      2|#define GENERATION_AUTO (-1)
  ------------------
 2001|      2|}
_PyObject_GC_New:
 2025|  2.51k|{
 2026|  2.51k|    size_t presize = _PyType_PreHeaderSize(tp);
 2027|  2.51k|    size_t size = _PyObject_SIZE(tp);
 2028|  2.51k|    if (_PyType_HasFeature(tp, Py_TPFLAGS_INLINE_VALUES)) {
  ------------------
  |  |  472|  2.51k|#define Py_TPFLAGS_INLINE_VALUES (1 << 2)
  ------------------
  |  Branch (2028:9): [True: 0, False: 2.51k]
  ------------------
 2029|      0|        size += _PyInlineValuesSize(tp);
 2030|      0|    }
 2031|  2.51k|    PyObject *op = gc_alloc(tp, size, presize);
 2032|  2.51k|    if (op == NULL) {
  ------------------
  |  Branch (2032:9): [True: 0, False: 2.51k]
  ------------------
 2033|      0|        return NULL;
 2034|      0|    }
 2035|  2.51k|    _PyObject_Init(op, tp);
 2036|  2.51k|    if (tp->tp_flags & Py_TPFLAGS_INLINE_VALUES) {
  ------------------
  |  |  472|  2.51k|#define Py_TPFLAGS_INLINE_VALUES (1 << 2)
  ------------------
  |  Branch (2036:9): [True: 0, False: 2.51k]
  ------------------
 2037|      0|        _PyObject_InitInlineValues(op, tp);
 2038|      0|    }
 2039|  2.51k|    return op;
 2040|  2.51k|}
_PyObject_GC_NewVar:
 2044|  2.43k|{
 2045|  2.43k|    PyVarObject *op;
 2046|       |
 2047|  2.43k|    if (nitems < 0) {
  ------------------
  |  Branch (2047:9): [True: 0, False: 2.43k]
  ------------------
 2048|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
 2049|      0|        return NULL;
 2050|      0|    }
 2051|  2.43k|    size_t presize = _PyType_PreHeaderSize(tp);
 2052|  2.43k|    size_t size = _PyObject_VAR_SIZE(tp, nitems);
 2053|  2.43k|    op = (PyVarObject *)gc_alloc(tp, size, presize);
 2054|  2.43k|    if (op == NULL) {
  ------------------
  |  Branch (2054:9): [True: 0, False: 2.43k]
  ------------------
 2055|      0|        return NULL;
 2056|      0|    }
 2057|  2.43k|    _PyObject_InitVar(op, tp, nitems);
 2058|  2.43k|    return op;
 2059|  2.43k|}
_PyObject_GC_Resize:
 2077|      1|{
 2078|      1|    const size_t basicsize = _PyObject_VAR_SIZE(Py_TYPE(op), nitems);
  ------------------
  |  |  213|      1|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2079|      1|    const size_t presize = _PyType_PreHeaderSize(Py_TYPE(op));
  ------------------
  |  |  213|      1|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2080|      1|    _PyObject_ASSERT((PyObject *)op, !_PyObject_GC_IS_TRACKED(op));
  ------------------
  |  |  423|      1|    _PyObject_ASSERT_WITH_MSG((obj), expr, NULL)
  |  |  ------------------
  |  |  |  |  421|      1|    _PyObject_ASSERT_FROM((obj), expr, (msg), __FILE__, __LINE__, __func__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  414|      1|    ((expr) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (414:6): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  415|      1|      ? (void)(0) \
  |  |  |  |  |  |  416|      1|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2081|      1|    if (basicsize > (size_t)PY_SSIZE_T_MAX - presize) {
  ------------------
  |  |  137|      1|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (2081:9): [True: 0, False: 1]
  ------------------
 2082|      0|        return (PyVarObject *)PyErr_NoMemory();
 2083|      0|    }
 2084|      1|    char *mem = (char *)op - presize;
 2085|      1|    mem = (char *)_PyObject_ReallocWithType(Py_TYPE(op), mem, presize + basicsize);
  ------------------
  |  |  213|      1|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2086|      1|    if (mem == NULL) {
  ------------------
  |  Branch (2086:9): [True: 0, False: 1]
  ------------------
 2087|      0|        return (PyVarObject *)PyErr_NoMemory();
 2088|      0|    }
 2089|      1|    op = (PyVarObject *) (mem + presize);
 2090|      1|    Py_SET_SIZE(op, nitems);
  ------------------
  |  |  216|      1|#  define Py_SET_SIZE(ob, size) _Py_SET_SIZE_impl(_PyVarObject_CAST(ob), (size))
  |  |  ------------------
  |  |  |  |  182|      1|#define _PyVarObject_CAST(op) _Py_CAST(PyVarObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2091|      1|    return op;
 2092|      1|}
PyObject_GC_Del:
 2096|  1.27k|{
 2097|  1.27k|    size_t presize = _PyType_PreHeaderSize(Py_TYPE(op));
  ------------------
  |  |  213|  1.27k|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  1.27k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  1.27k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2098|  1.27k|    PyGC_Head *g = AS_GC(op);
  ------------------
  |  |   52|  1.27k|#define AS_GC(op) _Py_AS_GC(op)
  ------------------
 2099|  1.27k|    if (_PyObject_GC_IS_TRACKED(op)) {
  ------------------
  |  |   81|  1.27k|#define _PyObject_GC_IS_TRACKED(op) _PyObject_GC_IS_TRACKED(_Py_CAST(PyObject*, op))
  |  |  ------------------
  |  |  |  |   37|  1.27k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  |  Branch (81:37): [True: 0, False: 1.27k]
  |  |  ------------------
  ------------------
 2100|      0|        gc_list_remove(g);
 2101|      0|        GCState *gcstate = get_gc_state();
 2102|      0|        gcstate->heap_size--;
 2103|       |#ifdef Py_DEBUG
 2104|       |        PyObject *exc = PyErr_GetRaisedException();
 2105|       |        if (PyErr_WarnExplicitFormat(PyExc_ResourceWarning, "gc", 0,
 2106|       |                                     "gc", NULL,
 2107|       |                                     "Object of type %s is not untracked "
 2108|       |                                     "before destruction",
 2109|       |                                     Py_TYPE(op)->tp_name))
 2110|       |        {
 2111|       |            PyErr_FormatUnraisable("Exception ignored on object deallocation");
 2112|       |        }
 2113|       |        PyErr_SetRaisedException(exc);
 2114|       |#endif
 2115|      0|    }
 2116|  1.27k|    GCState *gcstate = get_gc_state();
 2117|  1.27k|    if (gcstate->generations[0].count > 0) {
  ------------------
  |  Branch (2117:9): [True: 1.27k, False: 1]
  ------------------
 2118|  1.27k|        gcstate->generations[0].count--;
 2119|  1.27k|    }
 2120|  1.27k|    PyObject_Free(((char *)op)-presize);
 2121|  1.27k|}
PyObject_GC_IsTracked:
 2125|    122|{
 2126|    122|    if (_PyObject_IS_GC(obj) && _PyObject_GC_IS_TRACKED(obj)) {
  ------------------
  |  |   81|     61|#define _PyObject_GC_IS_TRACKED(op) _PyObject_GC_IS_TRACKED(_Py_CAST(PyObject*, op))
  |  |  ------------------
  |  |  |  |   37|     61|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  |  Branch (81:37): [True: 0, False: 61]
  |  |  ------------------
  ------------------
  |  Branch (2126:9): [True: 61, False: 61]
  ------------------
 2127|      0|        return 1;
 2128|      0|    }
 2129|    122|    return 0;
 2130|    122|}
gc.c:visit_decref:
  441|  16.5k|{
  442|  16.5k|    OBJECT_STAT_INC(object_visits);
  ------------------
  |  |   77|  16.5k|#define OBJECT_STAT_INC(name) ((void)0)
  ------------------
  443|  16.5k|    _PyObject_ASSERT(_PyObject_CAST(parent), !_PyObject_IsFreed(op));
  ------------------
  |  |  423|  16.5k|    _PyObject_ASSERT_WITH_MSG((obj), expr, NULL)
  |  |  ------------------
  |  |  |  |  421|  16.5k|    _PyObject_ASSERT_FROM((obj), expr, (msg), __FILE__, __LINE__, __func__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  414|  16.5k|    ((expr) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (414:6): [True: 16.5k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  415|  16.5k|      ? (void)(0) \
  |  |  |  |  |  |  416|  16.5k|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  444|       |
  445|  16.5k|    if (_PyObject_IS_GC(op)) {
  ------------------
  |  Branch (445:9): [True: 5.85k, False: 10.7k]
  ------------------
  446|  5.85k|        PyGC_Head *gc = AS_GC(op);
  ------------------
  |  |   52|  5.85k|#define AS_GC(op) _Py_AS_GC(op)
  ------------------
  447|       |        /* We're only interested in gc_refs for objects in the
  448|       |         * generation being collected, which can be recognized
  449|       |         * because only they have positive gc_refs.
  450|       |         */
  451|  5.85k|        if (gc_is_collecting(gc)) {
  ------------------
  |  Branch (451:13): [True: 5.44k, False: 413]
  ------------------
  452|  5.44k|            gc_decref(gc);
  453|  5.44k|        }
  454|  5.85k|    }
  455|  16.5k|    return 0;
  456|  16.5k|}
gc.c:gc_is_collecting:
   60|  11.6k|{
   61|  11.6k|    return (g->_gc_prev & PREV_MASK_COLLECTING) != 0;
  ------------------
  |  |   39|  11.6k|#define PREV_MASK_COLLECTING   _PyGC_PREV_MASK_COLLECTING
  |  |  ------------------
  |  |  |  |  119|  11.6k|#define _PyGC_PREV_MASK_COLLECTING ((uintptr_t)2)
  |  |  ------------------
  ------------------
   62|  11.6k|}
gc.c:gc_decref:
   93|  5.44k|{
   94|  5.44k|    _PyObject_ASSERT_WITH_MSG(FROM_GC(g),
  ------------------
  |  |  421|  5.44k|    _PyObject_ASSERT_FROM((obj), expr, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  |  414|  5.44k|    ((expr) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (414:6): [True: 5.44k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  415|  5.44k|      ? (void)(0) \
  |  |  |  |  416|  5.44k|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  |  |  ------------------
  ------------------
   95|  5.44k|                              gc_get_refs(g) > 0,
   96|  5.44k|                              "refcount is too small");
   97|  5.44k|    g->_gc_prev -= 1 << _PyGC_PREV_SHIFT;
  ------------------
  |  |  121|  5.44k|#define _PyGC_PREV_SHIFT           2
  ------------------
   98|  5.44k|}
gc.c:gc_get_refs:
   72|  27.2k|{
   73|  27.2k|    return (Py_ssize_t)(g->_gc_prev >> _PyGC_PREV_SHIFT);
  ------------------
  |  |  121|  27.2k|#define _PyGC_PREV_SHIFT           2
  ------------------
   74|  27.2k|}
gc.c:gc_list_merge:
  277|      8|{
  278|      8|    assert(from != to);
  ------------------
  |  Branch (278:5): [True: 8, False: 0]
  ------------------
  279|      8|    if (!gc_list_is_empty(from)) {
  ------------------
  |  Branch (279:9): [True: 3, False: 5]
  ------------------
  280|      3|        PyGC_Head *to_tail = GC_PREV(to);
  ------------------
  |  |   29|      3|#define GC_PREV _PyGCHead_PREV
  ------------------
  281|      3|        PyGC_Head *from_head = GC_NEXT(from);
  ------------------
  |  |   28|      3|#define GC_NEXT _PyGCHead_NEXT
  ------------------
  282|      3|        PyGC_Head *from_tail = GC_PREV(from);
  ------------------
  |  |   29|      3|#define GC_PREV _PyGCHead_PREV
  ------------------
  283|      3|        assert(from_head != from);
  ------------------
  |  Branch (283:9): [True: 3, False: 0]
  ------------------
  284|      3|        assert(from_tail != from);
  ------------------
  |  Branch (284:9): [True: 3, False: 0]
  ------------------
  285|       |
  286|      3|        _PyGCHead_SET_NEXT(to_tail, from_head);
  287|      3|        _PyGCHead_SET_PREV(from_head, to_tail);
  288|       |
  289|      3|        _PyGCHead_SET_NEXT(from_tail, to);
  290|      3|        _PyGCHead_SET_PREV(to, from_tail);
  291|      3|    }
  292|      8|    gc_list_init(from);
  293|      8|}
gc.c:gc_list_is_empty:
  220|     38|{
  221|     38|    return (list->_gc_next == (uintptr_t)list);
  222|     38|}
gc.c:gc_list_init:
  211|     18|{
  212|       |    // List header must not have flags.
  213|       |    // We can assign pointer by simple cast.
  214|     18|    list->_gc_prev = (uintptr_t)list;
  215|     18|    list->_gc_next = (uintptr_t)list;
  216|     18|}
gc.c:gc_list_size:
  297|      2|{
  298|      2|    PyGC_Head *gc;
  299|      2|    Py_ssize_t n = 0;
  300|     24|    for (gc = GC_NEXT(list); gc != list; gc = GC_NEXT(gc)) {
  ------------------
  |  |   28|      2|#define GC_NEXT _PyGCHead_NEXT
  ------------------
                  for (gc = GC_NEXT(list); gc != list; gc = GC_NEXT(gc)) {
  ------------------
  |  |   28|     22|#define GC_NEXT _PyGCHead_NEXT
  ------------------
  |  Branch (300:30): [True: 22, False: 2]
  ------------------
  301|     22|        n++;
  302|     22|    }
  303|      2|    return n;
  304|      2|}
gc.c:get_gc_state:
  106|  1.27k|{
  107|  1.27k|    PyInterpreterState *interp = _PyInterpreterState_GET();
  108|  1.27k|    return &interp->gc;
  109|  1.27k|}
gc.c:gc_collect_main:
 1424|      2|{
 1425|      2|    int i;
 1426|      2|    PyGC_Head *young; /* the generation we are examining */
 1427|      2|    PyGC_Head *old; /* next older generation */
 1428|      2|    PyGC_Head unreachable; /* non-problematic unreachable trash */
 1429|      2|    PyGC_Head finalizers;  /* objects with, & reachable from, __del__ */
 1430|      2|    PyGC_Head *gc;
 1431|      2|    GCState *gcstate = &tstate->interp->gc;
 1432|       |
 1433|       |    // gc_collect_main() must not be called before _PyGC_Init
 1434|       |    // or after _PyGC_Fini()
 1435|      2|    assert(gcstate->garbage != NULL);
  ------------------
  |  Branch (1435:5): [True: 2, False: 0]
  ------------------
 1436|      2|    assert(!_PyErr_Occurred(tstate));
  ------------------
  |  Branch (1436:5): [True: 2, False: 0]
  ------------------
 1437|       |
 1438|      2|    int expected = 0;
 1439|      2|    if (!_Py_atomic_compare_exchange_int(&gcstate->collecting, &expected, 1)) {
  ------------------
  |  Branch (1439:9): [True: 0, False: 2]
  ------------------
 1440|       |        // Don't start a garbage collection if one is already in progress.
 1441|      0|        return 0;
 1442|      0|    }
 1443|      2|    gcstate->frame = tstate->current_frame;
 1444|       |
 1445|      2|    if (generation == GENERATION_AUTO) {
  ------------------
  |  |   56|      2|#define GENERATION_AUTO (-1)
  ------------------
  |  Branch (1445:9): [True: 2, False: 0]
  ------------------
 1446|       |        // Select the oldest generation that needs collecting. We will collect
 1447|       |        // objects from that generation and all generations younger than it.
 1448|      2|        generation = gc_select_generation(gcstate);
 1449|      2|        if (generation < 0) {
  ------------------
  |  Branch (1449:13): [True: 0, False: 2]
  ------------------
 1450|       |            // No generation needs to be collected.
 1451|      0|            _Py_atomic_store_int(&gcstate->collecting, 0);
 1452|      0|            return 0;
 1453|      0|        }
 1454|      2|    }
 1455|       |
 1456|      2|    assert(generation >= 0 && generation < NUM_GENERATIONS);
  ------------------
  |  Branch (1456:5): [True: 2, False: 0]
  |  Branch (1456:5): [True: 2, False: 0]
  ------------------
 1457|       |
 1458|       |#ifdef Py_STATS
 1459|       |    {
 1460|       |        PyStats *s = _PyStats_GET();
 1461|       |        if (s) {
 1462|       |            s->object_stats.object_visits = 0;
 1463|       |        }
 1464|       |    }
 1465|       |#endif
 1466|       |
 1467|      2|    GC_STAT_ADD(generation, collections, 1);
  ------------------
  |  |   81|      2|#define GC_STAT_ADD(gen, name, n) ((void)0)
  ------------------
 1468|       |
 1469|      2|    struct gc_generation_stats stats = { 0 };
 1470|      2|    if (reason != _Py_GC_REASON_SHUTDOWN) {
  ------------------
  |  Branch (1470:9): [True: 2, False: 0]
  ------------------
 1471|      2|        invoke_gc_callback(tstate, "start", generation, &stats);
 1472|      2|    }
 1473|       |
 1474|      2|    stats.heap_size = gcstate->heap_size;
 1475|       |    // ignore error: don't interrupt the GC if reading the clock fails
 1476|      2|    (void)PyTime_PerfCounterRaw(&stats.ts_start);
 1477|      2|    if (gcstate->debug & _PyGC_DEBUG_STATS) {
  ------------------
  |  |  125|      2|#define _PyGC_DEBUG_STATS             (1<<0) /* print collection statistics */
  ------------------
  |  Branch (1477:9): [True: 0, False: 2]
  ------------------
 1478|      0|        PySys_WriteStderr("gc: collecting generation %d...\n", generation);
 1479|      0|        show_stats_each_generations(gcstate);
 1480|      0|    }
 1481|       |
 1482|      2|    if (PyDTrace_GC_START_ENABLED()) {
  ------------------
  |  Branch (1482:9): [True: 0, False: 2]
  ------------------
 1483|      0|        PyDTrace_GC_START(generation);
 1484|      0|    }
 1485|       |
 1486|       |    /* update collection and allocation counters */
 1487|      2|    if (generation+1 < NUM_GENERATIONS) {
  ------------------
  |  |  217|      2|#define NUM_GENERATIONS 3
  ------------------
  |  Branch (1487:9): [True: 2, False: 0]
  ------------------
 1488|      2|        gcstate->generations[generation+1].count += 1;
 1489|      2|    }
 1490|      4|    for (i = 0; i <= generation; i++) {
  ------------------
  |  Branch (1490:17): [True: 2, False: 2]
  ------------------
 1491|      2|        gcstate->generations[i].count = 0;
 1492|      2|    }
 1493|       |
 1494|       |    /* merge younger generations with one we are currently collecting */
 1495|      2|    for (i = 0; i < generation; i++) {
  ------------------
  |  Branch (1495:17): [True: 0, False: 2]
  ------------------
 1496|      0|        gc_list_merge(GEN_HEAD(gcstate, i), GEN_HEAD(gcstate, generation));
  ------------------
  |  |  101|      0|#define GEN_HEAD(gcstate, n) (&(gcstate)->generations[n].head)
  ------------------
                      gc_list_merge(GEN_HEAD(gcstate, i), GEN_HEAD(gcstate, generation));
  ------------------
  |  |  101|      0|#define GEN_HEAD(gcstate, n) (&(gcstate)->generations[n].head)
  ------------------
 1497|      0|    }
 1498|       |
 1499|       |    /* handy references */
 1500|      2|    young = GEN_HEAD(gcstate, generation);
  ------------------
  |  |  101|      2|#define GEN_HEAD(gcstate, n) (&(gcstate)->generations[n].head)
  ------------------
 1501|      2|    if (generation < NUM_GENERATIONS-1) {
  ------------------
  |  |  217|      2|#define NUM_GENERATIONS 3
  ------------------
  |  Branch (1501:9): [True: 2, False: 0]
  ------------------
 1502|      2|        old = GEN_HEAD(gcstate, generation+1);
  ------------------
  |  |  101|      2|#define GEN_HEAD(gcstate, n) (&(gcstate)->generations[n].head)
  ------------------
 1503|      2|    }
 1504|      0|    else {
 1505|      0|        old = young;
 1506|      0|    }
 1507|      2|    validate_list(old, collecting_clear_unreachable_clear);
  ------------------
  |  |  387|      2|#define validate_list(x, y) do{}while(0)
  |  |  ------------------
  |  |  |  Branch (387:39): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1508|       |
 1509|      2|    stats.candidates = deduce_unreachable(young, &unreachable);
 1510|       |
 1511|      2|    untrack_tuples(young);
 1512|       |    /* Move reachable objects to next generation. */
 1513|      2|    if (young != old) {
  ------------------
  |  Branch (1513:9): [True: 2, False: 0]
  ------------------
 1514|      2|        if (generation == NUM_GENERATIONS - 2) {
  ------------------
  |  |  217|      2|#define NUM_GENERATIONS 3
  ------------------
  |  Branch (1514:13): [True: 0, False: 2]
  ------------------
 1515|      0|            gcstate->long_lived_pending += gc_list_size(young);
 1516|      0|        }
 1517|      2|        gc_list_merge(young, old);
 1518|      2|    }
 1519|      0|    else {
 1520|       |        // In Python <= 3.13, we called untrack_dicts(young) here to untrack
 1521|       |        // atomic-only dicts (see issue #14775). Python 3.14 removed the lazy
 1522|       |        // dict tracking machinery entirely (GH-127010) -- dicts are always
 1523|       |        // tracked from creation and never untracked by GC. That way, we don't
 1524|       |        // have to restore MAINTAIN_TRACKING across every PyDict_SetItem call
 1525|       |        // site; the cost is slightly more work for full collections on dicts
 1526|       |        // with only atomic values.
 1527|      0|        gcstate->long_lived_pending = 0;
 1528|      0|        gcstate->long_lived_total = gc_list_size(young);
 1529|      0|    }
 1530|       |
 1531|       |    /* All objects in unreachable are trash, but objects reachable from
 1532|       |     * legacy finalizers (e.g. tp_del) can't safely be deleted.
 1533|       |     */
 1534|      2|    gc_list_init(&finalizers);
 1535|       |    // NEXT_MASK_UNREACHABLE is cleared here.
 1536|       |    // After move_legacy_finalizers(), unreachable is normal list.
 1537|      2|    move_legacy_finalizers(&unreachable, &finalizers);
 1538|       |    /* finalizers contains the unreachable objects with a legacy finalizer;
 1539|       |     * unreachable objects reachable *from* those are also uncollectable,
 1540|       |     * and we move those into the finalizers list too.
 1541|       |     */
 1542|      2|    move_legacy_finalizer_reachable(&finalizers);
 1543|       |
 1544|      2|    validate_list(&finalizers, collecting_clear_unreachable_clear);
  ------------------
  |  |  387|      2|#define validate_list(x, y) do{}while(0)
  |  |  ------------------
  |  |  |  Branch (387:39): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1545|      2|    validate_list(&unreachable, collecting_set_unreachable_clear);
  ------------------
  |  |  387|      2|#define validate_list(x, y) do{}while(0)
  |  |  ------------------
  |  |  |  Branch (387:39): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1546|       |
 1547|       |    /* Print debugging information. */
 1548|      2|    if (gcstate->debug & _PyGC_DEBUG_COLLECTABLE) {
  ------------------
  |  |  126|      2|#define _PyGC_DEBUG_COLLECTABLE       (1<<1) /* print collectable objects */
  ------------------
  |  Branch (1548:9): [True: 0, False: 2]
  ------------------
 1549|      0|        for (gc = GC_NEXT(&unreachable); gc != &unreachable; gc = GC_NEXT(gc)) {
  ------------------
  |  |   28|      0|#define GC_NEXT _PyGCHead_NEXT
  ------------------
                      for (gc = GC_NEXT(&unreachable); gc != &unreachable; gc = GC_NEXT(gc)) {
  ------------------
  |  |   28|      0|#define GC_NEXT _PyGCHead_NEXT
  ------------------
  |  Branch (1549:42): [True: 0, False: 0]
  ------------------
 1550|      0|            debug_cycle("collectable", FROM_GC(gc));
  ------------------
  |  |   53|      0|#define FROM_GC(gc) _Py_FROM_GC(gc)
  ------------------
 1551|      0|        }
 1552|      0|    }
 1553|       |
 1554|       |    /* Clear weakrefs and invoke callbacks as necessary. */
 1555|      2|    stats.collected += handle_weakref_callbacks(&unreachable, old);
 1556|      2|    validate_list(old, collecting_clear_unreachable_clear);
  ------------------
  |  |  387|      2|#define validate_list(x, y) do{}while(0)
  |  |  ------------------
  |  |  |  Branch (387:39): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1557|      2|    validate_list(&unreachable, collecting_set_unreachable_clear);
  ------------------
  |  |  387|      2|#define validate_list(x, y) do{}while(0)
  |  |  ------------------
  |  |  |  Branch (387:39): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1558|       |
 1559|       |    /* Call tp_finalize on objects which have one. */
 1560|      2|    finalize_garbage(tstate, &unreachable);
 1561|       |
 1562|       |    /* Handle any objects that may have resurrected after the call
 1563|       |     * to 'finalize_garbage' and continue the collection with the
 1564|       |     * objects that are still unreachable */
 1565|      2|    PyGC_Head final_unreachable;
 1566|      2|    handle_resurrected_objects(&unreachable, &final_unreachable, old);
 1567|       |
 1568|       |    /* Clear weakrefs to objects in the unreachable set.  No Python-level
 1569|       |     * code must be allowed to access those unreachable objects.  During
 1570|       |     * delete_garbage(), finalizers outside the unreachable set might run
 1571|       |     * and create new weakrefs.  If those weakrefs were not cleared, they
 1572|       |     * could reveal unreachable objects.  Callbacks are not executed.
 1573|       |     */
 1574|      2|    clear_weakrefs(&final_unreachable);
 1575|       |
 1576|       |    /* Call tp_clear on objects in the final_unreachable set.  This will cause
 1577|       |    * the reference cycles to be broken.  It may also cause some objects
 1578|       |    * in finalizers to be freed.
 1579|       |    */
 1580|      2|    stats.collected += gc_list_size(&final_unreachable);
 1581|      2|    delete_garbage(tstate, gcstate, &final_unreachable, old);
 1582|       |
 1583|       |    /* Collect statistics on uncollectable objects found and print
 1584|       |     * debugging information. */
 1585|      2|    Py_ssize_t n = 0;
 1586|      2|    for (gc = GC_NEXT(&finalizers); gc != &finalizers; gc = GC_NEXT(gc)) {
  ------------------
  |  |   28|      2|#define GC_NEXT _PyGCHead_NEXT
  ------------------
                  for (gc = GC_NEXT(&finalizers); gc != &finalizers; gc = GC_NEXT(gc)) {
  ------------------
  |  |   28|      0|#define GC_NEXT _PyGCHead_NEXT
  ------------------
  |  Branch (1586:37): [True: 0, False: 2]
  ------------------
 1587|      0|        n++;
 1588|      0|        if (gcstate->debug & _PyGC_DEBUG_UNCOLLECTABLE)
  ------------------
  |  |  127|      0|#define _PyGC_DEBUG_UNCOLLECTABLE     (1<<2) /* print uncollectable objects */
  ------------------
  |  Branch (1588:13): [True: 0, False: 0]
  ------------------
 1589|      0|            debug_cycle("uncollectable", FROM_GC(gc));
  ------------------
  |  |   53|      0|#define FROM_GC(gc) _Py_FROM_GC(gc)
  ------------------
 1590|      0|    }
 1591|      2|    stats.uncollectable = n;
 1592|      2|    (void)PyTime_PerfCounterRaw(&stats.ts_stop);
 1593|      2|    stats.duration = PyTime_AsSecondsDouble(stats.ts_stop - stats.ts_start);
 1594|      2|    if (gcstate->debug & _PyGC_DEBUG_STATS) {
  ------------------
  |  |  125|      2|#define _PyGC_DEBUG_STATS             (1<<0) /* print collection statistics */
  ------------------
  |  Branch (1594:9): [True: 0, False: 2]
  ------------------
 1595|      0|        PySys_WriteStderr(
 1596|      0|            "gc: done, %zd unreachable, %zd uncollectable, %.4fs elapsed\n",
 1597|      0|            stats.uncollectable+stats.collected, stats.uncollectable,
 1598|      0|            stats.duration);
 1599|      0|    }
 1600|       |
 1601|       |    /* Append instances in the uncollectable set to a Python
 1602|       |     * reachable list of garbage.  The programmer has to deal with
 1603|       |     * this if they insist on creating this type of structure.
 1604|       |     */
 1605|      2|    handle_legacy_finalizers(tstate, gcstate, &finalizers, old);
 1606|      2|    validate_list(old, collecting_clear_unreachable_clear);
  ------------------
  |  |  387|      2|#define validate_list(x, y) do{}while(0)
  |  |  ------------------
  |  |  |  Branch (387:39): [Folded, False: 2]
  |  |  ------------------
  ------------------
 1607|       |
 1608|       |    /* Clear free list only during the collection of the highest
 1609|       |     * generation */
 1610|      2|    if (generation == NUM_GENERATIONS-1) {
  ------------------
  |  |  217|      2|#define NUM_GENERATIONS 3
  ------------------
  |  Branch (1610:9): [True: 0, False: 2]
  ------------------
 1611|      0|        _PyGC_ClearAllFreeLists(tstate->interp);
 1612|      0|    }
 1613|       |
 1614|      2|    if (_PyErr_Occurred(tstate)) {
  ------------------
  |  Branch (1614:9): [True: 0, False: 2]
  ------------------
 1615|      0|        if (reason == _Py_GC_REASON_SHUTDOWN) {
  ------------------
  |  Branch (1615:13): [True: 0, False: 0]
  ------------------
 1616|      0|            _PyErr_Clear(tstate);
 1617|      0|        }
 1618|      0|        else {
 1619|      0|            PyErr_FormatUnraisable("Exception ignored in garbage collection");
 1620|      0|        }
 1621|      0|    }
 1622|       |
 1623|       |    /* Update stats */
 1624|      2|    add_stats(gcstate, generation, &stats);
 1625|      2|    GC_STAT_ADD(generation, objects_collected, stats.collected);
  ------------------
  |  |   81|      2|#define GC_STAT_ADD(gen, name, n) ((void)0)
  ------------------
 1626|       |
 1627|       |#ifdef Py_STATS
 1628|       |    {
 1629|       |        PyStats *s = _PyStats_GET();
 1630|       |        if (s) {
 1631|       |            GC_STAT_ADD(generation, object_visits,
 1632|       |                s->object_stats.object_visits);
 1633|       |            s->object_stats.object_visits = 0;
 1634|       |        }
 1635|       |    }
 1636|       |#endif
 1637|       |
 1638|      2|    if (PyDTrace_GC_DONE_ENABLED()) {
  ------------------
  |  Branch (1638:9): [True: 0, False: 2]
  ------------------
 1639|      0|        PyDTrace_GC_DONE(stats.uncollectable + stats.collected);
 1640|      0|    }
 1641|       |
 1642|      2|    if (reason != _Py_GC_REASON_SHUTDOWN) {
  ------------------
  |  Branch (1642:9): [True: 2, False: 0]
  ------------------
 1643|      2|        invoke_gc_callback(tstate, "stop", generation, &stats);
 1644|      2|    }
 1645|       |
 1646|      2|    assert(!_PyErr_Occurred(tstate));
  ------------------
  |  Branch (1646:5): [True: 2, False: 0]
  ------------------
 1647|      2|    gcstate->frame = NULL;
 1648|      2|    _Py_atomic_store_int(&gcstate->collecting, 0);
 1649|      2|    return stats.uncollectable + stats.collected;
 1650|      2|}
gc.c:gc_select_generation:
 1317|      2|{
 1318|      6|    for (int i = NUM_GENERATIONS-1; i >= 0; i--) {
  ------------------
  |  |  217|      2|#define NUM_GENERATIONS 3
  ------------------
  |  Branch (1318:37): [True: 6, False: 0]
  ------------------
 1319|      6|        if (gcstate->generations[i].count > gcstate->generations[i].threshold) {
  ------------------
  |  Branch (1319:13): [True: 2, False: 4]
  ------------------
 1320|       |            /* Avoid quadratic performance degradation in number
 1321|       |               of tracked objects (see also issue #4074):
 1322|       |
 1323|       |               To limit the cost of garbage collection, there are two strategies;
 1324|       |                 - make each collection faster, e.g. by scanning fewer objects
 1325|       |                 - do less collections
 1326|       |               This heuristic is about the latter strategy.
 1327|       |
 1328|       |               In addition to the various configurable thresholds, we only trigger a
 1329|       |               full collection if the ratio
 1330|       |
 1331|       |                long_lived_pending / long_lived_total
 1332|       |
 1333|       |               is above a given value (hardwired to 25%).
 1334|       |
 1335|       |               The reason is that, while "non-full" collections (i.e., collections of
 1336|       |               the young and middle generations) will always examine roughly the same
 1337|       |               number of objects -- determined by the aforementioned thresholds --,
 1338|       |               the cost of a full collection is proportional to the total number of
 1339|       |               long-lived objects, which is virtually unbounded.
 1340|       |
 1341|       |               Indeed, it has been remarked that doing a full collection every
 1342|       |               <constant number> of object creations entails a dramatic performance
 1343|       |               degradation in workloads which consist in creating and storing lots of
 1344|       |               long-lived objects (e.g. building a large list of GC-tracked objects would
 1345|       |               show quadratic performance, instead of linear as expected: see issue #4074).
 1346|       |
 1347|       |               Using the above ratio, instead, yields amortized linear performance in
 1348|       |               the total number of objects (the effect of which can be summarized
 1349|       |               thusly: "each full garbage collection is more and more costly as the
 1350|       |               number of objects grows, but we do fewer and fewer of them").
 1351|       |
 1352|       |               This heuristic was suggested by Martin von Löwis on python-dev in
 1353|       |               June 2008. His original analysis and proposal can be found at:
 1354|       |               http://mail.python.org/pipermail/python-dev/2008-June/080579.html
 1355|       |            */
 1356|      2|            if (i == NUM_GENERATIONS - 1
  ------------------
  |  |  217|      2|#define NUM_GENERATIONS 3
  ------------------
  |  Branch (1356:17): [True: 0, False: 2]
  ------------------
 1357|      0|                && gcstate->long_lived_pending < gcstate->long_lived_total / 4)
  ------------------
  |  Branch (1357:20): [True: 0, False: 0]
  ------------------
 1358|      0|            {
 1359|      0|                continue;
 1360|      0|            }
 1361|      2|            return i;
 1362|      2|        }
 1363|      6|    }
 1364|      0|    return -1;
 1365|      2|}
gc.c:invoke_gc_callback:
 1260|      4|{
 1261|      4|    assert(!_PyErr_Occurred(tstate));
  ------------------
  |  Branch (1261:5): [True: 4, False: 0]
  ------------------
 1262|       |
 1263|       |    /* we may get called very early */
 1264|      4|    GCState *gcstate = &tstate->interp->gc;
 1265|      4|    if (gcstate->callbacks == NULL) {
  ------------------
  |  Branch (1265:9): [True: 0, False: 4]
  ------------------
 1266|      0|        return;
 1267|      0|    }
 1268|       |
 1269|       |    /* The local variable cannot be rebound, check it for sanity */
 1270|      4|    assert(PyList_CheckExact(gcstate->callbacks));
  ------------------
  |  Branch (1270:5): [True: 4, False: 0]
  ------------------
 1271|      4|    PyObject *info = NULL;
 1272|      4|    if (PyList_GET_SIZE(gcstate->callbacks) != 0) {
  ------------------
  |  |   38|      4|#define PyList_GET_SIZE(op) PyList_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1272:9): [True: 0, False: 4]
  ------------------
 1273|      0|        info = Py_BuildValue("{sisnsnsnsd}",
 1274|      0|            "generation", generation,
 1275|      0|            "collected", stats->collected,
 1276|      0|            "uncollectable", stats->uncollectable,
 1277|      0|            "candidates", stats->candidates,
 1278|      0|            "duration", stats->duration);
 1279|      0|        if (info == NULL) {
  ------------------
  |  Branch (1279:13): [True: 0, False: 0]
  ------------------
 1280|      0|            PyErr_FormatUnraisable("Exception ignored on invoking gc callbacks");
 1281|      0|            return;
 1282|      0|        }
 1283|      0|    }
 1284|       |
 1285|      4|    PyObject *phase_obj = PyUnicode_FromString(phase);
 1286|      4|    if (phase_obj == NULL) {
  ------------------
  |  Branch (1286:9): [True: 0, False: 4]
  ------------------
 1287|      0|        Py_XDECREF(info);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1288|      0|        PyErr_FormatUnraisable("Exception ignored on invoking gc callbacks");
 1289|      0|        return;
 1290|      0|    }
 1291|       |
 1292|      4|    PyObject *stack[] = {phase_obj, info};
 1293|      4|    for (Py_ssize_t i=0; i<PyList_GET_SIZE(gcstate->callbacks); i++) {
  ------------------
  |  |   38|      4|#define PyList_GET_SIZE(op) PyList_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1293:26): [True: 0, False: 4]
  ------------------
 1294|      0|        PyObject *r, *cb = PyList_GET_ITEM(gcstate->callbacks, i);
  ------------------
  |  |   40|      0|#define PyList_GET_ITEM(op, index) (_PyList_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   26|      0|    (assert(PyList_Check(op)), _Py_CAST(PyListObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1294:28): [True: 0, False: 0]
  ------------------
 1295|      0|        Py_INCREF(cb); /* make sure cb doesn't go away */
  ------------------
  |  |  310|      0|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1296|      0|        r = PyObject_Vectorcall(cb, stack, 2, NULL);
 1297|      0|        if (r == NULL) {
  ------------------
  |  Branch (1297:13): [True: 0, False: 0]
  ------------------
 1298|      0|            PyErr_FormatUnraisable("Exception ignored while "
 1299|      0|                                   "calling GC callback %R", cb);
 1300|      0|        }
 1301|      0|        else {
 1302|      0|            Py_DECREF(r);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1303|      0|        }
 1304|      0|        Py_DECREF(cb);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1305|      0|    }
 1306|      4|    Py_DECREF(phase_obj);
  ------------------
  |  |  430|      4|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1307|      4|    Py_XDECREF(info);
  ------------------
  |  |  524|      4|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1308|       |    assert(!_PyErr_Occurred(tstate));
  ------------------
  |  Branch (1308:5): [True: 4, False: 0]
  ------------------
 1309|      4|}
gc.c:deduce_unreachable:
 1169|      4|deduce_unreachable(PyGC_Head *base, PyGC_Head *unreachable) {
 1170|      4|    validate_list(base, collecting_clear_unreachable_clear);
  ------------------
  |  |  387|      4|#define validate_list(x, y) do{}while(0)
  |  |  ------------------
  |  |  |  Branch (387:39): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1171|       |    /* Using ob_refcnt and gc_refs, calculate which objects in the
 1172|       |     * container set are reachable from outside the set (i.e., have a
 1173|       |     * refcount greater than 0 when all the references within the
 1174|       |     * set are taken into account).
 1175|       |     */
 1176|      4|    Py_ssize_t candidates = update_refs(base);  // gc_prev is used for gc_refs
 1177|      4|    subtract_refs(base);
 1178|       |
 1179|       |    /* Leave everything reachable from outside base in base, and move
 1180|       |     * everything else (in base) to unreachable.
 1181|       |     *
 1182|       |     * NOTE:  This used to move the reachable objects into a reachable
 1183|       |     * set instead.  But most things usually turn out to be reachable,
 1184|       |     * so it's more efficient to move the unreachable things.  It "sounds slick"
 1185|       |     * to move the unreachable objects, until you think about it - the reason it
 1186|       |     * pays isn't actually obvious.
 1187|       |     *
 1188|       |     * Suppose we create objects A, B, C in that order.  They appear in the young
 1189|       |     * generation in the same order.  If B points to A, and C to B, and C is
 1190|       |     * reachable from outside, then the adjusted refcounts will be 0, 0, and 1
 1191|       |     * respectively.
 1192|       |     *
 1193|       |     * When move_unreachable finds A, A is moved to the unreachable list.  The
 1194|       |     * same for B when it's first encountered.  Then C is traversed, B is moved
 1195|       |     * _back_ to the reachable list.  B is eventually traversed, and then A is
 1196|       |     * moved back to the reachable list.
 1197|       |     *
 1198|       |     * So instead of not moving at all, the reachable objects B and A are moved
 1199|       |     * twice each.  Why is this a win?  A straightforward algorithm to move the
 1200|       |     * reachable objects instead would move A, B, and C once each.
 1201|       |     *
 1202|       |     * The key is that this dance leaves the objects in order C, B, A - it's
 1203|       |     * reversed from the original order.  On all _subsequent_ scans, none of
 1204|       |     * them will move.  Since most objects aren't in cycles, this can save an
 1205|       |     * unbounded number of moves across an unbounded number of later collections.
 1206|       |     * It can cost more only the first time the chain is scanned.
 1207|       |     *
 1208|       |     * Drawback:  move_unreachable is also used to find out what's still trash
 1209|       |     * after finalizers may resurrect objects.  In _that_ case most unreachable
 1210|       |     * objects will remain unreachable, so it would be more efficient to move
 1211|       |     * the reachable objects instead.  But this is a one-time cost, probably not
 1212|       |     * worth complicating the code to speed just a little.
 1213|       |     */
 1214|      4|    gc_list_init(unreachable);
 1215|      4|    move_unreachable(base, unreachable);  // gc_prev is pointer again
 1216|      4|    validate_list(base, collecting_clear_unreachable_clear);
  ------------------
  |  |  387|      4|#define validate_list(x, y) do{}while(0)
  |  |  ------------------
  |  |  |  Branch (387:39): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1217|      4|    validate_list(unreachable, collecting_set_unreachable_set);
  ------------------
  |  |  387|      4|#define validate_list(x, y) do{}while(0)
  |  |  ------------------
  |  |  |  Branch (387:39): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1218|      4|    return candidates;
 1219|      4|}
gc.c:update_refs:
  398|      4|{
  399|      4|    PyGC_Head *next;
  400|      4|    PyGC_Head *gc = GC_NEXT(containers);
  ------------------
  |  |   28|      4|#define GC_NEXT _PyGCHead_NEXT
  ------------------
  401|      4|    Py_ssize_t candidates = 0;
  402|       |
  403|  5.09k|    while (gc != containers) {
  ------------------
  |  Branch (403:12): [True: 5.09k, False: 4]
  ------------------
  404|  5.09k|        next = GC_NEXT(gc);
  ------------------
  |  |   28|  5.09k|#define GC_NEXT _PyGCHead_NEXT
  ------------------
  405|  5.09k|        PyObject *op = FROM_GC(gc);
  ------------------
  |  |   53|  5.09k|#define FROM_GC(gc) _Py_FROM_GC(gc)
  ------------------
  406|  5.09k|        if (_Py_IsImmortal(op)) {
  ------------------
  |  |  137|  5.09k|#define _Py_IsImmortal(op) _Py_IsImmortal(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  5.09k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  5.09k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (137:28): [True: 0, False: 5.09k]
  |  |  ------------------
  ------------------
  407|      0|            assert(!_Py_IsStaticImmortal(op));
  ------------------
  |  Branch (407:13): [True: 0, False: 0]
  ------------------
  408|      0|            _PyObject_GC_UNTRACK(op);
  ------------------
  |  |  515|      0|        _PyObject_GC_UNTRACK(__FILE__, __LINE__, _PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  409|      0|            gc = next;
  410|      0|            continue;
  411|      0|        }
  412|  5.09k|        gc_reset_refs(gc, Py_REFCNT(op));
  ------------------
  |  |  119|  5.09k|    #  define Py_REFCNT(ob) _Py_REFCNT(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  5.09k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  5.09k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  413|       |        /* Python's cyclic gc should never see an incoming refcount
  414|       |         * of 0:  if something decref'ed to 0, it should have been
  415|       |         * deallocated immediately at that time.
  416|       |         * Possible cause (if the assert triggers):  a tp_dealloc
  417|       |         * routine left a gc-aware object tracked during its teardown
  418|       |         * phase, and did something-- or allowed something to happen --
  419|       |         * that called back into Python.  gc can trigger then, and may
  420|       |         * see the still-tracked dying object.  Before this assert
  421|       |         * was added, such mistakes went on to allow gc to try to
  422|       |         * delete the object again.  In a debug build, that caused
  423|       |         * a mysterious segfault, when _Py_ForgetReference tried
  424|       |         * to remove the object from the doubly-linked list of all
  425|       |         * objects a second time.  In a release build, an actual
  426|       |         * double deallocation occurred, which leads to corruption
  427|       |         * of the allocator's internal bookkeeping pointers.  That's
  428|       |         * so serious that maybe this should be a release-build
  429|       |         * check instead of an assert?
  430|       |         */
  431|  5.09k|        _PyObject_ASSERT(op, gc_get_refs(gc) != 0);
  ------------------
  |  |  423|  5.09k|    _PyObject_ASSERT_WITH_MSG((obj), expr, NULL)
  |  |  ------------------
  |  |  |  |  421|  5.09k|    _PyObject_ASSERT_FROM((obj), expr, (msg), __FILE__, __LINE__, __func__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  414|  5.09k|    ((expr) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (414:6): [True: 5.09k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  415|  5.09k|      ? (void)(0) \
  |  |  |  |  |  |  416|  5.09k|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  432|  5.09k|        gc = next;
  433|  5.09k|        candidates++;
  434|  5.09k|    }
  435|      4|    return candidates;
  436|      4|}
gc.c:gc_reset_refs:
   85|  5.09k|{
   86|  5.09k|    g->_gc_prev = (g->_gc_prev & _PyGC_PREV_MASK_FINALIZED)
  ------------------
  |  |  117|  5.09k|#define _PyGC_PREV_MASK_FINALIZED  ((uintptr_t)1)
  ------------------
   87|  5.09k|        | PREV_MASK_COLLECTING
  ------------------
  |  |   39|  5.09k|#define PREV_MASK_COLLECTING   _PyGC_PREV_MASK_COLLECTING
  |  |  ------------------
  |  |  |  |  119|  5.09k|#define _PyGC_PREV_MASK_COLLECTING ((uintptr_t)2)
  |  |  ------------------
  ------------------
   88|  5.09k|        | ((uintptr_t)(refs) << _PyGC_PREV_SHIFT);
  ------------------
  |  |  121|  5.09k|#define _PyGC_PREV_SHIFT           2
  ------------------
   89|  5.09k|}
gc.c:subtract_refs:
  491|      4|{
  492|      4|    traverseproc traverse;
  493|      4|    PyGC_Head *gc = GC_NEXT(containers);
  ------------------
  |  |   28|      4|#define GC_NEXT _PyGCHead_NEXT
  ------------------
  494|  5.09k|    for (; gc != containers; gc = GC_NEXT(gc)) {
  ------------------
  |  |   28|  5.09k|#define GC_NEXT _PyGCHead_NEXT
  ------------------
  |  Branch (494:12): [True: 5.09k, False: 4]
  ------------------
  495|  5.09k|        PyObject *op = FROM_GC(gc);
  ------------------
  |  |   53|  5.09k|#define FROM_GC(gc) _Py_FROM_GC(gc)
  ------------------
  496|  5.09k|        traverse = Py_TYPE(op)->tp_traverse;
  ------------------
  |  |  213|  5.09k|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  5.09k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  5.09k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  497|  5.09k|        (void) traverse(op,
  498|  5.09k|                        visit_decref,
  499|  5.09k|                        op);
  500|  5.09k|    }
  501|      4|}
gc.c:move_unreachable:
  580|      4|{
  581|       |    // previous elem in the young list, used for restore gc_prev.
  582|      4|    PyGC_Head *prev = young;
  583|      4|    PyGC_Head *gc = GC_NEXT(young);
  ------------------
  |  |   28|      4|#define GC_NEXT _PyGCHead_NEXT
  ------------------
  584|       |
  585|       |    /* Invariants:  all objects "to the left" of us in young are reachable
  586|       |     * (directly or indirectly) from outside the young list as it was at entry.
  587|       |     *
  588|       |     * All other objects from the original young "to the left" of us are in
  589|       |     * unreachable now, and have NEXT_MASK_UNREACHABLE.  All objects to the
  590|       |     * left of us in 'young' now have been scanned, and no objects here
  591|       |     * or to the right have been scanned yet.
  592|       |     */
  593|       |
  594|  5.90k|    while (gc != young) {
  ------------------
  |  Branch (594:12): [True: 5.89k, False: 4]
  ------------------
  595|  5.89k|        if (gc_get_refs(gc)) {
  ------------------
  |  Branch (595:13): [True: 5.04k, False: 851]
  ------------------
  596|       |            /* gc is definitely reachable from outside the
  597|       |             * original 'young'.  Mark it as such, and traverse
  598|       |             * its pointers to find any other objects that may
  599|       |             * be directly reachable from it.  Note that the
  600|       |             * call to tp_traverse may append objects to young,
  601|       |             * so we have to wait until it returns to determine
  602|       |             * the next object to visit.
  603|       |             */
  604|  5.04k|            PyObject *op = FROM_GC(gc);
  ------------------
  |  |   53|  5.04k|#define FROM_GC(gc) _Py_FROM_GC(gc)
  ------------------
  605|  5.04k|            traverseproc traverse = Py_TYPE(op)->tp_traverse;
  ------------------
  |  |  213|  5.04k|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|  5.04k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  5.04k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  606|  5.04k|            _PyObject_ASSERT_WITH_MSG(op, gc_get_refs(gc) > 0,
  ------------------
  |  |  421|  5.04k|    _PyObject_ASSERT_FROM((obj), expr, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  |  414|  5.04k|    ((expr) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (414:6): [True: 5.04k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  415|  5.04k|      ? (void)(0) \
  |  |  |  |  416|  5.04k|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  |  |  ------------------
  ------------------
  607|  5.04k|                                      "refcount is too small");
  608|       |            // NOTE: visit_reachable may change gc->_gc_next when
  609|       |            // young->_gc_prev == gc.  Don't do gc = GC_NEXT(gc) before!
  610|  5.04k|            (void) traverse(op,
  611|  5.04k|                    visit_reachable,
  612|  5.04k|                    (void *)young);
  613|       |            // relink gc_prev to prev element.
  614|  5.04k|            _PyGCHead_SET_PREV(gc, prev);
  615|       |            // gc is not COLLECTING state after here.
  616|  5.04k|            gc_clear_collecting(gc);
  617|  5.04k|            prev = gc;
  618|  5.04k|        }
  619|    851|        else {
  620|       |            /* This *may* be unreachable.  To make progress,
  621|       |             * assume it is.  gc isn't directly reachable from
  622|       |             * any object we've already traversed, but may be
  623|       |             * reachable from an object we haven't gotten to yet.
  624|       |             * visit_reachable will eventually move gc back into
  625|       |             * young if that's so, and we'll see it again.
  626|       |             */
  627|       |            // Move gc to unreachable.
  628|       |            // No need to gc->next->prev = prev because it is single linked.
  629|    851|            prev->_gc_next = gc->_gc_next;
  630|       |
  631|       |            // We can't use gc_list_append() here because we use
  632|       |            // NEXT_MASK_UNREACHABLE here.
  633|    851|            PyGC_Head *last = GC_PREV(unreachable);
  ------------------
  |  |   29|    851|#define GC_PREV _PyGCHead_PREV
  ------------------
  634|       |            // NOTE: Since all objects in unreachable set has
  635|       |            // NEXT_MASK_UNREACHABLE flag, we set it unconditionally.
  636|       |            // But this may pollute the unreachable list head's 'next' pointer
  637|       |            // too. That's semantically senseless but expedient here - the
  638|       |            // damage is repaired when this function ends.
  639|    851|            last->_gc_next = (NEXT_MASK_UNREACHABLE | (uintptr_t)gc);
  ------------------
  |  |   50|    851|#define NEXT_MASK_UNREACHABLE  (1)
  ------------------
  640|    851|            _PyGCHead_SET_PREV(gc, last);
  641|    851|            gc->_gc_next = (NEXT_MASK_UNREACHABLE | (uintptr_t)unreachable);
  ------------------
  |  |   50|    851|#define NEXT_MASK_UNREACHABLE  (1)
  ------------------
  642|    851|            unreachable->_gc_prev = (uintptr_t)gc;
  643|    851|        }
  644|  5.89k|        gc = (PyGC_Head*)prev->_gc_next;
  645|  5.89k|    }
  646|       |    // young->_gc_prev must be last element remained in the list.
  647|      4|    young->_gc_prev = (uintptr_t)prev;
  648|       |    // don't let the pollution of the list head's next pointer leak
  649|      4|    unreachable->_gc_next &= ~NEXT_MASK_UNREACHABLE;
  ------------------
  |  |   50|      4|#define NEXT_MASK_UNREACHABLE  (1)
  ------------------
  650|      4|}
gc.c:visit_reachable:
  506|  16.2k|{
  507|  16.2k|    PyGC_Head *reachable = arg;
  508|  16.2k|    OBJECT_STAT_INC(object_visits);
  ------------------
  |  |   77|  16.2k|#define OBJECT_STAT_INC(name) ((void)0)
  ------------------
  509|  16.2k|    if (!_PyObject_IS_GC(op)) {
  ------------------
  |  Branch (509:9): [True: 10.4k, False: 5.79k]
  ------------------
  510|  10.4k|        return 0;
  511|  10.4k|    }
  512|       |
  513|  5.79k|    PyGC_Head *gc = AS_GC(op);
  ------------------
  |  |   52|  5.79k|#define AS_GC(op) _Py_AS_GC(op)
  ------------------
  514|  5.79k|    const Py_ssize_t gc_refs = gc_get_refs(gc);
  515|       |
  516|       |    // Ignore objects in other generation.
  517|       |    // This also skips objects "to the left" of the current position in
  518|       |    // move_unreachable's scan of the 'young' list - they've already been
  519|       |    // traversed, and no longer have the PREV_MASK_COLLECTING flag.
  520|  5.79k|    if (! gc_is_collecting(gc)) {
  ------------------
  |  Branch (520:9): [True: 1.86k, False: 3.93k]
  ------------------
  521|  1.86k|        return 0;
  522|  1.86k|    }
  523|       |    // It would be a logic error elsewhere if the collecting flag were set on
  524|       |    // an untracked object.
  525|  3.93k|    _PyObject_ASSERT(op, gc->_gc_next != 0);
  ------------------
  |  |  423|  3.93k|    _PyObject_ASSERT_WITH_MSG((obj), expr, NULL)
  |  |  ------------------
  |  |  |  |  421|  3.93k|    _PyObject_ASSERT_FROM((obj), expr, (msg), __FILE__, __LINE__, __func__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  414|  3.93k|    ((expr) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (414:6): [True: 3.93k, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  415|  3.93k|      ? (void)(0) \
  |  |  |  |  |  |  416|  3.93k|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  526|       |
  527|  3.93k|    if (gc->_gc_next & NEXT_MASK_UNREACHABLE) {
  ------------------
  |  |   50|  3.93k|#define NEXT_MASK_UNREACHABLE  (1)
  ------------------
  |  Branch (527:9): [True: 807, False: 3.12k]
  ------------------
  528|       |        /* This had gc_refs = 0 when move_unreachable got
  529|       |         * to it, but turns out it's reachable after all.
  530|       |         * Move it back to move_unreachable's 'young' list,
  531|       |         * and move_unreachable will eventually get to it
  532|       |         * again.
  533|       |         */
  534|       |        // Manually unlink gc from unreachable list because the list functions
  535|       |        // don't work right in the presence of NEXT_MASK_UNREACHABLE flags.
  536|    807|        PyGC_Head *prev = GC_PREV(gc);
  ------------------
  |  |   29|    807|#define GC_PREV _PyGCHead_PREV
  ------------------
  537|    807|        PyGC_Head *next = (PyGC_Head*)(gc->_gc_next & ~NEXT_MASK_UNREACHABLE);
  ------------------
  |  |   50|    807|#define NEXT_MASK_UNREACHABLE  (1)
  ------------------
  538|    807|        _PyObject_ASSERT(FROM_GC(prev),
  ------------------
  |  |  423|    807|    _PyObject_ASSERT_WITH_MSG((obj), expr, NULL)
  |  |  ------------------
  |  |  |  |  421|    807|    _PyObject_ASSERT_FROM((obj), expr, (msg), __FILE__, __LINE__, __func__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  414|    807|    ((expr) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (414:6): [True: 807, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  415|    807|      ? (void)(0) \
  |  |  |  |  |  |  416|    807|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  539|    807|                         prev->_gc_next & NEXT_MASK_UNREACHABLE);
  540|    807|        _PyObject_ASSERT(FROM_GC(next),
  ------------------
  |  |  423|    807|    _PyObject_ASSERT_WITH_MSG((obj), expr, NULL)
  |  |  ------------------
  |  |  |  |  421|    807|    _PyObject_ASSERT_FROM((obj), expr, (msg), __FILE__, __LINE__, __func__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  414|    807|    ((expr) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (414:6): [True: 807, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  415|    807|      ? (void)(0) \
  |  |  |  |  |  |  416|    807|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  541|    807|                         next->_gc_next & NEXT_MASK_UNREACHABLE);
  542|    807|        prev->_gc_next = gc->_gc_next;  // copy NEXT_MASK_UNREACHABLE
  543|    807|        _PyGCHead_SET_PREV(next, prev);
  544|       |
  545|    807|        gc_list_append(gc, reachable);
  546|    807|        gc_set_refs(gc, 1);
  547|    807|    }
  548|  3.12k|    else if (gc_refs == 0) {
  ------------------
  |  Branch (548:14): [True: 3.09k, False: 31]
  ------------------
  549|       |        /* This is in move_unreachable's 'young' list, but
  550|       |         * the traversal hasn't yet gotten to it.  All
  551|       |         * we need to do is tell move_unreachable that it's
  552|       |         * reachable.
  553|       |         */
  554|  3.09k|        gc_set_refs(gc, 1);
  555|  3.09k|    }
  556|       |    /* Else there's nothing to do.
  557|       |     * If gc_refs > 0, it must be in move_unreachable's 'young'
  558|       |     * list, and move_unreachable will eventually get to it.
  559|       |     */
  560|     31|    else {
  561|     31|        _PyObject_ASSERT_WITH_MSG(op, gc_refs > 0, "refcount is too small");
  ------------------
  |  |  421|     31|    _PyObject_ASSERT_FROM((obj), expr, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  |  414|     31|    ((expr) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (414:6): [True: 31, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  415|     31|      ? (void)(0) \
  |  |  |  |  416|     31|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  |  |  ------------------
  ------------------
  562|     31|    }
  563|  3.93k|    return 0;
  564|  3.93k|}
gc.c:gc_list_append:
  227|    807|{
  228|    807|    PyGC_Head *last = (PyGC_Head *)list->_gc_prev;
  229|       |
  230|       |    // last <-> node
  231|    807|    _PyGCHead_SET_PREV(node, last);
  232|    807|    _PyGCHead_SET_NEXT(last, node);
  233|       |
  234|       |    // node <-> list
  235|    807|    _PyGCHead_SET_NEXT(node, list);
  236|    807|    list->_gc_prev = (uintptr_t)node;
  237|    807|}
gc.c:gc_set_refs:
   78|  3.90k|{
   79|  3.90k|    g->_gc_prev = (g->_gc_prev & ~_PyGC_PREV_MASK)
  ------------------
  |  |  122|  3.90k|#define _PyGC_PREV_MASK            (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
  |  |  ------------------
  |  |  |  |  121|  3.90k|#define _PyGC_PREV_SHIFT           2
  |  |  ------------------
  ------------------
   80|  3.90k|        | ((uintptr_t)(refs) << _PyGC_PREV_SHIFT);
  ------------------
  |  |  121|  3.90k|#define _PyGC_PREV_SHIFT           2
  ------------------
   81|  3.90k|}
gc.c:gc_clear_collecting:
   66|  5.07k|{
   67|  5.07k|    g->_gc_prev &= ~PREV_MASK_COLLECTING;
  ------------------
  |  |   39|  5.07k|#define PREV_MASK_COLLECTING   _PyGC_PREV_MASK_COLLECTING
  |  |  ------------------
  |  |  |  |  119|  5.07k|#define _PyGC_PREV_MASK_COLLECTING ((uintptr_t)2)
  |  |  ------------------
  ------------------
   68|  5.07k|}
gc.c:untrack_tuples:
  666|      2|{
  667|      2|    PyGC_Head *gc = GC_NEXT(head);
  ------------------
  |  |   28|      2|#define GC_NEXT _PyGCHead_NEXT
  ------------------
  668|  5.05k|    while (gc != head) {
  ------------------
  |  Branch (668:12): [True: 5.04k, False: 2]
  ------------------
  669|  5.04k|        PyObject *op = FROM_GC(gc);
  ------------------
  |  |   53|  5.04k|#define FROM_GC(gc) _Py_FROM_GC(gc)
  ------------------
  670|  5.04k|        PyGC_Head *next = GC_NEXT(gc);
  ------------------
  |  |   28|  5.04k|#define GC_NEXT _PyGCHead_NEXT
  ------------------
  671|  5.04k|        if (PyTuple_CheckExact(op)) {
  ------------------
  |  |   28|  5.04k|#define PyTuple_CheckExact(op) Py_IS_TYPE((op), &PyTuple_Type)
  |  |  ------------------
  |  |  |  |  215|  5.04k|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|  5.04k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|  5.04k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 1.02k, False: 4.02k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  672|  1.02k|            _PyTuple_MaybeUntrack(op);
  673|  1.02k|        }
  674|  5.04k|        gc = next;
  675|  5.04k|    }
  676|      2|}
gc.c:move_legacy_finalizers:
  692|      2|{
  693|      2|    PyGC_Head *gc, *next;
  694|      2|    _PyObject_ASSERT(
  ------------------
  |  |  423|      2|    _PyObject_ASSERT_WITH_MSG((obj), expr, NULL)
  |  |  ------------------
  |  |  |  |  421|      2|    _PyObject_ASSERT_FROM((obj), expr, (msg), __FILE__, __LINE__, __func__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  414|      2|    ((expr) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (414:6): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  415|      2|      ? (void)(0) \
  |  |  |  |  |  |  416|      2|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  695|      2|        FROM_GC(unreachable),
  696|      2|        (unreachable->_gc_next & NEXT_MASK_UNREACHABLE) == 0);
  697|       |
  698|       |    /* March over unreachable.  Move objects with finalizers into
  699|       |     * `finalizers`.
  700|       |     */
  701|     24|    for (gc = GC_NEXT(unreachable); gc != unreachable; gc = next) {
  ------------------
  |  |   28|      2|#define GC_NEXT _PyGCHead_NEXT
  ------------------
  |  Branch (701:37): [True: 22, False: 2]
  ------------------
  702|     22|        PyObject *op = FROM_GC(gc);
  ------------------
  |  |   53|     22|#define FROM_GC(gc) _Py_FROM_GC(gc)
  ------------------
  703|       |
  704|     22|        _PyObject_ASSERT(op, gc->_gc_next & NEXT_MASK_UNREACHABLE);
  ------------------
  |  |  423|     22|    _PyObject_ASSERT_WITH_MSG((obj), expr, NULL)
  |  |  ------------------
  |  |  |  |  421|     22|    _PyObject_ASSERT_FROM((obj), expr, (msg), __FILE__, __LINE__, __func__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  414|     22|    ((expr) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (414:6): [True: 22, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  415|     22|      ? (void)(0) \
  |  |  |  |  |  |  416|     22|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  705|     22|        gc->_gc_next &= ~NEXT_MASK_UNREACHABLE;
  ------------------
  |  |   50|     22|#define NEXT_MASK_UNREACHABLE  (1)
  ------------------
  706|     22|        next = (PyGC_Head*)gc->_gc_next;
  707|       |
  708|     22|        if (has_legacy_finalizer(op)) {
  ------------------
  |  Branch (708:13): [True: 0, False: 22]
  ------------------
  709|      0|            gc_clear_collecting(gc);
  710|      0|            gc_list_move(gc, finalizers);
  711|      0|        }
  712|     22|    }
  713|      2|}
gc.c:has_legacy_finalizer:
  681|     22|{
  682|     22|    return Py_TYPE(op)->tp_del != NULL;
  ------------------
  |  |  213|     22|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     22|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     22|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  683|     22|}
gc.c:gc_list_move:
  258|     23|{
  259|       |    /* Unlink from current list. */
  260|     23|    PyGC_Head *from_prev = GC_PREV(node);
  ------------------
  |  |   29|     23|#define GC_PREV _PyGCHead_PREV
  ------------------
  261|     23|    PyGC_Head *from_next = GC_NEXT(node);
  ------------------
  |  |   28|     23|#define GC_NEXT _PyGCHead_NEXT
  ------------------
  262|     23|    _PyGCHead_SET_NEXT(from_prev, from_next);
  263|     23|    _PyGCHead_SET_PREV(from_next, from_prev);
  264|       |
  265|       |    /* Relink at end of new list. */
  266|       |    // list must not have flags.  So we can skip macros.
  267|     23|    PyGC_Head *to_prev = (PyGC_Head*)list->_gc_prev;
  268|     23|    _PyGCHead_SET_PREV(node, to_prev);
  269|     23|    _PyGCHead_SET_NEXT(to_prev, node);
  270|     23|    list->_gc_prev = (uintptr_t)node;
  271|     23|    _PyGCHead_SET_NEXT(node, list);
  272|     23|}
gc.c:move_legacy_finalizer_reachable:
  756|      2|{
  757|      2|    traverseproc traverse;
  758|      2|    PyGC_Head *gc = GC_NEXT(finalizers);
  ------------------
  |  |   28|      2|#define GC_NEXT _PyGCHead_NEXT
  ------------------
  759|      2|    for (; gc != finalizers; gc = GC_NEXT(gc)) {
  ------------------
  |  |   28|      0|#define GC_NEXT _PyGCHead_NEXT
  ------------------
  |  Branch (759:12): [True: 0, False: 2]
  ------------------
  760|       |        /* Note that the finalizers list may grow during this. */
  761|      0|        traverse = Py_TYPE(FROM_GC(gc))->tp_traverse;
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  762|      0|        (void) traverse(FROM_GC(gc),
  ------------------
  |  |   53|      0|#define FROM_GC(gc) _Py_FROM_GC(gc)
  ------------------
  763|      0|                        visit_move,
  764|      0|                        (void *)finalizers);
  765|      0|    }
  766|      2|}
gc.c:handle_weakref_callbacks:
  809|      2|{
  810|      2|    PyGC_Head *gc;
  811|      2|    PyGC_Head wrcb_to_call;     /* weakrefs with callbacks to call */
  812|      2|    PyGC_Head *next;
  813|      2|    int num_freed = 0;
  814|       |
  815|      2|    gc_list_init(&wrcb_to_call);
  816|       |
  817|       |    /* Find all weakrefs with callbacks and move into `wrcb_to_call` if the
  818|       |     * callback needs to be invoked. We make another pass over wrcb_to_call,
  819|       |     * invoking callbacks, after this pass completes.
  820|       |     */
  821|     24|    for (gc = GC_NEXT(unreachable); gc != unreachable; gc = next) {
  ------------------
  |  |   28|      2|#define GC_NEXT _PyGCHead_NEXT
  ------------------
  |  Branch (821:37): [True: 22, False: 2]
  ------------------
  822|     22|        PyWeakReference **wrlist;
  823|       |
  824|     22|        PyObject *op = FROM_GC(gc);
  ------------------
  |  |   53|     22|#define FROM_GC(gc) _Py_FROM_GC(gc)
  ------------------
  825|     22|        next = GC_NEXT(gc);
  ------------------
  |  |   28|     22|#define GC_NEXT _PyGCHead_NEXT
  ------------------
  826|       |
  827|     22|        if (! _PyType_SUPPORTS_WEAKREFS(Py_TYPE(op))) {
  ------------------
  |  |  213|     22|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     22|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     22|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (827:13): [True: 9, False: 13]
  ------------------
  828|      9|            continue;
  829|      9|        }
  830|       |
  831|       |        /* It supports weakrefs.  Does it have any?
  832|       |         *
  833|       |         * This is never triggered for static types so we can avoid the
  834|       |         * (slightly) more costly _PyObject_GET_WEAKREFS_LISTPTR().
  835|       |         */
  836|     13|        wrlist = _PyObject_GET_WEAKREFS_LISTPTR_FROM_OFFSET(op);
  837|       |
  838|       |        /* `op` may have some weakrefs.  March over the list and move the
  839|       |         * weakrefs with callbacks that must be called into wrcb_to_call.
  840|       |         */
  841|     13|        PyWeakReference *next_wr;
  842|     13|        for (PyWeakReference *wr = *wrlist; wr != NULL; wr = next_wr) {
  ------------------
  |  Branch (842:45): [True: 0, False: 13]
  ------------------
  843|       |            // Get the next list element to get iterator progress if we omit
  844|       |            // clearing of the weakref (because _PyWeakref_ClearRef changes
  845|       |            // next pointer in the wrlist).
  846|      0|            next_wr = wr->wr_next;
  847|       |
  848|      0|            if (wr->wr_callback == NULL) {
  ------------------
  |  Branch (848:17): [True: 0, False: 0]
  ------------------
  849|       |                /* no callback */
  850|      0|                continue;
  851|      0|            }
  852|       |
  853|       |            // Clear the weakref.  See the comments above this function for
  854|       |            // reasons why we need to clear weakrefs that have callbacks.
  855|       |            // Note that _PyWeakref_ClearRef clears the weakref but leaves the
  856|       |            // callback pointer intact.  Obscure: it also changes *wrlist.
  857|      0|            _PyObject_ASSERT((PyObject *)wr, wr->wr_object == op);
  ------------------
  |  |  423|      0|    _PyObject_ASSERT_WITH_MSG((obj), expr, NULL)
  |  |  ------------------
  |  |  |  |  421|      0|    _PyObject_ASSERT_FROM((obj), expr, (msg), __FILE__, __LINE__, __func__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  414|      0|    ((expr) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (414:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  415|      0|      ? (void)(0) \
  |  |  |  |  |  |  416|      0|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  858|      0|            _PyWeakref_ClearRef(wr);
  859|      0|            _PyObject_ASSERT((PyObject *)wr, wr->wr_object == Py_None);
  ------------------
  |  |  423|      0|    _PyObject_ASSERT_WITH_MSG((obj), expr, NULL)
  |  |  ------------------
  |  |  |  |  421|      0|    _PyObject_ASSERT_FROM((obj), expr, (msg), __FILE__, __LINE__, __func__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  414|      0|    ((expr) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (414:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  415|      0|      ? (void)(0) \
  |  |  |  |  |  |  416|      0|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  860|       |
  861|       |            /* Headache time.  `op` is going away, and is weakly referenced by
  862|       |             * `wr`, which has a callback.  Should the callback be invoked?  If wr
  863|       |             * is also trash, no:
  864|       |             *
  865|       |             * 1. There's no need to call it.  The object and the weakref are
  866|       |             *    both going away, so it's legitimate to pretend the weakref is
  867|       |             *    going away first.  The user has to ensure a weakref outlives its
  868|       |             *    referent if they want a guarantee that the wr callback will get
  869|       |             *    invoked.
  870|       |             *
  871|       |             * 2. It may be catastrophic to call it.  If the callback is also in
  872|       |             *    cyclic trash (CT), then although the CT is unreachable from
  873|       |             *    outside the current generation, CT may be reachable from the
  874|       |             *    callback.  Then the callback could resurrect insane objects.
  875|       |             *
  876|       |             * Since the callback is never needed and may be unsafe in this
  877|       |             * case, wr is simply left in the unreachable set.  Note that
  878|       |             * clear_weakrefs() will ensure its callback will not trigger
  879|       |             * inside delete_garbage().
  880|       |             *
  881|       |             * OTOH, if wr isn't part of CT, we should invoke the callback:  the
  882|       |             * weakref outlived the trash.  Note that since wr isn't CT in this
  883|       |             * case, its callback can't be CT either -- wr acted as an external
  884|       |             * root to this generation, and therefore its callback did too.  So
  885|       |             * nothing in CT is reachable from the callback either, so it's hard
  886|       |             * to imagine how calling it later could create a problem for us.  wr
  887|       |             * is moved to wrcb_to_call in this case.
  888|       |             */
  889|      0|            if (gc_is_collecting(AS_GC((PyObject *)wr))) {
  ------------------
  |  |   52|      0|#define AS_GC(op) _Py_AS_GC(op)
  ------------------
  |  Branch (889:17): [True: 0, False: 0]
  ------------------
  890|      0|                continue;
  891|      0|            }
  892|       |
  893|       |            /* Create a new reference so that wr can't go away
  894|       |             * before we can process it again.
  895|       |             */
  896|      0|            Py_INCREF(wr);
  ------------------
  |  |  310|      0|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  897|       |
  898|       |            /* Move wr to wrcb_to_call, for the next pass. */
  899|      0|            PyGC_Head *wrasgc = AS_GC((PyObject *)wr);
  ------------------
  |  |   52|      0|#define AS_GC(op) _Py_AS_GC(op)
  ------------------
  900|       |            // wrasgc is reachable, but next isn't, so they can't be the same
  901|      0|            _PyObject_ASSERT((PyObject *)wr, wrasgc != next);
  ------------------
  |  |  423|      0|    _PyObject_ASSERT_WITH_MSG((obj), expr, NULL)
  |  |  ------------------
  |  |  |  |  421|      0|    _PyObject_ASSERT_FROM((obj), expr, (msg), __FILE__, __LINE__, __func__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  414|      0|    ((expr) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (414:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  415|      0|      ? (void)(0) \
  |  |  |  |  |  |  416|      0|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  902|      0|            gc_list_move(wrasgc, &wrcb_to_call);
  903|      0|        }
  904|     13|    }
  905|       |
  906|       |    /* Invoke the callbacks we decided to honor.  It's safe to invoke them
  907|       |     * because they can't reference unreachable objects.
  908|       |     */
  909|      2|    while (! gc_list_is_empty(&wrcb_to_call)) {
  ------------------
  |  Branch (909:12): [True: 0, False: 2]
  ------------------
  910|      0|        PyObject *temp;
  911|      0|        PyObject *callback;
  912|       |
  913|      0|        gc = (PyGC_Head*)wrcb_to_call._gc_next;
  914|      0|        PyObject *op = FROM_GC(gc);
  ------------------
  |  |   53|      0|#define FROM_GC(gc) _Py_FROM_GC(gc)
  ------------------
  915|      0|        _PyObject_ASSERT(op, PyWeakref_Check(op));
  ------------------
  |  |  423|      0|    _PyObject_ASSERT_WITH_MSG((obj), expr, NULL)
  |  |  ------------------
  |  |  |  |  421|      0|    _PyObject_ASSERT_FROM((obj), expr, (msg), __FILE__, __LINE__, __func__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  414|      0|    ((expr) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (414:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (414:7): [True: 0, False: 0]
  |  |  |  |  |  |  |  Branch (414:7): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  415|      0|      ? (void)(0) \
  |  |  |  |  |  |  416|      0|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  916|      0|        PyWeakReference *wr = (PyWeakReference *)op;
  917|      0|        callback = wr->wr_callback;
  918|      0|        _PyObject_ASSERT(op, callback != NULL);
  ------------------
  |  |  423|      0|    _PyObject_ASSERT_WITH_MSG((obj), expr, NULL)
  |  |  ------------------
  |  |  |  |  421|      0|    _PyObject_ASSERT_FROM((obj), expr, (msg), __FILE__, __LINE__, __func__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  414|      0|    ((expr) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (414:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  415|      0|      ? (void)(0) \
  |  |  |  |  |  |  416|      0|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  919|       |
  920|       |        /* copy-paste of weakrefobject.c's handle_callback() */
  921|      0|        temp = PyObject_CallOneArg(callback, (PyObject *)wr);
  922|      0|        if (temp == NULL) {
  ------------------
  |  Branch (922:13): [True: 0, False: 0]
  ------------------
  923|      0|            PyErr_FormatUnraisable("Exception ignored on "
  924|      0|                                   "calling weakref callback %R", callback);
  925|      0|        }
  926|      0|        else {
  927|      0|            Py_DECREF(temp);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  928|      0|        }
  929|       |
  930|       |        /* Give up the reference we created in the first pass.  When
  931|       |         * op's refcount hits 0 (which it may or may not do right now),
  932|       |         * op's tp_dealloc will decref op->wr_callback too.  Note
  933|       |         * that the refcount probably will hit 0 now, and because this
  934|       |         * weakref was reachable to begin with, gc didn't already
  935|       |         * add it to its count of freed objects.  Example:  a reachable
  936|       |         * weak value dict maps some key to this reachable weakref.
  937|       |         * The callback removes this key->weakref mapping from the
  938|       |         * dict, leaving no other references to the weakref (excepting
  939|       |         * ours).
  940|       |         */
  941|      0|        Py_DECREF(op);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  942|      0|        if (wrcb_to_call._gc_next == (uintptr_t)gc) {
  ------------------
  |  Branch (942:13): [True: 0, False: 0]
  ------------------
  943|       |            /* object is still alive -- move it */
  944|      0|            gc_list_move(gc, old);
  945|      0|        }
  946|      0|        else {
  947|      0|            ++num_freed;
  948|      0|        }
  949|      0|    }
  950|       |
  951|      2|    return num_freed;
  952|      2|}
gc.c:finalize_garbage:
 1047|      2|{
 1048|      2|    destructor finalize;
 1049|      2|    PyGC_Head seen;
 1050|       |
 1051|       |    /* While we're going through the loop, `finalize(op)` may cause op, or
 1052|       |     * other objects, to be reclaimed via refcounts falling to zero.  So
 1053|       |     * there's little we can rely on about the structure of the input
 1054|       |     * `collectable` list across iterations.  For safety, we always take the
 1055|       |     * first object in that list and move it to a temporary `seen` list.
 1056|       |     * If objects vanish from the `collectable` and `seen` lists we don't
 1057|       |     * care.
 1058|       |     */
 1059|      2|    gc_list_init(&seen);
 1060|       |
 1061|     24|    while (!gc_list_is_empty(collectable)) {
  ------------------
  |  Branch (1061:12): [True: 22, False: 2]
  ------------------
 1062|     22|        PyGC_Head *gc = GC_NEXT(collectable);
  ------------------
  |  |   28|     22|#define GC_NEXT _PyGCHead_NEXT
  ------------------
 1063|     22|        PyObject *op = FROM_GC(gc);
  ------------------
  |  |   53|     22|#define FROM_GC(gc) _Py_FROM_GC(gc)
  ------------------
 1064|     22|        gc_list_move(gc, &seen);
 1065|     22|        if (!_PyGC_FINALIZED(op) &&
  ------------------
  |  Branch (1065:13): [True: 22, False: 0]
  ------------------
 1066|     22|            (finalize = Py_TYPE(op)->tp_finalize) != NULL)
  ------------------
  |  |  213|     22|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     22|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     22|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1066:13): [True: 0, False: 22]
  ------------------
 1067|      0|        {
 1068|      0|            _PyGC_SET_FINALIZED(op);
 1069|      0|            Py_INCREF(op);
  ------------------
  |  |  310|      0|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1070|      0|            finalize(op);
 1071|      0|            assert(!_PyErr_Occurred(tstate));
  ------------------
  |  Branch (1071:13): [True: 0, False: 0]
  ------------------
 1072|      0|            Py_DECREF(op);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1073|      0|        }
 1074|     22|    }
 1075|      2|    gc_list_merge(&seen, collectable);
 1076|      2|}
gc.c:handle_resurrected_objects:
 1237|      2|{
 1238|       |    // Remove the PREV_MASK_COLLECTING from unreachable
 1239|       |    // to prepare it for a new call to 'deduce_unreachable'
 1240|      2|    gc_list_clear_collecting(unreachable);
 1241|       |
 1242|       |    // After the call to deduce_unreachable, the 'still_unreachable' set will
 1243|       |    // have the PREV_MARK_COLLECTING set, but the objects are going to be
 1244|       |    // removed so we can skip the expense of clearing the flag.
 1245|      2|    PyGC_Head* resurrected = unreachable;
 1246|      2|    deduce_unreachable(resurrected, still_unreachable);
 1247|      2|    clear_unreachable_mask(still_unreachable);
 1248|       |
 1249|       |    // Move the resurrected objects to the old generation for future collection.
 1250|      2|    gc_list_merge(resurrected, old_generation);
 1251|      2|}
gc.c:gc_list_clear_collecting:
  309|      2|{
  310|      2|    PyGC_Head *gc;
  311|     24|    for (gc = GC_NEXT(collectable); gc != collectable; gc = GC_NEXT(gc)) {
  ------------------
  |  |   28|      2|#define GC_NEXT _PyGCHead_NEXT
  ------------------
                  for (gc = GC_NEXT(collectable); gc != collectable; gc = GC_NEXT(gc)) {
  ------------------
  |  |   28|     22|#define GC_NEXT _PyGCHead_NEXT
  ------------------
  |  Branch (311:37): [True: 22, False: 2]
  ------------------
  312|     22|        gc_clear_collecting(gc);
  313|     22|    }
  314|      2|}
gc.c:clear_unreachable_mask:
  717|      2|{
  718|       |    /* Check that the list head does not have the unreachable bit set */
  719|      2|    _PyObject_ASSERT(
  ------------------
  |  |  423|      2|    _PyObject_ASSERT_WITH_MSG((obj), expr, NULL)
  |  |  ------------------
  |  |  |  |  421|      2|    _PyObject_ASSERT_FROM((obj), expr, (msg), __FILE__, __LINE__, __func__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  414|      2|    ((expr) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (414:6): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  415|      2|      ? (void)(0) \
  |  |  |  |  |  |  416|      2|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  720|      2|        FROM_GC(unreachable),
  721|      2|        ((uintptr_t)unreachable & NEXT_MASK_UNREACHABLE) == 0);
  722|      2|    _PyObject_ASSERT(
  ------------------
  |  |  423|      2|    _PyObject_ASSERT_WITH_MSG((obj), expr, NULL)
  |  |  ------------------
  |  |  |  |  421|      2|    _PyObject_ASSERT_FROM((obj), expr, (msg), __FILE__, __LINE__, __func__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  414|      2|    ((expr) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (414:6): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  415|      2|      ? (void)(0) \
  |  |  |  |  |  |  416|      2|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  723|      2|        FROM_GC(unreachable),
  724|      2|        (unreachable->_gc_next & NEXT_MASK_UNREACHABLE) == 0);
  725|       |
  726|      2|    PyGC_Head *gc, *next;
  727|     24|    for (gc = GC_NEXT(unreachable); gc != unreachable; gc = next) {
  ------------------
  |  |   28|      2|#define GC_NEXT _PyGCHead_NEXT
  ------------------
  |  Branch (727:37): [True: 22, False: 2]
  ------------------
  728|     22|        _PyObject_ASSERT((PyObject*)FROM_GC(gc), gc->_gc_next & NEXT_MASK_UNREACHABLE);
  ------------------
  |  |  423|     22|    _PyObject_ASSERT_WITH_MSG((obj), expr, NULL)
  |  |  ------------------
  |  |  |  |  421|     22|    _PyObject_ASSERT_FROM((obj), expr, (msg), __FILE__, __LINE__, __func__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  414|     22|    ((expr) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (414:6): [True: 22, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  415|     22|      ? (void)(0) \
  |  |  |  |  |  |  416|     22|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  729|     22|        gc->_gc_next &= ~NEXT_MASK_UNREACHABLE;
  ------------------
  |  |   50|     22|#define NEXT_MASK_UNREACHABLE  (1)
  ------------------
  730|     22|        next = (PyGC_Head*)gc->_gc_next;
  731|     22|    }
  732|      2|    validate_list(unreachable, collecting_set_unreachable_clear);
  ------------------
  |  |  387|      2|#define validate_list(x, y) do{}while(0)
  |  |  ------------------
  |  |  |  Branch (387:39): [Folded, False: 2]
  |  |  ------------------
  ------------------
  733|      2|}
gc.c:clear_weakrefs:
  960|      2|{
  961|      2|    PyGC_Head *gc;
  962|      2|    PyGC_Head *next;
  963|       |
  964|     24|    for (gc = GC_NEXT(unreachable); gc != unreachable; gc = next) {
  ------------------
  |  |   28|      2|#define GC_NEXT _PyGCHead_NEXT
  ------------------
  |  Branch (964:37): [True: 22, False: 2]
  ------------------
  965|     22|        PyWeakReference **wrlist;
  966|       |
  967|     22|        PyObject *op = FROM_GC(gc);
  ------------------
  |  |   53|     22|#define FROM_GC(gc) _Py_FROM_GC(gc)
  ------------------
  968|     22|        next = GC_NEXT(gc);
  ------------------
  |  |   28|     22|#define GC_NEXT _PyGCHead_NEXT
  ------------------
  969|       |
  970|     22|        if (PyWeakref_Check(op)) {
  ------------------
  |  |   23|     22|        (PyWeakref_CheckRef(op) || PyWeakref_CheckProxy(op))
  |  |  ------------------
  |  |  |  |   15|     22|#define PyWeakref_CheckRef(op) PyObject_TypeCheck((op), &_PyWeakref_RefType)
  |  |  |  |  ------------------
  |  |  |  |  |  |  378|     44|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|     22|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     22|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (378:40): [True: 0, False: 22]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       (PyWeakref_CheckRef(op) || PyWeakref_CheckProxy(op))
  |  |  ------------------
  |  |  |  |   19|     22|        (Py_IS_TYPE((op), &_PyWeakref_ProxyType) \
  |  |  |  |  ------------------
  |  |  |  |  |  |  215|     44|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|     22|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     22|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (215:32): [True: 0, False: 22]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   20|     22|         || Py_IS_TYPE((op), &_PyWeakref_CallableProxyType))
  |  |  |  |  ------------------
  |  |  |  |  |  |  215|     22|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|     22|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     22|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (215:32): [True: 0, False: 22]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  971|       |            /* A weakref inside the unreachable set is always cleared. See
  972|       |             * the comments above handle_weakref_callbacks() for why these
  973|       |             * must be cleared.
  974|       |             */
  975|      0|            _PyWeakref_ClearRef((PyWeakReference *)op);
  976|      0|        }
  977|       |
  978|     22|        if (! _PyType_SUPPORTS_WEAKREFS(Py_TYPE(op))) {
  ------------------
  |  |  213|     22|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     22|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     22|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (978:13): [True: 9, False: 13]
  ------------------
  979|      9|            continue;
  980|      9|        }
  981|       |
  982|       |        /* It supports weakrefs.  Does it have any?
  983|       |         *
  984|       |         * This is never triggered for static types so we can avoid the
  985|       |         * (slightly) more costly _PyObject_GET_WEAKREFS_LISTPTR().
  986|       |         */
  987|     13|        wrlist = _PyObject_GET_WEAKREFS_LISTPTR_FROM_OFFSET(op);
  988|       |
  989|       |        /* `op` may have some weakrefs.  March over the list, clear
  990|       |         * all the weakrefs.
  991|       |         */
  992|     13|        for (PyWeakReference *wr = *wrlist; wr != NULL; wr = *wrlist) {
  ------------------
  |  Branch (992:45): [True: 0, False: 13]
  ------------------
  993|       |            /* _PyWeakref_ClearRef clears the weakref but leaves
  994|       |             * the callback pointer intact.  Obscure:  it also
  995|       |             * changes *wrlist.
  996|       |             */
  997|      0|            _PyObject_ASSERT((PyObject *)wr, wr->wr_object == op);
  ------------------
  |  |  423|      0|    _PyObject_ASSERT_WITH_MSG((obj), expr, NULL)
  |  |  ------------------
  |  |  |  |  421|      0|    _PyObject_ASSERT_FROM((obj), expr, (msg), __FILE__, __LINE__, __func__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  414|      0|    ((expr) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (414:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  415|      0|      ? (void)(0) \
  |  |  |  |  |  |  416|      0|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  998|      0|            _PyWeakref_ClearRef(wr);
  999|      0|            _PyObject_ASSERT((PyObject *)wr, wr->wr_object == Py_None);
  ------------------
  |  |  423|      0|    _PyObject_ASSERT_WITH_MSG((obj), expr, NULL)
  |  |  ------------------
  |  |  |  |  421|      0|    _PyObject_ASSERT_FROM((obj), expr, (msg), __FILE__, __LINE__, __func__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  414|      0|    ((expr) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (414:6): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  415|      0|      ? (void)(0) \
  |  |  |  |  |  |  416|      0|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1000|      0|        }
 1001|     13|    }
 1002|      2|}
gc.c:delete_garbage:
 1085|      2|{
 1086|      2|    assert(!_PyErr_Occurred(tstate));
  ------------------
  |  Branch (1086:5): [True: 2, False: 0]
  ------------------
 1087|       |
 1088|      4|    while (!gc_list_is_empty(collectable)) {
  ------------------
  |  Branch (1088:12): [True: 2, False: 2]
  ------------------
 1089|      2|        PyGC_Head *gc = GC_NEXT(collectable);
  ------------------
  |  |   28|      2|#define GC_NEXT _PyGCHead_NEXT
  ------------------
 1090|      2|        PyObject *op = FROM_GC(gc);
  ------------------
  |  |   53|      2|#define FROM_GC(gc) _Py_FROM_GC(gc)
  ------------------
 1091|       |
 1092|      2|        _PyObject_ASSERT_WITH_MSG(op, Py_REFCNT(op) > 0,
  ------------------
  |  |  421|      2|    _PyObject_ASSERT_FROM((obj), expr, (msg), __FILE__, __LINE__, __func__)
  |  |  ------------------
  |  |  |  |  414|      2|    ((expr) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (414:6): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  415|      2|      ? (void)(0) \
  |  |  |  |  416|      2|      : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  132|      0|#define Py_STRINGIFY(x) _Py_XSTRINGIFY(x)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  126|      0|#define _Py_XSTRINGIFY(x) #x
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  417|      0|                               (msg), (filename), (lineno), (func)))
  |  |  ------------------
  ------------------
 1093|      2|                                  "refcount is too small");
 1094|       |
 1095|      2|        if (gcstate->debug & _PyGC_DEBUG_SAVEALL) {
  ------------------
  |  |  128|      2|#define _PyGC_DEBUG_SAVEALL           (1<<5) /* save all garbage in gc.garbage */
  ------------------
  |  Branch (1095:13): [True: 0, False: 2]
  ------------------
 1096|      0|            assert(gcstate->garbage != NULL);
  ------------------
  |  Branch (1096:13): [True: 0, False: 0]
  ------------------
 1097|      0|            if (PyList_Append(gcstate->garbage, op) < 0) {
  ------------------
  |  Branch (1097:17): [True: 0, False: 0]
  ------------------
 1098|      0|                _PyErr_Clear(tstate);
 1099|      0|            }
 1100|      0|        }
 1101|      2|        else {
 1102|      2|            inquiry clear;
 1103|      2|            if ((clear = Py_TYPE(op)->tp_clear) != NULL) {
  ------------------
  |  |  213|      2|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1103:17): [True: 2, False: 0]
  ------------------
 1104|      2|                Py_INCREF(op);
  ------------------
  |  |  310|      2|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1105|      2|                (void) clear(op);
 1106|      2|                if (_PyErr_Occurred(tstate)) {
  ------------------
  |  Branch (1106:21): [True: 0, False: 2]
  ------------------
 1107|      0|                    PyErr_FormatUnraisable("Exception ignored in tp_clear of %s",
 1108|      0|                                           Py_TYPE(op)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1109|      0|                }
 1110|      2|                Py_DECREF(op);
  ------------------
  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1111|      2|            }
 1112|      2|        }
 1113|      2|        if (GC_NEXT(collectable) == gc) {
  ------------------
  |  |   28|      2|#define GC_NEXT _PyGCHead_NEXT
  ------------------
  |  Branch (1113:13): [True: 1, False: 1]
  ------------------
 1114|       |            /* object is still alive, move it, it may die later */
 1115|      1|            gc_clear_collecting(gc);
 1116|      1|            gc_list_move(gc, old);
 1117|      1|        }
 1118|      2|    }
 1119|      2|}
gc.c:handle_legacy_finalizers:
 1022|      2|{
 1023|      2|    assert(!_PyErr_Occurred(tstate));
  ------------------
  |  Branch (1023:5): [True: 2, False: 0]
  ------------------
 1024|      2|    assert(gcstate->garbage != NULL);
  ------------------
  |  Branch (1024:5): [True: 2, False: 0]
  ------------------
 1025|       |
 1026|      2|    PyGC_Head *gc = GC_NEXT(finalizers);
  ------------------
  |  |   28|      2|#define GC_NEXT _PyGCHead_NEXT
  ------------------
 1027|      2|    for (; gc != finalizers; gc = GC_NEXT(gc)) {
  ------------------
  |  |   28|      0|#define GC_NEXT _PyGCHead_NEXT
  ------------------
  |  Branch (1027:12): [True: 0, False: 2]
  ------------------
 1028|      0|        PyObject *op = FROM_GC(gc);
  ------------------
  |  |   53|      0|#define FROM_GC(gc) _Py_FROM_GC(gc)
  ------------------
 1029|       |
 1030|      0|        if ((gcstate->debug & _PyGC_DEBUG_SAVEALL) || has_legacy_finalizer(op)) {
  ------------------
  |  |  128|      0|#define _PyGC_DEBUG_SAVEALL           (1<<5) /* save all garbage in gc.garbage */
  ------------------
  |  Branch (1030:13): [True: 0, False: 0]
  |  Branch (1030:55): [True: 0, False: 0]
  ------------------
 1031|      0|            if (PyList_Append(gcstate->garbage, op) < 0) {
  ------------------
  |  Branch (1031:17): [True: 0, False: 0]
  ------------------
 1032|      0|                _PyErr_Clear(tstate);
 1033|      0|                break;
 1034|      0|            }
 1035|      0|        }
 1036|      0|    }
 1037|       |
 1038|      2|    gc_list_merge(finalizers, old);
 1039|      2|}
gc.c:add_stats:
 1401|      2|{
 1402|      2|    struct gc_generation_stats *prev_stats = gc_get_prev_stats(gcstate, gen);
 1403|      2|    struct gc_generation_stats *cur_stats = gc_get_stats(gcstate, gen);
 1404|       |
 1405|      2|    memcpy(cur_stats, prev_stats, sizeof(struct gc_generation_stats));
 1406|       |
 1407|      2|    cur_stats->ts_start = stats->ts_start;
 1408|      2|    cur_stats->collections += 1;
 1409|      2|    cur_stats->collected += stats->collected;
 1410|      2|    cur_stats->uncollectable += stats->uncollectable;
 1411|      2|    cur_stats->candidates += stats->candidates;
 1412|       |
 1413|      2|    cur_stats->duration += stats->duration;
 1414|      2|    cur_stats->heap_size = stats->heap_size;
 1415|       |    /* Publish ts_stop last so remote readers do not select a partially
 1416|       |       updated stats record as the latest collection. */
 1417|      2|    cur_stats->ts_stop = stats->ts_stop;
 1418|      2|}
gc.c:gc_get_prev_stats:
 1386|      2|{
 1387|      2|    if (gen == 0) {
  ------------------
  |  Branch (1387:9): [True: 2, False: 0]
  ------------------
 1388|      2|        struct gc_young_stats_buffer *buffer = &gcstate->generation_stats->young;
 1389|      2|        struct gc_generation_stats *stats = &buffer->items[buffer->index];
 1390|      2|        return stats;
 1391|      2|    }
 1392|      0|    else {
 1393|      0|        struct gc_old_stats_buffer *buffer = &gcstate->generation_stats->old[gen - 1];
 1394|      0|        struct gc_generation_stats *stats = &buffer->items[buffer->index];
 1395|      0|        return stats;
 1396|      0|    }
 1397|      2|}
gc.c:gc_get_stats:
 1369|      2|{
 1370|      2|    if (gen == 0) {
  ------------------
  |  Branch (1370:9): [True: 2, False: 0]
  ------------------
 1371|      2|        struct gc_young_stats_buffer *buffer = &gcstate->generation_stats->young;
 1372|      2|        buffer->index = (buffer->index + 1) % GC_YOUNG_STATS_SIZE;
  ------------------
  |  |  202|      2|#define GC_YOUNG_STATS_SIZE 11
  ------------------
 1373|      2|        struct gc_generation_stats *stats = &buffer->items[buffer->index];
 1374|      2|        return stats;
 1375|      2|    }
 1376|      0|    else {
 1377|      0|        struct gc_old_stats_buffer *buffer = &gcstate->generation_stats->old[gen - 1];
 1378|      0|        buffer->index = (buffer->index + 1) % GC_OLD_STATS_SIZE;
  ------------------
  |  |  203|      0|#define GC_OLD_STATS_SIZE 3
  ------------------
 1379|      0|        struct gc_generation_stats *stats = &buffer->items[buffer->index];
 1380|      0|        return stats;
 1381|      0|    }
 1382|      2|}
gc.c:gc_alloc:
 2005|  4.95k|{
 2006|  4.95k|    PyThreadState *tstate = _PyThreadState_GET();
 2007|  4.95k|    if (basicsize > PY_SSIZE_T_MAX - presize) {
  ------------------
  |  |  137|  4.95k|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (2007:9): [True: 0, False: 4.95k]
  ------------------
 2008|      0|        return _PyErr_NoMemory(tstate);
 2009|      0|    }
 2010|  4.95k|    size_t size = presize + basicsize;
 2011|  4.95k|    char *mem = _PyObject_MallocWithType(tp, size);
 2012|  4.95k|    if (mem == NULL) {
  ------------------
  |  Branch (2012:9): [True: 0, False: 4.95k]
  ------------------
 2013|      0|        return _PyErr_NoMemory(tstate);
 2014|      0|    }
 2015|  4.95k|    ((PyObject **)mem)[0] = NULL;
 2016|       |    ((PyObject **)mem)[1] = NULL;
 2017|  4.95k|    PyObject *op = (PyObject *)(mem + presize);
 2018|  4.95k|    _PyObject_GC_Link(op);
 2019|  4.95k|    return op;
 2020|  4.95k|}

PyArg_ParseTuple:
  104|    110|{
  105|    110|    int retval;
  106|    110|    va_list va;
  107|       |
  108|    110|    va_start(va, format);
  109|    110|    retval = vgetargs1(args, format, &va, 0);
  110|       |    va_end(va);
  111|    110|    return retval;
  112|    110|}
PyArg_ParseTupleAndKeywords:
 1426|     39|{
 1427|     39|    int retval;
 1428|     39|    va_list va;
 1429|       |
 1430|     39|    if ((args == NULL || !PyTuple_Check(args)) ||
  ------------------
  |  |   27|     39|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TUPLE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     39|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (1430:10): [True: 0, False: 39]
  |  Branch (1430:26): [True: 0, False: 39]
  ------------------
 1431|     39|        (keywords != NULL && !PyDict_Check(keywords)) ||
  ------------------
  |  |   18|      7|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      7|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (1431:10): [True: 7, False: 32]
  |  Branch (1431:30): [True: 0, False: 7]
  ------------------
 1432|     39|        format == NULL ||
  ------------------
  |  Branch (1432:9): [True: 0, False: 39]
  ------------------
 1433|     39|        kwlist == NULL)
  ------------------
  |  Branch (1433:9): [True: 0, False: 39]
  ------------------
 1434|      0|    {
 1435|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
 1436|      0|        return 0;
 1437|      0|    }
 1438|       |
 1439|     39|    va_start(va, kwlist);
 1440|     39|    retval = vgetargskeywords(args, keywords, format, kwlist, &va, 0);
 1441|       |    va_end(va);
 1442|     39|    return retval;
 1443|     39|}
PyArg_ValidateKeywordArguments:
 1640|     15|{
 1641|     15|    if (!PyDict_Check(kwargs)) {
  ------------------
  |  |   18|     15|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     15|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (1641:9): [True: 0, False: 15]
  ------------------
 1642|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
 1643|      0|        return 0;
 1644|      0|    }
 1645|     15|    if (!_PyDict_HasOnlyStringKeys(kwargs)) {
  ------------------
  |  Branch (1645:9): [True: 0, False: 15]
  ------------------
 1646|      0|        PyErr_SetString(PyExc_TypeError,
 1647|      0|                        "keywords must be strings");
 1648|      0|        return 0;
 1649|      0|    }
 1650|     15|    return 1;
 1651|     15|}
_PyArg_UnpackKeywords:
 2524|      1|{
 2525|      1|    PyObject *kwtuple;
 2526|      1|    PyObject *keyword;
 2527|      1|    int i, posonly, minposonly, maxargs;
 2528|      1|    int reqlimit = minkw ? maxpos + minkw : minpos;
  ------------------
  |  Branch (2528:20): [True: 0, False: 1]
  ------------------
 2529|      1|    Py_ssize_t nkwargs;
 2530|      1|    PyObject * const *kwstack = NULL;
 2531|       |
 2532|      1|    assert(kwargs == NULL || PyDict_Check(kwargs));
  ------------------
  |  Branch (2532:5): [True: 1, False: 0]
  |  Branch (2532:5): [True: 0, False: 0]
  ------------------
 2533|      1|    assert(kwargs == NULL || kwnames == NULL);
  ------------------
  |  Branch (2533:5): [True: 1, False: 0]
  |  Branch (2533:5): [True: 0, False: 0]
  ------------------
 2534|       |
 2535|      1|    if (parser == NULL) {
  ------------------
  |  Branch (2535:9): [True: 0, False: 1]
  ------------------
 2536|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
 2537|      0|        return NULL;
 2538|      0|    }
 2539|       |
 2540|      1|    if (kwnames != NULL && !PyTuple_Check(kwnames)) {
  ------------------
  |  |   27|      1|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TUPLE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      1|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (2540:9): [True: 1, False: 0]
  |  Branch (2540:28): [True: 0, False: 1]
  ------------------
 2541|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
 2542|      0|        return NULL;
 2543|      0|    }
 2544|       |
 2545|      1|    if (args == NULL && nargs == 0) {
  ------------------
  |  Branch (2545:9): [True: 0, False: 1]
  |  Branch (2545:25): [True: 0, False: 0]
  ------------------
 2546|      0|        args = buf;
 2547|      0|    }
 2548|       |
 2549|      1|    if (parser_init(parser) < 0) {
  ------------------
  |  Branch (2549:9): [True: 0, False: 1]
  ------------------
 2550|      0|        return NULL;
 2551|      0|    }
 2552|       |
 2553|      1|    kwtuple = parser->kwtuple;
 2554|      1|    posonly = parser->pos;
 2555|      1|    minposonly = Py_MIN(posonly, minpos);
  ------------------
  |  |  112|      1|#define Py_MIN(x, y) (((x) > (y)) ? (y) : (x))
  |  |  ------------------
  |  |  |  Branch (112:23): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2556|      1|    maxargs = posonly + (int)PyTuple_GET_SIZE(kwtuple);
  ------------------
  |  |   27|      1|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2557|       |
 2558|      1|    if (kwargs != NULL) {
  ------------------
  |  Branch (2558:9): [True: 0, False: 1]
  ------------------
 2559|      0|        nkwargs = PyDict_GET_SIZE(kwargs);
  ------------------
  |  |   63|      0|#define PyDict_GET_SIZE(op) PyDict_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2560|      0|    }
 2561|      1|    else if (kwnames != NULL) {
  ------------------
  |  Branch (2561:14): [True: 1, False: 0]
  ------------------
 2562|      1|        nkwargs = PyTuple_GET_SIZE(kwnames);
  ------------------
  |  |   27|      1|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2563|      1|        kwstack = args + nargs;
 2564|      1|    }
 2565|      0|    else {
 2566|      0|        nkwargs = 0;
 2567|      0|    }
 2568|      1|    if (nkwargs == 0 && minkw == 0 && minpos <= nargs && (varpos || nargs <= maxpos)) {
  ------------------
  |  Branch (2568:9): [True: 0, False: 1]
  |  Branch (2568:25): [True: 0, False: 0]
  |  Branch (2568:39): [True: 0, False: 0]
  |  Branch (2568:59): [True: 0, False: 0]
  |  Branch (2568:69): [True: 0, False: 0]
  ------------------
 2569|       |        /* Fast path. */
 2570|      0|        return args;
 2571|      0|    }
 2572|      1|    if (!varpos && nargs + nkwargs > maxargs) {
  ------------------
  |  Branch (2572:9): [True: 1, False: 0]
  |  Branch (2572:20): [True: 0, False: 1]
  ------------------
 2573|       |        /* Adding "keyword" (when nargs == 0) prevents producing wrong error
 2574|       |           messages in some special cases (see bpo-31229). */
 2575|      0|        PyErr_Format(PyExc_TypeError,
 2576|      0|                     "%.200s%s takes at most %d %sargument%s (%zd given)",
 2577|      0|                     (parser->fname == NULL) ? "function" : parser->fname,
  ------------------
  |  Branch (2577:22): [True: 0, False: 0]
  ------------------
 2578|      0|                     (parser->fname == NULL) ? "" : "()",
  ------------------
  |  Branch (2578:22): [True: 0, False: 0]
  ------------------
 2579|      0|                     maxargs,
 2580|      0|                     (nargs == 0) ? "keyword " : "",
  ------------------
  |  Branch (2580:22): [True: 0, False: 0]
  ------------------
 2581|      0|                     (maxargs == 1) ? "" : "s",
  ------------------
  |  Branch (2581:22): [True: 0, False: 0]
  ------------------
 2582|      0|                     nargs + nkwargs);
 2583|      0|        return NULL;
 2584|      0|    }
 2585|      1|    if (!varpos && nargs > maxpos) {
  ------------------
  |  Branch (2585:9): [True: 1, False: 0]
  |  Branch (2585:20): [True: 0, False: 1]
  ------------------
 2586|      0|        if (maxpos == 0) {
  ------------------
  |  Branch (2586:13): [True: 0, False: 0]
  ------------------
 2587|      0|            PyErr_Format(PyExc_TypeError,
 2588|      0|                         "%.200s%s takes no positional arguments",
 2589|      0|                         (parser->fname == NULL) ? "function" : parser->fname,
  ------------------
  |  Branch (2589:26): [True: 0, False: 0]
  ------------------
 2590|      0|                         (parser->fname == NULL) ? "" : "()");
  ------------------
  |  Branch (2590:26): [True: 0, False: 0]
  ------------------
 2591|      0|        }
 2592|      0|        else {
 2593|      0|            PyErr_Format(PyExc_TypeError,
 2594|      0|                         "%.200s%s takes %s %d positional argument%s (%zd given)",
 2595|      0|                         (parser->fname == NULL) ? "function" : parser->fname,
  ------------------
  |  Branch (2595:26): [True: 0, False: 0]
  ------------------
 2596|      0|                         (parser->fname == NULL) ? "" : "()",
  ------------------
  |  Branch (2596:26): [True: 0, False: 0]
  ------------------
 2597|      0|                         (minpos < maxpos) ? "at most" : "exactly",
  ------------------
  |  Branch (2597:26): [True: 0, False: 0]
  ------------------
 2598|      0|                         maxpos,
 2599|      0|                         (maxpos == 1) ? "" : "s",
  ------------------
  |  Branch (2599:26): [True: 0, False: 0]
  ------------------
 2600|      0|                         nargs);
 2601|      0|        }
 2602|      0|        return NULL;
 2603|      0|    }
 2604|      1|    if (nargs < minposonly) {
  ------------------
  |  Branch (2604:9): [True: 0, False: 1]
  ------------------
 2605|      0|        PyErr_Format(PyExc_TypeError,
 2606|      0|                     "%.200s%s takes %s %d positional argument%s"
 2607|      0|                     " (%zd given)",
 2608|      0|                     (parser->fname == NULL) ? "function" : parser->fname,
  ------------------
  |  Branch (2608:22): [True: 0, False: 0]
  ------------------
 2609|      0|                     (parser->fname == NULL) ? "" : "()",
  ------------------
  |  Branch (2609:22): [True: 0, False: 0]
  ------------------
 2610|      0|                     (varpos || minposonly < maxpos) ? "at least" : "exactly",
  ------------------
  |  Branch (2610:23): [True: 0, False: 0]
  |  Branch (2610:33): [True: 0, False: 0]
  ------------------
 2611|      0|                     minposonly,
 2612|      0|                     minposonly == 1 ? "" : "s",
  ------------------
  |  Branch (2612:22): [True: 0, False: 0]
  ------------------
 2613|      0|                     nargs);
 2614|      0|        return NULL;
 2615|      0|    }
 2616|       |
 2617|      1|    if (varpos) {
  ------------------
  |  Branch (2617:9): [True: 0, False: 1]
  ------------------
 2618|      0|        nargs = Py_MIN(maxpos, nargs);
  ------------------
  |  |  112|      0|#define Py_MIN(x, y) (((x) > (y)) ? (y) : (x))
  |  |  ------------------
  |  |  |  Branch (112:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2619|      0|    }
 2620|       |    /* copy tuple args */
 2621|      2|    for (i = 0; i < nargs; i++) {
  ------------------
  |  Branch (2621:17): [True: 1, False: 1]
  ------------------
 2622|      1|        buf[i] = args[i];
 2623|      1|    }
 2624|       |
 2625|       |    /* copy keyword args using kwtuple to drive process */
 2626|      5|    for (i = Py_MAX((int)nargs, posonly); i < maxargs; i++) {
  ------------------
  |  |  115|      1|#define Py_MAX(x, y) (((x) > (y)) ? (x) : (y))
  |  |  ------------------
  |  |  |  Branch (115:23): [True: 1, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2626:43): [True: 4, False: 1]
  ------------------
 2627|      4|        PyObject *current_arg;
 2628|      4|        if (nkwargs) {
  ------------------
  |  Branch (2628:13): [True: 4, False: 0]
  ------------------
 2629|      4|            keyword = PyTuple_GET_ITEM(kwtuple, i - posonly);
  ------------------
  |  |   29|      4|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|      4|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2629:23): [True: 4, False: 0]
  ------------------
 2630|      4|            if (kwargs != NULL) {
  ------------------
  |  Branch (2630:17): [True: 0, False: 4]
  ------------------
 2631|      0|                if (PyDict_GetItemRef(kwargs, keyword, &current_arg) < 0) {
  ------------------
  |  Branch (2631:21): [True: 0, False: 0]
  ------------------
 2632|      0|                    return NULL;
 2633|      0|                }
 2634|      0|            }
 2635|      4|            else {
 2636|      4|                current_arg = find_keyword(kwnames, kwstack, keyword);
 2637|      4|            }
 2638|      4|        }
 2639|      0|        else if (i >= reqlimit) {
  ------------------
  |  Branch (2639:18): [True: 0, False: 0]
  ------------------
 2640|      0|            break;
 2641|      0|        }
 2642|      0|        else {
 2643|      0|            current_arg = NULL;
 2644|      0|        }
 2645|       |
 2646|      4|        buf[i] = current_arg;
 2647|       |
 2648|      4|        if (current_arg) {
  ------------------
  |  Branch (2648:13): [True: 2, False: 2]
  ------------------
 2649|      2|            Py_DECREF(current_arg);
  ------------------
  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2650|      2|            --nkwargs;
 2651|      2|        }
 2652|      2|        else if (i < minpos || (maxpos <= i && i < reqlimit)) {
  ------------------
  |  Branch (2652:18): [True: 0, False: 2]
  |  Branch (2652:33): [True: 0, False: 2]
  |  Branch (2652:48): [True: 0, False: 0]
  ------------------
 2653|       |            /* Less arguments than required */
 2654|      0|            keyword = PyTuple_GET_ITEM(kwtuple, i - posonly);
  ------------------
  |  |   29|      0|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|      0|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2654:23): [True: 0, False: 0]
  ------------------
 2655|      0|            PyErr_Format(PyExc_TypeError,  "%.200s%s missing required "
 2656|      0|                         "argument '%U' (pos %d)",
 2657|      0|                         (parser->fname == NULL) ? "function" : parser->fname,
  ------------------
  |  Branch (2657:26): [True: 0, False: 0]
  ------------------
 2658|      0|                         (parser->fname == NULL) ? "" : "()",
  ------------------
  |  Branch (2658:26): [True: 0, False: 0]
  ------------------
 2659|      0|                         keyword, i+1);
 2660|      0|            return NULL;
 2661|      0|        }
 2662|      4|    }
 2663|       |
 2664|      1|    if (nkwargs > 0) {
  ------------------
  |  Branch (2664:9): [True: 0, False: 1]
  ------------------
 2665|       |        /* make sure there are no arguments given by name and position */
 2666|      0|        for (i = posonly; i < nargs; i++) {
  ------------------
  |  Branch (2666:27): [True: 0, False: 0]
  ------------------
 2667|      0|            PyObject *current_arg;
 2668|      0|            keyword = PyTuple_GET_ITEM(kwtuple, i - posonly);
  ------------------
  |  |   29|      0|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|      0|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2668:23): [True: 0, False: 0]
  ------------------
 2669|      0|            if (kwargs != NULL) {
  ------------------
  |  Branch (2669:17): [True: 0, False: 0]
  ------------------
 2670|      0|                if (PyDict_GetItemRef(kwargs, keyword, &current_arg) < 0) {
  ------------------
  |  Branch (2670:21): [True: 0, False: 0]
  ------------------
 2671|      0|                    return NULL;
 2672|      0|                }
 2673|      0|            }
 2674|      0|            else {
 2675|      0|                current_arg = find_keyword(kwnames, kwstack, keyword);
 2676|      0|            }
 2677|      0|            if (current_arg) {
  ------------------
  |  Branch (2677:17): [True: 0, False: 0]
  ------------------
 2678|      0|                Py_DECREF(current_arg);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2679|       |                /* arg present in tuple and in dict */
 2680|      0|                PyErr_Format(PyExc_TypeError,
 2681|      0|                             "argument for %.200s%s given by name ('%U') "
 2682|      0|                             "and position (%d)",
 2683|      0|                             (parser->fname == NULL) ? "function" : parser->fname,
  ------------------
  |  Branch (2683:30): [True: 0, False: 0]
  ------------------
 2684|      0|                             (parser->fname == NULL) ? "" : "()",
  ------------------
  |  Branch (2684:30): [True: 0, False: 0]
  ------------------
 2685|      0|                             keyword, i+1);
 2686|      0|                return NULL;
 2687|      0|            }
 2688|      0|        }
 2689|       |
 2690|      0|        error_unexpected_keyword_arg(kwargs, kwnames, kwtuple, parser->fname);
 2691|      0|        return NULL;
 2692|      0|    }
 2693|       |
 2694|      1|    return buf;
 2695|      1|}
_PyArg_CheckPositional:
 2838|    252|{
 2839|    252|    assert(min >= 0);
  ------------------
  |  Branch (2839:5): [True: 252, False: 0]
  ------------------
 2840|    252|    assert(min <= max);
  ------------------
  |  Branch (2840:5): [True: 252, False: 0]
  ------------------
 2841|       |
 2842|    252|    if (nargs < min) {
  ------------------
  |  Branch (2842:9): [True: 0, False: 252]
  ------------------
 2843|      0|        if (name != NULL)
  ------------------
  |  Branch (2843:13): [True: 0, False: 0]
  ------------------
 2844|      0|            PyErr_Format(
 2845|      0|                PyExc_TypeError,
 2846|      0|                "%.200s expected %s%zd argument%s, got %zd",
 2847|      0|                name, (min == max ? "" : "at least "), min, min == 1 ? "" : "s", nargs);
  ------------------
  |  Branch (2847:24): [True: 0, False: 0]
  |  Branch (2847:61): [True: 0, False: 0]
  ------------------
 2848|      0|        else
 2849|      0|            PyErr_Format(
 2850|      0|                PyExc_TypeError,
 2851|      0|                "unpacked tuple should have %s%zd element%s,"
 2852|      0|                " but has %zd",
 2853|      0|                (min == max ? "" : "at least "), min, min == 1 ? "" : "s", nargs);
  ------------------
  |  Branch (2853:18): [True: 0, False: 0]
  |  Branch (2853:55): [True: 0, False: 0]
  ------------------
 2854|      0|        return 0;
 2855|      0|    }
 2856|       |
 2857|    252|    if (nargs == 0) {
  ------------------
  |  Branch (2857:9): [True: 15, False: 237]
  ------------------
 2858|     15|        return 1;
 2859|     15|    }
 2860|       |
 2861|    237|    if (nargs > max) {
  ------------------
  |  Branch (2861:9): [True: 0, False: 237]
  ------------------
 2862|      0|        if (name != NULL)
  ------------------
  |  Branch (2862:13): [True: 0, False: 0]
  ------------------
 2863|      0|            PyErr_Format(
 2864|      0|                PyExc_TypeError,
 2865|      0|                "%.200s expected %s%zd argument%s, got %zd",
 2866|      0|                name, (min == max ? "" : "at most "), max, max == 1 ? "" : "s", nargs);
  ------------------
  |  Branch (2866:24): [True: 0, False: 0]
  |  Branch (2866:60): [True: 0, False: 0]
  ------------------
 2867|      0|        else
 2868|      0|            PyErr_Format(
 2869|      0|                PyExc_TypeError,
 2870|      0|                "unpacked tuple should have %s%zd element%s,"
 2871|      0|                " but has %zd",
 2872|      0|                (min == max ? "" : "at most "), max, max == 1 ? "" : "s", nargs);
  ------------------
  |  Branch (2872:18): [True: 0, False: 0]
  |  Branch (2872:54): [True: 0, False: 0]
  ------------------
 2873|      0|        return 0;
 2874|      0|    }
 2875|       |
 2876|    237|    return 1;
 2877|    237|}
PyArg_UnpackTuple:
 2899|    250|{
 2900|    250|    PyObject **stack;
 2901|    250|    Py_ssize_t nargs;
 2902|    250|    int retval;
 2903|    250|    va_list vargs;
 2904|       |
 2905|    250|    if (!PyTuple_Check(args)) {
  ------------------
  |  |   27|    250|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TUPLE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|    250|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (2905:9): [True: 0, False: 250]
  ------------------
 2906|      0|        PyErr_SetString(PyExc_SystemError,
 2907|      0|            "PyArg_UnpackTuple() argument list is not a tuple");
 2908|      0|        return 0;
 2909|      0|    }
 2910|    250|    stack = _PyTuple_ITEMS(args);
  ------------------
  |  |   26|    250|#define _PyTuple_ITEMS(op) _Py_RVALUE(_PyTuple_CAST(op)->ob_item)
  |  |  ------------------
  |  |  |  |  277|    500|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 250, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2911|    250|    nargs = PyTuple_GET_SIZE(args);
  ------------------
  |  |   27|    250|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    250|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    250|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2912|       |
 2913|    250|    va_start(vargs, max);
 2914|    250|    retval = unpack_stack(stack, nargs, name, min, max, vargs);
 2915|       |    va_end(vargs);
 2916|    250|    return retval;
 2917|    250|}
_PyArg_UnpackStack:
 2922|      2|{
 2923|      2|    int retval;
 2924|      2|    va_list vargs;
 2925|       |
 2926|      2|    va_start(vargs, max);
 2927|      2|    retval = unpack_stack(args, nargs, name, min, max, vargs);
 2928|       |    va_end(vargs);
 2929|      2|    return retval;
 2930|      2|}
_PyArg_NoPositional:
 2963|     24|{
 2964|     24|    if (args == NULL)
  ------------------
  |  Branch (2964:9): [True: 0, False: 24]
  ------------------
 2965|      0|        return 1;
 2966|     24|    if (!PyTuple_CheckExact(args)) {
  ------------------
  |  |   28|     24|#define PyTuple_CheckExact(op) Py_IS_TYPE((op), &PyTuple_Type)
  |  |  ------------------
  |  |  |  |  215|     24|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     24|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     24|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2966:9): [True: 0, False: 24]
  ------------------
 2967|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
 2968|      0|        return 0;
 2969|      0|    }
 2970|     24|    if (PyTuple_GET_SIZE(args) == 0)
  ------------------
  |  |   27|     24|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     24|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     24|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2970:9): [True: 24, False: 0]
  ------------------
 2971|     24|        return 1;
 2972|       |
 2973|      0|    PyErr_Format(PyExc_TypeError, "%.200s() takes no positional arguments",
 2974|      0|                    funcname);
 2975|      0|    return 0;
 2976|     24|}
getargs.c:vgetargs1_impl:
  258|    110|{
  259|    110|    char msgbuf[256];
  260|    110|    int levels[32];
  261|    110|    const char *fname = NULL;
  262|    110|    const char *message = NULL;
  263|    110|    int min = -1;
  264|    110|    int max = 0;
  265|    110|    int level = 0;
  266|    110|    int endfmt = 0;
  267|    110|    const char *formatsave = format;
  268|    110|    Py_ssize_t i;
  269|    110|    const char *msg;
  270|    110|    int compat = flags & FLAG_COMPAT;
  ------------------
  |  |   24|    110|#define FLAG_COMPAT 1
  ------------------
  271|    110|    freelistentry_t static_entries[STATIC_FREELIST_ENTRIES];
  272|    110|    freelist_t freelist;
  273|       |
  274|    110|    assert(nargs == 0 || stack != NULL);
  ------------------
  |  Branch (274:5): [True: 0, False: 110]
  |  Branch (274:5): [True: 110, False: 0]
  ------------------
  275|       |
  276|    110|    freelist.entries = static_entries;
  277|    110|    freelist.first_available = 0;
  278|    110|    freelist.entries_malloced = 0;
  279|       |
  280|    110|    flags = flags & ~FLAG_COMPAT;
  ------------------
  |  |   24|    110|#define FLAG_COMPAT 1
  ------------------
  281|       |
  282|    591|    while (endfmt == 0) {
  ------------------
  |  Branch (282:12): [True: 481, False: 110]
  ------------------
  283|    481|        int c = *format++;
  284|    481|        switch (c) {
  285|      0|        case '(':
  ------------------
  |  Branch (285:9): [True: 0, False: 481]
  ------------------
  286|      0|            if (level == 0)
  ------------------
  |  Branch (286:17): [True: 0, False: 0]
  ------------------
  287|      0|                max++;
  288|      0|            level++;
  289|      0|            if (level >= 30)
  ------------------
  |  Branch (289:17): [True: 0, False: 0]
  ------------------
  290|      0|                Py_FatalError("too many tuple nesting levels "
  ------------------
  |  |  133|      0|#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))
  ------------------
  291|      0|                              "in argument format string");
  292|      0|            break;
  293|      0|        case ')':
  ------------------
  |  Branch (293:9): [True: 0, False: 481]
  ------------------
  294|      0|            if (level == 0)
  ------------------
  |  Branch (294:17): [True: 0, False: 0]
  ------------------
  295|      0|                Py_FatalError("excess ')' in getargs format");
  ------------------
  |  |  133|      0|#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))
  ------------------
  296|      0|            else
  297|      0|                level--;
  298|      0|            break;
  299|     23|        case '\0':
  ------------------
  |  Branch (299:9): [True: 23, False: 458]
  ------------------
  300|     23|            endfmt = 1;
  301|     23|            break;
  302|     87|        case ':':
  ------------------
  |  Branch (302:9): [True: 87, False: 394]
  ------------------
  303|     87|            fname = format;
  304|     87|            endfmt = 1;
  305|     87|            break;
  306|      0|        case ';':
  ------------------
  |  Branch (306:9): [True: 0, False: 481]
  ------------------
  307|      0|            message = format;
  308|      0|            endfmt = 1;
  309|      0|            break;
  310|      0|        case '|':
  ------------------
  |  Branch (310:9): [True: 0, False: 481]
  ------------------
  311|      0|            if (level == 0)
  ------------------
  |  Branch (311:17): [True: 0, False: 0]
  ------------------
  312|      0|                min = max;
  313|      0|            break;
  314|    371|        default:
  ------------------
  |  Branch (314:9): [True: 371, False: 110]
  ------------------
  315|    371|            if (level == 0) {
  ------------------
  |  Branch (315:17): [True: 371, False: 0]
  ------------------
  316|    371|                if (Py_ISALPHA(c))
  ------------------
  |  |   23|    371|#define Py_ISALPHA(c)  (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_ALPHA)
  |  |  ------------------
  |  |  |  |  138|    371|#define Py_CHARMASK(c) ((unsigned char)((c) & 0xff))
  |  |  ------------------
  |  |               #define Py_ISALPHA(c)  (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_ALPHA)
  |  |  ------------------
  |  |  |  |   10|    371|#define PY_CTF_ALPHA  (PY_CTF_LOWER|PY_CTF_UPPER)
  |  |  |  |  ------------------
  |  |  |  |  |  |    8|    371|#define PY_CTF_LOWER  0x01
  |  |  |  |  ------------------
  |  |  |  |               #define PY_CTF_ALPHA  (PY_CTF_LOWER|PY_CTF_UPPER)
  |  |  |  |  ------------------
  |  |  |  |  |  |    9|    371|#define PY_CTF_UPPER  0x02
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (23:24): [True: 284, False: 87]
  |  |  ------------------
  ------------------
  317|    284|                    if (c != 'e') /* skip encoded */
  ------------------
  |  Branch (317:25): [True: 284, False: 0]
  ------------------
  318|    284|                        max++;
  319|    371|            }
  320|    371|            break;
  321|    481|        }
  322|    481|    }
  323|       |
  324|    110|    if (level != 0)
  ------------------
  |  Branch (324:9): [True: 0, False: 110]
  ------------------
  325|      0|        Py_FatalError(/* '(' */ "missing ')' in getargs format");
  ------------------
  |  |  133|      0|#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))
  ------------------
  326|       |
  327|    110|    if (min < 0)
  ------------------
  |  Branch (327:9): [True: 110, False: 0]
  ------------------
  328|    110|        min = max;
  329|       |
  330|    110|    format = formatsave;
  331|       |
  332|    110|    if (max > STATIC_FREELIST_ENTRIES) {
  ------------------
  |  |   44|    110|#define STATIC_FREELIST_ENTRIES 8
  ------------------
  |  Branch (332:9): [True: 0, False: 110]
  ------------------
  333|      0|        freelist.entries = PyMem_NEW(freelistentry_t, max);
  ------------------
  |  |   82|      0|#define PyMem_NEW(type, n)        PyMem_New(type, (n))
  |  |  ------------------
  |  |  |  |   64|      0|  ( ((size_t)(n) > PY_SSIZE_T_MAX / sizeof(type)) ? NULL :      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|#   define PY_SSIZE_T_MAX SSIZE_MAX
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (64:5): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   65|      0|        ( (type *) PyMem_Malloc((n) * sizeof(type)) ) )
  |  |  ------------------
  ------------------
  334|      0|        if (freelist.entries == NULL) {
  ------------------
  |  Branch (334:13): [True: 0, False: 0]
  ------------------
  335|      0|            PyErr_NoMemory();
  336|      0|            return 0;
  337|      0|        }
  338|      0|        freelist.entries_malloced = 1;
  339|      0|    }
  340|       |
  341|    110|    if (compat) {
  ------------------
  |  Branch (341:9): [True: 0, False: 110]
  ------------------
  342|      0|        if (max == 0) {
  ------------------
  |  Branch (342:13): [True: 0, False: 0]
  ------------------
  343|      0|            if (compat_args == NULL)
  ------------------
  |  Branch (343:17): [True: 0, False: 0]
  ------------------
  344|      0|                return 1;
  345|      0|            PyErr_Format(PyExc_TypeError,
  346|      0|                         "%.200s%s takes no arguments",
  347|      0|                         fname==NULL ? "function" : fname,
  ------------------
  |  Branch (347:26): [True: 0, False: 0]
  ------------------
  348|      0|                         fname==NULL ? "" : "()");
  ------------------
  |  Branch (348:26): [True: 0, False: 0]
  ------------------
  349|      0|            return cleanreturn(0, &freelist);
  350|      0|        }
  351|      0|        else if (min == 1 && max == 1) {
  ------------------
  |  Branch (351:18): [True: 0, False: 0]
  |  Branch (351:30): [True: 0, False: 0]
  ------------------
  352|      0|            if (compat_args == NULL) {
  ------------------
  |  Branch (352:17): [True: 0, False: 0]
  ------------------
  353|      0|                PyErr_Format(PyExc_TypeError,
  354|      0|                             "%.200s%s takes at least one argument",
  355|      0|                             fname==NULL ? "function" : fname,
  ------------------
  |  Branch (355:30): [True: 0, False: 0]
  ------------------
  356|      0|                             fname==NULL ? "" : "()");
  ------------------
  |  Branch (356:30): [True: 0, False: 0]
  ------------------
  357|      0|                return cleanreturn(0, &freelist);
  358|      0|            }
  359|      0|            msg = convertitem(compat_args, &format, p_va, flags, levels,
  360|      0|                              msgbuf, sizeof(msgbuf), &freelist);
  361|      0|            if (msg == NULL)
  ------------------
  |  Branch (361:17): [True: 0, False: 0]
  ------------------
  362|      0|                return cleanreturn(1, &freelist);
  363|      0|            seterror(levels[0], msg, levels+1, fname, message);
  364|      0|            return cleanreturn(0, &freelist);
  365|      0|        }
  366|      0|        else {
  367|      0|            PyErr_SetString(PyExc_SystemError,
  368|      0|                "old style getargs format uses new features");
  369|      0|            return cleanreturn(0, &freelist);
  370|      0|        }
  371|      0|    }
  372|       |
  373|    110|    if (nargs < min || max < nargs) {
  ------------------
  |  Branch (373:9): [True: 0, False: 110]
  |  Branch (373:24): [True: 0, False: 110]
  ------------------
  374|      0|        if (message == NULL)
  ------------------
  |  Branch (374:13): [True: 0, False: 0]
  ------------------
  375|      0|            PyErr_Format(PyExc_TypeError,
  376|      0|                         "%.150s%s takes %s %d argument%s (%zd given)",
  377|      0|                         fname==NULL ? "function" : fname,
  ------------------
  |  Branch (377:26): [True: 0, False: 0]
  ------------------
  378|      0|                         fname==NULL ? "" : "()",
  ------------------
  |  Branch (378:26): [True: 0, False: 0]
  ------------------
  379|      0|                         min==max ? "exactly"
  ------------------
  |  Branch (379:26): [True: 0, False: 0]
  ------------------
  380|      0|                         : nargs < min ? "at least" : "at most",
  ------------------
  |  Branch (380:28): [True: 0, False: 0]
  ------------------
  381|      0|                         nargs < min ? min : max,
  ------------------
  |  Branch (381:26): [True: 0, False: 0]
  ------------------
  382|      0|                         (nargs < min ? min : max) == 1 ? "" : "s",
  ------------------
  |  Branch (382:26): [True: 0, False: 0]
  |  Branch (382:27): [True: 0, False: 0]
  ------------------
  383|      0|                         nargs);
  384|      0|        else
  385|      0|            PyErr_SetString(PyExc_TypeError, message);
  386|      0|        return cleanreturn(0, &freelist);
  387|      0|    }
  388|       |
  389|    394|    for (i = 0; i < nargs; i++) {
  ------------------
  |  Branch (389:17): [True: 284, False: 110]
  ------------------
  390|    284|        if (*format == '|')
  ------------------
  |  Branch (390:13): [True: 0, False: 284]
  ------------------
  391|      0|            format++;
  392|    284|        msg = convertitem(stack[i], &format, p_va,
  393|    284|                          flags, levels, msgbuf,
  394|    284|                          sizeof(msgbuf), &freelist);
  395|    284|        if (msg) {
  ------------------
  |  Branch (395:13): [True: 0, False: 284]
  ------------------
  396|      0|            seterror(i+1, msg, levels, fname, message);
  397|      0|            return cleanreturn(0, &freelist);
  398|      0|        }
  399|    284|    }
  400|       |
  401|    110|    if (*format != '\0' && !Py_ISALPHA(*format) &&
  ------------------
  |  |   23|    197|#define Py_ISALPHA(c)  (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_ALPHA)
  |  |  ------------------
  |  |  |  |  138|     87|#define Py_CHARMASK(c) ((unsigned char)((c) & 0xff))
  |  |  ------------------
  |  |               #define Py_ISALPHA(c)  (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_ALPHA)
  |  |  ------------------
  |  |  |  |   10|     87|#define PY_CTF_ALPHA  (PY_CTF_LOWER|PY_CTF_UPPER)
  |  |  |  |  ------------------
  |  |  |  |  |  |    8|     87|#define PY_CTF_LOWER  0x01
  |  |  |  |  ------------------
  |  |  |  |               #define PY_CTF_ALPHA  (PY_CTF_LOWER|PY_CTF_UPPER)
  |  |  |  |  ------------------
  |  |  |  |  |  |    9|     87|#define PY_CTF_UPPER  0x02
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (401:9): [True: 87, False: 23]
  |  Branch (401:28): [True: 87, False: 0]
  ------------------
  402|     87|        *format != '(' &&
  ------------------
  |  Branch (402:9): [True: 87, False: 0]
  ------------------
  403|     87|        *format != '|' && *format != ':' && *format != ';') {
  ------------------
  |  Branch (403:9): [True: 87, False: 0]
  |  Branch (403:27): [True: 0, False: 87]
  |  Branch (403:45): [True: 0, False: 0]
  ------------------
  404|      0|        PyErr_Format(PyExc_SystemError,
  405|      0|                     "bad format string: %.200s", formatsave);
  406|      0|        return cleanreturn(0, &freelist);
  407|      0|    }
  408|       |
  409|    110|    return cleanreturn(1, &freelist);
  410|    110|}
getargs.c:cleanreturn:
  237|    149|{
  238|    149|    int index;
  239|       |
  240|    149|    if (retval == 0) {
  ------------------
  |  Branch (240:9): [True: 0, False: 149]
  ------------------
  241|       |      /* A failure occurred, therefore execute all of the cleanup
  242|       |         functions.
  243|       |      */
  244|      0|      for (index = 0; index < freelist->first_available; ++index) {
  ------------------
  |  Branch (244:23): [True: 0, False: 0]
  ------------------
  245|      0|          freelist->entries[index].destructor(NULL,
  246|      0|                                              freelist->entries[index].item);
  247|      0|      }
  248|      0|    }
  249|    149|    if (freelist->entries_malloced)
  ------------------
  |  Branch (249:9): [True: 0, False: 149]
  ------------------
  250|      0|        PyMem_Free(freelist->entries);
  251|    149|    return retval;
  252|    149|}
getargs.c:convertitem:
  634|    291|{
  635|    291|    const char *msg;
  636|    291|    const char *format = *p_format;
  637|       |
  638|    291|    if (*format == '(' /* ')' */) {
  ------------------
  |  Branch (638:9): [True: 0, False: 291]
  ------------------
  639|      0|        format++;
  640|      0|        msg = converttuple(arg, &format, p_va, flags, levels, msgbuf,
  641|      0|                           bufsize, freelist);
  642|      0|        if (msg == NULL)
  ------------------
  |  Branch (642:13): [True: 0, False: 0]
  ------------------
  643|      0|            format++;
  644|      0|    }
  645|    291|    else {
  646|    291|        msg = convertsimple(arg, &format, p_va, flags,
  647|    291|                            msgbuf, bufsize, freelist);
  648|    291|        if (msg != NULL)
  ------------------
  |  Branch (648:13): [True: 0, False: 291]
  ------------------
  649|      0|            levels[0] = 0;
  650|    291|    }
  651|    291|    if (msg == NULL)
  ------------------
  |  Branch (651:9): [True: 291, False: 0]
  ------------------
  652|    291|        *p_format = format;
  653|    291|    return msg;
  654|    291|}
getargs.c:convertsimple:
  714|    291|{
  715|    291|#define RETURN_ERR_OCCURRED return msgbuf
  716|       |
  717|    291|    const char *format = *p_format;
  718|    291|    char c = *format++;
  719|    291|    const char *sarg;
  720|       |
  721|    291|    switch (c) {
  722|       |
  723|      0|    case 'b': { /* unsigned byte -- very short int */
  ------------------
  |  Branch (723:5): [True: 0, False: 291]
  ------------------
  724|      0|        unsigned char *p = va_arg(*p_va, unsigned char *);
  725|      0|        long ival = PyLong_AsLong(arg);
  726|      0|        if (ival == -1 && PyErr_Occurred())
  ------------------
  |  Branch (726:13): [True: 0, False: 0]
  |  Branch (726:27): [True: 0, False: 0]
  ------------------
  727|      0|            RETURN_ERR_OCCURRED;
  ------------------
  |  |  715|      0|#define RETURN_ERR_OCCURRED return msgbuf
  ------------------
  728|      0|        else if (ival < 0) {
  ------------------
  |  Branch (728:18): [True: 0, False: 0]
  ------------------
  729|      0|            PyErr_SetString(PyExc_OverflowError,
  730|      0|                            "unsigned byte integer is less than minimum");
  731|      0|            RETURN_ERR_OCCURRED;
  ------------------
  |  |  715|      0|#define RETURN_ERR_OCCURRED return msgbuf
  ------------------
  732|      0|        }
  733|      0|        else if (ival > UCHAR_MAX) {
  ------------------
  |  Branch (733:18): [True: 0, False: 0]
  ------------------
  734|      0|            PyErr_SetString(PyExc_OverflowError,
  735|      0|                            "unsigned byte integer is greater than maximum");
  736|      0|            RETURN_ERR_OCCURRED;
  ------------------
  |  |  715|      0|#define RETURN_ERR_OCCURRED return msgbuf
  ------------------
  737|      0|        }
  738|      0|        else
  739|      0|            *p = (unsigned char) ival;
  740|      0|        break;
  741|      0|    }
  742|       |
  743|      0|    case 'B': {/* byte sized bitfield - both signed and unsigned
  ------------------
  |  Branch (743:5): [True: 0, False: 291]
  ------------------
  744|       |                  values allowed */
  745|      0|        unsigned char *p = va_arg(*p_va, unsigned char *);
  746|      0|        Py_ssize_t bytes = PyLong_AsNativeBytes(arg, p, sizeof(unsigned char),
  747|      0|                Py_ASNATIVEBYTES_NATIVE_ENDIAN |
  ------------------
  |  |   47|      0|#define Py_ASNATIVEBYTES_NATIVE_ENDIAN 3
  ------------------
  748|      0|                Py_ASNATIVEBYTES_ALLOW_INDEX |
  ------------------
  |  |   50|      0|#define Py_ASNATIVEBYTES_ALLOW_INDEX 16
  ------------------
  749|      0|                Py_ASNATIVEBYTES_UNSIGNED_BUFFER);
  ------------------
  |  |   48|      0|#define Py_ASNATIVEBYTES_UNSIGNED_BUFFER 4
  ------------------
  750|      0|        if (bytes < 0) {
  ------------------
  |  Branch (750:13): [True: 0, False: 0]
  ------------------
  751|      0|            RETURN_ERR_OCCURRED;
  ------------------
  |  |  715|      0|#define RETURN_ERR_OCCURRED return msgbuf
  ------------------
  752|      0|        }
  753|      0|        if ((size_t)bytes > sizeof(unsigned char)) {
  ------------------
  |  Branch (753:13): [True: 0, False: 0]
  ------------------
  754|      0|            if (PyErr_WarnEx(PyExc_DeprecationWarning,
  ------------------
  |  Branch (754:17): [True: 0, False: 0]
  ------------------
  755|      0|                "integer value out of range", 1) < 0)
  756|      0|            {
  757|      0|                RETURN_ERR_OCCURRED;
  ------------------
  |  |  715|      0|#define RETURN_ERR_OCCURRED return msgbuf
  ------------------
  758|      0|            }
  759|      0|        }
  760|      0|        break;
  761|      0|    }
  762|       |
  763|      0|    case 'h': {/* signed short int */
  ------------------
  |  Branch (763:5): [True: 0, False: 291]
  ------------------
  764|      0|        short *p = va_arg(*p_va, short *);
  765|      0|        long ival = PyLong_AsLong(arg);
  766|      0|        if (ival == -1 && PyErr_Occurred())
  ------------------
  |  Branch (766:13): [True: 0, False: 0]
  |  Branch (766:27): [True: 0, False: 0]
  ------------------
  767|      0|            RETURN_ERR_OCCURRED;
  ------------------
  |  |  715|      0|#define RETURN_ERR_OCCURRED return msgbuf
  ------------------
  768|      0|        else if (ival < SHRT_MIN) {
  ------------------
  |  Branch (768:18): [True: 0, False: 0]
  ------------------
  769|      0|            PyErr_SetString(PyExc_OverflowError,
  770|      0|                            "signed short integer is less than minimum");
  771|      0|            RETURN_ERR_OCCURRED;
  ------------------
  |  |  715|      0|#define RETURN_ERR_OCCURRED return msgbuf
  ------------------
  772|      0|        }
  773|      0|        else if (ival > SHRT_MAX) {
  ------------------
  |  Branch (773:18): [True: 0, False: 0]
  ------------------
  774|      0|            PyErr_SetString(PyExc_OverflowError,
  775|      0|                            "signed short integer is greater than maximum");
  776|      0|            RETURN_ERR_OCCURRED;
  ------------------
  |  |  715|      0|#define RETURN_ERR_OCCURRED return msgbuf
  ------------------
  777|      0|        }
  778|      0|        else
  779|      0|            *p = (short) ival;
  780|      0|        break;
  781|      0|    }
  782|       |
  783|      0|    case 'H': { /* short int sized bitfield, both signed and
  ------------------
  |  Branch (783:5): [True: 0, False: 291]
  ------------------
  784|       |                   unsigned allowed */
  785|      0|        unsigned short *p = va_arg(*p_va, unsigned short *);
  786|      0|        Py_ssize_t bytes = PyLong_AsNativeBytes(arg, p, sizeof(unsigned short),
  787|      0|                Py_ASNATIVEBYTES_NATIVE_ENDIAN |
  ------------------
  |  |   47|      0|#define Py_ASNATIVEBYTES_NATIVE_ENDIAN 3
  ------------------
  788|      0|                Py_ASNATIVEBYTES_ALLOW_INDEX |
  ------------------
  |  |   50|      0|#define Py_ASNATIVEBYTES_ALLOW_INDEX 16
  ------------------
  789|      0|                Py_ASNATIVEBYTES_UNSIGNED_BUFFER);
  ------------------
  |  |   48|      0|#define Py_ASNATIVEBYTES_UNSIGNED_BUFFER 4
  ------------------
  790|      0|        if (bytes < 0) {
  ------------------
  |  Branch (790:13): [True: 0, False: 0]
  ------------------
  791|      0|            RETURN_ERR_OCCURRED;
  ------------------
  |  |  715|      0|#define RETURN_ERR_OCCURRED return msgbuf
  ------------------
  792|      0|        }
  793|      0|        if ((size_t)bytes > sizeof(unsigned short)) {
  ------------------
  |  Branch (793:13): [True: 0, False: 0]
  ------------------
  794|      0|            if (PyErr_WarnEx(PyExc_DeprecationWarning,
  ------------------
  |  Branch (794:17): [True: 0, False: 0]
  ------------------
  795|      0|                "integer value out of range", 1) < 0)
  796|      0|            {
  797|      0|                RETURN_ERR_OCCURRED;
  ------------------
  |  |  715|      0|#define RETURN_ERR_OCCURRED return msgbuf
  ------------------
  798|      0|            }
  799|      0|        }
  800|      0|        break;
  801|      0|    }
  802|       |
  803|      0|    case 'i': {/* signed int */
  ------------------
  |  Branch (803:5): [True: 0, False: 291]
  ------------------
  804|      0|        int *p = va_arg(*p_va, int *);
  805|      0|        long ival = PyLong_AsLong(arg);
  806|      0|        if (ival == -1 && PyErr_Occurred())
  ------------------
  |  Branch (806:13): [True: 0, False: 0]
  |  Branch (806:27): [True: 0, False: 0]
  ------------------
  807|      0|            RETURN_ERR_OCCURRED;
  ------------------
  |  |  715|      0|#define RETURN_ERR_OCCURRED return msgbuf
  ------------------
  808|      0|        else if (ival > INT_MAX) {
  ------------------
  |  Branch (808:18): [True: 0, False: 0]
  ------------------
  809|      0|            PyErr_SetString(PyExc_OverflowError,
  810|      0|                            "signed integer is greater than maximum");
  811|      0|            RETURN_ERR_OCCURRED;
  ------------------
  |  |  715|      0|#define RETURN_ERR_OCCURRED return msgbuf
  ------------------
  812|      0|        }
  813|      0|        else if (ival < INT_MIN) {
  ------------------
  |  Branch (813:18): [True: 0, False: 0]
  ------------------
  814|      0|            PyErr_SetString(PyExc_OverflowError,
  815|      0|                            "signed integer is less than minimum");
  816|      0|            RETURN_ERR_OCCURRED;
  ------------------
  |  |  715|      0|#define RETURN_ERR_OCCURRED return msgbuf
  ------------------
  817|      0|        }
  818|      0|        else
  819|      0|            *p = ival;
  820|      0|        break;
  821|      0|    }
  822|       |
  823|      0|    case 'I': { /* int sized bitfield, both signed and
  ------------------
  |  Branch (823:5): [True: 0, False: 291]
  ------------------
  824|       |                   unsigned allowed */
  825|      0|        unsigned int *p = va_arg(*p_va, unsigned int *);
  826|      0|        Py_ssize_t bytes = PyLong_AsNativeBytes(arg, p, sizeof(unsigned int),
  827|      0|                Py_ASNATIVEBYTES_NATIVE_ENDIAN |
  ------------------
  |  |   47|      0|#define Py_ASNATIVEBYTES_NATIVE_ENDIAN 3
  ------------------
  828|      0|                Py_ASNATIVEBYTES_ALLOW_INDEX |
  ------------------
  |  |   50|      0|#define Py_ASNATIVEBYTES_ALLOW_INDEX 16
  ------------------
  829|      0|                Py_ASNATIVEBYTES_UNSIGNED_BUFFER);
  ------------------
  |  |   48|      0|#define Py_ASNATIVEBYTES_UNSIGNED_BUFFER 4
  ------------------
  830|      0|        if (bytes < 0) {
  ------------------
  |  Branch (830:13): [True: 0, False: 0]
  ------------------
  831|      0|            RETURN_ERR_OCCURRED;
  ------------------
  |  |  715|      0|#define RETURN_ERR_OCCURRED return msgbuf
  ------------------
  832|      0|        }
  833|      0|        if ((size_t)bytes > sizeof(unsigned int)) {
  ------------------
  |  Branch (833:13): [True: 0, False: 0]
  ------------------
  834|      0|            if (PyErr_WarnEx(PyExc_DeprecationWarning,
  ------------------
  |  Branch (834:17): [True: 0, False: 0]
  ------------------
  835|      0|                "integer value out of range", 1) < 0)
  836|      0|            {
  837|      0|                RETURN_ERR_OCCURRED;
  ------------------
  |  |  715|      0|#define RETURN_ERR_OCCURRED return msgbuf
  ------------------
  838|      0|            }
  839|      0|        }
  840|      0|        break;
  841|      0|    }
  842|       |
  843|      0|    case 'n': /* Py_ssize_t */
  ------------------
  |  Branch (843:5): [True: 0, False: 291]
  ------------------
  844|      0|    {
  845|      0|        PyObject *iobj;
  846|      0|        Py_ssize_t *p = va_arg(*p_va, Py_ssize_t *);
  847|      0|        Py_ssize_t ival = -1;
  848|      0|        iobj = _PyNumber_Index(arg);
  849|      0|        if (iobj != NULL) {
  ------------------
  |  Branch (849:13): [True: 0, False: 0]
  ------------------
  850|      0|            ival = PyLong_AsSsize_t(iobj);
  851|      0|            Py_DECREF(iobj);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  852|      0|        }
  853|      0|        if (ival == -1 && PyErr_Occurred())
  ------------------
  |  Branch (853:13): [True: 0, False: 0]
  |  Branch (853:27): [True: 0, False: 0]
  ------------------
  854|      0|            RETURN_ERR_OCCURRED;
  ------------------
  |  |  715|      0|#define RETURN_ERR_OCCURRED return msgbuf
  ------------------
  855|      0|        *p = ival;
  856|      0|        break;
  857|      0|    }
  858|      0|    case 'l': {/* long int */
  ------------------
  |  Branch (858:5): [True: 0, False: 291]
  ------------------
  859|      0|        long *p = va_arg(*p_va, long *);
  860|      0|        long ival = PyLong_AsLong(arg);
  861|      0|        if (ival == -1 && PyErr_Occurred())
  ------------------
  |  Branch (861:13): [True: 0, False: 0]
  |  Branch (861:27): [True: 0, False: 0]
  ------------------
  862|      0|            RETURN_ERR_OCCURRED;
  ------------------
  |  |  715|      0|#define RETURN_ERR_OCCURRED return msgbuf
  ------------------
  863|      0|        else
  864|      0|            *p = ival;
  865|      0|        break;
  866|      0|    }
  867|       |
  868|      0|    case 'k': { /* long sized bitfield */
  ------------------
  |  Branch (868:5): [True: 0, False: 291]
  ------------------
  869|      0|        unsigned long *p = va_arg(*p_va, unsigned long *);
  870|      0|        if (!PyIndex_Check(arg)) {
  ------------------
  |  Branch (870:13): [True: 0, False: 0]
  ------------------
  871|      0|            return converterr("int", arg, msgbuf, bufsize);
  872|      0|        }
  873|      0|        Py_ssize_t bytes = PyLong_AsNativeBytes(arg, p, sizeof(unsigned long),
  874|      0|                Py_ASNATIVEBYTES_NATIVE_ENDIAN |
  ------------------
  |  |   47|      0|#define Py_ASNATIVEBYTES_NATIVE_ENDIAN 3
  ------------------
  875|      0|                Py_ASNATIVEBYTES_ALLOW_INDEX |
  ------------------
  |  |   50|      0|#define Py_ASNATIVEBYTES_ALLOW_INDEX 16
  ------------------
  876|      0|                Py_ASNATIVEBYTES_UNSIGNED_BUFFER);
  ------------------
  |  |   48|      0|#define Py_ASNATIVEBYTES_UNSIGNED_BUFFER 4
  ------------------
  877|      0|        if (bytes < 0) {
  ------------------
  |  Branch (877:13): [True: 0, False: 0]
  ------------------
  878|      0|            RETURN_ERR_OCCURRED;
  ------------------
  |  |  715|      0|#define RETURN_ERR_OCCURRED return msgbuf
  ------------------
  879|      0|        }
  880|      0|        if ((size_t)bytes > sizeof(unsigned long)) {
  ------------------
  |  Branch (880:13): [True: 0, False: 0]
  ------------------
  881|      0|            if (PyErr_WarnEx(PyExc_DeprecationWarning,
  ------------------
  |  Branch (881:17): [True: 0, False: 0]
  ------------------
  882|      0|                "integer value out of range", 1) < 0)
  883|      0|            {
  884|      0|                RETURN_ERR_OCCURRED;
  ------------------
  |  |  715|      0|#define RETURN_ERR_OCCURRED return msgbuf
  ------------------
  885|      0|            }
  886|      0|        }
  887|      0|        break;
  888|      0|    }
  889|       |
  890|      0|    case 'L': {/* long long */
  ------------------
  |  Branch (890:5): [True: 0, False: 291]
  ------------------
  891|      0|        long long *p = va_arg( *p_va, long long * );
  892|      0|        long long ival = PyLong_AsLongLong(arg);
  893|      0|        if (ival == (long long)-1 && PyErr_Occurred())
  ------------------
  |  Branch (893:13): [True: 0, False: 0]
  |  Branch (893:38): [True: 0, False: 0]
  ------------------
  894|      0|            RETURN_ERR_OCCURRED;
  ------------------
  |  |  715|      0|#define RETURN_ERR_OCCURRED return msgbuf
  ------------------
  895|      0|        else
  896|      0|            *p = ival;
  897|      0|        break;
  898|      0|    }
  899|       |
  900|      0|    case 'K': { /* long long sized bitfield */
  ------------------
  |  Branch (900:5): [True: 0, False: 291]
  ------------------
  901|      0|        unsigned long long *p = va_arg(*p_va, unsigned long long *);
  902|      0|        if (!PyIndex_Check(arg)) {
  ------------------
  |  Branch (902:13): [True: 0, False: 0]
  ------------------
  903|      0|            return converterr("int", arg, msgbuf, bufsize);
  904|      0|        }
  905|      0|        Py_ssize_t bytes = PyLong_AsNativeBytes(arg, p, sizeof(unsigned long long),
  906|      0|                Py_ASNATIVEBYTES_NATIVE_ENDIAN |
  ------------------
  |  |   47|      0|#define Py_ASNATIVEBYTES_NATIVE_ENDIAN 3
  ------------------
  907|      0|                Py_ASNATIVEBYTES_ALLOW_INDEX |
  ------------------
  |  |   50|      0|#define Py_ASNATIVEBYTES_ALLOW_INDEX 16
  ------------------
  908|      0|                Py_ASNATIVEBYTES_UNSIGNED_BUFFER);
  ------------------
  |  |   48|      0|#define Py_ASNATIVEBYTES_UNSIGNED_BUFFER 4
  ------------------
  909|      0|        if (bytes < 0) {
  ------------------
  |  Branch (909:13): [True: 0, False: 0]
  ------------------
  910|      0|            RETURN_ERR_OCCURRED;
  ------------------
  |  |  715|      0|#define RETURN_ERR_OCCURRED return msgbuf
  ------------------
  911|      0|        }
  912|      0|        if ((size_t)bytes > sizeof(unsigned long long)) {
  ------------------
  |  Branch (912:13): [True: 0, False: 0]
  ------------------
  913|      0|            if (PyErr_WarnEx(PyExc_DeprecationWarning,
  ------------------
  |  Branch (913:17): [True: 0, False: 0]
  ------------------
  914|      0|                "integer value out of range", 1) < 0)
  915|      0|            {
  916|      0|                RETURN_ERR_OCCURRED;
  ------------------
  |  |  715|      0|#define RETURN_ERR_OCCURRED return msgbuf
  ------------------
  917|      0|            }
  918|      0|        }
  919|      0|        break;
  920|      0|    }
  921|       |
  922|      0|    case 'f': {/* float */
  ------------------
  |  Branch (922:5): [True: 0, False: 291]
  ------------------
  923|      0|        float *p = va_arg(*p_va, float *);
  924|      0|        double dval = PyFloat_AsDouble(arg);
  925|      0|        if (dval == -1.0 && PyErr_Occurred())
  ------------------
  |  Branch (925:13): [True: 0, False: 0]
  |  Branch (925:29): [True: 0, False: 0]
  ------------------
  926|      0|            RETURN_ERR_OCCURRED;
  ------------------
  |  |  715|      0|#define RETURN_ERR_OCCURRED return msgbuf
  ------------------
  927|      0|        else
  928|      0|            *p = (float) dval;
  929|      0|        break;
  930|      0|    }
  931|       |
  932|      0|    case 'd': {/* double */
  ------------------
  |  Branch (932:5): [True: 0, False: 291]
  ------------------
  933|      0|        double *p = va_arg(*p_va, double *);
  934|      0|        double dval = PyFloat_AsDouble(arg);
  935|      0|        if (dval == -1.0 && PyErr_Occurred())
  ------------------
  |  Branch (935:13): [True: 0, False: 0]
  |  Branch (935:29): [True: 0, False: 0]
  ------------------
  936|      0|            RETURN_ERR_OCCURRED;
  ------------------
  |  |  715|      0|#define RETURN_ERR_OCCURRED return msgbuf
  ------------------
  937|      0|        else
  938|      0|            *p = dval;
  939|      0|        break;
  940|      0|    }
  941|       |
  942|      0|    case 'D': {/* complex double */
  ------------------
  |  Branch (942:5): [True: 0, False: 291]
  ------------------
  943|      0|        Py_complex *p = va_arg(*p_va, Py_complex *);
  944|      0|        Py_complex cval;
  945|      0|        cval = PyComplex_AsCComplex(arg);
  946|      0|        if (PyErr_Occurred())
  ------------------
  |  Branch (946:13): [True: 0, False: 0]
  ------------------
  947|      0|            RETURN_ERR_OCCURRED;
  ------------------
  |  |  715|      0|#define RETURN_ERR_OCCURRED return msgbuf
  ------------------
  948|      0|        else
  949|      0|            *p = cval;
  950|      0|        break;
  951|      0|    }
  952|       |
  953|      0|    case 'c': {/* char */
  ------------------
  |  Branch (953:5): [True: 0, False: 291]
  ------------------
  954|      0|        char *p = va_arg(*p_va, char *);
  955|      0|        if (PyBytes_Check(arg)) {
  ------------------
  |  |   28|      0|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_BYTES_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  956|      0|            if (PyBytes_GET_SIZE(arg) != 1) {
  ------------------
  |  |   33|      0|#define PyBytes_GET_SIZE(self) PyBytes_GET_SIZE(_PyObject_CAST(self))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (956:17): [True: 0, False: 0]
  ------------------
  957|      0|                return convertcharerr("a byte string of length 1",
  958|      0|                                      "a bytes object", PyBytes_GET_SIZE(arg),
  ------------------
  |  |   33|      0|#define PyBytes_GET_SIZE(self) PyBytes_GET_SIZE(_PyObject_CAST(self))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  959|      0|                                      msgbuf, bufsize);
  960|      0|            }
  961|      0|            *p = PyBytes_AS_STRING(arg)[0];
  ------------------
  |  |   27|      0|#define PyBytes_AS_STRING(op) PyBytes_AS_STRING(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  962|      0|        }
  963|      0|        else if (PyByteArray_Check(arg)) {
  ------------------
  |  |   24|      0|#define PyByteArray_Check(self) PyObject_TypeCheck((self), &PyByteArray_Type)
  |  |  ------------------
  |  |  |  |  378|      0|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (378:40): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  964|      0|            if (PyByteArray_GET_SIZE(arg) != 1) {
  ------------------
  |  |   38|      0|#define PyByteArray_GET_SIZE(self) PyByteArray_GET_SIZE(_PyObject_CAST(self))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (964:17): [True: 0, False: 0]
  ------------------
  965|      0|                return convertcharerr("a byte string of length 1",
  966|      0|                                      "a bytearray object", PyByteArray_GET_SIZE(arg),
  ------------------
  |  |   38|      0|#define PyByteArray_GET_SIZE(self) PyByteArray_GET_SIZE(_PyObject_CAST(self))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  967|      0|                                      msgbuf, bufsize);
  968|      0|            }
  969|      0|            *p = PyByteArray_AS_STRING(arg)[0];
  ------------------
  |  |   28|      0|#define PyByteArray_AS_STRING(self) PyByteArray_AS_STRING(_PyObject_CAST(self))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  970|      0|        }
  971|      0|        else
  972|      0|            return converterr("a byte string of length 1", arg, msgbuf, bufsize);
  973|      0|        break;
  974|      0|    }
  975|       |
  976|      0|    case 'C': {/* unicode char */
  ------------------
  |  Branch (976:5): [True: 0, False: 291]
  ------------------
  977|      0|        int *p = va_arg(*p_va, int *);
  978|      0|        int kind;
  979|      0|        const void *data;
  980|       |
  981|      0|        if (!PyUnicode_Check(arg))
  ------------------
  |  |  103|      0|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (981:13): [True: 0, False: 0]
  ------------------
  982|      0|            return converterr("a unicode character", arg, msgbuf, bufsize);
  983|       |
  984|      0|        if (PyUnicode_GET_LENGTH(arg) != 1) {
  ------------------
  |  |  299|      0|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (984:13): [True: 0, False: 0]
  ------------------
  985|      0|            return convertcharerr("a unicode character",
  986|      0|                                  "a string", PyUnicode_GET_LENGTH(arg),
  ------------------
  |  |  299|      0|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  987|      0|                                  msgbuf, bufsize);
  988|      0|        }
  989|       |
  990|      0|        kind = PyUnicode_KIND(arg);
  ------------------
  |  |  258|      0|#define PyUnicode_KIND(op) _Py_RVALUE(_PyASCIIObject_CAST(op)->state.kind)
  |  |  ------------------
  |  |  |  |  277|      0|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  991|      0|        data = PyUnicode_DATA(arg);
  ------------------
  |  |  284|      0|#define PyUnicode_DATA(op) _PyUnicode_DATA(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  992|      0|        *p = PyUnicode_READ(kind, data, 0);
  ------------------
  |  |  354|      0|    PyUnicode_READ(_Py_STATIC_CAST(int, kind), \
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  355|      0|                   _Py_STATIC_CAST(const void*, data), \
  |  |  ------------------
  |  |  |  |   34|      0|#  define _Py_STATIC_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  |  |  356|      0|                   (index))
  ------------------
  993|      0|        break;
  994|      0|    }
  995|       |
  996|      0|    case 'p': {/* boolean *p*redicate */
  ------------------
  |  Branch (996:5): [True: 0, False: 291]
  ------------------
  997|      0|        int *p = va_arg(*p_va, int *);
  998|      0|        int val = PyObject_IsTrue(arg);
  999|      0|        if (val > 0)
  ------------------
  |  Branch (999:13): [True: 0, False: 0]
  ------------------
 1000|      0|            *p = 1;
 1001|      0|        else if (val == 0)
  ------------------
  |  Branch (1001:18): [True: 0, False: 0]
  ------------------
 1002|      0|            *p = 0;
 1003|      0|        else
 1004|      0|            RETURN_ERR_OCCURRED;
  ------------------
  |  |  715|      0|#define RETURN_ERR_OCCURRED return msgbuf
  ------------------
 1005|      0|        break;
 1006|      0|    }
 1007|       |
 1008|       |    /* XXX WAAAAH!  's', 'y', 'z', 'u', 'Z', 'e', 'w' codes all
 1009|       |       need to be cleaned up! */
 1010|       |
 1011|      0|    case 'y': {/* any bytes-like object */
  ------------------
  |  Branch (1011:5): [True: 0, False: 291]
  ------------------
 1012|      0|        void **p = (void **)va_arg(*p_va, char **);
 1013|      0|        const char *buf;
 1014|      0|        Py_ssize_t count;
 1015|      0|        if (*format == '*') {
  ------------------
  |  Branch (1015:13): [True: 0, False: 0]
  ------------------
 1016|      0|            if (getbuffer(arg, (Py_buffer*)p, &buf) < 0)
  ------------------
  |  Branch (1016:17): [True: 0, False: 0]
  ------------------
 1017|      0|                return converterr(buf, arg, msgbuf, bufsize);
 1018|      0|            format++;
 1019|      0|            if (addcleanup(p, freelist, cleanup_buffer)) {
  ------------------
  |  Branch (1019:17): [True: 0, False: 0]
  ------------------
 1020|      0|                return converterr(
 1021|      0|                    "(cleanup problem)",
 1022|      0|                    arg, msgbuf, bufsize);
 1023|      0|            }
 1024|      0|            break;
 1025|      0|        }
 1026|      0|        count = convertbuffer(arg, (const void **)p, &buf);
 1027|      0|        if (count < 0)
  ------------------
  |  Branch (1027:13): [True: 0, False: 0]
  ------------------
 1028|      0|            return converterr(buf, arg, msgbuf, bufsize);
 1029|      0|        if (*format == '#') {
  ------------------
  |  Branch (1029:13): [True: 0, False: 0]
  ------------------
 1030|      0|            Py_ssize_t *psize = va_arg(*p_va, Py_ssize_t*);
 1031|      0|            *psize = count;
 1032|      0|            format++;
 1033|      0|        } else {
 1034|      0|            if (strlen(*p) != (size_t)count) {
  ------------------
  |  Branch (1034:17): [True: 0, False: 0]
  ------------------
 1035|      0|                PyErr_SetString(PyExc_ValueError, "embedded null byte");
 1036|      0|                RETURN_ERR_OCCURRED;
  ------------------
  |  |  715|      0|#define RETURN_ERR_OCCURRED return msgbuf
  ------------------
 1037|      0|            }
 1038|      0|        }
 1039|      0|        break;
 1040|      0|    }
 1041|       |
 1042|      0|    case 's': /* text string or bytes-like object */
  ------------------
  |  Branch (1042:5): [True: 0, False: 291]
  ------------------
 1043|      0|    case 'z': /* text string, bytes-like object or None */
  ------------------
  |  Branch (1043:5): [True: 0, False: 291]
  ------------------
 1044|      0|    {
 1045|      0|        if (*format == '*') {
  ------------------
  |  Branch (1045:13): [True: 0, False: 0]
  ------------------
 1046|       |            /* "s*" or "z*" */
 1047|      0|            Py_buffer *p = (Py_buffer *)va_arg(*p_va, Py_buffer *);
 1048|       |
 1049|      0|            if (c == 'z' && arg == Py_None)
  ------------------
  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (1049:17): [True: 0, False: 0]
  |  Branch (1049:29): [True: 0, False: 0]
  ------------------
 1050|      0|                PyBuffer_FillInfo(p, NULL, NULL, 0, 1, 0);
 1051|      0|            else if (PyUnicode_Check(arg)) {
  ------------------
  |  |  103|      0|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1052|      0|                Py_ssize_t len;
 1053|      0|                sarg = PyUnicode_AsUTF8AndSize(arg, &len);
 1054|      0|                if (sarg == NULL)
  ------------------
  |  Branch (1054:21): [True: 0, False: 0]
  ------------------
 1055|      0|                    return converterr(CONV_UNICODE,
  ------------------
  |  |  700|      0|#define CONV_UNICODE "(unicode conversion error)"
  ------------------
 1056|      0|                                      arg, msgbuf, bufsize);
 1057|      0|                PyBuffer_FillInfo(p, arg, (void *)sarg, len, 1, 0);
 1058|      0|            }
 1059|      0|            else { /* any bytes-like object */
 1060|      0|                const char *buf;
 1061|      0|                if (getbuffer(arg, p, &buf) < 0)
  ------------------
  |  Branch (1061:21): [True: 0, False: 0]
  ------------------
 1062|      0|                    return converterr(buf, arg, msgbuf, bufsize);
 1063|      0|            }
 1064|      0|            if (addcleanup(p, freelist, cleanup_buffer)) {
  ------------------
  |  Branch (1064:17): [True: 0, False: 0]
  ------------------
 1065|      0|                return converterr(
 1066|      0|                    "(cleanup problem)",
 1067|      0|                    arg, msgbuf, bufsize);
 1068|      0|            }
 1069|      0|            format++;
 1070|      0|        } else if (*format == '#') { /* a string or read-only bytes-like object */
  ------------------
  |  Branch (1070:20): [True: 0, False: 0]
  ------------------
 1071|       |            /* "s#" or "z#" */
 1072|      0|            const void **p = (const void **)va_arg(*p_va, const char **);
 1073|      0|            Py_ssize_t *psize = va_arg(*p_va, Py_ssize_t*);
 1074|       |
 1075|      0|            if (c == 'z' && arg == Py_None) {
  ------------------
  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (1075:17): [True: 0, False: 0]
  |  Branch (1075:29): [True: 0, False: 0]
  ------------------
 1076|      0|                *p = NULL;
 1077|      0|                *psize = 0;
 1078|      0|            }
 1079|      0|            else if (PyUnicode_Check(arg)) {
  ------------------
  |  |  103|      0|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1080|      0|                Py_ssize_t len;
 1081|      0|                sarg = PyUnicode_AsUTF8AndSize(arg, &len);
 1082|      0|                if (sarg == NULL)
  ------------------
  |  Branch (1082:21): [True: 0, False: 0]
  ------------------
 1083|      0|                    return converterr(CONV_UNICODE,
  ------------------
  |  |  700|      0|#define CONV_UNICODE "(unicode conversion error)"
  ------------------
 1084|      0|                                      arg, msgbuf, bufsize);
 1085|      0|                *p = sarg;
 1086|      0|                *psize = len;
 1087|      0|            }
 1088|      0|            else { /* read-only bytes-like object */
 1089|       |                /* XXX Really? */
 1090|      0|                const char *buf;
 1091|      0|                Py_ssize_t count = convertbuffer(arg, p, &buf);
 1092|      0|                if (count < 0)
  ------------------
  |  Branch (1092:21): [True: 0, False: 0]
  ------------------
 1093|      0|                    return converterr(buf, arg, msgbuf, bufsize);
 1094|      0|                *psize = count;
 1095|      0|            }
 1096|      0|            format++;
 1097|      0|        } else {
 1098|       |            /* "s" or "z" */
 1099|      0|            const char **p = va_arg(*p_va, const char **);
 1100|      0|            Py_ssize_t len;
 1101|      0|            sarg = NULL;
 1102|       |
 1103|      0|            if (c == 'z' && arg == Py_None)
  ------------------
  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (1103:17): [True: 0, False: 0]
  |  Branch (1103:29): [True: 0, False: 0]
  ------------------
 1104|      0|                *p = NULL;
 1105|      0|            else if (PyUnicode_Check(arg)) {
  ------------------
  |  |  103|      0|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1106|      0|                sarg = PyUnicode_AsUTF8AndSize(arg, &len);
 1107|      0|                if (sarg == NULL)
  ------------------
  |  Branch (1107:21): [True: 0, False: 0]
  ------------------
 1108|      0|                    return converterr(CONV_UNICODE,
  ------------------
  |  |  700|      0|#define CONV_UNICODE "(unicode conversion error)"
  ------------------
 1109|      0|                                      arg, msgbuf, bufsize);
 1110|      0|                if (strlen(sarg) != (size_t)len) {
  ------------------
  |  Branch (1110:21): [True: 0, False: 0]
  ------------------
 1111|      0|                    PyErr_SetString(PyExc_ValueError, "embedded null character");
 1112|      0|                    RETURN_ERR_OCCURRED;
  ------------------
  |  |  715|      0|#define RETURN_ERR_OCCURRED return msgbuf
  ------------------
 1113|      0|                }
 1114|      0|                *p = sarg;
 1115|      0|            }
 1116|      0|            else
 1117|      0|                return converterr(c == 'z' ? "str or None" : "str",
  ------------------
  |  Branch (1117:35): [True: 0, False: 0]
  ------------------
 1118|      0|                                  arg, msgbuf, bufsize);
 1119|      0|        }
 1120|      0|        break;
 1121|      0|    }
 1122|       |
 1123|      0|    case 'e': {/* encoded string */
  ------------------
  |  Branch (1123:5): [True: 0, False: 291]
  ------------------
 1124|      0|        char **buffer;
 1125|      0|        const char *encoding;
 1126|      0|        PyObject *s;
 1127|      0|        int recode_strings;
 1128|      0|        Py_ssize_t size;
 1129|      0|        const char *ptr;
 1130|       |
 1131|       |        /* Get 'e' parameter: the encoding name */
 1132|      0|        encoding = (const char *)va_arg(*p_va, const char *);
 1133|      0|        if (encoding == NULL)
  ------------------
  |  Branch (1133:13): [True: 0, False: 0]
  ------------------
 1134|      0|            encoding = PyUnicode_GetDefaultEncoding();
 1135|       |
 1136|       |        /* Get output buffer parameter:
 1137|       |           's' (recode all objects via Unicode) or
 1138|       |           't' (only recode non-string objects)
 1139|       |        */
 1140|      0|        if (*format == 's')
  ------------------
  |  Branch (1140:13): [True: 0, False: 0]
  ------------------
 1141|      0|            recode_strings = 1;
 1142|      0|        else if (*format == 't')
  ------------------
  |  Branch (1142:18): [True: 0, False: 0]
  ------------------
 1143|      0|            recode_strings = 0;
 1144|      0|        else
 1145|      0|            return converterr(
 1146|      0|                "(unknown parser marker combination)",
 1147|      0|                arg, msgbuf, bufsize);
 1148|      0|        buffer = (char **)va_arg(*p_va, char **);
 1149|      0|        format++;
 1150|      0|        if (buffer == NULL)
  ------------------
  |  Branch (1150:13): [True: 0, False: 0]
  ------------------
 1151|      0|            return converterr("(buffer is NULL)",
 1152|      0|                              arg, msgbuf, bufsize);
 1153|       |
 1154|       |        /* Encode object */
 1155|      0|        if (!recode_strings &&
  ------------------
  |  Branch (1155:13): [True: 0, False: 0]
  ------------------
 1156|      0|            (PyBytes_Check(arg) || PyByteArray_Check(arg))) {
  ------------------
  |  |   28|      0|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_BYTES_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                          (PyBytes_Check(arg) || PyByteArray_Check(arg))) {
  ------------------
  |  |   24|      0|#define PyByteArray_Check(self) PyObject_TypeCheck((self), &PyByteArray_Type)
  |  |  ------------------
  |  |  |  |  378|      0|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (378:40): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1157|      0|            s = Py_NewRef(arg);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1158|      0|            if (PyBytes_Check(arg)) {
  ------------------
  |  |   28|      0|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_BYTES_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1159|      0|                size = PyBytes_GET_SIZE(s);
  ------------------
  |  |   33|      0|#define PyBytes_GET_SIZE(self) PyBytes_GET_SIZE(_PyObject_CAST(self))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1160|      0|                ptr = PyBytes_AS_STRING(s);
  ------------------
  |  |   27|      0|#define PyBytes_AS_STRING(op) PyBytes_AS_STRING(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1161|      0|            }
 1162|      0|            else {
 1163|      0|                size = PyByteArray_GET_SIZE(s);
  ------------------
  |  |   38|      0|#define PyByteArray_GET_SIZE(self) PyByteArray_GET_SIZE(_PyObject_CAST(self))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1164|      0|                ptr = PyByteArray_AS_STRING(s);
  ------------------
  |  |   28|      0|#define PyByteArray_AS_STRING(self) PyByteArray_AS_STRING(_PyObject_CAST(self))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1165|      0|            }
 1166|      0|        }
 1167|      0|        else if (PyUnicode_Check(arg)) {
  ------------------
  |  |  103|      0|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1168|       |            /* Encode object; use default error handling */
 1169|      0|            s = PyUnicode_AsEncodedString(arg,
 1170|      0|                                          encoding,
 1171|      0|                                          NULL);
 1172|      0|            if (s == NULL)
  ------------------
  |  Branch (1172:17): [True: 0, False: 0]
  ------------------
 1173|      0|                return converterr("(encoding failed)",
 1174|      0|                                  arg, msgbuf, bufsize);
 1175|      0|            assert(PyBytes_Check(s));
  ------------------
  |  Branch (1175:13): [True: 0, False: 0]
  ------------------
 1176|      0|            size = PyBytes_GET_SIZE(s);
  ------------------
  |  |   33|      0|#define PyBytes_GET_SIZE(self) PyBytes_GET_SIZE(_PyObject_CAST(self))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1177|      0|            ptr = PyBytes_AS_STRING(s);
  ------------------
  |  |   27|      0|#define PyBytes_AS_STRING(op) PyBytes_AS_STRING(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1178|      0|            if (ptr == NULL)
  ------------------
  |  Branch (1178:17): [True: 0, False: 0]
  ------------------
 1179|      0|                ptr = "";
 1180|      0|        }
 1181|      0|        else {
 1182|      0|            return converterr(
 1183|      0|                recode_strings ? "str" : "str, bytes or bytearray",
  ------------------
  |  Branch (1183:17): [True: 0, False: 0]
  ------------------
 1184|      0|                arg, msgbuf, bufsize);
 1185|      0|        }
 1186|       |
 1187|       |        /* Write output; output is guaranteed to be 0-terminated */
 1188|      0|        if (*format == '#') {
  ------------------
  |  Branch (1188:13): [True: 0, False: 0]
  ------------------
 1189|       |            /* Using buffer length parameter '#':
 1190|       |
 1191|       |               - if *buffer is NULL, a new buffer of the
 1192|       |               needed size is allocated and the data
 1193|       |               copied into it; *buffer is updated to point
 1194|       |               to the new buffer; the caller is
 1195|       |               responsible for PyMem_Free()ing it after
 1196|       |               usage
 1197|       |
 1198|       |               - if *buffer is not NULL, the data is
 1199|       |               copied to *buffer; *buffer_len has to be
 1200|       |               set to the size of the buffer on input;
 1201|       |               buffer overflow is signalled with an error;
 1202|       |               buffer has to provide enough room for the
 1203|       |               encoded string plus the trailing 0-byte
 1204|       |
 1205|       |               - in both cases, *buffer_len is updated to
 1206|       |               the size of the buffer /excluding/ the
 1207|       |               trailing 0-byte
 1208|       |
 1209|       |            */
 1210|      0|            Py_ssize_t *psize = va_arg(*p_va, Py_ssize_t*);
 1211|       |
 1212|      0|            format++;
 1213|      0|            if (psize == NULL) {
  ------------------
  |  Branch (1213:17): [True: 0, False: 0]
  ------------------
 1214|      0|                Py_DECREF(s);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1215|      0|                return converterr(
 1216|      0|                    "(buffer_len is NULL)",
 1217|      0|                    arg, msgbuf, bufsize);
 1218|      0|            }
 1219|      0|            if (*buffer == NULL) {
  ------------------
  |  Branch (1219:17): [True: 0, False: 0]
  ------------------
 1220|      0|                *buffer = PyMem_NEW(char, size + 1);
  ------------------
  |  |   82|      0|#define PyMem_NEW(type, n)        PyMem_New(type, (n))
  |  |  ------------------
  |  |  |  |   64|      0|  ( ((size_t)(n) > PY_SSIZE_T_MAX / sizeof(type)) ? NULL :      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|#   define PY_SSIZE_T_MAX SSIZE_MAX
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (64:5): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   65|      0|        ( (type *) PyMem_Malloc((n) * sizeof(type)) ) )
  |  |  ------------------
  ------------------
 1221|      0|                if (*buffer == NULL) {
  ------------------
  |  Branch (1221:21): [True: 0, False: 0]
  ------------------
 1222|      0|                    Py_DECREF(s);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1223|      0|                    PyErr_NoMemory();
 1224|      0|                    RETURN_ERR_OCCURRED;
  ------------------
  |  |  715|      0|#define RETURN_ERR_OCCURRED return msgbuf
  ------------------
 1225|      0|                }
 1226|      0|                if (addcleanup(buffer, freelist, cleanup_ptr)) {
  ------------------
  |  Branch (1226:21): [True: 0, False: 0]
  ------------------
 1227|      0|                    Py_DECREF(s);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1228|      0|                    return converterr(
 1229|      0|                        "(cleanup problem)",
 1230|      0|                        arg, msgbuf, bufsize);
 1231|      0|                }
 1232|      0|            } else {
 1233|      0|                if (size + 1 > *psize) {
  ------------------
  |  Branch (1233:21): [True: 0, False: 0]
  ------------------
 1234|      0|                    Py_DECREF(s);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1235|      0|                    PyErr_Format(PyExc_ValueError,
 1236|      0|                                 "encoded string too long "
 1237|      0|                                 "(%zd, maximum length %zd)",
 1238|      0|                                 (Py_ssize_t)size, (Py_ssize_t)(*psize - 1));
 1239|      0|                    RETURN_ERR_OCCURRED;
  ------------------
  |  |  715|      0|#define RETURN_ERR_OCCURRED return msgbuf
  ------------------
 1240|      0|                }
 1241|      0|            }
 1242|      0|            memcpy(*buffer, ptr, size+1);
 1243|       |
 1244|      0|            *psize = size;
 1245|      0|        }
 1246|      0|        else {
 1247|       |            /* Using a 0-terminated buffer:
 1248|       |
 1249|       |               - the encoded string has to be 0-terminated
 1250|       |               for this variant to work; if it is not, an
 1251|       |               error raised
 1252|       |
 1253|       |               - a new buffer of the needed size is
 1254|       |               allocated and the data copied into it;
 1255|       |               *buffer is updated to point to the new
 1256|       |               buffer; the caller is responsible for
 1257|       |               PyMem_Free()ing it after usage
 1258|       |
 1259|       |            */
 1260|      0|            if ((Py_ssize_t)strlen(ptr) != size) {
  ------------------
  |  Branch (1260:17): [True: 0, False: 0]
  ------------------
 1261|      0|                Py_DECREF(s);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1262|      0|                return converterr(
 1263|      0|                    "encoded string without null bytes",
 1264|      0|                    arg, msgbuf, bufsize);
 1265|      0|            }
 1266|      0|            *buffer = PyMem_NEW(char, size + 1);
  ------------------
  |  |   82|      0|#define PyMem_NEW(type, n)        PyMem_New(type, (n))
  |  |  ------------------
  |  |  |  |   64|      0|  ( ((size_t)(n) > PY_SSIZE_T_MAX / sizeof(type)) ? NULL :      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|#   define PY_SSIZE_T_MAX SSIZE_MAX
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (64:5): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   65|      0|        ( (type *) PyMem_Malloc((n) * sizeof(type)) ) )
  |  |  ------------------
  ------------------
 1267|      0|            if (*buffer == NULL) {
  ------------------
  |  Branch (1267:17): [True: 0, False: 0]
  ------------------
 1268|      0|                Py_DECREF(s);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1269|      0|                PyErr_NoMemory();
 1270|      0|                RETURN_ERR_OCCURRED;
  ------------------
  |  |  715|      0|#define RETURN_ERR_OCCURRED return msgbuf
  ------------------
 1271|      0|            }
 1272|      0|            if (addcleanup(buffer, freelist, cleanup_ptr)) {
  ------------------
  |  Branch (1272:17): [True: 0, False: 0]
  ------------------
 1273|      0|                Py_DECREF(s);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1274|      0|                return converterr("(cleanup problem)",
 1275|      0|                                arg, msgbuf, bufsize);
 1276|      0|            }
 1277|      0|            memcpy(*buffer, ptr, size+1);
 1278|      0|        }
 1279|      0|        Py_DECREF(s);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1280|      0|        break;
 1281|      0|    }
 1282|       |
 1283|      0|    case 'S': { /* PyBytes object */
  ------------------
  |  Branch (1283:5): [True: 0, False: 291]
  ------------------
 1284|      0|        PyObject **p = va_arg(*p_va, PyObject **);
 1285|      0|        if (PyBytes_Check(arg))
  ------------------
  |  |   28|      0|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_BYTES_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1286|      0|            *p = arg;
 1287|      0|        else
 1288|      0|            return converterr("bytes", arg, msgbuf, bufsize);
 1289|      0|        break;
 1290|      0|    }
 1291|       |
 1292|      0|    case 'Y': { /* PyByteArray object */
  ------------------
  |  Branch (1292:5): [True: 0, False: 291]
  ------------------
 1293|      0|        PyObject **p = va_arg(*p_va, PyObject **);
 1294|      0|        if (PyByteArray_Check(arg))
  ------------------
  |  |   24|      0|#define PyByteArray_Check(self) PyObject_TypeCheck((self), &PyByteArray_Type)
  |  |  ------------------
  |  |  |  |  378|      0|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (378:40): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1295|      0|            *p = arg;
 1296|      0|        else
 1297|      0|            return converterr("bytearray", arg, msgbuf, bufsize);
 1298|      0|        break;
 1299|      0|    }
 1300|       |
 1301|    110|    case 'U': { /* PyUnicode object */
  ------------------
  |  Branch (1301:5): [True: 110, False: 181]
  ------------------
 1302|    110|        PyObject **p = va_arg(*p_va, PyObject **);
 1303|    110|        if (PyUnicode_Check(arg)) {
  ------------------
  |  |  103|    110|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|    110|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 110, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1304|    110|            *p = arg;
 1305|    110|        }
 1306|      0|        else
 1307|      0|            return converterr("str", arg, msgbuf, bufsize);
 1308|    110|        break;
 1309|    110|    }
 1310|       |
 1311|    181|    case 'O': { /* object */
  ------------------
  |  Branch (1311:5): [True: 181, False: 110]
  ------------------
 1312|    181|        PyTypeObject *type;
 1313|    181|        PyObject **p;
 1314|    181|        if (*format == '!') {
  ------------------
  |  Branch (1314:13): [True: 87, False: 94]
  ------------------
 1315|     87|            type = va_arg(*p_va, PyTypeObject*);
 1316|     87|            p = va_arg(*p_va, PyObject **);
 1317|     87|            format++;
 1318|     87|            if (PyType_IsSubtype(Py_TYPE(arg), type))
  ------------------
  |  |  213|     87|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     87|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     87|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1318:17): [True: 87, False: 0]
  ------------------
 1319|     87|                *p = arg;
 1320|      0|            else
 1321|      0|                return converterr(type->tp_name, arg, msgbuf, bufsize);
 1322|       |
 1323|     87|        }
 1324|     94|        else if (*format == '&') {
  ------------------
  |  Branch (1324:18): [True: 0, False: 94]
  ------------------
 1325|      0|            typedef int (*converter)(PyObject *, void *);
 1326|      0|            converter convert = va_arg(*p_va, converter);
 1327|      0|            void *addr = va_arg(*p_va, void *);
 1328|      0|            int res;
 1329|      0|            format++;
 1330|      0|            if (! (res = (*convert)(arg, addr)))
  ------------------
  |  Branch (1330:17): [True: 0, False: 0]
  ------------------
 1331|      0|                return converterr("(unspecified)",
 1332|      0|                                  arg, msgbuf, bufsize);
 1333|      0|            if (res == Py_CLEANUP_SUPPORTED &&
  ------------------
  |  |   57|      0|#define Py_CLEANUP_SUPPORTED 0x20000
  ------------------
  |  Branch (1333:17): [True: 0, False: 0]
  ------------------
 1334|      0|                addcleanup(addr, freelist, convert) == -1)
  ------------------
  |  Branch (1334:17): [True: 0, False: 0]
  ------------------
 1335|      0|                return converterr("(cleanup problem)",
 1336|      0|                                arg, msgbuf, bufsize);
 1337|      0|        }
 1338|     94|        else {
 1339|     94|            p = va_arg(*p_va, PyObject **);
 1340|     94|            *p = arg;
 1341|     94|        }
 1342|    181|        break;
 1343|    181|    }
 1344|       |
 1345|       |
 1346|    181|    case 'w': { /* "w*": memory buffer, read-write access */
  ------------------
  |  Branch (1346:5): [True: 0, False: 291]
  ------------------
 1347|      0|        void **p = va_arg(*p_va, void **);
 1348|       |
 1349|      0|        if (*format != '*')
  ------------------
  |  Branch (1349:13): [True: 0, False: 0]
  ------------------
 1350|      0|            return converterr(
 1351|      0|                "(invalid use of 'w' format character)",
 1352|      0|                arg, msgbuf, bufsize);
 1353|      0|        format++;
 1354|       |
 1355|       |        /* Caller is interested in Py_buffer, and the object supports it
 1356|       |           directly. The request implicitly asks for PyBUF_SIMPLE, so the
 1357|       |           result is C-contiguous with format 'B'. */
 1358|      0|        if (PyObject_GetBuffer(arg, (Py_buffer*)p, PyBUF_WRITABLE) < 0) {
  ------------------
  |  |  109|      0|#define PyBUF_WRITABLE 0x0001
  ------------------
  |  Branch (1358:13): [True: 0, False: 0]
  ------------------
 1359|      0|            PyErr_Clear();
 1360|      0|            return converterr("read-write bytes-like object",
 1361|      0|                              arg, msgbuf, bufsize);
 1362|      0|        }
 1363|      0|        assert(PyBuffer_IsContiguous((Py_buffer *)p, 'C'));
  ------------------
  |  Branch (1363:9): [True: 0, False: 0]
  ------------------
 1364|      0|        if (addcleanup(p, freelist, cleanup_buffer)) {
  ------------------
  |  Branch (1364:13): [True: 0, False: 0]
  ------------------
 1365|      0|            return converterr(
 1366|      0|                "(cleanup problem)",
 1367|      0|                arg, msgbuf, bufsize);
 1368|      0|        }
 1369|      0|        break;
 1370|      0|    }
 1371|       |
 1372|      0|    default:
  ------------------
  |  Branch (1372:5): [True: 0, False: 291]
  ------------------
 1373|      0|        return converterr("(impossible<bad format char>)", arg, msgbuf, bufsize);
 1374|       |
 1375|    291|    }
 1376|       |
 1377|    291|    *p_format = format;
 1378|    291|    return NULL;
 1379|       |
 1380|    291|#undef RETURN_ERR_OCCURRED
 1381|    291|}
getargs.c:vgetargs1:
  414|    110|{
  415|    110|    PyObject **stack;
  416|    110|    Py_ssize_t nargs;
  417|       |
  418|    110|    if (!(flags & FLAG_COMPAT)) {
  ------------------
  |  |   24|    110|#define FLAG_COMPAT 1
  ------------------
  |  Branch (418:9): [True: 110, False: 0]
  ------------------
  419|    110|        assert(args != NULL);
  ------------------
  |  Branch (419:9): [True: 110, False: 0]
  ------------------
  420|       |
  421|    110|        if (!PyTuple_Check(args)) {
  ------------------
  |  |   27|    110|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TUPLE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|    110|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (421:13): [True: 0, False: 110]
  ------------------
  422|      0|            PyErr_SetString(PyExc_SystemError,
  423|      0|                "new style getargs format but argument is not a tuple");
  424|      0|            return 0;
  425|      0|        }
  426|       |
  427|    110|        stack = _PyTuple_ITEMS(args);
  ------------------
  |  |   26|    110|#define _PyTuple_ITEMS(op) _Py_RVALUE(_PyTuple_CAST(op)->ob_item)
  |  |  ------------------
  |  |  |  |  277|    220|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 110, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  428|    110|        nargs = PyTuple_GET_SIZE(args);
  ------------------
  |  |   27|    110|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    110|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    110|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  429|    110|    }
  430|      0|    else {
  431|      0|        stack = NULL;
  432|      0|        nargs = 0;
  433|      0|    }
  434|       |
  435|    110|    return vgetargs1_impl(args, stack, nargs, format, p_va, flags);
  436|    110|}
getargs.c:vgetargskeywords_impl:
 1677|     39|{
 1678|     39|    char msgbuf[512];
 1679|     39|    int levels[32];
 1680|     39|    const char *fname, *msg, *custom_msg;
 1681|     39|    int min = INT_MAX;
 1682|     39|    int max = INT_MAX;
 1683|     39|    int i, pos, len;
 1684|     39|    int skip = 0;
 1685|     39|    Py_ssize_t nkwargs;
 1686|     39|    freelistentry_t static_entries[STATIC_FREELIST_ENTRIES];
 1687|     39|    freelist_t freelist;
 1688|     39|    PyObject * const *kwstack = NULL;
 1689|       |
 1690|     39|    freelist.entries = static_entries;
 1691|     39|    freelist.first_available = 0;
 1692|     39|    freelist.entries_malloced = 0;
 1693|       |
 1694|     39|    assert(args != NULL || nargs == 0);
  ------------------
  |  Branch (1694:5): [True: 39, False: 0]
  |  Branch (1694:5): [True: 0, False: 0]
  ------------------
 1695|     39|    assert(kwargs == NULL || PyDict_Check(kwargs));
  ------------------
  |  Branch (1695:5): [True: 32, False: 7]
  |  Branch (1695:5): [True: 7, False: 0]
  ------------------
 1696|     39|    assert(kwnames == NULL || PyTuple_Check(kwnames));
  ------------------
  |  Branch (1696:5): [True: 39, False: 0]
  |  Branch (1696:5): [True: 0, False: 0]
  ------------------
 1697|     39|    assert(format != NULL);
  ------------------
  |  Branch (1697:5): [True: 39, False: 0]
  ------------------
 1698|     39|    assert(kwlist != NULL);
  ------------------
  |  Branch (1698:5): [True: 39, False: 0]
  ------------------
 1699|     39|    assert(p_va != NULL);
  ------------------
  |  Branch (1699:5): [True: 39, False: 0]
  ------------------
 1700|       |
 1701|       |    /* grab the function name or custom error msg first (mutually exclusive) */
 1702|     39|    fname = strchr(format, ':');
 1703|     39|    if (fname) {
  ------------------
  |  Branch (1703:9): [True: 39, False: 0]
  ------------------
 1704|     39|        fname++;
 1705|     39|        custom_msg = NULL;
 1706|     39|    }
 1707|      0|    else {
 1708|      0|        custom_msg = strchr(format,';');
 1709|      0|        if (custom_msg)
  ------------------
  |  Branch (1709:13): [True: 0, False: 0]
  ------------------
 1710|      0|            custom_msg++;
 1711|      0|    }
 1712|       |
 1713|       |    /* scan kwlist and count the number of positional-only parameters */
 1714|     39|    for (pos = 0; kwlist[pos] && !*kwlist[pos]; pos++) {
  ------------------
  |  Branch (1714:19): [True: 39, False: 0]
  |  Branch (1714:34): [True: 0, False: 39]
  ------------------
 1715|      0|    }
 1716|       |    /* scan kwlist and get greatest possible nbr of args */
 1717|    124|    for (len = pos; kwlist[len]; len++) {
  ------------------
  |  Branch (1717:21): [True: 85, False: 39]
  ------------------
 1718|     85|        if (!*kwlist[len]) {
  ------------------
  |  Branch (1718:13): [True: 0, False: 85]
  ------------------
 1719|      0|            PyErr_SetString(PyExc_SystemError,
 1720|      0|                            "Empty keyword parameter name");
 1721|      0|            return cleanreturn(0, &freelist);
 1722|      0|        }
 1723|     85|    }
 1724|       |
 1725|     39|    if (len > STATIC_FREELIST_ENTRIES) {
  ------------------
  |  |   44|     39|#define STATIC_FREELIST_ENTRIES 8
  ------------------
  |  Branch (1725:9): [True: 0, False: 39]
  ------------------
 1726|      0|        freelist.entries = PyMem_NEW(freelistentry_t, len);
  ------------------
  |  |   82|      0|#define PyMem_NEW(type, n)        PyMem_New(type, (n))
  |  |  ------------------
  |  |  |  |   64|      0|  ( ((size_t)(n) > PY_SSIZE_T_MAX / sizeof(type)) ? NULL :      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|#   define PY_SSIZE_T_MAX SSIZE_MAX
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (64:5): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   65|      0|        ( (type *) PyMem_Malloc((n) * sizeof(type)) ) )
  |  |  ------------------
  ------------------
 1727|      0|        if (freelist.entries == NULL) {
  ------------------
  |  Branch (1727:13): [True: 0, False: 0]
  ------------------
 1728|      0|            PyErr_NoMemory();
 1729|      0|            return 0;
 1730|      0|        }
 1731|      0|        freelist.entries_malloced = 1;
 1732|      0|    }
 1733|       |
 1734|     39|    if (kwargs != NULL) {
  ------------------
  |  Branch (1734:9): [True: 7, False: 32]
  ------------------
 1735|      7|        nkwargs = PyDict_GET_SIZE(kwargs);
  ------------------
  |  |   63|      7|#define PyDict_GET_SIZE(op) PyDict_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      7|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1736|      7|    }
 1737|     32|    else if (kwnames != NULL) {
  ------------------
  |  Branch (1737:14): [True: 0, False: 32]
  ------------------
 1738|      0|        nkwargs = PyTuple_GET_SIZE(kwnames);
  ------------------
  |  |   27|      0|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1739|      0|        kwstack = args + nargs;
 1740|      0|    }
 1741|     32|    else {
 1742|     32|        nkwargs = 0;
 1743|     32|    }
 1744|     39|    if (nargs + nkwargs > len) {
  ------------------
  |  Branch (1744:9): [True: 0, False: 39]
  ------------------
 1745|       |        /* Adding "keyword" (when nargs == 0) prevents producing wrong error
 1746|       |           messages in some special cases (see bpo-31229). */
 1747|      0|        PyErr_Format(PyExc_TypeError,
 1748|      0|                     "%.200s%s takes at most %d %sargument%s (%zd given)",
 1749|      0|                     (fname == NULL) ? "function" : fname,
  ------------------
  |  Branch (1749:22): [True: 0, False: 0]
  ------------------
 1750|      0|                     (fname == NULL) ? "" : "()",
  ------------------
  |  Branch (1750:22): [True: 0, False: 0]
  ------------------
 1751|      0|                     len,
 1752|      0|                     (nargs == 0) ? "keyword " : "",
  ------------------
  |  Branch (1752:22): [True: 0, False: 0]
  ------------------
 1753|      0|                     (len == 1) ? "" : "s",
  ------------------
  |  Branch (1753:22): [True: 0, False: 0]
  ------------------
 1754|      0|                     nargs + nkwargs);
 1755|      0|        return cleanreturn(0, &freelist);
 1756|      0|    }
 1757|       |
 1758|       |    /* convert tuple args and keyword args in same loop, using kwlist to drive process */
 1759|     51|    for (i = 0; i < len; i++) {
  ------------------
  |  Branch (1759:17): [True: 51, False: 0]
  ------------------
 1760|     51|        if (*format == '|') {
  ------------------
  |  Branch (1760:13): [True: 39, False: 12]
  ------------------
 1761|     39|            if (min != INT_MAX) {
  ------------------
  |  Branch (1761:17): [True: 0, False: 39]
  ------------------
 1762|      0|                PyErr_SetString(PyExc_SystemError,
 1763|      0|                                "Invalid format string (| specified twice)");
 1764|      0|                return cleanreturn(0, &freelist);
 1765|      0|            }
 1766|       |
 1767|     39|            min = i;
 1768|     39|            format++;
 1769|       |
 1770|     39|            if (max != INT_MAX) {
  ------------------
  |  Branch (1770:17): [True: 0, False: 39]
  ------------------
 1771|      0|                PyErr_SetString(PyExc_SystemError,
 1772|      0|                                "Invalid format string ($ before |)");
 1773|      0|                return cleanreturn(0, &freelist);
 1774|      0|            }
 1775|     39|        }
 1776|     51|        if (*format == '$') {
  ------------------
  |  Branch (1776:13): [True: 39, False: 12]
  ------------------
 1777|     39|            if (max != INT_MAX) {
  ------------------
  |  Branch (1777:17): [True: 0, False: 39]
  ------------------
 1778|      0|                PyErr_SetString(PyExc_SystemError,
 1779|      0|                                "Invalid format string ($ specified twice)");
 1780|      0|                return cleanreturn(0, &freelist);
 1781|      0|            }
 1782|       |
 1783|     39|            max = i;
 1784|     39|            format++;
 1785|       |
 1786|     39|            if (max < pos) {
  ------------------
  |  Branch (1786:17): [True: 0, False: 39]
  ------------------
 1787|      0|                PyErr_SetString(PyExc_SystemError,
 1788|      0|                                "Empty parameter name after $");
 1789|      0|                return cleanreturn(0, &freelist);
 1790|      0|            }
 1791|     39|            if (skip) {
  ------------------
  |  Branch (1791:17): [True: 0, False: 39]
  ------------------
 1792|       |                /* Now we know the minimal and the maximal numbers of
 1793|       |                 * positional arguments and can raise an exception with
 1794|       |                 * informative message (see below). */
 1795|      0|                break;
 1796|      0|            }
 1797|     39|            if (max < nargs) {
  ------------------
  |  Branch (1797:17): [True: 0, False: 39]
  ------------------
 1798|      0|                if (max == 0) {
  ------------------
  |  Branch (1798:21): [True: 0, False: 0]
  ------------------
 1799|      0|                    PyErr_Format(PyExc_TypeError,
 1800|      0|                                 "%.200s%s takes no positional arguments",
 1801|      0|                                 (fname == NULL) ? "function" : fname,
  ------------------
  |  Branch (1801:34): [True: 0, False: 0]
  ------------------
 1802|      0|                                 (fname == NULL) ? "" : "()");
  ------------------
  |  Branch (1802:34): [True: 0, False: 0]
  ------------------
 1803|      0|                }
 1804|      0|                else {
 1805|      0|                    PyErr_Format(PyExc_TypeError,
 1806|      0|                                 "%.200s%s takes %s %d positional argument%s"
 1807|      0|                                 " (%zd given)",
 1808|      0|                                 (fname == NULL) ? "function" : fname,
  ------------------
  |  Branch (1808:34): [True: 0, False: 0]
  ------------------
 1809|      0|                                 (fname == NULL) ? "" : "()",
  ------------------
  |  Branch (1809:34): [True: 0, False: 0]
  ------------------
 1810|      0|                                 (min != INT_MAX) ? "at most" : "exactly",
  ------------------
  |  Branch (1810:34): [True: 0, False: 0]
  ------------------
 1811|      0|                                 max,
 1812|      0|                                 max == 1 ? "" : "s",
  ------------------
  |  Branch (1812:34): [True: 0, False: 0]
  ------------------
 1813|      0|                                 nargs);
 1814|      0|                }
 1815|      0|                return cleanreturn(0, &freelist);
 1816|      0|            }
 1817|     39|        }
 1818|     51|        if (IS_END_OF_FORMAT(*format)) {
  ------------------
  |  | 1670|     51|#define IS_END_OF_FORMAT(c) (c == '\0' || c == ';' || c == ':')
  |  |  ------------------
  |  |  |  Branch (1670:30): [True: 0, False: 51]
  |  |  |  Branch (1670:43): [True: 0, False: 51]
  |  |  |  Branch (1670:55): [True: 0, False: 51]
  |  |  ------------------
  ------------------
 1819|      0|            PyErr_Format(PyExc_SystemError,
 1820|      0|                         "More keyword list entries (%d) than "
 1821|      0|                         "format specifiers (%d)", len, i);
 1822|      0|            return cleanreturn(0, &freelist);
 1823|      0|        }
 1824|     51|        if (!skip) {
  ------------------
  |  Branch (1824:13): [True: 51, False: 0]
  ------------------
 1825|     51|            PyObject *current_arg;
 1826|     51|            if (i < nargs) {
  ------------------
  |  Branch (1826:17): [True: 0, False: 51]
  ------------------
 1827|      0|                current_arg = Py_NewRef(args[i]);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1828|      0|            }
 1829|     51|            else if (nkwargs && i >= pos) {
  ------------------
  |  Branch (1829:22): [True: 12, False: 39]
  |  Branch (1829:33): [True: 12, False: 0]
  ------------------
 1830|     12|                if (kwargs != NULL) {
  ------------------
  |  Branch (1830:21): [True: 12, False: 0]
  ------------------
 1831|     12|                    if (PyDict_GetItemStringRef(kwargs, kwlist[i], &current_arg) < 0) {
  ------------------
  |  Branch (1831:25): [True: 0, False: 12]
  ------------------
 1832|      0|                        return cleanreturn(0, &freelist);
 1833|      0|                    }
 1834|     12|                }
 1835|      0|                else {
 1836|      0|                    current_arg = find_keyword_str(kwnames, kwstack, kwlist[i]);
 1837|      0|                }
 1838|     12|                if (current_arg) {
  ------------------
  |  Branch (1838:21): [True: 7, False: 5]
  ------------------
 1839|      7|                    --nkwargs;
 1840|      7|                }
 1841|     12|            }
 1842|     39|            else {
 1843|     39|                current_arg = NULL;
 1844|     39|            }
 1845|       |
 1846|     51|            if (current_arg) {
  ------------------
  |  Branch (1846:17): [True: 7, False: 44]
  ------------------
 1847|      7|                msg = convertitem(current_arg, &format, p_va, flags,
 1848|      7|                    levels, msgbuf, sizeof(msgbuf), &freelist);
 1849|      7|                Py_DECREF(current_arg);
  ------------------
  |  |  430|      7|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      7|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1850|      7|                if (msg) {
  ------------------
  |  Branch (1850:21): [True: 0, False: 7]
  ------------------
 1851|      0|                    seterror(i+1, msg, levels, fname, custom_msg);
 1852|      0|                    return cleanreturn(0, &freelist);
 1853|      0|                }
 1854|      7|                continue;
 1855|      7|            }
 1856|       |
 1857|     44|            if (i < min) {
  ------------------
  |  Branch (1857:17): [True: 0, False: 44]
  ------------------
 1858|      0|                if (i < pos) {
  ------------------
  |  Branch (1858:21): [True: 0, False: 0]
  ------------------
 1859|      0|                    assert (min == INT_MAX);
  ------------------
  |  Branch (1859:21): [True: 0, False: 0]
  ------------------
 1860|      0|                    assert (max == INT_MAX);
  ------------------
  |  Branch (1860:21): [True: 0, False: 0]
  ------------------
 1861|      0|                    skip = 1;
 1862|       |                    /* At that moment we still don't know the minimal and
 1863|       |                     * the maximal numbers of positional arguments.  Raising
 1864|       |                     * an exception is deferred until we encounter | and $
 1865|       |                     * or the end of the format. */
 1866|      0|                }
 1867|      0|                else {
 1868|      0|                    PyErr_Format(PyExc_TypeError,  "%.200s%s missing required "
 1869|      0|                                 "argument '%s' (pos %d)",
 1870|      0|                                 (fname == NULL) ? "function" : fname,
  ------------------
  |  Branch (1870:34): [True: 0, False: 0]
  ------------------
 1871|      0|                                 (fname == NULL) ? "" : "()",
  ------------------
  |  Branch (1871:34): [True: 0, False: 0]
  ------------------
 1872|      0|                                 kwlist[i], i+1);
 1873|      0|                    return cleanreturn(0, &freelist);
 1874|      0|                }
 1875|      0|            }
 1876|       |            /* current code reports success when all required args
 1877|       |             * fulfilled and no keyword args left, with no further
 1878|       |             * validation. XXX Maybe skip this in debug build ?
 1879|       |             */
 1880|     44|            if (!nkwargs && !skip) {
  ------------------
  |  Branch (1880:17): [True: 39, False: 5]
  |  Branch (1880:29): [True: 39, False: 0]
  ------------------
 1881|     39|                return cleanreturn(1, &freelist);
 1882|     39|            }
 1883|     44|        }
 1884|       |
 1885|       |        /* We are into optional args, skip through to any remaining
 1886|       |         * keyword args */
 1887|      5|        msg = skipitem(&format, p_va, flags);
 1888|      5|        if (msg) {
  ------------------
  |  Branch (1888:13): [True: 0, False: 5]
  ------------------
 1889|      0|            PyErr_Format(PyExc_SystemError, "%s: '%s'", msg,
 1890|      0|                         format);
 1891|      0|            return cleanreturn(0, &freelist);
 1892|      0|        }
 1893|      5|    }
 1894|       |
 1895|      0|    if (skip) {
  ------------------
  |  Branch (1895:9): [True: 0, False: 0]
  ------------------
 1896|      0|        PyErr_Format(PyExc_TypeError,
 1897|      0|                     "%.200s%s takes %s %d positional argument%s"
 1898|      0|                     " (%zd given)",
 1899|      0|                     (fname == NULL) ? "function" : fname,
  ------------------
  |  Branch (1899:22): [True: 0, False: 0]
  ------------------
 1900|      0|                     (fname == NULL) ? "" : "()",
  ------------------
  |  Branch (1900:22): [True: 0, False: 0]
  ------------------
 1901|      0|                     (Py_MIN(pos, min) < i) ? "at least" : "exactly",
  ------------------
  |  |  112|      0|#define Py_MIN(x, y) (((x) > (y)) ? (y) : (x))
  |  |  ------------------
  |  |  |  Branch (112:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1901:22): [True: 0, False: 0]
  ------------------
 1902|      0|                     Py_MIN(pos, min),
  ------------------
  |  |  112|      0|#define Py_MIN(x, y) (((x) > (y)) ? (y) : (x))
  |  |  ------------------
  |  |  |  Branch (112:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1903|      0|                     Py_MIN(pos, min) == 1 ? "" : "s",
  ------------------
  |  |  112|      0|#define Py_MIN(x, y) (((x) > (y)) ? (y) : (x))
  |  |  ------------------
  |  |  |  Branch (112:23): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1903:22): [True: 0, False: 0]
  ------------------
 1904|      0|                     nargs);
 1905|      0|        return cleanreturn(0, &freelist);
 1906|      0|    }
 1907|       |
 1908|      0|    if (!IS_END_OF_FORMAT(*format) && (*format != '|') && (*format != '$')) {
  ------------------
  |  | 1670|      0|#define IS_END_OF_FORMAT(c) (c == '\0' || c == ';' || c == ':')
  |  |  ------------------
  |  |  |  Branch (1670:30): [True: 0, False: 0]
  |  |  |  Branch (1670:43): [True: 0, False: 0]
  |  |  |  Branch (1670:55): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (1908:39): [True: 0, False: 0]
  |  Branch (1908:59): [True: 0, False: 0]
  ------------------
 1909|      0|        PyErr_Format(PyExc_SystemError,
 1910|      0|            "more argument specifiers than keyword list entries "
 1911|      0|            "(remaining format:'%s')", format);
 1912|      0|        return cleanreturn(0, &freelist);
 1913|      0|    }
 1914|       |
 1915|      0|    if (nkwargs > 0) {
  ------------------
  |  Branch (1915:9): [True: 0, False: 0]
  ------------------
 1916|      0|        PyObject *key;
 1917|      0|        Py_ssize_t j;
 1918|       |        /* make sure there are no arguments given by name and position */
 1919|      0|        for (i = pos; i < nargs; i++) {
  ------------------
  |  Branch (1919:23): [True: 0, False: 0]
  ------------------
 1920|      0|            PyObject *current_arg;
 1921|      0|            if (kwargs != NULL) {
  ------------------
  |  Branch (1921:17): [True: 0, False: 0]
  ------------------
 1922|      0|                if (PyDict_GetItemStringRef(kwargs, kwlist[i], &current_arg) < 0) {
  ------------------
  |  Branch (1922:21): [True: 0, False: 0]
  ------------------
 1923|      0|                    return cleanreturn(0, &freelist);
 1924|      0|                }
 1925|      0|            }
 1926|      0|            else {
 1927|      0|                current_arg = find_keyword_str(kwnames, kwstack, kwlist[i]);
 1928|      0|            }
 1929|      0|            if (current_arg) {
  ------------------
  |  Branch (1929:17): [True: 0, False: 0]
  ------------------
 1930|      0|                Py_DECREF(current_arg);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1931|       |                /* arg present in tuple and in dict */
 1932|      0|                PyErr_Format(PyExc_TypeError,
 1933|      0|                             "argument for %.200s%s given by name ('%s') "
 1934|      0|                             "and position (%d)",
 1935|      0|                             (fname == NULL) ? "function" : fname,
  ------------------
  |  Branch (1935:30): [True: 0, False: 0]
  ------------------
 1936|      0|                             (fname == NULL) ? "" : "()",
  ------------------
  |  Branch (1936:30): [True: 0, False: 0]
  ------------------
 1937|      0|                             kwlist[i], i+1);
 1938|      0|                return cleanreturn(0, &freelist);
 1939|      0|            }
 1940|      0|        }
 1941|       |        /* make sure there are no extraneous keyword arguments */
 1942|      0|        j = 0;
 1943|      0|        while (1) {
  ------------------
  |  Branch (1943:16): [True: 0, Folded]
  ------------------
 1944|      0|            if (kwargs != NULL) {
  ------------------
  |  Branch (1944:17): [True: 0, False: 0]
  ------------------
 1945|      0|                if (!PyDict_Next(kwargs, &j, &key, NULL)) {
  ------------------
  |  Branch (1945:21): [True: 0, False: 0]
  ------------------
 1946|      0|                    break;
 1947|      0|                }
 1948|      0|            }
 1949|      0|            else {
 1950|      0|                if (j >= nkwargs) {
  ------------------
  |  Branch (1950:21): [True: 0, False: 0]
  ------------------
 1951|      0|                    break;
 1952|      0|                }
 1953|      0|                key = PyTuple_GET_ITEM(kwnames, j);
  ------------------
  |  |   29|      0|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|      0|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1953:23): [True: 0, False: 0]
  ------------------
 1954|      0|                j++;
 1955|      0|            }
 1956|       |
 1957|      0|            int match = 0;
 1958|      0|            if (!PyUnicode_Check(key)) {
  ------------------
  |  |  103|      0|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (1958:17): [True: 0, False: 0]
  ------------------
 1959|      0|                PyErr_SetString(PyExc_TypeError,
 1960|      0|                                "keywords must be strings");
 1961|      0|                return cleanreturn(0, &freelist);
 1962|      0|            }
 1963|      0|            for (i = pos; i < len; i++) {
  ------------------
  |  Branch (1963:27): [True: 0, False: 0]
  ------------------
 1964|      0|                if (PyUnicode_EqualToUTF8(key, kwlist[i])) {
  ------------------
  |  Branch (1964:21): [True: 0, False: 0]
  ------------------
 1965|      0|                    match = 1;
 1966|      0|                    break;
 1967|      0|                }
 1968|      0|            }
 1969|      0|            if (!match) {
  ------------------
  |  Branch (1969:17): [True: 0, False: 0]
  ------------------
 1970|      0|                PyObject *_pykwtuple = new_kwtuple(kwlist, len, pos);
 1971|      0|                if (!_pykwtuple) {
  ------------------
  |  Branch (1971:21): [True: 0, False: 0]
  ------------------
 1972|      0|                    return cleanreturn(0, &freelist);
 1973|      0|                }
 1974|      0|                PyObject *pykwlist = PySequence_List(_pykwtuple);
 1975|      0|                Py_DECREF(_pykwtuple);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1976|      0|                if (!pykwlist) {
  ------------------
  |  Branch (1976:21): [True: 0, False: 0]
  ------------------
 1977|      0|                    return cleanreturn(0, &freelist);
 1978|      0|                }
 1979|      0|                PyObject *suggestion_keyword = _Py_CalculateSuggestions(pykwlist, key);
 1980|      0|                Py_DECREF(pykwlist);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1981|       |
 1982|      0|                if (suggestion_keyword) {
  ------------------
  |  Branch (1982:21): [True: 0, False: 0]
  ------------------
 1983|      0|                    PyErr_Format(PyExc_TypeError,
 1984|      0|                                "%.200s%s got an unexpected keyword argument '%S'."
 1985|      0|                                " Did you mean '%S'?",
 1986|      0|                                (fname == NULL) ? "this function" : fname,
  ------------------
  |  Branch (1986:33): [True: 0, False: 0]
  ------------------
 1987|      0|                                (fname == NULL) ? "" : "()",
  ------------------
  |  Branch (1987:33): [True: 0, False: 0]
  ------------------
 1988|      0|                                key,
 1989|      0|                                suggestion_keyword);
 1990|      0|                    Py_DECREF(suggestion_keyword);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1991|      0|                }
 1992|      0|                else {
 1993|      0|                    PyErr_Format(PyExc_TypeError,
 1994|      0|                                "%.200s%s got an unexpected keyword argument '%S'",
 1995|      0|                                (fname == NULL) ? "this function" : fname,
  ------------------
  |  Branch (1995:33): [True: 0, False: 0]
  ------------------
 1996|      0|                                (fname == NULL) ? "" : "()",
  ------------------
  |  Branch (1996:33): [True: 0, False: 0]
  ------------------
 1997|      0|                                key);
 1998|      0|                }
 1999|      0|                return cleanreturn(0, &freelist);
 2000|      0|            }
 2001|      0|        }
 2002|       |        /* Something wrong happened. There are extraneous keyword arguments,
 2003|       |         * but we don't know what. And we don't bother. */
 2004|      0|        PyErr_Format(PyExc_TypeError,
 2005|      0|                     "invalid keyword argument for %.200s%s",
 2006|      0|                     (fname == NULL) ? "this function" : fname,
  ------------------
  |  Branch (2006:22): [True: 0, False: 0]
  ------------------
 2007|      0|                     (fname == NULL) ? "" : "()");
  ------------------
  |  Branch (2007:22): [True: 0, False: 0]
  ------------------
 2008|      0|        return cleanreturn(0, &freelist);
 2009|      0|    }
 2010|       |
 2011|      0|    return cleanreturn(1, &freelist);
 2012|      0|}
getargs.c:skipitem:
 2699|      5|{
 2700|      5|    const char *format = *p_format;
 2701|      5|    char c = *format++;
 2702|       |
 2703|      5|    switch (c) {
 2704|       |
 2705|       |    /*
 2706|       |     * codes that take a single data pointer as an argument
 2707|       |     * (the type of the pointer is irrelevant)
 2708|       |     */
 2709|       |
 2710|      0|    case 'b': /* byte -- very short int */
  ------------------
  |  Branch (2710:5): [True: 0, False: 5]
  ------------------
 2711|      0|    case 'B': /* byte as bitfield */
  ------------------
  |  Branch (2711:5): [True: 0, False: 5]
  ------------------
 2712|      0|    case 'h': /* short int */
  ------------------
  |  Branch (2712:5): [True: 0, False: 5]
  ------------------
 2713|      0|    case 'H': /* short int as bitfield */
  ------------------
  |  Branch (2713:5): [True: 0, False: 5]
  ------------------
 2714|      0|    case 'i': /* int */
  ------------------
  |  Branch (2714:5): [True: 0, False: 5]
  ------------------
 2715|      0|    case 'I': /* int sized bitfield */
  ------------------
  |  Branch (2715:5): [True: 0, False: 5]
  ------------------
 2716|      0|    case 'l': /* long int */
  ------------------
  |  Branch (2716:5): [True: 0, False: 5]
  ------------------
 2717|      0|    case 'k': /* long int sized bitfield */
  ------------------
  |  Branch (2717:5): [True: 0, False: 5]
  ------------------
 2718|      0|    case 'L': /* long long */
  ------------------
  |  Branch (2718:5): [True: 0, False: 5]
  ------------------
 2719|      0|    case 'K': /* long long sized bitfield */
  ------------------
  |  Branch (2719:5): [True: 0, False: 5]
  ------------------
 2720|      0|    case 'n': /* Py_ssize_t */
  ------------------
  |  Branch (2720:5): [True: 0, False: 5]
  ------------------
 2721|      0|    case 'f': /* float */
  ------------------
  |  Branch (2721:5): [True: 0, False: 5]
  ------------------
 2722|      0|    case 'd': /* double */
  ------------------
  |  Branch (2722:5): [True: 0, False: 5]
  ------------------
 2723|      0|    case 'D': /* complex double */
  ------------------
  |  Branch (2723:5): [True: 0, False: 5]
  ------------------
 2724|      0|    case 'c': /* char */
  ------------------
  |  Branch (2724:5): [True: 0, False: 5]
  ------------------
 2725|      0|    case 'C': /* unicode char */
  ------------------
  |  Branch (2725:5): [True: 0, False: 5]
  ------------------
 2726|      0|    case 'p': /* boolean predicate */
  ------------------
  |  Branch (2726:5): [True: 0, False: 5]
  ------------------
 2727|      0|    case 'S': /* string object */
  ------------------
  |  Branch (2727:5): [True: 0, False: 5]
  ------------------
 2728|      0|    case 'Y': /* string object */
  ------------------
  |  Branch (2728:5): [True: 0, False: 5]
  ------------------
 2729|      0|    case 'U': /* unicode string object */
  ------------------
  |  Branch (2729:5): [True: 0, False: 5]
  ------------------
 2730|      0|        {
 2731|      0|            if (p_va != NULL) {
  ------------------
  |  Branch (2731:17): [True: 0, False: 0]
  ------------------
 2732|      0|                (void) va_arg(*p_va, void *);
 2733|      0|            }
 2734|      0|            break;
 2735|      0|        }
 2736|       |
 2737|       |    /* string codes */
 2738|       |
 2739|      0|    case 'e': /* string with encoding */
  ------------------
  |  Branch (2739:5): [True: 0, False: 5]
  ------------------
 2740|      0|        {
 2741|      0|            if (p_va != NULL) {
  ------------------
  |  Branch (2741:17): [True: 0, False: 0]
  ------------------
 2742|      0|                (void) va_arg(*p_va, const char *);
 2743|      0|            }
 2744|      0|            if (!(*format == 's' || *format == 't'))
  ------------------
  |  Branch (2744:19): [True: 0, False: 0]
  |  Branch (2744:37): [True: 0, False: 0]
  ------------------
 2745|       |                /* after 'e', only 's' and 't' is allowed */
 2746|      0|                goto err;
 2747|      0|            format++;
 2748|      0|        }
 2749|      0|        _Py_FALLTHROUGH;
  ------------------
  |  |  644|      0|#  define _Py_FALLTHROUGH __attribute__((fallthrough))
  ------------------
 2750|       |
 2751|      0|    case 's': /* string */
  ------------------
  |  Branch (2751:5): [True: 0, False: 5]
  ------------------
 2752|      0|    case 'z': /* string or None */
  ------------------
  |  Branch (2752:5): [True: 0, False: 5]
  ------------------
 2753|      0|    case 'y': /* bytes */
  ------------------
  |  Branch (2753:5): [True: 0, False: 5]
  ------------------
 2754|      0|    case 'w': /* buffer, read-write */
  ------------------
  |  Branch (2754:5): [True: 0, False: 5]
  ------------------
 2755|      0|        {
 2756|      0|            if (p_va != NULL) {
  ------------------
  |  Branch (2756:17): [True: 0, False: 0]
  ------------------
 2757|      0|                (void) va_arg(*p_va, char **);
 2758|      0|            }
 2759|      0|            if (c == 'w' && *format != '*')
  ------------------
  |  Branch (2759:17): [True: 0, False: 0]
  |  Branch (2759:29): [True: 0, False: 0]
  ------------------
 2760|      0|            {
 2761|       |                /* after 'w', only '*' is allowed */
 2762|      0|                goto err;
 2763|      0|            }
 2764|      0|            if (*format == '#') {
  ------------------
  |  Branch (2764:17): [True: 0, False: 0]
  ------------------
 2765|      0|                if (p_va != NULL) {
  ------------------
  |  Branch (2765:21): [True: 0, False: 0]
  ------------------
 2766|      0|                    (void) va_arg(*p_va, Py_ssize_t *);
 2767|      0|                }
 2768|      0|                format++;
 2769|      0|            } else if ((c == 's' || c == 'z' || c == 'y' || c == 'w')
  ------------------
  |  Branch (2769:25): [True: 0, False: 0]
  |  Branch (2769:37): [True: 0, False: 0]
  |  Branch (2769:49): [True: 0, False: 0]
  |  Branch (2769:61): [True: 0, False: 0]
  ------------------
 2770|      0|                       && *format == '*')
  ------------------
  |  Branch (2770:27): [True: 0, False: 0]
  ------------------
 2771|      0|            {
 2772|      0|                format++;
 2773|      0|            }
 2774|      0|            break;
 2775|      0|        }
 2776|       |
 2777|      5|    case 'O': /* object */
  ------------------
  |  Branch (2777:5): [True: 5, False: 0]
  ------------------
 2778|      5|        {
 2779|      5|            if (*format == '!') {
  ------------------
  |  Branch (2779:17): [True: 0, False: 5]
  ------------------
 2780|      0|                format++;
 2781|      0|                if (p_va != NULL) {
  ------------------
  |  Branch (2781:21): [True: 0, False: 0]
  ------------------
 2782|      0|                    (void) va_arg(*p_va, PyTypeObject*);
 2783|      0|                    (void) va_arg(*p_va, PyObject **);
 2784|      0|                }
 2785|      0|            }
 2786|      5|            else if (*format == '&') {
  ------------------
  |  Branch (2786:22): [True: 0, False: 5]
  ------------------
 2787|      0|                typedef int (*converter)(PyObject *, void *);
 2788|      0|                if (p_va != NULL) {
  ------------------
  |  Branch (2788:21): [True: 0, False: 0]
  ------------------
 2789|      0|                    (void) va_arg(*p_va, converter);
 2790|      0|                    (void) va_arg(*p_va, void *);
 2791|      0|                }
 2792|      0|                format++;
 2793|      0|            }
 2794|      5|            else {
 2795|      5|                if (p_va != NULL) {
  ------------------
  |  Branch (2795:21): [True: 5, False: 0]
  ------------------
 2796|      5|                    (void) va_arg(*p_va, PyObject **);
 2797|      5|                }
 2798|      5|            }
 2799|      5|            break;
 2800|      0|        }
 2801|       |
 2802|      0|    case '(':           /* bypass tuple, not handled at all previously */
  ------------------
  |  Branch (2802:5): [True: 0, False: 5]
  ------------------
 2803|      0|        {
 2804|      0|            const char *msg;
 2805|      0|            for (;;) {
 2806|      0|                if (*format==')')
  ------------------
  |  Branch (2806:21): [True: 0, False: 0]
  ------------------
 2807|      0|                    break;
 2808|      0|                if (IS_END_OF_FORMAT(*format))
  ------------------
  |  | 1670|      0|#define IS_END_OF_FORMAT(c) (c == '\0' || c == ';' || c == ':')
  |  |  ------------------
  |  |  |  Branch (1670:30): [True: 0, False: 0]
  |  |  |  Branch (1670:43): [True: 0, False: 0]
  |  |  |  Branch (1670:55): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2809|      0|                    return "Unmatched left paren in format "
 2810|      0|                           "string";
 2811|      0|                msg = skipitem(&format, p_va, flags);
 2812|      0|                if (msg)
  ------------------
  |  Branch (2812:21): [True: 0, False: 0]
  ------------------
 2813|      0|                    return msg;
 2814|      0|            }
 2815|      0|            format++;
 2816|      0|            break;
 2817|      0|        }
 2818|       |
 2819|      0|    case ')':
  ------------------
  |  Branch (2819:5): [True: 0, False: 5]
  ------------------
 2820|      0|        return "Unmatched right paren in format string";
 2821|       |
 2822|      0|    default:
  ------------------
  |  Branch (2822:5): [True: 0, False: 5]
  ------------------
 2823|      0|err:
 2824|      0|        return "impossible<bad format char>";
 2825|       |
 2826|      5|    }
 2827|       |
 2828|      5|    *p_format = format;
 2829|       |    return NULL;
 2830|      5|}
getargs.c:vgetargskeywords:
 2018|     39|{
 2019|     39|    PyObject *const *args = _PyTuple_ITEMS(argstuple);
  ------------------
  |  |   26|     39|#define _PyTuple_ITEMS(op) _Py_RVALUE(_PyTuple_CAST(op)->ob_item)
  |  |  ------------------
  |  |  |  |  277|     78|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (277:37): [True: 39, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2020|     39|    Py_ssize_t nargs = PyTuple_GET_SIZE(argstuple);
  ------------------
  |  |   27|     39|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     39|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     39|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2021|       |    return vgetargskeywords_impl(args, nargs, kwargs, NULL,
 2022|     39|                                 format, kwlist, p_va, flags);
 2023|     39|}
getargs.c:parser_init:
 2228|      1|{
 2229|      1|    return _PyOnceFlag_CallOnce(&parser->once, &_parser_init, parser);
 2230|      1|}
getargs.c:_parser_init:
 2151|      1|{
 2152|      1|    struct _PyArg_Parser *parser = (struct _PyArg_Parser *)arg;
 2153|      1|    const char * const *keywords = parser->keywords;
 2154|      1|    assert(keywords != NULL);
  ------------------
  |  Branch (2154:5): [True: 1, False: 0]
  ------------------
 2155|      1|    assert(parser->pos == 0 &&
  ------------------
  |  Branch (2155:5): [True: 1, False: 0]
  |  Branch (2155:5): [True: 0, False: 0]
  |  Branch (2155:5): [True: 1, False: 0]
  |  Branch (2155:5): [True: 1, False: 0]
  |  Branch (2155:5): [True: 1, False: 0]
  |  Branch (2155:5): [True: 1, False: 0]
  ------------------
 2156|      1|           (parser->format == NULL || parser->fname == NULL) &&
 2157|      1|           parser->custom_msg == NULL &&
 2158|      1|           parser->min == 0 &&
 2159|      1|           parser->max == 0);
 2160|       |
 2161|      1|    int len, pos;
 2162|      1|    if (scan_keywords(keywords, &len, &pos) < 0) {
  ------------------
  |  Branch (2162:9): [True: 0, False: 1]
  ------------------
 2163|      0|        return -1;
 2164|      0|    }
 2165|       |
 2166|      1|    const char *fname, *custommsg = NULL;
 2167|      1|    int min = 0, max = 0;
 2168|      1|    if (parser->format) {
  ------------------
  |  Branch (2168:9): [True: 0, False: 1]
  ------------------
 2169|      0|        assert(parser->fname == NULL);
  ------------------
  |  Branch (2169:9): [True: 0, False: 0]
  ------------------
 2170|      0|        if (parse_format(parser->format, len, pos,
  ------------------
  |  Branch (2170:13): [True: 0, False: 0]
  ------------------
 2171|      0|                         &fname, &custommsg, &min, &max) < 0) {
 2172|      0|            return -1;
 2173|      0|        }
 2174|      0|    }
 2175|      1|    else {
 2176|      1|        assert(parser->fname != NULL);
  ------------------
  |  Branch (2176:9): [True: 1, False: 0]
  ------------------
 2177|      1|        fname = parser->fname;
 2178|      1|    }
 2179|       |
 2180|      1|    int owned;
 2181|      1|    PyObject *kwtuple = parser->kwtuple;
 2182|      1|    if (kwtuple == NULL) {
  ------------------
  |  Branch (2182:9): [True: 0, False: 1]
  ------------------
 2183|       |        /* We may temporarily switch to the main interpreter to avoid
 2184|       |         * creating a tuple that could outlive its owning interpreter. */
 2185|      0|        PyThreadState *save_tstate = NULL;
 2186|      0|        PyThreadState *temp_tstate = NULL;
 2187|      0|        if (!_Py_IsMainInterpreter(PyInterpreterState_Get())) {
  ------------------
  |  Branch (2187:13): [True: 0, False: 0]
  ------------------
 2188|      0|            temp_tstate = PyThreadState_New(_PyInterpreterState_Main());
 2189|      0|            if (temp_tstate == NULL) {
  ------------------
  |  Branch (2189:17): [True: 0, False: 0]
  ------------------
 2190|      0|                return -1;
 2191|      0|            }
 2192|      0|            save_tstate = PyThreadState_Swap(temp_tstate);
 2193|      0|        }
 2194|      0|        kwtuple = new_kwtuple(keywords, len, pos);
 2195|      0|        if (temp_tstate != NULL) {
  ------------------
  |  Branch (2195:13): [True: 0, False: 0]
  ------------------
 2196|      0|            PyThreadState_Clear(temp_tstate);
 2197|      0|            (void)PyThreadState_Swap(save_tstate);
 2198|      0|            PyThreadState_Delete(temp_tstate);
 2199|      0|        }
 2200|      0|        if (kwtuple == NULL) {
  ------------------
  |  Branch (2200:13): [True: 0, False: 0]
  ------------------
 2201|      0|            return -1;
 2202|      0|        }
 2203|      0|        owned = 1;
 2204|      0|    }
 2205|      1|    else {
 2206|      1|        owned = 0;
 2207|      1|    }
 2208|       |
 2209|      1|    parser->pos = pos;
 2210|      1|    parser->fname = fname;
 2211|      1|    parser->custom_msg = custommsg;
 2212|      1|    parser->min = min;
 2213|      1|    parser->max = max;
 2214|      1|    parser->kwtuple = kwtuple;
 2215|      1|    parser->is_kwtuple_owned = owned;
 2216|       |
 2217|      1|    assert(parser->next == NULL);
  ------------------
  |  Branch (2217:5): [True: 1, False: 0]
  ------------------
 2218|      1|    parser->next = _Py_atomic_load_ptr(&_PyRuntime.getargs.static_parsers);
 2219|      1|    do {
 2220|       |        // compare-exchange updates parser->next on failure
 2221|      1|    } while (!_Py_atomic_compare_exchange_ptr(&_PyRuntime.getargs.static_parsers,
  ------------------
  |  Branch (2221:14): [True: 0, False: 1]
  ------------------
 2222|      1|                                              &parser->next, parser));
 2223|      1|    return 0;
 2224|      1|}
getargs.c:scan_keywords:
 2027|      1|{
 2028|       |    /* scan keywords and count the number of positional-only parameters */
 2029|      1|    int i;
 2030|      1|    for (i = 0; keywords[i] && !*keywords[i]; i++) {
  ------------------
  |  Branch (2030:17): [True: 1, False: 0]
  |  Branch (2030:32): [True: 0, False: 1]
  ------------------
 2031|      0|    }
 2032|      1|    *pposonly = i;
 2033|       |
 2034|       |    /* scan keywords and get greatest possible nbr of args */
 2035|      6|    for (; keywords[i]; i++) {
  ------------------
  |  Branch (2035:12): [True: 5, False: 1]
  ------------------
 2036|      5|        if (!*keywords[i]) {
  ------------------
  |  Branch (2036:13): [True: 0, False: 5]
  ------------------
 2037|      0|            PyErr_SetString(PyExc_SystemError,
 2038|      0|                            "Empty keyword parameter name");
 2039|      0|            return -1;
 2040|      0|        }
 2041|      5|    }
 2042|      1|    *ptotal = i;
 2043|      1|    return 0;
 2044|      1|}
getargs.c:find_keyword:
 2255|      4|{
 2256|      4|    Py_ssize_t i, nkwargs;
 2257|       |
 2258|      4|    nkwargs = PyTuple_GET_SIZE(kwnames);
  ------------------
  |  |   27|      4|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2259|      9|    for (i = 0; i < nkwargs; i++) {
  ------------------
  |  Branch (2259:17): [True: 7, False: 2]
  ------------------
 2260|      7|        PyObject *kwname = PyTuple_GET_ITEM(kwnames, i);
  ------------------
  |  |   29|      7|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|      7|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2260:28): [True: 7, False: 0]
  ------------------
 2261|       |
 2262|       |        /* kwname == key will normally find a match in since keyword keys
 2263|       |           should be interned strings; if not retry below in a new loop. */
 2264|      7|        if (kwname == key) {
  ------------------
  |  Branch (2264:13): [True: 2, False: 5]
  ------------------
 2265|      2|            return Py_NewRef(kwstack[i]);
  ------------------
  |  |  550|      2|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2266|      2|        }
 2267|      7|    }
 2268|       |
 2269|      6|    for (i = 0; i < nkwargs; i++) {
  ------------------
  |  Branch (2269:17): [True: 4, False: 2]
  ------------------
 2270|      4|        PyObject *kwname = PyTuple_GET_ITEM(kwnames, i);
  ------------------
  |  |   29|      4|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|      4|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2270:28): [True: 4, False: 0]
  ------------------
 2271|      4|        assert(PyUnicode_Check(kwname));
  ------------------
  |  Branch (2271:9): [True: 4, False: 0]
  ------------------
 2272|      4|        if (_PyUnicode_Equal(kwname, key)) {
  ------------------
  |  Branch (2272:13): [True: 0, False: 4]
  ------------------
 2273|      0|            return Py_NewRef(kwstack[i]);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2274|      0|        }
 2275|      4|    }
 2276|      2|    return NULL;
 2277|      2|}
getargs.c:unpack_stack:
 2882|    252|{
 2883|    252|    Py_ssize_t i;
 2884|    252|    PyObject **o;
 2885|       |
 2886|    252|    if (!_PyArg_CheckPositional(name, nargs, min, max)) {
  ------------------
  |  Branch (2886:9): [True: 0, False: 252]
  ------------------
 2887|      0|        return 0;
 2888|      0|    }
 2889|       |
 2890|    612|    for (i = 0; i < nargs; i++) {
  ------------------
  |  Branch (2890:17): [True: 360, False: 252]
  ------------------
 2891|       |        o = va_arg(vargs, PyObject **);
 2892|    360|        *o = args[i];
 2893|    360|    }
 2894|    252|    return 1;
 2895|    252|}

Py_GetCompiler:
   29|      1|{
   30|      1|    return COMPILER;
  ------------------
  |  |   15|      1|#define COMPILER "[Clang " __clang_version__ "]"
  ------------------
   31|      1|}

Py_GetCopyright:
   21|      1|{
   22|      1|    return cprt;
   23|      1|}

_PyOS_ResetGetOpt:
   53|      4|{
   54|      4|    _PyOS_opterr = 1;
   55|      4|    _PyOS_optind = 1;
   56|       |    _PyOS_optarg = NULL;
   57|      4|    opt_ptr = L"";
   58|      4|}
_PyOS_GetOpt:
   61|      4|{
   62|      4|    wchar_t *ptr;
   63|      4|    wchar_t option;
   64|       |
   65|      4|    if (*opt_ptr == '\0') {
  ------------------
  |  Branch (65:9): [True: 4, False: 0]
  ------------------
   66|       |
   67|      4|        if (_PyOS_optind >= argc)
  ------------------
  |  Branch (67:13): [True: 4, False: 0]
  ------------------
   68|      4|            return -1;
   69|       |#ifdef MS_WINDOWS
   70|       |        else if (wcscmp(argv[_PyOS_optind], L"/?") == 0) {
   71|       |            ++_PyOS_optind;
   72|       |            return 'h';
   73|       |        }
   74|       |#endif
   75|       |
   76|      0|        else if (argv[_PyOS_optind][0] != L'-' ||
  ------------------
  |  Branch (76:18): [True: 0, False: 0]
  ------------------
   77|      0|                 argv[_PyOS_optind][1] == L'\0' /* lone dash */ )
  ------------------
  |  Branch (77:18): [True: 0, False: 0]
  ------------------
   78|      0|            return -1;
   79|       |
   80|      0|        else if (wcscmp(argv[_PyOS_optind], L"--") == 0) {
  ------------------
  |  Branch (80:18): [True: 0, False: 0]
  ------------------
   81|      0|            ++_PyOS_optind;
   82|      0|            return -1;
   83|      0|        }
   84|       |
   85|      0|        else if (wcscmp(argv[_PyOS_optind], L"--help") == 0) {
  ------------------
  |  Branch (85:18): [True: 0, False: 0]
  ------------------
   86|      0|            ++_PyOS_optind;
   87|      0|            return 'h';
   88|      0|        }
   89|       |
   90|      0|        else if (wcscmp(argv[_PyOS_optind], L"--version") == 0) {
  ------------------
  |  Branch (90:18): [True: 0, False: 0]
  ------------------
   91|      0|            ++_PyOS_optind;
   92|      0|            return 'V';
   93|      0|        }
   94|       |
   95|      0|        opt_ptr = &argv[_PyOS_optind++][1];
   96|      0|    }
   97|       |
   98|      0|    if ((option = *opt_ptr++) == L'\0')
  ------------------
  |  Branch (98:9): [True: 0, False: 0]
  ------------------
   99|      0|        return -1;
  100|       |
  101|      0|    if (option == L'-') {
  ------------------
  |  Branch (101:9): [True: 0, False: 0]
  ------------------
  102|       |        // Parse long option.
  103|      0|        if (*opt_ptr == L'\0') {
  ------------------
  |  Branch (103:13): [True: 0, False: 0]
  ------------------
  104|      0|            if (_PyOS_opterr) {
  ------------------
  |  Branch (104:17): [True: 0, False: 0]
  ------------------
  105|      0|                fprintf(stderr, "Expected long option\n");
  106|      0|            }
  107|      0|            return -1;
  108|      0|        }
  109|      0|        *longindex = 0;
  110|      0|        const _PyOS_LongOption *opt;
  111|      0|        for (opt = &longopts[*longindex]; opt->name; opt = &longopts[++(*longindex)]) {
  ------------------
  |  Branch (111:43): [True: 0, False: 0]
  ------------------
  112|      0|            if (!wcscmp(opt->name, opt_ptr))
  ------------------
  |  Branch (112:17): [True: 0, False: 0]
  ------------------
  113|      0|                break;
  114|      0|        }
  115|      0|        if (!opt->name) {
  ------------------
  |  Branch (115:13): [True: 0, False: 0]
  ------------------
  116|      0|            if (_PyOS_opterr) {
  ------------------
  |  Branch (116:17): [True: 0, False: 0]
  ------------------
  117|      0|                fprintf(stderr, "Unknown option: %ls\n", argv[_PyOS_optind - 1]);
  118|      0|            }
  119|      0|            return '_';
  120|      0|        }
  121|      0|        opt_ptr = L"";
  122|      0|        if (!opt->has_arg) {
  ------------------
  |  Branch (122:13): [True: 0, False: 0]
  ------------------
  123|      0|            return opt->val;
  124|      0|        }
  125|      0|        if (_PyOS_optind >= argc) {
  ------------------
  |  Branch (125:13): [True: 0, False: 0]
  ------------------
  126|      0|            if (_PyOS_opterr) {
  ------------------
  |  Branch (126:17): [True: 0, False: 0]
  ------------------
  127|      0|                fprintf(stderr, "Argument expected for the %ls options\n",
  128|      0|                        argv[_PyOS_optind - 1]);
  129|      0|            }
  130|      0|            return '_';
  131|      0|        }
  132|      0|        _PyOS_optarg = argv[_PyOS_optind++];
  133|      0|        return opt->val;
  134|      0|    }
  135|       |
  136|      0|    if ((ptr = wcschr(SHORT_OPTS, option)) == NULL) {
  ------------------
  |  |   40|      0|#define SHORT_OPTS L"bBc:dEhiIm:OPqRsStuvVW:xX:?"
  ------------------
  |  Branch (136:9): [True: 0, False: 0]
  ------------------
  137|      0|        if (_PyOS_opterr) {
  ------------------
  |  Branch (137:13): [True: 0, False: 0]
  ------------------
  138|      0|            fprintf(stderr, "Unknown option: -%c\n", (char)option);
  139|      0|        }
  140|      0|        return '_';
  141|      0|    }
  142|       |
  143|      0|    if (*(ptr + 1) == L':') {
  ------------------
  |  Branch (143:9): [True: 0, False: 0]
  ------------------
  144|      0|        if (*opt_ptr != L'\0') {
  ------------------
  |  Branch (144:13): [True: 0, False: 0]
  ------------------
  145|      0|            _PyOS_optarg  = opt_ptr;
  146|      0|            opt_ptr = L"";
  147|      0|        }
  148|       |
  149|      0|        else {
  150|      0|            if (_PyOS_optind >= argc) {
  ------------------
  |  Branch (150:17): [True: 0, False: 0]
  ------------------
  151|      0|                if (_PyOS_opterr) {
  ------------------
  |  Branch (151:21): [True: 0, False: 0]
  ------------------
  152|      0|                    fprintf(stderr,
  153|      0|                        "Argument expected for the -%c option\n", (char)option);
  154|      0|                }
  155|      0|                return '_';
  156|      0|            }
  157|       |
  158|      0|            _PyOS_optarg = argv[_PyOS_optind++];
  159|      0|        }
  160|      0|    }
  161|       |
  162|      0|    return option;
  163|      0|}

Py_GetPlatform:
   10|      1|{
   11|      1|    return PLATFORM;
   12|      1|}

_Py_InitVersion:
   12|      2|{
   13|      2|    if (initialized) {
  ------------------
  |  Branch (13:9): [True: 1, False: 1]
  ------------------
   14|      1|        return;
   15|      1|    }
   16|      1|    initialized = 1;
   17|       |#ifdef Py_GIL_DISABLED
   18|       |    const char *buildinfo_format = "%.80s free-threading build (%.80s) %.80s";
   19|       |#else
   20|      1|    const char *buildinfo_format = "%.80s (%.80s) %.80s";
   21|      1|#endif
   22|      1|    PyOS_snprintf(version, sizeof(version), buildinfo_format,
   23|      1|                  PY_VERSION, Py_GetBuildInfo(), Py_GetCompiler());
  ------------------
  |  |   30|      1|#define PY_VERSION              "3.16.0a0"
  ------------------
   24|      1|}
Py_GetVersion:
   28|      1|{
   29|      1|    _Py_InitVersion();
   30|      1|    return version;
   31|      1|}

_Py_hashtable_get_entry_generic:
  141|  9.63k|{
  142|  9.63k|    Py_uhash_t key_hash = ht->hash_func(key);
  143|  9.63k|    size_t index = key_hash & (ht->nbuckets - 1);
  144|  9.63k|    _Py_hashtable_entry_t *entry = TABLE_HEAD(ht, index);
  ------------------
  |  |   59|  9.63k|        ((_Py_hashtable_entry_t *)_Py_SLIST_HEAD(&(HT)->buckets[BUCKET]))
  |  |  ------------------
  |  |  |  |   23|  9.63k|#define _Py_SLIST_HEAD(SLIST) _Py_RVALUE(((_Py_slist_t *)(SLIST))->head)
  |  |  |  |  ------------------
  |  |  |  |  |  |  277|  9.63k|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  145|  11.9k|    while (1) {
  ------------------
  |  Branch (145:12): [True: 11.9k, Folded]
  ------------------
  146|  11.9k|        if (entry == NULL) {
  ------------------
  |  Branch (146:13): [True: 6.89k, False: 5.03k]
  ------------------
  147|  6.89k|            return NULL;
  148|  6.89k|        }
  149|  5.03k|        if (entry->key_hash == key_hash && ht->compare_func(key, entry->key)) {
  ------------------
  |  Branch (149:13): [True: 2.74k, False: 2.29k]
  |  Branch (149:44): [True: 2.74k, False: 0]
  ------------------
  150|  2.74k|            break;
  151|  2.74k|        }
  152|  2.29k|        entry = ENTRY_NEXT(entry);
  ------------------
  |  |   61|  2.29k|        ((_Py_hashtable_entry_t *)_Py_SLIST_ITEM_NEXT(ENTRY))
  |  |  ------------------
  |  |  |  |   21|  2.29k|#define _Py_SLIST_ITEM_NEXT(ITEM) _Py_RVALUE(((_Py_slist_item_t *)(ITEM))->next)
  |  |  |  |  ------------------
  |  |  |  |  |  |  277|  2.29k|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  153|  2.29k|    }
  154|  2.74k|    return entry;
  155|  9.63k|}
_Py_hashtable_set:
  218|  1.12k|{
  219|  1.12k|    _Py_hashtable_entry_t *entry;
  220|       |
  221|  1.12k|#ifndef NDEBUG
  222|       |    /* Don't write the assertion on a single line because it is interesting
  223|       |       to know the duplicated entry if the assertion failed. The entry can
  224|       |       be read using a debugger. */
  225|  1.12k|    entry = ht->get_entry_func(ht, key);
  226|  1.12k|    assert(entry == NULL);
  ------------------
  |  Branch (226:5): [True: 1.12k, False: 0]
  ------------------
  227|  1.12k|#endif
  228|       |
  229|  1.12k|    entry = ht->alloc.malloc(sizeof(_Py_hashtable_entry_t));
  230|  1.12k|    if (entry == NULL) {
  ------------------
  |  Branch (230:9): [True: 0, False: 1.12k]
  ------------------
  231|       |        /* memory allocation failed */
  232|      0|        return -1;
  233|      0|    }
  234|       |
  235|  1.12k|    entry->key_hash = ht->hash_func(key);
  236|  1.12k|    entry->key = (void *)key;
  237|  1.12k|    entry->value = value;
  238|       |
  239|  1.12k|    ht->nentries++;
  240|  1.12k|    if ((float)ht->nentries / (float)ht->nbuckets > HASHTABLE_HIGH) {
  ------------------
  |  |   52|  1.12k|#define HASHTABLE_HIGH 0.50
  ------------------
  |  Branch (240:9): [True: 8, False: 1.11k]
  ------------------
  241|      8|        if (hashtable_rehash(ht) < 0) {
  ------------------
  |  Branch (241:13): [True: 0, False: 8]
  ------------------
  242|      0|            ht->nentries--;
  243|      0|            ht->alloc.free(entry);
  244|      0|            return -1;
  245|      0|        }
  246|      8|    }
  247|       |
  248|  1.12k|    size_t index = entry->key_hash & (ht->nbuckets - 1);
  249|  1.12k|    _Py_slist_prepend(&ht->buckets[index], (_Py_slist_item_t*)entry);
  250|  1.12k|    return 0;
  251|  1.12k|}
_Py_hashtable_get:
  256|  8.49k|{
  257|  8.49k|    _Py_hashtable_entry_t *entry = ht->get_entry_func(ht, key);
  258|  8.49k|    if (entry != NULL) {
  ------------------
  |  Branch (258:9): [True: 2.74k, False: 5.75k]
  ------------------
  259|  2.74k|        return entry->value;
  260|  2.74k|    }
  261|  5.75k|    else {
  262|       |        return NULL;
  263|  5.75k|    }
  264|  8.49k|}
_Py_hashtable_new_full:
  328|      6|{
  329|      6|    _Py_hashtable_allocator_t alloc;
  330|      6|    if (allocator == NULL) {
  ------------------
  |  Branch (330:9): [True: 0, False: 6]
  ------------------
  331|      0|        alloc.malloc = PyMem_Malloc;
  332|      0|        alloc.free = PyMem_Free;
  333|      0|    }
  334|      6|    else {
  335|      6|        alloc = *allocator;
  336|      6|    }
  337|       |
  338|      6|    _Py_hashtable_t *ht = (_Py_hashtable_t *)alloc.malloc(sizeof(_Py_hashtable_t));
  339|      6|    if (ht == NULL) {
  ------------------
  |  Branch (339:9): [True: 0, False: 6]
  ------------------
  340|      0|        return ht;
  341|      0|    }
  342|       |
  343|      6|    ht->nbuckets = HASHTABLE_MIN_SIZE;
  ------------------
  |  |   51|      6|#define HASHTABLE_MIN_SIZE 16
  ------------------
  344|      6|    ht->nentries = 0;
  345|       |
  346|      6|    size_t buckets_size = ht->nbuckets * sizeof(ht->buckets[0]);
  347|      6|    ht->buckets = alloc.malloc(buckets_size);
  348|      6|    if (ht->buckets == NULL) {
  ------------------
  |  Branch (348:9): [True: 0, False: 6]
  ------------------
  349|      0|        alloc.free(ht);
  350|      0|        return NULL;
  351|      0|    }
  352|      6|    memset(ht->buckets, 0, buckets_size);
  353|       |
  354|      6|    ht->get_entry_func = _Py_hashtable_get_entry_generic;
  355|      6|    ht->hash_func = hash_func;
  356|      6|    ht->compare_func = compare_func;
  357|      6|    ht->key_destroy_func = key_destroy_func;
  358|      6|    ht->value_destroy_func = value_destroy_func;
  359|      6|    ht->alloc = alloc;
  360|      6|    if (ht->hash_func == _Py_hashtable_hash_ptr
  ------------------
  |  Branch (360:9): [True: 1, False: 5]
  ------------------
  361|      1|        && ht->compare_func == _Py_hashtable_compare_direct)
  ------------------
  |  Branch (361:12): [True: 1, False: 0]
  ------------------
  362|      1|    {
  363|      1|        ht->get_entry_func = _Py_hashtable_get_entry_ptr;
  364|      1|    }
  365|      6|    return ht;
  366|      6|}
hashtable.c:_Py_slist_prepend:
   75|  3.16k|{
   76|  3.16k|    item->next = list->head;
   77|  3.16k|    list->head = item;
   78|  3.16k|}
hashtable.c:hashtable_rehash:
  288|      8|{
  289|      8|    size_t new_size = round_size((size_t)(ht->nentries * HASHTABLE_REHASH_FACTOR));
  ------------------
  |  |   54|      8|#define HASHTABLE_REHASH_FACTOR 2.0 / (HASHTABLE_LOW + HASHTABLE_HIGH)
  |  |  ------------------
  |  |  |  |   53|      8|#define HASHTABLE_LOW 0.10
  |  |  ------------------
  |  |               #define HASHTABLE_REHASH_FACTOR 2.0 / (HASHTABLE_LOW + HASHTABLE_HIGH)
  |  |  ------------------
  |  |  |  |   52|      8|#define HASHTABLE_HIGH 0.50
  |  |  ------------------
  ------------------
  290|      8|    if (new_size == ht->nbuckets) {
  ------------------
  |  Branch (290:9): [True: 0, False: 8]
  ------------------
  291|      0|        return 0;
  292|      0|    }
  293|       |
  294|      8|    size_t buckets_size = new_size * sizeof(ht->buckets[0]);
  295|      8|    _Py_slist_t *new_buckets = ht->alloc.malloc(buckets_size);
  296|      8|    if (new_buckets == NULL) {
  ------------------
  |  Branch (296:9): [True: 0, False: 8]
  ------------------
  297|       |        /* memory allocation failed */
  298|      0|        return -1;
  299|      0|    }
  300|      8|    memset(new_buckets, 0, buckets_size);
  301|       |
  302|  4.08k|    for (size_t bucket = 0; bucket < ht->nbuckets; bucket++) {
  ------------------
  |  Branch (302:29): [True: 4.08k, False: 8]
  ------------------
  303|  4.08k|        _Py_hashtable_entry_t *entry = BUCKETS_HEAD(ht->buckets[bucket]);
  ------------------
  |  |   57|  4.08k|        ((_Py_hashtable_entry_t *)_Py_SLIST_HEAD(&(SLIST)))
  |  |  ------------------
  |  |  |  |   23|  4.08k|#define _Py_SLIST_HEAD(SLIST) _Py_RVALUE(((_Py_slist_t *)(SLIST))->head)
  |  |  |  |  ------------------
  |  |  |  |  |  |  277|  4.08k|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  304|  6.12k|        while (entry != NULL) {
  ------------------
  |  Branch (304:16): [True: 2.04k, False: 4.08k]
  ------------------
  305|  2.04k|            assert(ht->hash_func(entry->key) == entry->key_hash);
  ------------------
  |  Branch (305:13): [True: 2.04k, False: 0]
  ------------------
  306|  2.04k|            _Py_hashtable_entry_t *next = ENTRY_NEXT(entry);
  ------------------
  |  |   61|  2.04k|        ((_Py_hashtable_entry_t *)_Py_SLIST_ITEM_NEXT(ENTRY))
  |  |  ------------------
  |  |  |  |   21|  2.04k|#define _Py_SLIST_ITEM_NEXT(ITEM) _Py_RVALUE(((_Py_slist_item_t *)(ITEM))->next)
  |  |  |  |  ------------------
  |  |  |  |  |  |  277|  2.04k|#define _Py_RVALUE(EXPR) ((void)0, (EXPR))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  307|  2.04k|            size_t entry_index = entry->key_hash & (new_size - 1);
  308|       |
  309|  2.04k|            _Py_slist_prepend(&new_buckets[entry_index], (_Py_slist_item_t*)entry);
  310|       |
  311|  2.04k|            entry = next;
  312|  2.04k|        }
  313|  4.08k|    }
  314|       |
  315|      8|    ht->alloc.free(ht->buckets);
  316|      8|    ht->nbuckets = new_size;
  317|      8|    ht->buckets = new_buckets;
  318|      8|    return 0;
  319|      8|}
hashtable.c:round_size:
  109|      8|{
  110|      8|    size_t i;
  111|      8|    if (s < HASHTABLE_MIN_SIZE)
  ------------------
  |  |   51|      8|#define HASHTABLE_MIN_SIZE 16
  ------------------
  |  Branch (111:9): [True: 0, False: 8]
  ------------------
  112|      0|        return HASHTABLE_MIN_SIZE;
  ------------------
  |  |   51|      0|#define HASHTABLE_MIN_SIZE 16
  ------------------
  113|      8|    i = 1;
  114|     76|    while (i < s)
  ------------------
  |  Branch (114:12): [True: 68, False: 8]
  ------------------
  115|     68|        i <<= 1;
  116|      8|    return i;
  117|      8|}

_PyImport_AcquireLock:
  154|     96|{
  155|     96|    _PyRecursiveMutex_Lock(&IMPORT_LOCK(interp));
  ------------------
  |  |  114|     96|    (interp)->imports.lock
  ------------------
  156|     96|}
_PyImport_ReleaseLock:
  160|     96|{
  161|     96|    _PyRecursiveMutex_Unlock(&IMPORT_LOCK(interp));
  ------------------
  |  |  114|     96|    (interp)->imports.lock
  ------------------
  162|     96|}
_PyImport_InitModules:
  178|      1|{
  179|      1|    assert(MODULES(interp) == NULL);
  ------------------
  |  Branch (179:5): [True: 1, False: 0]
  ------------------
  180|      1|    MODULES(interp) = PyDict_New();
  ------------------
  |  |   92|      1|    (interp)->imports.modules
  ------------------
  181|      1|    if (MODULES(interp) == NULL) {
  ------------------
  |  |   92|      1|    (interp)->imports.modules
  ------------------
  |  Branch (181:9): [True: 0, False: 1]
  ------------------
  182|      0|        return NULL;
  183|      0|    }
  184|      1|    return MODULES(interp);
  ------------------
  |  |   92|      1|    (interp)->imports.modules
  ------------------
  185|      1|}
_PyImport_GetModules:
  189|      1|{
  190|      1|    return MODULES(interp);
  ------------------
  |  |   92|      1|    (interp)->imports.modules
  ------------------
  191|      1|}
_PyImport_SetModuleString:
  250|      1|{
  251|      1|    PyThreadState *tstate = _PyThreadState_GET();
  252|       |    PyObject *modules = get_modules_dict(tstate, true);
  253|      1|    return PyMapping_SetItemString(modules, name, m);
  254|      1|}
_PyImport_InitLazyModules:
  273|      1|{
  274|      1|    assert(LAZY_MODULES(interp) == NULL);
  ------------------
  |  Branch (274:5): [True: 1, False: 0]
  ------------------
  275|      1|    LAZY_MODULES(interp) = PyDict_New();
  ------------------
  |  |   96|      1|    (interp)->imports.lazy_modules
  ------------------
  276|      1|    return LAZY_MODULES(interp);
  ------------------
  |  |   96|      1|    (interp)->imports.lazy_modules
  ------------------
  277|      1|}
PyImport_AddModuleRef:
  412|      1|{
  413|      1|    PyObject *name_obj = PyUnicode_FromString(name);
  414|      1|    if (name_obj == NULL) {
  ------------------
  |  Branch (414:9): [True: 0, False: 1]
  ------------------
  415|      0|        return NULL;
  416|      0|    }
  417|      1|    PyThreadState *tstate = _PyThreadState_GET();
  418|      1|    PyObject *module = import_add_module(tstate, name_obj);
  419|      1|    Py_DECREF(name_obj);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  420|      1|    return module;
  421|      1|}
PyImport_AddModuleObject:
  426|      1|{
  427|      1|    PyThreadState *tstate = _PyThreadState_GET();
  428|      1|    PyObject *mod = import_add_module(tstate, name);
  429|      1|    if (!mod) {
  ------------------
  |  Branch (429:9): [True: 0, False: 1]
  ------------------
  430|      0|        return NULL;
  431|      0|    }
  432|       |
  433|       |    // gh-86160: PyImport_AddModuleObject() returns a borrowed reference.
  434|       |    // Create a weak reference to produce a borrowed reference, since it can
  435|       |    // become NULL. sys.modules type can be different than dict and it is not
  436|       |    // guaranteed that it keeps a strong reference to the module. It can be a
  437|       |    // custom mapping with __getitem__() which returns a new object or removes
  438|       |    // returned object, or __setitem__ which does nothing. There is so much
  439|       |    // unknown.  With weakref we can be sure that we get either a reference to
  440|       |    // live object or NULL.
  441|       |    //
  442|       |    // Use PyImport_AddModuleRef() to avoid these issues.
  443|      1|    PyObject *ref = PyWeakref_NewRef(mod, NULL);
  444|      1|    Py_DECREF(mod);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  445|      1|    if (ref == NULL) {
  ------------------
  |  Branch (445:9): [True: 0, False: 1]
  ------------------
  446|      0|        return NULL;
  447|      0|    }
  448|      1|    mod = _PyWeakref_GET_REF(ref);
  449|      1|    Py_DECREF(ref);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  450|      1|    Py_XDECREF(mod);
  ------------------
  |  |  524|      1|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  451|       |
  452|      1|    if (mod == NULL && !PyErr_Occurred()) {
  ------------------
  |  Branch (452:9): [True: 0, False: 1]
  |  Branch (452:24): [True: 0, False: 0]
  ------------------
  453|      0|        PyErr_SetString(PyExc_RuntimeError,
  454|      0|                        "sys.modules does not hold a strong reference "
  455|      0|                        "to the module");
  456|      0|    }
  457|      1|    return mod; /* borrowed reference */
  458|      1|}
_PyImport_GetNextModuleIndex:
  505|     16|{
  506|     16|    return _Py_atomic_add_ssize(&LAST_MODULE_INDEX, 1) + 1;
  ------------------
  |  |   81|     16|#define LAST_MODULE_INDEX _PyRuntime.imports.last_module_index
  ------------------
  507|     16|}
_PyImport_ResolveNameWithPackageContext:
  885|      4|{
  886|      4|    if (PKGCONTEXT != NULL) {
  ------------------
  |  |  881|      4|# define PKGCONTEXT pkgcontext
  ------------------
  |  Branch (886:9): [True: 0, False: 4]
  ------------------
  887|      0|        const char *p = strrchr(PKGCONTEXT, '.');
  ------------------
  |  |  881|      0|# define PKGCONTEXT pkgcontext
  ------------------
  888|      0|        if (p != NULL && strcmp(name, p+1) == 0) {
  ------------------
  |  Branch (888:13): [True: 0, False: 0]
  |  Branch (888:26): [True: 0, False: 0]
  ------------------
  889|      0|            name = PKGCONTEXT;
  ------------------
  |  |  881|      0|# define PKGCONTEXT pkgcontext
  ------------------
  890|      0|            PKGCONTEXT = NULL;
  ------------------
  |  |  881|      0|# define PKGCONTEXT pkgcontext
  ------------------
  891|      0|        }
  892|      0|    }
  893|      4|    return name;
  894|      4|}
_PyImport_SwapPackageContext:
  898|     24|{
  899|     24|    const char *oldcontext = PKGCONTEXT;
  ------------------
  |  |  881|     24|# define PKGCONTEXT pkgcontext
  ------------------
  900|     24|    PKGCONTEXT = newcontext;
  ------------------
  |  |  881|     24|# define PKGCONTEXT pkgcontext
  ------------------
  901|     24|    return oldcontext;
  902|     24|}
_PyImport_FixupBuiltin:
 2383|      2|{
 2384|      2|    int res = -1;
 2385|      2|    assert(mod != NULL && PyModule_Check(mod));
  ------------------
  |  Branch (2385:5): [True: 2, False: 0]
  |  Branch (2385:5): [True: 2, False: 0]
  ------------------
 2386|       |
 2387|      2|    PyObject *nameobj;
 2388|      2|    nameobj = PyUnicode_InternFromString(name);
 2389|      2|    if (nameobj == NULL) {
  ------------------
  |  Branch (2389:9): [True: 0, False: 2]
  ------------------
 2390|      0|        return -1;
 2391|      0|    }
 2392|       |
 2393|      2|    PyModuleDef *def = _PyModule_GetDefOrNull(mod);
 2394|      2|    if (def == NULL) {
  ------------------
  |  Branch (2394:9): [True: 0, False: 2]
  ------------------
 2395|      0|        assert(!PyErr_Occurred());
  ------------------
  |  Branch (2395:9): [True: 0, False: 0]
  ------------------
 2396|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
 2397|      0|        goto finally;
 2398|      0|    }
 2399|       |
 2400|       |    /* We only use _PyImport_FixupBuiltin() for the core builtin modules
 2401|       |     * (sys and builtins).  These modules are single-phase init with no
 2402|       |     * module state, but we also don't populate def->m_base.m_copy
 2403|       |     * for them. */
 2404|      2|    assert(is_core_module(tstate->interp, nameobj, nameobj));
  ------------------
  |  Branch (2404:5): [True: 2, False: 0]
  ------------------
 2405|      2|    assert_singlephase_def(def);
  ------------------
  |  | 1786|      2|    do {                                                            \
  |  | 1787|      2|        _Py_ext_module_kind kind = _get_extension_kind(def, true);  \
  |  | 1788|      2|        assert(kind == _Py_ext_module_kind_SINGLEPHASE              \
  |  | 1789|      2|                || kind == _Py_ext_module_kind_UNKNOWN);            \
  |  | 1790|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (1790:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (2405:5): [True: 2, False: 0]
  |  Branch (2405:5): [True: 0, False: 0]
  ------------------
 2406|      2|    assert(def->m_size == -1);
  ------------------
  |  Branch (2406:5): [True: 2, False: 0]
  ------------------
 2407|      2|    assert(def->m_base.m_copy == NULL);
  ------------------
  |  Branch (2407:5): [True: 2, False: 0]
  ------------------
 2408|      2|    assert(def->m_base.m_index >= 0);
  ------------------
  |  Branch (2408:5): [True: 2, False: 0]
  ------------------
 2409|       |
 2410|       |    /* We aren't using import_find_extension() for core modules,
 2411|       |     * so we have to do the extra check to make sure the module
 2412|       |     * isn't already in the global cache before calling
 2413|       |     * update_global_state_for_extension(). */
 2414|      2|    struct extensions_cache_value *cached
 2415|      2|            = _extensions_cache_get(nameobj, nameobj);
 2416|      2|    if (cached == NULL) {
  ------------------
  |  Branch (2416:9): [True: 2, False: 0]
  ------------------
 2417|      2|        struct singlephase_global_update singlephase = {
 2418|      2|            .m_index=def->m_base.m_index,
 2419|       |            /* We don't want def->m_base.m_copy populated. */
 2420|      2|            .m_dict=NULL,
 2421|      2|            .origin=_Py_ext_module_origin_CORE,
 2422|       |#ifdef Py_GIL_DISABLED
 2423|       |            /* Unused when m_dict == NULL. */
 2424|       |            .md_requires_gil=false,
 2425|       |#endif
 2426|      2|        };
 2427|      2|        cached = update_global_state_for_extension(
 2428|      2|                tstate, nameobj, nameobj, def, &singlephase);
 2429|      2|        if (cached == NULL) {
  ------------------
  |  Branch (2429:13): [True: 0, False: 2]
  ------------------
 2430|      0|            goto finally;
 2431|      0|        }
 2432|      2|    }
 2433|       |
 2434|      2|    if (finish_singlephase_extension(tstate, mod, cached, nameobj, modules) < 0) {
  ------------------
  |  Branch (2434:9): [True: 0, False: 2]
  ------------------
 2435|      0|        goto finally;
 2436|      0|    }
 2437|       |
 2438|      2|    res = 0;
 2439|       |
 2440|      2|finally:
 2441|      2|    Py_DECREF(nameobj);
  ------------------
  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2442|      2|    return res;
 2443|      2|}
_PyImport_GetBuiltinModuleNames:
 2688|      1|{
 2689|      1|    PyObject *list = PyList_New(0);
 2690|      1|    if (list == NULL) {
  ------------------
  |  Branch (2690:9): [True: 0, False: 1]
  ------------------
 2691|      0|        return NULL;
 2692|      0|    }
 2693|      1|    struct _inittab *inittab = INITTAB;
  ------------------
  |  |   80|      1|#define INITTAB _PyRuntime.imports.inittab
  ------------------
 2694|     39|    for (Py_ssize_t i = 0; inittab[i].name != NULL; i++) {
  ------------------
  |  Branch (2694:28): [True: 38, False: 1]
  ------------------
 2695|     38|        PyObject *name = PyUnicode_FromString(inittab[i].name);
 2696|     38|        if (name == NULL) {
  ------------------
  |  Branch (2696:13): [True: 0, False: 38]
  ------------------
 2697|      0|            Py_DECREF(list);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2698|      0|            return NULL;
 2699|      0|        }
 2700|     38|        if (PyList_Append(list, name) < 0) {
  ------------------
  |  Branch (2700:13): [True: 0, False: 38]
  ------------------
 2701|      0|            Py_DECREF(name);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2702|      0|            Py_DECREF(list);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2703|      0|            return NULL;
 2704|      0|        }
 2705|     38|        Py_DECREF(name);
  ------------------
  |  |  430|     38|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     38|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     38|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2706|     38|    }
 2707|      1|    return list;
 2708|      1|}
PyImport_ImportFrozenModuleObject:
 3233|      1|{
 3234|      1|    PyThreadState *tstate = _PyThreadState_GET();
 3235|      1|    PyObject *co, *m, *d = NULL;
 3236|      1|    int err;
 3237|       |
 3238|      1|    struct frozen_info info;
 3239|      1|    frozen_status status = find_frozen(name, &info);
 3240|      1|    if (status == FROZEN_NOT_FOUND || status == FROZEN_DISABLED) {
  ------------------
  |  Branch (3240:9): [True: 0, False: 1]
  |  Branch (3240:39): [True: 0, False: 1]
  ------------------
 3241|      0|        return 0;
 3242|      0|    }
 3243|      1|    else if (status == FROZEN_BAD_NAME) {
  ------------------
  |  Branch (3243:14): [True: 0, False: 1]
  ------------------
 3244|      0|        return 0;
 3245|      0|    }
 3246|      1|    else if (status != FROZEN_OKAY) {
  ------------------
  |  Branch (3246:14): [True: 0, False: 1]
  ------------------
 3247|      0|        set_frozen_error(status, name);
 3248|      0|        return -1;
 3249|      0|    }
 3250|      1|    co = unmarshal_frozen_code(tstate->interp, &info);
 3251|      1|    if (co == NULL) {
  ------------------
  |  Branch (3251:9): [True: 0, False: 1]
  ------------------
 3252|      0|        return -1;
 3253|      0|    }
 3254|      1|    if (info.is_package) {
  ------------------
  |  Branch (3254:9): [True: 0, False: 1]
  ------------------
 3255|       |        /* Set __path__ to the empty list */
 3256|      0|        PyObject *l;
 3257|      0|        m = import_add_module(tstate, name);
 3258|      0|        if (m == NULL)
  ------------------
  |  Branch (3258:13): [True: 0, False: 0]
  ------------------
 3259|      0|            goto err_return;
 3260|      0|        d = PyModule_GetDict(m);
 3261|      0|        l = PyList_New(0);
 3262|      0|        if (l == NULL) {
  ------------------
  |  Branch (3262:13): [True: 0, False: 0]
  ------------------
 3263|      0|            Py_DECREF(m);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3264|      0|            goto err_return;
 3265|      0|        }
 3266|      0|        err = PyDict_SetItemString(d, "__path__", l);
 3267|      0|        Py_DECREF(l);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3268|      0|        Py_DECREF(m);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3269|      0|        if (err != 0)
  ------------------
  |  Branch (3269:13): [True: 0, False: 0]
  ------------------
 3270|      0|            goto err_return;
 3271|      0|    }
 3272|      1|    d = module_dict_for_exec(tstate, name);
 3273|      1|    if (d == NULL) {
  ------------------
  |  Branch (3273:9): [True: 0, False: 1]
  ------------------
 3274|      0|        goto err_return;
 3275|      0|    }
 3276|      1|    m = exec_code_in_module(tstate, name, d, co);
 3277|      1|    if (m == NULL) {
  ------------------
  |  Branch (3277:9): [True: 0, False: 1]
  ------------------
 3278|      0|        goto err_return;
 3279|      0|    }
 3280|      1|    Py_DECREF(m);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3281|       |    /* Set __origname__ (consumed in FrozenImporter._setup_module()). */
 3282|      1|    PyObject *origname;
 3283|      1|    if (info.origname) {
  ------------------
  |  Branch (3283:9): [True: 1, False: 0]
  ------------------
 3284|      1|        origname = PyUnicode_FromString(info.origname);
 3285|      1|        if (origname == NULL) {
  ------------------
  |  Branch (3285:13): [True: 0, False: 1]
  ------------------
 3286|      0|            goto err_return;
 3287|      0|        }
 3288|      1|    }
 3289|      0|    else {
 3290|      0|        origname = Py_NewRef(Py_None);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3291|      0|    }
 3292|      1|    err = PyDict_SetItemString(d, "__origname__", origname);
 3293|      1|    Py_DECREF(origname);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3294|      1|    if (err != 0) {
  ------------------
  |  Branch (3294:9): [True: 0, False: 1]
  ------------------
 3295|      0|        goto err_return;
 3296|      0|    }
 3297|      1|    Py_DECREF(d);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3298|      1|    Py_DECREF(co);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3299|      1|    return 1;
 3300|       |
 3301|      0|err_return:
 3302|      0|    Py_XDECREF(d);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3303|      0|    Py_DECREF(co);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3304|      0|    return -1;
 3305|      1|}
PyImport_ImportFrozenModule:
 3309|      1|{
 3310|      1|    PyObject *nameobj;
 3311|      1|    int ret;
 3312|      1|    nameobj = PyUnicode_InternFromString(name);
 3313|      1|    if (nameobj == NULL)
  ------------------
  |  Branch (3313:9): [True: 0, False: 1]
  ------------------
 3314|      0|        return -1;
 3315|      1|    ret = PyImport_ImportFrozenModuleObject(nameobj);
 3316|      1|    Py_DECREF(nameobj);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3317|      1|    return ret;
 3318|      1|}
_PyImport_GetImportlibLoader:
 3448|      1|{
 3449|      1|    return PyObject_GetAttrString(IMPORTLIB(interp), loader_name);
  ------------------
  |  |   98|      1|    (interp)->imports.importlib
  ------------------
 3450|      1|}
_PyImport_InitDefaultImportFunc:
 3577|      1|{
 3578|       |    // Get the __import__ function
 3579|      1|    PyObject *import_func;
 3580|      1|    if (PyDict_GetItemStringRef(interp->builtins, "__import__", &import_func) <= 0) {
  ------------------
  |  Branch (3580:9): [True: 0, False: 1]
  ------------------
 3581|      0|        return -1;
 3582|      0|    }
 3583|      1|    IMPORT_FUNC(interp) = import_func;
  ------------------
  |  |  108|      1|    (interp)->imports.import_func
  ------------------
 3584|       |
 3585|       |    // Get the __lazy_import__ function
 3586|      1|    if (PyDict_GetItemStringRef(interp->builtins, "__lazy_import__",
  ------------------
  |  Branch (3586:9): [True: 0, False: 1]
  ------------------
 3587|      1|                                &import_func) <= 0) {
 3588|      0|        return -1;
 3589|      0|    }
 3590|      1|    LAZY_IMPORT_FUNC(interp) = import_func;
  ------------------
  |  |  111|      1|    (interp)->imports.lazy_import_func
  ------------------
 3591|      1|    return 0;
 3592|      1|}
_PyImport_IsDefaultImportFunc:
 3596|     62|{
 3597|     62|    return func == IMPORT_FUNC(interp);
  ------------------
  |  |  108|     62|    (interp)->imports.import_func
  ------------------
 3598|     62|}
_PyImport_IsDefaultLazyImportFunc:
 3602|      4|{
 3603|      4|    return func == LAZY_IMPORT_FUNC(interp);
  ------------------
  |  |  111|      4|    (interp)->imports.lazy_import_func
  ------------------
 3604|      4|}
PyImport_ImportModule:
 3611|      5|{
 3612|      5|    PyObject *pname;
 3613|      5|    PyObject *result;
 3614|       |
 3615|      5|    pname = PyUnicode_FromString(name);
 3616|      5|    if (pname == NULL)
  ------------------
  |  Branch (3616:9): [True: 0, False: 5]
  ------------------
 3617|      0|        return NULL;
 3618|      5|    result = PyImport_Import(pname);
 3619|      5|    Py_DECREF(pname);
  ------------------
  |  |  430|      5|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3620|      5|    return result;
 3621|      5|}
PyImport_ImportModuleLevelObject:
 4177|     80|{
 4178|     80|    PyThreadState *tstate = _PyThreadState_GET();
 4179|     80|    PyObject *abs_name = NULL;
 4180|     80|    PyObject *final_mod = NULL;
 4181|     80|    PyObject *mod = NULL;
 4182|     80|    PyInterpreterState *interp = tstate->interp;
 4183|     80|    int has_from;
 4184|       |
 4185|     80|    if (name == NULL) {
  ------------------
  |  Branch (4185:9): [True: 0, False: 80]
  ------------------
 4186|      0|        _PyErr_SetString(tstate, PyExc_ValueError, "Empty module name");
 4187|      0|        goto error;
 4188|      0|    }
 4189|       |
 4190|       |    /* The below code is importlib.__import__() & _gcd_import(), ported to C
 4191|       |       for added performance. */
 4192|       |
 4193|     80|    if (!PyUnicode_Check(name)) {
  ------------------
  |  |  103|     80|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     80|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (4193:9): [True: 0, False: 80]
  ------------------
 4194|      0|        _PyErr_SetString(tstate, PyExc_TypeError,
 4195|      0|                         "module name must be a string");
 4196|      0|        goto error;
 4197|      0|    }
 4198|     80|    if (level < 0) {
  ------------------
  |  Branch (4198:9): [True: 0, False: 80]
  ------------------
 4199|      0|        _PyErr_SetString(tstate, PyExc_ValueError, "level must be >= 0");
 4200|      0|        goto error;
 4201|      0|    }
 4202|       |
 4203|     80|    abs_name = get_abs_name(tstate, name, globals, level);
 4204|     80|    if (abs_name == NULL) {
  ------------------
  |  Branch (4204:9): [True: 0, False: 80]
  ------------------
 4205|      0|        goto error;
 4206|      0|    }
 4207|       |
 4208|     80|    mod = import_get_module(tstate, abs_name);
 4209|     80|    if (mod == NULL && _PyErr_Occurred(tstate)) {
  ------------------
  |  Branch (4209:9): [True: 24, False: 56]
  |  Branch (4209:24): [True: 0, False: 24]
  ------------------
 4210|      0|        goto error;
 4211|      0|    }
 4212|       |
 4213|     80|    if (mod != NULL && mod != Py_None) {
  ------------------
  |  |  616|     56|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (4213:9): [True: 56, False: 24]
  |  Branch (4213:24): [True: 56, False: 0]
  ------------------
 4214|     56|        if (import_ensure_initialized(tstate->interp, mod, abs_name) < 0) {
  ------------------
  |  Branch (4214:13): [True: 0, False: 56]
  ------------------
 4215|      0|            goto error;
 4216|      0|        }
 4217|       |        /* Verify the module is still in sys.modules. Another thread may have
 4218|       |           removed it (due to import failure) between our import_get_module()
 4219|       |           call and the _initializing check in import_ensure_initialized().
 4220|       |           If removed, we retry the import to preserve normal semantics: the
 4221|       |           caller gets the exception from the actual import failure rather
 4222|       |           than a synthetic error. */
 4223|     56|        PyObject *mod_check = import_get_module(tstate, abs_name);
 4224|     56|        if (mod_check != mod) {
  ------------------
  |  Branch (4224:13): [True: 0, False: 56]
  ------------------
 4225|      0|            Py_XDECREF(mod_check);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4226|      0|            if (_PyErr_Occurred(tstate)) {
  ------------------
  |  Branch (4226:17): [True: 0, False: 0]
  ------------------
 4227|      0|                goto error;
 4228|      0|            }
 4229|      0|            Py_DECREF(mod);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4230|      0|            mod = import_find_and_load(tstate, abs_name);
 4231|      0|            if (mod == NULL) {
  ------------------
  |  Branch (4231:17): [True: 0, False: 0]
  ------------------
 4232|      0|                goto error;
 4233|      0|            }
 4234|      0|        }
 4235|     56|        else {
 4236|     56|            Py_DECREF(mod_check);
  ------------------
  |  |  430|     56|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     56|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     56|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4237|     56|        }
 4238|     56|    }
 4239|     24|    else {
 4240|     24|        Py_XDECREF(mod);
  ------------------
  |  |  524|     24|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     24|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     24|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4241|     24|        mod = import_find_and_load(tstate, abs_name);
 4242|     24|        if (mod == NULL) {
  ------------------
  |  Branch (4242:13): [True: 2, False: 22]
  ------------------
 4243|      2|            goto error;
 4244|      2|        }
 4245|     24|    }
 4246|       |
 4247|     78|    has_from = 0;
 4248|     78|    if (fromlist != NULL && fromlist != Py_None) {
  ------------------
  |  |  616|     68|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (4248:9): [True: 68, False: 10]
  |  Branch (4248:29): [True: 26, False: 42]
  ------------------
 4249|     26|        has_from = PyObject_IsTrue(fromlist);
 4250|     26|        if (has_from < 0)
  ------------------
  |  Branch (4250:13): [True: 0, False: 26]
  ------------------
 4251|      0|            goto error;
 4252|     26|    }
 4253|     78|    if (!has_from) {
  ------------------
  |  Branch (4253:9): [True: 59, False: 19]
  ------------------
 4254|     59|        Py_ssize_t len = PyUnicode_GET_LENGTH(name);
  ------------------
  |  |  299|     59|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     59|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     59|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4255|     59|        if (level == 0 || len > 0) {
  ------------------
  |  Branch (4255:13): [True: 59, False: 0]
  |  Branch (4255:27): [True: 0, False: 0]
  ------------------
 4256|     59|            Py_ssize_t dot;
 4257|       |
 4258|     59|            dot = PyUnicode_FindChar(name, '.', 0, len, 1);
 4259|     59|            if (dot == -2) {
  ------------------
  |  Branch (4259:17): [True: 0, False: 59]
  ------------------
 4260|      0|                goto error;
 4261|      0|            }
 4262|       |
 4263|     59|            if (dot == -1) {
  ------------------
  |  Branch (4263:17): [True: 58, False: 1]
  ------------------
 4264|       |                /* No dot in module name, simple exit */
 4265|     58|                final_mod = Py_NewRef(mod);
  ------------------
  |  |  550|     58|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     58|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     58|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4266|     58|                goto error;
 4267|     58|            }
 4268|       |
 4269|      1|            if (level == 0) {
  ------------------
  |  Branch (4269:17): [True: 1, False: 0]
  ------------------
 4270|      1|                PyObject *front = PyUnicode_Substring(name, 0, dot);
 4271|      1|                if (front == NULL) {
  ------------------
  |  Branch (4271:21): [True: 0, False: 1]
  ------------------
 4272|      0|                    goto error;
 4273|      0|                }
 4274|       |
 4275|      1|                final_mod = PyImport_ImportModuleLevelObject(front, NULL, NULL, NULL, 0);
 4276|      1|                Py_DECREF(front);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4277|      1|            }
 4278|      0|            else {
 4279|      0|                Py_ssize_t cut_off = len - dot;
 4280|      0|                Py_ssize_t abs_name_len = PyUnicode_GET_LENGTH(abs_name);
  ------------------
  |  |  299|      0|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4281|      0|                PyObject *to_return = PyUnicode_Substring(abs_name, 0,
 4282|      0|                                                        abs_name_len - cut_off);
 4283|      0|                if (to_return == NULL) {
  ------------------
  |  Branch (4283:21): [True: 0, False: 0]
  ------------------
 4284|      0|                    goto error;
 4285|      0|                }
 4286|       |
 4287|      0|                final_mod = import_get_module(tstate, to_return);
 4288|      0|                if (final_mod == NULL) {
  ------------------
  |  Branch (4288:21): [True: 0, False: 0]
  ------------------
 4289|      0|                    if (!_PyErr_Occurred(tstate)) {
  ------------------
  |  Branch (4289:25): [True: 0, False: 0]
  ------------------
 4290|      0|                        _PyErr_Format(tstate, PyExc_KeyError,
 4291|      0|                                      "%R not in sys.modules as expected",
 4292|      0|                                      to_return);
 4293|      0|                    }
 4294|      0|                    Py_DECREF(to_return);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4295|      0|                    goto error;
 4296|      0|                }
 4297|       |
 4298|      0|                Py_DECREF(to_return);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4299|      0|            }
 4300|      1|        }
 4301|      0|        else {
 4302|      0|            final_mod = Py_NewRef(mod);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4303|      0|        }
 4304|     59|    }
 4305|     19|    else {
 4306|     19|        int has_path = PyObject_HasAttrWithError(mod, &_Py_ID(__path__));
  ------------------
  |  |  917|     19|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     19|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     19|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4307|     19|        if (has_path < 0) {
  ------------------
  |  Branch (4307:13): [True: 0, False: 19]
  ------------------
 4308|      0|            goto error;
 4309|      0|        }
 4310|     19|        if (has_path) {
  ------------------
  |  Branch (4310:13): [True: 1, False: 18]
  ------------------
 4311|      1|            final_mod = PyObject_CallMethodObjArgs(
 4312|      1|                        IMPORTLIB(interp), &_Py_ID(_handle_fromlist),
  ------------------
  |  |   98|      1|    (interp)->imports.importlib
  ------------------
                                      IMPORTLIB(interp), &_Py_ID(_handle_fromlist),
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4313|      1|                        mod, fromlist, IMPORT_FUNC(interp), NULL);
  ------------------
  |  |  108|      1|    (interp)->imports.import_func
  ------------------
 4314|      1|        }
 4315|     18|        else {
 4316|     18|            final_mod = Py_NewRef(mod);
  ------------------
  |  |  550|     18|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     18|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     18|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4317|     18|        }
 4318|     19|    }
 4319|       |
 4320|     80|  error:
 4321|     80|    Py_XDECREF(abs_name);
  ------------------
  |  |  524|     80|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     80|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     80|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4322|     80|    Py_XDECREF(mod);
  ------------------
  |  |  524|     80|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     80|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     80|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4323|     80|    if (final_mod == NULL) {
  ------------------
  |  Branch (4323:9): [True: 2, False: 78]
  ------------------
 4324|      2|        remove_importlib_frames(tstate);
 4325|      2|    }
 4326|     80|    return final_mod;
 4327|     78|}
_PyImport_LazyImportModuleLevelObject:
 4477|      4|{
 4478|      4|    assert(name != NULL);
  ------------------
  |  Branch (4478:5): [True: 4, False: 0]
  ------------------
 4479|      4|    if (!PyUnicode_Check(name)) {
  ------------------
  |  |  103|      4|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      4|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (4479:9): [True: 0, False: 4]
  ------------------
 4480|      0|        _PyErr_Format(tstate, PyExc_TypeError,
 4481|      0|                      "module name must be a string, got %T", name);
 4482|      0|        return NULL;
 4483|      0|    }
 4484|      4|    if (level < 0) {
  ------------------
  |  Branch (4484:9): [True: 0, False: 4]
  ------------------
 4485|      0|        _PyErr_SetString(tstate, PyExc_ValueError, "level must be >= 0");
 4486|      0|        return NULL;
 4487|      0|    }
 4488|       |
 4489|      4|    PyObject *abs_name = get_abs_name(tstate, name, globals, level);
 4490|      4|    if (abs_name == NULL) {
  ------------------
  |  Branch (4490:9): [True: 0, False: 4]
  ------------------
 4491|      0|        return NULL;
 4492|      0|    }
 4493|       |
 4494|      4|    PyInterpreterState *interp = tstate->interp;
 4495|      4|    _PyInterpreterFrame *frame = _PyEval_GetFrame();
 4496|      4|    if (frame == NULL || frame->f_globals != frame->f_locals) {
  ------------------
  |  Branch (4496:9): [True: 0, False: 4]
  |  Branch (4496:26): [True: 0, False: 4]
  ------------------
 4497|      0|        Py_DECREF(abs_name);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4498|      0|        PyErr_SetString(PyExc_SyntaxError,
 4499|      0|                        "'lazy import' is only allowed at module level");
 4500|      0|        return NULL;
 4501|      0|    }
 4502|       |
 4503|       |    // Check if the filter disables the lazy import.
 4504|       |    // We must hold a reference to the filter while calling it to prevent
 4505|       |    // use-after-free if another thread replaces it via
 4506|       |    // PyImport_SetLazyImportsFilter.
 4507|      4|    LAZY_IMPORTS_LOCK(interp);
 4508|      4|    PyObject *filter = Py_XNewRef(LAZY_IMPORTS_FILTER(interp));
  ------------------
  |  |  551|      4|#  define Py_XNewRef(obj) _Py_XNewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4509|      4|    LAZY_IMPORTS_UNLOCK(interp);
 4510|       |
 4511|      4|    if (filter != NULL) {
  ------------------
  |  Branch (4511:9): [True: 0, False: 4]
  ------------------
 4512|      0|        PyObject *modname;
 4513|      0|        if (PyDict_GetItemRef(globals, &_Py_ID(__name__), &modname) < 0) {
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4513:13): [True: 0, False: 0]
  ------------------
 4514|      0|            Py_DECREF(filter);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4515|      0|            Py_DECREF(abs_name);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4516|      0|            return NULL;
 4517|      0|        }
 4518|      0|        if (modname == NULL) {
  ------------------
  |  Branch (4518:13): [True: 0, False: 0]
  ------------------
 4519|      0|            assert(!PyErr_Occurred());
  ------------------
  |  Branch (4519:13): [True: 0, False: 0]
  ------------------
 4520|      0|            modname = Py_NewRef(Py_None);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4521|      0|        }
 4522|      0|        if (fromlist == NULL) {
  ------------------
  |  Branch (4522:13): [True: 0, False: 0]
  ------------------
 4523|      0|            assert(!PyErr_Occurred());
  ------------------
  |  Branch (4523:13): [True: 0, False: 0]
  ------------------
 4524|      0|            fromlist = Py_NewRef(Py_None);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4525|      0|        }
 4526|      0|        PyObject *args[] = {modname, abs_name, fromlist};
 4527|      0|        PyObject *res = PyObject_Vectorcall(filter, args, 3, NULL);
 4528|       |
 4529|      0|        Py_DECREF(modname);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4530|      0|        Py_DECREF(filter);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4531|       |
 4532|      0|        if (res == NULL) {
  ------------------
  |  Branch (4532:13): [True: 0, False: 0]
  ------------------
 4533|      0|            Py_DECREF(abs_name);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4534|      0|            return NULL;
 4535|      0|        }
 4536|       |
 4537|      0|        int is_true = PyObject_IsTrue(res);
 4538|      0|        Py_DECREF(res);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4539|       |
 4540|      0|        if (is_true < 0) {
  ------------------
  |  Branch (4540:13): [True: 0, False: 0]
  ------------------
 4541|      0|            Py_DECREF(abs_name);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4542|      0|            return NULL;
 4543|      0|        }
 4544|      0|        if (!is_true) {
  ------------------
  |  Branch (4544:13): [True: 0, False: 0]
  ------------------
 4545|      0|            Py_DECREF(abs_name);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4546|      0|            return PyImport_ImportModuleLevelObject(
 4547|      0|                name, globals, locals, fromlist, level
 4548|      0|            );
 4549|      0|        }
 4550|      0|    }
 4551|       |
 4552|       |    // here, 'filter' is either NULL or is equivalent to a borrowed reference
 4553|      4|    PyObject *res = _PyLazyImport_New(frame, builtins, abs_name, fromlist);
 4554|      4|    if (res == NULL) {
  ------------------
  |  Branch (4554:9): [True: 0, False: 4]
  ------------------
 4555|      0|        Py_DECREF(abs_name);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4556|      0|        return NULL;
 4557|      0|    }
 4558|      4|    if (fromlist && PyUnicode_Check(fromlist)) {
  ------------------
  |  |  103|      4|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      4|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4558:9): [True: 4, False: 0]
  ------------------
 4559|      0|        if (register_from_lazy_on_parent(tstate, abs_name, fromlist,
  ------------------
  |  Branch (4559:13): [True: 0, False: 0]
  ------------------
 4560|      0|                                         builtins) < 0) {
 4561|      0|            goto error;
 4562|      0|        }
 4563|      0|    }
 4564|      4|    else if (fromlist && PyTuple_Check(fromlist) &&
  ------------------
  |  |   27|      4|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TUPLE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      8|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 0, False: 4]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4564:14): [True: 4, False: 0]
  ------------------
 4565|      0|             PyTuple_GET_SIZE(fromlist)) {
  ------------------
  |  |   27|      0|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (27:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4566|      0|        for (Py_ssize_t i = 0; i < PyTuple_GET_SIZE(fromlist); i++) {
  ------------------
  |  |   27|      0|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4566:32): [True: 0, False: 0]
  ------------------
 4567|      0|            if (register_from_lazy_on_parent(tstate, abs_name,
  ------------------
  |  Branch (4567:17): [True: 0, False: 0]
  ------------------
 4568|      0|                                             PyTuple_GET_ITEM(fromlist, i),
  ------------------
  |  |   29|      0|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|      0|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4568:46): [True: 0, False: 0]
  ------------------
 4569|      0|                                             builtins) < 0)
 4570|      0|            {
 4571|      0|                goto error;
 4572|      0|            }
 4573|      0|        }
 4574|      0|    }
 4575|      4|    else if (register_lazy_on_parent(tstate, abs_name, builtins) < 0) {
  ------------------
  |  Branch (4575:14): [True: 0, False: 4]
  ------------------
 4576|      0|        goto error;
 4577|      0|    }
 4578|       |
 4579|      4|    Py_DECREF(abs_name);
  ------------------
  |  |  430|      4|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4580|      4|    return res;
 4581|      0|error:
 4582|      0|    Py_DECREF(abs_name);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4583|      0|    Py_DECREF(res);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4584|       |    return NULL;
 4585|      4|}
PyImport_ImportModuleLevel:
 4590|      7|{
 4591|      7|    PyObject *nameobj, *mod;
 4592|      7|    nameobj = PyUnicode_FromString(name);
 4593|      7|    if (nameobj == NULL)
  ------------------
  |  Branch (4593:9): [True: 0, False: 7]
  ------------------
 4594|      0|        return NULL;
 4595|      7|    mod = PyImport_ImportModuleLevelObject(nameobj, globals, locals,
 4596|      7|                                           fromlist, level);
 4597|      7|    Py_DECREF(nameobj);
  ------------------
  |  |  430|      7|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      7|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4598|      7|    return mod;
 4599|      7|}
PyImport_Import:
 4638|      7|{
 4639|      7|    PyThreadState *tstate = _PyThreadState_GET();
 4640|      7|    PyObject *globals = NULL;
 4641|      7|    PyObject *import = NULL;
 4642|      7|    PyObject *builtins = NULL;
 4643|      7|    PyObject *r = NULL;
 4644|       |
 4645|      7|    PyObject *from_list = PyList_New(0);
 4646|      7|    if (from_list == NULL) {
  ------------------
  |  Branch (4646:9): [True: 0, False: 7]
  ------------------
 4647|      0|        goto err;
 4648|      0|    }
 4649|       |
 4650|       |    /* Get the builtins from current globals */
 4651|      7|    globals = PyEval_GetGlobals();  // borrowed
 4652|      7|    if (globals != NULL) {
  ------------------
  |  Branch (4652:9): [True: 0, False: 7]
  ------------------
 4653|      0|        Py_INCREF(globals);
  ------------------
  |  |  310|      0|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4654|       |        // XXX Use _PyEval_EnsureBuiltins()?
 4655|      0|        builtins = PyObject_GetItem(globals, &_Py_ID(__builtins__));
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4656|      0|        if (builtins == NULL) {
  ------------------
  |  Branch (4656:13): [True: 0, False: 0]
  ------------------
 4657|       |            // XXX Fall back to interp->builtins or sys.modules['builtins']?
 4658|      0|            goto err;
 4659|      0|        }
 4660|      0|    }
 4661|      7|    else if (_PyErr_Occurred(tstate)) {
  ------------------
  |  Branch (4661:14): [True: 0, False: 7]
  ------------------
 4662|      0|        goto err;
 4663|      0|    }
 4664|      7|    else {
 4665|       |        /* No globals -- use standard builtins, and fake globals */
 4666|      7|        globals = PyDict_New();
 4667|      7|        if (globals == NULL) {
  ------------------
  |  Branch (4667:13): [True: 0, False: 7]
  ------------------
 4668|      0|            goto err;
 4669|      0|        }
 4670|      7|        if (_PyEval_EnsureBuiltinsWithModule(tstate, globals, &builtins) < 0) {
  ------------------
  |  Branch (4670:13): [True: 0, False: 7]
  ------------------
 4671|      0|            goto err;
 4672|      0|        }
 4673|      7|    }
 4674|       |
 4675|       |    /* Get the __import__ function from the builtins */
 4676|      7|    if (PyDict_Check(builtins)) {
  ------------------
  |  |   18|      7|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      7|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 0, False: 7]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4677|      0|        import = PyObject_GetItem(builtins, &_Py_ID(__import__));
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4678|      0|        if (import == NULL) {
  ------------------
  |  Branch (4678:13): [True: 0, False: 0]
  ------------------
 4679|      0|            _PyErr_SetObject(tstate, PyExc_KeyError, &_Py_ID(__import__));
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4680|      0|        }
 4681|      0|    }
 4682|      7|    else
 4683|      7|        import = PyObject_GetAttr(builtins, &_Py_ID(__import__));
  ------------------
  |  |  917|      7|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      7|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      7|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4684|      7|    if (import == NULL)
  ------------------
  |  Branch (4684:9): [True: 0, False: 7]
  ------------------
 4685|      0|        goto err;
 4686|       |
 4687|       |    /* Call the __import__ function with the proper argument list
 4688|       |       Always use absolute import here.
 4689|       |       Calling for side-effect of import. */
 4690|      7|    r = PyObject_CallFunction(import, "OOOOi", module_name, globals,
 4691|      7|                              globals, from_list, 0, NULL);
 4692|      7|    if (r == NULL)
  ------------------
  |  Branch (4692:9): [True: 0, False: 7]
  ------------------
 4693|      0|        goto err;
 4694|      7|    Py_DECREF(r);
  ------------------
  |  |  430|      7|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      7|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4695|       |
 4696|      7|    r = import_get_module(tstate, module_name);
 4697|      7|    if (r == NULL && !_PyErr_Occurred(tstate)) {
  ------------------
  |  Branch (4697:9): [True: 0, False: 7]
  |  Branch (4697:22): [True: 0, False: 0]
  ------------------
 4698|      0|        _PyErr_SetObject(tstate, PyExc_KeyError, module_name);
 4699|      0|    }
 4700|       |
 4701|      7|  err:
 4702|      7|    Py_XDECREF(globals);
  ------------------
  |  |  524|      7|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      7|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4703|      7|    Py_XDECREF(builtins);
  ------------------
  |  |  524|      7|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      7|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4704|      7|    Py_XDECREF(import);
  ------------------
  |  |  524|      7|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      7|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4705|      7|    Py_XDECREF(from_list);
  ------------------
  |  |  524|      7|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      7|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4706|       |
 4707|      7|    return r;
 4708|      7|}
_PyImport_Init:
 4717|      1|{
 4718|      1|    if (INITTAB != NULL) {
  ------------------
  |  |   80|      1|#define INITTAB _PyRuntime.imports.inittab
  ------------------
  |  Branch (4718:9): [True: 0, False: 1]
  ------------------
 4719|      0|        return _PyStatus_ERR("global import state already initialized");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 4720|      0|    }
 4721|      1|    if (init_builtin_modules_table() != 0) {
  ------------------
  |  Branch (4721:9): [True: 0, False: 1]
  ------------------
 4722|      0|        return PyStatus_NoMemory();
 4723|      0|    }
 4724|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 4725|      1|}
_PyImport_InitCore:
 4757|      1|{
 4758|       |    // XXX Initialize here: interp->modules and interp->import_func.
 4759|       |    // XXX Initialize here: sys.modules and sys.meta_path.
 4760|       |
 4761|      1|    if (importlib) {
  ------------------
  |  Branch (4761:9): [True: 1, False: 0]
  ------------------
 4762|       |        /* This call sets up builtin and frozen import support */
 4763|      1|        if (init_importlib(tstate, sysmod) < 0) {
  ------------------
  |  Branch (4763:13): [True: 0, False: 1]
  ------------------
 4764|      0|            return _PyStatus_ERR("failed to initialize importlib");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 4765|      0|        }
 4766|      1|    }
 4767|       |
 4768|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 4769|      1|}
_PyImport_InitExternal:
 4862|      1|{
 4863|      1|    int verbose = _PyInterpreterState_GetConfig(tstate->interp)->verbose;
 4864|       |
 4865|       |    // XXX Initialize here: sys.path_hooks and sys.path_importer_cache.
 4866|       |
 4867|      1|    if (init_importlib_external(tstate->interp) != 0) {
  ------------------
  |  Branch (4867:9): [True: 0, False: 1]
  ------------------
 4868|      0|        _PyErr_Print(tstate);
 4869|      0|        return _PyStatus_ERR("external importer setup failed");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 4870|      0|    }
 4871|       |
 4872|      1|    if (init_zipimport(tstate, verbose) != 0) {
  ------------------
  |  Branch (4872:9): [True: 0, False: 1]
  ------------------
 4873|      0|        PyErr_Print();
 4874|      0|        return _PyStatus_ERR("initializing zipimport failed");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 4875|      0|    }
 4876|       |
 4877|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 4878|      1|}
PyImport_ImportModuleAttr:
 4904|      2|{
 4905|      2|    PyObject *mod = PyImport_Import(modname);
 4906|      2|    if (mod == NULL) {
  ------------------
  |  Branch (4906:9): [True: 0, False: 2]
  ------------------
 4907|      0|        return NULL;
 4908|      0|    }
 4909|      2|    PyObject *result = PyObject_GetAttr(mod, attrname);
 4910|      2|    Py_DECREF(mod);
  ------------------
  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4911|      2|    return result;
 4912|      2|}
PyImport_ImportModuleAttrString:
 4916|      2|{
 4917|      2|    PyObject *pmodname = PyUnicode_FromString(modname);
 4918|      2|    if (pmodname == NULL) {
  ------------------
  |  Branch (4918:9): [True: 0, False: 2]
  ------------------
 4919|      0|        return NULL;
 4920|      0|    }
 4921|      2|    PyObject *pattrname = PyUnicode_FromString(attrname);
 4922|      2|    if (pattrname == NULL) {
  ------------------
  |  Branch (4922:9): [True: 0, False: 2]
  ------------------
 4923|      0|        Py_DECREF(pmodname);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4924|      0|        return NULL;
 4925|      0|    }
 4926|      2|    PyObject *result = PyImport_ImportModuleAttr(pmodname, pattrname);
 4927|      2|    Py_DECREF(pattrname);
  ------------------
  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4928|      2|    Py_DECREF(pmodname);
  ------------------
  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4929|      2|    return result;
 4930|      2|}
PyImport_GetLazyImportsMode:
 4980|     49|{
 4981|     49|    PyInterpreterState *interp = _PyInterpreterState_GET();
 4982|     49|    return FT_ATOMIC_LOAD_INT_RELAXED(LAZY_IMPORTS_MODE(interp));
  ------------------
  |  |  186|     49|#define FT_ATOMIC_LOAD_INT_RELAXED(value) value
  ------------------
 4983|     49|}
PyInit__imp:
 5741|      1|{
 5742|      1|    return PyModuleDef_Init(&imp_module);
 5743|      1|}
import.c:get_modules_dict:
  215|    160|{
  216|       |    /* Technically, it would make sense to incref the dict,
  217|       |     * since sys.modules could be swapped out and decref'ed to 0
  218|       |     * before the caller is done using it.  However, that is highly
  219|       |     * unlikely, especially since we can rely on a global lock
  220|       |     * (i.e. the GIL) for thread-safety. */
  221|    160|    PyObject *modules = MODULES(tstate->interp);
  ------------------
  |  |   92|    160|    (interp)->imports.modules
  ------------------
  222|    160|    if (modules == NULL) {
  ------------------
  |  Branch (222:9): [True: 0, False: 160]
  ------------------
  223|      0|        if (fatal) {
  ------------------
  |  Branch (223:13): [True: 0, False: 0]
  ------------------
  224|      0|            Py_FatalError("interpreter has no modules dictionary");
  ------------------
  |  |  133|      0|#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))
  ------------------
  225|      0|        }
  226|      0|        _PyErr_SetString(tstate, PyExc_RuntimeError,
  227|      0|                         "unable to get sys.modules");
  228|      0|        return NULL;
  229|      0|    }
  230|    160|    return modules;
  231|    160|}
import.c:import_get_module:
  258|    144|{
  259|    144|    PyObject *modules = get_modules_dict(tstate, false);
  260|    144|    if (modules == NULL) {
  ------------------
  |  Branch (260:9): [True: 0, False: 144]
  ------------------
  261|      0|        return NULL;
  262|      0|    }
  263|       |
  264|    144|    PyObject *m;
  265|    144|    Py_INCREF(modules);
  ------------------
  |  |  310|    144|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    144|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    144|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  266|    144|    (void)PyMapping_GetOptionalItem(modules, name, &m);
  267|    144|    Py_DECREF(modules);
  ------------------
  |  |  430|    144|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    144|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    144|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  268|    144|    return m;
  269|    144|}
import.c:import_ensure_initialized:
  287|     56|{
  288|     56|    PyObject *spec;
  289|       |
  290|       |    /* Optimization: only call _bootstrap._lock_unlock_module() if
  291|       |       __spec__._initializing is true.
  292|       |       NOTE: because of this, initializing must be set *before*
  293|       |       stuffing the new module in sys.modules.
  294|       |    */
  295|     56|    int rc = PyObject_GetOptionalAttr(mod, &_Py_ID(__spec__), &spec);
  ------------------
  |  |  917|     56|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     56|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     56|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  296|     56|    if (rc > 0) {
  ------------------
  |  Branch (296:9): [True: 56, False: 0]
  ------------------
  297|     56|        rc = _PyModuleSpec_IsInitializing(spec);
  298|     56|        Py_DECREF(spec);
  ------------------
  |  |  430|     56|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     56|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     56|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  299|     56|    }
  300|     56|    if (rc == 0) {
  ------------------
  |  Branch (300:9): [True: 51, False: 5]
  ------------------
  301|     51|        goto done;
  302|     51|    }
  303|      5|    else if (rc < 0) {
  ------------------
  |  Branch (303:14): [True: 0, False: 5]
  ------------------
  304|      0|        return rc;
  305|      0|    }
  306|       |
  307|       |    /* Wait until module is done importing. */
  308|      5|    PyObject *value = PyObject_CallMethodOneArg(
  309|      5|        IMPORTLIB(interp), &_Py_ID(_lock_unlock_module), name);
  ------------------
  |  |   98|      5|    (interp)->imports.importlib
  ------------------
                      IMPORTLIB(interp), &_Py_ID(_lock_unlock_module), name);
  ------------------
  |  |  917|      5|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      5|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      5|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  310|      5|    if (value == NULL) {
  ------------------
  |  Branch (310:9): [True: 0, False: 5]
  ------------------
  311|      0|        return -1;
  312|      0|    }
  313|      5|    Py_DECREF(value);
  ------------------
  |  |  430|      5|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  314|       |
  315|     56|done:
  316|       |    /* When -X importtime=2, print an import time entry even if an
  317|       |       imported module has already been loaded.
  318|       |     */
  319|     56|    if (_PyInterpreterState_GetConfig(interp)->import_time == 2) {
  ------------------
  |  Branch (319:9): [True: 0, False: 56]
  ------------------
  320|      0|        _IMPORT_TIME_HEADER(interp);
  ------------------
  |  |  135|      0|    do {                                                                      \
  |  |  136|      0|        if (FIND_AND_LOAD((interp)).header) {                                 \
  |  |  ------------------
  |  |  |  |  117|      0|    (interp)->imports.find_and_load
  |  |  ------------------
  |  |  |  Branch (136:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  137|      0|            fputs("import time: self [us] | cumulative | imported package\n", \
  |  |  138|      0|                  stderr);                                                    \
  |  |  139|      0|            FIND_AND_LOAD((interp)).header = 0;                               \
  |  |  ------------------
  |  |  |  |  117|      0|    (interp)->imports.find_and_load
  |  |  ------------------
  |  |  140|      0|        }                                                                     \
  |  |  141|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (141:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  321|      0|#define import_level FIND_AND_LOAD(interp).import_level
  322|      0|        fprintf(stderr, "import time: cached    | cached     | %*s\n",
  323|      0|                import_level*2, PyUnicode_AsUTF8(name));
  ------------------
  |  |  321|      0|#define import_level FIND_AND_LOAD(interp).import_level
  |  |  ------------------
  |  |  |  |  117|      0|    (interp)->imports.find_and_load
  |  |  ------------------
  ------------------
  324|      0|#undef import_level
  325|      0|    }
  326|       |
  327|     56|    return 0;
  328|      5|}
import.c:import_add_module:
  397|      3|{
  398|      3|    PyObject *modules = get_modules_dict(tstate, false);
  399|      3|    if (modules == NULL) {
  ------------------
  |  Branch (399:9): [True: 0, False: 3]
  ------------------
  400|      0|        return NULL;
  401|      0|    }
  402|       |
  403|      3|    PyObject *m;
  404|      3|    Py_BEGIN_CRITICAL_SECTION(modules);
  ------------------
  |  |   51|      3|    {
  ------------------
  405|      3|    m = import_add_module_lock_held(modules, name);
  406|      3|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|      3|    }
  ------------------
  407|      3|    return m;
  408|      3|}
import.c:import_add_module_lock_held:
  375|      3|{
  376|      3|    PyObject *m;
  377|      3|    if (PyMapping_GetOptionalItem(modules, name, &m) < 0) {
  ------------------
  |  Branch (377:9): [True: 0, False: 3]
  ------------------
  378|      0|        return NULL;
  379|      0|    }
  380|      3|    if (m != NULL && PyModule_Check(m)) {
  ------------------
  |  |   12|      1|#define PyModule_Check(op) PyObject_TypeCheck((op), &PyModule_Type)
  |  |  ------------------
  |  |  |  |  378|      1|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (378:40): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (380:9): [True: 1, False: 2]
  ------------------
  381|      1|        return m;
  382|      1|    }
  383|      2|    Py_XDECREF(m);
  ------------------
  |  |  524|      2|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  384|      2|    m = PyModule_NewObject(name);
  385|      2|    if (m == NULL)
  ------------------
  |  Branch (385:9): [True: 0, False: 2]
  ------------------
  386|      0|        return NULL;
  387|      2|    if (PyObject_SetItem(modules, name, m) != 0) {
  ------------------
  |  Branch (387:9): [True: 0, False: 2]
  ------------------
  388|      0|        Py_DECREF(m);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  389|      0|        return NULL;
  390|      0|    }
  391|       |
  392|      2|    return m;
  393|      2|}
import.c:_get_cached_module_index:
 1120|      2|{
 1121|      2|    assert(cached->m_index > 0);
  ------------------
  |  Branch (1121:5): [True: 2, False: 0]
  ------------------
 1122|      2|    return cached->m_index;
 1123|      2|}
import.c:_modules_by_index_set:
  575|      2|{
  576|      2|    assert(index > 0);
  ------------------
  |  Branch (576:5): [True: 2, False: 0]
  ------------------
  577|       |
  578|      2|    if (MODULES_BY_INDEX(interp) == NULL) {
  ------------------
  |  |   94|      2|    (interp)->imports.modules_by_index
  ------------------
  |  Branch (578:9): [True: 1, False: 1]
  ------------------
  579|      1|        MODULES_BY_INDEX(interp) = PyList_New(0);
  ------------------
  |  |   94|      1|    (interp)->imports.modules_by_index
  ------------------
  580|      1|        if (MODULES_BY_INDEX(interp) == NULL) {
  ------------------
  |  |   94|      1|    (interp)->imports.modules_by_index
  ------------------
  |  Branch (580:13): [True: 0, False: 1]
  ------------------
  581|      0|            return -1;
  582|      0|        }
  583|      1|    }
  584|       |
  585|      7|    while (PyList_GET_SIZE(MODULES_BY_INDEX(interp)) <= index) {
  ------------------
  |  |   38|      7|#define PyList_GET_SIZE(op) PyList_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      7|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (585:12): [True: 5, False: 2]
  ------------------
  586|      5|        if (PyList_Append(MODULES_BY_INDEX(interp), Py_None) < 0) {
  ------------------
  |  |   94|      5|    (interp)->imports.modules_by_index
  ------------------
                      if (PyList_Append(MODULES_BY_INDEX(interp), Py_None) < 0) {
  ------------------
  |  |  616|      5|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (586:13): [True: 0, False: 5]
  ------------------
  587|      0|            return -1;
  588|      0|        }
  589|      5|    }
  590|       |
  591|      2|    return PyList_SetItem(MODULES_BY_INDEX(interp), index, Py_NewRef(module));
  ------------------
  |  |   94|      2|    (interp)->imports.modules_by_index
  ------------------
                  return PyList_SetItem(MODULES_BY_INDEX(interp), index, Py_NewRef(module));
  ------------------
  |  |  550|      2|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  592|      2|}
import.c:switch_to_main_interpreter:
 1664|     12|{
 1665|     12|    if (_Py_IsMainInterpreter(tstate->interp)) {
  ------------------
  |  Branch (1665:9): [True: 12, False: 0]
  ------------------
 1666|     12|        return tstate;
 1667|     12|    }
 1668|      0|    PyThreadState *main_tstate = _PyThreadState_NewBound(
 1669|      0|            _PyInterpreterState_Main(), _PyThreadState_WHENCE_EXEC);
  ------------------
  |  |  109|      0|#  define _PyThreadState_WHENCE_EXEC 5
  ------------------
 1670|      0|    if (main_tstate == NULL) {
  ------------------
  |  Branch (1670:9): [True: 0, False: 0]
  ------------------
 1671|      0|        return NULL;
 1672|      0|    }
 1673|      0|#ifndef NDEBUG
 1674|      0|    PyThreadState *old_tstate = PyThreadState_Swap(main_tstate);
 1675|      0|    assert(old_tstate == tstate);
  ------------------
  |  Branch (1675:5): [True: 0, False: 0]
  ------------------
 1676|       |#else
 1677|       |    (void)PyThreadState_Swap(main_tstate);
 1678|       |#endif
 1679|      0|    return main_tstate;
 1680|      0|}
import.c:extensions_lock_acquire:
 1033|     18|{
 1034|     18|    PyMutex_Lock(&_PyRuntime.imports.extensions.mutex);
  ------------------
  |  |   59|     18|#define PyMutex_Lock _PyMutex_Lock
  ------------------
 1035|     18|}
import.c:_extensions_cache_find_unlocked:
 1382|     18|{
 1383|     18|    if (EXTENSIONS.hashtable == NULL) {
  ------------------
  |  |   82|     18|#define EXTENSIONS _PyRuntime.imports.extensions
  ------------------
  |  Branch (1383:9): [True: 2, False: 16]
  ------------------
 1384|      2|        return NULL;
 1385|      2|    }
 1386|     16|    void *key = hashtable_key_from_2_strings(path, name, HTSEP);
  ------------------
  |  | 1359|     16|#define HTSEP ':'
  ------------------
 1387|     16|    if (key == NULL) {
  ------------------
  |  Branch (1387:9): [True: 0, False: 16]
  ------------------
 1388|      0|        return NULL;
 1389|      0|    }
 1390|     16|    _Py_hashtable_entry_t *entry =
 1391|     16|            _Py_hashtable_get_entry(EXTENSIONS.hashtable, key);
  ------------------
  |  |   82|     16|#define EXTENSIONS _PyRuntime.imports.extensions
  ------------------
 1392|     16|    if (p_key != NULL) {
  ------------------
  |  Branch (1392:9): [True: 2, False: 14]
  ------------------
 1393|      2|        *p_key = key;
 1394|      2|    }
 1395|     14|    else {
 1396|     14|        hashtable_destroy_str(key);
 1397|     14|    }
 1398|     16|    return entry;
 1399|     16|}
import.c:hashtable_key_from_2_strings:
 1278|     16|{
 1279|     16|    const char *str1_data = _PyUnicode_AsUTF8NoNUL(str1);
 1280|     16|    const char *str2_data = _PyUnicode_AsUTF8NoNUL(str2);
 1281|     16|    if (str1_data == NULL || str2_data == NULL) {
  ------------------
  |  Branch (1281:9): [True: 0, False: 16]
  |  Branch (1281:30): [True: 0, False: 16]
  ------------------
 1282|      0|        return NULL;
 1283|      0|    }
 1284|     16|    Py_ssize_t str1_len = strlen(str1_data);
 1285|     16|    Py_ssize_t str2_len = strlen(str2_data);
 1286|       |
 1287|       |    /* Make sure sep and the NULL byte won't cause an overflow. */
 1288|     16|    assert(SIZE_MAX - str1_len - str2_len > 2);
  ------------------
  |  Branch (1288:5): [True: 16, False: 0]
  ------------------
 1289|     16|    size_t size = str1_len + 1 + str2_len + 1;
 1290|       |
 1291|       |    // XXX Use a buffer if it's a temp value (every case but "set").
 1292|     16|    char *key = PyMem_RawMalloc(size);
 1293|     16|    if (key == NULL) {
  ------------------
  |  Branch (1293:9): [True: 0, False: 16]
  ------------------
 1294|      0|        PyErr_NoMemory();
 1295|      0|        return NULL;
 1296|      0|    }
 1297|       |
 1298|     16|    memcpy(key, str1_data, str1_len);
 1299|     16|    key[str1_len] = sep;
 1300|     16|    memcpy(key + str1_len + 1, str2_data, str2_len);
 1301|     16|    key[size - 1] = '\0';
 1302|     16|    assert(strlen(key) == size - 1);
  ------------------
  |  Branch (1302:5): [True: 16, False: 0]
  ------------------
 1303|     16|    return key;
 1304|     16|}
import.c:hashtable_destroy_str:
 1320|     14|{
 1321|     14|    PyMem_RawFree(ptr);
 1322|     14|}
import.c:extensions_lock_release:
 1039|     18|{
 1040|     18|    PyMutex_Unlock(&_PyRuntime.imports.extensions.mutex);
  ------------------
  |  |   70|     18|#define PyMutex_Unlock _PyMutex_Unlock
  ------------------
 1041|     18|}
import.c:is_core_module:
 1733|     16|{
 1734|       |    /* This might be called before the core dict copies are in place,
 1735|       |       so we can't rely on get_core_module_dict() here. */
 1736|     16|    if (path == name) {
  ------------------
  |  Branch (1736:9): [True: 16, False: 0]
  ------------------
 1737|     16|        if (PyUnicode_CompareWithASCIIString(name, "sys") == 0) {
  ------------------
  |  Branch (1737:13): [True: 2, False: 14]
  ------------------
 1738|      2|            return 1;
 1739|      2|        }
 1740|     14|        if (PyUnicode_CompareWithASCIIString(name, "builtins") == 0) {
  ------------------
  |  Branch (1740:13): [True: 2, False: 12]
  ------------------
 1741|      2|            return 1;
 1742|      2|        }
 1743|     14|    }
 1744|     12|    return 0;
 1745|     16|}
import.c:_get_extension_kind:
 1750|     14|{
 1751|     14|    _Py_ext_module_kind kind;
 1752|     14|    if (def == NULL) {
  ------------------
  |  Branch (1752:9): [True: 0, False: 14]
  ------------------
 1753|       |        /* It must be a module created by reload_singlephase_extension()
 1754|       |         * from m_copy.  Ideally we'd do away with this case. */
 1755|      0|        kind = _Py_ext_module_kind_SINGLEPHASE;
 1756|      0|    }
 1757|     14|    else if (def->m_slots != NULL) {
  ------------------
  |  Branch (1757:14): [True: 12, False: 2]
  ------------------
 1758|     12|        kind = _Py_ext_module_kind_MULTIPHASE;
 1759|     12|    }
 1760|      2|    else if (check_size && def->m_size == -1) {
  ------------------
  |  Branch (1760:14): [True: 2, False: 0]
  |  Branch (1760:28): [True: 2, False: 0]
  ------------------
 1761|      2|        kind = _Py_ext_module_kind_SINGLEPHASE;
 1762|      2|    }
 1763|      0|    else if (def->m_base.m_init != NULL) {
  ------------------
  |  Branch (1763:14): [True: 0, False: 0]
  ------------------
 1764|      0|        kind = _Py_ext_module_kind_SINGLEPHASE;
 1765|      0|    }
 1766|      0|    else {
 1767|       |        // This is probably single-phase init, but a multi-phase
 1768|       |        // module *can* have NULL m_slots.
 1769|      0|        kind = _Py_ext_module_kind_UNKNOWN;
 1770|      0|    }
 1771|     14|    return kind;
 1772|     14|}
import.c:_extensions_cache_get:
 1404|     16|{
 1405|     16|    struct extensions_cache_value *value = NULL;
 1406|     16|    extensions_lock_acquire();
 1407|       |
 1408|     16|    _Py_hashtable_entry_t *entry =
 1409|     16|            _extensions_cache_find_unlocked(path, name, NULL);
 1410|     16|    if (entry == NULL) {
  ------------------
  |  Branch (1410:9): [True: 16, False: 0]
  ------------------
 1411|       |        /* It was never added. */
 1412|     16|        goto finally;
 1413|     16|    }
 1414|      0|    value = (struct extensions_cache_value *)entry->value;
 1415|       |
 1416|     16|finally:
 1417|     16|    extensions_lock_release();
 1418|     16|    return value;
 1419|      0|}
import.c:update_global_state_for_extension:
 1818|      2|{
 1819|      2|    struct extensions_cache_value *cached = NULL;
 1820|      2|    PyModInitFunction m_init = NULL;
 1821|      2|    PyObject *m_dict = NULL;
 1822|       |
 1823|       |    /* Set up for _extensions_cache_set(). */
 1824|      2|    if (singlephase == NULL) {
  ------------------
  |  Branch (1824:9): [True: 0, False: 2]
  ------------------
 1825|      0|        assert(def->m_base.m_init == NULL);
  ------------------
  |  Branch (1825:9): [True: 0, False: 0]
  ------------------
 1826|      0|        assert(def->m_base.m_copy == NULL);
  ------------------
  |  Branch (1826:9): [True: 0, False: 0]
  ------------------
 1827|      0|    }
 1828|      2|    else {
 1829|      2|        if (singlephase->m_init != NULL) {
  ------------------
  |  Branch (1829:13): [True: 0, False: 2]
  ------------------
 1830|      0|            assert(singlephase->m_dict == NULL);
  ------------------
  |  Branch (1830:13): [True: 0, False: 0]
  ------------------
 1831|      0|            assert(def->m_base.m_copy == NULL);
  ------------------
  |  Branch (1831:13): [True: 0, False: 0]
  ------------------
 1832|      0|            assert(def->m_size >= 0);
  ------------------
  |  Branch (1832:13): [True: 0, False: 0]
  ------------------
 1833|       |            /* Remember pointer to module init function. */
 1834|       |            // XXX If two modules share a def then def->m_base will
 1835|       |            // reflect the last one added (here) to the global cache.
 1836|       |            // We should prevent this somehow.  The simplest solution
 1837|       |            // is probably to store m_copy/m_init in the cache along
 1838|       |            // with the def, rather than within the def.
 1839|      0|            m_init = singlephase->m_init;
 1840|      0|        }
 1841|      2|        else if (singlephase->m_dict == NULL) {
  ------------------
  |  Branch (1841:18): [True: 2, False: 0]
  ------------------
 1842|       |            /* It must be a core builtin module. */
 1843|      2|            assert(is_core_module(tstate->interp, name, path));
  ------------------
  |  Branch (1843:13): [True: 2, False: 0]
  ------------------
 1844|      2|            assert(def->m_size == -1);
  ------------------
  |  Branch (1844:13): [True: 2, False: 0]
  ------------------
 1845|      2|            assert(def->m_base.m_copy == NULL);
  ------------------
  |  Branch (1845:13): [True: 2, False: 0]
  ------------------
 1846|      2|            assert(def->m_base.m_init == NULL);
  ------------------
  |  Branch (1846:13): [True: 2, False: 0]
  ------------------
 1847|      2|        }
 1848|      0|        else {
 1849|      0|            assert(PyDict_Check(singlephase->m_dict));
  ------------------
  |  Branch (1849:13): [True: 0, False: 0]
  ------------------
 1850|       |            // gh-88216: Extensions and def->m_base.m_copy can be updated
 1851|       |            // when the extension module doesn't support sub-interpreters.
 1852|      0|            assert(def->m_size == -1);
  ------------------
  |  Branch (1852:13): [True: 0, False: 0]
  ------------------
 1853|      0|            assert(!is_core_module(tstate->interp, name, path));
  ------------------
  |  Branch (1853:13): [True: 0, False: 0]
  ------------------
 1854|      0|            assert(PyUnicode_CompareWithASCIIString(name, "sys") != 0);
  ------------------
  |  Branch (1854:13): [True: 0, False: 0]
  ------------------
 1855|      0|            assert(PyUnicode_CompareWithASCIIString(name, "builtins") != 0);
  ------------------
  |  Branch (1855:13): [True: 0, False: 0]
  ------------------
 1856|      0|            m_dict = singlephase->m_dict;
 1857|      0|        }
 1858|      2|    }
 1859|       |
 1860|       |    /* Add the module's def to the global cache. */
 1861|       |    // XXX Why special-case the main interpreter?
 1862|      2|    if (_Py_IsMainInterpreter(tstate->interp) || def->m_size == -1) {
  ------------------
  |  Branch (1862:9): [True: 2, False: 0]
  |  Branch (1862:50): [True: 0, False: 0]
  ------------------
 1863|      2|#ifndef NDEBUG
 1864|      2|        cached = _extensions_cache_get(path, name);
 1865|      2|        assert(cached == NULL || cached->def == def);
  ------------------
  |  Branch (1865:9): [True: 2, False: 0]
  |  Branch (1865:9): [True: 0, False: 0]
  ------------------
 1866|      2|#endif
 1867|      2|        cached = _extensions_cache_set(
 1868|      2|                path, name, def, m_init, singlephase->m_index, m_dict,
 1869|      2|                singlephase->origin, singlephase->md_requires_gil);
 1870|      2|        if (cached == NULL) {
  ------------------
  |  Branch (1870:13): [True: 0, False: 2]
  ------------------
 1871|       |            // XXX Ignore this error?  Doing so would effectively
 1872|       |            // mark the module as not loadable.
 1873|      0|            return NULL;
 1874|      0|        }
 1875|      2|    }
 1876|       |
 1877|      2|    return cached;
 1878|      2|}
import.c:_extensions_cache_set:
 1427|      2|{
 1428|      2|    struct extensions_cache_value *value = NULL;
 1429|      2|    void *key = NULL;
 1430|      2|    struct extensions_cache_value *newvalue = NULL;
 1431|      2|    PyModuleDef_Base olddefbase = def->m_base;
 1432|       |
 1433|      2|    assert(def != NULL);
  ------------------
  |  Branch (1433:5): [True: 2, False: 0]
  ------------------
 1434|      2|    assert(m_init == NULL || m_dict == NULL);
  ------------------
  |  Branch (1434:5): [True: 2, False: 0]
  |  Branch (1434:5): [True: 0, False: 0]
  ------------------
 1435|       |    /* We expect the same symbol to be used and the shared object file
 1436|       |     * to have remained loaded, so it must be the same pointer. */
 1437|      2|    assert(def->m_base.m_init == NULL || def->m_base.m_init == m_init);
  ------------------
  |  Branch (1437:5): [True: 2, False: 0]
  |  Branch (1437:5): [True: 0, False: 0]
  ------------------
 1438|       |    /* For now we don't worry about comparing value->m_copy. */
 1439|      2|    assert(def->m_base.m_copy == NULL || m_dict != NULL);
  ------------------
  |  Branch (1439:5): [True: 2, False: 0]
  |  Branch (1439:5): [True: 0, False: 0]
  ------------------
 1440|      2|    assert((origin == _Py_ext_module_origin_DYNAMIC) == (name != path));
  ------------------
  |  Branch (1440:5): [True: 2, False: 0]
  ------------------
 1441|      2|    assert(origin != _Py_ext_module_origin_CORE || m_dict == NULL);
  ------------------
  |  Branch (1441:5): [True: 0, False: 2]
  |  Branch (1441:5): [True: 2, False: 0]
  ------------------
 1442|       |
 1443|      2|    extensions_lock_acquire();
 1444|       |
 1445|      2|    if (EXTENSIONS.hashtable == NULL) {
  ------------------
  |  |   82|      2|#define EXTENSIONS _PyRuntime.imports.extensions
  ------------------
  |  Branch (1445:9): [True: 1, False: 1]
  ------------------
 1446|      1|        if (_extensions_cache_init() < 0) {
  ------------------
  |  Branch (1446:13): [True: 0, False: 1]
  ------------------
 1447|      0|            goto finally;
 1448|      0|        }
 1449|      1|    }
 1450|       |
 1451|       |    /* Create a cached value to populate for the module. */
 1452|      2|    _Py_hashtable_entry_t *entry =
 1453|      2|            _extensions_cache_find_unlocked(path, name, &key);
 1454|      2|    value = entry == NULL
  ------------------
  |  Branch (1454:13): [True: 2, False: 0]
  ------------------
 1455|      2|        ? NULL
 1456|      2|        : (struct extensions_cache_value *)entry->value;
 1457|      2|    if (value != NULL) {
  ------------------
  |  Branch (1457:9): [True: 0, False: 2]
  ------------------
 1458|       |        /* gh-123880: If there's an existing cache value, it means a module is
 1459|       |         * being imported recursively from its PyInit_* or Py_mod_* function.
 1460|       |         * (That function presumably handles returning a partially
 1461|       |         *  constructed module in such a case.)
 1462|       |         * We can reuse the existing cache value; it is owned by the cache.
 1463|       |         * (Entries get removed from it in exceptional circumstances,
 1464|       |         *  after interpreter shutdown, and in runtime shutdown.)
 1465|       |         */
 1466|      0|        goto finally_oldvalue;
 1467|      0|    }
 1468|      2|    newvalue = alloc_extensions_cache_value();
 1469|      2|    if (newvalue == NULL) {
  ------------------
  |  Branch (1469:9): [True: 0, False: 2]
  ------------------
 1470|      0|        goto finally;
 1471|      0|    }
 1472|       |
 1473|       |    /* Populate the new cache value data. */
 1474|      2|    *newvalue = (struct extensions_cache_value){
 1475|      2|        .def=def,
 1476|      2|        .m_init=m_init,
 1477|      2|        .m_index=m_index,
 1478|       |        /* m_dict is set by set_cached_m_dict(). */
 1479|      2|        .origin=origin,
 1480|       |#ifdef Py_GIL_DISABLED
 1481|       |        .md_requires_gil=requires_gil,
 1482|       |#endif
 1483|      2|    };
 1484|      2|#ifndef Py_GIL_DISABLED
 1485|      2|    (void)requires_gil;
 1486|      2|#endif
 1487|      2|    if (init_cached_m_dict(newvalue, m_dict) < 0) {
  ------------------
  |  Branch (1487:9): [True: 0, False: 2]
  ------------------
 1488|      0|        goto finally;
 1489|      0|    }
 1490|      2|    fixup_cached_def(newvalue);
 1491|       |
 1492|      2|    if (entry == NULL) {
  ------------------
  |  Branch (1492:9): [True: 2, False: 0]
  ------------------
 1493|       |        /* It was never added. */
 1494|      2|        if (_Py_hashtable_set(EXTENSIONS.hashtable, key, newvalue) < 0) {
  ------------------
  |  |   82|      2|#define EXTENSIONS _PyRuntime.imports.extensions
  ------------------
  |  Branch (1494:13): [True: 0, False: 2]
  ------------------
 1495|      0|            PyErr_NoMemory();
 1496|      0|            goto finally;
 1497|      0|        }
 1498|       |        /* The hashtable owns the key now. */
 1499|      2|        key = NULL;
 1500|      2|    }
 1501|      0|    else if (value == NULL) {
  ------------------
  |  Branch (1501:14): [True: 0, False: 0]
  ------------------
 1502|       |        /* It was previously deleted. */
 1503|      0|        entry->value = newvalue;
 1504|      0|    }
 1505|      0|    else {
 1506|       |        /* We are updating the entry for an existing module. */
 1507|       |        /* We expect def to be static, so it must be the same pointer. */
 1508|      0|        assert(value->def == def);
  ------------------
  |  Branch (1508:9): [True: 0, False: 0]
  ------------------
 1509|       |        /* We expect the same symbol to be used and the shared object file
 1510|       |         * to have remained loaded, so it must be the same pointer. */
 1511|      0|        assert(value->m_init == m_init);
  ------------------
  |  Branch (1511:9): [True: 0, False: 0]
  ------------------
 1512|       |        /* The same module can't switch between caching __dict__ and not. */
 1513|      0|        assert((value->m_dict == NULL) == (m_dict == NULL));
  ------------------
  |  Branch (1513:9): [True: 0, False: 0]
  ------------------
 1514|       |        /* This shouldn't ever happen. */
 1515|      0|        Py_UNREACHABLE();
  ------------------
  |  |  264|      0|#  define Py_UNREACHABLE() __builtin_unreachable()
  ------------------
 1516|      0|    }
 1517|       |
 1518|      2|    value = newvalue;
 1519|       |
 1520|      2|finally:
 1521|      2|    if (value == NULL) {
  ------------------
  |  Branch (1521:9): [True: 0, False: 2]
  ------------------
 1522|      0|        restore_old_cached_def(def, &olddefbase);
 1523|      0|        if (newvalue != NULL) {
  ------------------
  |  Branch (1523:13): [True: 0, False: 0]
  ------------------
 1524|      0|            del_extensions_cache_value(newvalue);
 1525|      0|        }
 1526|      0|    }
 1527|      2|    else {
 1528|      2|        cleanup_old_cached_def(&olddefbase);
 1529|      2|    }
 1530|       |
 1531|      2|finally_oldvalue:
 1532|      2|    extensions_lock_release();
 1533|      2|    if (key != NULL) {
  ------------------
  |  Branch (1533:9): [True: 0, False: 2]
  ------------------
 1534|      0|        hashtable_destroy_str(key);
 1535|      0|    }
 1536|       |
 1537|      2|    return value;
 1538|      2|}
import.c:_extensions_cache_init:
 1363|      1|{
 1364|      1|    _Py_hashtable_allocator_t alloc = {PyMem_RawMalloc, PyMem_RawFree};
 1365|      1|    EXTENSIONS.hashtable = _Py_hashtable_new_full(
  ------------------
  |  |   82|      1|#define EXTENSIONS _PyRuntime.imports.extensions
  ------------------
 1366|      1|        hashtable_hash_str,
 1367|      1|        hashtable_compare_str,
 1368|      1|        hashtable_destroy_str,  // key
 1369|      1|        del_extensions_cache_value,  // value
 1370|      1|        &alloc
 1371|      1|    );
 1372|      1|    if (EXTENSIONS.hashtable == NULL) {
  ------------------
  |  |   82|      1|#define EXTENSIONS _PyRuntime.imports.extensions
  ------------------
  |  Branch (1372:9): [True: 0, False: 1]
  ------------------
 1373|      0|        PyErr_NoMemory();
 1374|      0|        return -1;
 1375|      0|    }
 1376|      1|    return 0;
 1377|      1|}
import.c:hashtable_hash_str:
 1308|     20|{
 1309|     20|    return Py_HashBuffer(key, strlen((const char *)key));
 1310|     20|}
import.c:alloc_extensions_cache_value:
 1101|      2|{
 1102|      2|    struct extensions_cache_value *value
 1103|      2|            = PyMem_RawMalloc(sizeof(struct extensions_cache_value));
 1104|      2|    if (value == NULL) {
  ------------------
  |  Branch (1104:9): [True: 0, False: 2]
  ------------------
 1105|      0|        PyErr_NoMemory();
 1106|      0|        return NULL;
 1107|      0|    }
 1108|      2|    *value = (struct extensions_cache_value){0};
 1109|      2|    return value;
 1110|      2|}
import.c:init_cached_m_dict:
 1188|      2|{
 1189|      2|    assert(value != NULL);
  ------------------
  |  Branch (1189:5): [True: 2, False: 0]
  ------------------
 1190|       |    /* This should only have been called without an m_dict already set. */
 1191|      2|    assert(value->m_dict == NULL);
  ------------------
  |  Branch (1191:5): [True: 2, False: 0]
  ------------------
 1192|      2|    if (m_dict == NULL) {
  ------------------
  |  Branch (1192:9): [True: 2, False: 0]
  ------------------
 1193|      2|        return 0;
 1194|      2|    }
 1195|      2|    assert(PyDict_Check(m_dict));
  ------------------
  |  Branch (1195:5): [True: 0, False: 0]
  ------------------
 1196|      0|    assert(value->origin != _Py_ext_module_origin_CORE);
  ------------------
  |  Branch (1196:5): [True: 0, False: 0]
  ------------------
 1197|       |
 1198|      0|    PyInterpreterState *interp = _PyInterpreterState_GET();
 1199|      0|    assert(!is_interpreter_isolated(interp));
  ------------------
  |  Branch (1199:5): [True: 0, False: 0]
  ------------------
 1200|       |
 1201|       |    /* XXX gh-88216: The copied dict is owned by the current
 1202|       |     * interpreter.  That's a problem if the interpreter has
 1203|       |     * its own obmalloc state or if the module is successfully
 1204|       |     * imported into such an interpreter.  If the interpreter
 1205|       |     * has its own GIL then there may be data races and
 1206|       |     * PyImport_ClearModulesByIndex() can crash.  Normally,
 1207|       |     * a single-phase init module cannot be imported in an
 1208|       |     * isolated interpreter, but there are ways around that.
 1209|       |     * Hence, heere be dragons!  Ideally we would instead do
 1210|       |     * something like make a read-only, immortal copy of the
 1211|       |     * dict using PyMem_RawMalloc() and store *that* in m_copy.
 1212|       |     * Then we'd need to make sure to clear that when the
 1213|       |     * runtime is finalized, rather than in
 1214|       |     * PyImport_ClearModulesByIndex(). */
 1215|      0|    PyObject *copied = PyDict_Copy(m_dict);
 1216|      0|    if (copied == NULL) {
  ------------------
  |  Branch (1216:9): [True: 0, False: 0]
  ------------------
 1217|       |        /* We expect this can only be "out of memory". */
 1218|      0|        return -1;
 1219|      0|    }
 1220|       |    // XXX We may want to make the copy immortal.
 1221|       |
 1222|      0|    value->_m_dict = (struct cached_m_dict){
 1223|      0|        .copied=copied,
 1224|      0|        .interpid=PyInterpreterState_GetID(interp),
 1225|      0|    };
 1226|       |
 1227|      0|    value->m_dict = &value->_m_dict;
 1228|      0|    return 0;
 1229|      0|}
import.c:fixup_cached_def:
 1127|      2|{
 1128|       |    /* For the moment, the values in the def's m_base may belong
 1129|       |     * to another module, and we're replacing them here.  This can
 1130|       |     * cause problems later if the old module is reloaded.
 1131|       |     *
 1132|       |     * Also, we don't decref any old cached values first when we
 1133|       |     * replace them here, in case we need to restore them in the
 1134|       |     * near future.  Instead, the caller is responsible for wrapping
 1135|       |     * this up by calling cleanup_old_cached_def() or
 1136|       |     * restore_old_cached_def() if there was an error. */
 1137|      2|    PyModuleDef *def = value->def;
 1138|      2|    assert(def != NULL);
  ------------------
  |  Branch (1138:5): [True: 2, False: 0]
  ------------------
 1139|       |
 1140|       |    /* We assume that all module defs are statically allocated
 1141|       |       and will never be freed.  Otherwise, we would incref here. */
 1142|      2|    _Py_SetImmortalUntracked((PyObject *)def);
 1143|       |
 1144|      2|    def->m_base.m_init = value->m_init;
 1145|       |
 1146|      2|    assert(value->m_index > 0);
  ------------------
  |  Branch (1146:5): [True: 2, False: 0]
  ------------------
 1147|      2|    _set_module_index(def, value->m_index);
 1148|       |
 1149|       |    /* Different modules can share the same def, so we can't just
 1150|       |     * expect m_copy to be NULL. */
 1151|      2|    assert(def->m_base.m_copy == NULL
  ------------------
  |  Branch (1151:5): [True: 2, False: 0]
  |  Branch (1151:5): [True: 0, False: 0]
  |  Branch (1151:5): [True: 0, False: 0]
  ------------------
 1152|      2|           || def->m_base.m_init == NULL
 1153|      2|           || value->m_dict != NULL);
 1154|      2|    if (value->m_dict != NULL) {
  ------------------
  |  Branch (1154:9): [True: 0, False: 2]
  ------------------
 1155|      0|        assert(value->m_dict->copied != NULL);
  ------------------
  |  Branch (1155:9): [True: 0, False: 0]
  ------------------
 1156|       |        /* As noted above, we don't first decref the old value, if any. */
 1157|      0|        def->m_base.m_copy = Py_NewRef(value->m_dict->copied);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1158|      0|    }
 1159|      2|}
import.c:_set_module_index:
  528|      2|{
  529|      2|    assert(index > 0);
  ------------------
  |  Branch (529:5): [True: 2, False: 0]
  ------------------
  530|      2|    if (index == def->m_base.m_index) {
  ------------------
  |  Branch (530:9): [True: 2, False: 0]
  ------------------
  531|       |        /* There's nothing to do. */
  532|      2|    }
  533|      0|    else if (def->m_base.m_index == 0) {
  ------------------
  |  Branch (533:14): [True: 0, False: 0]
  ------------------
  534|       |        /* It should have been initialized by PyModuleDef_Init().
  535|       |         * We assert here to catch this in dev, but keep going otherwise. */
  536|      0|        assert(def->m_base.m_index != 0);
  ------------------
  |  Branch (536:9): [True: 0, False: 0]
  ------------------
  537|      0|        def->m_base.m_index = index;
  538|      0|    }
  539|      0|    else {
  540|       |        /* It was already set for a different module.
  541|       |         * We replace the old value. */
  542|      0|        assert(def->m_base.m_index > 0);
  ------------------
  |  Branch (542:9): [True: 0, False: 0]
  ------------------
  543|      0|        def->m_base.m_index = index;
  544|      0|    }
  545|      2|}
import.c:cleanup_old_cached_def:
 1169|      2|{
 1170|      2|    Py_XDECREF(oldbase->m_copy);
  ------------------
  |  |  524|      2|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1171|      2|}
import.c:finish_singlephase_extension:
 1886|      2|{
 1887|      2|    assert(mod != NULL && PyModule_Check(mod));
  ------------------
  |  Branch (1887:5): [True: 2, False: 0]
  |  Branch (1887:5): [True: 2, False: 0]
  ------------------
 1888|      2|    assert(cached->def == _PyModule_GetDefOrNull(mod));
  ------------------
  |  Branch (1888:5): [True: 2, False: 0]
  ------------------
 1889|       |
 1890|      2|    Py_ssize_t index = _get_cached_module_index(cached);
 1891|      2|    if (_modules_by_index_set(tstate->interp, index, mod) < 0) {
  ------------------
  |  Branch (1891:9): [True: 0, False: 2]
  ------------------
 1892|      0|        return -1;
 1893|      0|    }
 1894|       |
 1895|      2|    if (modules != NULL) {
  ------------------
  |  Branch (1895:9): [True: 2, False: 0]
  ------------------
 1896|      2|        if (PyObject_SetItem(modules, name, mod) < 0) {
  ------------------
  |  Branch (1896:13): [True: 0, False: 2]
  ------------------
 1897|      0|            return -1;
 1898|      0|        }
 1899|      2|    }
 1900|       |
 1901|      2|    return 0;
 1902|      2|}
import.c:create_builtin:
 2480|     12|{
 2481|     12|    struct _Py_ext_module_loader_info info;
 2482|     12|    if (_Py_ext_module_loader_info_init_for_builtin(&info, name) < 0) {
  ------------------
  |  Branch (2482:9): [True: 0, False: 12]
  ------------------
 2483|      0|        return NULL;
 2484|      0|    }
 2485|       |
 2486|     12|    struct extensions_cache_value *cached = NULL;
 2487|     12|    PyObject *mod = import_find_extension(tstate, &info, &cached);
 2488|     12|    if (mod != NULL) {
  ------------------
  |  Branch (2488:9): [True: 0, False: 12]
  ------------------
 2489|      0|        assert(!_PyErr_Occurred(tstate));
  ------------------
  |  Branch (2489:9): [True: 0, False: 0]
  ------------------
 2490|      0|        assert(cached != NULL);
  ------------------
  |  Branch (2490:9): [True: 0, False: 0]
  ------------------
 2491|       |        /* The module might not have md_def set in certain reload cases. */
 2492|      0|        assert(_PyModule_GetDefOrNull(mod) == NULL
  ------------------
  |  Branch (2492:9): [True: 0, False: 0]
  |  Branch (2492:9): [True: 0, False: 0]
  ------------------
 2493|      0|                || cached->def == _PyModule_GetDefOrNull(mod));
 2494|      0|        assert_singlephase(cached);
  ------------------
  |  | 1793|      0|    do {                                                                    \
  |  | 1794|      0|        _Py_ext_module_kind kind = _get_extension_kind(cached->def, true);  \
  |  | 1795|      0|        assert(kind == _Py_ext_module_kind_SINGLEPHASE);                    \
  |  | 1796|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (1796:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2494:9): [True: 0, False: 0]
  ------------------
 2495|      0|        goto finally;
 2496|      0|    }
 2497|     12|    else if (_PyErr_Occurred(tstate)) {
  ------------------
  |  Branch (2497:14): [True: 0, False: 12]
  ------------------
 2498|      0|        goto finally;
 2499|      0|    }
 2500|       |
 2501|       |    /* If the module was added to the global cache
 2502|       |     * but def->m_base.m_copy was cleared (e.g. subinterp fini)
 2503|       |     * then we have to do a little dance here. */
 2504|     12|    if (cached != NULL) {
  ------------------
  |  Branch (2504:9): [True: 0, False: 12]
  ------------------
 2505|      0|        assert(cached->def->m_base.m_copy == NULL);
  ------------------
  |  Branch (2505:9): [True: 0, False: 0]
  ------------------
 2506|       |        /* For now we clear the cache and move on. */
 2507|      0|        _extensions_cache_delete(info.path, info.name);
 2508|      0|    }
 2509|       |
 2510|     12|    PyModInitFunction p0 = NULL;
 2511|     12|    if (initfunc == NULL) {
  ------------------
  |  Branch (2511:9): [True: 12, False: 0]
  ------------------
 2512|     12|        struct _inittab *entry = lookup_inittab_entry(&info);
 2513|     12|        if (entry == NULL) {
  ------------------
  |  Branch (2513:13): [True: 0, False: 12]
  ------------------
 2514|      0|            mod = NULL;
 2515|      0|            _PyErr_SetModuleNotFoundError(name);
 2516|      0|            goto finally;
 2517|      0|        }
 2518|       |
 2519|     12|        p0 = (PyModInitFunction)entry->initfunc;
 2520|     12|    }
 2521|      0|    else {
 2522|      0|        p0 = initfunc;
 2523|      0|    }
 2524|       |
 2525|     12|    if (p0 == NULL) {
  ------------------
  |  Branch (2525:9): [True: 0, False: 12]
  ------------------
 2526|       |        /* Cannot re-init internal module ("sys" or "builtins") */
 2527|      0|        assert(is_core_module(tstate->interp, info.name, info.path));
  ------------------
  |  Branch (2527:9): [True: 0, False: 0]
  ------------------
 2528|      0|        mod = import_add_module(tstate, info.name);
 2529|      0|        goto finally;
 2530|      0|    }
 2531|       |
 2532|       |
 2533|       |#ifdef Py_GIL_DISABLED
 2534|       |    // This call (and the corresponding call to _PyImport_CheckGILForModule())
 2535|       |    // would ideally be inside import_run_extension(). They are kept in the
 2536|       |    // callers for now because that would complicate the control flow inside
 2537|       |    // import_run_extension(). It should be possible to restructure
 2538|       |    // import_run_extension() to address this.
 2539|       |    _PyEval_EnableGILTransient(tstate);
 2540|       |#endif
 2541|       |    /* Now load it. */
 2542|     12|    mod = import_run_extension(
 2543|     12|                    tstate, p0, &info, spec, get_modules_dict(tstate, true));
 2544|       |#ifdef Py_GIL_DISABLED
 2545|       |    if (_PyImport_CheckGILForModule(mod, info.name) < 0) {
 2546|       |        Py_CLEAR(mod);
 2547|       |        goto finally;
 2548|       |    }
 2549|       |#endif
 2550|       |
 2551|     12|finally:
 2552|     12|    _Py_ext_module_loader_info_clear(&info);
 2553|     12|    return mod;
 2554|     12|}
import.c:import_find_extension:
 2020|     12|{
 2021|       |    /* Only single-phase init modules will be in the cache. */
 2022|     12|    struct extensions_cache_value *cached
 2023|     12|            = _extensions_cache_get(info->path, info->name);
 2024|     12|    if (cached == NULL) {
  ------------------
  |  Branch (2024:9): [True: 12, False: 0]
  ------------------
 2025|     12|        return NULL;
 2026|     12|    }
 2027|     12|    assert(cached->def != NULL);
  ------------------
  |  Branch (2027:5): [True: 0, False: 0]
  ------------------
 2028|      0|    assert_singlephase(cached);
  ------------------
  |  | 1793|      0|    do {                                                                    \
  |  | 1794|      0|        _Py_ext_module_kind kind = _get_extension_kind(cached->def, true);  \
  |  | 1795|      0|        assert(kind == _Py_ext_module_kind_SINGLEPHASE);                    \
  |  | 1796|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (1796:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2028:5): [True: 0, False: 0]
  ------------------
 2029|      0|    *p_cached = cached;
 2030|       |
 2031|       |    /* It may have been successfully imported previously
 2032|       |       in an interpreter that allows legacy modules
 2033|       |       but is not allowed in the current interpreter. */
 2034|      0|    const char *name_buf = PyUnicode_AsUTF8(info->name);
 2035|      0|    assert(name_buf != NULL);
  ------------------
  |  Branch (2035:5): [True: 0, False: 0]
  ------------------
 2036|      0|    if (_PyImport_CheckSubinterpIncompatibleExtensionAllowed(name_buf) < 0) {
  ------------------
  |  Branch (2036:9): [True: 0, False: 0]
  ------------------
 2037|      0|        return NULL;
 2038|      0|    }
 2039|       |
 2040|      0|    PyObject *mod = reload_singlephase_extension(tstate, cached, info);
 2041|      0|    if (mod == NULL) {
  ------------------
  |  Branch (2041:9): [True: 0, False: 0]
  ------------------
 2042|      0|        return NULL;
 2043|      0|    }
 2044|       |
 2045|      0|    int verbose = _PyInterpreterState_GetConfig(tstate->interp)->verbose;
 2046|      0|    if (verbose) {
  ------------------
  |  Branch (2046:9): [True: 0, False: 0]
  ------------------
 2047|      0|        PySys_FormatStderr("import %U # previously loaded (%R)\n",
 2048|      0|                           info->name, info->path);
 2049|      0|    }
 2050|       |
 2051|      0|    return mod;
 2052|      0|}
import.c:lookup_inittab_entry:
 2465|     12|{
 2466|    232|    for (struct _inittab *p = INITTAB; p->name != NULL; p++) {
  ------------------
  |  |   80|     12|#define INITTAB _PyRuntime.imports.inittab
  ------------------
  |  Branch (2466:40): [True: 232, False: 0]
  ------------------
 2467|    232|        if (_PyUnicode_EqualToASCIIString(info->name, p->name)) {
  ------------------
  |  Branch (2467:13): [True: 12, False: 220]
  ------------------
 2468|     12|            return p;
 2469|     12|        }
 2470|    232|    }
 2471|       |    // not found
 2472|      0|    return NULL;
 2473|     12|}
import.c:import_run_extension:
 2095|     12|{
 2096|       |    /* Core modules go through _PyImport_FixupBuiltin(). */
 2097|     12|    assert(!is_core_module(tstate->interp, info->name, info->path));
  ------------------
  |  Branch (2097:5): [True: 12, False: 0]
  ------------------
 2098|       |
 2099|     12|    PyObject *mod = NULL;
 2100|     12|    PyModuleDef *def = NULL;
 2101|     12|    struct extensions_cache_value *cached = NULL;
 2102|     12|    const char *name_buf = PyBytes_AS_STRING(info->name_encoded);
  ------------------
  |  |   27|     12|#define PyBytes_AS_STRING(op) PyBytes_AS_STRING(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     12|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     12|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2103|       |
 2104|       |    /* We cannot know if the module is single-phase init or
 2105|       |     * multi-phase init until after we call its init function. Even
 2106|       |     * in isolated interpreters (that do not support single-phase init),
 2107|       |     * the init function will run without restriction.  For multi-phase
 2108|       |     * init modules that isn't a problem because the init function only
 2109|       |     * runs PyModuleDef_Init() on the module's def and then returns it.
 2110|       |     *
 2111|       |     * However, for single-phase init the module's init function will
 2112|       |     * create the module, create other objects (and allocate other
 2113|       |     * memory), populate it and its module state, and initialize static
 2114|       |     * types.  Some modules store other objects and data in global C
 2115|       |     * variables and register callbacks with the runtime/stdlib or
 2116|       |     * even external libraries (which is part of why we can't just
 2117|       |     * dlclose() the module in the error case).  That's a problem
 2118|       |     * for isolated interpreters since all of the above happens
 2119|       |     * and only then * will the import fail.  Memory will leak,
 2120|       |     * callbacks will still get used, and sometimes there
 2121|       |     * will be crashes (memory access violations
 2122|       |     * and use-after-free).
 2123|       |     *
 2124|       |     * To put it another way, if the module is single-phase init
 2125|       |     * then the import will probably break interpreter isolation
 2126|       |     * and should fail ASAP.  However, the module's init function
 2127|       |     * will still get run.  That means it may still store state
 2128|       |     * in the shared-object/DLL address space (which never gets
 2129|       |     * closed/cleared), including objects (e.g. static types).
 2130|       |     * This is a problem for isolated subinterpreters since each
 2131|       |     * has its own object allocator.  If the loaded shared-object
 2132|       |     * still holds a reference to an object after the corresponding
 2133|       |     * interpreter has finalized then either we must let it leak
 2134|       |     * or else any later use of that object by another interpreter
 2135|       |     * (or across multiple init-fini cycles) will crash the process.
 2136|       |     *
 2137|       |     * To avoid all of that, we make sure the module's init function
 2138|       |     * is always run first with the main interpreter active.  If it was
 2139|       |     * already the main interpreter then we can continue loading the
 2140|       |     * module like normal.  Otherwise, right after the init function,
 2141|       |     * we take care of some import state bookkeeping, switch back
 2142|       |     * to the subinterpreter, check for single-phase init,
 2143|       |     * and then continue loading like normal. */
 2144|       |
 2145|     12|    bool switched = false;
 2146|       |    /* We *could* leave in place a legacy interpreter here
 2147|       |     * (one that shares obmalloc/GIL with main interp),
 2148|       |     * but there isn't a big advantage, we anticipate
 2149|       |     * such interpreters will be increasingly uncommon,
 2150|       |     * and the code is a bit simpler if we always switch
 2151|       |     * to the main interpreter. */
 2152|     12|    PyThreadState *main_tstate = switch_to_main_interpreter(tstate);
 2153|     12|    if (main_tstate == NULL) {
  ------------------
  |  Branch (2153:9): [True: 0, False: 12]
  ------------------
 2154|      0|        return NULL;
 2155|      0|    }
 2156|     12|    else if (main_tstate != tstate) {
  ------------------
  |  Branch (2156:14): [True: 0, False: 12]
  ------------------
 2157|      0|        switched = true;
 2158|       |        /* In the switched case, we could play it safe
 2159|       |         * by getting the main interpreter's import lock here.
 2160|       |         * It's unlikely to matter though. */
 2161|      0|    }
 2162|       |
 2163|     12|    struct _Py_ext_module_loader_result res;
 2164|     12|    int rc = _PyImport_RunModInitFunc(p0, info, &res);
 2165|     12|    if (rc < 0) {
  ------------------
  |  Branch (2165:9): [True: 0, False: 12]
  ------------------
 2166|       |        /* We discard res.def. */
 2167|      0|        assert(res.module == NULL);
  ------------------
  |  Branch (2167:9): [True: 0, False: 0]
  ------------------
 2168|      0|    }
 2169|     12|    else {
 2170|     12|        assert(!PyErr_Occurred());
  ------------------
  |  Branch (2170:9): [True: 12, False: 0]
  ------------------
 2171|     12|        assert(res.err == NULL);
  ------------------
  |  Branch (2171:9): [True: 12, False: 0]
  ------------------
 2172|       |
 2173|     12|        mod = res.module;
 2174|     12|        res.module = NULL;
 2175|     12|        def = res.def;
 2176|     12|        assert(def != NULL);
  ------------------
  |  Branch (2176:9): [True: 12, False: 0]
  ------------------
 2177|       |
 2178|       |        /* Do anything else that should be done
 2179|       |         * while still using the main interpreter. */
 2180|     12|        if (res.kind == _Py_ext_module_kind_SINGLEPHASE) {
  ------------------
  |  Branch (2180:13): [True: 0, False: 12]
  ------------------
 2181|       |            /* Remember the filename as the __file__ attribute */
 2182|      0|            if (info->filename != NULL) {
  ------------------
  |  Branch (2182:17): [True: 0, False: 0]
  ------------------
 2183|      0|                PyObject *filename = NULL;
 2184|      0|                if (switched) {
  ------------------
  |  Branch (2184:21): [True: 0, False: 0]
  ------------------
 2185|       |                    // The original filename may be allocated by subinterpreter's
 2186|       |                    // obmalloc, so we create a copy here.
 2187|      0|                    filename = _PyUnicode_Copy(info->filename);
 2188|      0|                    if (filename == NULL) {
  ------------------
  |  Branch (2188:25): [True: 0, False: 0]
  ------------------
 2189|      0|                        return NULL;
 2190|      0|                    }
 2191|      0|                }
 2192|      0|                else {
 2193|      0|                    filename = Py_NewRef(info->filename);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2194|      0|                }
 2195|       |                // XXX There's a refleak somewhere with the filename.
 2196|       |                // Until we can track it down, we immortalize it.
 2197|      0|                PyInterpreterState *interp = _PyInterpreterState_GET();
 2198|      0|                _PyUnicode_InternImmortal(interp, &filename);
 2199|       |
 2200|      0|                if (PyModule_AddObjectRef(mod, "__file__", filename) < 0) {
  ------------------
  |  Branch (2200:21): [True: 0, False: 0]
  ------------------
 2201|      0|                    PyErr_Clear(); /* Not important enough to report */
 2202|      0|                }
 2203|      0|            }
 2204|       |
 2205|       |            /* Update global import state. */
 2206|      0|            assert(def->m_base.m_index != 0);
  ------------------
  |  Branch (2206:13): [True: 0, False: 0]
  ------------------
 2207|      0|            struct singlephase_global_update singlephase = {
 2208|       |                // XXX Modules that share a def should each get their own index,
 2209|       |                // whereas currently they share (which means the per-interpreter
 2210|       |                // cache is less reliable than it should be).
 2211|      0|                .m_index=def->m_base.m_index,
 2212|      0|                .origin=info->origin,
 2213|       |#ifdef Py_GIL_DISABLED
 2214|       |                .md_requires_gil=((PyModuleObject *)mod)->md_requires_gil,
 2215|       |#endif
 2216|      0|            };
 2217|       |            // gh-88216: Extensions and def->m_base.m_copy can be updated
 2218|       |            // when the extension module doesn't support sub-interpreters.
 2219|      0|            if (def->m_size == -1) {
  ------------------
  |  Branch (2219:17): [True: 0, False: 0]
  ------------------
 2220|       |                /* We will reload from m_copy. */
 2221|      0|                assert(def->m_base.m_init == NULL);
  ------------------
  |  Branch (2221:17): [True: 0, False: 0]
  ------------------
 2222|      0|                singlephase.m_dict = PyModule_GetDict(mod);
 2223|      0|                assert(singlephase.m_dict != NULL);
  ------------------
  |  Branch (2223:17): [True: 0, False: 0]
  ------------------
 2224|      0|            }
 2225|      0|            else {
 2226|       |                /* We will reload via the init function. */
 2227|      0|                assert(def->m_size >= 0);
  ------------------
  |  Branch (2227:17): [True: 0, False: 0]
  ------------------
 2228|      0|                assert(def->m_base.m_copy == NULL);
  ------------------
  |  Branch (2228:17): [True: 0, False: 0]
  ------------------
 2229|      0|                singlephase.m_init = p0;
 2230|      0|            }
 2231|      0|            cached = update_global_state_for_extension(
 2232|      0|                    main_tstate, info->path, info->name, def, &singlephase);
 2233|      0|            if (cached == NULL) {
  ------------------
  |  Branch (2233:17): [True: 0, False: 0]
  ------------------
 2234|      0|                assert(PyErr_Occurred());
  ------------------
  |  Branch (2234:17): [True: 0, False: 0]
  ------------------
 2235|      0|                goto main_finally;
 2236|      0|            }
 2237|      0|        }
 2238|     12|    }
 2239|       |
 2240|     12|main_finally:
 2241|     12|    if (rc < 0) {
  ------------------
  |  Branch (2241:9): [True: 0, False: 12]
  ------------------
 2242|      0|        _Py_ext_module_loader_result_apply_error(&res, name_buf);
 2243|      0|    }
 2244|       |
 2245|       |    /* Switch back to the subinterpreter. */
 2246|     12|    if (switched) {
  ------------------
  |  Branch (2246:9): [True: 0, False: 12]
  ------------------
 2247|       |        // gh-144601: The exception object can't be transferred across
 2248|       |        // interpreters. Instead, we print out an unraisable exception, and
 2249|       |        // then raise a different exception for the calling interpreter.
 2250|      0|        if (rc < 0) {
  ------------------
  |  Branch (2250:13): [True: 0, False: 0]
  ------------------
 2251|      0|            assert(PyErr_Occurred());
  ------------------
  |  Branch (2251:13): [True: 0, False: 0]
  ------------------
 2252|      0|            PyErr_FormatUnraisable("Exception while importing from subinterpreter");
 2253|      0|        }
 2254|      0|        assert(main_tstate != tstate);
  ------------------
  |  Branch (2254:9): [True: 0, False: 0]
  ------------------
 2255|      0|        switch_back_from_main_interpreter(tstate, main_tstate, mod);
 2256|       |        /* Any module we got from the init function will have to be
 2257|       |         * reloaded in the subinterpreter. */
 2258|      0|        mod = NULL;
 2259|      0|        if (rc < 0) {
  ------------------
  |  Branch (2259:13): [True: 0, False: 0]
  ------------------
 2260|      0|            PyErr_SetString(PyExc_ImportError,
 2261|      0|                            "failed to import from subinterpreter due to exception");
 2262|      0|            goto error;
 2263|      0|        }
 2264|      0|    }
 2265|       |
 2266|       |    /*****************************************************************/
 2267|       |    /* At this point we are back to the interpreter we started with. */
 2268|       |    /*****************************************************************/
 2269|       |
 2270|       |    /* Finally we handle the error return from _PyImport_RunModInitFunc(). */
 2271|     12|    if (rc < 0) {
  ------------------
  |  Branch (2271:9): [True: 0, False: 12]
  ------------------
 2272|      0|        goto error;
 2273|      0|    }
 2274|       |
 2275|     12|    if (res.kind == _Py_ext_module_kind_MULTIPHASE) {
  ------------------
  |  Branch (2275:9): [True: 12, False: 0]
  ------------------
 2276|     12|        assert_multiphase_def(def);
  ------------------
  |  | 1778|     12|    do {                                                            \
  |  | 1779|     12|        _Py_ext_module_kind kind = _get_extension_kind(def, false); \
  |  | 1780|     12|        assert(kind == _Py_ext_module_kind_MULTIPHASE               \
  |  | 1781|     12|                /* m_slots can be NULL. */                          \
  |  | 1782|     12|                || kind == _Py_ext_module_kind_UNKNOWN);            \
  |  | 1783|     12|    } while (0)
  |  |  ------------------
  |  |  |  Branch (1783:14): [Folded, False: 12]
  |  |  ------------------
  ------------------
  |  Branch (2276:9): [True: 12, False: 0]
  |  Branch (2276:9): [True: 0, False: 0]
  ------------------
 2277|     12|        assert(mod == NULL);
  ------------------
  |  Branch (2277:9): [True: 12, False: 0]
  ------------------
 2278|       |        /* Note that we cheat a little by not repeating the calls
 2279|       |         * to _PyImport_GetModuleExportHooks() and _PyImport_RunModInitFunc(). */
 2280|     12|        mod = PyModule_FromDefAndSpec(def, spec);
  ------------------
  |  |   80|     12|    PyModule_FromDefAndSpec2((module), (spec), PYTHON_API_VERSION)
  |  |  ------------------
  |  |  |  |   59|     12|#define PYTHON_API_VERSION 1013
  |  |  ------------------
  ------------------
 2281|     12|        if (mod == NULL) {
  ------------------
  |  Branch (2281:13): [True: 0, False: 12]
  ------------------
 2282|      0|            goto error;
 2283|      0|        }
 2284|     12|    }
 2285|      0|    else {
 2286|      0|        assert(res.kind == _Py_ext_module_kind_SINGLEPHASE);
  ------------------
  |  Branch (2286:9): [True: 0, False: 0]
  ------------------
 2287|      0|        assert_singlephase_def(def);
  ------------------
  |  | 1786|      0|    do {                                                            \
  |  | 1787|      0|        _Py_ext_module_kind kind = _get_extension_kind(def, true);  \
  |  | 1788|      0|        assert(kind == _Py_ext_module_kind_SINGLEPHASE              \
  |  | 1789|      0|                || kind == _Py_ext_module_kind_UNKNOWN);            \
  |  | 1790|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (1790:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (2287:9): [True: 0, False: 0]
  |  Branch (2287:9): [True: 0, False: 0]
  ------------------
 2288|       |
 2289|      0|        if (_PyImport_CheckSubinterpIncompatibleExtensionAllowed(name_buf) < 0) {
  ------------------
  |  Branch (2289:13): [True: 0, False: 0]
  ------------------
 2290|      0|            goto error;
 2291|      0|        }
 2292|      0|        assert(!PyErr_Occurred());
  ------------------
  |  Branch (2292:9): [True: 0, False: 0]
  ------------------
 2293|       |
 2294|      0|        if (switched) {
  ------------------
  |  Branch (2294:13): [True: 0, False: 0]
  ------------------
 2295|       |            /* We switched to the main interpreter to run the init
 2296|       |             * function, so now we will "reload" the module from the
 2297|       |             * cached data using the original subinterpreter. */
 2298|      0|            assert(mod == NULL);
  ------------------
  |  Branch (2298:13): [True: 0, False: 0]
  ------------------
 2299|      0|            mod = reload_singlephase_extension(tstate, cached, info);
 2300|      0|            if (mod == NULL) {
  ------------------
  |  Branch (2300:17): [True: 0, False: 0]
  ------------------
 2301|      0|                goto error;
 2302|      0|            }
 2303|      0|            assert(!PyErr_Occurred());
  ------------------
  |  Branch (2303:13): [True: 0, False: 0]
  ------------------
 2304|      0|            assert(PyModule_Check(mod));
  ------------------
  |  Branch (2304:13): [True: 0, False: 0]
  ------------------
 2305|      0|        }
 2306|      0|        else {
 2307|      0|            assert(mod != NULL);
  ------------------
  |  Branch (2307:13): [True: 0, False: 0]
  ------------------
 2308|      0|            assert(PyModule_Check(mod));
  ------------------
  |  Branch (2308:13): [True: 0, False: 0]
  ------------------
 2309|       |
 2310|       |            /* Update per-interpreter import state. */
 2311|      0|            PyObject *modules = get_modules_dict(tstate, true);
 2312|      0|            if (finish_singlephase_extension(
  ------------------
  |  Branch (2312:17): [True: 0, False: 0]
  ------------------
 2313|      0|                    tstate, mod, cached, info->name, modules) < 0)
 2314|      0|            {
 2315|      0|                goto error;
 2316|      0|            }
 2317|      0|        }
 2318|      0|    }
 2319|       |
 2320|     12|    _Py_ext_module_loader_result_clear(&res);
 2321|     12|    return mod;
 2322|       |
 2323|      0|error:
 2324|      0|    Py_XDECREF(mod);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2325|      0|    _Py_ext_module_loader_result_clear(&res);
 2326|       |    return NULL;
 2327|     12|}
import.c:module_dict_for_exec:
 2815|      1|{
 2816|      1|    PyObject *m, *d;
 2817|       |
 2818|      1|    m = import_add_module(tstate, name);
 2819|      1|    if (m == NULL)
  ------------------
  |  Branch (2819:9): [True: 0, False: 1]
  ------------------
 2820|      0|        return NULL;
 2821|       |    /* If the module is being reloaded, we get the old module back
 2822|       |       and re-use its dict to exec the new code. */
 2823|      1|    d = PyModule_GetDict(m);
 2824|      1|    int r = PyDict_Contains(d, &_Py_ID(__builtins__));
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2825|      1|    if (r == 0) {
  ------------------
  |  Branch (2825:9): [True: 1, False: 0]
  ------------------
 2826|      1|        r = PyDict_SetItem(d, &_Py_ID(__builtins__), PyEval_GetBuiltins());
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2827|      1|    }
 2828|      1|    if (r < 0) {
  ------------------
  |  Branch (2828:9): [True: 0, False: 1]
  ------------------
 2829|      0|        remove_module(tstate, name);
 2830|      0|        Py_DECREF(m);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2831|      0|        return NULL;
 2832|      0|    }
 2833|       |
 2834|      1|    Py_INCREF(d);
  ------------------
  |  |  310|      1|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2835|      1|    Py_DECREF(m);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2836|      1|    return d;
 2837|      1|}
import.c:exec_code_in_module:
 2842|      1|{
 2843|      1|    PyObject *v, *m;
 2844|       |
 2845|      1|    v = PyEval_EvalCode(code_object, module_dict, module_dict);
 2846|      1|    if (v == NULL) {
  ------------------
  |  Branch (2846:9): [True: 0, False: 1]
  ------------------
 2847|      0|        remove_module(tstate, name);
 2848|      0|        return NULL;
 2849|      0|    }
 2850|      1|    Py_DECREF(v);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2851|       |
 2852|      1|    m = import_get_module(tstate, name);
 2853|      1|    if (m == NULL && !_PyErr_Occurred(tstate)) {
  ------------------
  |  Branch (2853:9): [True: 0, False: 1]
  |  Branch (2853:22): [True: 0, False: 0]
  ------------------
 2854|      0|        _PyErr_Format(tstate, PyExc_ImportError,
 2855|      0|                      "Loaded module %R not found in sys.modules",
 2856|      0|                      name);
 2857|      0|    }
 2858|       |
 2859|      1|    return m;
 2860|      1|}
import.c:find_frozen:
 3157|     33|{
 3158|     33|    if (info != NULL) {
  ------------------
  |  Branch (3158:9): [True: 33, False: 0]
  ------------------
 3159|     33|        memset(info, 0, sizeof(*info));
 3160|     33|    }
 3161|       |
 3162|     33|    if (nameobj == NULL || nameobj == Py_None) {
  ------------------
  |  |  616|     33|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (3162:9): [True: 0, False: 33]
  |  Branch (3162:28): [True: 0, False: 33]
  ------------------
 3163|      0|        return FROZEN_BAD_NAME;
 3164|      0|    }
 3165|     33|    const char *name = PyUnicode_AsUTF8(nameobj);
 3166|     33|    if (name == NULL) {
  ------------------
  |  Branch (3166:9): [True: 0, False: 33]
  ------------------
 3167|       |        // Note that this function previously used
 3168|       |        // _PyUnicode_EqualToASCIIString().  We clear the error here
 3169|       |        // (instead of propagating it) to match the earlier behavior
 3170|       |        // more closely.
 3171|      0|        PyErr_Clear();
 3172|      0|        return FROZEN_BAD_NAME;
 3173|      0|    }
 3174|       |
 3175|     33|    const struct _frozen *p = look_up_frozen(name);
 3176|     33|    if (p == NULL) {
  ------------------
  |  Branch (3176:9): [True: 2, False: 31]
  ------------------
 3177|      2|        return FROZEN_NOT_FOUND;
 3178|      2|    }
 3179|     31|    if (info != NULL) {
  ------------------
  |  Branch (3179:9): [True: 31, False: 0]
  ------------------
 3180|     31|        info->nameobj = nameobj;  // borrowed
 3181|     31|        info->data = (const char *)p->code;
 3182|     31|        info->size = p->size;
 3183|     31|        info->is_package = p->is_package;
 3184|     31|        if (p->size < 0) {
  ------------------
  |  Branch (3184:13): [True: 0, False: 31]
  ------------------
 3185|       |            // backward compatibility with negative size values
 3186|      0|            info->size = -(p->size);
 3187|      0|            info->is_package = true;
 3188|      0|        }
 3189|     31|        info->origname = name;
 3190|     31|        info->is_alias = resolve_module_alias(name, _PyImport_FrozenAliases,
 3191|     31|                                              &info->origname);
 3192|     31|    }
 3193|     31|    if (p->code == NULL) {
  ------------------
  |  Branch (3193:9): [True: 0, False: 31]
  ------------------
 3194|       |        /* It is frozen but marked as un-importable. */
 3195|      0|        return FROZEN_EXCLUDED;
 3196|      0|    }
 3197|     31|    if (p->code[0] == '\0' || p->size == 0) {
  ------------------
  |  Branch (3197:9): [True: 0, False: 31]
  |  Branch (3197:31): [True: 0, False: 31]
  ------------------
 3198|       |        /* Does not contain executable code. */
 3199|      0|        return FROZEN_INVALID;
 3200|      0|    }
 3201|     31|    return FROZEN_OKAY;
 3202|     31|}
import.c:look_up_frozen:
 3100|     33|{
 3101|     33|    const struct _frozen *p;
 3102|       |    // We always use the bootstrap modules.
 3103|    117|    for (p = _PyImport_FrozenBootstrap; ; p++) {
 3104|    117|        if (p->name == NULL) {
  ------------------
  |  Branch (3104:13): [True: 26, False: 91]
  ------------------
 3105|       |            // We hit the end-of-list sentinel value.
 3106|     26|            break;
 3107|     26|        }
 3108|     91|        if (strcmp(name, p->name) == 0) {
  ------------------
  |  Branch (3108:13): [True: 7, False: 84]
  ------------------
 3109|      7|            return p;
 3110|      7|        }
 3111|     91|    }
 3112|       |    // Prefer custom modules, if any.  Frozen stdlib modules can be
 3113|       |    // disabled here by setting "code" to NULL in the array entry.
 3114|     26|    if (PyImport_FrozenModules != NULL) {
  ------------------
  |  Branch (3114:9): [True: 0, False: 26]
  ------------------
 3115|      0|        for (p = PyImport_FrozenModules; ; p++) {
 3116|      0|            if (p->name == NULL) {
  ------------------
  |  Branch (3116:17): [True: 0, False: 0]
  ------------------
 3117|      0|                break;
 3118|      0|            }
 3119|      0|            if (strcmp(name, p->name) == 0) {
  ------------------
  |  Branch (3119:17): [True: 0, False: 0]
  ------------------
 3120|      0|                return p;
 3121|      0|            }
 3122|      0|        }
 3123|      0|    }
 3124|       |    // Frozen stdlib modules may be disabled.
 3125|     26|    if (use_frozen()) {
  ------------------
  |  Branch (3125:9): [True: 26, False: 0]
  ------------------
 3126|    232|        for (p = _PyImport_FrozenStdlib; ; p++) {
 3127|    232|            if (p->name == NULL) {
  ------------------
  |  Branch (3127:17): [True: 2, False: 230]
  ------------------
 3128|      2|                break;
 3129|      2|            }
 3130|    230|            if (strcmp(name, p->name) == 0) {
  ------------------
  |  Branch (3130:17): [True: 24, False: 206]
  ------------------
 3131|     24|                return p;
 3132|     24|            }
 3133|    230|        }
 3134|     24|        for (p = _PyImport_FrozenTest; ; p++) {
 3135|     24|            if (p->name == NULL) {
  ------------------
  |  Branch (3135:17): [True: 2, False: 22]
  ------------------
 3136|      2|                break;
 3137|      2|            }
 3138|     22|            if (strcmp(name, p->name) == 0) {
  ------------------
  |  Branch (3138:17): [True: 0, False: 22]
  ------------------
 3139|      0|                return p;
 3140|      0|            }
 3141|     22|        }
 3142|      2|    }
 3143|      2|    return NULL;
 3144|     26|}
import.c:use_frozen:
 2959|     26|{
 2960|     26|    PyInterpreterState *interp = _PyInterpreterState_GET();
 2961|     26|    int override = OVERRIDE_FROZEN_MODULES(interp);
  ------------------
  |  |  102|     26|    (interp)->imports.override_frozen_modules
  ------------------
 2962|     26|    if (override > 0) {
  ------------------
  |  Branch (2962:9): [True: 0, False: 26]
  ------------------
 2963|      0|        return true;
 2964|      0|    }
 2965|     26|    else if (override < 0) {
  ------------------
  |  Branch (2965:14): [True: 0, False: 26]
  ------------------
 2966|      0|        return false;
 2967|      0|    }
 2968|     26|    else {
 2969|     26|        return interp->config.use_frozen_modules;
 2970|     26|    }
 2971|     26|}
import.c:resolve_module_alias:
 2941|     31|{
 2942|     31|    const struct _module_alias *entry;
 2943|    241|    for (entry = aliases; ; entry++) {
 2944|    241|        if (entry->name == NULL) {
  ------------------
  |  Branch (2944:13): [True: 26, False: 215]
  ------------------
 2945|       |            /* It isn't an alias. */
 2946|     26|            return false;
 2947|     26|        }
 2948|    215|        if (strcmp(name, entry->name) == 0) {
  ------------------
  |  Branch (2948:13): [True: 5, False: 210]
  ------------------
 2949|      5|            if (alias != NULL) {
  ------------------
  |  Branch (2949:17): [True: 5, False: 0]
  ------------------
 2950|      5|                *alias = entry->orig;
 2951|      5|            }
 2952|       |            return true;
 2953|      5|        }
 2954|    215|    }
 2955|     31|}
import.c:unmarshal_frozen_code:
 3206|     15|{
 3207|     15|    PyObject *co = PyMarshal_ReadObjectFromString(info->data, info->size);
 3208|     15|    if (co == NULL) {
  ------------------
  |  Branch (3208:9): [True: 0, False: 15]
  ------------------
 3209|       |        /* Does not contain executable code. */
 3210|      0|        PyErr_Clear();
 3211|      0|        set_frozen_error(FROZEN_INVALID, info->nameobj);
 3212|      0|        return NULL;
 3213|      0|    }
 3214|     15|    if (!PyCode_Check(co)) {
  ------------------
  |  |  164|     15|#define PyCode_Check(op) Py_IS_TYPE((op), &PyCode_Type)
  |  |  ------------------
  |  |  |  |  215|     15|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     15|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     15|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3214:9): [True: 0, False: 15]
  ------------------
 3215|       |        // We stick with TypeError for backward compatibility.
 3216|      0|        PyErr_Format(PyExc_TypeError,
 3217|      0|                     "frozen object %R is not a code object",
 3218|      0|                     info->nameobj);
 3219|      0|        Py_DECREF(co);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3220|      0|        return NULL;
 3221|      0|    }
 3222|     15|    return co;
 3223|     15|}
import.c:remove_importlib_frames:
 3652|      2|{
 3653|      2|    const char *importlib_filename = "<frozen importlib._bootstrap>";
 3654|      2|    const char *external_filename = "<frozen importlib._bootstrap_external>";
 3655|      2|    const char *remove_frames = "_call_with_frames_removed";
 3656|      2|    int always_trim = 0;
 3657|      2|    int in_importlib = 0;
 3658|      2|    PyObject **prev_link, **outer_link = NULL;
 3659|      2|    PyObject *base_tb = NULL;
 3660|       |
 3661|       |    /* Synopsis: if it's an ImportError, we trim all importlib chunks
 3662|       |       from the traceback. We always trim chunks
 3663|       |       which end with a call to "_call_with_frames_removed". */
 3664|       |
 3665|      2|    PyObject *exc = _PyErr_GetRaisedException(tstate);
 3666|      2|    if (exc == NULL || _PyInterpreterState_GetConfig(tstate->interp)->verbose) {
  ------------------
  |  Branch (3666:9): [True: 0, False: 2]
  |  Branch (3666:24): [True: 0, False: 2]
  ------------------
 3667|      0|        goto done;
 3668|      0|    }
 3669|       |
 3670|      2|    if (PyType_IsSubtype(Py_TYPE(exc), (PyTypeObject *) PyExc_ImportError)) {
  ------------------
  |  |  213|      2|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3670:9): [True: 2, False: 0]
  ------------------
 3671|      2|        always_trim = 1;
 3672|      2|    }
 3673|       |
 3674|      2|    assert(PyExceptionInstance_Check(exc));
  ------------------
  |  Branch (3674:5): [True: 2, False: 0]
  ------------------
 3675|      2|    base_tb = PyException_GetTraceback(exc);
 3676|      2|    prev_link = &base_tb;
 3677|      2|    PyObject *tb = base_tb;
 3678|      6|    while (tb != NULL) {
  ------------------
  |  Branch (3678:12): [True: 4, False: 2]
  ------------------
 3679|      4|        assert(PyTraceBack_Check(tb));
  ------------------
  |  Branch (3679:9): [True: 4, False: 0]
  ------------------
 3680|      4|        PyTracebackObject *traceback = (PyTracebackObject *)tb;
 3681|      4|        PyObject *next = (PyObject *) traceback->tb_next;
 3682|      4|        PyFrameObject *frame = traceback->tb_frame;
 3683|      4|        PyCodeObject *code = PyFrame_GetCode(frame);
 3684|      4|        int now_in_importlib;
 3685|       |
 3686|      4|        now_in_importlib = _PyUnicode_EqualToASCIIString(code->co_filename, importlib_filename) ||
  ------------------
  |  Branch (3686:28): [True: 4, False: 0]
  ------------------
 3687|      0|                           _PyUnicode_EqualToASCIIString(code->co_filename, external_filename);
  ------------------
  |  Branch (3687:28): [True: 0, False: 0]
  ------------------
 3688|      4|        if (now_in_importlib && !in_importlib) {
  ------------------
  |  Branch (3688:13): [True: 4, False: 0]
  |  Branch (3688:33): [True: 2, False: 2]
  ------------------
 3689|       |            /* This is the link to this chunk of importlib tracebacks */
 3690|      2|            outer_link = prev_link;
 3691|      2|        }
 3692|      4|        in_importlib = now_in_importlib;
 3693|       |
 3694|      4|        if (in_importlib &&
  ------------------
  |  Branch (3694:13): [True: 4, False: 0]
  ------------------
 3695|      4|            (always_trim ||
  ------------------
  |  Branch (3695:14): [True: 4, False: 0]
  ------------------
 3696|      4|             _PyUnicode_EqualToASCIIString(code->co_name, remove_frames))) {
  ------------------
  |  Branch (3696:14): [True: 0, False: 0]
  ------------------
 3697|      4|            Py_XSETREF(*outer_link, Py_XNewRef(next));
  ------------------
  |  |  374|      4|    do { \
  |  |  375|      4|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      4|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  376|      4|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      4|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  377|      4|        *_tmp_dst_ptr = (src); \
  |  |  378|      4|        Py_XDECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  524|      4|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  379|      4|    } while (0)
  |  |  ------------------
  |  |  |  Branch (379:14): [Folded, False: 4]
  |  |  ------------------
  ------------------
 3698|      4|            prev_link = outer_link;
 3699|      4|        }
 3700|      0|        else {
 3701|      0|            prev_link = (PyObject **) &traceback->tb_next;
 3702|      0|        }
 3703|      4|        Py_DECREF(code);
  ------------------
  |  |  430|      4|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3704|      4|        tb = next;
 3705|      4|    }
 3706|      2|    if (base_tb == NULL) {
  ------------------
  |  Branch (3706:9): [True: 2, False: 0]
  ------------------
 3707|      2|        base_tb = Py_None;
  ------------------
  |  |  616|      2|#  define Py_None (&_Py_NoneStruct)
  ------------------
 3708|      2|        Py_INCREF(Py_None);
  ------------------
  |  |  310|      2|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3709|      2|    }
 3710|      2|    PyException_SetTraceback(exc, base_tb);
 3711|      2|done:
 3712|      2|    Py_XDECREF(base_tb);
  ------------------
  |  |  524|      2|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3713|      2|    _PyErr_SetRaisedException(tstate, exc);
 3714|      2|}
import.c:resolve_name:
 3719|      1|{
 3720|      1|    PyObject *abs_name;
 3721|      1|    PyObject *package = NULL;
 3722|      1|    PyObject *spec = NULL;
 3723|      1|    Py_ssize_t last_dot;
 3724|      1|    PyObject *base;
 3725|      1|    int level_up;
 3726|       |
 3727|      1|    if (globals == NULL) {
  ------------------
  |  Branch (3727:9): [True: 0, False: 1]
  ------------------
 3728|      0|        _PyErr_SetString(tstate, PyExc_KeyError, "'__name__' not in globals");
 3729|      0|        goto error;
 3730|      0|    }
 3731|      1|    if (!PyAnyDict_Check(globals)) {
  ------------------
  |  |   43|      1|    (PyDict_Check(ob) || PyFrozenDict_Check(ob))
  |  |  ------------------
  |  |  |  |   18|      1|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS)
  |  |  |  |  ------------------
  |  |  |  |  |  |  760|      2|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (760:41): [True: 1, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (PyDict_Check(ob) || PyFrozenDict_Check(ob))
  |  |  ------------------
  |  |  |  |   37|      0|#define PyFrozenDict_Check(op) PyObject_TypeCheck((op), &PyFrozenDict_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |  378|      0|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (378:40): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3732|      0|        _PyErr_SetString(tstate, PyExc_TypeError,
 3733|      0|                         "globals must be a dict or a frozendict");
 3734|      0|        goto error;
 3735|      0|    }
 3736|      1|    if (PyDict_GetItemRef(globals, &_Py_ID(__package__), &package) < 0) {
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3736:9): [True: 0, False: 1]
  ------------------
 3737|      0|        goto error;
 3738|      0|    }
 3739|      1|    if (package == Py_None) {
  ------------------
  |  |  616|      1|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (3739:9): [True: 0, False: 1]
  ------------------
 3740|      0|        Py_DECREF(package);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3741|      0|        package = NULL;
 3742|      0|    }
 3743|      1|    if (PyDict_GetItemRef(globals, &_Py_ID(__spec__), &spec) < 0) {
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3743:9): [True: 0, False: 1]
  ------------------
 3744|      0|        goto error;
 3745|      0|    }
 3746|       |
 3747|      1|    if (package != NULL) {
  ------------------
  |  Branch (3747:9): [True: 1, False: 0]
  ------------------
 3748|      1|        if (!PyUnicode_Check(package)) {
  ------------------
  |  |  103|      1|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      1|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (3748:13): [True: 0, False: 1]
  ------------------
 3749|      0|            _PyErr_SetString(tstate, PyExc_TypeError,
 3750|      0|                             "package must be a string");
 3751|      0|            goto error;
 3752|      0|        }
 3753|      1|        else if (spec != NULL && spec != Py_None) {
  ------------------
  |  |  616|      1|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (3753:18): [True: 1, False: 0]
  |  Branch (3753:34): [True: 1, False: 0]
  ------------------
 3754|      1|            int equal;
 3755|      1|            PyObject *parent = PyObject_GetAttr(spec, &_Py_ID(parent));
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3756|      1|            if (parent == NULL) {
  ------------------
  |  Branch (3756:17): [True: 0, False: 1]
  ------------------
 3757|      0|                goto error;
 3758|      0|            }
 3759|       |
 3760|      1|            equal = PyObject_RichCompareBool(package, parent, Py_EQ);
  ------------------
  |  |  654|      1|#define Py_EQ 2
  ------------------
 3761|      1|            Py_DECREF(parent);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3762|      1|            if (equal < 0) {
  ------------------
  |  Branch (3762:17): [True: 0, False: 1]
  ------------------
 3763|      0|                goto error;
 3764|      0|            }
 3765|      1|            else if (equal == 0) {
  ------------------
  |  Branch (3765:22): [True: 0, False: 1]
  ------------------
 3766|      0|                if (PyErr_WarnEx(PyExc_DeprecationWarning,
  ------------------
  |  Branch (3766:21): [True: 0, False: 0]
  ------------------
 3767|      0|                        "__package__ != __spec__.parent", 1) < 0) {
 3768|      0|                    goto error;
 3769|      0|                }
 3770|      0|            }
 3771|      1|        }
 3772|      1|    }
 3773|      0|    else if (spec != NULL && spec != Py_None) {
  ------------------
  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (3773:14): [True: 0, False: 0]
  |  Branch (3773:30): [True: 0, False: 0]
  ------------------
 3774|      0|        package = PyObject_GetAttr(spec, &_Py_ID(parent));
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3775|      0|        if (package == NULL) {
  ------------------
  |  Branch (3775:13): [True: 0, False: 0]
  ------------------
 3776|      0|            goto error;
 3777|      0|        }
 3778|      0|        else if (!PyUnicode_Check(package)) {
  ------------------
  |  |  103|      0|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (3778:18): [True: 0, False: 0]
  ------------------
 3779|      0|            _PyErr_SetString(tstate, PyExc_TypeError,
 3780|      0|                             "__spec__.parent must be a string");
 3781|      0|            goto error;
 3782|      0|        }
 3783|      0|    }
 3784|      0|    else {
 3785|      0|        if (PyErr_WarnEx(PyExc_ImportWarning,
  ------------------
  |  Branch (3785:13): [True: 0, False: 0]
  ------------------
 3786|      0|                    "can't resolve package from __spec__ or __package__, "
 3787|      0|                    "falling back on __name__ and __path__", 1) < 0) {
 3788|      0|            goto error;
 3789|      0|        }
 3790|       |
 3791|      0|        if (PyDict_GetItemRef(globals, &_Py_ID(__name__), &package) < 0) {
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3791:13): [True: 0, False: 0]
  ------------------
 3792|      0|            goto error;
 3793|      0|        }
 3794|      0|        if (package == NULL) {
  ------------------
  |  Branch (3794:13): [True: 0, False: 0]
  ------------------
 3795|      0|            _PyErr_SetString(tstate, PyExc_KeyError,
 3796|      0|                             "'__name__' not in globals");
 3797|      0|            goto error;
 3798|      0|        }
 3799|       |
 3800|      0|        if (!PyUnicode_Check(package)) {
  ------------------
  |  |  103|      0|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (3800:13): [True: 0, False: 0]
  ------------------
 3801|      0|            _PyErr_SetString(tstate, PyExc_TypeError,
 3802|      0|                             "__name__ must be a string");
 3803|      0|            goto error;
 3804|      0|        }
 3805|       |
 3806|      0|        int haspath = PyDict_Contains(globals, &_Py_ID(__path__));
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3807|      0|        if (haspath < 0) {
  ------------------
  |  Branch (3807:13): [True: 0, False: 0]
  ------------------
 3808|      0|            goto error;
 3809|      0|        }
 3810|      0|        if (!haspath) {
  ------------------
  |  Branch (3810:13): [True: 0, False: 0]
  ------------------
 3811|      0|            Py_ssize_t dot;
 3812|       |
 3813|      0|            dot = PyUnicode_FindChar(package, '.',
 3814|      0|                                        0, PyUnicode_GET_LENGTH(package), -1);
  ------------------
  |  |  299|      0|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3815|      0|            if (dot == -2) {
  ------------------
  |  Branch (3815:17): [True: 0, False: 0]
  ------------------
 3816|      0|                goto error;
 3817|      0|            }
 3818|      0|            else if (dot == -1) {
  ------------------
  |  Branch (3818:22): [True: 0, False: 0]
  ------------------
 3819|      0|                goto no_parent_error;
 3820|      0|            }
 3821|      0|            PyObject *substr = PyUnicode_Substring(package, 0, dot);
 3822|      0|            if (substr == NULL) {
  ------------------
  |  Branch (3822:17): [True: 0, False: 0]
  ------------------
 3823|      0|                goto error;
 3824|      0|            }
 3825|      0|            Py_SETREF(package, substr);
  ------------------
  |  |  352|      0|    do { \
  |  |  353|      0|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  354|      0|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  355|      0|        *_tmp_dst_ptr = (src); \
  |  |  356|      0|        Py_DECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  357|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (357:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3826|      0|        }
 3827|      0|    }
 3828|       |
 3829|      1|    last_dot = PyUnicode_GET_LENGTH(package);
  ------------------
  |  |  299|      1|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3830|      1|    if (last_dot == 0) {
  ------------------
  |  Branch (3830:9): [True: 0, False: 1]
  ------------------
 3831|      0|        goto no_parent_error;
 3832|      0|    }
 3833|       |
 3834|      1|    for (level_up = 1; level_up < level; level_up += 1) {
  ------------------
  |  Branch (3834:24): [True: 0, False: 1]
  ------------------
 3835|      0|        last_dot = PyUnicode_FindChar(package, '.', 0, last_dot, -1);
 3836|      0|        if (last_dot == -2) {
  ------------------
  |  Branch (3836:13): [True: 0, False: 0]
  ------------------
 3837|      0|            goto error;
 3838|      0|        }
 3839|      0|        else if (last_dot == -1) {
  ------------------
  |  Branch (3839:18): [True: 0, False: 0]
  ------------------
 3840|      0|            _PyErr_SetString(tstate, PyExc_ImportError,
 3841|      0|                             "attempted relative import beyond top-level "
 3842|      0|                             "package");
 3843|      0|            goto error;
 3844|      0|        }
 3845|      0|    }
 3846|       |
 3847|      1|    Py_XDECREF(spec);
  ------------------
  |  |  524|      1|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3848|      1|    base = PyUnicode_Substring(package, 0, last_dot);
 3849|      1|    Py_DECREF(package);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3850|      1|    if (base == NULL || PyUnicode_GET_LENGTH(name) == 0) {
  ------------------
  |  |  299|      1|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3850:9): [True: 0, False: 1]
  |  Branch (3850:25): [True: 1, False: 0]
  ------------------
 3851|      1|        return base;
 3852|      1|    }
 3853|       |
 3854|      0|    abs_name = PyUnicode_FromFormat("%U.%U", base, name);
 3855|      0|    Py_DECREF(base);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3856|      0|    return abs_name;
 3857|       |
 3858|      0|  no_parent_error:
 3859|      0|    _PyErr_SetString(tstate, PyExc_ImportError,
 3860|      0|                     "attempted relative import "
 3861|      0|                     "with no known parent package");
 3862|       |
 3863|      0|  error:
 3864|      0|    Py_XDECREF(spec);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3865|      0|    Py_XDECREF(package);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3866|       |    return NULL;
 3867|      0|}
import.c:get_abs_name:
 4154|     84|{
 4155|     84|    if (level > 0) {
  ------------------
  |  Branch (4155:9): [True: 1, False: 83]
  ------------------
 4156|      1|        return resolve_name(tstate, name, globals, level);
 4157|      1|    }
 4158|     83|    if (PyUnicode_GET_LENGTH(name) == 0) {
  ------------------
  |  |  299|     83|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     83|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     83|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4158:9): [True: 0, False: 83]
  ------------------
 4159|      0|        _PyErr_SetString(tstate, PyExc_ValueError, "Empty module name");
 4160|      0|        return NULL;
 4161|      0|    }
 4162|     83|    return Py_NewRef(name);
  ------------------
  |  |  550|     83|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     83|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     83|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4163|     83|}
import.c:import_find_and_load:
 4099|     24|{
 4100|     24|    PyObject *mod = NULL;
 4101|     24|    PyInterpreterState *interp = tstate->interp;
 4102|     24|    int import_time = _PyInterpreterState_GetConfig(interp)->import_time;
 4103|     24|#define import_level FIND_AND_LOAD(interp).import_level
 4104|     24|#define accumulated FIND_AND_LOAD(interp).accumulated
 4105|       |
 4106|     24|    PyTime_t t1 = 0, accumulated_copy = accumulated;
  ------------------
  |  | 4104|     24|#define accumulated FIND_AND_LOAD(interp).accumulated
  |  |  ------------------
  |  |  |  |  117|     24|    (interp)->imports.find_and_load
  |  |  ------------------
  ------------------
 4107|       |
 4108|       |    /* XOptions is initialized after first some imports.
 4109|       |     * So we can't have negative cache before completed initialization.
 4110|       |     * Anyway, importlib._find_and_load is much slower than
 4111|       |     * _PyDict_GetItemIdWithError().
 4112|       |     */
 4113|     24|    if (import_time) {
  ------------------
  |  Branch (4113:9): [True: 0, False: 24]
  ------------------
 4114|      0|        _IMPORT_TIME_HEADER(interp);
  ------------------
  |  |  135|      0|    do {                                                                      \
  |  |  136|      0|        if (FIND_AND_LOAD((interp)).header) {                                 \
  |  |  ------------------
  |  |  |  |  117|      0|    (interp)->imports.find_and_load
  |  |  ------------------
  |  |  |  Branch (136:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  137|      0|            fputs("import time: self [us] | cumulative | imported package\n", \
  |  |  138|      0|                  stderr);                                                    \
  |  |  139|      0|            FIND_AND_LOAD((interp)).header = 0;                               \
  |  |  ------------------
  |  |  |  |  117|      0|    (interp)->imports.find_and_load
  |  |  ------------------
  |  |  140|      0|        }                                                                     \
  |  |  141|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (141:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4115|       |
 4116|      0|        import_level++;
  ------------------
  |  | 4103|      0|#define import_level FIND_AND_LOAD(interp).import_level
  |  |  ------------------
  |  |  |  |  117|      0|    (interp)->imports.find_and_load
  |  |  ------------------
  ------------------
 4117|       |        // ignore error: don't block import if reading the clock fails
 4118|      0|        (void)PyTime_PerfCounterRaw(&t1);
 4119|      0|        accumulated = 0;
  ------------------
  |  | 4104|      0|#define accumulated FIND_AND_LOAD(interp).accumulated
  |  |  ------------------
  |  |  |  |  117|      0|    (interp)->imports.find_and_load
  |  |  ------------------
  ------------------
 4120|      0|    }
 4121|       |
 4122|     24|    if (PyDTrace_IMPORT_FIND_LOAD_START_ENABLED())
  ------------------
  |  Branch (4122:9): [True: 0, False: 24]
  ------------------
 4123|      0|        PyDTrace_IMPORT_FIND_LOAD_START(PyUnicode_AsUTF8(abs_name));
 4124|       |
 4125|     24|    mod = PyObject_CallMethodObjArgs(IMPORTLIB(interp), &_Py_ID(_find_and_load),
  ------------------
  |  |   98|     24|    (interp)->imports.importlib
  ------------------
                  mod = PyObject_CallMethodObjArgs(IMPORTLIB(interp), &_Py_ID(_find_and_load),
  ------------------
  |  |  917|     24|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|     24|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|     24|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4126|     24|                                     abs_name, IMPORT_FUNC(interp), NULL);
  ------------------
  |  |  108|     24|    (interp)->imports.import_func
  ------------------
 4127|       |
 4128|     24|    if (PyDTrace_IMPORT_FIND_LOAD_DONE_ENABLED())
  ------------------
  |  Branch (4128:9): [True: 0, False: 24]
  ------------------
 4129|      0|        PyDTrace_IMPORT_FIND_LOAD_DONE(PyUnicode_AsUTF8(abs_name),
 4130|      0|                                       mod != NULL);
 4131|       |
 4132|     24|    if (import_time) {
  ------------------
  |  Branch (4132:9): [True: 0, False: 24]
  ------------------
 4133|      0|        PyTime_t t2;
 4134|      0|        (void)PyTime_PerfCounterRaw(&t2);
 4135|      0|        PyTime_t cum = t2 - t1;
 4136|       |
 4137|      0|        import_level--;
  ------------------
  |  | 4103|      0|#define import_level FIND_AND_LOAD(interp).import_level
  |  |  ------------------
  |  |  |  |  117|      0|    (interp)->imports.find_and_load
  |  |  ------------------
  ------------------
 4138|      0|        fprintf(stderr, "import time: %9ld | %10ld | %*s%s\n",
 4139|      0|                (long)_PyTime_AsMicroseconds(cum - accumulated, _PyTime_ROUND_CEILING),
  ------------------
  |  | 4104|      0|#define accumulated FIND_AND_LOAD(interp).accumulated
  |  |  ------------------
  |  |  |  |  117|      0|    (interp)->imports.find_and_load
  |  |  ------------------
  ------------------
 4140|      0|                (long)_PyTime_AsMicroseconds(cum, _PyTime_ROUND_CEILING),
 4141|      0|                import_level*2, "", PyUnicode_AsUTF8(abs_name));
  ------------------
  |  | 4103|      0|#define import_level FIND_AND_LOAD(interp).import_level
  |  |  ------------------
  |  |  |  |  117|      0|    (interp)->imports.find_and_load
  |  |  ------------------
  ------------------
 4142|       |
 4143|      0|        accumulated = accumulated_copy + cum;
  ------------------
  |  | 4104|      0|#define accumulated FIND_AND_LOAD(interp).accumulated
  |  |  ------------------
  |  |  |  |  117|      0|    (interp)->imports.find_and_load
  |  |  ------------------
  ------------------
 4144|      0|    }
 4145|       |
 4146|     24|    return mod;
 4147|     24|#undef import_level
 4148|     24|#undef accumulated
 4149|     24|}
import.c:register_lazy_on_parent:
 4364|      4|{
 4365|      4|    int ret = -1;
 4366|      4|    PyObject *parent = NULL;
 4367|      4|    PyObject *child = NULL;
 4368|      4|    PyObject *parent_module = NULL;
 4369|      4|    PyObject *parent_dict = NULL;
 4370|       |
 4371|      4|    PyInterpreterState *interp = tstate->interp;
 4372|      4|    PyObject *lazy_modules = LAZY_MODULES(interp);
  ------------------
  |  |   96|      4|    (interp)->imports.lazy_modules
  ------------------
 4373|      4|    assert(lazy_modules != NULL);
  ------------------
  |  Branch (4373:5): [True: 4, False: 0]
  ------------------
 4374|       |
 4375|      4|    Py_INCREF(name);
  ------------------
  |  |  310|      4|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4376|      4|    while (true) {
  ------------------
  |  Branch (4376:12): [True: 4, Folded]
  ------------------
 4377|      4|        Py_ssize_t dot = PyUnicode_FindChar(name, '.', 0,
 4378|      4|                                            PyUnicode_GET_LENGTH(name), -1);
  ------------------
  |  |  299|      4|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4379|      4|        if (dot < 0) {
  ------------------
  |  Branch (4379:13): [True: 4, False: 0]
  ------------------
 4380|      4|            PyObject *lazy_submodules = ensure_lazy_submodules(
 4381|      4|                (PyDictObject *)lazy_modules, name);
 4382|      4|            if (lazy_submodules == NULL) {
  ------------------
  |  Branch (4382:17): [True: 0, False: 4]
  ------------------
 4383|      0|                goto done;
 4384|      0|            }
 4385|      4|            Py_DECREF(lazy_submodules);
  ------------------
  |  |  430|      4|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4386|      4|            ret = 0;
 4387|      4|            goto done;
 4388|      4|        }
 4389|      0|        parent = PyUnicode_Substring(name, 0, dot);
 4390|       |        // If `parent` is NULL then this has hit the end of the import, no
 4391|       |        // more "parent.child" in the import name. The entire import will be
 4392|       |        // resolved lazily.
 4393|      0|        if (parent == NULL) {
  ------------------
  |  Branch (4393:13): [True: 0, False: 0]
  ------------------
 4394|      0|            goto done;
 4395|      0|        }
 4396|      0|        Py_XDECREF(child);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4397|      0|        child = PyUnicode_Substring(name, dot + 1, PyUnicode_GET_LENGTH(name));
  ------------------
  |  |  299|      0|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4398|      0|        if (child == NULL) {
  ------------------
  |  Branch (4398:13): [True: 0, False: 0]
  ------------------
 4399|      0|            goto done;
 4400|      0|        }
 4401|       |
 4402|       |        // Record the child as being lazily imported from the parent.
 4403|      0|        PyObject *lazy_submodules = ensure_lazy_submodules(
 4404|      0|            (PyDictObject *)lazy_modules, parent);
 4405|      0|        if (lazy_submodules == NULL) {
  ------------------
  |  Branch (4405:13): [True: 0, False: 0]
  ------------------
 4406|      0|            goto done;
 4407|      0|        }
 4408|       |
 4409|      0|        if (PySet_Add(lazy_submodules, child) < 0) {
  ------------------
  |  Branch (4409:13): [True: 0, False: 0]
  ------------------
 4410|      0|            Py_DECREF(lazy_submodules);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4411|      0|            goto done;
 4412|      0|        }
 4413|      0|        Py_DECREF(lazy_submodules);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4414|       |
 4415|       |        // Add the lazy import for the child to the parent.
 4416|      0|        Py_XSETREF(parent_module, PyImport_GetModule(parent));
  ------------------
  |  |  374|      0|    do { \
  |  |  375|      0|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  376|      0|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  377|      0|        *_tmp_dst_ptr = (src); \
  |  |  378|      0|        Py_XDECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  379|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (379:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4417|      0|        if (parent_module != NULL) {
  ------------------
  |  Branch (4417:13): [True: 0, False: 0]
  ------------------
 4418|      0|            Py_XSETREF(parent_dict, get_mod_dict(parent_module));
  ------------------
  |  |  374|      0|    do { \
  |  |  375|      0|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  376|      0|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  377|      0|        *_tmp_dst_ptr = (src); \
  |  |  378|      0|        Py_XDECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  379|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (379:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4419|      0|            if (parent_dict == NULL) {
  ------------------
  |  Branch (4419:17): [True: 0, False: 0]
  ------------------
 4420|      0|                goto done;
 4421|      0|            }
 4422|      0|            if (PyDict_CheckExact(parent_dict)) {
  ------------------
  |  |   19|      0|#define PyDict_CheckExact(op) Py_IS_TYPE((op), &PyDict_Type)
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4423|      0|                int contains = PyDict_Contains(parent_dict, child);
 4424|      0|                if (contains < 0) {
  ------------------
  |  Branch (4424:21): [True: 0, False: 0]
  ------------------
 4425|      0|                    goto done;
 4426|      0|                }
 4427|      0|                if (!contains) {
  ------------------
  |  Branch (4427:21): [True: 0, False: 0]
  ------------------
 4428|      0|                    PyObject *lazy_module_attr = _PyLazyImport_New(
 4429|      0|                        tstate->current_frame, builtins, parent, child
 4430|      0|                    );
 4431|      0|                    if (lazy_module_attr == NULL) {
  ------------------
  |  Branch (4431:25): [True: 0, False: 0]
  ------------------
 4432|      0|                        goto done;
 4433|      0|                    }
 4434|      0|                    if (PyDict_SetItem(parent_dict, child,
  ------------------
  |  Branch (4434:25): [True: 0, False: 0]
  ------------------
 4435|      0|                                       lazy_module_attr) < 0) {
 4436|      0|                        Py_DECREF(lazy_module_attr);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4437|      0|                        goto done;
 4438|      0|                    }
 4439|      0|                    Py_DECREF(lazy_module_attr);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4440|      0|                }
 4441|      0|            }
 4442|      0|            ret = 0;
 4443|      0|            goto done;
 4444|      0|        }
 4445|       |
 4446|      0|        Py_SETREF(name, parent);
  ------------------
  |  |  352|      0|    do { \
  |  |  353|      0|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  354|      0|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  355|      0|        *_tmp_dst_ptr = (src); \
  |  |  356|      0|        Py_DECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  357|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (357:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4447|      0|        parent = NULL;
 4448|      0|    }
 4449|       |
 4450|      4|done:
 4451|      4|    Py_XDECREF(parent_dict);
  ------------------
  |  |  524|      4|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4452|      4|    Py_XDECREF(parent_module);
  ------------------
  |  |  524|      4|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4453|      4|    Py_XDECREF(child);
  ------------------
  |  |  524|      4|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4454|      4|    Py_XDECREF(parent);
  ------------------
  |  |  524|      4|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4455|      4|    Py_XDECREF(name);
  ------------------
  |  |  524|      4|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4456|      4|    return ret;
 4457|      4|}
import.c:ensure_lazy_submodules:
 4343|      4|{
 4344|      4|    PyObject *lazy_submodules;
 4345|      4|    Py_BEGIN_CRITICAL_SECTION(lazy_modules);
  ------------------
  |  |   51|      4|    {
  ------------------
 4346|      4|    int err = _PyDict_GetItemRef_Unicode_LockHeld(lazy_modules, parent,
 4347|      4|                                                  &lazy_submodules);
 4348|      4|    if (err == 0) {
  ------------------
  |  Branch (4348:9): [True: 4, False: 0]
  ------------------
 4349|       |        // value isn't present
 4350|      4|        lazy_submodules = PySet_New(NULL);
 4351|      4|        if (lazy_submodules != NULL &&
  ------------------
  |  Branch (4351:13): [True: 4, False: 0]
  ------------------
 4352|      4|            _PyDict_SetItem_LockHeld(lazy_modules, parent,
  ------------------
  |  Branch (4352:13): [True: 0, False: 4]
  ------------------
 4353|      4|                                     lazy_submodules) < 0) {
 4354|      0|            Py_CLEAR(lazy_submodules);
  ------------------
  |  |  484|      0|    do { \
  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 4355|      0|        }
 4356|      4|    }
 4357|      4|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|      4|    }
  ------------------
 4358|      4|    return lazy_submodules;
 4359|      4|}
import.c:init_builtin_modules_table:
 2662|      1|{
 2663|      1|    size_t size;
 2664|     39|    for (size = 0; PyImport_Inittab[size].name != NULL; size++)
  ------------------
  |  Branch (2664:20): [True: 38, False: 1]
  ------------------
 2665|     38|        ;
 2666|      1|    size++;
 2667|       |
 2668|       |    /* Make the copy. */
 2669|      1|    struct _inittab *copied = _PyMem_DefaultRawMalloc(size * sizeof(struct _inittab));
 2670|      1|    if (copied == NULL) {
  ------------------
  |  Branch (2670:9): [True: 0, False: 1]
  ------------------
 2671|      0|        return -1;
 2672|      0|    }
 2673|      1|    memcpy(copied, PyImport_Inittab, size * sizeof(struct _inittab));
 2674|      1|    INITTAB = copied;
  ------------------
  |  |   80|      1|#define INITTAB _PyRuntime.imports.inittab
  ------------------
 2675|      1|    return 0;
 2676|      1|}
import.c:init_importlib:
 3385|      1|{
 3386|      1|    assert(!_PyErr_Occurred(tstate));
  ------------------
  |  Branch (3386:5): [True: 1, False: 0]
  ------------------
 3387|       |
 3388|      1|    PyInterpreterState *interp = tstate->interp;
 3389|      1|    int verbose = _PyInterpreterState_GetConfig(interp)->verbose;
 3390|       |
 3391|       |    // Import _importlib through its frozen version, _frozen_importlib.
 3392|      1|    if (verbose) {
  ------------------
  |  Branch (3392:9): [True: 0, False: 1]
  ------------------
 3393|      0|        PySys_FormatStderr("import _frozen_importlib # frozen\n");
 3394|      0|    }
 3395|      1|    if (PyImport_ImportFrozenModule("_frozen_importlib") <= 0) {
  ------------------
  |  Branch (3395:9): [True: 0, False: 1]
  ------------------
 3396|      0|        return -1;
 3397|      0|    }
 3398|       |
 3399|      1|    PyObject *importlib = PyImport_AddModuleRef("_frozen_importlib");
 3400|      1|    if (importlib == NULL) {
  ------------------
  |  Branch (3400:9): [True: 0, False: 1]
  ------------------
 3401|      0|        return -1;
 3402|      0|    }
 3403|      1|    IMPORTLIB(interp) = importlib;
  ------------------
  |  |   98|      1|    (interp)->imports.importlib
  ------------------
 3404|       |
 3405|       |    // Import the _imp module
 3406|      1|    if (verbose) {
  ------------------
  |  Branch (3406:9): [True: 0, False: 1]
  ------------------
 3407|      0|        PySys_FormatStderr("import _imp # builtin\n");
 3408|      0|    }
 3409|      1|    PyObject *imp_mod = bootstrap_imp(tstate);
 3410|      1|    if (imp_mod == NULL) {
  ------------------
  |  Branch (3410:9): [True: 0, False: 1]
  ------------------
 3411|      0|        return -1;
 3412|      0|    }
 3413|      1|    if (_PyImport_SetModuleString("_imp", imp_mod) < 0) {
  ------------------
  |  Branch (3413:9): [True: 0, False: 1]
  ------------------
 3414|      0|        Py_DECREF(imp_mod);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3415|      0|        return -1;
 3416|      0|    }
 3417|       |
 3418|       |    // Install importlib as the implementation of import
 3419|      1|    PyObject *value = PyObject_CallMethod(importlib, "_install",
 3420|      1|                                          "OO", sysmod, imp_mod);
 3421|      1|    Py_DECREF(imp_mod);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3422|      1|    if (value == NULL) {
  ------------------
  |  Branch (3422:9): [True: 0, False: 1]
  ------------------
 3423|      0|        return -1;
 3424|      0|    }
 3425|      1|    Py_DECREF(value);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3426|       |
 3427|      1|    assert(!_PyErr_Occurred(tstate));
  ------------------
  |  Branch (3427:5): [True: 1, False: 0]
  ------------------
 3428|      1|    return 0;
 3429|      1|}
import.c:bootstrap_imp:
 3331|      1|{
 3332|      1|    PyObject *name = PyUnicode_FromString("_imp");
 3333|      1|    if (name == NULL) {
  ------------------
  |  Branch (3333:9): [True: 0, False: 1]
  ------------------
 3334|      0|        return NULL;
 3335|      0|    }
 3336|       |
 3337|       |    // Mock a ModuleSpec object just good enough for PyModule_FromDefAndSpec():
 3338|       |    // an object with just a name attribute.
 3339|       |    //
 3340|       |    // _imp.__spec__ is overridden by importlib._bootstrap._instal() anyway.
 3341|      1|    PyObject *attrs = Py_BuildValue("{sO}", "name", name);
 3342|      1|    if (attrs == NULL) {
  ------------------
  |  Branch (3342:9): [True: 0, False: 1]
  ------------------
 3343|      0|        goto error;
 3344|      0|    }
 3345|      1|    PyObject *spec = _PyNamespace_New(attrs);
 3346|      1|    Py_DECREF(attrs);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3347|      1|    if (spec == NULL) {
  ------------------
  |  Branch (3347:9): [True: 0, False: 1]
  ------------------
 3348|      0|        goto error;
 3349|      0|    }
 3350|       |
 3351|       |    // Create the _imp module from its definition.
 3352|      1|    PyObject *mod = create_builtin(tstate, name, spec, NULL);
 3353|      1|    Py_CLEAR(name);
  ------------------
  |  |  484|      1|    do { \
  |  |  485|      1|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      1|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      1|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      1|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      1|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 1, False: 0]
  |  |  ------------------
  |  |  488|      1|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      1|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      1|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      1|        } \
  |  |  491|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
 3354|      1|    Py_DECREF(spec);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3355|      1|    if (mod == NULL) {
  ------------------
  |  Branch (3355:9): [True: 0, False: 1]
  ------------------
 3356|      0|        goto error;
 3357|      0|    }
 3358|      1|    assert(mod != Py_None);  // not found
  ------------------
  |  Branch (3358:5): [True: 1, False: 0]
  ------------------
 3359|       |
 3360|       |    // Execute the _imp module: call imp_module_exec().
 3361|      1|    if (exec_builtin_or_dynamic(mod) < 0) {
  ------------------
  |  Branch (3361:9): [True: 0, False: 1]
  ------------------
 3362|      0|        Py_DECREF(mod);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3363|      0|        goto error;
 3364|      0|    }
 3365|      1|    return mod;
 3366|       |
 3367|      0|error:
 3368|      0|    Py_XDECREF(name);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3369|       |    return NULL;
 3370|      1|}
import.c:exec_builtin_or_dynamic:
  921|     12|exec_builtin_or_dynamic(PyObject *mod) {
  922|     12|    void *state;
  923|       |
  924|     12|    if (!PyModule_Check(mod)) {
  ------------------
  |  |   12|     12|#define PyModule_Check(op) PyObject_TypeCheck((op), &PyModule_Type)
  |  |  ------------------
  |  |  |  |  378|     12|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     12|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     12|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (924:9): [True: 0, False: 12]
  ------------------
  925|      0|        return 0;
  926|      0|    }
  927|       |
  928|     12|    state = PyModule_GetState(mod);
  929|     12|    if (state) {
  ------------------
  |  Branch (929:9): [True: 0, False: 12]
  ------------------
  930|       |        /* Already initialized; skip reload */
  931|      0|        return 0;
  932|      0|    }
  933|       |
  934|     12|    return PyModule_Exec(mod);
  935|     12|}
import.c:init_importlib_external:
 3434|      1|{
 3435|      1|    PyObject *value;
 3436|      1|    value = PyObject_CallMethod(IMPORTLIB(interp),
  ------------------
  |  |   98|      1|    (interp)->imports.importlib
  ------------------
 3437|      1|                                "_install_external_importers", "");
 3438|      1|    if (value == NULL) {
  ------------------
  |  Branch (3438:9): [True: 0, False: 1]
  ------------------
 3439|      0|        return -1;
 3440|      0|    }
 3441|      1|    Py_DECREF(value);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3442|      1|    return 0;
 3443|      1|}
import.c:init_zipimport:
 4826|      1|{
 4827|      1|    PyObject *path_hooks = PySys_GetAttrString("path_hooks");
 4828|      1|    if (path_hooks == NULL) {
  ------------------
  |  Branch (4828:9): [True: 0, False: 1]
  ------------------
 4829|      0|        return -1;
 4830|      0|    }
 4831|       |
 4832|      1|    if (verbose) {
  ------------------
  |  Branch (4832:9): [True: 0, False: 1]
  ------------------
 4833|      0|        PySys_WriteStderr("# installing zipimport hook\n");
 4834|      0|    }
 4835|       |
 4836|      1|    PyObject *zipimporter = PyImport_ImportModuleAttrString("zipimport", "zipimporter");
 4837|      1|    if (zipimporter == NULL) {
  ------------------
  |  Branch (4837:9): [True: 0, False: 1]
  ------------------
 4838|      0|        _PyErr_Clear(tstate); /* No zipimporter object -- okay */
 4839|      0|        if (verbose) {
  ------------------
  |  Branch (4839:13): [True: 0, False: 0]
  ------------------
 4840|      0|            PySys_WriteStderr("# can't import zipimport.zipimporter\n");
 4841|      0|        }
 4842|      0|    }
 4843|      1|    else {
 4844|       |        /* sys.path_hooks.insert(0, zipimporter) */
 4845|      1|        int err = PyList_Insert(path_hooks, 0, zipimporter);
 4846|      1|        Py_DECREF(zipimporter);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4847|      1|        if (err < 0) {
  ------------------
  |  Branch (4847:13): [True: 0, False: 1]
  ------------------
 4848|      0|            Py_DECREF(path_hooks);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4849|      0|            return -1;
 4850|      0|        }
 4851|      1|        if (verbose) {
  ------------------
  |  Branch (4851:13): [True: 0, False: 1]
  ------------------
 4852|      0|            PySys_WriteStderr("# installed zipimport hook\n");
 4853|      0|        }
 4854|      1|    }
 4855|      1|    Py_DECREF(path_hooks);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4856|       |
 4857|      1|    return 0;
 4858|      1|}
import.c:_imp_extension_suffixes_impl:
 5121|      2|{
 5122|      2|    PyObject *list;
 5123|       |
 5124|      2|    list = PyList_New(0);
 5125|      2|    if (list == NULL)
  ------------------
  |  Branch (5125:9): [True: 0, False: 2]
  ------------------
 5126|      0|        return NULL;
 5127|      2|#ifdef HAVE_DYNAMIC_LOADING
 5128|      2|    const char *suffix;
 5129|      2|    unsigned int index = 0;
 5130|       |
 5131|     10|    while ((suffix = _PyImport_DynLoadFiletab[index])) {
  ------------------
  |  Branch (5131:12): [True: 8, False: 2]
  ------------------
 5132|      8|        PyObject *item = PyUnicode_FromString(suffix);
 5133|      8|        if (item == NULL) {
  ------------------
  |  Branch (5133:13): [True: 0, False: 8]
  ------------------
 5134|      0|            Py_DECREF(list);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5135|      0|            return NULL;
 5136|      0|        }
 5137|      8|        if (PyList_Append(list, item) < 0) {
  ------------------
  |  Branch (5137:13): [True: 0, False: 8]
  ------------------
 5138|      0|            Py_DECREF(list);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5139|      0|            Py_DECREF(item);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5140|      0|            return NULL;
 5141|      0|        }
 5142|      8|        Py_DECREF(item);
  ------------------
  |  |  430|      8|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      8|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5143|      8|        index += 1;
 5144|      8|    }
 5145|      2|#endif
 5146|      2|    return list;
 5147|      2|}
import.c:_imp_acquire_lock_impl:
 5018|     96|{
 5019|     96|    PyInterpreterState *interp = _PyInterpreterState_GET();
 5020|     96|    _PyImport_AcquireLock(interp);
 5021|     96|    Py_RETURN_NONE;
  ------------------
  |  |  628|     96|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|     96|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
 5022|     96|}
import.c:_imp_release_lock_impl:
 5035|     96|{
 5036|     96|    PyInterpreterState *interp = _PyInterpreterState_GET();
 5037|     96|    if (!_PyRecursiveMutex_IsLockedByCurrentThread(&IMPORT_LOCK(interp))) {
  ------------------
  |  |  114|     96|    (interp)->imports.lock
  ------------------
  |  Branch (5037:9): [True: 0, False: 96]
  ------------------
 5038|      0|        PyErr_SetString(PyExc_RuntimeError,
 5039|      0|                        "not holding the import lock");
 5040|      0|        return NULL;
 5041|      0|    }
 5042|     96|    _PyImport_ReleaseLock(interp);
 5043|     96|    Py_RETURN_NONE;
  ------------------
  |  |  628|     96|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|     96|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
 5044|     96|}
import.c:_imp_find_frozen_impl:
 5196|     16|{
 5197|     16|    struct frozen_info info;
 5198|     16|    frozen_status status = find_frozen(name, &info);
 5199|     16|    if (status == FROZEN_NOT_FOUND || status == FROZEN_DISABLED) {
  ------------------
  |  Branch (5199:9): [True: 2, False: 14]
  |  Branch (5199:39): [True: 0, False: 14]
  ------------------
 5200|      2|        Py_RETURN_NONE;
  ------------------
  |  |  628|      2|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|      2|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
 5201|      2|    }
 5202|     14|    else if (status == FROZEN_BAD_NAME) {
  ------------------
  |  Branch (5202:14): [True: 0, False: 14]
  ------------------
 5203|      0|        Py_RETURN_NONE;
  ------------------
  |  |  628|      0|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
 5204|      0|    }
 5205|     14|    else if (status != FROZEN_OKAY) {
  ------------------
  |  Branch (5205:14): [True: 0, False: 14]
  ------------------
 5206|      0|        set_frozen_error(status, name);
 5207|      0|        return NULL;
 5208|      0|    }
 5209|       |
 5210|     14|    PyObject *data = NULL;
 5211|     14|    if (withdata) {
  ------------------
  |  Branch (5211:9): [True: 0, False: 14]
  ------------------
 5212|      0|        data = PyMemoryView_FromMemory((char *)info.data, info.size, PyBUF_READ);
  ------------------
  |  |  137|      0|#define PyBUF_READ  0x100
  ------------------
 5213|      0|        if (data == NULL) {
  ------------------
  |  Branch (5213:13): [True: 0, False: 0]
  ------------------
 5214|      0|            return NULL;
 5215|      0|        }
 5216|      0|    }
 5217|       |
 5218|     14|    PyObject *origname = NULL;
 5219|     14|    if (info.origname != NULL && info.origname[0] != '\0') {
  ------------------
  |  Branch (5219:9): [True: 14, False: 0]
  |  Branch (5219:34): [True: 14, False: 0]
  ------------------
 5220|     14|        origname = PyUnicode_FromString(info.origname);
 5221|     14|        if (origname == NULL) {
  ------------------
  |  Branch (5221:13): [True: 0, False: 14]
  ------------------
 5222|      0|            Py_XDECREF(data);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5223|      0|            return NULL;
 5224|      0|        }
 5225|     14|    }
 5226|       |
 5227|     14|    PyObject *result = PyTuple_Pack(3, data ? data : Py_None,
  ------------------
  |  |  616|     14|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (5227:40): [True: 0, False: 14]
  ------------------
 5228|     14|                                    info.is_package ? Py_True : Py_False,
  ------------------
  |  |   26|     14|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                                                  info.is_package ? Py_True : Py_False,
  ------------------
  |  |   25|     14|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  ------------------
  |  |  |  |  171|     13|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     13|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5228:37): [True: 1, False: 13]
  ------------------
 5229|     14|                                    origname ? origname : Py_None);
  ------------------
  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (5229:37): [True: 14, False: 0]
  ------------------
 5230|     14|    Py_XDECREF(origname);
  ------------------
  |  |  524|     14|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     14|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     14|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5231|     14|    Py_XDECREF(data);
  ------------------
  |  |  524|     14|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     14|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     14|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5232|     14|    return result;
 5233|     14|}
import.c:_imp_get_frozen_object_impl:
 5249|     14|{
 5250|     14|    struct frozen_info info = {0};
 5251|     14|    Py_buffer buf = {0};
 5252|     14|    if (PyObject_CheckBuffer(dataobj)) {
  ------------------
  |  Branch (5252:9): [True: 0, False: 14]
  ------------------
 5253|      0|        if (PyObject_GetBuffer(dataobj, &buf, PyBUF_SIMPLE) != 0) {
  ------------------
  |  |  108|      0|#define PyBUF_SIMPLE 0
  ------------------
  |  Branch (5253:13): [True: 0, False: 0]
  ------------------
 5254|      0|            return NULL;
 5255|      0|        }
 5256|      0|        info.data = (const char *)buf.buf;
 5257|      0|        info.size = buf.len;
 5258|      0|    }
 5259|     14|    else if (dataobj != Py_None) {
  ------------------
  |  |  616|     14|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (5259:14): [True: 0, False: 14]
  ------------------
 5260|      0|        _PyArg_BadArgument("get_frozen_object", "argument 2", "bytes", dataobj);
 5261|      0|        return NULL;
 5262|      0|    }
 5263|     14|    else {
 5264|     14|        frozen_status status = find_frozen(name, &info);
 5265|     14|        if (status != FROZEN_OKAY) {
  ------------------
  |  Branch (5265:13): [True: 0, False: 14]
  ------------------
 5266|      0|            set_frozen_error(status, name);
 5267|      0|            return NULL;
 5268|      0|        }
 5269|     14|    }
 5270|       |
 5271|     14|    if (info.nameobj == NULL) {
  ------------------
  |  Branch (5271:9): [True: 0, False: 14]
  ------------------
 5272|      0|        info.nameobj = name;
 5273|      0|    }
 5274|     14|    if (info.size == 0) {
  ------------------
  |  Branch (5274:9): [True: 0, False: 14]
  ------------------
 5275|       |        /* Does not contain executable code. */
 5276|      0|        set_frozen_error(FROZEN_INVALID, name);
 5277|      0|        return NULL;
 5278|      0|    }
 5279|       |
 5280|     14|    PyInterpreterState *interp = _PyInterpreterState_GET();
 5281|     14|    PyObject *codeobj = unmarshal_frozen_code(interp, &info);
 5282|     14|    if (dataobj != Py_None) {
  ------------------
  |  |  616|     14|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (5282:9): [True: 0, False: 14]
  ------------------
 5283|      0|        PyBuffer_Release(&buf);
 5284|      0|    }
 5285|     14|    return codeobj;
 5286|     14|}
import.c:_imp_is_frozen_package_impl:
 5300|      1|{
 5301|      1|    struct frozen_info info;
 5302|      1|    frozen_status status = find_frozen(name, &info);
 5303|      1|    if (status != FROZEN_OKAY && status != FROZEN_EXCLUDED) {
  ------------------
  |  Branch (5303:9): [True: 0, False: 1]
  |  Branch (5303:34): [True: 0, False: 0]
  ------------------
 5304|      0|        set_frozen_error(status, name);
 5305|      0|        return NULL;
 5306|      0|    }
 5307|      1|    return PyBool_FromLong(info.is_package);
 5308|      1|}
import.c:_imp_create_builtin:
 5084|     11|{
 5085|     11|    PyThreadState *tstate = _PyThreadState_GET();
 5086|       |
 5087|     11|    PyObject *name = PyObject_GetAttrString(spec, "name");
 5088|     11|    if (name == NULL) {
  ------------------
  |  Branch (5088:9): [True: 0, False: 11]
  ------------------
 5089|      0|        return NULL;
 5090|      0|    }
 5091|       |
 5092|     11|    if (!PyUnicode_Check(name)) {
  ------------------
  |  |  103|     11|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     11|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (5092:9): [True: 0, False: 11]
  ------------------
 5093|      0|        PyErr_Format(PyExc_TypeError,
 5094|      0|                     "name must be string, not %.200s",
 5095|      0|                     Py_TYPE(name)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5096|      0|        Py_DECREF(name);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5097|      0|        return NULL;
 5098|      0|    }
 5099|       |
 5100|     11|    if (PyUnicode_GetLength(name) == 0) {
  ------------------
  |  Branch (5100:9): [True: 0, False: 11]
  ------------------
 5101|      0|        PyErr_Format(PyExc_ValueError, "name must not be empty");
 5102|      0|        Py_DECREF(name);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5103|      0|        return NULL;
 5104|      0|    }
 5105|       |
 5106|     11|    PyObject *mod = create_builtin(tstate, name, spec, NULL);
 5107|     11|    Py_DECREF(name);
  ------------------
  |  |  430|     11|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     11|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     11|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5108|     11|    return mod;
 5109|     11|}
import.c:_imp_is_builtin_impl:
 5322|     27|{
 5323|     27|    return PyLong_FromLong(is_builtin(name));
 5324|     27|}
import.c:is_builtin:
 2449|     27|{
 2450|     27|    int i;
 2451|     27|    struct _inittab *inittab = INITTAB;
  ------------------
  |  |   80|     27|#define INITTAB _PyRuntime.imports.inittab
  ------------------
 2452|    826|    for (i = 0; inittab[i].name != NULL; i++) {
  ------------------
  |  Branch (2452:17): [True: 810, False: 16]
  ------------------
 2453|    810|        if (_PyUnicode_EqualToASCIIString(name, inittab[i].name)) {
  ------------------
  |  Branch (2453:13): [True: 11, False: 799]
  ------------------
 2454|     11|            if (inittab[i].initfunc == NULL)
  ------------------
  |  Branch (2454:17): [True: 0, False: 11]
  ------------------
 2455|      0|                return -1;
 2456|     11|            else
 2457|     11|                return 1;
 2458|     11|        }
 2459|    810|    }
 2460|     16|    return 0;
 2461|     27|}
import.c:_imp_is_frozen_impl:
 5338|      1|{
 5339|      1|    struct frozen_info info;
 5340|      1|    frozen_status status = find_frozen(name, &info);
 5341|      1|    if (status != FROZEN_OKAY) {
  ------------------
  |  Branch (5341:9): [True: 0, False: 1]
  ------------------
 5342|      0|        Py_RETURN_FALSE;
  ------------------
  |  |   45|      0|#  define Py_RETURN_FALSE return Py_False
  |  |  ------------------
  |  |  |  |   25|      0|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5343|      0|    }
 5344|      1|    Py_RETURN_TRUE;
  ------------------
  |  |   44|      1|#  define Py_RETURN_TRUE return Py_True
  |  |  ------------------
  |  |  |  |   26|      1|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5345|      1|}
import.c:_imp_exec_builtin_impl:
 5551|     11|{
 5552|     11|    return exec_builtin_or_dynamic(mod);
 5553|     11|}
import.c:_imp__set_lazy_attributes_impl:
 5635|     22|{
 5636|     22|    PyThreadState *tstate = _PyThreadState_GET();
 5637|     22|    PyObject *module_dict = NULL;
 5638|     22|    PyObject *ret = NULL;
 5639|     22|    PyObject *lazy_modules = LAZY_MODULES(tstate->interp);
  ------------------
  |  |   96|     22|    (interp)->imports.lazy_modules
  ------------------
 5640|     22|    assert(lazy_modules != NULL);
  ------------------
  |  Branch (5640:5): [True: 22, False: 0]
  ------------------
 5641|       |
 5642|     22|    PyObject *lazy_submodules;
 5643|     22|    if (PyDict_GetItemRef(lazy_modules, name, &lazy_submodules) < 0) {
  ------------------
  |  Branch (5643:9): [True: 0, False: 22]
  ------------------
 5644|      0|        return NULL;
 5645|      0|    }
 5646|     22|    else if (lazy_submodules == NULL) {
  ------------------
  |  Branch (5646:14): [True: 22, False: 0]
  ------------------
 5647|     22|        Py_RETURN_NONE;
  ------------------
  |  |  628|     22|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|     22|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
 5648|     22|    }
 5649|       |
 5650|      0|    module_dict = get_mod_dict(modobj);
 5651|      0|    if (module_dict == NULL || !PyDict_CheckExact(module_dict)) {
  ------------------
  |  |   19|      0|#define PyDict_CheckExact(op) Py_IS_TYPE((op), &PyDict_Type)
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (5651:9): [True: 0, False: 0]
  |  Branch (5651:32): [True: 0, False: 0]
  ------------------
 5652|      0|        Py_DECREF(lazy_submodules);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5653|      0|        goto done;
 5654|      0|    }
 5655|       |
 5656|      0|    assert(PyAnySet_CheckExact(lazy_submodules));
  ------------------
  |  Branch (5656:5): [True: 0, False: 0]
  |  Branch (5656:5): [True: 0, False: 0]
  ------------------
 5657|      0|    Py_BEGIN_CRITICAL_SECTION(lazy_submodules);
  ------------------
  |  |   51|      0|    {
  ------------------
 5658|      0|    publish_lazy_imports_on_module(tstate, lazy_submodules, name, module_dict);
 5659|      0|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|      0|    }
  ------------------
 5660|      0|    Py_DECREF(lazy_submodules);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5661|       |
 5662|       |    // once a module is imported it is removed from sys.lazy_modules
 5663|      0|    if (PyDict_DelItem(lazy_modules, name) < 0) {
  ------------------
  |  Branch (5663:9): [True: 0, False: 0]
  ------------------
 5664|      0|        goto error;
 5665|      0|    }
 5666|       |
 5667|      0|done:
 5668|      0|    ret = Py_NewRef(Py_None);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5669|       |
 5670|      0|error:
 5671|      0|    Py_XDECREF(module_dict);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5672|      0|    return ret;
 5673|      0|}
import.c:imp_module_exec:
 5705|      1|{
 5706|      1|    const wchar_t *mode = _Py_GetConfig()->check_hash_pycs_mode;
 5707|      1|    PyObject *pyc_mode = PyUnicode_FromWideChar(mode, -1);
 5708|      1|    if (PyModule_Add(module, "check_hash_based_pycs", pyc_mode) < 0) {
  ------------------
  |  Branch (5708:9): [True: 0, False: 1]
  ------------------
 5709|      0|        return -1;
 5710|      0|    }
 5711|       |
 5712|      1|    if (PyModule_AddIntConstant(
  ------------------
  |  Branch (5712:9): [True: 0, False: 1]
  ------------------
 5713|      1|            module, "pyc_magic_number_token", PYC_MAGIC_NUMBER_TOKEN) < 0)
  ------------------
  |  |  318|      1|    ((uint32_t)PYC_MAGIC_NUMBER | ((uint32_t)'\r' << 16) | ((uint32_t)'\n' << 24))
  |  |  ------------------
  |  |  |  |  314|      1|#define PYC_MAGIC_NUMBER 3700
  |  |  ------------------
  ------------------
 5714|      0|    {
 5715|      0|        return -1;
 5716|      0|    }
 5717|       |
 5718|      1|    return 0;
 5719|      1|}

_Py_ext_module_loader_info_clear:
   86|     12|{
   87|     12|    Py_CLEAR(info->filename);
  ------------------
  |  |  484|     12|    do { \
  |  |  485|     12|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|     12|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|     12|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|     12|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|     12|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 12]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|     12|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 12]
  |  |  ------------------
  ------------------
   88|     12|#ifndef MS_WINDOWS
   89|     12|    Py_CLEAR(info->filename_encoded);
  ------------------
  |  |  484|     12|    do { \
  |  |  485|     12|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|     12|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|     12|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|     12|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|     12|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 12]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|     12|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 12]
  |  |  ------------------
  ------------------
   90|     12|#endif
   91|     12|    Py_CLEAR(info->name);
  ------------------
  |  |  484|     12|    do { \
  |  |  485|     12|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|     12|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|     12|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|     12|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|     12|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 12, False: 0]
  |  |  ------------------
  |  |  488|     12|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|     12|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|     12|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|     12|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     12|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     12|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|     12|        } \
  |  |  491|     12|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 12]
  |  |  ------------------
  ------------------
   92|       |    Py_CLEAR(info->name_encoded);
  ------------------
  |  |  484|     12|    do { \
  |  |  485|     12|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|     12|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|     12|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|     12|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|     12|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 12, False: 0]
  |  |  ------------------
  |  |  488|     12|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|     12|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|     12|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|     12|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     12|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     12|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|     12|        } \
  |  |  491|     12|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 12]
  |  |  ------------------
  ------------------
   93|     12|}
_Py_ext_module_loader_info_init_for_builtin:
  157|     12|{
  158|     12|    assert(PyUnicode_Check(name));
  ------------------
  |  Branch (158:5): [True: 12, False: 0]
  ------------------
  159|     12|    assert(PyUnicode_GetLength(name) > 0);
  ------------------
  |  Branch (159:5): [True: 12, False: 0]
  ------------------
  160|       |
  161|     12|    PyObject *name_encoded = PyUnicode_AsEncodedString(name, "ascii", NULL);
  162|     12|    if (name_encoded == NULL) {
  ------------------
  |  Branch (162:9): [True: 0, False: 12]
  ------------------
  163|      0|        return -1;
  164|      0|    }
  165|       |
  166|     12|    *info = (struct _Py_ext_module_loader_info){
  167|     12|        .name=Py_NewRef(name),
  ------------------
  |  |  550|     12|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     12|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     12|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  168|     12|        .name_encoded=name_encoded,
  169|       |        /* We won't need filename. */
  170|     12|        .path=name,
  171|     12|        .origin=_Py_ext_module_origin_BUILTIN,
  172|     12|        .hook_prefixes=&ascii_only_prefixes,
  173|       |        .newcontext=NULL,
  174|     12|    };
  175|     12|    return 0;
  176|     12|}
_Py_ext_module_loader_result_clear:
  221|     12|{
  222|       |    /* Instead, the caller should have called
  223|       |     * _Py_ext_module_loader_result_apply_error(). */
  224|     12|    assert(res->err == NULL);
  ------------------
  |  Branch (224:5): [True: 12, False: 0]
  ------------------
  225|     12|    *res = (struct _Py_ext_module_loader_result){0};
  226|     12|}
_PyImport_RunModInitFunc:
  427|     12|{
  428|     12|    struct _Py_ext_module_loader_result res = {
  429|     12|        .kind=_Py_ext_module_kind_UNKNOWN,
  430|     12|    };
  431|       |
  432|       |    /* Call the module init function. */
  433|       |
  434|       |    /* Package context is needed for single-phase init */
  435|     12|    const char *oldcontext = _PyImport_SwapPackageContext(info->newcontext);
  436|     12|    PyObject *m = p0();
  437|     12|    _PyImport_SwapPackageContext(oldcontext);
  438|       |
  439|       |    /* Validate the result (and populate "res". */
  440|       |
  441|     12|    if (m == NULL) {
  ------------------
  |  Branch (441:9): [True: 0, False: 12]
  ------------------
  442|       |        /* The init func for multi-phase init modules is expected
  443|       |         * to return a PyModuleDef after calling PyModuleDef_Init().
  444|       |         * That function never raises an exception nor returns NULL,
  445|       |         * so at this point it must be a single-phase init modules. */
  446|      0|        res.kind = _Py_ext_module_kind_SINGLEPHASE;
  447|      0|        if (PyErr_Occurred()) {
  ------------------
  |  Branch (447:13): [True: 0, False: 0]
  ------------------
  448|      0|            _Py_ext_module_loader_result_set_error(
  449|      0|                        &res, _Py_ext_module_loader_result_EXCEPTION);
  450|      0|        }
  451|      0|        else {
  452|      0|            _Py_ext_module_loader_result_set_error(
  453|      0|                        &res, _Py_ext_module_loader_result_ERR_MISSING);
  454|      0|        }
  455|      0|        goto error;
  456|     12|    } else if (PyErr_Occurred()) {
  ------------------
  |  Branch (456:16): [True: 0, False: 12]
  ------------------
  457|       |        /* Likewise, we infer that this is a single-phase init module. */
  458|      0|        res.kind = _Py_ext_module_kind_SINGLEPHASE;
  459|      0|        _Py_ext_module_loader_result_set_error(
  460|      0|                &res, _Py_ext_module_loader_result_ERR_UNREPORTED_EXC);
  461|       |        /* We would probably be correct to decref m here,
  462|       |         * but we weren't doing so before,
  463|       |         * so we stick with doing nothing. */
  464|      0|        m = NULL;
  465|      0|        goto error;
  466|      0|    }
  467|       |
  468|     12|    if (Py_IS_TYPE(m, NULL)) {
  ------------------
  |  |  215|     12|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|     12|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     12|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 0, False: 12]
  |  |  ------------------
  ------------------
  469|       |        /* This can happen when a PyModuleDef is returned without calling
  470|       |         * PyModuleDef_Init on it
  471|       |         */
  472|      0|        _Py_ext_module_loader_result_set_error(
  473|      0|                &res, _Py_ext_module_loader_result_ERR_UNINITIALIZED);
  474|       |        /* Likewise, decref'ing here makes sense.  However, the original
  475|       |         * code has a note about "prevent segfault in DECREF",
  476|       |         * so we play it safe and leave it alone. */
  477|      0|        m = NULL; /* prevent segfault in DECREF */
  478|      0|        goto error;
  479|      0|    }
  480|       |
  481|     12|    if (PyObject_TypeCheck(m, &PyModuleDef_Type)) {
  ------------------
  |  |  378|     12|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|     12|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     12|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (378:40): [True: 12, False: 0]
  |  |  ------------------
  ------------------
  482|       |        /* multi-phase init */
  483|     12|        res.kind = _Py_ext_module_kind_MULTIPHASE;
  484|     12|        res.def = (PyModuleDef *)m;
  485|       |        /* Run PyModule_FromDefAndSpec() to finish loading the module. */
  486|     12|    }
  487|      0|    else if (info->hook_prefixes == &nonascii_prefixes) {
  ------------------
  |  Branch (487:14): [True: 0, False: 0]
  ------------------
  488|       |        /* Non-ASCII is only supported for multi-phase init. */
  489|      0|        res.kind = _Py_ext_module_kind_MULTIPHASE;
  490|       |        /* Don't allow legacy init for non-ASCII module names. */
  491|      0|        _Py_ext_module_loader_result_set_error(
  492|      0|                &res, _Py_ext_module_loader_result_ERR_NONASCII_NOT_MULTIPHASE);
  493|      0|        goto error;
  494|      0|    }
  495|      0|    else {
  496|       |        /* single-phase init (legacy) */
  497|      0|        res.kind = _Py_ext_module_kind_SINGLEPHASE;
  498|      0|        res.module = m;
  499|       |
  500|      0|        if (!PyModule_Check(m)) {
  ------------------
  |  |   12|      0|#define PyModule_Check(op) PyObject_TypeCheck((op), &PyModule_Type)
  |  |  ------------------
  |  |  |  |  378|      0|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (500:13): [True: 0, False: 0]
  ------------------
  501|      0|            _Py_ext_module_loader_result_set_error(
  502|      0|                    &res, _Py_ext_module_loader_result_ERR_NOT_MODULE);
  503|      0|            goto error;
  504|      0|        }
  505|       |
  506|      0|        res.def = _PyModule_GetDefOrNull(m);
  507|      0|        if (res.def == NULL) {
  ------------------
  |  Branch (507:13): [True: 0, False: 0]
  ------------------
  508|      0|            PyErr_Clear();
  509|      0|            _Py_ext_module_loader_result_set_error(
  510|      0|                    &res, _Py_ext_module_loader_result_ERR_MISSING_DEF);
  511|      0|            goto error;
  512|      0|        }
  513|      0|    }
  514|       |
  515|     12|    assert(!PyErr_Occurred());
  ------------------
  |  Branch (515:5): [True: 12, False: 0]
  ------------------
  516|     12|    assert(res.err == NULL);
  ------------------
  |  Branch (516:5): [True: 12, False: 0]
  ------------------
  517|     12|    *p_res = res;
  518|     12|    return 0;
  519|       |
  520|      0|error:
  521|      0|    assert(!PyErr_Occurred());
  ------------------
  |  Branch (521:5): [True: 0, False: 0]
  ------------------
  522|      0|    assert(res.err != NULL);
  ------------------
  |  Branch (522:5): [True: 0, False: 0]
  ------------------
  523|      0|    Py_CLEAR(res.module);
  ------------------
  |  |  484|      0|    do { \
  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  524|       |    res.def = NULL;
  525|      0|    *p_res = res;
  526|      0|    p_res->err = &p_res->_err;
  527|      0|    return -1;
  528|      0|}

Py_GETENV:
  690|     12|{
  691|     12|_Py_COMP_DIAG_PUSH
  692|     12|_Py_COMP_DIAG_IGNORE_DEPR_DECLS
  693|     12|    if (Py_IgnoreEnvironmentFlag) {
  ------------------
  |  Branch (693:9): [True: 0, False: 12]
  ------------------
  694|      0|        return NULL;
  695|      0|    }
  696|     12|    return getenv(name);
  697|     12|_Py_COMP_DIAG_POP
  698|     12|}
PyStatus_Ok:
  703|      3|{ return _PyStatus_OK(); }
  ------------------
  |  |   24|      3|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
PyStatus_Exception:
  726|      2|{ return _PyStatus_EXCEPTION(status); }
  ------------------
  |  |   43|      2|    ((err)._type != _PyStatus_TYPE_OK)
  ------------------
_PyWideStringList_CheckConsistency:
  764|    107|{
  765|    107|    assert(list->length >= 0);
  ------------------
  |  Branch (765:5): [True: 107, False: 0]
  ------------------
  766|    107|    if (list->length != 0) {
  ------------------
  |  Branch (766:9): [True: 12, False: 95]
  ------------------
  767|     12|        assert(list->items != NULL);
  ------------------
  |  Branch (767:9): [True: 12, False: 0]
  ------------------
  768|     12|    }
  769|    125|    for (Py_ssize_t i = 0; i < list->length; i++) {
  ------------------
  |  Branch (769:28): [True: 18, False: 107]
  ------------------
  770|     18|        assert(list->items[i] != NULL);
  ------------------
  |  Branch (770:9): [True: 18, False: 0]
  ------------------
  771|     18|    }
  772|    107|    return 1;
  773|    107|}
_PyWideStringList_Clear:
  802|     34|{
  803|       |    _PyWideStringList_ClearEx(list, false);
  804|     34|}
_PyWideStringList_Copy:
  855|     19|{
  856|       |    return _PyWideStringList_CopyEx(list, list2, false);
  857|     19|}
PyWideStringList_Insert:
  862|      5|{
  863|      5|    Py_ssize_t len = list->length;
  864|      5|    if (len == PY_SSIZE_T_MAX) {
  ------------------
  |  |  137|      5|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (864:9): [True: 0, False: 5]
  ------------------
  865|       |        /* length+1 would overflow */
  866|      0|        return _PyStatus_NO_MEMORY();
  ------------------
  |  |   33|      0|#define _PyStatus_NO_MEMORY() _PyStatus_ERR(_PyStatus_NO_MEMORY_ERRMSG)
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  ------------------
  867|      0|    }
  868|      5|    if (index < 0) {
  ------------------
  |  Branch (868:9): [True: 0, False: 5]
  ------------------
  869|      0|        return _PyStatus_ERR("PyWideStringList_Insert index must be >= 0");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
  870|      0|    }
  871|      5|    if (index > len) {
  ------------------
  |  Branch (871:9): [True: 0, False: 5]
  ------------------
  872|      0|        index = len;
  873|      0|    }
  874|       |
  875|      5|    wchar_t *item2 = _PyMem_RawWcsdup(item);
  876|      5|    if (item2 == NULL) {
  ------------------
  |  Branch (876:9): [True: 0, False: 5]
  ------------------
  877|      0|        return _PyStatus_NO_MEMORY();
  ------------------
  |  |   33|      0|#define _PyStatus_NO_MEMORY() _PyStatus_ERR(_PyStatus_NO_MEMORY_ERRMSG)
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  ------------------
  878|      0|    }
  879|       |
  880|      5|    size_t size = (len + 1) * sizeof(list->items[0]);
  881|      5|    wchar_t **items2 = (wchar_t **)PyMem_RawRealloc(list->items, size);
  882|      5|    if (items2 == NULL) {
  ------------------
  |  Branch (882:9): [True: 0, False: 5]
  ------------------
  883|      0|        PyMem_RawFree(item2);
  884|      0|        return _PyStatus_NO_MEMORY();
  ------------------
  |  |   33|      0|#define _PyStatus_NO_MEMORY() _PyStatus_ERR(_PyStatus_NO_MEMORY_ERRMSG)
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  ------------------
  885|      0|    }
  886|       |
  887|      5|    if (index < len) {
  ------------------
  |  Branch (887:9): [True: 0, False: 5]
  ------------------
  888|      0|        memmove(&items2[index + 1],
  889|      0|                &items2[index],
  890|      0|                (len - index) * sizeof(items2[0]));
  891|      0|    }
  892|       |
  893|      5|    items2[index] = item2;
  894|      5|    list->items = items2;
  895|      5|    list->length++;
  896|      5|    return _PyStatus_OK();
  ------------------
  |  |   24|      5|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
  897|      5|}
PyWideStringList_Append:
  902|      5|{
  903|      5|    return PyWideStringList_Insert(list, list->length, item);
  904|      5|}
_PyWideStringList_Extend:
  909|      2|{
  910|      2|    for (Py_ssize_t i = 0; i < list2->length; i++) {
  ------------------
  |  Branch (910:28): [True: 0, False: 2]
  ------------------
  911|      0|        PyStatus status = PyWideStringList_Append(list, list2->items[i]);
  912|      0|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      0|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  913|      0|            return status;
  914|      0|        }
  915|      0|    }
  916|      2|    return _PyStatus_OK();
  ------------------
  |  |   24|      2|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
  917|      2|}
_PyWideStringList_AsList:
  934|      4|{
  935|      4|    assert(_PyWideStringList_CheckConsistency(list));
  ------------------
  |  Branch (935:5): [True: 4, False: 0]
  ------------------
  936|       |
  937|      4|    PyObject *pylist = PyList_New(list->length);
  938|      4|    if (pylist == NULL) {
  ------------------
  |  Branch (938:9): [True: 0, False: 4]
  ------------------
  939|      0|        return NULL;
  940|      0|    }
  941|       |
  942|      8|    for (Py_ssize_t i = 0; i < list->length; i++) {
  ------------------
  |  Branch (942:28): [True: 4, False: 4]
  ------------------
  943|      4|        PyObject *item = PyUnicode_FromWideChar(list->items[i], -1);
  944|      4|        if (item == NULL) {
  ------------------
  |  Branch (944:13): [True: 0, False: 4]
  ------------------
  945|      0|            Py_DECREF(pylist);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  946|      0|            return NULL;
  947|      0|        }
  948|      4|        PyList_SET_ITEM(pylist, i, item);
  ------------------
  |  |   50|      4|    PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  949|      4|    }
  950|      4|    return pylist;
  951|      4|}
PyConfig_Clear:
 1088|      4|{
 1089|      4|#define CLEAR(ATTR) \
 1090|      4|    do { \
 1091|      4|        PyMem_RawFree(ATTR); \
 1092|      4|        ATTR = NULL; \
 1093|      4|    } while (0)
 1094|       |
 1095|      4|    CLEAR(config->pycache_prefix);
  ------------------
  |  | 1090|      4|    do { \
  |  | 1091|      4|        PyMem_RawFree(ATTR); \
  |  | 1092|      4|        ATTR = NULL; \
  |  | 1093|      4|    } while (0)
  |  |  ------------------
  |  |  |  Branch (1093:14): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1096|      4|    CLEAR(config->pythonpath_env);
  ------------------
  |  | 1090|      4|    do { \
  |  | 1091|      4|        PyMem_RawFree(ATTR); \
  |  | 1092|      4|        ATTR = NULL; \
  |  | 1093|      4|    } while (0)
  |  |  ------------------
  |  |  |  Branch (1093:14): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1097|      4|    CLEAR(config->home);
  ------------------
  |  | 1090|      4|    do { \
  |  | 1091|      4|        PyMem_RawFree(ATTR); \
  |  | 1092|      4|        ATTR = NULL; \
  |  | 1093|      4|    } while (0)
  |  |  ------------------
  |  |  |  Branch (1093:14): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1098|      4|    CLEAR(config->program_name);
  ------------------
  |  | 1090|      4|    do { \
  |  | 1091|      4|        PyMem_RawFree(ATTR); \
  |  | 1092|      4|        ATTR = NULL; \
  |  | 1093|      4|    } while (0)
  |  |  ------------------
  |  |  |  Branch (1093:14): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1099|       |
 1100|      4|    _PyWideStringList_Clear(&config->argv);
 1101|      4|    _PyWideStringList_Clear(&config->warnoptions);
 1102|      4|    _PyWideStringList_Clear(&config->xoptions);
 1103|      4|    _PyWideStringList_Clear(&config->module_search_paths);
 1104|      4|    config->module_search_paths_set = 0;
 1105|      4|    CLEAR(config->stdlib_dir);
  ------------------
  |  | 1090|      4|    do { \
  |  | 1091|      4|        PyMem_RawFree(ATTR); \
  |  | 1092|      4|        ATTR = NULL; \
  |  | 1093|      4|    } while (0)
  |  |  ------------------
  |  |  |  Branch (1093:14): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1106|       |
 1107|      4|    CLEAR(config->executable);
  ------------------
  |  | 1090|      4|    do { \
  |  | 1091|      4|        PyMem_RawFree(ATTR); \
  |  | 1092|      4|        ATTR = NULL; \
  |  | 1093|      4|    } while (0)
  |  |  ------------------
  |  |  |  Branch (1093:14): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1108|      4|    CLEAR(config->base_executable);
  ------------------
  |  | 1090|      4|    do { \
  |  | 1091|      4|        PyMem_RawFree(ATTR); \
  |  | 1092|      4|        ATTR = NULL; \
  |  | 1093|      4|    } while (0)
  |  |  ------------------
  |  |  |  Branch (1093:14): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1109|      4|    CLEAR(config->prefix);
  ------------------
  |  | 1090|      4|    do { \
  |  | 1091|      4|        PyMem_RawFree(ATTR); \
  |  | 1092|      4|        ATTR = NULL; \
  |  | 1093|      4|    } while (0)
  |  |  ------------------
  |  |  |  Branch (1093:14): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1110|      4|    CLEAR(config->base_prefix);
  ------------------
  |  | 1090|      4|    do { \
  |  | 1091|      4|        PyMem_RawFree(ATTR); \
  |  | 1092|      4|        ATTR = NULL; \
  |  | 1093|      4|    } while (0)
  |  |  ------------------
  |  |  |  Branch (1093:14): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1111|      4|    CLEAR(config->exec_prefix);
  ------------------
  |  | 1090|      4|    do { \
  |  | 1091|      4|        PyMem_RawFree(ATTR); \
  |  | 1092|      4|        ATTR = NULL; \
  |  | 1093|      4|    } while (0)
  |  |  ------------------
  |  |  |  Branch (1093:14): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1112|      4|    CLEAR(config->base_exec_prefix);
  ------------------
  |  | 1090|      4|    do { \
  |  | 1091|      4|        PyMem_RawFree(ATTR); \
  |  | 1092|      4|        ATTR = NULL; \
  |  | 1093|      4|    } while (0)
  |  |  ------------------
  |  |  |  Branch (1093:14): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1113|      4|    CLEAR(config->platlibdir);
  ------------------
  |  | 1090|      4|    do { \
  |  | 1091|      4|        PyMem_RawFree(ATTR); \
  |  | 1092|      4|        ATTR = NULL; \
  |  | 1093|      4|    } while (0)
  |  |  ------------------
  |  |  |  Branch (1093:14): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1114|      4|    CLEAR(config->sys_path_0);
  ------------------
  |  | 1090|      4|    do { \
  |  | 1091|      4|        PyMem_RawFree(ATTR); \
  |  | 1092|      4|        ATTR = NULL; \
  |  | 1093|      4|    } while (0)
  |  |  ------------------
  |  |  |  Branch (1093:14): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1115|       |
 1116|      4|    CLEAR(config->filesystem_encoding);
  ------------------
  |  | 1090|      4|    do { \
  |  | 1091|      4|        PyMem_RawFree(ATTR); \
  |  | 1092|      4|        ATTR = NULL; \
  |  | 1093|      4|    } while (0)
  |  |  ------------------
  |  |  |  Branch (1093:14): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1117|      4|    CLEAR(config->filesystem_errors);
  ------------------
  |  | 1090|      4|    do { \
  |  | 1091|      4|        PyMem_RawFree(ATTR); \
  |  | 1092|      4|        ATTR = NULL; \
  |  | 1093|      4|    } while (0)
  |  |  ------------------
  |  |  |  Branch (1093:14): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1118|      4|    CLEAR(config->stdio_encoding);
  ------------------
  |  | 1090|      4|    do { \
  |  | 1091|      4|        PyMem_RawFree(ATTR); \
  |  | 1092|      4|        ATTR = NULL; \
  |  | 1093|      4|    } while (0)
  |  |  ------------------
  |  |  |  Branch (1093:14): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1119|      4|    CLEAR(config->stdio_errors);
  ------------------
  |  | 1090|      4|    do { \
  |  | 1091|      4|        PyMem_RawFree(ATTR); \
  |  | 1092|      4|        ATTR = NULL; \
  |  | 1093|      4|    } while (0)
  |  |  ------------------
  |  |  |  Branch (1093:14): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1120|      4|    CLEAR(config->run_command);
  ------------------
  |  | 1090|      4|    do { \
  |  | 1091|      4|        PyMem_RawFree(ATTR); \
  |  | 1092|      4|        ATTR = NULL; \
  |  | 1093|      4|    } while (0)
  |  |  ------------------
  |  |  |  Branch (1093:14): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1121|      4|    CLEAR(config->run_module);
  ------------------
  |  | 1090|      4|    do { \
  |  | 1091|      4|        PyMem_RawFree(ATTR); \
  |  | 1092|      4|        ATTR = NULL; \
  |  | 1093|      4|    } while (0)
  |  |  ------------------
  |  |  |  Branch (1093:14): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1122|      4|    CLEAR(config->run_filename);
  ------------------
  |  | 1090|      4|    do { \
  |  | 1091|      4|        PyMem_RawFree(ATTR); \
  |  | 1092|      4|        ATTR = NULL; \
  |  | 1093|      4|    } while (0)
  |  |  ------------------
  |  |  |  Branch (1093:14): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1123|      4|    CLEAR(config->check_hash_pycs_mode);
  ------------------
  |  | 1090|      4|    do { \
  |  | 1091|      4|        PyMem_RawFree(ATTR); \
  |  | 1092|      4|        ATTR = NULL; \
  |  | 1093|      4|    } while (0)
  |  |  ------------------
  |  |  |  Branch (1093:14): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1124|       |#ifdef Py_DEBUG
 1125|       |    CLEAR(config->run_presite);
 1126|       |#endif
 1127|       |
 1128|      4|    _PyWideStringList_Clear(&config->orig_argv);
 1129|      4|#undef CLEAR
 1130|      4|}
_PyConfig_InitCompatConfig:
 1135|      3|{
 1136|      3|    memset(config, 0, sizeof(*config));
 1137|       |
 1138|      3|    config->_config_init = (int)_PyConfig_INIT_COMPAT;
 1139|      3|    config->import_time = -1;
 1140|      3|    config->isolated = -1;
 1141|      3|    config->use_environment = -1;
 1142|      3|    config->dev_mode = -1;
 1143|      3|    config->install_signal_handlers = 1;
 1144|      3|    config->use_hash_seed = -1;
 1145|      3|    config->faulthandler = -1;
 1146|      3|    config->tracemalloc = -1;
 1147|      3|    config->perf_profiling = -1;
 1148|      3|    config->remote_debug = -1;
 1149|      3|    config->module_search_paths_set = 0;
 1150|      3|    config->parse_argv = 0;
 1151|      3|    config->site_import = -1;
 1152|      3|    config->bytes_warning = -1;
 1153|      3|    config->warn_default_encoding = 0;
 1154|      3|    config->inspect = -1;
 1155|      3|    config->interactive = -1;
 1156|      3|    config->optimization_level = -1;
 1157|      3|    config->parser_debug= -1;
 1158|      3|    config->write_bytecode = -1;
 1159|      3|    config->verbose = -1;
 1160|      3|    config->quiet = -1;
 1161|      3|    config->user_site_directory = -1;
 1162|      3|    config->configure_c_stdio = 0;
 1163|      3|    config->buffered_stdio = -1;
 1164|      3|    config->_install_importlib = 1;
 1165|      3|    config->check_hash_pycs_mode = NULL;
 1166|      3|    config->pathconfig_warnings = -1;
 1167|      3|    config->_init_main = 1;
 1168|       |#ifdef MS_WINDOWS
 1169|       |    config->legacy_windows_stdio = -1;
 1170|       |#endif
 1171|       |#ifdef Py_DEBUG
 1172|       |    config->use_frozen_modules = 0;
 1173|       |#else
 1174|      3|    config->use_frozen_modules = 1;
 1175|      3|#endif
 1176|      3|    config->safe_path = 0;
 1177|      3|    config->int_max_str_digits = -1;
 1178|      3|    config->_is_python_build = 0;
 1179|      3|    config->code_debug_ranges = 1;
 1180|      3|    config->cpu_count = -1;
 1181|      3|    config->lazy_imports = -1;
 1182|       |#ifdef Py_GIL_DISABLED
 1183|       |    config->thread_inherit_context = 1;
 1184|       |    config->context_aware_warnings = 1;
 1185|       |#else
 1186|      3|    config->thread_inherit_context = 0;
 1187|      3|    config->context_aware_warnings = 0;
 1188|      3|#endif
 1189|       |#ifdef __APPLE__
 1190|       |    config->use_system_logger = USE_SYSTEM_LOGGER_DEFAULT;
 1191|       |#endif
 1192|       |#ifdef Py_GIL_DISABLED
 1193|       |    config->enable_gil = _PyConfig_GIL_DEFAULT;
 1194|       |    config->tlbc_enabled = 1;
 1195|       |#endif
 1196|      3|}
PyConfig_InitPythonConfig:
 1236|      3|{
 1237|      3|    config_init_defaults(config);
 1238|       |
 1239|      3|    config->_config_init = (int)_PyConfig_INIT_PYTHON;
 1240|      3|    config->configure_c_stdio = 1;
 1241|      3|    config->parse_argv = 1;
 1242|      3|}
PyConfig_SetString:
 1279|     71|{
 1280|     71|    PyStatus status = _Py_PreInitializeFromConfig(config, NULL);
 1281|     71|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|     71|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 71]
  |  |  ------------------
  ------------------
 1282|      0|        return status;
 1283|      0|    }
 1284|       |
 1285|     71|    wchar_t *str2;
 1286|     71|    if (str != NULL) {
  ------------------
  |  Branch (1286:9): [True: 26, False: 45]
  ------------------
 1287|     26|        str2 = _PyMem_RawWcsdup(str);
 1288|     26|        if (str2 == NULL) {
  ------------------
  |  Branch (1288:13): [True: 0, False: 26]
  ------------------
 1289|      0|            return _PyStatus_NO_MEMORY();
  ------------------
  |  |   33|      0|#define _PyStatus_NO_MEMORY() _PyStatus_ERR(_PyStatus_NO_MEMORY_ERRMSG)
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  ------------------
 1290|      0|        }
 1291|     26|    }
 1292|     45|    else {
 1293|     45|        str2 = NULL;
 1294|     45|    }
 1295|     71|    PyMem_RawFree(*config_str);
 1296|     71|    *config_str = str2;
 1297|     71|    return _PyStatus_OK();
  ------------------
  |  |   24|     71|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 1298|     71|}
PyConfig_SetBytesString:
 1342|      1|{
 1343|      1|    return CONFIG_SET_BYTES_STR(config, config_str, str, "string");
  ------------------
  |  | 1333|      1|    config_set_bytes_string(config, config_str, str, "cannot decode " NAME)
  ------------------
 1344|      1|}
_PyConfig_Copy:
 1363|      2|{
 1364|      2|    PyConfig_Clear(config);
 1365|       |
 1366|      2|    PyStatus status;
 1367|      2|    const PyConfigSpec *spec = PYCONFIG_SPEC;
 1368|    144|    for (; spec->name != NULL; spec++) {
  ------------------
  |  Branch (1368:12): [True: 142, False: 2]
  ------------------
 1369|    142|        void *member = config_get_spec_member(config, spec);
 1370|    142|        const void *member2 = config_get_spec_member((PyConfig*)config2, spec);
 1371|    142|        switch (spec->type) {
 1372|      8|        case PyConfig_MEMBER_INT:
  ------------------
  |  Branch (1372:9): [True: 8, False: 134]
  ------------------
 1373|     24|        case PyConfig_MEMBER_UINT:
  ------------------
  |  Branch (1373:9): [True: 16, False: 126]
  ------------------
 1374|     86|        case PyConfig_MEMBER_BOOL:
  ------------------
  |  Branch (1374:9): [True: 62, False: 80]
  ------------------
 1375|     86|        {
 1376|     86|            *(int*)member = *(int*)member2;
 1377|     86|            break;
 1378|     24|        }
 1379|      2|        case PyConfig_MEMBER_ULONG:
  ------------------
  |  Branch (1379:9): [True: 2, False: 140]
  ------------------
 1380|      2|        {
 1381|      2|            *(unsigned long*)member = *(unsigned long*)member2;
 1382|      2|            break;
 1383|     24|        }
 1384|     14|        case PyConfig_MEMBER_WSTR:
  ------------------
  |  Branch (1384:9): [True: 14, False: 128]
  ------------------
 1385|     44|        case PyConfig_MEMBER_WSTR_OPT:
  ------------------
  |  Branch (1385:9): [True: 30, False: 112]
  ------------------
 1386|     44|        {
 1387|     44|            const wchar_t *str = *(const wchar_t**)member2;
 1388|     44|            status = PyConfig_SetString(config, (wchar_t**)member, str);
 1389|     44|            if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|     44|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 44]
  |  |  ------------------
  ------------------
 1390|      0|                return status;
 1391|      0|            }
 1392|     44|            break;
 1393|     44|        }
 1394|     44|        case PyConfig_MEMBER_WSTR_LIST:
  ------------------
  |  Branch (1394:9): [True: 10, False: 132]
  ------------------
 1395|     10|        {
 1396|     10|            if (_PyWideStringList_Copy((PyWideStringList*)member,
  ------------------
  |  Branch (1396:17): [True: 0, False: 10]
  ------------------
 1397|     10|                                       (const PyWideStringList*)member2) < 0) {
 1398|      0|                return _PyStatus_NO_MEMORY();
  ------------------
  |  |   33|      0|#define _PyStatus_NO_MEMORY() _PyStatus_ERR(_PyStatus_NO_MEMORY_ERRMSG)
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  ------------------
 1399|      0|            }
 1400|     10|            break;
 1401|     10|        }
 1402|     10|        default:
  ------------------
  |  Branch (1402:9): [True: 0, False: 142]
  ------------------
 1403|      0|            Py_UNREACHABLE();
  ------------------
  |  |  264|      0|#  define Py_UNREACHABLE() __builtin_unreachable()
  ------------------
 1404|    142|        }
 1405|    142|    }
 1406|      2|    return _PyStatus_OK();
  ------------------
  |  |   24|      2|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 1407|      2|}
_PyConfig_AsDict:
 1412|      1|{
 1413|      1|    PyObject *dict = PyDict_New();
 1414|      1|    if (dict == NULL) {
  ------------------
  |  Branch (1414:9): [True: 0, False: 1]
  ------------------
 1415|      0|        return NULL;
 1416|      0|    }
 1417|       |
 1418|      1|    const PyConfigSpec *spec = PYCONFIG_SPEC;
 1419|     72|    for (; spec->name != NULL; spec++) {
  ------------------
  |  Branch (1419:12): [True: 71, False: 1]
  ------------------
 1420|     71|        PyObject *obj = config_get(config, spec, 0);
 1421|     71|        if (obj == NULL) {
  ------------------
  |  Branch (1421:13): [True: 0, False: 71]
  ------------------
 1422|      0|            Py_DECREF(dict);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1423|      0|            return NULL;
 1424|      0|        }
 1425|       |
 1426|     71|        int res = PyDict_SetItemString(dict, spec->name, obj);
 1427|     71|        Py_DECREF(obj);
  ------------------
  |  |  430|     71|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     71|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     71|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1428|     71|        if (res < 0) {
  ------------------
  |  Branch (1428:13): [True: 0, False: 71]
  ------------------
 1429|      0|            Py_DECREF(dict);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1430|      0|            return NULL;
 1431|      0|        }
 1432|     71|    }
 1433|      1|    return dict;
 1434|      1|}
_PyConfig_FromDict:
 1646|      1|{
 1647|      1|    if (!PyDict_Check(dict)) {
  ------------------
  |  |   18|      1|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      1|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (1647:9): [True: 0, False: 1]
  ------------------
 1648|      0|        PyErr_SetString(PyExc_TypeError, "dict expected");
 1649|      0|        return -1;
 1650|      0|    }
 1651|       |
 1652|      1|    const PyConfigSpec *spec = PYCONFIG_SPEC;
 1653|     72|    for (; spec->name != NULL; spec++) {
  ------------------
  |  Branch (1653:12): [True: 71, False: 1]
  ------------------
 1654|     71|        char *member = (char *)config + spec->offset;
 1655|     71|        switch (spec->type) {
 1656|      4|        case PyConfig_MEMBER_INT:
  ------------------
  |  Branch (1656:9): [True: 4, False: 67]
  ------------------
 1657|     12|        case PyConfig_MEMBER_UINT:
  ------------------
  |  Branch (1657:9): [True: 8, False: 63]
  ------------------
 1658|     43|        case PyConfig_MEMBER_BOOL:
  ------------------
  |  Branch (1658:9): [True: 31, False: 40]
  ------------------
 1659|     43|        {
 1660|     43|            int value;
 1661|     43|            if (config_dict_get_int(dict, spec->name, &value) < 0) {
  ------------------
  |  Branch (1661:17): [True: 0, False: 43]
  ------------------
 1662|      0|                return -1;
 1663|      0|            }
 1664|     43|            if (spec->type == PyConfig_MEMBER_BOOL
  ------------------
  |  Branch (1664:17): [True: 31, False: 12]
  ------------------
 1665|     12|                || spec->type == PyConfig_MEMBER_UINT)
  ------------------
  |  Branch (1665:20): [True: 8, False: 4]
  ------------------
 1666|     39|            {
 1667|     39|                if (value < 0) {
  ------------------
  |  Branch (1667:21): [True: 0, False: 39]
  ------------------
 1668|      0|                    config_dict_invalid_value(spec->name);
 1669|      0|                    return -1;
 1670|      0|                }
 1671|     39|            }
 1672|     43|            *(int*)member = value;
 1673|     43|            break;
 1674|     43|        }
 1675|      1|        case PyConfig_MEMBER_ULONG:
  ------------------
  |  Branch (1675:9): [True: 1, False: 70]
  ------------------
 1676|      1|        {
 1677|      1|            if (config_dict_get_ulong(dict, spec->name,
  ------------------
  |  Branch (1677:17): [True: 0, False: 1]
  ------------------
 1678|      1|                                      (unsigned long*)member) < 0) {
 1679|      0|                return -1;
 1680|      0|            }
 1681|      1|            break;
 1682|      1|        }
 1683|      7|        case PyConfig_MEMBER_WSTR:
  ------------------
  |  Branch (1683:9): [True: 7, False: 64]
  ------------------
 1684|      7|        {
 1685|      7|            wchar_t **wstr = (wchar_t**)member;
 1686|      7|            if (config_dict_get_wstr(dict, spec->name, config, wstr) < 0) {
  ------------------
  |  Branch (1686:17): [True: 0, False: 7]
  ------------------
 1687|      0|                return -1;
 1688|      0|            }
 1689|      7|            if (*wstr == NULL) {
  ------------------
  |  Branch (1689:17): [True: 0, False: 7]
  ------------------
 1690|      0|                config_dict_invalid_value(spec->name);
 1691|      0|                return -1;
 1692|      0|            }
 1693|      7|            break;
 1694|      7|        }
 1695|     15|        case PyConfig_MEMBER_WSTR_OPT:
  ------------------
  |  Branch (1695:9): [True: 15, False: 56]
  ------------------
 1696|     15|        {
 1697|     15|            wchar_t **wstr = (wchar_t**)member;
 1698|     15|            if (config_dict_get_wstr(dict, spec->name, config, wstr) < 0) {
  ------------------
  |  Branch (1698:17): [True: 0, False: 15]
  ------------------
 1699|      0|                return -1;
 1700|      0|            }
 1701|     15|            break;
 1702|     15|        }
 1703|     15|        case PyConfig_MEMBER_WSTR_LIST:
  ------------------
  |  Branch (1703:9): [True: 5, False: 66]
  ------------------
 1704|      5|        {
 1705|      5|            if (strcmp(spec->name, "xoptions") == 0) {
  ------------------
  |  Branch (1705:17): [True: 1, False: 4]
  ------------------
 1706|      1|                if (config_dict_get_xoptions(dict, spec->name, config,
  ------------------
  |  Branch (1706:21): [True: 0, False: 1]
  ------------------
 1707|      1|                                             (PyWideStringList*)member) < 0) {
 1708|      0|                    return -1;
 1709|      0|                }
 1710|      1|            }
 1711|      4|            else {
 1712|      4|                if (config_dict_get_wstrlist(dict, spec->name, config,
  ------------------
  |  Branch (1712:21): [True: 0, False: 4]
  ------------------
 1713|      4|                                             (PyWideStringList*)member) < 0) {
 1714|      0|                    return -1;
 1715|      0|                }
 1716|      4|            }
 1717|      5|            break;
 1718|      5|        }
 1719|      5|        default:
  ------------------
  |  Branch (1719:9): [True: 0, False: 71]
  ------------------
 1720|      0|            Py_UNREACHABLE();
  ------------------
  |  |  264|      0|#  define Py_UNREACHABLE() __builtin_unreachable()
  ------------------
 1721|     71|        }
 1722|     71|    }
 1723|       |
 1724|      1|    if (!(config->_config_init == _PyConfig_INIT_COMPAT
  ------------------
  |  Branch (1724:11): [True: 0, False: 1]
  ------------------
 1725|      1|          || config->_config_init == _PyConfig_INIT_PYTHON
  ------------------
  |  Branch (1725:14): [True: 1, False: 0]
  ------------------
 1726|      0|          || config->_config_init == _PyConfig_INIT_ISOLATED))
  ------------------
  |  Branch (1726:14): [True: 0, False: 0]
  ------------------
 1727|      0|    {
 1728|      0|        config_dict_invalid_value("_config_init");
 1729|      0|        return -1;
 1730|      0|    }
 1731|       |
 1732|      1|    if (config->hash_seed > MAX_HASH_SEED) {
  ------------------
  |  | 1007|      1|#define MAX_HASH_SEED 4294967295UL
  ------------------
  |  Branch (1732:9): [True: 0, False: 1]
  ------------------
 1733|      0|        config_dict_invalid_value("hash_seed");
 1734|      0|        return -1;
 1735|      0|    }
 1736|      1|    return 0;
 1737|      1|}
_PyConfig_InitImportConfig:
 2855|      1|{
 2856|      1|    return config_init_import(config, 1);
 2857|      1|}
_PyConfig_Write:
 3021|      1|{
 3022|      1|    config_set_global_vars(config);
 3023|       |
 3024|      1|    if (config->configure_c_stdio) {
  ------------------
  |  Branch (3024:9): [True: 1, False: 0]
  ------------------
 3025|      1|        config_init_stdio(config);
 3026|      1|    }
 3027|       |
 3028|       |    /* Write the new pre-configuration into _PyRuntime */
 3029|      1|    PyPreConfig *preconfig = &runtime->preconfig;
 3030|      1|    preconfig->isolated = config->isolated;
 3031|      1|    preconfig->use_environment = config->use_environment;
 3032|      1|    preconfig->dev_mode = config->dev_mode;
 3033|       |
 3034|      1|    if (_Py_SetArgcArgv(config->orig_argv.length,
  ------------------
  |  Branch (3034:9): [True: 0, False: 1]
  ------------------
 3035|      1|                        config->orig_argv.items) < 0)
 3036|      0|    {
 3037|      0|        return _PyStatus_NO_MEMORY();
  ------------------
  |  |   33|      0|#define _PyStatus_NO_MEMORY() _PyStatus_ERR(_PyStatus_NO_MEMORY_ERRMSG)
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  ------------------
 3038|      0|    }
 3039|       |
 3040|       |#ifdef PYMALLOC_USE_HUGEPAGES
 3041|       |    runtime->allocators.use_hugepages = config->pymalloc_hugepages;
 3042|       |#endif
 3043|       |
 3044|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 3045|      1|}
_PyConfig_Read:
 3738|      1|{
 3739|      1|    PyStatus status;
 3740|       |
 3741|      1|    status = _Py_PreInitializeFromConfig(config, NULL);
 3742|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 3743|      0|        return status;
 3744|      0|    }
 3745|       |
 3746|      1|    config_get_global_vars(config);
 3747|       |
 3748|       |#ifdef __CYGWIN__
 3749|       |    status = config_argv0_add_exe(config);
 3750|       |    if (_PyStatus_EXCEPTION(status)) {
 3751|       |        return status;
 3752|       |    }
 3753|       |#endif
 3754|       |
 3755|      1|    if (config->orig_argv.length == 0
  ------------------
  |  Branch (3755:9): [True: 1, False: 0]
  ------------------
 3756|      1|        && !(config->argv.length == 1
  ------------------
  |  Branch (3756:14): [True: 0, False: 1]
  ------------------
 3757|      0|             && wcscmp(config->argv.items[0], L"") == 0))
  ------------------
  |  Branch (3757:17): [True: 0, False: 0]
  ------------------
 3758|      1|    {
 3759|      1|        if (_PyWideStringList_Copy(&config->orig_argv, &config->argv) < 0) {
  ------------------
  |  Branch (3759:13): [True: 0, False: 1]
  ------------------
 3760|      0|            return _PyStatus_NO_MEMORY();
  ------------------
  |  |   33|      0|#define _PyStatus_NO_MEMORY() _PyStatus_ERR(_PyStatus_NO_MEMORY_ERRMSG)
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  ------------------
 3761|      0|        }
 3762|      1|    }
 3763|       |
 3764|      1|    _PyPreCmdline precmdline = _PyPreCmdline_INIT;
  ------------------
  |  |  111|      1|    (_PyPreCmdline){ \
  |  |  112|      1|        .use_environment = -1, \
  |  |  113|      1|        .isolated = -1, \
  |  |  114|      1|        .dev_mode = -1}
  ------------------
 3765|      1|    status = core_read_precmdline(config, &precmdline);
 3766|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 3767|      0|        goto done;
 3768|      0|    }
 3769|       |
 3770|      1|    assert(config->isolated >= 0);
  ------------------
  |  Branch (3770:5): [True: 1, False: 0]
  ------------------
 3771|      1|    if (config->isolated) {
  ------------------
  |  Branch (3771:9): [True: 0, False: 1]
  ------------------
 3772|      0|        config->safe_path = 1;
 3773|      0|        config->use_environment = 0;
 3774|      0|        config->user_site_directory = 0;
 3775|      0|    }
 3776|       |
 3777|      1|    status = config_read_cmdline(config);
 3778|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 3779|      0|        goto done;
 3780|      0|    }
 3781|       |
 3782|       |    /* Handle early PySys_AddXOption() calls */
 3783|      1|    status = _PySys_ReadPreinitXOptions(config);
 3784|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 3785|      0|        goto done;
 3786|      0|    }
 3787|       |
 3788|      1|    status = config_read(config, compute_path_config);
 3789|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 3790|      0|        goto done;
 3791|      0|    }
 3792|       |
 3793|      1|    assert(config_check_consistency(config));
  ------------------
  |  Branch (3793:5): [True: 1, False: 0]
  ------------------
 3794|       |
 3795|      1|    status = _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 3796|       |
 3797|      1|done:
 3798|      1|    _PyPreCmdline_Clear(&precmdline);
 3799|      1|    return status;
 3800|      1|}
_PyConfig_CreateXOptionsDict:
 4593|      2|{
 4594|      2|    PyObject *dict = PyDict_New();
 4595|      2|    if (dict == NULL) {
  ------------------
  |  Branch (4595:9): [True: 0, False: 2]
  ------------------
 4596|      0|        return NULL;
 4597|      0|    }
 4598|       |
 4599|      2|    Py_ssize_t nxoption = config->xoptions.length;
 4600|      2|    wchar_t **xoptions = config->xoptions.items;
 4601|      2|    for (Py_ssize_t i=0; i < nxoption; i++) {
  ------------------
  |  Branch (4601:26): [True: 0, False: 2]
  ------------------
 4602|      0|        const wchar_t *option = xoptions[i];
 4603|      0|        if (config_add_xoption(dict, option) < 0) {
  ------------------
  |  Branch (4603:13): [True: 0, False: 0]
  ------------------
 4604|      0|            Py_DECREF(dict);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4605|      0|            return NULL;
 4606|      0|        }
 4607|      0|    }
 4608|      2|    return dict;
 4609|      2|}
initconfig.c:_PyWideStringList_ClearEx:
  780|     54|{
  781|     54|    assert(_PyWideStringList_CheckConsistency(list));
  ------------------
  |  Branch (781:5): [True: 54, False: 0]
  ------------------
  782|     60|    for (Py_ssize_t i=0; i < list->length; i++) {
  ------------------
  |  Branch (782:26): [True: 6, False: 54]
  ------------------
  783|      6|        if (use_default_allocator) {
  ------------------
  |  Branch (783:13): [True: 0, False: 6]
  ------------------
  784|      0|            _PyMem_DefaultRawFree(list->items[i]);
  785|      0|        }
  786|      6|        else {
  787|      6|            PyMem_RawFree(list->items[i]);
  788|      6|        }
  789|      6|    }
  790|     54|    if (use_default_allocator) {
  ------------------
  |  Branch (790:9): [True: 1, False: 53]
  ------------------
  791|      1|        _PyMem_DefaultRawFree(list->items);
  792|      1|    }
  793|     53|    else {
  794|     53|        PyMem_RawFree(list->items);
  795|     53|    }
  796|     54|    list->length = 0;
  797|       |    list->items = NULL;
  798|     54|}
initconfig.c:_PyWideStringList_CopyEx:
  810|     20|{
  811|     20|    assert(_PyWideStringList_CheckConsistency(list));
  ------------------
  |  Branch (811:5): [True: 20, False: 0]
  ------------------
  812|     20|    assert(_PyWideStringList_CheckConsistency(list2));
  ------------------
  |  Branch (812:5): [True: 20, False: 0]
  ------------------
  813|       |
  814|     20|    if (list2->length == 0) {
  ------------------
  |  Branch (814:9): [True: 17, False: 3]
  ------------------
  815|     17|        _PyWideStringList_ClearEx(list, use_default_allocator);
  816|     17|        return 0;
  817|     17|    }
  818|       |
  819|      3|    PyWideStringList copy = _PyWideStringList_INIT;
  ------------------
  |  |   53|      3|#define _PyWideStringList_INIT (PyWideStringList){.length = 0, .items = NULL}
  ------------------
  820|       |
  821|      3|    size_t size = list2->length * sizeof(list2->items[0]);
  822|      3|    if (use_default_allocator) {
  ------------------
  |  Branch (822:9): [True: 0, False: 3]
  ------------------
  823|      0|        copy.items = _PyMem_DefaultRawMalloc(size);
  824|      0|    }
  825|      3|    else {
  826|      3|        copy.items = PyMem_RawMalloc(size);
  827|      3|    }
  828|      3|    if (copy.items == NULL) {
  ------------------
  |  Branch (828:9): [True: 0, False: 3]
  ------------------
  829|      0|        return -1;
  830|      0|    }
  831|       |
  832|      8|    for (Py_ssize_t i=0; i < list2->length; i++) {
  ------------------
  |  Branch (832:26): [True: 5, False: 3]
  ------------------
  833|      5|        wchar_t *item;
  834|      5|        if (use_default_allocator) {
  ------------------
  |  Branch (834:13): [True: 0, False: 5]
  ------------------
  835|      0|            item = _PyMem_DefaultRawWcsdup(list2->items[i]);
  836|      0|        }
  837|      5|        else {
  838|      5|            item = _PyMem_RawWcsdup(list2->items[i]);
  839|      5|        }
  840|      5|        if (item == NULL) {
  ------------------
  |  Branch (840:13): [True: 0, False: 5]
  ------------------
  841|      0|            _PyWideStringList_ClearEx(&copy, use_default_allocator);
  842|      0|            return -1;
  843|      0|        }
  844|      5|        copy.items[i] = item;
  845|      5|        copy.length = i + 1;
  846|      5|    }
  847|       |
  848|      3|    _PyWideStringList_ClearEx(list, use_default_allocator);
  849|      3|    *list = copy;
  850|      3|    return 0;
  851|      3|}
initconfig.c:config_init_defaults:
 1201|      3|{
 1202|      3|    _PyConfig_InitCompatConfig(config);
 1203|       |
 1204|      3|    config->isolated = 0;
 1205|      3|    config->use_environment = 1;
 1206|      3|    config->site_import = 1;
 1207|      3|    config->bytes_warning = 0;
 1208|      3|    config->inspect = 0;
 1209|      3|    config->interactive = 0;
 1210|      3|    config->optimization_level = 0;
 1211|      3|    config->parser_debug= 0;
 1212|      3|    config->write_bytecode = 1;
 1213|      3|    config->verbose = 0;
 1214|      3|    config->quiet = 0;
 1215|      3|    config->user_site_directory = 1;
 1216|      3|    config->buffered_stdio = 1;
 1217|      3|    config->pathconfig_warnings = 1;
 1218|       |#ifdef MS_WINDOWS
 1219|       |    config->legacy_windows_stdio = 0;
 1220|       |#endif
 1221|       |#ifdef Py_GIL_DISABLED
 1222|       |    config->thread_inherit_context = 1;
 1223|       |    config->context_aware_warnings = 1;
 1224|       |#else
 1225|      3|    config->thread_inherit_context = 0;
 1226|      3|    config->context_aware_warnings = 0;
 1227|      3|#endif
 1228|       |#ifdef __APPLE__
 1229|       |    config->use_system_logger = USE_SYSTEM_LOGGER_DEFAULT;
 1230|       |#endif
 1231|      3|}
initconfig.c:config_set_bytes_string:
 1304|      1|{
 1305|      1|    PyStatus status = _Py_PreInitializeFromConfig(config, NULL);
 1306|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1307|      0|        return status;
 1308|      0|    }
 1309|       |
 1310|      1|    wchar_t *str2;
 1311|      1|    if (str != NULL) {
  ------------------
  |  Branch (1311:9): [True: 1, False: 0]
  ------------------
 1312|      1|        size_t len;
 1313|      1|        str2 = Py_DecodeLocale(str, &len);
 1314|      1|        if (str2 == NULL) {
  ------------------
  |  Branch (1314:13): [True: 0, False: 1]
  ------------------
 1315|      0|            if (len == (size_t)-2) {
  ------------------
  |  Branch (1315:17): [True: 0, False: 0]
  ------------------
 1316|      0|                return _PyStatus_ERR(decode_err_msg);
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 1317|      0|            }
 1318|      0|            else {
 1319|      0|                return  _PyStatus_NO_MEMORY();
  ------------------
  |  |   33|      0|#define _PyStatus_NO_MEMORY() _PyStatus_ERR(_PyStatus_NO_MEMORY_ERRMSG)
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  ------------------
 1320|      0|            }
 1321|      0|        }
 1322|      1|    }
 1323|      0|    else {
 1324|      0|        str2 = NULL;
 1325|      0|    }
 1326|      1|    PyMem_RawFree(*config_str);
 1327|      1|    *config_str = str2;
 1328|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 1329|      1|}
initconfig.c:config_get_spec_member:
 1349|    355|{
 1350|    355|    return (char *)config + spec->offset;
 1351|    355|}
initconfig.c:config_dict_get_int:
 1446|     43|{
 1447|     43|    PyObject *item = config_dict_get(dict, name);
 1448|     43|    if (item == NULL) {
  ------------------
  |  Branch (1448:9): [True: 0, False: 43]
  ------------------
 1449|      0|        return -1;
 1450|      0|    }
 1451|     43|    int value = PyLong_AsInt(item);
 1452|     43|    Py_DECREF(item);
  ------------------
  |  |  430|     43|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     43|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     43|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1453|     43|    if (value == -1 && PyErr_Occurred()) {
  ------------------
  |  Branch (1453:9): [True: 2, False: 41]
  |  Branch (1453:24): [True: 0, False: 2]
  ------------------
 1454|      0|        if (PyErr_ExceptionMatches(PyExc_TypeError)) {
  ------------------
  |  Branch (1454:13): [True: 0, False: 0]
  ------------------
 1455|      0|            config_dict_invalid_type(name);
 1456|      0|        }
 1457|      0|        else if (PyErr_ExceptionMatches(PyExc_OverflowError)) {
  ------------------
  |  Branch (1457:18): [True: 0, False: 0]
  ------------------
 1458|      0|            config_dict_invalid_value(name);
 1459|      0|        }
 1460|      0|        return -1;
 1461|      0|    }
 1462|     43|    *result = value;
 1463|     43|    return 0;
 1464|     43|}
initconfig.c:config_dict_get_ulong:
 1469|      1|{
 1470|      1|    PyObject *item = config_dict_get(dict, name);
 1471|      1|    if (item == NULL) {
  ------------------
  |  Branch (1471:9): [True: 0, False: 1]
  ------------------
 1472|      0|        return -1;
 1473|      0|    }
 1474|      1|    unsigned long value = PyLong_AsUnsignedLong(item);
 1475|      1|    Py_DECREF(item);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1476|      1|    if (value == (unsigned long)-1 && PyErr_Occurred()) {
  ------------------
  |  Branch (1476:9): [True: 0, False: 1]
  |  Branch (1476:39): [True: 0, False: 0]
  ------------------
 1477|      0|        if (PyErr_ExceptionMatches(PyExc_TypeError)) {
  ------------------
  |  Branch (1477:13): [True: 0, False: 0]
  ------------------
 1478|      0|            config_dict_invalid_type(name);
 1479|      0|        }
 1480|      0|        else if (PyErr_ExceptionMatches(PyExc_OverflowError)) {
  ------------------
  |  Branch (1480:18): [True: 0, False: 0]
  ------------------
 1481|      0|            config_dict_invalid_value(name);
 1482|      0|        }
 1483|      0|        return -1;
 1484|      0|    }
 1485|      1|    *result = value;
 1486|      1|    return 0;
 1487|      1|}
initconfig.c:config_dict_get_wstr:
 1493|     22|{
 1494|     22|    PyObject *item = config_dict_get(dict, name);
 1495|     22|    if (item == NULL) {
  ------------------
  |  Branch (1495:9): [True: 0, False: 22]
  ------------------
 1496|      0|        return -1;
 1497|      0|    }
 1498|       |
 1499|     22|    PyStatus status;
 1500|     22|    if (item == Py_None) {
  ------------------
  |  |  616|     22|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (1500:9): [True: 8, False: 14]
  ------------------
 1501|      8|        status = PyConfig_SetString(config, result, NULL);
 1502|      8|    }
 1503|     14|    else if (!PyUnicode_Check(item)) {
  ------------------
  |  |  103|     14|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     14|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (1503:14): [True: 0, False: 14]
  ------------------
 1504|      0|        config_dict_invalid_type(name);
 1505|      0|        goto error;
 1506|      0|    }
 1507|     14|    else {
 1508|     14|        wchar_t *wstr = PyUnicode_AsWideCharString(item, NULL);
 1509|     14|        if (wstr == NULL) {
  ------------------
  |  Branch (1509:13): [True: 0, False: 14]
  ------------------
 1510|      0|            goto error;
 1511|      0|        }
 1512|     14|        status = PyConfig_SetString(config, result, wstr);
 1513|     14|        PyMem_Free(wstr);
 1514|     14|    }
 1515|     22|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|     22|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 22]
  |  |  ------------------
  ------------------
 1516|      0|        PyErr_NoMemory();
 1517|      0|        goto error;
 1518|      0|    }
 1519|     22|    Py_DECREF(item);
  ------------------
  |  |  430|     22|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     22|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     22|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1520|     22|    return 0;
 1521|       |
 1522|      0|error:
 1523|      0|    Py_DECREF(item);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1524|      0|    return -1;
 1525|     22|}
initconfig.c:config_dict_get_xoptions:
 1587|      1|{
 1588|      1|    PyObject *xoptions = config_dict_get(dict, name);
 1589|      1|    if (xoptions == NULL) {
  ------------------
  |  Branch (1589:9): [True: 0, False: 1]
  ------------------
 1590|      0|        return -1;
 1591|      0|    }
 1592|       |
 1593|      1|    if (!PyDict_CheckExact(xoptions)) {
  ------------------
  |  |   19|      1|#define PyDict_CheckExact(op) Py_IS_TYPE((op), &PyDict_Type)
  |  |  ------------------
  |  |  |  |  215|      1|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1593:9): [True: 0, False: 1]
  ------------------
 1594|      0|        Py_DECREF(xoptions);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1595|      0|        config_dict_invalid_type(name);
 1596|      0|        return -1;
 1597|      0|    }
 1598|       |
 1599|      1|    Py_ssize_t pos = 0;
 1600|      1|    PyObject *key, *value;
 1601|      1|    PyWideStringList wstrlist = _PyWideStringList_INIT;
  ------------------
  |  |   53|      1|#define _PyWideStringList_INIT (PyWideStringList){.length = 0, .items = NULL}
  ------------------
 1602|      1|    while (PyDict_Next(xoptions, &pos, &key, &value)) {
  ------------------
  |  Branch (1602:12): [True: 0, False: 1]
  ------------------
 1603|      0|        PyObject *item;
 1604|       |
 1605|      0|        if (value != Py_True) {
  ------------------
  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1605:13): [True: 0, False: 0]
  ------------------
 1606|      0|            item = PyUnicode_FromFormat("%S=%S", key, value);
 1607|      0|            if (item == NULL) {
  ------------------
  |  Branch (1607:17): [True: 0, False: 0]
  ------------------
 1608|      0|                goto error;
 1609|      0|            }
 1610|      0|        }
 1611|      0|        else {
 1612|      0|            item = Py_NewRef(key);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1613|      0|        }
 1614|       |
 1615|      0|        wchar_t *wstr = PyUnicode_AsWideCharString(item, NULL);
 1616|      0|        Py_DECREF(item);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1617|      0|        if (wstr == NULL) {
  ------------------
  |  Branch (1617:13): [True: 0, False: 0]
  ------------------
 1618|      0|            goto error;
 1619|      0|        }
 1620|       |
 1621|      0|        PyStatus status = PyWideStringList_Append(&wstrlist, wstr);
 1622|      0|        PyMem_Free(wstr);
 1623|      0|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      0|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 1624|      0|            PyErr_NoMemory();
 1625|      0|            goto error;
 1626|      0|        }
 1627|      0|    }
 1628|       |
 1629|      1|    if (_PyWideStringList_Copy(result, &wstrlist) < 0) {
  ------------------
  |  Branch (1629:9): [True: 0, False: 1]
  ------------------
 1630|      0|        PyErr_NoMemory();
 1631|      0|        goto error;
 1632|      0|    }
 1633|      1|    _PyWideStringList_Clear(&wstrlist);
 1634|      1|    Py_DECREF(xoptions);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1635|      1|    return 0;
 1636|       |
 1637|      0|error:
 1638|      0|    _PyWideStringList_Clear(&wstrlist);
 1639|      0|    Py_DECREF(xoptions);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1640|      0|    return -1;
 1641|      1|}
initconfig.c:config_dict_get_wstrlist:
 1531|      4|{
 1532|      4|    PyObject *list = config_dict_get(dict, name);
 1533|      4|    if (list == NULL) {
  ------------------
  |  Branch (1533:9): [True: 0, False: 4]
  ------------------
 1534|      0|        return -1;
 1535|      0|    }
 1536|       |
 1537|      4|    int is_list = PyList_CheckExact(list);
  ------------------
  |  |   26|      4|#define PyList_CheckExact(op) Py_IS_TYPE((op), &PyList_Type)
  |  |  ------------------
  |  |  |  |  215|      4|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1538|      4|    if (!is_list && !PyTuple_CheckExact(list)) {
  ------------------
  |  |   28|      3|#define PyTuple_CheckExact(op) Py_IS_TYPE((op), &PyTuple_Type)
  |  |  ------------------
  |  |  |  |  215|      3|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1538:9): [True: 3, False: 1]
  |  Branch (1538:21): [True: 0, False: 3]
  ------------------
 1539|      0|        Py_DECREF(list);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1540|      0|        config_dict_invalid_type(name);
 1541|      0|        return -1;
 1542|      0|    }
 1543|       |
 1544|      4|    PyWideStringList wstrlist = _PyWideStringList_INIT;
  ------------------
  |  |   53|      4|#define _PyWideStringList_INIT (PyWideStringList){.length = 0, .items = NULL}
  ------------------
 1545|      4|    Py_ssize_t len = is_list ? PyList_GET_SIZE(list) : PyTuple_GET_SIZE(list);
  ------------------
  |  |   38|      1|#define PyList_GET_SIZE(op) PyList_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  Py_ssize_t len = is_list ? PyList_GET_SIZE(list) : PyTuple_GET_SIZE(list);
  ------------------
  |  |   27|      3|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1545:22): [True: 1, False: 3]
  ------------------
 1546|      8|    for (Py_ssize_t i=0; i < len; i++) {
  ------------------
  |  Branch (1546:26): [True: 4, False: 4]
  ------------------
 1547|      4|        PyObject *item = is_list ? PyList_GET_ITEM(list, i) : PyTuple_GET_ITEM(list, i);
  ------------------
  |  |   40|      3|#define PyList_GET_ITEM(op, index) (_PyList_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   26|      3|    (assert(PyList_Check(op)), _Py_CAST(PyListObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      PyObject *item = is_list ? PyList_GET_ITEM(list, i) : PyTuple_GET_ITEM(list, i);
  ------------------
  |  |   29|      1|#define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   19|      1|    (assert(PyTuple_Check(op)), _Py_CAST(PyTupleObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1547:26): [True: 3, False: 1]
  |  Branch (1547:36): [True: 3, False: 0]
  |  Branch (1547:63): [True: 1, False: 0]
  ------------------
 1548|       |
 1549|      4|        if (item == Py_None) {
  ------------------
  |  |  616|      4|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (1549:13): [True: 0, False: 4]
  ------------------
 1550|      0|            config_dict_invalid_value(name);
 1551|      0|            goto error;
 1552|      0|        }
 1553|      4|        else if (!PyUnicode_Check(item)) {
  ------------------
  |  |  103|      4|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      4|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (1553:18): [True: 0, False: 4]
  ------------------
 1554|      0|            config_dict_invalid_type(name);
 1555|      0|            goto error;
 1556|      0|        }
 1557|      4|        wchar_t *wstr = PyUnicode_AsWideCharString(item, NULL);
 1558|      4|        if (wstr == NULL) {
  ------------------
  |  Branch (1558:13): [True: 0, False: 4]
  ------------------
 1559|      0|            goto error;
 1560|      0|        }
 1561|      4|        PyStatus status = PyWideStringList_Append(&wstrlist, wstr);
 1562|      4|        PyMem_Free(wstr);
 1563|      4|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      4|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 4]
  |  |  ------------------
  ------------------
 1564|      0|            PyErr_NoMemory();
 1565|      0|            goto error;
 1566|      0|        }
 1567|      4|    }
 1568|       |
 1569|      4|    if (_PyWideStringList_Copy(result, &wstrlist) < 0) {
  ------------------
  |  Branch (1569:9): [True: 0, False: 4]
  ------------------
 1570|      0|        PyErr_NoMemory();
 1571|      0|        goto error;
 1572|      0|    }
 1573|      4|    _PyWideStringList_Clear(&wstrlist);
 1574|      4|    Py_DECREF(list);
  ------------------
  |  |  430|      4|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1575|      4|    return 0;
 1576|       |
 1577|      0|error:
 1578|      0|    _PyWideStringList_Clear(&wstrlist);
 1579|      0|    Py_DECREF(list);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1580|      0|    return -1;
 1581|      4|}
initconfig.c:config_init_import:
 2809|      2|{
 2810|      2|    PyStatus status;
 2811|       |
 2812|      2|    status = _PyConfig_InitPathConfig(config, compute_path_config);
 2813|      2|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      2|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 2]
  |  |  ------------------
  ------------------
 2814|      0|        return status;
 2815|      0|    }
 2816|       |
 2817|      2|    const char *env = config_get_env(config, "PYTHON_FROZEN_MODULES");
 2818|      2|    if (env == NULL) {
  ------------------
  |  Branch (2818:9): [True: 2, False: 0]
  ------------------
 2819|      2|    }
 2820|      0|    else if (strcmp(env, "on") == 0) {
  ------------------
  |  Branch (2820:14): [True: 0, False: 0]
  ------------------
 2821|      0|        config->use_frozen_modules = 1;
 2822|      0|    }
 2823|      0|    else if (strcmp(env, "off") == 0) {
  ------------------
  |  Branch (2823:14): [True: 0, False: 0]
  ------------------
 2824|      0|        config->use_frozen_modules = 0;
 2825|      0|    } else {
 2826|      0|        return PyStatus_Error("bad value for PYTHON_FROZEN_MODULES "
 2827|      0|                              "(expected \"on\" or \"off\")");
 2828|      0|    }
 2829|       |
 2830|       |    /* -X frozen_modules=[on|off] */
 2831|      2|    const wchar_t *value = config_get_xoption_value(config, L"frozen_modules");
 2832|      2|    if (value == NULL) {
  ------------------
  |  Branch (2832:9): [True: 2, False: 0]
  ------------------
 2833|      2|    }
 2834|      0|    else if (wcscmp(value, L"on") == 0) {
  ------------------
  |  Branch (2834:14): [True: 0, False: 0]
  ------------------
 2835|      0|        config->use_frozen_modules = 1;
 2836|      0|    }
 2837|      0|    else if (wcscmp(value, L"off") == 0) {
  ------------------
  |  Branch (2837:14): [True: 0, False: 0]
  ------------------
 2838|      0|        config->use_frozen_modules = 0;
 2839|      0|    }
 2840|      0|    else if (wcslen(value) == 0) {
  ------------------
  |  Branch (2840:14): [True: 0, False: 0]
  ------------------
 2841|       |        // "-X frozen_modules" and "-X frozen_modules=" both imply "on".
 2842|      0|        config->use_frozen_modules = 1;
 2843|      0|    }
 2844|      0|    else {
 2845|      0|        return PyStatus_Error("bad value for option -X frozen_modules "
 2846|      0|                              "(expected \"on\" or \"off\")");
 2847|      0|    }
 2848|       |
 2849|      2|    assert(config->use_frozen_modules >= 0);
  ------------------
  |  Branch (2849:5): [True: 2, False: 0]
  ------------------
 2850|      2|    return _PyStatus_OK();
  ------------------
  |  |   24|      2|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 2851|      2|}
initconfig.c:config_get_env:
 1742|     19|{
 1743|     19|    return _Py_GetEnv(config->use_environment, name);
 1744|     19|}
initconfig.c:config_get_xoption_value:
 1884|      5|{
 1885|      5|    const wchar_t *xoption = config_get_xoption(config, name);
 1886|      5|    if (xoption == NULL) {
  ------------------
  |  Branch (1886:9): [True: 5, False: 0]
  ------------------
 1887|      5|        return NULL;
 1888|      5|    }
 1889|      0|    const wchar_t *sep = wcschr(xoption, L'=');
 1890|      0|    return sep ? sep + 1 : L"";
  ------------------
  |  Branch (1890:12): [True: 0, False: 0]
  ------------------
 1891|      5|}
initconfig.c:config_get_xoption:
 1878|     17|{
 1879|     17|    return _Py_get_xoption(&config->xoptions, name);
 1880|     17|}
initconfig.c:config_set_global_vars:
 1835|      1|{
 1836|      1|_Py_COMP_DIAG_PUSH
 1837|      1|_Py_COMP_DIAG_IGNORE_DEPR_DECLS
 1838|      1|#define COPY_FLAG(ATTR, VAR) \
 1839|      1|        if (config->ATTR != -1) { \
 1840|      1|            VAR = config->ATTR; \
 1841|      1|        }
 1842|      1|#define COPY_NOT_FLAG(ATTR, VAR) \
 1843|      1|        if (config->ATTR != -1) { \
 1844|      1|            VAR = !config->ATTR; \
 1845|      1|        }
 1846|       |
 1847|      1|    COPY_FLAG(isolated, Py_IsolatedFlag);
  ------------------
  |  | 1839|      1|        if (config->ATTR != -1) { \
  |  |  ------------------
  |  |  |  Branch (1839:13): [True: 1, False: 0]
  |  |  ------------------
  |  | 1840|      1|            VAR = config->ATTR; \
  |  | 1841|      1|        }
  ------------------
 1848|      1|    COPY_NOT_FLAG(use_environment, Py_IgnoreEnvironmentFlag);
  ------------------
  |  | 1843|      1|        if (config->ATTR != -1) { \
  |  |  ------------------
  |  |  |  Branch (1843:13): [True: 1, False: 0]
  |  |  ------------------
  |  | 1844|      1|            VAR = !config->ATTR; \
  |  | 1845|      1|        }
  ------------------
 1849|      1|    COPY_FLAG(bytes_warning, Py_BytesWarningFlag);
  ------------------
  |  | 1839|      1|        if (config->ATTR != -1) { \
  |  |  ------------------
  |  |  |  Branch (1839:13): [True: 1, False: 0]
  |  |  ------------------
  |  | 1840|      1|            VAR = config->ATTR; \
  |  | 1841|      1|        }
  ------------------
 1850|      1|    COPY_FLAG(inspect, Py_InspectFlag);
  ------------------
  |  | 1839|      1|        if (config->ATTR != -1) { \
  |  |  ------------------
  |  |  |  Branch (1839:13): [True: 1, False: 0]
  |  |  ------------------
  |  | 1840|      1|            VAR = config->ATTR; \
  |  | 1841|      1|        }
  ------------------
 1851|      1|    COPY_FLAG(interactive, Py_InteractiveFlag);
  ------------------
  |  | 1839|      1|        if (config->ATTR != -1) { \
  |  |  ------------------
  |  |  |  Branch (1839:13): [True: 1, False: 0]
  |  |  ------------------
  |  | 1840|      1|            VAR = config->ATTR; \
  |  | 1841|      1|        }
  ------------------
 1852|      1|    COPY_FLAG(optimization_level, Py_OptimizeFlag);
  ------------------
  |  | 1839|      1|        if (config->ATTR != -1) { \
  |  |  ------------------
  |  |  |  Branch (1839:13): [True: 1, False: 0]
  |  |  ------------------
  |  | 1840|      1|            VAR = config->ATTR; \
  |  | 1841|      1|        }
  ------------------
 1853|      1|    COPY_FLAG(parser_debug, Py_DebugFlag);
  ------------------
  |  | 1839|      1|        if (config->ATTR != -1) { \
  |  |  ------------------
  |  |  |  Branch (1839:13): [True: 1, False: 0]
  |  |  ------------------
  |  | 1840|      1|            VAR = config->ATTR; \
  |  | 1841|      1|        }
  ------------------
 1854|      1|    COPY_FLAG(verbose, Py_VerboseFlag);
  ------------------
  |  | 1839|      1|        if (config->ATTR != -1) { \
  |  |  ------------------
  |  |  |  Branch (1839:13): [True: 1, False: 0]
  |  |  ------------------
  |  | 1840|      1|            VAR = config->ATTR; \
  |  | 1841|      1|        }
  ------------------
 1855|      1|    COPY_FLAG(quiet, Py_QuietFlag);
  ------------------
  |  | 1839|      1|        if (config->ATTR != -1) { \
  |  |  ------------------
  |  |  |  Branch (1839:13): [True: 1, False: 0]
  |  |  ------------------
  |  | 1840|      1|            VAR = config->ATTR; \
  |  | 1841|      1|        }
  ------------------
 1856|       |#ifdef MS_WINDOWS
 1857|       |    COPY_FLAG(legacy_windows_stdio, Py_LegacyWindowsStdioFlag);
 1858|       |#endif
 1859|      1|    COPY_NOT_FLAG(pathconfig_warnings, Py_FrozenFlag);
  ------------------
  |  | 1843|      1|        if (config->ATTR != -1) { \
  |  |  ------------------
  |  |  |  Branch (1843:13): [True: 1, False: 0]
  |  |  ------------------
  |  | 1844|      1|            VAR = !config->ATTR; \
  |  | 1845|      1|        }
  ------------------
 1860|       |
 1861|      1|    COPY_NOT_FLAG(buffered_stdio, Py_UnbufferedStdioFlag);
  ------------------
  |  | 1843|      1|        if (config->ATTR != -1) { \
  |  |  ------------------
  |  |  |  Branch (1843:13): [True: 1, False: 0]
  |  |  ------------------
  |  | 1844|      1|            VAR = !config->ATTR; \
  |  | 1845|      1|        }
  ------------------
 1862|      1|    COPY_NOT_FLAG(site_import, Py_NoSiteFlag);
  ------------------
  |  | 1843|      1|        if (config->ATTR != -1) { \
  |  |  ------------------
  |  |  |  Branch (1843:13): [True: 1, False: 0]
  |  |  ------------------
  |  | 1844|      1|            VAR = !config->ATTR; \
  |  | 1845|      1|        }
  ------------------
 1863|      1|    COPY_NOT_FLAG(write_bytecode, Py_DontWriteBytecodeFlag);
  ------------------
  |  | 1843|      1|        if (config->ATTR != -1) { \
  |  |  ------------------
  |  |  |  Branch (1843:13): [True: 1, False: 0]
  |  |  ------------------
  |  | 1844|      1|            VAR = !config->ATTR; \
  |  | 1845|      1|        }
  ------------------
 1864|      1|    COPY_NOT_FLAG(user_site_directory, Py_NoUserSiteDirectory);
  ------------------
  |  | 1843|      1|        if (config->ATTR != -1) { \
  |  |  ------------------
  |  |  |  Branch (1843:13): [True: 1, False: 0]
  |  |  ------------------
  |  | 1844|      1|            VAR = !config->ATTR; \
  |  | 1845|      1|        }
  ------------------
 1865|       |
 1866|       |    /* Random or non-zero hash seed */
 1867|      1|    Py_HashRandomizationFlag = (config->use_hash_seed == 0 ||
  ------------------
  |  Branch (1867:33): [True: 1, False: 0]
  ------------------
 1868|      0|                                config->hash_seed != 0);
  ------------------
  |  Branch (1868:33): [True: 0, False: 0]
  ------------------
 1869|       |
 1870|      1|#undef COPY_FLAG
 1871|      1|#undef COPY_NOT_FLAG
 1872|      1|_Py_COMP_DIAG_POP
 1873|      1|}
initconfig.c:config_init_stdio:
 2980|      1|{
 2981|       |#if defined(MS_WINDOWS) || defined(__CYGWIN__)
 2982|       |    /* don't translate newlines (\r\n <=> \n) */
 2983|       |    _setmode(fileno(stdin), O_BINARY);
 2984|       |    _setmode(fileno(stdout), O_BINARY);
 2985|       |    _setmode(fileno(stderr), O_BINARY);
 2986|       |#endif
 2987|       |
 2988|      1|    if (!config->buffered_stdio) {
  ------------------
  |  Branch (2988:9): [True: 0, False: 1]
  ------------------
 2989|      0|#ifdef HAVE_SETVBUF
 2990|      0|        setvbuf(stdin,  (char *)NULL, _IONBF, BUFSIZ);
 2991|      0|        setvbuf(stdout, (char *)NULL, _IONBF, BUFSIZ);
 2992|      0|        setvbuf(stderr, (char *)NULL, _IONBF, BUFSIZ);
 2993|       |#else /* !HAVE_SETVBUF */
 2994|       |        setbuf(stdin,  (char *)NULL);
 2995|       |        setbuf(stdout, (char *)NULL);
 2996|       |        setbuf(stderr, (char *)NULL);
 2997|       |#endif /* !HAVE_SETVBUF */
 2998|      0|    }
 2999|      1|    else if (config->interactive) {
  ------------------
  |  Branch (2999:14): [True: 0, False: 1]
  ------------------
 3000|       |#ifdef MS_WINDOWS
 3001|       |        /* Doesn't have to have line-buffered -- use unbuffered */
 3002|       |        /* Any set[v]buf(stdin, ...) screws up Tkinter :-( */
 3003|       |        setvbuf(stdout, (char *)NULL, _IONBF, BUFSIZ);
 3004|       |#else /* !MS_WINDOWS */
 3005|      0|#ifdef HAVE_SETVBUF
 3006|      0|        setvbuf(stdin,  (char *)NULL, _IOLBF, BUFSIZ);
 3007|      0|        setvbuf(stdout, (char *)NULL, _IOLBF, BUFSIZ);
 3008|      0|#endif /* HAVE_SETVBUF */
 3009|      0|#endif /* !MS_WINDOWS */
 3010|       |        /* Leave stderr alone - it should be unbuffered anyway. */
 3011|      0|    }
 3012|      1|}
initconfig.c:_Py_SetArgcArgv:
  987|      1|{
  988|      1|    const PyWideStringList argv_list = {.length = argc, .items = (wchar_t **)argv};
  989|       |
  990|       |    // XXX _PyRuntime.orig_argv only gets cleared by Py_Main(),
  991|       |    // so it currently leaks for embedders.
  992|       |    return _PyWideStringList_CopyEx(&_PyRuntime.orig_argv, &argv_list, true);
  993|      1|}
initconfig.c:config_get_global_vars:
 1790|      1|{
 1791|      1|_Py_COMP_DIAG_PUSH
 1792|      1|_Py_COMP_DIAG_IGNORE_DEPR_DECLS
 1793|      1|    if (config->_config_init != _PyConfig_INIT_COMPAT) {
  ------------------
  |  Branch (1793:9): [True: 1, False: 0]
  ------------------
 1794|       |        /* Python and Isolated configuration ignore global variables */
 1795|      1|        return;
 1796|      1|    }
 1797|       |
 1798|      0|#define COPY_FLAG(ATTR, VALUE) \
 1799|      0|        if (config->ATTR == -1) { \
 1800|      0|            config->ATTR = VALUE; \
 1801|      0|        }
 1802|      0|#define COPY_NOT_FLAG(ATTR, VALUE) \
 1803|      0|        if (config->ATTR == -1) { \
 1804|      0|            config->ATTR = !(VALUE); \
 1805|      0|        }
 1806|       |
 1807|      0|    COPY_FLAG(isolated, Py_IsolatedFlag);
  ------------------
  |  | 1799|      0|        if (config->ATTR == -1) { \
  |  |  ------------------
  |  |  |  Branch (1799:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1800|      0|            config->ATTR = VALUE; \
  |  | 1801|      0|        }
  ------------------
 1808|      0|    COPY_NOT_FLAG(use_environment, Py_IgnoreEnvironmentFlag);
  ------------------
  |  | 1803|      0|        if (config->ATTR == -1) { \
  |  |  ------------------
  |  |  |  Branch (1803:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1804|      0|            config->ATTR = !(VALUE); \
  |  | 1805|      0|        }
  ------------------
 1809|      0|    COPY_FLAG(bytes_warning, Py_BytesWarningFlag);
  ------------------
  |  | 1799|      0|        if (config->ATTR == -1) { \
  |  |  ------------------
  |  |  |  Branch (1799:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1800|      0|            config->ATTR = VALUE; \
  |  | 1801|      0|        }
  ------------------
 1810|      0|    COPY_FLAG(inspect, Py_InspectFlag);
  ------------------
  |  | 1799|      0|        if (config->ATTR == -1) { \
  |  |  ------------------
  |  |  |  Branch (1799:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1800|      0|            config->ATTR = VALUE; \
  |  | 1801|      0|        }
  ------------------
 1811|      0|    COPY_FLAG(interactive, Py_InteractiveFlag);
  ------------------
  |  | 1799|      0|        if (config->ATTR == -1) { \
  |  |  ------------------
  |  |  |  Branch (1799:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1800|      0|            config->ATTR = VALUE; \
  |  | 1801|      0|        }
  ------------------
 1812|      0|    COPY_FLAG(optimization_level, Py_OptimizeFlag);
  ------------------
  |  | 1799|      0|        if (config->ATTR == -1) { \
  |  |  ------------------
  |  |  |  Branch (1799:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1800|      0|            config->ATTR = VALUE; \
  |  | 1801|      0|        }
  ------------------
 1813|      0|    COPY_FLAG(parser_debug, Py_DebugFlag);
  ------------------
  |  | 1799|      0|        if (config->ATTR == -1) { \
  |  |  ------------------
  |  |  |  Branch (1799:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1800|      0|            config->ATTR = VALUE; \
  |  | 1801|      0|        }
  ------------------
 1814|      0|    COPY_FLAG(verbose, Py_VerboseFlag);
  ------------------
  |  | 1799|      0|        if (config->ATTR == -1) { \
  |  |  ------------------
  |  |  |  Branch (1799:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1800|      0|            config->ATTR = VALUE; \
  |  | 1801|      0|        }
  ------------------
 1815|      0|    COPY_FLAG(quiet, Py_QuietFlag);
  ------------------
  |  | 1799|      0|        if (config->ATTR == -1) { \
  |  |  ------------------
  |  |  |  Branch (1799:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1800|      0|            config->ATTR = VALUE; \
  |  | 1801|      0|        }
  ------------------
 1816|       |#ifdef MS_WINDOWS
 1817|       |    COPY_FLAG(legacy_windows_stdio, Py_LegacyWindowsStdioFlag);
 1818|       |#endif
 1819|      0|    COPY_NOT_FLAG(pathconfig_warnings, Py_FrozenFlag);
  ------------------
  |  | 1803|      0|        if (config->ATTR == -1) { \
  |  |  ------------------
  |  |  |  Branch (1803:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1804|      0|            config->ATTR = !(VALUE); \
  |  | 1805|      0|        }
  ------------------
 1820|       |
 1821|      0|    COPY_NOT_FLAG(buffered_stdio, Py_UnbufferedStdioFlag);
  ------------------
  |  | 1803|      0|        if (config->ATTR == -1) { \
  |  |  ------------------
  |  |  |  Branch (1803:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1804|      0|            config->ATTR = !(VALUE); \
  |  | 1805|      0|        }
  ------------------
 1822|      0|    COPY_NOT_FLAG(site_import, Py_NoSiteFlag);
  ------------------
  |  | 1803|      0|        if (config->ATTR == -1) { \
  |  |  ------------------
  |  |  |  Branch (1803:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1804|      0|            config->ATTR = !(VALUE); \
  |  | 1805|      0|        }
  ------------------
 1823|      0|    COPY_NOT_FLAG(write_bytecode, Py_DontWriteBytecodeFlag);
  ------------------
  |  | 1803|      0|        if (config->ATTR == -1) { \
  |  |  ------------------
  |  |  |  Branch (1803:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1804|      0|            config->ATTR = !(VALUE); \
  |  | 1805|      0|        }
  ------------------
 1824|      0|    COPY_NOT_FLAG(user_site_directory, Py_NoUserSiteDirectory);
  ------------------
  |  | 1803|      0|        if (config->ATTR == -1) { \
  |  |  ------------------
  |  |  |  Branch (1803:13): [True: 0, False: 0]
  |  |  ------------------
  |  | 1804|      0|            config->ATTR = !(VALUE); \
  |  | 1805|      0|        }
  ------------------
 1825|       |
 1826|      0|#undef COPY_FLAG
 1827|      0|#undef COPY_NOT_FLAG
 1828|      0|_Py_COMP_DIAG_POP
 1829|      0|}
initconfig.c:core_read_precmdline:
 3507|      1|{
 3508|      1|    PyStatus status;
 3509|       |
 3510|      1|    if (config->parse_argv == 1) {
  ------------------
  |  Branch (3510:9): [True: 1, False: 0]
  ------------------
 3511|      1|        if (_PyWideStringList_Copy(&precmdline->argv, &config->argv) < 0) {
  ------------------
  |  Branch (3511:13): [True: 0, False: 1]
  ------------------
 3512|      0|            return _PyStatus_NO_MEMORY();
  ------------------
  |  |   33|      0|#define _PyStatus_NO_MEMORY() _PyStatus_ERR(_PyStatus_NO_MEMORY_ERRMSG)
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  ------------------
 3513|      0|        }
 3514|      1|    }
 3515|       |
 3516|      1|    PyPreConfig preconfig;
 3517|       |
 3518|      1|    status = _PyPreConfig_InitFromPreConfig(&preconfig, &_PyRuntime.preconfig);
 3519|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 3520|      0|        return status;
 3521|      0|    }
 3522|       |
 3523|      1|    _PyPreConfig_GetConfig(&preconfig, config);
 3524|       |
 3525|      1|    status = _PyPreCmdline_Read(precmdline, &preconfig);
 3526|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 3527|      0|        return status;
 3528|      0|    }
 3529|       |
 3530|      1|    status = _PyPreCmdline_SetConfig(precmdline, config);
 3531|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 3532|      0|        return status;
 3533|      0|    }
 3534|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 3535|      1|}
initconfig.c:config_read_cmdline:
 3571|      1|{
 3572|      1|    PyStatus status;
 3573|      1|    PyWideStringList cmdline_warnoptions = _PyWideStringList_INIT;
  ------------------
  |  |   53|      1|#define _PyWideStringList_INIT (PyWideStringList){.length = 0, .items = NULL}
  ------------------
 3574|      1|    PyWideStringList env_warnoptions = _PyWideStringList_INIT;
  ------------------
  |  |   53|      1|#define _PyWideStringList_INIT (PyWideStringList){.length = 0, .items = NULL}
  ------------------
 3575|      1|    PyWideStringList sys_warnoptions = _PyWideStringList_INIT;
  ------------------
  |  |   53|      1|#define _PyWideStringList_INIT (PyWideStringList){.length = 0, .items = NULL}
  ------------------
 3576|       |
 3577|      1|    if (config->parse_argv < 0) {
  ------------------
  |  Branch (3577:9): [True: 0, False: 1]
  ------------------
 3578|      0|        config->parse_argv = 1;
 3579|      0|    }
 3580|       |
 3581|      1|    if (config->parse_argv == 1) {
  ------------------
  |  Branch (3581:9): [True: 1, False: 0]
  ------------------
 3582|      1|        Py_ssize_t opt_index;
 3583|      1|        status = config_parse_cmdline(config, &cmdline_warnoptions, &opt_index);
 3584|      1|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 3585|      0|            goto done;
 3586|      0|        }
 3587|       |
 3588|      1|        status = config_run_filename_abspath(config);
 3589|      1|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 3590|      0|            goto done;
 3591|      0|        }
 3592|       |
 3593|      1|        status = config_update_argv(config, opt_index);
 3594|      1|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 3595|      0|            goto done;
 3596|      0|        }
 3597|      1|    }
 3598|      0|    else {
 3599|      0|        status = config_run_filename_abspath(config);
 3600|      0|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      0|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3601|      0|            goto done;
 3602|      0|        }
 3603|      0|    }
 3604|       |
 3605|      1|    if (config->use_environment) {
  ------------------
  |  Branch (3605:9): [True: 1, False: 0]
  ------------------
 3606|      1|        status = config_init_env_warnoptions(config, &env_warnoptions);
 3607|      1|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 3608|      0|            goto done;
 3609|      0|        }
 3610|      1|    }
 3611|       |
 3612|       |    /* Handle early PySys_AddWarnOption() calls */
 3613|      1|    status = _PySys_ReadPreinitWarnOptions(&sys_warnoptions);
 3614|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 3615|      0|        goto done;
 3616|      0|    }
 3617|       |
 3618|      1|    status = config_init_warnoptions(config,
 3619|      1|                                     &cmdline_warnoptions,
 3620|      1|                                     &env_warnoptions,
 3621|      1|                                     &sys_warnoptions);
 3622|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 3623|      0|        goto done;
 3624|      0|    }
 3625|       |
 3626|      1|    status = _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 3627|       |
 3628|      1|done:
 3629|      1|    _PyWideStringList_Clear(&cmdline_warnoptions);
 3630|      1|    _PyWideStringList_Clear(&env_warnoptions);
 3631|      1|    _PyWideStringList_Clear(&sys_warnoptions);
 3632|      1|    return status;
 3633|      1|}
initconfig.c:config_parse_cmdline:
 3094|      1|{
 3095|      1|    PyStatus status;
 3096|      1|    const PyWideStringList *argv = &config->argv;
 3097|      1|    int print_version = 0;
 3098|      1|    const wchar_t* program = config->program_name;
 3099|      1|    if (!program && argv->length >= 1) {
  ------------------
  |  Branch (3099:9): [True: 0, False: 1]
  |  Branch (3099:21): [True: 0, False: 0]
  ------------------
 3100|      0|        program = argv->items[0];
 3101|      0|    }
 3102|       |
 3103|      1|    _PyOS_ResetGetOpt();
 3104|      1|    do {
 3105|      1|        int longindex = -1;
 3106|      1|        int c = _PyOS_GetOpt(argv->length, argv->items, &longindex);
 3107|      1|        if (c == EOF) {
  ------------------
  |  Branch (3107:13): [True: 1, False: 0]
  ------------------
 3108|      1|            break;
 3109|      1|        }
 3110|       |
 3111|      0|        if (c == 'c') {
  ------------------
  |  Branch (3111:13): [True: 0, False: 0]
  ------------------
 3112|      0|            if (config->run_command == NULL) {
  ------------------
  |  Branch (3112:17): [True: 0, False: 0]
  ------------------
 3113|       |                /* -c is the last option; following arguments
 3114|       |                   that look like options are left for the
 3115|       |                   command to interpret. */
 3116|      0|                size_t len = wcslen(_PyOS_optarg) + 1 + 1;
 3117|      0|                wchar_t *command = PyMem_RawMalloc(sizeof(wchar_t) * len);
 3118|      0|                if (command == NULL) {
  ------------------
  |  Branch (3118:21): [True: 0, False: 0]
  ------------------
 3119|      0|                    return _PyStatus_NO_MEMORY();
  ------------------
  |  |   33|      0|#define _PyStatus_NO_MEMORY() _PyStatus_ERR(_PyStatus_NO_MEMORY_ERRMSG)
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  ------------------
 3120|      0|                }
 3121|      0|                memcpy(command, _PyOS_optarg, (len - 2) * sizeof(wchar_t));
 3122|      0|                command[len - 2] = '\n';
 3123|      0|                command[len - 1] = 0;
 3124|      0|                config->run_command = command;
 3125|      0|            }
 3126|      0|            break;
 3127|      0|        }
 3128|       |
 3129|      0|        if (c == 'm') {
  ------------------
  |  Branch (3129:13): [True: 0, False: 0]
  ------------------
 3130|       |            /* -m is the last option; following arguments
 3131|       |               that look like options are left for the
 3132|       |               module to interpret. */
 3133|      0|            if (config->run_module == NULL) {
  ------------------
  |  Branch (3133:17): [True: 0, False: 0]
  ------------------
 3134|      0|                config->run_module = _PyMem_RawWcsdup(_PyOS_optarg);
 3135|      0|                if (config->run_module == NULL) {
  ------------------
  |  Branch (3135:21): [True: 0, False: 0]
  ------------------
 3136|      0|                    return _PyStatus_NO_MEMORY();
  ------------------
  |  |   33|      0|#define _PyStatus_NO_MEMORY() _PyStatus_ERR(_PyStatus_NO_MEMORY_ERRMSG)
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  ------------------
 3137|      0|                }
 3138|      0|            }
 3139|      0|            break;
 3140|      0|        }
 3141|       |
 3142|      0|        switch (c) {
 3143|       |        // Integers represent long options, see Python/getopt.c
 3144|      0|        case 0:
  ------------------
  |  Branch (3144:9): [True: 0, False: 0]
  ------------------
 3145|       |            // check-hash-based-pycs
 3146|      0|            if (wcscmp(_PyOS_optarg, L"always") == 0
  ------------------
  |  Branch (3146:17): [True: 0, False: 0]
  ------------------
 3147|      0|                || wcscmp(_PyOS_optarg, L"never") == 0
  ------------------
  |  Branch (3147:20): [True: 0, False: 0]
  ------------------
 3148|      0|                || wcscmp(_PyOS_optarg, L"default") == 0)
  ------------------
  |  Branch (3148:20): [True: 0, False: 0]
  ------------------
 3149|      0|            {
 3150|      0|                status = PyConfig_SetString(config, &config->check_hash_pycs_mode,
 3151|      0|                                            _PyOS_optarg);
 3152|      0|                if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      0|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3153|      0|                    return status;
 3154|      0|                }
 3155|      0|            } else {
 3156|      0|                fprintf(stderr, "--check-hash-based-pycs must be one of "
 3157|      0|                        "'default', 'always', or 'never'\n");
 3158|      0|                config_usage(1, program);
 3159|      0|                return _PyStatus_EXIT(2);
  ------------------
  |  |   35|      0|    (PyStatus){ \
  |  |   36|      0|        ._type = _PyStatus_TYPE_EXIT, \
  |  |   37|      0|        .exitcode = (EXITCODE)}
  ------------------
 3160|      0|            }
 3161|      0|            break;
 3162|       |
 3163|      0|        case 1:
  ------------------
  |  Branch (3163:9): [True: 0, False: 0]
  ------------------
 3164|       |            // help-all
 3165|      0|            config_complete_usage(program);
 3166|      0|            return _PyStatus_EXIT(0);
  ------------------
  |  |   35|      0|    (PyStatus){ \
  |  |   36|      0|        ._type = _PyStatus_TYPE_EXIT, \
  |  |   37|      0|        .exitcode = (EXITCODE)}
  ------------------
 3167|       |
 3168|      0|        case 2:
  ------------------
  |  Branch (3168:9): [True: 0, False: 0]
  ------------------
 3169|       |            // help-env
 3170|      0|            config_envvars_usage();
 3171|      0|            return _PyStatus_EXIT(0);
  ------------------
  |  |   35|      0|    (PyStatus){ \
  |  |   36|      0|        ._type = _PyStatus_TYPE_EXIT, \
  |  |   37|      0|        .exitcode = (EXITCODE)}
  ------------------
 3172|       |
 3173|      0|        case 3:
  ------------------
  |  Branch (3173:9): [True: 0, False: 0]
  ------------------
 3174|       |            // help-xoptions
 3175|      0|            config_xoptions_usage();
 3176|      0|            return _PyStatus_EXIT(0);
  ------------------
  |  |   35|      0|    (PyStatus){ \
  |  |   36|      0|        ._type = _PyStatus_TYPE_EXIT, \
  |  |   37|      0|        .exitcode = (EXITCODE)}
  ------------------
 3177|       |
 3178|      0|        case 'b':
  ------------------
  |  Branch (3178:9): [True: 0, False: 0]
  ------------------
 3179|      0|            config->bytes_warning++;
 3180|      0|            break;
 3181|       |
 3182|      0|        case 'd':
  ------------------
  |  Branch (3182:9): [True: 0, False: 0]
  ------------------
 3183|      0|            config->parser_debug++;
 3184|      0|            break;
 3185|       |
 3186|      0|        case 'i':
  ------------------
  |  Branch (3186:9): [True: 0, False: 0]
  ------------------
 3187|      0|            config->inspect++;
 3188|      0|            config->interactive++;
 3189|      0|            break;
 3190|       |
 3191|      0|        case 'E':
  ------------------
  |  Branch (3191:9): [True: 0, False: 0]
  ------------------
 3192|      0|        case 'I':
  ------------------
  |  Branch (3192:9): [True: 0, False: 0]
  ------------------
 3193|      0|        case 'X':
  ------------------
  |  Branch (3193:9): [True: 0, False: 0]
  ------------------
 3194|       |            /* option handled by _PyPreCmdline_Read() */
 3195|      0|            break;
 3196|       |
 3197|      0|        case 'O':
  ------------------
  |  Branch (3197:9): [True: 0, False: 0]
  ------------------
 3198|      0|            config->optimization_level++;
 3199|      0|            break;
 3200|       |
 3201|      0|        case 'P':
  ------------------
  |  Branch (3201:9): [True: 0, False: 0]
  ------------------
 3202|      0|            config->safe_path = 1;
 3203|      0|            break;
 3204|       |
 3205|      0|        case 'B':
  ------------------
  |  Branch (3205:9): [True: 0, False: 0]
  ------------------
 3206|      0|            config->write_bytecode = 0;
 3207|      0|            break;
 3208|       |
 3209|      0|        case 's':
  ------------------
  |  Branch (3209:9): [True: 0, False: 0]
  ------------------
 3210|      0|            config->user_site_directory = 0;
 3211|      0|            break;
 3212|       |
 3213|      0|        case 'S':
  ------------------
  |  Branch (3213:9): [True: 0, False: 0]
  ------------------
 3214|      0|            config->site_import = 0;
 3215|      0|            break;
 3216|       |
 3217|      0|        case 't':
  ------------------
  |  Branch (3217:9): [True: 0, False: 0]
  ------------------
 3218|       |            /* ignored for backwards compatibility */
 3219|      0|            break;
 3220|       |
 3221|      0|        case 'u':
  ------------------
  |  Branch (3221:9): [True: 0, False: 0]
  ------------------
 3222|      0|            config->buffered_stdio = 0;
 3223|      0|            break;
 3224|       |
 3225|      0|        case 'v':
  ------------------
  |  Branch (3225:9): [True: 0, False: 0]
  ------------------
 3226|      0|            config->verbose++;
 3227|      0|            break;
 3228|       |
 3229|      0|        case 'x':
  ------------------
  |  Branch (3229:9): [True: 0, False: 0]
  ------------------
 3230|      0|            config->skip_source_first_line = 1;
 3231|      0|            break;
 3232|       |
 3233|      0|        case 'h':
  ------------------
  |  Branch (3233:9): [True: 0, False: 0]
  ------------------
 3234|      0|        case '?':
  ------------------
  |  Branch (3234:9): [True: 0, False: 0]
  ------------------
 3235|      0|            config_usage(0, program);
 3236|      0|            return _PyStatus_EXIT(0);
  ------------------
  |  |   35|      0|    (PyStatus){ \
  |  |   36|      0|        ._type = _PyStatus_TYPE_EXIT, \
  |  |   37|      0|        .exitcode = (EXITCODE)}
  ------------------
 3237|       |
 3238|      0|        case 'V':
  ------------------
  |  Branch (3238:9): [True: 0, False: 0]
  ------------------
 3239|      0|            print_version++;
 3240|      0|            break;
 3241|       |
 3242|      0|        case 'W':
  ------------------
  |  Branch (3242:9): [True: 0, False: 0]
  ------------------
 3243|      0|            status = PyWideStringList_Append(warnoptions, _PyOS_optarg);
 3244|      0|            if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      0|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3245|      0|                return status;
 3246|      0|            }
 3247|      0|            break;
 3248|       |
 3249|      0|        case 'q':
  ------------------
  |  Branch (3249:9): [True: 0, False: 0]
  ------------------
 3250|      0|            config->quiet++;
 3251|      0|            break;
 3252|       |
 3253|      0|        case 'R':
  ------------------
  |  Branch (3253:9): [True: 0, False: 0]
  ------------------
 3254|      0|            config->use_hash_seed = 0;
 3255|      0|            break;
 3256|       |
 3257|       |        /* This space reserved for other options */
 3258|       |
 3259|      0|        default:
  ------------------
  |  Branch (3259:9): [True: 0, False: 0]
  ------------------
 3260|       |            /* unknown argument: parsing failed */
 3261|      0|            config_usage(1, program);
 3262|      0|            return _PyStatus_EXIT(2);
  ------------------
  |  |   35|      0|    (PyStatus){ \
  |  |   36|      0|        ._type = _PyStatus_TYPE_EXIT, \
  |  |   37|      0|        .exitcode = (EXITCODE)}
  ------------------
 3263|      0|        }
 3264|      0|    } while (1);
  ------------------
  |  Branch (3264:14): [True: 0, Folded]
  ------------------
 3265|       |
 3266|      1|    if (print_version) {
  ------------------
  |  Branch (3266:9): [True: 0, False: 1]
  ------------------
 3267|      0|        printf("Python %s\n",
 3268|      0|                (print_version >= 2) ? Py_GetVersion() : PY_VERSION);
  ------------------
  |  |   30|      0|#define PY_VERSION              "3.16.0a0"
  ------------------
  |  Branch (3268:17): [True: 0, False: 0]
  ------------------
 3269|      0|        return _PyStatus_EXIT(0);
  ------------------
  |  |   35|      0|    (PyStatus){ \
  |  |   36|      0|        ._type = _PyStatus_TYPE_EXIT, \
  |  |   37|      0|        .exitcode = (EXITCODE)}
  ------------------
 3270|      0|    }
 3271|       |
 3272|      1|    if (config->run_command == NULL && config->run_module == NULL
  ------------------
  |  Branch (3272:9): [True: 1, False: 0]
  |  Branch (3272:40): [True: 1, False: 0]
  ------------------
 3273|      1|        && _PyOS_optind < argv->length
  ------------------
  |  Branch (3273:12): [True: 0, False: 1]
  ------------------
 3274|      0|        && wcscmp(argv->items[_PyOS_optind], L"-") != 0
  ------------------
  |  Branch (3274:12): [True: 0, False: 0]
  ------------------
 3275|      0|        && config->run_filename == NULL)
  ------------------
  |  Branch (3275:12): [True: 0, False: 0]
  ------------------
 3276|      0|    {
 3277|      0|        config->run_filename = _PyMem_RawWcsdup(argv->items[_PyOS_optind]);
 3278|      0|        if (config->run_filename == NULL) {
  ------------------
  |  Branch (3278:13): [True: 0, False: 0]
  ------------------
 3279|      0|            return _PyStatus_NO_MEMORY();
  ------------------
  |  |   33|      0|#define _PyStatus_NO_MEMORY() _PyStatus_ERR(_PyStatus_NO_MEMORY_ERRMSG)
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  ------------------
 3280|      0|        }
 3281|      0|    }
 3282|       |
 3283|      1|    if (config->run_command != NULL || config->run_module != NULL) {
  ------------------
  |  Branch (3283:9): [True: 0, False: 1]
  |  Branch (3283:40): [True: 0, False: 1]
  ------------------
 3284|       |        /* Backup _PyOS_optind */
 3285|      0|        _PyOS_optind--;
 3286|      0|    }
 3287|       |
 3288|      1|    *opt_index = _PyOS_optind;
 3289|       |
 3290|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 3291|      1|}
initconfig.c:config_run_filename_abspath:
 3541|      1|{
 3542|      1|    if (!config->run_filename) {
  ------------------
  |  Branch (3542:9): [True: 1, False: 0]
  ------------------
 3543|      1|        return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 3544|      1|    }
 3545|       |
 3546|      0|#ifndef MS_WINDOWS
 3547|      0|    if (_Py_isabs(config->run_filename)) {
  ------------------
  |  Branch (3547:9): [True: 0, False: 0]
  ------------------
 3548|       |        /* path is already absolute */
 3549|      0|        return _PyStatus_OK();
  ------------------
  |  |   24|      0|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 3550|      0|    }
 3551|      0|#endif
 3552|       |
 3553|      0|    wchar_t *abs_filename;
 3554|      0|    if (_Py_abspath(config->run_filename, &abs_filename) < 0) {
  ------------------
  |  Branch (3554:9): [True: 0, False: 0]
  ------------------
 3555|       |        /* failed to get the absolute path of the command line filename:
 3556|       |           ignore the error, keep the relative path */
 3557|      0|        return _PyStatus_OK();
  ------------------
  |  |   24|      0|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 3558|      0|    }
 3559|      0|    if (abs_filename == NULL) {
  ------------------
  |  Branch (3559:9): [True: 0, False: 0]
  ------------------
 3560|      0|        return _PyStatus_NO_MEMORY();
  ------------------
  |  |   33|      0|#define _PyStatus_NO_MEMORY() _PyStatus_ERR(_PyStatus_NO_MEMORY_ERRMSG)
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  ------------------
 3561|      0|    }
 3562|       |
 3563|      0|    PyMem_RawFree(config->run_filename);
 3564|      0|    config->run_filename = abs_filename;
 3565|      0|    return _PyStatus_OK();
  ------------------
  |  |   24|      0|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 3566|      0|}
initconfig.c:config_update_argv:
 3456|      1|{
 3457|      1|    const PyWideStringList *cmdline_argv = &config->argv;
 3458|      1|    PyWideStringList config_argv = _PyWideStringList_INIT;
  ------------------
  |  |   53|      1|#define _PyWideStringList_INIT (PyWideStringList){.length = 0, .items = NULL}
  ------------------
 3459|       |
 3460|       |    /* Copy argv to be able to modify it (to force -c/-m) */
 3461|      1|    if (cmdline_argv->length <= opt_index) {
  ------------------
  |  Branch (3461:9): [True: 1, False: 0]
  ------------------
 3462|       |        /* Ensure at least one (empty) argument is seen */
 3463|      1|        PyStatus status = PyWideStringList_Append(&config_argv, L"");
 3464|      1|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 3465|      0|            return status;
 3466|      0|        }
 3467|      1|    }
 3468|      0|    else {
 3469|      0|        PyWideStringList slice;
 3470|      0|        slice.length = cmdline_argv->length - opt_index;
 3471|      0|        slice.items = &cmdline_argv->items[opt_index];
 3472|      0|        if (_PyWideStringList_Copy(&config_argv, &slice) < 0) {
  ------------------
  |  Branch (3472:13): [True: 0, False: 0]
  ------------------
 3473|      0|            return _PyStatus_NO_MEMORY();
  ------------------
  |  |   33|      0|#define _PyStatus_NO_MEMORY() _PyStatus_ERR(_PyStatus_NO_MEMORY_ERRMSG)
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  ------------------
 3474|      0|        }
 3475|      0|    }
 3476|      1|    assert(config_argv.length >= 1);
  ------------------
  |  Branch (3476:5): [True: 1, False: 0]
  ------------------
 3477|       |
 3478|      1|    wchar_t *arg0 = NULL;
 3479|      1|    if (config->run_command != NULL) {
  ------------------
  |  Branch (3479:9): [True: 0, False: 1]
  ------------------
 3480|       |        /* Force sys.argv[0] = '-c' */
 3481|      0|        arg0 = L"-c";
 3482|      0|    }
 3483|      1|    else if (config->run_module != NULL) {
  ------------------
  |  Branch (3483:14): [True: 0, False: 1]
  ------------------
 3484|       |        /* Force sys.argv[0] = '-m'*/
 3485|      0|        arg0 = L"-m";
 3486|      0|    }
 3487|       |
 3488|      1|    if (arg0 != NULL) {
  ------------------
  |  Branch (3488:9): [True: 0, False: 1]
  ------------------
 3489|      0|        arg0 = _PyMem_RawWcsdup(arg0);
 3490|      0|        if (arg0 == NULL) {
  ------------------
  |  Branch (3490:13): [True: 0, False: 0]
  ------------------
 3491|      0|            _PyWideStringList_Clear(&config_argv);
 3492|      0|            return _PyStatus_NO_MEMORY();
  ------------------
  |  |   33|      0|#define _PyStatus_NO_MEMORY() _PyStatus_ERR(_PyStatus_NO_MEMORY_ERRMSG)
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  ------------------
 3493|      0|        }
 3494|       |
 3495|      0|        PyMem_RawFree(config_argv.items[0]);
 3496|      0|        config_argv.items[0] = arg0;
 3497|      0|    }
 3498|       |
 3499|      1|    _PyWideStringList_Clear(&config->argv);
 3500|      1|    config->argv = config_argv;
 3501|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 3502|      1|}
initconfig.c:config_init_env_warnoptions:
 3303|      1|{
 3304|      1|    PyStatus status;
 3305|       |    /* CONFIG_GET_ENV_DUP requires dest to be initialized to NULL */
 3306|      1|    wchar_t *env = NULL;
 3307|      1|    status = CONFIG_GET_ENV_DUP(config, &env,
  ------------------
  |  | 1785|      1|    config_get_env_dup(CONFIG, DEST, WNAME, NAME, "cannot decode " NAME)
  ------------------
 3308|      1|                             L"PYTHONWARNINGS", "PYTHONWARNINGS");
 3309|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 3310|      0|        return status;
 3311|      0|    }
 3312|       |
 3313|       |    /* env var is not set or is empty */
 3314|      1|    if (env == NULL) {
  ------------------
  |  Branch (3314:9): [True: 1, False: 0]
  ------------------
 3315|      1|        return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 3316|      1|    }
 3317|       |
 3318|       |
 3319|      0|    wchar_t *warning, *context = NULL;
 3320|      0|    for (warning = WCSTOK(env, L",", &context);
  ------------------
  |  | 3297|      0|#  define WCSTOK wcstok
  ------------------
 3321|      0|         warning != NULL;
  ------------------
  |  Branch (3321:10): [True: 0, False: 0]
  ------------------
 3322|      0|         warning = WCSTOK(NULL, L",", &context))
  ------------------
  |  | 3297|      0|#  define WCSTOK wcstok
  ------------------
 3323|      0|    {
 3324|      0|        status = PyWideStringList_Append(warnoptions, warning);
 3325|      0|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      0|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3326|      0|            PyMem_RawFree(env);
 3327|      0|            return status;
 3328|      0|        }
 3329|      0|    }
 3330|      0|    PyMem_RawFree(env);
 3331|      0|    return _PyStatus_OK();
  ------------------
  |  |   24|      0|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 3332|      0|}
initconfig.c:config_get_env_dup:
 1755|      5|{
 1756|      5|    assert(*dest == NULL);
  ------------------
  |  Branch (1756:5): [True: 5, False: 0]
  ------------------
 1757|      5|    assert(config->use_environment >= 0);
  ------------------
  |  Branch (1757:5): [True: 5, False: 0]
  ------------------
 1758|       |
 1759|      5|    if (!config->use_environment) {
  ------------------
  |  Branch (1759:9): [True: 0, False: 5]
  ------------------
 1760|      0|        *dest = NULL;
 1761|      0|        return _PyStatus_OK();
  ------------------
  |  |   24|      0|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 1762|      0|    }
 1763|       |
 1764|       |#ifdef MS_WINDOWS
 1765|       |    const wchar_t *var = _wgetenv(wname);
 1766|       |    if (!var || var[0] == '\0') {
 1767|       |        *dest = NULL;
 1768|       |        return _PyStatus_OK();
 1769|       |    }
 1770|       |
 1771|       |    return PyConfig_SetString(config, dest, var);
 1772|       |#else
 1773|      5|    const char *var = getenv(name);
 1774|      5|    if (!var || var[0] == '\0') {
  ------------------
  |  Branch (1774:9): [True: 5, False: 0]
  |  Branch (1774:17): [True: 0, False: 0]
  ------------------
 1775|      5|        *dest = NULL;
 1776|      5|        return _PyStatus_OK();
  ------------------
  |  |   24|      5|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 1777|      5|    }
 1778|       |
 1779|      0|    return config_set_bytes_string(config, dest, var, decode_err_msg);
 1780|      5|#endif
 1781|      5|}
initconfig.c:config_init_warnoptions:
 3377|      1|{
 3378|      1|    PyStatus status;
 3379|      1|    PyWideStringList options = _PyWideStringList_INIT;
  ------------------
  |  |   53|      1|#define _PyWideStringList_INIT (PyWideStringList){.length = 0, .items = NULL}
  ------------------
 3380|       |
 3381|       |    /* Priority of warnings options, lowest to highest:
 3382|       |     *
 3383|       |     * - any implicit filters added by _warnings.c/warnings.py
 3384|       |     * - PyConfig.dev_mode: "default" filter
 3385|       |     * - PYTHONWARNINGS environment variable
 3386|       |     * - '-W' command line options
 3387|       |     * - PyConfig.bytes_warning ('-b' and '-bb' command line options):
 3388|       |     *   "default::BytesWarning" or "error::BytesWarning" filter
 3389|       |     * - early PySys_AddWarnOption() calls
 3390|       |     * - PyConfig.warnoptions
 3391|       |     *
 3392|       |     * PyConfig.warnoptions is copied to sys.warnoptions. Since the warnings
 3393|       |     * module works on the basis of "the most recently added filter will be
 3394|       |     * checked first", we add the lowest precedence entries first so that later
 3395|       |     * entries override them.
 3396|       |     */
 3397|       |
 3398|      1|    if (config->dev_mode) {
  ------------------
  |  Branch (3398:9): [True: 0, False: 1]
  ------------------
 3399|      0|        status = warnoptions_append(config, &options, L"default");
 3400|      0|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      0|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3401|      0|            goto error;
 3402|      0|        }
 3403|      0|    }
 3404|       |
 3405|      1|    status = warnoptions_extend(config, &options, env_warnoptions);
 3406|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 3407|      0|        goto error;
 3408|      0|    }
 3409|       |
 3410|      1|    status = warnoptions_extend(config, &options, cmdline_warnoptions);
 3411|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 3412|      0|        goto error;
 3413|      0|    }
 3414|       |
 3415|       |    /* If the bytes_warning_flag isn't set, bytesobject.c and bytearrayobject.c
 3416|       |     * don't even try to emit a warning, so we skip setting the filter in that
 3417|       |     * case.
 3418|       |     */
 3419|      1|    if (config->bytes_warning) {
  ------------------
  |  Branch (3419:9): [True: 0, False: 1]
  ------------------
 3420|      0|        const wchar_t *filter;
 3421|      0|        if (config->bytes_warning> 1) {
  ------------------
  |  Branch (3421:13): [True: 0, False: 0]
  ------------------
 3422|      0|            filter = L"error::BytesWarning";
 3423|      0|        }
 3424|      0|        else {
 3425|      0|            filter = L"default::BytesWarning";
 3426|      0|        }
 3427|      0|        status = warnoptions_append(config, &options, filter);
 3428|      0|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      0|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3429|      0|            goto error;
 3430|      0|        }
 3431|      0|    }
 3432|       |
 3433|      1|    status = warnoptions_extend(config, &options, sys_warnoptions);
 3434|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 3435|      0|        goto error;
 3436|      0|    }
 3437|       |
 3438|       |    /* Always add all PyConfig.warnoptions options */
 3439|      1|    status = _PyWideStringList_Extend(&options, &config->warnoptions);
 3440|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 3441|      0|        goto error;
 3442|      0|    }
 3443|       |
 3444|      1|    _PyWideStringList_Clear(&config->warnoptions);
 3445|      1|    config->warnoptions = options;
 3446|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 3447|       |
 3448|      0|error:
 3449|      0|    _PyWideStringList_Clear(&options);
 3450|      0|    return status;
 3451|      1|}
initconfig.c:warnoptions_extend:
 3358|      3|{
 3359|      3|    const Py_ssize_t len = options2->length;
 3360|      3|    wchar_t *const *items = options2->items;
 3361|       |
 3362|      3|    for (Py_ssize_t i = 0; i < len; i++) {
  ------------------
  |  Branch (3362:28): [True: 0, False: 3]
  ------------------
 3363|      0|        PyStatus status = warnoptions_append(config, options, items[i]);
 3364|      0|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      0|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3365|      0|            return status;
 3366|      0|        }
 3367|      0|    }
 3368|      3|    return _PyStatus_OK();
  ------------------
  |  |   24|      3|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 3369|      3|}
initconfig.c:config_read:
 2862|      1|{
 2863|      1|    PyStatus status;
 2864|      1|    const PyPreConfig *preconfig = &_PyRuntime.preconfig;
 2865|       |
 2866|      1|    if (config->use_environment) {
  ------------------
  |  Branch (2866:9): [True: 1, False: 0]
  ------------------
 2867|      1|        status = config_read_env_vars(config);
 2868|      1|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2869|      0|            return status;
 2870|      0|        }
 2871|      1|    }
 2872|       |
 2873|       |    /* -X options */
 2874|      1|    if (config_get_xoption(config, L"showrefcount")) {
  ------------------
  |  Branch (2874:9): [True: 0, False: 1]
  ------------------
 2875|      0|        config->show_ref_count = 1;
 2876|      0|    }
 2877|       |
 2878|      1|    const wchar_t *x_gil = config_get_xoption_value(config, L"gil");
 2879|      1|    if (x_gil != NULL) {
  ------------------
  |  Branch (2879:9): [True: 0, False: 1]
  ------------------
 2880|      0|        size_t len = wcslen(x_gil);
 2881|      0|        status = config_read_gil(config, len, x_gil[0]);
 2882|      0|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      0|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2883|      0|            return status;
 2884|      0|        }
 2885|      0|    }
 2886|       |
 2887|       |#ifdef Py_STATS
 2888|       |    if (config_get_xoption(config, L"pystats")) {
 2889|       |        config->_pystats = 1;
 2890|       |    }
 2891|       |    else if (config_get_env(config, "PYTHONSTATS")) {
 2892|       |        config->_pystats = 1;
 2893|       |    }
 2894|       |    if (config->_pystats < 0) {
 2895|       |        config->_pystats = 0;
 2896|       |    }
 2897|       |#endif
 2898|       |
 2899|      1|    status = config_read_complex_options(config);
 2900|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2901|      0|        return status;
 2902|      0|    }
 2903|       |
 2904|      1|    if (config->_install_importlib) {
  ------------------
  |  Branch (2904:9): [True: 1, False: 0]
  ------------------
 2905|      1|        status = config_init_import(config, compute_path_config);
 2906|      1|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2907|      0|            return status;
 2908|      0|        }
 2909|      1|    }
 2910|       |
 2911|       |    /* default values */
 2912|      1|    if (config->dev_mode) {
  ------------------
  |  Branch (2912:9): [True: 0, False: 1]
  ------------------
 2913|      0|        if (config->faulthandler < 0) {
  ------------------
  |  Branch (2913:13): [True: 0, False: 0]
  ------------------
 2914|      0|            config->faulthandler = 1;
 2915|      0|        }
 2916|      0|    }
 2917|      1|    if (config->faulthandler < 0) {
  ------------------
  |  Branch (2917:9): [True: 1, False: 0]
  ------------------
 2918|      1|        config->faulthandler = 0;
 2919|      1|    }
 2920|      1|    if (config->tracemalloc < 0) {
  ------------------
  |  Branch (2920:9): [True: 1, False: 0]
  ------------------
 2921|      1|        config->tracemalloc = 0;
 2922|      1|    }
 2923|      1|    if (config->lazy_imports < 0) {
  ------------------
  |  Branch (2923:9): [True: 1, False: 0]
  ------------------
 2924|      1|        config->lazy_imports = -1;  // Default is auto/unset
 2925|      1|    }
 2926|      1|    if (config->perf_profiling < 0) {
  ------------------
  |  Branch (2926:9): [True: 1, False: 0]
  ------------------
 2927|      1|        config->perf_profiling = 0;
 2928|      1|    }
 2929|      1|    if (config->remote_debug < 0) {
  ------------------
  |  Branch (2929:9): [True: 0, False: 1]
  ------------------
 2930|      0|        config->remote_debug = -1;
 2931|      0|    }
 2932|      1|    if (config->use_hash_seed < 0) {
  ------------------
  |  Branch (2932:9): [True: 0, False: 1]
  ------------------
 2933|      0|        config->use_hash_seed = 0;
 2934|      0|        config->hash_seed = 0;
 2935|      0|    }
 2936|       |
 2937|      1|    if (config->filesystem_encoding == NULL || config->filesystem_errors == NULL) {
  ------------------
  |  Branch (2937:9): [True: 1, False: 0]
  |  Branch (2937:48): [True: 0, False: 0]
  ------------------
 2938|      1|        status = config_init_fs_encoding(config, preconfig);
 2939|      1|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2940|      0|            return status;
 2941|      0|        }
 2942|      1|    }
 2943|       |
 2944|      1|    status = config_init_stdio_encoding(config, preconfig);
 2945|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2946|      0|        return status;
 2947|      0|    }
 2948|       |
 2949|      1|    if (config->argv.length < 1) {
  ------------------
  |  Branch (2949:9): [True: 0, False: 1]
  ------------------
 2950|       |        /* Ensure at least one (empty) argument is seen */
 2951|      0|        status = PyWideStringList_Append(&config->argv, L"");
 2952|      0|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      0|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2953|      0|            return status;
 2954|      0|        }
 2955|      0|    }
 2956|       |
 2957|      1|    if (config->check_hash_pycs_mode == NULL) {
  ------------------
  |  Branch (2957:9): [True: 1, False: 0]
  ------------------
 2958|      1|        status = PyConfig_SetString(config, &config->check_hash_pycs_mode,
 2959|      1|                                    L"default");
 2960|      1|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2961|      0|            return status;
 2962|      0|        }
 2963|      1|    }
 2964|       |
 2965|      1|    if (config->configure_c_stdio < 0) {
  ------------------
  |  Branch (2965:9): [True: 0, False: 1]
  ------------------
 2966|      0|        config->configure_c_stdio = 1;
 2967|      0|    }
 2968|       |
 2969|       |    // Only parse arguments once.
 2970|      1|    if (config->parse_argv == 1) {
  ------------------
  |  Branch (2970:9): [True: 1, False: 0]
  ------------------
 2971|      1|        config->parse_argv = 2;
 2972|      1|    }
 2973|       |
 2974|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 2975|      1|}
initconfig.c:config_read_env_vars:
 1970|      1|{
 1971|      1|    PyStatus status;
 1972|      1|    int use_env = config->use_environment;
 1973|       |
 1974|       |    /* Get environment variables */
 1975|      1|    _Py_get_env_flag(use_env, &config->parser_debug, "PYTHONDEBUG");
 1976|      1|    _Py_get_env_flag(use_env, &config->verbose, "PYTHONVERBOSE");
 1977|      1|    _Py_get_env_flag(use_env, &config->optimization_level, "PYTHONOPTIMIZE");
 1978|      1|    if (!config->inspect && _Py_GetEnv(use_env, "PYTHONINSPECT")) {
  ------------------
  |  Branch (1978:9): [True: 1, False: 0]
  |  Branch (1978:29): [True: 0, False: 1]
  ------------------
 1979|      0|        config->inspect = 1;
 1980|      0|    }
 1981|       |
 1982|      1|    int dont_write_bytecode = 0;
 1983|      1|    _Py_get_env_flag(use_env, &dont_write_bytecode, "PYTHONDONTWRITEBYTECODE");
 1984|      1|    if (dont_write_bytecode) {
  ------------------
  |  Branch (1984:9): [True: 0, False: 1]
  ------------------
 1985|      0|        config->write_bytecode = 0;
 1986|      0|    }
 1987|       |
 1988|      1|    int no_user_site_directory = 0;
 1989|      1|    _Py_get_env_flag(use_env, &no_user_site_directory, "PYTHONNOUSERSITE");
 1990|      1|    if (no_user_site_directory) {
  ------------------
  |  Branch (1990:9): [True: 0, False: 1]
  ------------------
 1991|      0|        config->user_site_directory = 0;
 1992|      0|    }
 1993|       |
 1994|      1|    int unbuffered_stdio = 0;
 1995|      1|    _Py_get_env_flag(use_env, &unbuffered_stdio, "PYTHONUNBUFFERED");
 1996|      1|    if (unbuffered_stdio) {
  ------------------
  |  Branch (1996:9): [True: 0, False: 1]
  ------------------
 1997|      0|        config->buffered_stdio = 0;
 1998|      0|    }
 1999|       |
 2000|       |#ifdef MS_WINDOWS
 2001|       |    _Py_get_env_flag(use_env, &config->legacy_windows_stdio,
 2002|       |                     "PYTHONLEGACYWINDOWSSTDIO");
 2003|       |#endif
 2004|       |
 2005|      1|    if (config_get_env(config, "PYTHONDUMPREFS")) {
  ------------------
  |  Branch (2005:9): [True: 0, False: 1]
  ------------------
 2006|      0|        config->dump_refs = 1;
 2007|      0|    }
 2008|      1|    if (config_get_env(config, "PYTHONMALLOCSTATS")) {
  ------------------
  |  Branch (2008:9): [True: 0, False: 1]
  ------------------
 2009|      0|        config->malloc_stats = 1;
 2010|      0|    }
 2011|      1|    {
 2012|      1|        const char *env = _Py_GetEnv(use_env, "PYTHON_PYMALLOC_HUGEPAGES");
 2013|      1|        if (env) {
  ------------------
  |  Branch (2013:13): [True: 0, False: 1]
  ------------------
 2014|      0|            int value;
 2015|      0|            if (_Py_str_to_int(env, &value) < 0 || value < 0) {
  ------------------
  |  Branch (2015:17): [True: 0, False: 0]
  |  Branch (2015:52): [True: 0, False: 0]
  ------------------
 2016|       |                /* PYTHON_PYMALLOC_HUGEPAGES=text or negative
 2017|       |                   behaves as PYTHON_PYMALLOC_HUGEPAGES=1 */
 2018|      0|                value = 1;
 2019|      0|            }
 2020|      0|            config->pymalloc_hugepages = (value > 0);
 2021|      0|        }
 2022|      1|    }
 2023|       |
 2024|      1|    if (config->dump_refs_file == NULL) {
  ------------------
  |  Branch (2024:9): [True: 1, False: 0]
  ------------------
 2025|      1|        status = CONFIG_GET_ENV_DUP(config, &config->dump_refs_file,
  ------------------
  |  | 1785|      1|    config_get_env_dup(CONFIG, DEST, WNAME, NAME, "cannot decode " NAME)
  ------------------
 2026|      1|                                    L"PYTHONDUMPREFSFILE", "PYTHONDUMPREFSFILE");
 2027|      1|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2028|      0|            return status;
 2029|      0|        }
 2030|      1|    }
 2031|       |
 2032|      1|    if (config->pythonpath_env == NULL) {
  ------------------
  |  Branch (2032:9): [True: 1, False: 0]
  ------------------
 2033|      1|        status = CONFIG_GET_ENV_DUP(config, &config->pythonpath_env,
  ------------------
  |  | 1785|      1|    config_get_env_dup(CONFIG, DEST, WNAME, NAME, "cannot decode " NAME)
  ------------------
 2034|      1|                                    L"PYTHONPATH", "PYTHONPATH");
 2035|      1|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2036|      0|            return status;
 2037|      0|        }
 2038|      1|    }
 2039|       |
 2040|      1|    if(config->platlibdir == NULL) {
  ------------------
  |  Branch (2040:8): [True: 1, False: 0]
  ------------------
 2041|      1|        status = CONFIG_GET_ENV_DUP(config, &config->platlibdir,
  ------------------
  |  | 1785|      1|    config_get_env_dup(CONFIG, DEST, WNAME, NAME, "cannot decode " NAME)
  ------------------
 2042|      1|                                    L"PYTHONPLATLIBDIR", "PYTHONPLATLIBDIR");
 2043|      1|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2044|      0|            return status;
 2045|      0|        }
 2046|      1|    }
 2047|       |
 2048|      1|    if (config->use_hash_seed < 0) {
  ------------------
  |  Branch (2048:9): [True: 1, False: 0]
  ------------------
 2049|      1|        status = config_init_hash_seed(config);
 2050|      1|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2051|      0|            return status;
 2052|      0|        }
 2053|      1|    }
 2054|       |
 2055|      1|    if (config_get_env(config, "PYTHONSAFEPATH")) {
  ------------------
  |  Branch (2055:9): [True: 0, False: 1]
  ------------------
 2056|      0|        config->safe_path = 1;
 2057|      0|    }
 2058|       |
 2059|      1|    const char *gil = config_get_env(config, "PYTHON_GIL");
 2060|      1|    if (gil != NULL) {
  ------------------
  |  Branch (2060:9): [True: 0, False: 1]
  ------------------
 2061|      0|        size_t len = strlen(gil);
 2062|      0|        status = config_read_gil(config, len, gil[0]);
 2063|      0|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      0|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2064|      0|            return status;
 2065|      0|        }
 2066|      0|    }
 2067|       |
 2068|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 2069|      1|}
initconfig.c:config_init_hash_seed:
 1896|      1|{
 1897|      1|    static_assert(sizeof(_Py_HashSecret_t) == sizeof(_Py_HashSecret.uc),
 1898|      1|                  "_Py_HashSecret_t has wrong size");
 1899|       |
 1900|      1|    const char *seed_text = config_get_env(config, "PYTHONHASHSEED");
 1901|       |
 1902|       |    /* Convert a text seed to a numeric one */
 1903|      1|    if (seed_text && strcmp(seed_text, "random") != 0) {
  ------------------
  |  Branch (1903:9): [True: 0, False: 1]
  |  Branch (1903:22): [True: 0, False: 0]
  ------------------
 1904|      0|        const char *endptr = seed_text;
 1905|      0|        unsigned long seed;
 1906|      0|        errno = 0;
 1907|      0|        seed = strtoul(seed_text, (char **)&endptr, 10);
 1908|      0|        if (*endptr != '\0'
  ------------------
  |  Branch (1908:13): [True: 0, False: 0]
  ------------------
 1909|      0|            || seed > MAX_HASH_SEED
  ------------------
  |  | 1007|      0|#define MAX_HASH_SEED 4294967295UL
  ------------------
  |  Branch (1909:16): [True: 0, False: 0]
  ------------------
 1910|      0|            || (errno == ERANGE && seed == ULONG_MAX))
  ------------------
  |  Branch (1910:17): [True: 0, False: 0]
  |  Branch (1910:36): [True: 0, False: 0]
  ------------------
 1911|      0|        {
 1912|      0|            return _PyStatus_ERR("PYTHONHASHSEED must be \"random\" "
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 1913|      0|                                "or an integer in range [0; 4294967295]");
 1914|      0|        }
 1915|       |        /* Use a specific hash */
 1916|      0|        config->use_hash_seed = 1;
 1917|      0|        config->hash_seed = seed;
 1918|      0|    }
 1919|      1|    else {
 1920|       |        /* Use a random hash */
 1921|      1|        config->use_hash_seed = 0;
 1922|      1|        config->hash_seed = 0;
 1923|      1|    }
 1924|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 1925|      1|}
initconfig.c:config_read_complex_options:
 2501|      1|{
 2502|       |    /* More complex options configured by env var and -X option */
 2503|      1|    if (config->faulthandler < 0) {
  ------------------
  |  Branch (2503:9): [True: 1, False: 0]
  ------------------
 2504|      1|        if (config_get_env(config, "PYTHONFAULTHANDLER")
  ------------------
  |  Branch (2504:13): [True: 0, False: 1]
  ------------------
 2505|      1|           || config_get_xoption(config, L"faulthandler")) {
  ------------------
  |  Branch (2505:15): [True: 0, False: 1]
  ------------------
 2506|      0|            config->faulthandler = 1;
 2507|      0|        }
 2508|      1|    }
 2509|      1|    if (config_get_env(config, "PYTHONNODEBUGRANGES")
  ------------------
  |  Branch (2509:9): [True: 0, False: 1]
  ------------------
 2510|      1|       || config_get_xoption(config, L"no_debug_ranges")) {
  ------------------
  |  Branch (2510:11): [True: 0, False: 1]
  ------------------
 2511|      0|        config->code_debug_ranges = 0;
 2512|      0|    }
 2513|       |
 2514|      1|    PyStatus status;
 2515|      1|    if (config->import_time < 0) {
  ------------------
  |  Branch (2515:9): [True: 1, False: 0]
  ------------------
 2516|      1|        status = config_init_import_time(config);
 2517|      1|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2518|      0|            return status;
 2519|      0|        }
 2520|      1|    }
 2521|       |
 2522|      1|    if (config->lazy_imports < 0) {
  ------------------
  |  Branch (2522:9): [True: 1, False: 0]
  ------------------
 2523|      1|        status = config_init_lazy_imports(config);
 2524|      1|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2525|      0|            return status;
 2526|      0|        }
 2527|      1|    }
 2528|       |
 2529|      1|    if (config->tracemalloc < 0) {
  ------------------
  |  Branch (2529:9): [True: 1, False: 0]
  ------------------
 2530|      1|        status = config_init_tracemalloc(config);
 2531|      1|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2532|      0|            return status;
 2533|      0|        }
 2534|      1|    }
 2535|       |
 2536|      1|    if (config->perf_profiling < 0) {
  ------------------
  |  Branch (2536:9): [True: 1, False: 0]
  ------------------
 2537|      1|        status = config_init_perf_profiling(config);
 2538|      1|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2539|      0|            return status;
 2540|      0|        }
 2541|      1|    }
 2542|       |
 2543|      1|    if (config->remote_debug < 0) {
  ------------------
  |  Branch (2543:9): [True: 1, False: 0]
  ------------------
 2544|      1|        status = config_init_remote_debug(config);
 2545|      1|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2546|      0|            return status;
 2547|      0|        }
 2548|      1|    }
 2549|       |
 2550|      1|    if (config->int_max_str_digits < 0) {
  ------------------
  |  Branch (2550:9): [True: 0, False: 1]
  ------------------
 2551|      0|        status = config_init_int_max_str_digits(config);
 2552|      0|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      0|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2553|      0|            return status;
 2554|      0|        }
 2555|      0|    }
 2556|       |
 2557|      1|    if (config->cpu_count < 0) {
  ------------------
  |  Branch (2557:9): [True: 1, False: 0]
  ------------------
 2558|      1|        status = config_init_cpu_count(config);
 2559|      1|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2560|      0|            return status;
 2561|      0|        }
 2562|      1|    }
 2563|       |
 2564|      1|    if (config->pycache_prefix == NULL) {
  ------------------
  |  Branch (2564:9): [True: 1, False: 0]
  ------------------
 2565|      1|        status = config_init_pycache_prefix(config);
 2566|      1|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2567|      0|            return status;
 2568|      0|        }
 2569|      1|    }
 2570|       |
 2571|       |#ifdef Py_DEBUG
 2572|       |    if (config->run_presite == NULL) {
 2573|       |        status = config_init_run_presite(config);
 2574|       |        if (_PyStatus_EXCEPTION(status)) {
 2575|       |            return status;
 2576|       |        }
 2577|       |    }
 2578|       |#endif
 2579|       |
 2580|      1|    status = config_init_thread_inherit_context(config);
 2581|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2582|      0|        return status;
 2583|      0|    }
 2584|       |
 2585|      1|    status = config_init_context_aware_warnings(config);
 2586|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2587|      0|        return status;
 2588|      0|    }
 2589|       |
 2590|      1|    status = config_init_tlbc(config);
 2591|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2592|      0|        return status;
 2593|      0|    }
 2594|       |
 2595|      1|    status = config_init_pathconfig_warnings(config);
 2596|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2597|      0|        return status;
 2598|      0|    }
 2599|       |
 2600|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 2601|      1|}
initconfig.c:config_init_import_time:
 2399|      1|{
 2400|      1|    int importtime = 0;
 2401|       |
 2402|      1|    const char *env = config_get_env(config, "PYTHONPROFILEIMPORTTIME");
 2403|      1|    if (env) {
  ------------------
  |  Branch (2403:9): [True: 0, False: 1]
  ------------------
 2404|      0|        if (_Py_str_to_int(env, &importtime) != 0) {
  ------------------
  |  Branch (2404:13): [True: 0, False: 0]
  ------------------
 2405|      0|            importtime = 1;
 2406|      0|        }
 2407|      0|        if (importtime < 0 || importtime > 2) {
  ------------------
  |  Branch (2407:13): [True: 0, False: 0]
  |  Branch (2407:31): [True: 0, False: 0]
  ------------------
 2408|      0|            return _PyStatus_ERR(
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 2409|      0|                "PYTHONPROFILEIMPORTTIME: numeric values other than 1 and 2 "
 2410|      0|                "are reserved for future use.");
 2411|      0|        }
 2412|      0|    }
 2413|       |
 2414|      1|    const wchar_t *x_value = config_get_xoption_value(config, L"importtime");
 2415|      1|    if (x_value) {
  ------------------
  |  Branch (2415:9): [True: 0, False: 1]
  ------------------
 2416|      0|        if (*x_value == 0 || config_wstr_to_int(x_value, &importtime) != 0) {
  ------------------
  |  Branch (2416:13): [True: 0, False: 0]
  |  Branch (2416:30): [True: 0, False: 0]
  ------------------
 2417|      0|            importtime = 1;
 2418|      0|        }
 2419|      0|        if (importtime < 0 || importtime > 2) {
  ------------------
  |  Branch (2419:13): [True: 0, False: 0]
  |  Branch (2419:31): [True: 0, False: 0]
  ------------------
 2420|      0|            return _PyStatus_ERR(
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 2421|      0|                "-X importtime: values other than 1 and 2 "
 2422|      0|                "are reserved for future use.");
 2423|      0|        }
 2424|      0|    }
 2425|       |
 2426|      1|    config->import_time = importtime;
 2427|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 2428|      1|}
initconfig.c:config_init_lazy_imports:
 2432|      1|{
 2433|      1|    int lazy_imports = -1;
 2434|       |
 2435|      1|    const char *env = config_get_env(config, "PYTHON_LAZY_IMPORTS");
 2436|      1|    if (env) {
  ------------------
  |  Branch (2436:9): [True: 0, False: 1]
  ------------------
 2437|      0|        if (strcmp(env, "all") == 0) {
  ------------------
  |  Branch (2437:13): [True: 0, False: 0]
  ------------------
 2438|      0|            lazy_imports = 1;
 2439|      0|        }
 2440|      0|        else if (strcmp(env, "none") == 0) {
  ------------------
  |  Branch (2440:18): [True: 0, False: 0]
  ------------------
 2441|      0|            lazy_imports = 0;
 2442|      0|        }
 2443|      0|        else if (strcmp(env, "normal") == 0) {
  ------------------
  |  Branch (2443:18): [True: 0, False: 0]
  ------------------
 2444|      0|            lazy_imports = -1;
 2445|      0|        }
 2446|      0|        else {
 2447|      0|            return _PyStatus_ERR("PYTHON_LAZY_IMPORTS: invalid value; "
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 2448|      0|                                 "expected 'all', 'none', or 'normal'");
 2449|      0|        }
 2450|      0|        config->lazy_imports = lazy_imports;
 2451|      0|    }
 2452|       |
 2453|      1|    const wchar_t *x_value = config_get_xoption_value(config, L"lazy_imports");
 2454|      1|    if (x_value) {
  ------------------
  |  Branch (2454:9): [True: 0, False: 1]
  ------------------
 2455|      0|        if (wcscmp(x_value, L"all") == 0) {
  ------------------
  |  Branch (2455:13): [True: 0, False: 0]
  ------------------
 2456|      0|            lazy_imports = 1;
 2457|      0|        }
 2458|      0|        else if (wcscmp(x_value, L"none") == 0) {
  ------------------
  |  Branch (2458:18): [True: 0, False: 0]
  ------------------
 2459|      0|            lazy_imports = 0;
 2460|      0|        }
 2461|      0|        else if (wcscmp(x_value, L"normal") == 0) {
  ------------------
  |  Branch (2461:18): [True: 0, False: 0]
  ------------------
 2462|      0|            lazy_imports = -1;
 2463|      0|        }
 2464|      0|        else {
 2465|      0|            return _PyStatus_ERR("-X lazy_imports: invalid value; "
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 2466|      0|                                 "expected 'all', 'none', or 'normal'");
 2467|      0|        }
 2468|      0|        config->lazy_imports = lazy_imports;
 2469|      0|    }
 2470|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 2471|      1|}
initconfig.c:config_init_tracemalloc:
 2251|      1|{
 2252|      1|    int nframe;
 2253|      1|    int valid;
 2254|       |
 2255|      1|    const char *env = config_get_env(config, "PYTHONTRACEMALLOC");
 2256|      1|    if (env) {
  ------------------
  |  Branch (2256:9): [True: 0, False: 1]
  ------------------
 2257|      0|        if (!_Py_str_to_int(env, &nframe)) {
  ------------------
  |  Branch (2257:13): [True: 0, False: 0]
  ------------------
 2258|      0|            valid = (nframe >= 0);
 2259|      0|        }
 2260|      0|        else {
 2261|      0|            valid = 0;
 2262|      0|        }
 2263|      0|        if (!valid) {
  ------------------
  |  Branch (2263:13): [True: 0, False: 0]
  ------------------
 2264|      0|            return _PyStatus_ERR("PYTHONTRACEMALLOC: invalid number of frames");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 2265|      0|        }
 2266|      0|        config->tracemalloc = nframe;
 2267|      0|    }
 2268|       |
 2269|      1|    const wchar_t *xoption = config_get_xoption(config, L"tracemalloc");
 2270|      1|    if (xoption) {
  ------------------
  |  Branch (2270:9): [True: 0, False: 1]
  ------------------
 2271|      0|        const wchar_t *sep = wcschr(xoption, L'=');
 2272|      0|        if (sep) {
  ------------------
  |  Branch (2272:13): [True: 0, False: 0]
  ------------------
 2273|      0|            if (!config_wstr_to_int(sep + 1, &nframe)) {
  ------------------
  |  Branch (2273:17): [True: 0, False: 0]
  ------------------
 2274|      0|                valid = (nframe >= 0);
 2275|      0|            }
 2276|      0|            else {
 2277|      0|                valid = 0;
 2278|      0|            }
 2279|      0|            if (!valid) {
  ------------------
  |  Branch (2279:17): [True: 0, False: 0]
  ------------------
 2280|      0|                return _PyStatus_ERR("-X tracemalloc=NFRAME: "
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 2281|      0|                                     "invalid number of frames");
 2282|      0|            }
 2283|      0|        }
 2284|      0|        else {
 2285|       |            /* -X tracemalloc behaves as -X tracemalloc=1 */
 2286|      0|            nframe = 1;
 2287|      0|        }
 2288|      0|        config->tracemalloc = nframe;
 2289|      0|    }
 2290|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 2291|      1|}
initconfig.c:config_init_perf_profiling:
 2194|      1|{
 2195|      1|    int active = 0;
 2196|      1|    const char *env = config_get_env(config, "PYTHONPERFSUPPORT");
 2197|      1|    if (env) {
  ------------------
  |  Branch (2197:9): [True: 0, False: 1]
  ------------------
 2198|      0|        if (_Py_str_to_int(env, &active) != 0) {
  ------------------
  |  Branch (2198:13): [True: 0, False: 0]
  ------------------
 2199|      0|            active = 0;
 2200|      0|        }
 2201|      0|        if (active) {
  ------------------
  |  Branch (2201:13): [True: 0, False: 0]
  ------------------
 2202|      0|            config->perf_profiling = 1;
 2203|      0|        }
 2204|      0|    }
 2205|      1|    const wchar_t *xoption = config_get_xoption(config, L"perf");
 2206|      1|    if (xoption) {
  ------------------
  |  Branch (2206:9): [True: 0, False: 1]
  ------------------
 2207|      0|        config->perf_profiling = 1;
 2208|      0|    }
 2209|      1|    env = config_get_env(config, "PYTHON_PERF_JIT_SUPPORT");
 2210|      1|    if (env) {
  ------------------
  |  Branch (2210:9): [True: 0, False: 1]
  ------------------
 2211|      0|        if (_Py_str_to_int(env, &active) != 0) {
  ------------------
  |  Branch (2211:13): [True: 0, False: 0]
  ------------------
 2212|      0|            active = 0;
 2213|      0|        }
 2214|      0|        if (active) {
  ------------------
  |  Branch (2214:13): [True: 0, False: 0]
  ------------------
 2215|      0|            config->perf_profiling = 2;
 2216|      0|        }
 2217|      0|    }
 2218|      1|    xoption = config_get_xoption(config, L"perf_jit");
 2219|      1|    if (xoption) {
  ------------------
  |  Branch (2219:9): [True: 0, False: 1]
  ------------------
 2220|      0|        config->perf_profiling = 2;
 2221|      0|    }
 2222|       |
 2223|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 2224|       |
 2225|      1|}
initconfig.c:config_init_remote_debug:
 2229|      1|{
 2230|       |#ifndef Py_REMOTE_DEBUG
 2231|       |    config->remote_debug = 0;
 2232|       |#else
 2233|      1|    int active = 1;
 2234|      1|    const char *env = Py_GETENV("PYTHON_DISABLE_REMOTE_DEBUG");
 2235|      1|    if (env) {
  ------------------
  |  Branch (2235:9): [True: 0, False: 1]
  ------------------
 2236|      0|        active = 0;
 2237|      0|    }
 2238|      1|    const wchar_t *xoption = config_get_xoption(config, L"disable-remote-debug");
 2239|      1|    if (xoption) {
  ------------------
  |  Branch (2239:9): [True: 0, False: 1]
  ------------------
 2240|      0|        active = 0;
 2241|      0|    }
 2242|       |
 2243|      1|    config->remote_debug = active;
 2244|      1|#endif
 2245|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 2246|       |
 2247|      1|}
initconfig.c:config_init_cpu_count:
 2073|      1|{
 2074|      1|    const char *env = config_get_env(config, "PYTHON_CPU_COUNT");
 2075|      1|    if (env) {
  ------------------
  |  Branch (2075:9): [True: 0, False: 1]
  ------------------
 2076|      0|        int cpu_count = -1;
 2077|      0|        if (strcmp(env, "default") == 0) {
  ------------------
  |  Branch (2077:13): [True: 0, False: 0]
  ------------------
 2078|      0|            cpu_count = -1;
 2079|      0|        }
 2080|      0|        else if (_Py_str_to_int(env, &cpu_count) < 0 || cpu_count < 1) {
  ------------------
  |  Branch (2080:18): [True: 0, False: 0]
  |  Branch (2080:57): [True: 0, False: 0]
  ------------------
 2081|      0|            goto error;
 2082|      0|        }
 2083|      0|        config->cpu_count = cpu_count;
 2084|      0|    }
 2085|       |
 2086|      1|    const wchar_t *xoption = config_get_xoption(config, L"cpu_count");
 2087|      1|    if (xoption) {
  ------------------
  |  Branch (2087:9): [True: 0, False: 1]
  ------------------
 2088|      0|        int cpu_count = -1;
 2089|      0|        const wchar_t *sep = wcschr(xoption, L'=');
 2090|      0|        if (sep) {
  ------------------
  |  Branch (2090:13): [True: 0, False: 0]
  ------------------
 2091|      0|            if (wcscmp(sep + 1, L"default") == 0) {
  ------------------
  |  Branch (2091:17): [True: 0, False: 0]
  ------------------
 2092|      0|                cpu_count = -1;
 2093|      0|            }
 2094|      0|            else if (config_wstr_to_int(sep + 1, &cpu_count) < 0 || cpu_count < 1) {
  ------------------
  |  Branch (2094:22): [True: 0, False: 0]
  |  Branch (2094:69): [True: 0, False: 0]
  ------------------
 2095|      0|                goto error;
 2096|      0|            }
 2097|      0|        }
 2098|      0|        else {
 2099|      0|            goto error;
 2100|      0|        }
 2101|      0|        config->cpu_count = cpu_count;
 2102|      0|    }
 2103|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 2104|       |
 2105|      0|error:
 2106|      0|    return _PyStatus_ERR("-X cpu_count=n option: n is missing or an invalid number, "
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 2107|      1|                         "n must be greater than 0");
 2108|      1|}
initconfig.c:config_init_pycache_prefix:
 2342|      1|{
 2343|      1|    assert(config->pycache_prefix == NULL);
  ------------------
  |  Branch (2343:5): [True: 1, False: 0]
  ------------------
 2344|       |
 2345|      1|    const wchar_t *xoption = config_get_xoption(config, L"pycache_prefix");
 2346|      1|    if (xoption) {
  ------------------
  |  Branch (2346:9): [True: 0, False: 1]
  ------------------
 2347|      0|        const wchar_t *sep = wcschr(xoption, L'=');
 2348|      0|        if (sep && wcslen(sep) > 1) {
  ------------------
  |  Branch (2348:13): [True: 0, False: 0]
  |  Branch (2348:20): [True: 0, False: 0]
  ------------------
 2349|      0|            config->pycache_prefix = _PyMem_RawWcsdup(sep + 1);
 2350|      0|            if (config->pycache_prefix == NULL) {
  ------------------
  |  Branch (2350:17): [True: 0, False: 0]
  ------------------
 2351|      0|                return _PyStatus_NO_MEMORY();
  ------------------
  |  |   33|      0|#define _PyStatus_NO_MEMORY() _PyStatus_ERR(_PyStatus_NO_MEMORY_ERRMSG)
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  ------------------
 2352|      0|            }
 2353|      0|        }
 2354|      0|        else {
 2355|       |            // PYTHONPYCACHEPREFIX env var ignored
 2356|       |            // if "-X pycache_prefix=" option is used
 2357|      0|            config->pycache_prefix = NULL;
 2358|      0|        }
 2359|      0|        return _PyStatus_OK();
  ------------------
  |  |   24|      0|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 2360|      0|    }
 2361|       |
 2362|      1|    return CONFIG_GET_ENV_DUP(config, &config->pycache_prefix,
  ------------------
  |  | 1785|      1|    config_get_env_dup(CONFIG, DEST, WNAME, NAME, "cannot decode " NAME)
  ------------------
 2363|      1|                              L"PYTHONPYCACHEPREFIX",
 2364|      1|                              "PYTHONPYCACHEPREFIX");
 2365|      1|}
initconfig.c:config_init_thread_inherit_context:
 2112|      1|{
 2113|      1|    const char *env = config_get_env(config, "PYTHON_THREAD_INHERIT_CONTEXT");
 2114|      1|    if (env) {
  ------------------
  |  Branch (2114:9): [True: 0, False: 1]
  ------------------
 2115|      0|        int enabled;
 2116|      0|        if (_Py_str_to_int(env, &enabled) < 0 || (enabled < 0) || (enabled > 1)) {
  ------------------
  |  Branch (2116:13): [True: 0, False: 0]
  |  Branch (2116:50): [True: 0, False: 0]
  |  Branch (2116:67): [True: 0, False: 0]
  ------------------
 2117|      0|            return _PyStatus_ERR(
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 2118|      0|                "PYTHON_THREAD_INHERIT_CONTEXT=N: N is missing or invalid");
 2119|      0|        }
 2120|      0|        config->thread_inherit_context = enabled;
 2121|      0|    }
 2122|       |
 2123|      1|    const wchar_t *xoption = config_get_xoption(config, L"thread_inherit_context");
 2124|      1|    if (xoption) {
  ------------------
  |  Branch (2124:9): [True: 0, False: 1]
  ------------------
 2125|      0|        int enabled;
 2126|      0|        const wchar_t *sep = wcschr(xoption, L'=');
 2127|      0|        if (!sep || (config_wstr_to_int(sep + 1, &enabled) < 0) || (enabled < 0) || (enabled > 1)) {
  ------------------
  |  Branch (2127:13): [True: 0, False: 0]
  |  Branch (2127:21): [True: 0, False: 0]
  |  Branch (2127:68): [True: 0, False: 0]
  |  Branch (2127:85): [True: 0, False: 0]
  ------------------
 2128|      0|            return _PyStatus_ERR(
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 2129|      0|                "-X thread_inherit_context=n: n is missing or invalid");
 2130|      0|        }
 2131|      0|        config->thread_inherit_context = enabled;
 2132|      0|    }
 2133|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 2134|      1|}
initconfig.c:config_init_context_aware_warnings:
 2138|      1|{
 2139|      1|    const char *env = config_get_env(config, "PYTHON_CONTEXT_AWARE_WARNINGS");
 2140|      1|    if (env) {
  ------------------
  |  Branch (2140:9): [True: 0, False: 1]
  ------------------
 2141|      0|        int enabled;
 2142|      0|        if (_Py_str_to_int(env, &enabled) < 0 || (enabled < 0) || (enabled > 1)) {
  ------------------
  |  Branch (2142:13): [True: 0, False: 0]
  |  Branch (2142:50): [True: 0, False: 0]
  |  Branch (2142:67): [True: 0, False: 0]
  ------------------
 2143|      0|            return _PyStatus_ERR(
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 2144|      0|                "PYTHON_CONTEXT_AWARE_WARNINGS=N: N is missing or invalid");
 2145|      0|        }
 2146|      0|        config->context_aware_warnings = enabled;
 2147|      0|    }
 2148|       |
 2149|      1|    const wchar_t *xoption = config_get_xoption(config, L"context_aware_warnings");
 2150|      1|    if (xoption) {
  ------------------
  |  Branch (2150:9): [True: 0, False: 1]
  ------------------
 2151|      0|        int enabled;
 2152|      0|        const wchar_t *sep = wcschr(xoption, L'=');
 2153|      0|        if (!sep || (config_wstr_to_int(sep + 1, &enabled) < 0) || (enabled < 0) || (enabled > 1)) {
  ------------------
  |  Branch (2153:13): [True: 0, False: 0]
  |  Branch (2153:21): [True: 0, False: 0]
  |  Branch (2153:68): [True: 0, False: 0]
  |  Branch (2153:85): [True: 0, False: 0]
  ------------------
 2154|      0|            return _PyStatus_ERR(
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 2155|      0|                "-X context_aware_warnings=n: n is missing or invalid");
 2156|      0|        }
 2157|      0|        config->context_aware_warnings = enabled;
 2158|      0|    }
 2159|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 2160|      1|}
initconfig.c:config_init_tlbc:
 2164|      1|{
 2165|       |#ifdef Py_GIL_DISABLED
 2166|       |    const char *env = config_get_env(config, "PYTHON_TLBC");
 2167|       |    if (env) {
 2168|       |        int enabled;
 2169|       |        if (_Py_str_to_int(env, &enabled) < 0 || (enabled < 0) || (enabled > 1)) {
 2170|       |            return _PyStatus_ERR(
 2171|       |                "PYTHON_TLBC=N: N is missing or invalid");
 2172|       |        }
 2173|       |        config->tlbc_enabled = enabled;
 2174|       |    }
 2175|       |
 2176|       |    const wchar_t *xoption = config_get_xoption(config, L"tlbc");
 2177|       |    if (xoption) {
 2178|       |        int enabled;
 2179|       |        const wchar_t *sep = wcschr(xoption, L'=');
 2180|       |        if (!sep || (config_wstr_to_int(sep + 1, &enabled) < 0) || (enabled < 0) || (enabled > 1)) {
 2181|       |            return _PyStatus_ERR(
 2182|       |                "-X tlbc=n: n is missing or invalid");
 2183|       |        }
 2184|       |        config->tlbc_enabled = enabled;
 2185|       |    }
 2186|       |    return _PyStatus_OK();
 2187|       |#else
 2188|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 2189|      1|#endif
 2190|      1|}
initconfig.c:config_init_pathconfig_warnings:
 2475|      1|{
 2476|      1|    const char *env = config_get_env(config, "PYTHON_PATHCONFIG_WARNINGS");
 2477|      1|    if (env) {
  ------------------
  |  Branch (2477:9): [True: 0, False: 1]
  ------------------
 2478|      0|        int enabled;
 2479|      0|        if (_Py_str_to_int(env, &enabled) < 0 || (enabled < 0) || (enabled > 1)) {
  ------------------
  |  Branch (2479:13): [True: 0, False: 0]
  |  Branch (2479:50): [True: 0, False: 0]
  |  Branch (2479:67): [True: 0, False: 0]
  ------------------
 2480|      0|            return _PyStatus_ERR(
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 2481|      0|                "PYTHON_PATHCONFIG_WARNINGS=N: N is missing or invalid");
 2482|      0|        }
 2483|      0|        config->pathconfig_warnings = enabled;
 2484|      0|    }
 2485|       |
 2486|      1|    const wchar_t *xoption = config_get_xoption(config, L"pathconfig_warnings");
 2487|      1|    if (xoption) {
  ------------------
  |  Branch (2487:9): [True: 0, False: 1]
  ------------------
 2488|      0|        int enabled;
 2489|      0|        const wchar_t *sep = wcschr(xoption, L'=');
 2490|      0|        if (!sep || (config_wstr_to_int(sep + 1, &enabled) < 0) || (enabled < 0) || (enabled > 1)) {
  ------------------
  |  Branch (2490:13): [True: 0, False: 0]
  |  Branch (2490:21): [True: 0, False: 0]
  |  Branch (2490:68): [True: 0, False: 0]
  |  Branch (2490:85): [True: 0, False: 0]
  ------------------
 2491|      0|            return _PyStatus_ERR(
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 2492|      0|                "-X pathconfig_warnings=n: n is missing or invalid");
 2493|      0|        }
 2494|      0|        config->pathconfig_warnings = enabled;
 2495|      0|    }
 2496|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 2497|      1|}
initconfig.c:config_init_fs_encoding:
 2775|      1|{
 2776|      1|    PyStatus status;
 2777|       |
 2778|      1|    if (config->filesystem_encoding == NULL) {
  ------------------
  |  Branch (2778:9): [True: 1, False: 0]
  ------------------
 2779|      1|        status = config_get_fs_encoding(config, preconfig,
 2780|      1|                                        &config->filesystem_encoding);
 2781|      1|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2782|      0|            return status;
 2783|      0|        }
 2784|      1|    }
 2785|       |
 2786|      1|    if (config->filesystem_errors == NULL) {
  ------------------
  |  Branch (2786:9): [True: 1, False: 0]
  ------------------
 2787|      1|        const wchar_t *errors;
 2788|       |#ifdef MS_WINDOWS
 2789|       |        if (preconfig->legacy_windows_fs_encoding) {
 2790|       |            errors = L"replace";
 2791|       |        }
 2792|       |        else {
 2793|       |            errors = L"surrogatepass";
 2794|       |        }
 2795|       |#else
 2796|      1|        errors = L"surrogateescape";
 2797|      1|#endif
 2798|      1|        status = PyConfig_SetString(config, &config->filesystem_errors, errors);
 2799|      1|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2800|      0|            return status;
 2801|      0|        }
 2802|      1|    }
 2803|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 2804|      1|}
initconfig.c:config_get_fs_encoding:
 2745|      1|{
 2746|       |#ifdef _Py_FORCE_UTF8_FS_ENCODING
 2747|       |    return PyConfig_SetString(config, fs_encoding, L"utf-8");
 2748|       |#elif defined(MS_WINDOWS)
 2749|       |    const wchar_t *encoding;
 2750|       |    if (preconfig->legacy_windows_fs_encoding) {
 2751|       |        // Legacy Windows filesystem encoding: mbcs/replace
 2752|       |        encoding = L"mbcs";
 2753|       |    }
 2754|       |    else {
 2755|       |        // Windows defaults to utf-8/surrogatepass (PEP 529)
 2756|       |        encoding = L"utf-8";
 2757|       |    }
 2758|       |     return PyConfig_SetString(config, fs_encoding, encoding);
 2759|       |#else  // !MS_WINDOWS
 2760|      1|    if (preconfig->utf8_mode) {
  ------------------
  |  Branch (2760:9): [True: 1, False: 0]
  ------------------
 2761|      1|        return PyConfig_SetString(config, fs_encoding, L"utf-8");
 2762|      1|    }
 2763|       |
 2764|      0|    if (_Py_GetForceASCII()) {
  ------------------
  |  Branch (2764:9): [True: 0, False: 0]
  ------------------
 2765|      0|        return PyConfig_SetString(config, fs_encoding, L"ascii");
 2766|      0|    }
 2767|       |
 2768|      0|    return config_get_locale_encoding(config, preconfig, fs_encoding);
 2769|      0|#endif  // !MS_WINDOWS
 2770|      0|}
initconfig.c:config_get_locale_encoding:
 2640|      1|{
 2641|      1|    wchar_t *encoding;
 2642|      1|    if (preconfig->utf8_mode) {
  ------------------
  |  Branch (2642:9): [True: 1, False: 0]
  ------------------
 2643|      1|        encoding = _PyMem_RawWcsdup(L"utf-8");
 2644|      1|    }
 2645|      0|    else {
 2646|      0|        encoding = _Py_GetLocaleEncoding();
 2647|      0|    }
 2648|      1|    if (encoding == NULL) {
  ------------------
  |  Branch (2648:9): [True: 0, False: 1]
  ------------------
 2649|      0|        return _PyStatus_NO_MEMORY();
  ------------------
  |  |   33|      0|#define _PyStatus_NO_MEMORY() _PyStatus_ERR(_PyStatus_NO_MEMORY_ERRMSG)
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  ------------------
 2650|      0|    }
 2651|      1|    PyStatus status = PyConfig_SetString(config, locale_encoding, encoding);
 2652|      1|    PyMem_RawFree(encoding);
 2653|      1|    return status;
 2654|      1|}
initconfig.c:config_init_stdio_encoding:
 2660|      1|{
 2661|      1|    PyStatus status;
 2662|       |
 2663|       |    // Exit if encoding and errors are defined
 2664|      1|    if (config->stdio_encoding != NULL && config->stdio_errors != NULL) {
  ------------------
  |  Branch (2664:9): [True: 0, False: 1]
  |  Branch (2664:43): [True: 0, False: 0]
  ------------------
 2665|      0|        return _PyStatus_OK();
  ------------------
  |  |   24|      0|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 2666|      0|    }
 2667|       |
 2668|       |    /* PYTHONIOENCODING environment variable */
 2669|      1|    const char *opt = config_get_env(config, "PYTHONIOENCODING");
 2670|      1|    if (opt) {
  ------------------
  |  Branch (2670:9): [True: 0, False: 1]
  ------------------
 2671|      0|        char *pythonioencoding = _PyMem_RawStrdup(opt);
 2672|      0|        if (pythonioencoding == NULL) {
  ------------------
  |  Branch (2672:13): [True: 0, False: 0]
  ------------------
 2673|      0|            return _PyStatus_NO_MEMORY();
  ------------------
  |  |   33|      0|#define _PyStatus_NO_MEMORY() _PyStatus_ERR(_PyStatus_NO_MEMORY_ERRMSG)
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  ------------------
 2674|      0|        }
 2675|       |
 2676|      0|        char *errors = strchr(pythonioencoding, ':');
 2677|      0|        if (errors) {
  ------------------
  |  Branch (2677:13): [True: 0, False: 0]
  ------------------
 2678|      0|            *errors = '\0';
 2679|      0|            errors++;
 2680|      0|            if (!errors[0]) {
  ------------------
  |  Branch (2680:17): [True: 0, False: 0]
  ------------------
 2681|      0|                errors = NULL;
 2682|      0|            }
 2683|      0|        }
 2684|       |
 2685|       |        /* Does PYTHONIOENCODING contain an encoding? */
 2686|      0|        if (pythonioencoding[0]) {
  ------------------
  |  Branch (2686:13): [True: 0, False: 0]
  ------------------
 2687|      0|            if (config->stdio_encoding == NULL) {
  ------------------
  |  Branch (2687:17): [True: 0, False: 0]
  ------------------
 2688|      0|                status = CONFIG_SET_BYTES_STR(config, &config->stdio_encoding,
  ------------------
  |  | 1333|      0|    config_set_bytes_string(config, config_str, str, "cannot decode " NAME)
  ------------------
 2689|      0|                                              pythonioencoding,
 2690|      0|                                              "PYTHONIOENCODING environment variable");
 2691|      0|                if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      0|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2692|      0|                    PyMem_RawFree(pythonioencoding);
 2693|      0|                    return status;
 2694|      0|                }
 2695|      0|            }
 2696|       |
 2697|       |            /* If the encoding is set but not the error handler,
 2698|       |               use "strict" error handler by default.
 2699|       |               PYTHONIOENCODING=latin1 behaves as
 2700|       |               PYTHONIOENCODING=latin1:strict. */
 2701|      0|            if (!errors) {
  ------------------
  |  Branch (2701:17): [True: 0, False: 0]
  ------------------
 2702|      0|                errors = "strict";
 2703|      0|            }
 2704|      0|        }
 2705|       |
 2706|      0|        if (config->stdio_errors == NULL && errors != NULL) {
  ------------------
  |  Branch (2706:13): [True: 0, False: 0]
  |  Branch (2706:45): [True: 0, False: 0]
  ------------------
 2707|      0|            status = CONFIG_SET_BYTES_STR(config, &config->stdio_errors,
  ------------------
  |  | 1333|      0|    config_set_bytes_string(config, config_str, str, "cannot decode " NAME)
  ------------------
 2708|      0|                                          errors,
 2709|      0|                                          "PYTHONIOENCODING environment variable");
 2710|      0|            if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      0|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2711|      0|                PyMem_RawFree(pythonioencoding);
 2712|      0|                return status;
 2713|      0|            }
 2714|      0|        }
 2715|       |
 2716|      0|        PyMem_RawFree(pythonioencoding);
 2717|      0|    }
 2718|       |
 2719|       |    /* Choose the default error handler based on the current locale. */
 2720|      1|    if (config->stdio_encoding == NULL) {
  ------------------
  |  Branch (2720:9): [True: 1, False: 0]
  ------------------
 2721|      1|        status = config_get_locale_encoding(config, preconfig,
 2722|      1|                                            &config->stdio_encoding);
 2723|      1|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2724|      0|            return status;
 2725|      0|        }
 2726|      1|    }
 2727|      1|    if (config->stdio_errors == NULL) {
  ------------------
  |  Branch (2727:9): [True: 1, False: 0]
  ------------------
 2728|      1|        const wchar_t *errors = config_get_stdio_errors(preconfig);
 2729|      1|        assert(errors != NULL);
  ------------------
  |  Branch (2729:9): [True: 1, False: 0]
  ------------------
 2730|       |
 2731|      1|        status = PyConfig_SetString(config, &config->stdio_errors, errors);
 2732|      1|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2733|      0|            return status;
 2734|      0|        }
 2735|      1|    }
 2736|       |
 2737|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 2738|      1|}
initconfig.c:config_get_stdio_errors:
 2606|      1|{
 2607|      1|    if (preconfig->utf8_mode) {
  ------------------
  |  Branch (2607:9): [True: 1, False: 0]
  ------------------
 2608|       |        /* UTF-8 Mode uses UTF-8/surrogateescape */
 2609|      1|        return L"surrogateescape";
 2610|      1|    }
 2611|       |
 2612|      0|#ifndef MS_WINDOWS
 2613|      0|    const char *loc = setlocale(LC_CTYPE, NULL);
 2614|      0|    if (loc != NULL) {
  ------------------
  |  Branch (2614:9): [True: 0, False: 0]
  ------------------
 2615|       |        /* surrogateescape is the default in the legacy C and POSIX locales */
 2616|      0|        if (strcmp(loc, "C") == 0 || strcmp(loc, "POSIX") == 0) {
  ------------------
  |  Branch (2616:13): [True: 0, False: 0]
  |  Branch (2616:38): [True: 0, False: 0]
  ------------------
 2617|      0|            return L"surrogateescape";
 2618|      0|        }
 2619|       |
 2620|      0|#ifdef PY_COERCE_C_LOCALE
 2621|       |        /* surrogateescape is the default in locale coercion target locales */
 2622|      0|        if (_Py_IsLocaleCoercionTarget(loc)) {
  ------------------
  |  Branch (2622:13): [True: 0, False: 0]
  ------------------
 2623|      0|            return L"surrogateescape";
 2624|      0|        }
 2625|      0|#endif
 2626|      0|    }
 2627|       |
 2628|      0|    return L"strict";
 2629|       |#else
 2630|       |    /* On Windows, always use surrogateescape by default */
 2631|       |    return L"surrogateescape";
 2632|       |#endif
 2633|      0|}
initconfig.c:config_check_consistency:
 1013|      1|{
 1014|       |    /* Check config consistency */
 1015|      1|    assert(config->isolated >= 0);
  ------------------
  |  Branch (1015:5): [True: 1, False: 0]
  ------------------
 1016|      1|    assert(config->use_environment >= 0);
  ------------------
  |  Branch (1016:5): [True: 1, False: 0]
  ------------------
 1017|      1|    assert(config->dev_mode >= 0);
  ------------------
  |  Branch (1017:5): [True: 1, False: 0]
  ------------------
 1018|      1|    assert(config->install_signal_handlers >= 0);
  ------------------
  |  Branch (1018:5): [True: 1, False: 0]
  ------------------
 1019|      1|    assert(config->use_hash_seed >= 0);
  ------------------
  |  Branch (1019:5): [True: 1, False: 0]
  ------------------
 1020|      1|    assert(config->hash_seed <= MAX_HASH_SEED);
  ------------------
  |  Branch (1020:5): [True: 1, False: 0]
  ------------------
 1021|      1|    assert(config->faulthandler >= 0);
  ------------------
  |  Branch (1021:5): [True: 1, False: 0]
  ------------------
 1022|      1|    assert(config->tracemalloc >= 0);
  ------------------
  |  Branch (1022:5): [True: 1, False: 0]
  ------------------
 1023|      1|    assert(config->import_time >= 0);
  ------------------
  |  Branch (1023:5): [True: 1, False: 0]
  ------------------
 1024|      1|    assert(config->code_debug_ranges >= 0);
  ------------------
  |  Branch (1024:5): [True: 1, False: 0]
  ------------------
 1025|      1|    assert(config->show_ref_count >= 0);
  ------------------
  |  Branch (1025:5): [True: 1, False: 0]
  ------------------
 1026|      1|    assert(config->dump_refs >= 0);
  ------------------
  |  Branch (1026:5): [True: 1, False: 0]
  ------------------
 1027|      1|    assert(config->malloc_stats >= 0);
  ------------------
  |  Branch (1027:5): [True: 1, False: 0]
  ------------------
 1028|      1|    assert(config->pymalloc_hugepages >= 0);
  ------------------
  |  Branch (1028:5): [True: 1, False: 0]
  ------------------
 1029|      1|    assert(config->site_import >= 0);
  ------------------
  |  Branch (1029:5): [True: 1, False: 0]
  ------------------
 1030|      1|    assert(config->bytes_warning >= 0);
  ------------------
  |  Branch (1030:5): [True: 1, False: 0]
  ------------------
 1031|      1|    assert(config->warn_default_encoding >= 0);
  ------------------
  |  Branch (1031:5): [True: 1, False: 0]
  ------------------
 1032|      1|    assert(config->inspect >= 0);
  ------------------
  |  Branch (1032:5): [True: 1, False: 0]
  ------------------
 1033|      1|    assert(config->interactive >= 0);
  ------------------
  |  Branch (1033:5): [True: 1, False: 0]
  ------------------
 1034|      1|    assert(config->optimization_level >= 0);
  ------------------
  |  Branch (1034:5): [True: 1, False: 0]
  ------------------
 1035|      1|    assert(config->parser_debug >= 0);
  ------------------
  |  Branch (1035:5): [True: 1, False: 0]
  ------------------
 1036|      1|    assert(config->write_bytecode >= 0);
  ------------------
  |  Branch (1036:5): [True: 1, False: 0]
  ------------------
 1037|      1|    assert(config->verbose >= 0);
  ------------------
  |  Branch (1037:5): [True: 1, False: 0]
  ------------------
 1038|      1|    assert(config->quiet >= 0);
  ------------------
  |  Branch (1038:5): [True: 1, False: 0]
  ------------------
 1039|      1|    assert(config->user_site_directory >= 0);
  ------------------
  |  Branch (1039:5): [True: 1, False: 0]
  ------------------
 1040|      1|    assert(config->parse_argv >= 0);
  ------------------
  |  Branch (1040:5): [True: 1, False: 0]
  ------------------
 1041|      1|    assert(config->configure_c_stdio >= 0);
  ------------------
  |  Branch (1041:5): [True: 1, False: 0]
  ------------------
 1042|      1|    assert(config->buffered_stdio >= 0);
  ------------------
  |  Branch (1042:5): [True: 1, False: 0]
  ------------------
 1043|      1|    assert(_PyWideStringList_CheckConsistency(&config->orig_argv));
  ------------------
  |  Branch (1043:5): [True: 1, False: 0]
  ------------------
 1044|      1|    assert(_PyWideStringList_CheckConsistency(&config->argv));
  ------------------
  |  Branch (1044:5): [True: 1, False: 0]
  ------------------
 1045|       |    /* sys.argv must be non-empty: empty argv is replaced with [''] */
 1046|      1|    assert(config->argv.length >= 1);
  ------------------
  |  Branch (1046:5): [True: 1, False: 0]
  ------------------
 1047|      1|    assert(_PyWideStringList_CheckConsistency(&config->xoptions));
  ------------------
  |  Branch (1047:5): [True: 1, False: 0]
  ------------------
 1048|      1|    assert(_PyWideStringList_CheckConsistency(&config->warnoptions));
  ------------------
  |  Branch (1048:5): [True: 1, False: 0]
  ------------------
 1049|      1|    assert(_PyWideStringList_CheckConsistency(&config->module_search_paths));
  ------------------
  |  Branch (1049:5): [True: 1, False: 0]
  ------------------
 1050|      1|    assert(config->module_search_paths_set >= 0);
  ------------------
  |  Branch (1050:5): [True: 1, False: 0]
  ------------------
 1051|      1|    assert(config->filesystem_encoding != NULL);
  ------------------
  |  Branch (1051:5): [True: 1, False: 0]
  ------------------
 1052|      1|    assert(config->filesystem_errors != NULL);
  ------------------
  |  Branch (1052:5): [True: 1, False: 0]
  ------------------
 1053|      1|    assert(config->stdio_encoding != NULL);
  ------------------
  |  Branch (1053:5): [True: 1, False: 0]
  ------------------
 1054|      1|    assert(config->stdio_errors != NULL);
  ------------------
  |  Branch (1054:5): [True: 1, False: 0]
  ------------------
 1055|       |#ifdef MS_WINDOWS
 1056|       |    assert(config->legacy_windows_stdio >= 0);
 1057|       |#endif
 1058|       |    /* -c and -m options are exclusive */
 1059|      1|    assert(!(config->run_command != NULL && config->run_module != NULL));
  ------------------
  |  Branch (1059:5): [True: 0, False: 1]
  |  Branch (1059:5): [True: 0, False: 0]
  ------------------
 1060|      1|    assert(config->check_hash_pycs_mode != NULL);
  ------------------
  |  Branch (1060:5): [True: 1, False: 0]
  ------------------
 1061|      1|    assert(config->_install_importlib >= 0);
  ------------------
  |  Branch (1061:5): [True: 1, False: 0]
  ------------------
 1062|      1|    assert(config->pathconfig_warnings >= 0);
  ------------------
  |  Branch (1062:5): [True: 1, False: 0]
  ------------------
 1063|      1|    assert(config->_is_python_build >= 0);
  ------------------
  |  Branch (1063:5): [True: 1, False: 0]
  ------------------
 1064|      1|    assert(config->safe_path >= 0);
  ------------------
  |  Branch (1064:5): [True: 1, False: 0]
  ------------------
 1065|      1|    assert(config->int_max_str_digits >= 0);
  ------------------
  |  Branch (1065:5): [True: 1, False: 0]
  ------------------
 1066|       |    // cpu_count can be -1 if the user doesn't override it.
 1067|      1|    assert(config->cpu_count != 0);
  ------------------
  |  Branch (1067:5): [True: 1, False: 0]
  ------------------
 1068|       |    // lazy_imports can be -1 (default), 0 (off), or 1 (on).
 1069|      1|    assert(config->lazy_imports >= -1 && config->lazy_imports <= 1);
  ------------------
  |  Branch (1069:5): [True: 1, False: 0]
  |  Branch (1069:5): [True: 1, False: 0]
  ------------------
 1070|       |    // config->use_frozen_modules is initialized later
 1071|       |    // by _PyConfig_InitImportConfig().
 1072|      1|    assert(config->thread_inherit_context >= 0);
  ------------------
  |  Branch (1072:5): [True: 1, False: 0]
  ------------------
 1073|      1|    assert(config->context_aware_warnings >= 0);
  ------------------
  |  Branch (1073:5): [True: 1, False: 0]
  ------------------
 1074|       |#ifdef __APPLE__
 1075|       |    assert(config->use_system_logger >= 0);
 1076|       |#endif
 1077|       |#ifdef Py_STATS
 1078|       |    assert(config->_pystats >= 0);
 1079|       |#endif
 1080|      1|    return 1;
 1081|      1|}
initconfig.c:config_get:
 4633|     71|{
 4634|     71|    if (use_sys) {
  ------------------
  |  Branch (4634:9): [True: 0, False: 71]
  ------------------
 4635|      0|        if (spec->sys.attr != NULL) {
  ------------------
  |  Branch (4635:13): [True: 0, False: 0]
  ------------------
 4636|      0|            return PySys_GetAttrString(spec->sys.attr);
 4637|      0|        }
 4638|       |
 4639|      0|        if (strcmp(spec->name, "write_bytecode") == 0) {
  ------------------
  |  Branch (4639:13): [True: 0, False: 0]
  ------------------
 4640|      0|            int value;
 4641|      0|            if (config_get_sys_write_bytecode(config, &value) < 0) {
  ------------------
  |  Branch (4641:17): [True: 0, False: 0]
  ------------------
 4642|      0|                return NULL;
 4643|      0|            }
 4644|      0|            return PyBool_FromLong(value);
 4645|      0|        }
 4646|       |
 4647|      0|        if (strcmp(spec->name, "int_max_str_digits") == 0) {
  ------------------
  |  Branch (4647:13): [True: 0, False: 0]
  ------------------
 4648|      0|            PyInterpreterState *interp = _PyInterpreterState_GET();
 4649|      0|            return PyLong_FromLong(interp->long_state.max_str_digits);
 4650|      0|        }
 4651|      0|    }
 4652|       |
 4653|     71|    void *member = config_get_spec_member(config, spec);
 4654|     71|    switch (spec->type) {
 4655|      4|    case PyConfig_MEMBER_INT:
  ------------------
  |  Branch (4655:5): [True: 4, False: 67]
  ------------------
 4656|     12|    case PyConfig_MEMBER_UINT:
  ------------------
  |  Branch (4656:5): [True: 8, False: 63]
  ------------------
 4657|     12|    {
 4658|     12|        int value = *(int *)member;
 4659|     12|        return PyLong_FromLong(value);
 4660|      4|    }
 4661|       |
 4662|     31|    case PyConfig_MEMBER_BOOL:
  ------------------
  |  Branch (4662:5): [True: 31, False: 40]
  ------------------
 4663|     31|    {
 4664|     31|        int value = *(int *)member;
 4665|     31|        return PyBool_FromLong(value != 0);
 4666|      4|    }
 4667|       |
 4668|      1|    case PyConfig_MEMBER_ULONG:
  ------------------
  |  Branch (4668:5): [True: 1, False: 70]
  ------------------
 4669|      1|    {
 4670|      1|        unsigned long value = *(unsigned long *)member;
 4671|      1|        return PyLong_FromUnsignedLong(value);
 4672|      4|    }
 4673|       |
 4674|      7|    case PyConfig_MEMBER_WSTR:
  ------------------
  |  Branch (4674:5): [True: 7, False: 64]
  ------------------
 4675|     22|    case PyConfig_MEMBER_WSTR_OPT:
  ------------------
  |  Branch (4675:5): [True: 15, False: 56]
  ------------------
 4676|     22|    {
 4677|     22|        wchar_t *wstr = *(wchar_t **)member;
 4678|     22|        if (wstr != NULL) {
  ------------------
  |  Branch (4678:13): [True: 6, False: 16]
  ------------------
 4679|      6|            return PyUnicode_FromWideChar(wstr, -1);
 4680|      6|        }
 4681|     16|        else {
 4682|     16|            return Py_NewRef(Py_None);
  ------------------
  |  |  550|     16|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     16|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     16|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4683|     16|        }
 4684|     22|    }
 4685|       |
 4686|      5|    case PyConfig_MEMBER_WSTR_LIST:
  ------------------
  |  Branch (4686:5): [True: 5, False: 66]
  ------------------
 4687|      5|    {
 4688|      5|        if (strcmp(spec->name, "xoptions") == 0) {
  ------------------
  |  Branch (4688:13): [True: 1, False: 4]
  ------------------
 4689|      1|            return _PyConfig_CreateXOptionsDict(config);
 4690|      1|        }
 4691|      4|        else {
 4692|      4|            const PyWideStringList *list = (const PyWideStringList *)member;
 4693|      4|            return _PyWideStringList_AsTuple(list);
 4694|      4|        }
 4695|      5|    }
 4696|       |
 4697|      0|    default:
  ------------------
  |  Branch (4697:5): [True: 0, False: 71]
  ------------------
 4698|      0|        Py_UNREACHABLE();
  ------------------
  |  |  264|      0|#  define Py_UNREACHABLE() __builtin_unreachable()
  ------------------
 4699|     71|    }
 4700|     71|}
initconfig.c:_PyWideStringList_AsTuple:
  956|      4|{
  957|      4|    assert(_PyWideStringList_CheckConsistency(list));
  ------------------
  |  Branch (957:5): [True: 4, False: 0]
  ------------------
  958|       |
  959|      4|    PyObject *tuple = PyTuple_New(list->length);
  960|      4|    if (tuple == NULL) {
  ------------------
  |  Branch (960:9): [True: 0, False: 4]
  ------------------
  961|      0|        return NULL;
  962|      0|    }
  963|       |
  964|      5|    for (Py_ssize_t i = 0; i < list->length; i++) {
  ------------------
  |  Branch (964:28): [True: 1, False: 4]
  ------------------
  965|      1|        PyObject *item = PyUnicode_FromWideChar(list->items[i], -1);
  966|      1|        if (item == NULL) {
  ------------------
  |  Branch (966:13): [True: 0, False: 1]
  ------------------
  967|      0|            Py_DECREF(tuple);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  968|      0|            return NULL;
  969|      0|        }
  970|      1|        PyTuple_SET_ITEM(tuple, i, item);
  ------------------
  |  |   40|      1|    PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  971|      1|    }
  972|      4|    return tuple;
  973|      4|}

_Py_CreateMonitoringObject:
 2565|      1|{
 2566|      1|    PyObject *mod = _PyModule_CreateInitialized(&monitoring_module, PYTHON_API_VERSION);
  ------------------
  |  |   59|      1|#define PYTHON_API_VERSION 1013
  ------------------
 2567|      1|    if (mod == NULL) {
  ------------------
  |  Branch (2567:9): [True: 0, False: 1]
  ------------------
 2568|      0|        return NULL;
 2569|      0|    }
 2570|      1|    if (PyObject_SetAttrString(mod, "DISABLE", &_PyInstrumentation_DISABLE)) {
  ------------------
  |  Branch (2570:9): [True: 0, False: 1]
  ------------------
 2571|      0|        goto error;
 2572|      0|    }
 2573|      1|    if (PyObject_SetAttrString(mod, "MISSING", &_PyInstrumentation_MISSING)) {
  ------------------
  |  Branch (2573:9): [True: 0, False: 1]
  ------------------
 2574|      0|        goto error;
 2575|      0|    }
 2576|      1|    PyObject *events = _PyNamespace_New(NULL);
 2577|      1|    if (events == NULL) {
  ------------------
  |  Branch (2577:9): [True: 0, False: 1]
  ------------------
 2578|      0|        goto error;
 2579|      0|    }
 2580|      1|    int err = PyObject_SetAttrString(mod, "events", events);
 2581|      1|    Py_DECREF(events);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2582|      1|    if (err) {
  ------------------
  |  Branch (2582:9): [True: 0, False: 1]
  ------------------
 2583|      0|        goto error;
 2584|      0|    }
 2585|     20|    for (int i = 0; i < _PY_MONITORING_EVENTS; i++) {
  ------------------
  |  |   77|     20|#define _PY_MONITORING_EVENTS 19
  ------------------
  |  Branch (2585:21): [True: 19, False: 1]
  ------------------
 2586|     19|        if (add_power2_constant(events, event_names[i], i)) {
  ------------------
  |  Branch (2586:13): [True: 0, False: 19]
  ------------------
 2587|      0|            goto error;
 2588|      0|        }
 2589|     19|    }
 2590|      1|    err = PyObject_SetAttrString(events, "NO_EVENTS", _PyLong_GetZero());
 2591|      1|    if (err) goto error;
  ------------------
  |  Branch (2591:9): [True: 0, False: 1]
  ------------------
 2592|      1|    PyObject *val = PyLong_FromLong(PY_MONITORING_DEBUGGER_ID);
  ------------------
  |  |   20|      1|#define PY_MONITORING_DEBUGGER_ID 0
  ------------------
 2593|      1|    assert(val != NULL); /* Can't return NULL because the int is small. */
  ------------------
  |  Branch (2593:5): [True: 1, False: 0]
  ------------------
 2594|      1|    err = PyObject_SetAttrString(mod, "DEBUGGER_ID", val);
 2595|      1|    Py_DECREF(val);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2596|      1|    if (err) goto error;
  ------------------
  |  Branch (2596:9): [True: 0, False: 1]
  ------------------
 2597|      1|    val = PyLong_FromLong(PY_MONITORING_COVERAGE_ID);
  ------------------
  |  |   21|      1|#define PY_MONITORING_COVERAGE_ID 1
  ------------------
 2598|      1|    assert(val != NULL);
  ------------------
  |  Branch (2598:5): [True: 1, False: 0]
  ------------------
 2599|      1|    err = PyObject_SetAttrString(mod, "COVERAGE_ID", val);
 2600|      1|    Py_DECREF(val);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2601|      1|    if (err) goto error;
  ------------------
  |  Branch (2601:9): [True: 0, False: 1]
  ------------------
 2602|      1|    val = PyLong_FromLong(PY_MONITORING_PROFILER_ID);
  ------------------
  |  |   22|      1|#define PY_MONITORING_PROFILER_ID 2
  ------------------
 2603|      1|    assert(val != NULL);
  ------------------
  |  Branch (2603:5): [True: 1, False: 0]
  ------------------
 2604|      1|    err = PyObject_SetAttrString(mod, "PROFILER_ID", val);
 2605|      1|    Py_DECREF(val);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2606|      1|    if (err) goto error;
  ------------------
  |  Branch (2606:9): [True: 0, False: 1]
  ------------------
 2607|      1|    val = PyLong_FromLong(PY_MONITORING_OPTIMIZER_ID);
  ------------------
  |  |   23|      1|#define PY_MONITORING_OPTIMIZER_ID 5
  ------------------
 2608|      1|    assert(val != NULL);
  ------------------
  |  Branch (2608:5): [True: 1, False: 0]
  ------------------
 2609|      1|    err = PyObject_SetAttrString(mod, "OPTIMIZER_ID", val);
 2610|      1|    Py_DECREF(val);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2611|      1|    if (err) goto error;
  ------------------
  |  Branch (2611:9): [True: 0, False: 1]
  ------------------
 2612|      1|    return mod;
 2613|      0|error:
 2614|      0|    Py_DECREF(mod);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2615|       |    return NULL;
 2616|      1|}
instrumentation.c:add_power2_constant:
 2502|     19|{
 2503|     19|    PyObject *val = PyLong_FromLong(1<<i);
 2504|     19|    if (val == NULL) {
  ------------------
  |  Branch (2504:9): [True: 0, False: 19]
  ------------------
 2505|      0|        return -1;
 2506|      0|    }
 2507|     19|    int err = PyObject_SetAttrString(obj, name, val);
 2508|     19|    Py_DECREF(val);
  ------------------
  |  |  430|     19|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     19|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     19|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2509|     19|    return err;
 2510|     19|}

intrinsics.c:import_star:
  125|      4|{
  126|      4|    _PyInterpreterFrame *frame = tstate->current_frame;
  127|       |
  128|      4|    PyObject *locals = _PyFrame_GetLocals(frame);
  129|      4|    if (locals == NULL) {
  ------------------
  |  Branch (129:9): [True: 0, False: 4]
  ------------------
  130|      0|        _PyErr_SetString(tstate, PyExc_SystemError,
  131|      0|                            "no locals found during 'import *'");
  132|      0|        return NULL;
  133|      0|    }
  134|      4|    int err = import_all_from(tstate, locals, from);
  135|      4|    Py_DECREF(locals);
  ------------------
  |  |  430|      4|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  136|      4|    if (err < 0) {
  ------------------
  |  Branch (136:9): [True: 0, False: 4]
  ------------------
  137|      0|        return NULL;
  138|      0|    }
  139|      4|    Py_RETURN_NONE;
  ------------------
  |  |  628|      4|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|      4|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
  140|      4|}
intrinsics.c:import_all_from:
   41|      4|{
   42|      4|    PyObject *all, *dict, *name, *value;
   43|      4|    int skip_leading_underscores = 0;
   44|      4|    int pos, err;
   45|       |
   46|      4|    if (PyObject_GetOptionalAttr(v, &_Py_ID(__all__), &all) < 0) {
  ------------------
  |  |  917|      4|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      4|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      4|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (46:9): [True: 0, False: 4]
  ------------------
   47|      0|        return -1; /* Unexpected error */
   48|      0|    }
   49|      4|    if (all == NULL) {
  ------------------
  |  Branch (49:9): [True: 3, False: 1]
  ------------------
   50|      3|        if (PyObject_GetOptionalAttr(v, &_Py_ID(__dict__), &dict) < 0) {
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (50:13): [True: 0, False: 3]
  ------------------
   51|      0|            return -1;
   52|      0|        }
   53|      3|        if (dict == NULL) {
  ------------------
  |  Branch (53:13): [True: 0, False: 3]
  ------------------
   54|      0|            _PyErr_SetString(tstate, PyExc_ImportError,
   55|      0|                    "from-import-* object has no __dict__ and no __all__");
   56|      0|            return -1;
   57|      0|        }
   58|      3|        all = PyMapping_Keys(dict);
   59|      3|        Py_DECREF(dict);
  ------------------
  |  |  430|      3|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   60|      3|        if (all == NULL)
  ------------------
  |  Branch (60:13): [True: 0, False: 3]
  ------------------
   61|      0|            return -1;
   62|      3|        skip_leading_underscores = 1;
   63|      3|    }
   64|       |
   65|    518|    for (pos = 0, err = 0; ; pos++) {
   66|    518|        name = PySequence_GetItem(all, pos);
   67|    518|        if (name == NULL) {
  ------------------
  |  Branch (67:13): [True: 4, False: 514]
  ------------------
   68|      4|            if (!_PyErr_ExceptionMatches(tstate, PyExc_IndexError)) {
  ------------------
  |  Branch (68:17): [True: 0, False: 4]
  ------------------
   69|      0|                err = -1;
   70|      0|            }
   71|      4|            else {
   72|      4|                _PyErr_Clear(tstate);
   73|      4|            }
   74|      4|            break;
   75|      4|        }
   76|    514|        if (!PyUnicode_Check(name)) {
  ------------------
  |  |  103|    514|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|    514|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (76:13): [True: 0, False: 514]
  ------------------
   77|      0|            PyObject *modname = PyObject_GetAttr(v, &_Py_ID(__name__));
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   78|      0|            if (modname == NULL) {
  ------------------
  |  Branch (78:17): [True: 0, False: 0]
  ------------------
   79|      0|                Py_DECREF(name);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   80|      0|                err = -1;
   81|      0|                break;
   82|      0|            }
   83|      0|            if (!PyUnicode_Check(modname)) {
  ------------------
  |  |  103|      0|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (83:17): [True: 0, False: 0]
  ------------------
   84|      0|                _PyErr_Format(tstate, PyExc_TypeError,
   85|      0|                              "module __name__ must be a string, not %.100s",
   86|      0|                              Py_TYPE(modname)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   87|      0|            }
   88|      0|            else {
   89|      0|                _PyErr_Format(tstate, PyExc_TypeError,
   90|      0|                              "%s in %U.%s must be str, not %.100s",
   91|      0|                              skip_leading_underscores ? "Key" : "Item",
  ------------------
  |  Branch (91:31): [True: 0, False: 0]
  ------------------
   92|      0|                              modname,
   93|      0|                              skip_leading_underscores ? "__dict__" : "__all__",
  ------------------
  |  Branch (93:31): [True: 0, False: 0]
  ------------------
   94|      0|                              Py_TYPE(name)->tp_name);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   95|      0|            }
   96|      0|            Py_DECREF(modname);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   97|      0|            Py_DECREF(name);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   98|      0|            err = -1;
   99|      0|            break;
  100|      0|        }
  101|    514|        if (skip_leading_underscores) {
  ------------------
  |  Branch (101:13): [True: 497, False: 17]
  ------------------
  102|    497|            if (PyUnicode_READ_CHAR(name, 0) == '_') {
  ------------------
  |  |  381|    497|    PyUnicode_READ_CHAR(_PyObject_CAST(unicode), (index))
  |  |  ------------------
  |  |  |  |  171|    497|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    497|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (102:17): [True: 25, False: 472]
  ------------------
  103|     25|                Py_DECREF(name);
  ------------------
  |  |  430|     25|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     25|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     25|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  104|     25|                continue;
  105|     25|            }
  106|    497|        }
  107|    489|        value = PyObject_GetAttr(v, name);
  108|    489|        if (value == NULL)
  ------------------
  |  Branch (108:13): [True: 0, False: 489]
  ------------------
  109|      0|            err = -1;
  110|    489|        else if (PyDict_CheckExact(locals))
  ------------------
  |  |   19|    489|#define PyDict_CheckExact(op) Py_IS_TYPE((op), &PyDict_Type)
  |  |  ------------------
  |  |  |  |  215|    489|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    489|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    489|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 489, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  111|    489|            err = PyDict_SetItem(locals, name, value);
  112|      0|        else
  113|      0|            err = PyObject_SetItem(locals, name, value);
  114|    489|        Py_DECREF(name);
  ------------------
  |  |  430|    489|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    489|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    489|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  115|    489|        Py_XDECREF(value);
  ------------------
  |  |  524|    489|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    489|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    489|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  116|    489|        if (err < 0)
  ------------------
  |  Branch (116:13): [True: 0, False: 489]
  ------------------
  117|      0|            break;
  118|    489|    }
  119|      4|    Py_DECREF(all);
  ------------------
  |  |  430|      4|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  120|      4|    return err;
  121|      4|}
intrinsics.c:list_to_tuple:
  194|      4|{
  195|       |    /* INTRINSIC_LIST_TO_TUPLE is only emitted by the compiler for a
  196|       |       freshly-built, uniquely-referenced temporary list, so steal its items
  197|       |       into the tuple instead of copying them. */
  198|      4|    assert(PyList_CheckExact(v));
  ------------------
  |  Branch (198:5): [True: 4, False: 0]
  ------------------
  199|      4|    assert(_PyObject_IsUniquelyReferenced(v));
  ------------------
  |  Branch (199:5): [True: 4, False: 0]
  ------------------
  200|      4|    return _PyList_AsTupleAndClear((PyListObject *)v);
  201|      4|}

_PyMutex_LockTimed:
   57|     60|{
   58|     60|    uint8_t v = _Py_atomic_load_uint8_relaxed(&m->_bits);
   59|     60|    if ((v & _Py_LOCKED) == 0) {
  ------------------
  |  |   10|     60|#define _Py_LOCKED      1
  ------------------
  |  Branch (59:9): [True: 60, False: 0]
  ------------------
   60|     60|        if (_Py_atomic_compare_exchange_uint8(&m->_bits, &v, v|_Py_LOCKED)) {
  ------------------
  |  |   10|     60|#define _Py_LOCKED      1
  ------------------
  |  Branch (60:13): [True: 60, False: 0]
  ------------------
   61|     60|            return PY_LOCK_ACQUIRED;
   62|     60|        }
   63|     60|    }
   64|      0|    if (timeout == 0) {
  ------------------
  |  Branch (64:9): [True: 0, False: 0]
  ------------------
   65|      0|        return PY_LOCK_FAILURE;
   66|      0|    }
   67|       |
   68|      0|    FT_STAT_MUTEX_SLEEP_INC();
   69|       |
   70|      0|    PyTime_t now;
   71|       |    // silently ignore error: cannot report error to the caller
   72|      0|    (void)PyTime_MonotonicRaw(&now);
   73|      0|    PyTime_t endtime = 0;
   74|      0|    if (timeout > 0) {
  ------------------
  |  Branch (74:9): [True: 0, False: 0]
  ------------------
   75|      0|        endtime = _PyTime_Add(now, timeout);
   76|      0|    }
   77|       |
   78|      0|    struct mutex_entry entry = {
   79|      0|        .time_to_be_fair = now + TIME_TO_BE_FAIR_NS,
   80|      0|        .handed_off = 0,
   81|      0|    };
   82|       |
   83|      0|    Py_ssize_t spin_count = 0;
   84|       |#ifdef Py_GIL_DISABLED
   85|       |    // Using thread-id as a way of reducing contention further in the reload below.
   86|       |    // It adds a pseudo-random starting offset to the recurrence, so that threads
   87|       |    // are less likely to try and run compare-exchange at the same time.
   88|       |    // The lower bits of platform thread ids are likely to not be random,
   89|       |    // hence the right shift.
   90|       |    const Py_ssize_t tid = (Py_ssize_t)(_Py_ThreadId() >> 12);
   91|       |#else
   92|      0|    const Py_ssize_t tid = 0;
   93|      0|#endif
   94|      0|    for (;;) {
   95|      0|        if ((v & _Py_LOCKED) == 0) {
  ------------------
  |  |   10|      0|#define _Py_LOCKED      1
  ------------------
  |  Branch (95:13): [True: 0, False: 0]
  ------------------
   96|       |            // The lock is unlocked. Try to grab it.
   97|      0|            if (_Py_atomic_compare_exchange_uint8(&m->_bits, &v, v|_Py_LOCKED)) {
  ------------------
  |  |   10|      0|#define _Py_LOCKED      1
  ------------------
  |  Branch (97:17): [True: 0, False: 0]
  ------------------
   98|      0|                return PY_LOCK_ACQUIRED;
   99|      0|            }
  100|      0|            continue;
  101|      0|        }
  102|       |
  103|      0|        if (!(v & _Py_HAS_PARKED) && spin_count < MAX_SPIN_COUNT) {
  ------------------
  |  |   17|      0|#define _Py_HAS_PARKED  2
  ------------------
  |  Branch (103:13): [True: 0, False: 0]
  |  Branch (103:38): [True: 0, False: 0]
  ------------------
  104|       |            // Spin for a bit.
  105|      0|            _Py_yield();
  106|      0|            spin_count++;
  107|      0|            if (((spin_count + tid) & RELOAD_SPIN_MASK) == 0) {
  ------------------
  |  Branch (107:17): [True: 0, False: 0]
  ------------------
  108|      0|                v = _Py_atomic_load_uint8_relaxed(&m->_bits);
  109|      0|            }
  110|      0|            continue;
  111|      0|        }
  112|       |
  113|      0|        if (timeout == 0) {
  ------------------
  |  Branch (113:13): [True: 0, False: 0]
  ------------------
  114|      0|            return PY_LOCK_FAILURE;
  115|      0|        }
  116|      0|        if ((flags & _PY_LOCK_PYTHONLOCK) && Py_IsFinalizing()) {
  ------------------
  |  Branch (116:13): [True: 0, False: 0]
  |  Branch (116:46): [True: 0, False: 0]
  ------------------
  117|       |            // At this phase of runtime shutdown, only the finalization thread
  118|       |            // can have attached thread state; others hang if they try
  119|       |            // attaching. And since operations on this lock requires attached
  120|       |            // thread state (_PY_LOCK_PYTHONLOCK), the finalization thread is
  121|       |            // running this code, and no other thread can unlock.
  122|       |            // Raise rather than hang. (_PY_LOCK_PYTHONLOCK allows raising
  123|       |            // exceptons.)
  124|      0|            PyErr_SetString(PyExc_PythonFinalizationError,
  125|      0|                            "cannot acquire lock at interpreter finalization");
  126|      0|            return PY_LOCK_FAILURE;
  127|      0|        }
  128|       |
  129|      0|        uint8_t newv = v;
  130|      0|        if (!(v & _Py_HAS_PARKED)) {
  ------------------
  |  |   17|      0|#define _Py_HAS_PARKED  2
  ------------------
  |  Branch (130:13): [True: 0, False: 0]
  ------------------
  131|       |            // We are the first waiter. Set the _Py_HAS_PARKED flag.
  132|      0|            newv = v | _Py_HAS_PARKED;
  ------------------
  |  |   17|      0|#define _Py_HAS_PARKED  2
  ------------------
  133|      0|            if (!_Py_atomic_compare_exchange_uint8(&m->_bits, &v, newv)) {
  ------------------
  |  Branch (133:17): [True: 0, False: 0]
  ------------------
  134|      0|                continue;
  135|      0|            }
  136|      0|        }
  137|       |
  138|      0|        int ret = _PyParkingLot_Park(&m->_bits, &newv, sizeof(newv), timeout,
  139|      0|                                     &entry, (flags & _PY_LOCK_DETACH) != 0);
  140|      0|        if (ret == Py_PARK_OK) {
  ------------------
  |  Branch (140:13): [True: 0, False: 0]
  ------------------
  141|      0|            if (entry.handed_off) {
  ------------------
  |  Branch (141:17): [True: 0, False: 0]
  ------------------
  142|       |                // We own the lock now. thread.Lock allows other threads
  143|       |                // to concurrently release the lock so we cannot assert that
  144|       |                // it is locked if _PY_LOCK_PYTHONLOCK is set.
  145|      0|                assert(_Py_atomic_load_uint8_relaxed(&m->_bits) & _Py_LOCKED ||
  ------------------
  |  Branch (145:17): [True: 0, False: 0]
  |  Branch (145:17): [True: 0, False: 0]
  ------------------
  146|      0|                       (flags & _PY_LOCK_PYTHONLOCK) != 0);
  147|      0|                return PY_LOCK_ACQUIRED;
  148|      0|            }
  149|      0|        }
  150|      0|        else if (ret == Py_PARK_INTR && (flags & _PY_LOCK_HANDLE_SIGNALS)) {
  ------------------
  |  Branch (150:18): [True: 0, False: 0]
  |  Branch (150:41): [True: 0, False: 0]
  ------------------
  151|      0|            if (Py_MakePendingCalls() < 0) {
  ------------------
  |  Branch (151:17): [True: 0, False: 0]
  ------------------
  152|      0|                return PY_LOCK_INTR;
  153|      0|            }
  154|      0|        }
  155|      0|        else if (ret == Py_PARK_INTR && (flags & _PY_FAIL_IF_INTERRUPTED)) {
  ------------------
  |  Branch (155:18): [True: 0, False: 0]
  |  Branch (155:41): [True: 0, False: 0]
  ------------------
  156|      0|            return PY_LOCK_INTR;
  157|      0|        }
  158|      0|        else if (ret == Py_PARK_TIMEOUT) {
  ------------------
  |  Branch (158:18): [True: 0, False: 0]
  ------------------
  159|      0|            assert(timeout >= 0);
  ------------------
  |  Branch (159:13): [True: 0, False: 0]
  ------------------
  160|      0|            return PY_LOCK_FAILURE;
  161|      0|        }
  162|       |
  163|      0|        if (timeout > 0) {
  ------------------
  |  Branch (163:13): [True: 0, False: 0]
  ------------------
  164|      0|            timeout = _PyDeadline_Get(endtime);
  165|      0|            if (timeout <= 0) {
  ------------------
  |  Branch (165:17): [True: 0, False: 0]
  ------------------
  166|       |                // Avoid negative values because those mean block forever.
  167|      0|                timeout = 0;
  168|      0|            }
  169|      0|        }
  170|       |
  171|      0|        v = _Py_atomic_load_uint8_relaxed(&m->_bits);
  172|      0|    }
  173|      0|}
_PyOnceFlag_CallOnceSlow:
  372|      1|{
  373|      1|    uint8_t v = _Py_atomic_load_uint8(&flag->v);
  374|      1|    for (;;) {
  375|      1|        if (v == _Py_UNLOCKED) {
  ------------------
  |  |    9|      1|#define _Py_UNLOCKED    0
  ------------------
  |  Branch (375:13): [True: 1, False: 0]
  ------------------
  376|      1|            if (!_Py_atomic_compare_exchange_uint8(&flag->v, &v, _Py_LOCKED)) {
  ------------------
  |  |   10|      1|#define _Py_LOCKED      1
  ------------------
  |  Branch (376:17): [True: 0, False: 1]
  ------------------
  377|      0|                continue;
  378|      0|            }
  379|      1|            int res = fn(arg);
  380|      1|            return unlock_once(flag, res);
  381|      1|        }
  382|       |
  383|      0|        if (v == _Py_ONCE_INITIALIZED) {
  ------------------
  |  |   18|      0|#define _Py_ONCE_INITIALIZED 4
  ------------------
  |  Branch (383:13): [True: 0, False: 0]
  ------------------
  384|      0|            return 0;
  385|      0|        }
  386|       |
  387|       |        // The once flag is initializing (locked).
  388|      0|        assert((v & _Py_LOCKED));
  ------------------
  |  Branch (388:9): [True: 0, False: 0]
  ------------------
  389|      0|        if (!(v & _Py_HAS_PARKED)) {
  ------------------
  |  |   17|      0|#define _Py_HAS_PARKED  2
  ------------------
  |  Branch (389:13): [True: 0, False: 0]
  ------------------
  390|       |            // We are the first waiter. Set the _Py_HAS_PARKED flag.
  391|      0|            uint8_t new_value = v | _Py_HAS_PARKED;
  ------------------
  |  |   17|      0|#define _Py_HAS_PARKED  2
  ------------------
  392|      0|            if (!_Py_atomic_compare_exchange_uint8(&flag->v, &v, new_value)) {
  ------------------
  |  Branch (392:17): [True: 0, False: 0]
  ------------------
  393|      0|                continue;
  394|      0|            }
  395|      0|            v = new_value;
  396|      0|        }
  397|       |
  398|       |        // Wait for initialization to finish.
  399|      0|        _PyParkingLot_Park(&flag->v, &v, sizeof(v), -1, NULL, 1);
  400|      0|        v = _Py_atomic_load_uint8(&flag->v);
  401|      0|    }
  402|      1|}
_PyRecursiveMutex_IsLockedByCurrentThread:
  412|     96|{
  413|     96|    return recursive_mutex_is_owned_by(m, PyThread_get_thread_ident_ex());
  414|     96|}
_PyRecursiveMutex_Lock:
  418|     96|{
  419|     96|    PyThread_ident_t thread = PyThread_get_thread_ident_ex();
  420|     96|    if (recursive_mutex_is_owned_by(m, thread)) {
  ------------------
  |  Branch (420:9): [True: 0, False: 96]
  ------------------
  421|      0|        m->level++;
  422|      0|        return;
  423|      0|    }
  424|     96|    PyMutex_Lock(&m->mutex);
  ------------------
  |  |   59|     96|#define PyMutex_Lock _PyMutex_Lock
  ------------------
  425|     96|    _Py_atomic_store_ullong_relaxed(&m->thread, thread);
  426|       |    assert(m->level == 0);
  ------------------
  |  Branch (426:5): [True: 96, False: 0]
  ------------------
  427|     96|}
_PyRecursiveMutex_LockTimed:
  431|     60|{
  432|     60|    PyThread_ident_t thread = PyThread_get_thread_ident_ex();
  433|     60|    if (recursive_mutex_is_owned_by(m, thread)) {
  ------------------
  |  Branch (433:9): [True: 0, False: 60]
  ------------------
  434|      0|        m->level++;
  435|      0|        return PY_LOCK_ACQUIRED;
  436|      0|    }
  437|     60|    PyLockStatus s = _PyMutex_LockTimed(&m->mutex, timeout, flags);
  438|     60|    if (s == PY_LOCK_ACQUIRED) {
  ------------------
  |  Branch (438:9): [True: 60, False: 0]
  ------------------
  439|     60|        _Py_atomic_store_ullong_relaxed(&m->thread, thread);
  440|     60|        assert(m->level == 0);
  ------------------
  |  Branch (440:9): [True: 60, False: 0]
  ------------------
  441|     60|    }
  442|     60|    return s;
  443|     60|}
_PyRecursiveMutex_Unlock:
  447|     96|{
  448|     96|    if (_PyRecursiveMutex_TryUnlock(m) < 0) {
  ------------------
  |  Branch (448:9): [True: 0, False: 96]
  ------------------
  449|      0|        Py_FatalError("unlocking a recursive mutex that is not "
  ------------------
  |  |  133|      0|#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))
  ------------------
  450|      0|                      "owned by the current thread");
  451|      0|    }
  452|     96|}
_PyRecursiveMutex_TryUnlock:
  456|    156|{
  457|    156|    PyThread_ident_t thread = PyThread_get_thread_ident_ex();
  458|    156|    if (!recursive_mutex_is_owned_by(m, thread)) {
  ------------------
  |  Branch (458:9): [True: 0, False: 156]
  ------------------
  459|      0|        return -1;
  460|      0|    }
  461|    156|    if (m->level > 0) {
  ------------------
  |  Branch (461:9): [True: 0, False: 156]
  ------------------
  462|      0|        m->level--;
  463|      0|        return 0;
  464|      0|    }
  465|    156|    assert(m->level == 0);
  ------------------
  |  Branch (465:5): [True: 156, False: 0]
  ------------------
  466|    156|    _Py_atomic_store_ullong_relaxed(&m->thread, 0);
  467|    156|    PyMutex_Unlock(&m->mutex);
  ------------------
  |  |   70|    156|#define PyMutex_Unlock _PyMutex_Unlock
  ------------------
  468|    156|    return 0;
  469|    156|}
lock.c:unlock_once:
  348|      1|{
  349|       |    // On success (res=0), we set the state to _Py_ONCE_INITIALIZED.
  350|       |    // On failure (res=-1), we reset the state to _Py_UNLOCKED.
  351|      1|    uint8_t new_value;
  352|      1|    switch (res) {
  353|      0|        case -1: new_value = _Py_UNLOCKED; break;
  ------------------
  |  |    9|      0|#define _Py_UNLOCKED    0
  ------------------
  |  Branch (353:9): [True: 0, False: 1]
  ------------------
  354|      1|        case  0: new_value = _Py_ONCE_INITIALIZED; break;
  ------------------
  |  |   18|      1|#define _Py_ONCE_INITIALIZED 4
  ------------------
  |  Branch (354:9): [True: 1, False: 0]
  ------------------
  355|      0|        default: {
  ------------------
  |  Branch (355:9): [True: 0, False: 1]
  ------------------
  356|      0|            Py_FatalError("invalid result from _PyOnceFlag_CallOnce");
  ------------------
  |  |  133|      0|#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))
  ------------------
  357|      0|            Py_UNREACHABLE();
  ------------------
  |  |  264|      0|#  define Py_UNREACHABLE() __builtin_unreachable()
  ------------------
  358|      0|            break;
  359|      0|        }
  360|      1|    }
  361|       |
  362|      1|    uint8_t old_value = _Py_atomic_exchange_uint8(&o->v, new_value);
  363|      1|    if ((old_value & _Py_HAS_PARKED) != 0) {
  ------------------
  |  |   17|      1|#define _Py_HAS_PARKED  2
  ------------------
  |  Branch (363:9): [True: 0, False: 1]
  ------------------
  364|       |        // wake up anyone waiting on the once flag
  365|      0|        _PyParkingLot_UnparkAll(&o->v);
  366|      0|    }
  367|      1|    return res;
  368|      1|}
lock.c:recursive_mutex_is_owned_by:
  406|    408|{
  407|    408|    return _Py_atomic_load_ullong_relaxed(&m->thread) == tid;
  408|    408|}

PyMarshal_ReadObjectFromString:
 1882|     16|{
 1883|     16|    RFILE rf;
 1884|     16|    PyObject *result;
 1885|     16|    rf.allow_code = 1;
 1886|     16|    rf.fp = NULL;
 1887|     16|    rf.readable = NULL;
 1888|     16|    rf.ptr = str;
 1889|     16|    rf.end = str + len;
 1890|     16|    rf.buf = NULL;
 1891|     16|    rf.depth = 0;
 1892|     16|    rf.refs = PyList_New(0);
 1893|     16|    if (rf.refs == NULL)
  ------------------
  |  Branch (1893:9): [True: 0, False: 16]
  ------------------
 1894|      0|        return NULL;
 1895|     16|    result = read_object(&rf);
 1896|     16|    Py_DECREF(rf.refs);
  ------------------
  |  |  430|     16|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     16|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     16|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1897|     16|    if (rf.buf != NULL)
  ------------------
  |  Branch (1897:9): [True: 0, False: 16]
  ------------------
 1898|      0|        PyMem_Free(rf.buf);
 1899|     16|    return result;
 1900|     16|}
PyMarshal_Init:
 2192|      1|{
 2193|      1|    return PyModuleDef_Init(&marshalmodule);
 2194|      1|}
marshal.c:r_short:
  937|     12|{
  938|     12|    short x = -1;
  939|     12|    const unsigned char *buffer;
  940|       |
  941|     12|    buffer = (const unsigned char *) r_string(2, p);
  942|     12|    if (buffer != NULL) {
  ------------------
  |  Branch (942:9): [True: 12, False: 0]
  ------------------
  943|     12|        x = buffer[0];
  944|     12|        x |= buffer[1] << 8;
  945|       |        /* Sign-extension, in case short greater than 16 bits */
  946|     12|        x |= -(x & 0x8000);
  947|     12|    }
  948|     12|    return x;
  949|     12|}
marshal.c:r_string:
  839|  21.6k|{
  840|  21.6k|    Py_ssize_t read = -1;
  841|       |
  842|  21.6k|    if (p->ptr != NULL) {
  ------------------
  |  Branch (842:9): [True: 21.6k, False: 0]
  ------------------
  843|       |        /* Fast path for loads() */
  844|  21.6k|        const char *res = p->ptr;
  845|  21.6k|        Py_ssize_t left = p->end - p->ptr;
  846|  21.6k|        if (left < n) {
  ------------------
  |  Branch (846:13): [True: 0, False: 21.6k]
  ------------------
  847|      0|            PyErr_SetString(PyExc_EOFError,
  848|      0|                            "marshal data too short");
  849|      0|            return NULL;
  850|      0|        }
  851|  21.6k|        p->ptr += n;
  852|  21.6k|        return res;
  853|  21.6k|    }
  854|      0|    if (p->buf == NULL) {
  ------------------
  |  Branch (854:9): [True: 0, False: 0]
  ------------------
  855|      0|        p->buf = PyMem_Malloc(n);
  856|      0|        if (p->buf == NULL) {
  ------------------
  |  Branch (856:13): [True: 0, False: 0]
  ------------------
  857|      0|            PyErr_NoMemory();
  858|      0|            return NULL;
  859|      0|        }
  860|      0|        p->buf_size = n;
  861|      0|    }
  862|      0|    else if (p->buf_size < n) {
  ------------------
  |  Branch (862:14): [True: 0, False: 0]
  ------------------
  863|      0|        char *tmp = PyMem_Realloc(p->buf, n);
  864|      0|        if (tmp == NULL) {
  ------------------
  |  Branch (864:13): [True: 0, False: 0]
  ------------------
  865|      0|            PyErr_NoMemory();
  866|      0|            return NULL;
  867|      0|        }
  868|      0|        p->buf = tmp;
  869|      0|        p->buf_size = n;
  870|      0|    }
  871|       |
  872|      0|    if (!p->readable) {
  ------------------
  |  Branch (872:9): [True: 0, False: 0]
  ------------------
  873|      0|        assert(p->fp != NULL);
  ------------------
  |  Branch (873:9): [True: 0, False: 0]
  ------------------
  874|      0|        read = fread(p->buf, 1, n, p->fp);
  875|      0|    }
  876|      0|    else {
  877|      0|        PyObject *res, *mview;
  878|      0|        Py_buffer buf;
  879|       |
  880|      0|        if (PyBuffer_FillInfo(&buf, NULL, p->buf, n, 0, PyBUF_CONTIG) == -1)
  ------------------
  |  |  124|      0|#define PyBUF_CONTIG (PyBUF_ND | PyBUF_WRITABLE)
  |  |  ------------------
  |  |  |  |  117|      0|#define PyBUF_ND 0x0008
  |  |  ------------------
  |  |               #define PyBUF_CONTIG (PyBUF_ND | PyBUF_WRITABLE)
  |  |  ------------------
  |  |  |  |  109|      0|#define PyBUF_WRITABLE 0x0001
  |  |  ------------------
  ------------------
  |  Branch (880:13): [True: 0, False: 0]
  ------------------
  881|      0|            return NULL;
  882|      0|        mview = PyMemoryView_FromBuffer(&buf);
  883|      0|        if (mview == NULL)
  ------------------
  |  Branch (883:13): [True: 0, False: 0]
  ------------------
  884|      0|            return NULL;
  885|       |
  886|      0|        res = _PyObject_CallMethod(p->readable, &_Py_ID(readinto), "N", mview);
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  887|      0|        if (res != NULL) {
  ------------------
  |  Branch (887:13): [True: 0, False: 0]
  ------------------
  888|      0|            read = PyNumber_AsSsize_t(res, PyExc_ValueError);
  889|      0|            Py_DECREF(res);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  890|      0|        }
  891|      0|    }
  892|      0|    if (read != n) {
  ------------------
  |  Branch (892:9): [True: 0, False: 0]
  ------------------
  893|      0|        if (!PyErr_Occurred()) {
  ------------------
  |  Branch (893:13): [True: 0, False: 0]
  ------------------
  894|      0|            if (read > n)
  ------------------
  |  Branch (894:17): [True: 0, False: 0]
  ------------------
  895|      0|                PyErr_Format(PyExc_ValueError,
  896|      0|                             "read() returned too much data: "
  897|      0|                             "%zd bytes requested, %zd returned",
  898|      0|                             n, read);
  899|      0|            else
  900|      0|                PyErr_SetString(PyExc_EOFError,
  901|      0|                                "EOF read where not expected");
  902|      0|        }
  903|      0|        return NULL;
  904|      0|    }
  905|      0|    return p->buf;
  906|      0|}
marshal.c:r_long:
  953|  14.8k|{
  954|  14.8k|    long x = -1;
  955|  14.8k|    const unsigned char *buffer;
  956|       |
  957|  14.8k|    buffer = (const unsigned char *) r_string(4, p);
  958|  14.8k|    if (buffer != NULL) {
  ------------------
  |  Branch (958:9): [True: 14.8k, False: 0]
  ------------------
  959|  14.8k|        x = buffer[0];
  960|  14.8k|        x |= (long)buffer[1] << 8;
  961|  14.8k|        x |= (long)buffer[2] << 16;
  962|  14.8k|        x |= (long)buffer[3] << 24;
  963|  14.8k|#if SIZEOF_LONG > 4
  964|       |        /* Sign extension for 64-bit machines */
  965|  14.8k|        x |= -(x & 0x80000000L);
  966|  14.8k|#endif
  967|  14.8k|    }
  968|  14.8k|    return x;
  969|  14.8k|}
marshal.c:read_object:
 1761|     16|{
 1762|     16|    PyObject *v;
 1763|     16|    if (PyErr_Occurred()) {
  ------------------
  |  Branch (1763:9): [True: 0, False: 16]
  ------------------
 1764|      0|        fprintf(stderr, "XXX readobject called with exception set\n");
 1765|      0|        return NULL;
 1766|      0|    }
 1767|     16|    if (p->ptr && p->end) {
  ------------------
  |  Branch (1767:9): [True: 16, False: 0]
  |  Branch (1767:19): [True: 16, False: 0]
  ------------------
 1768|     16|        if (PySys_Audit("marshal.loads", "y#", p->ptr, (Py_ssize_t)(p->end - p->ptr)) < 0) {
  ------------------
  |  Branch (1768:13): [True: 0, False: 16]
  ------------------
 1769|      0|            return NULL;
 1770|      0|        }
 1771|     16|    } else if (p->fp || p->readable) {
  ------------------
  |  Branch (1771:16): [True: 0, False: 0]
  |  Branch (1771:25): [True: 0, False: 0]
  ------------------
 1772|      0|        if (PySys_Audit("marshal.load", NULL) < 0) {
  ------------------
  |  Branch (1772:13): [True: 0, False: 0]
  ------------------
 1773|      0|            return NULL;
 1774|      0|        }
 1775|      0|    }
 1776|     16|    v = r_object(p);
 1777|     16|    if (v == NULL && !PyErr_Occurred())
  ------------------
  |  Branch (1777:9): [True: 0, False: 16]
  |  Branch (1777:22): [True: 0, False: 0]
  ------------------
 1778|      0|        PyErr_SetString(PyExc_TypeError, "NULL object in marshal data for object");
 1779|     16|    return v;
 1780|     16|}
marshal.c:r_object:
 1174|  17.5k|{
 1175|       |    /* NULL is a valid return value, it does not necessarily means that
 1176|       |       an exception is set. */
 1177|  17.5k|    PyObject *v, *v2;
 1178|  17.5k|    Py_ssize_t idx = 0;
 1179|  17.5k|    long i, n;
 1180|  17.5k|    int type, code = r_byte(p);
 1181|  17.5k|    int flag, is_interned = 0;
 1182|  17.5k|    PyObject *retval = NULL;
 1183|       |
 1184|  17.5k|    if (code == EOF) {
  ------------------
  |  Branch (1184:9): [True: 0, False: 17.5k]
  ------------------
 1185|      0|        if (PyErr_ExceptionMatches(PyExc_EOFError)) {
  ------------------
  |  Branch (1185:13): [True: 0, False: 0]
  ------------------
 1186|      0|            PyErr_SetString(PyExc_EOFError,
 1187|      0|                            "EOF read where object expected");
 1188|      0|        }
 1189|      0|        return NULL;
 1190|      0|    }
 1191|       |
 1192|  17.5k|    p->depth++;
 1193|       |
 1194|  17.5k|    if (p->depth > MAX_MARSHAL_STACK_DEPTH) {
  ------------------
  |  |   54|  17.5k|#  define MAX_MARSHAL_STACK_DEPTH 2000
  ------------------
  |  Branch (1194:9): [True: 0, False: 17.5k]
  ------------------
 1195|      0|        p->depth--;
 1196|      0|        PyErr_SetString(PyExc_ValueError, "recursion limit exceeded");
 1197|      0|        return NULL;
 1198|      0|    }
 1199|       |
 1200|  17.5k|    flag = code & FLAG_REF;
  ------------------
  |  |  100|  17.5k|#define FLAG_REF                '\x80' /* with a type, add obj to index */
  ------------------
 1201|  17.5k|    type = code & ~FLAG_REF;
  ------------------
  |  |  100|  17.5k|#define FLAG_REF                '\x80' /* with a type, add obj to index */
  ------------------
 1202|       |
 1203|  17.5k|#define R_REF(O) do{\
 1204|  17.5k|    if (flag) \
 1205|  17.5k|        O = r_ref(O, flag, p);\
 1206|  17.5k|} while (0)
 1207|       |
 1208|  17.5k|    switch (type) {
 1209|       |
 1210|      0|    case TYPE_NULL:
  ------------------
  |  |   58|      0|#define TYPE_NULL               '0'
  ------------------
  |  Branch (1210:5): [True: 0, False: 17.5k]
  ------------------
 1211|      0|        break;
 1212|       |
 1213|    122|    case TYPE_NONE:
  ------------------
  |  |   59|    122|#define TYPE_NONE               'N'
  ------------------
  |  Branch (1213:5): [True: 122, False: 17.3k]
  ------------------
 1214|    122|        retval = Py_None;
  ------------------
  |  |  616|    122|#  define Py_None (&_Py_NoneStruct)
  ------------------
 1215|    122|        break;
 1216|       |
 1217|      0|    case TYPE_STOPITER:
  ------------------
  |  |   62|      0|#define TYPE_STOPITER           'S'
  ------------------
  |  Branch (1217:5): [True: 0, False: 17.5k]
  ------------------
 1218|      0|        retval = Py_NewRef(PyExc_StopIteration);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1219|      0|        break;
 1220|       |
 1221|      1|    case TYPE_ELLIPSIS:
  ------------------
  |  |   63|      1|#define TYPE_ELLIPSIS           '.'
  ------------------
  |  Branch (1221:5): [True: 1, False: 17.5k]
  ------------------
 1222|      1|        retval = Py_Ellipsis;
  ------------------
  |  |   14|      1|#  define Py_Ellipsis (&_Py_EllipsisObject)
  ------------------
 1223|      1|        break;
 1224|       |
 1225|     12|    case TYPE_FALSE:
  ------------------
  |  |   60|     12|#define TYPE_FALSE              'F'
  ------------------
  |  Branch (1225:5): [True: 12, False: 17.5k]
  ------------------
 1226|     12|        retval = Py_False;
  ------------------
  |  |   25|     12|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  ------------------
  |  |  |  |  171|     12|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     12|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1227|     12|        break;
 1228|       |
 1229|     13|    case TYPE_TRUE:
  ------------------
  |  |   61|     13|#define TYPE_TRUE               'T'
  ------------------
  |  Branch (1229:5): [True: 13, False: 17.5k]
  ------------------
 1230|     13|        retval = Py_True;
  ------------------
  |  |   26|     13|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  ------------------
  |  |  |  |  171|     13|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     13|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1231|     13|        break;
 1232|       |
 1233|    153|    case TYPE_INT:
  ------------------
  |  |   90|    153|#define TYPE_INT                'i'  // All versions. 32-bit encoding.
  ------------------
  |  Branch (1233:5): [True: 153, False: 17.3k]
  ------------------
 1234|    153|        n = r_long(p);
 1235|    153|        if (n == -1 && PyErr_Occurred()) {
  ------------------
  |  Branch (1235:13): [True: 3, False: 150]
  |  Branch (1235:24): [True: 0, False: 3]
  ------------------
 1236|      0|            break;
 1237|      0|        }
 1238|    153|        retval = PyLong_FromLong(n);
 1239|    153|        R_REF(retval);
  ------------------
  |  | 1203|    153|#define R_REF(O) do{\
  |  | 1204|    153|    if (flag) \
  |  |  ------------------
  |  |  |  Branch (1204:9): [True: 106, False: 47]
  |  |  ------------------
  |  | 1205|    153|        O = r_ref(O, flag, p);\
  |  | 1206|    153|} while (0)
  |  |  ------------------
  |  |  |  Branch (1206:10): [Folded, False: 153]
  |  |  ------------------
  ------------------
 1240|    153|        break;
 1241|       |
 1242|      0|    case TYPE_INT64:
  ------------------
  |  |   96|      0|#define TYPE_INT64              'I'  // Not generated any more.
  ------------------
  |  Branch (1242:5): [True: 0, False: 17.5k]
  ------------------
 1243|      0|        retval = r_long64(p);
 1244|      0|        R_REF(retval);
  ------------------
  |  | 1203|      0|#define R_REF(O) do{\
  |  | 1204|      0|    if (flag) \
  |  |  ------------------
  |  |  |  Branch (1204:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 1205|      0|        O = r_ref(O, flag, p);\
  |  | 1206|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1206:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1245|      0|        break;
 1246|       |
 1247|      4|    case TYPE_LONG:
  ------------------
  |  |   66|      4|#define TYPE_LONG               'l'  // See also TYPE_INT.
  ------------------
  |  Branch (1247:5): [True: 4, False: 17.5k]
  ------------------
 1248|      4|        retval = r_PyLong(p);
 1249|      4|        R_REF(retval);
  ------------------
  |  | 1203|      4|#define R_REF(O) do{\
  |  | 1204|      4|    if (flag) \
  |  |  ------------------
  |  |  |  Branch (1204:9): [True: 1, False: 3]
  |  |  ------------------
  |  | 1205|      4|        O = r_ref(O, flag, p);\
  |  | 1206|      4|} while (0)
  |  |  ------------------
  |  |  |  Branch (1206:10): [Folded, False: 4]
  |  |  ------------------
  ------------------
 1250|      4|        break;
 1251|       |
 1252|      0|    case TYPE_FLOAT:
  ------------------
  |  |   95|      0|#define TYPE_FLOAT              'f'  // Generated for version 0 only.
  ------------------
  |  Branch (1252:5): [True: 0, False: 17.5k]
  ------------------
 1253|      0|        {
 1254|      0|            double x = r_float_str(p);
 1255|      0|            if (x == -1.0 && PyErr_Occurred())
  ------------------
  |  Branch (1255:17): [True: 0, False: 0]
  |  Branch (1255:30): [True: 0, False: 0]
  ------------------
 1256|      0|                break;
 1257|      0|            retval = PyFloat_FromDouble(x);
 1258|      0|            R_REF(retval);
  ------------------
  |  | 1203|      0|#define R_REF(O) do{\
  |  | 1204|      0|    if (flag) \
  |  |  ------------------
  |  |  |  Branch (1204:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 1205|      0|        O = r_ref(O, flag, p);\
  |  | 1206|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1206:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1259|      0|            break;
 1260|      0|        }
 1261|       |
 1262|      0|    case TYPE_BINARY_FLOAT:
  ------------------
  |  |   64|      0|#define TYPE_BINARY_FLOAT       'g'  // Version 0 uses TYPE_FLOAT instead.
  ------------------
  |  Branch (1262:5): [True: 0, False: 17.5k]
  ------------------
 1263|      0|        {
 1264|      0|            double x = r_float_bin(p);
 1265|      0|            if (x == -1.0 && PyErr_Occurred())
  ------------------
  |  Branch (1265:17): [True: 0, False: 0]
  |  Branch (1265:30): [True: 0, False: 0]
  ------------------
 1266|      0|                break;
 1267|      0|            retval = PyFloat_FromDouble(x);
 1268|      0|            R_REF(retval);
  ------------------
  |  | 1203|      0|#define R_REF(O) do{\
  |  | 1204|      0|    if (flag) \
  |  |  ------------------
  |  |  |  Branch (1204:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 1205|      0|        O = r_ref(O, flag, p);\
  |  | 1206|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1206:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1269|      0|            break;
 1270|      0|        }
 1271|       |
 1272|      0|    case TYPE_COMPLEX:
  ------------------
  |  |   94|      0|#define TYPE_COMPLEX            'x'  // Generated for version 0 only.
  ------------------
  |  Branch (1272:5): [True: 0, False: 17.5k]
  ------------------
 1273|      0|        {
 1274|      0|            Py_complex c;
 1275|      0|            c.real = r_float_str(p);
 1276|      0|            if (c.real == -1.0 && PyErr_Occurred())
  ------------------
  |  Branch (1276:17): [True: 0, False: 0]
  |  Branch (1276:35): [True: 0, False: 0]
  ------------------
 1277|      0|                break;
 1278|      0|            c.imag = r_float_str(p);
 1279|      0|            if (c.imag == -1.0 && PyErr_Occurred())
  ------------------
  |  Branch (1279:17): [True: 0, False: 0]
  |  Branch (1279:35): [True: 0, False: 0]
  ------------------
 1280|      0|                break;
 1281|      0|            retval = PyComplex_FromCComplex(c);
 1282|      0|            R_REF(retval);
  ------------------
  |  | 1203|      0|#define R_REF(O) do{\
  |  | 1204|      0|    if (flag) \
  |  |  ------------------
  |  |  |  Branch (1204:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 1205|      0|        O = r_ref(O, flag, p);\
  |  | 1206|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1206:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1283|      0|            break;
 1284|      0|        }
 1285|       |
 1286|      0|    case TYPE_BINARY_COMPLEX:
  ------------------
  |  |   65|      0|#define TYPE_BINARY_COMPLEX     'y'  // Version 0 uses TYPE_COMPLEX instead.
  ------------------
  |  Branch (1286:5): [True: 0, False: 17.5k]
  ------------------
 1287|      0|        {
 1288|      0|            Py_complex c;
 1289|      0|            c.real = r_float_bin(p);
 1290|      0|            if (c.real == -1.0 && PyErr_Occurred())
  ------------------
  |  Branch (1290:17): [True: 0, False: 0]
  |  Branch (1290:35): [True: 0, False: 0]
  ------------------
 1291|      0|                break;
 1292|      0|            c.imag = r_float_bin(p);
 1293|      0|            if (c.imag == -1.0 && PyErr_Occurred())
  ------------------
  |  Branch (1293:17): [True: 0, False: 0]
  |  Branch (1293:35): [True: 0, False: 0]
  ------------------
 1294|      0|                break;
 1295|      0|            retval = PyComplex_FromCComplex(c);
 1296|      0|            R_REF(retval);
  ------------------
  |  | 1203|      0|#define R_REF(O) do{\
  |  | 1204|      0|    if (flag) \
  |  |  ------------------
  |  |  |  Branch (1204:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 1205|      0|        O = r_ref(O, flag, p);\
  |  | 1206|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1206:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1297|      0|            break;
 1298|      0|        }
 1299|       |
 1300|  2.31k|    case TYPE_STRING:
  ------------------
  |  |   67|  2.31k|#define TYPE_STRING             's'  // Bytes. (Name comes from Python 2.)
  ------------------
  |  Branch (1300:5): [True: 2.31k, False: 15.2k]
  ------------------
 1301|  2.31k|        {
 1302|  2.31k|            const char *ptr;
 1303|  2.31k|            n = r_long(p);
 1304|  2.31k|            if (n < 0 || n > SIZE32_MAX) {
  ------------------
  |  |  212|  2.31k|#define SIZE32_MAX  0x7FFFFFFF
  ------------------
  |  Branch (1304:17): [True: 0, False: 2.31k]
  |  Branch (1304:26): [True: 0, False: 2.31k]
  ------------------
 1305|      0|                if (!PyErr_Occurred()) {
  ------------------
  |  Branch (1305:21): [True: 0, False: 0]
  ------------------
 1306|      0|                    PyErr_SetString(PyExc_ValueError,
 1307|      0|                        "bad marshal data (bytes object size out of range)");
 1308|      0|                }
 1309|      0|                break;
 1310|      0|            }
 1311|  2.31k|            v = PyBytes_FromStringAndSize((char *)NULL, n);
 1312|  2.31k|            if (v == NULL)
  ------------------
  |  Branch (1312:17): [True: 0, False: 2.31k]
  ------------------
 1313|      0|                break;
 1314|  2.31k|            ptr = r_string(n, p);
 1315|  2.31k|            if (ptr == NULL) {
  ------------------
  |  Branch (1315:17): [True: 0, False: 2.31k]
  ------------------
 1316|      0|                Py_DECREF(v);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1317|      0|                break;
 1318|      0|            }
 1319|  2.31k|            memcpy(PyBytes_AS_STRING(v), ptr, n);
  ------------------
  |  |   27|  2.31k|#define PyBytes_AS_STRING(op) PyBytes_AS_STRING(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  2.31k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  2.31k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1320|  2.31k|            retval = v;
 1321|  2.31k|            R_REF(retval);
  ------------------
  |  | 1203|  2.31k|#define R_REF(O) do{\
  |  | 1204|  2.31k|    if (flag) \
  |  |  ------------------
  |  |  |  Branch (1204:9): [True: 828, False: 1.48k]
  |  |  ------------------
  |  | 1205|  2.31k|        O = r_ref(O, flag, p);\
  |  | 1206|  2.31k|} while (0)
  |  |  ------------------
  |  |  |  Branch (1206:10): [Folded, False: 2.31k]
  |  |  ------------------
  ------------------
 1322|  2.31k|            break;
 1323|  2.31k|        }
 1324|       |
 1325|      0|    case TYPE_ASCII_INTERNED:
  ------------------
  |  |   85|      0|#define TYPE_ASCII_INTERNED     'A'
  ------------------
  |  Branch (1325:5): [True: 0, False: 17.5k]
  ------------------
 1326|      0|        is_interned = 1;
 1327|      0|        _Py_FALLTHROUGH;
  ------------------
  |  |  644|      0|#  define _Py_FALLTHROUGH __attribute__((fallthrough))
  ------------------
 1328|     69|    case TYPE_ASCII:
  ------------------
  |  |   84|     69|#define TYPE_ASCII              'a'
  ------------------
  |  Branch (1328:5): [True: 69, False: 17.4k]
  ------------------
 1329|     69|        n = r_long(p);
 1330|     69|        if (n < 0 || n > SIZE32_MAX) {
  ------------------
  |  |  212|     69|#define SIZE32_MAX  0x7FFFFFFF
  ------------------
  |  Branch (1330:13): [True: 0, False: 69]
  |  Branch (1330:22): [True: 0, False: 69]
  ------------------
 1331|      0|            if (!PyErr_Occurred()) {
  ------------------
  |  Branch (1331:17): [True: 0, False: 0]
  ------------------
 1332|      0|                PyErr_SetString(PyExc_ValueError,
 1333|      0|                    "bad marshal data (string size out of range)");
 1334|      0|            }
 1335|      0|            break;
 1336|      0|        }
 1337|     69|        goto _read_ascii;
 1338|       |
 1339|  3.79k|    case TYPE_SHORT_ASCII_INTERNED:
  ------------------
  |  |   87|  3.79k|#define TYPE_SHORT_ASCII_INTERNED 'Z'
  ------------------
  |  Branch (1339:5): [True: 3.79k, False: 13.7k]
  ------------------
 1340|  3.79k|        is_interned = 1;
 1341|  3.79k|        _Py_FALLTHROUGH;
  ------------------
  |  |  644|  3.79k|#  define _Py_FALLTHROUGH __attribute__((fallthrough))
  ------------------
 1342|  4.41k|    case TYPE_SHORT_ASCII:
  ------------------
  |  |   86|  4.41k|#define TYPE_SHORT_ASCII        'z'
  ------------------
  |  Branch (1342:5): [True: 621, False: 16.8k]
  ------------------
 1343|  4.41k|        n = r_byte(p);
 1344|  4.41k|        if (n == EOF) {
  ------------------
  |  Branch (1344:13): [True: 0, False: 4.41k]
  ------------------
 1345|      0|            break;
 1346|      0|        }
 1347|  4.48k|    _read_ascii:
 1348|  4.48k|        {
 1349|  4.48k|            const char *ptr;
 1350|  4.48k|            ptr = r_string(n, p);
 1351|  4.48k|            if (ptr == NULL)
  ------------------
  |  Branch (1351:17): [True: 0, False: 4.48k]
  ------------------
 1352|      0|                break;
 1353|  4.48k|            v = PyUnicode_FromKindAndData(PyUnicode_1BYTE_KIND, ptr, n);
 1354|  4.48k|            if (v == NULL)
  ------------------
  |  Branch (1354:17): [True: 0, False: 4.48k]
  ------------------
 1355|      0|                break;
 1356|  4.48k|            if (is_interned) {
  ------------------
  |  Branch (1356:17): [True: 3.79k, False: 690]
  ------------------
 1357|       |                // marshal is meant to serialize .pyc files with code
 1358|       |                // objects, and code-related strings are currently immortal.
 1359|  3.79k|                PyInterpreterState *interp = _PyInterpreterState_GET();
 1360|  3.79k|                _PyUnicode_InternImmortal(interp, &v);
 1361|  3.79k|            }
 1362|  4.48k|            retval = v;
 1363|  4.48k|            R_REF(retval);
  ------------------
  |  | 1203|  4.48k|#define R_REF(O) do{\
  |  | 1204|  4.48k|    if (flag) \
  |  |  ------------------
  |  |  |  Branch (1204:9): [True: 3.82k, False: 660]
  |  |  ------------------
  |  | 1205|  4.48k|        O = r_ref(O, flag, p);\
  |  | 1206|  4.48k|} while (0)
  |  |  ------------------
  |  |  |  Branch (1206:10): [Folded, False: 4.48k]
  |  |  ------------------
  ------------------
 1364|  4.48k|            break;
 1365|  4.48k|        }
 1366|       |
 1367|      0|    case TYPE_INTERNED:
  ------------------
  |  |   83|      0|#define TYPE_INTERNED           't' // Version 1+
  ------------------
  |  Branch (1367:5): [True: 0, False: 17.5k]
  ------------------
 1368|      0|        is_interned = 1;
 1369|      0|        _Py_FALLTHROUGH;
  ------------------
  |  |  644|      0|#  define _Py_FALLTHROUGH __attribute__((fallthrough))
  ------------------
 1370|      1|    case TYPE_UNICODE:
  ------------------
  |  |   73|      1|#define TYPE_UNICODE            'u'
  ------------------
  |  Branch (1370:5): [True: 1, False: 17.5k]
  ------------------
 1371|      1|        {
 1372|      1|        const char *buffer;
 1373|       |
 1374|      1|        n = r_long(p);
 1375|      1|        if (n < 0 || n > SIZE32_MAX) {
  ------------------
  |  |  212|      1|#define SIZE32_MAX  0x7FFFFFFF
  ------------------
  |  Branch (1375:13): [True: 0, False: 1]
  |  Branch (1375:22): [True: 0, False: 1]
  ------------------
 1376|      0|            if (!PyErr_Occurred()) {
  ------------------
  |  Branch (1376:17): [True: 0, False: 0]
  ------------------
 1377|      0|                PyErr_SetString(PyExc_ValueError,
 1378|      0|                    "bad marshal data (string size out of range)");
 1379|      0|            }
 1380|      0|            break;
 1381|      0|        }
 1382|      1|        if (n != 0) {
  ------------------
  |  Branch (1382:13): [True: 1, False: 0]
  ------------------
 1383|      1|            buffer = r_string(n, p);
 1384|      1|            if (buffer == NULL)
  ------------------
  |  Branch (1384:17): [True: 0, False: 1]
  ------------------
 1385|      0|                break;
 1386|      1|            v = PyUnicode_DecodeUTF8(buffer, n, "surrogatepass");
 1387|      1|        }
 1388|      0|        else {
 1389|      0|            v = Py_GetConstant(Py_CONSTANT_EMPTY_STR);
  ------------------
  |  |  597|      0|#define Py_CONSTANT_EMPTY_STR 7
  ------------------
 1390|      0|        }
 1391|      1|        if (v == NULL)
  ------------------
  |  Branch (1391:13): [True: 0, False: 1]
  ------------------
 1392|      0|            break;
 1393|      1|        if (is_interned) {
  ------------------
  |  Branch (1393:13): [True: 0, False: 1]
  ------------------
 1394|       |            // marshal is meant to serialize .pyc files with code
 1395|       |            // objects, and code-related strings are currently immortal.
 1396|      0|            PyInterpreterState *interp = _PyInterpreterState_GET();
 1397|      0|            _PyUnicode_InternImmortal(interp, &v);
 1398|      0|        }
 1399|      1|        retval = v;
 1400|      1|        R_REF(retval);
  ------------------
  |  | 1203|      1|#define R_REF(O) do{\
  |  | 1204|      1|    if (flag) \
  |  |  ------------------
  |  |  |  Branch (1204:9): [True: 0, False: 1]
  |  |  ------------------
  |  | 1205|      1|        O = r_ref(O, flag, p);\
  |  | 1206|      1|} while (0)
  |  |  ------------------
  |  |  |  Branch (1206:10): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1401|      1|        break;
 1402|      1|        }
 1403|       |
 1404|  1.75k|    case TYPE_SMALL_TUPLE:
  ------------------
  |  |   91|  1.75k|#define TYPE_SMALL_TUPLE        ')'  // Version 4+
  ------------------
  |  Branch (1404:5): [True: 1.75k, False: 15.7k]
  ------------------
 1405|  1.75k|        n = r_byte(p);
 1406|  1.75k|        if (n == EOF) {
  ------------------
  |  Branch (1406:13): [True: 0, False: 1.75k]
  ------------------
 1407|      0|            break;
 1408|      0|        }
 1409|  1.75k|        goto _read_tuple;
 1410|  1.75k|    case TYPE_TUPLE:
  ------------------
  |  |   68|      1|#define TYPE_TUPLE              '('  // See also TYPE_SMALL_TUPLE.
  ------------------
  |  Branch (1410:5): [True: 1, False: 17.5k]
  ------------------
 1411|      1|        n = r_long(p);
 1412|      1|        if (n < 0 || n > SIZE32_MAX) {
  ------------------
  |  |  212|      1|#define SIZE32_MAX  0x7FFFFFFF
  ------------------
  |  Branch (1412:13): [True: 0, False: 1]
  |  Branch (1412:22): [True: 0, False: 1]
  ------------------
 1413|      0|            if (!PyErr_Occurred()) {
  ------------------
  |  Branch (1413:17): [True: 0, False: 0]
  ------------------
 1414|      0|                PyErr_SetString(PyExc_ValueError,
 1415|      0|                    "bad marshal data (tuple size out of range)");
 1416|      0|            }
 1417|      0|            break;
 1418|      0|        }
 1419|  1.75k|    _read_tuple:
 1420|  1.75k|        v = PyTuple_New(n);
 1421|  1.75k|        R_REF(v);
  ------------------
  |  | 1203|  1.75k|#define R_REF(O) do{\
  |  | 1204|  1.75k|    if (flag) \
  |  |  ------------------
  |  |  |  Branch (1204:9): [True: 198, False: 1.55k]
  |  |  ------------------
  |  | 1205|  1.75k|        O = r_ref(O, flag, p);\
  |  | 1206|  1.75k|} while (0)
  |  |  ------------------
  |  |  |  Branch (1206:10): [Folded, False: 1.75k]
  |  |  ------------------
  ------------------
 1422|  1.75k|        if (v == NULL)
  ------------------
  |  Branch (1422:13): [True: 0, False: 1.75k]
  ------------------
 1423|      0|            break;
 1424|       |
 1425|  11.6k|        for (i = 0; i < n; i++) {
  ------------------
  |  Branch (1425:21): [True: 9.91k, False: 1.75k]
  ------------------
 1426|  9.91k|            v2 = r_object(p);
 1427|  9.91k|            if ( v2 == NULL ) {
  ------------------
  |  Branch (1427:18): [True: 0, False: 9.91k]
  ------------------
 1428|      0|                if (!PyErr_Occurred())
  ------------------
  |  Branch (1428:21): [True: 0, False: 0]
  ------------------
 1429|      0|                    PyErr_SetString(PyExc_TypeError,
 1430|      0|                        "NULL object in marshal data for tuple");
 1431|      0|                Py_SETREF(v, NULL);
  ------------------
  |  |  352|      0|    do { \
  |  |  353|      0|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  354|      0|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  355|      0|        *_tmp_dst_ptr = (src); \
  |  |  356|      0|        Py_DECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  357|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (357:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1432|      0|                break;
 1433|      0|            }
 1434|  9.91k|            PyTuple_SET_ITEM(v, i, v2);
  ------------------
  |  |   40|  9.91k|    PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|  9.91k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  9.91k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|  9.91k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  9.91k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1435|  9.91k|        }
 1436|  1.75k|        retval = v;
 1437|  1.75k|        break;
 1438|       |
 1439|      0|    case TYPE_LIST:
  ------------------
  |  |   69|      0|#define TYPE_LIST               '['
  ------------------
  |  Branch (1439:5): [True: 0, False: 17.5k]
  ------------------
 1440|      0|        n = r_long(p);
 1441|      0|        if (n < 0 || n > SIZE32_MAX) {
  ------------------
  |  |  212|      0|#define SIZE32_MAX  0x7FFFFFFF
  ------------------
  |  Branch (1441:13): [True: 0, False: 0]
  |  Branch (1441:22): [True: 0, False: 0]
  ------------------
 1442|      0|            if (!PyErr_Occurred()) {
  ------------------
  |  Branch (1442:17): [True: 0, False: 0]
  ------------------
 1443|      0|                PyErr_SetString(PyExc_ValueError,
 1444|      0|                    "bad marshal data (list size out of range)");
 1445|      0|            }
 1446|      0|            break;
 1447|      0|        }
 1448|      0|        v = PyList_New(n);
 1449|      0|        R_REF(v);
  ------------------
  |  | 1203|      0|#define R_REF(O) do{\
  |  | 1204|      0|    if (flag) \
  |  |  ------------------
  |  |  |  Branch (1204:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 1205|      0|        O = r_ref(O, flag, p);\
  |  | 1206|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1206:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1450|      0|        if (v == NULL)
  ------------------
  |  Branch (1450:13): [True: 0, False: 0]
  ------------------
 1451|      0|            break;
 1452|      0|        for (i = 0; i < n; i++) {
  ------------------
  |  Branch (1452:21): [True: 0, False: 0]
  ------------------
 1453|      0|            v2 = r_object(p);
 1454|      0|            if ( v2 == NULL ) {
  ------------------
  |  Branch (1454:18): [True: 0, False: 0]
  ------------------
 1455|      0|                if (!PyErr_Occurred())
  ------------------
  |  Branch (1455:21): [True: 0, False: 0]
  ------------------
 1456|      0|                    PyErr_SetString(PyExc_TypeError,
 1457|      0|                        "NULL object in marshal data for list");
 1458|      0|                Py_SETREF(v, NULL);
  ------------------
  |  |  352|      0|    do { \
  |  |  353|      0|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  354|      0|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  355|      0|        *_tmp_dst_ptr = (src); \
  |  |  356|      0|        Py_DECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  357|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (357:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1459|      0|                break;
 1460|      0|            }
 1461|      0|            PyList_SET_ITEM(v, i, v2);
  ------------------
  |  |   50|      0|    PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1462|      0|        }
 1463|      0|        retval = v;
 1464|      0|        break;
 1465|       |
 1466|      0|    case TYPE_DICT:
  ------------------
  |  |   70|      0|#define TYPE_DICT               '{'
  ------------------
  |  Branch (1466:5): [True: 0, False: 17.5k]
  ------------------
 1467|      0|    case TYPE_FROZENDICT:
  ------------------
  |  |   71|      0|#define TYPE_FROZENDICT         '}'
  ------------------
  |  Branch (1467:5): [True: 0, False: 17.5k]
  ------------------
 1468|      0|        v = PyDict_New();
 1469|      0|        if (v == NULL) {
  ------------------
  |  Branch (1469:13): [True: 0, False: 0]
  ------------------
 1470|      0|            break;
 1471|      0|        }
 1472|      0|        if (type == TYPE_DICT) {
  ------------------
  |  |   70|      0|#define TYPE_DICT               '{'
  ------------------
  |  Branch (1472:13): [True: 0, False: 0]
  ------------------
 1473|      0|            R_REF(v);
  ------------------
  |  | 1203|      0|#define R_REF(O) do{\
  |  | 1204|      0|    if (flag) \
  |  |  ------------------
  |  |  |  Branch (1204:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 1205|      0|        O = r_ref(O, flag, p);\
  |  | 1206|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1206:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1474|      0|        }
 1475|      0|        else {
 1476|      0|            idx = r_ref_reserve(flag, p);
 1477|      0|            if (idx < 0) {
  ------------------
  |  Branch (1477:17): [True: 0, False: 0]
  ------------------
 1478|      0|                Py_CLEAR(v);
  ------------------
  |  |  484|      0|    do { \
  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1479|      0|                break;
 1480|      0|            }
 1481|      0|        }
 1482|      0|        for (;;) {
 1483|      0|            PyObject *key, *val;
 1484|      0|            key = r_object(p);
 1485|      0|            if (key == NULL)
  ------------------
  |  Branch (1485:17): [True: 0, False: 0]
  ------------------
 1486|      0|                break;
 1487|      0|            val = r_object(p);
 1488|      0|            if (val == NULL) {
  ------------------
  |  Branch (1488:17): [True: 0, False: 0]
  ------------------
 1489|      0|                Py_DECREF(key);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1490|      0|                break;
 1491|      0|            }
 1492|      0|            if (PyDict_SetItem(v, key, val) < 0) {
  ------------------
  |  Branch (1492:17): [True: 0, False: 0]
  ------------------
 1493|      0|                Py_DECREF(key);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1494|      0|                Py_DECREF(val);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1495|      0|                break;
 1496|      0|            }
 1497|      0|            Py_DECREF(key);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1498|      0|            Py_DECREF(val);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1499|      0|        }
 1500|      0|        if (PyErr_Occurred()) {
  ------------------
  |  Branch (1500:13): [True: 0, False: 0]
  ------------------
 1501|      0|            Py_CLEAR(v);
  ------------------
  |  |  484|      0|    do { \
  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1502|      0|        }
 1503|      0|        if (type == TYPE_FROZENDICT && v != NULL) {
  ------------------
  |  |   71|      0|#define TYPE_FROZENDICT         '}'
  ------------------
  |  Branch (1503:13): [True: 0, False: 0]
  |  Branch (1503:40): [True: 0, False: 0]
  ------------------
 1504|      0|            Py_SETREF(v, PyFrozenDict_New(v));
  ------------------
  |  |  352|      0|    do { \
  |  |  353|      0|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  354|      0|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  355|      0|        *_tmp_dst_ptr = (src); \
  |  |  356|      0|        Py_DECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  357|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (357:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1505|      0|        }
 1506|      0|        retval = v;
 1507|      0|        break;
 1508|       |
 1509|      0|    case TYPE_SET:
  ------------------
  |  |   76|      0|#define TYPE_SET                '<'
  ------------------
  |  Branch (1509:5): [True: 0, False: 17.5k]
  ------------------
 1510|      4|    case TYPE_FROZENSET:
  ------------------
  |  |   77|      4|#define TYPE_FROZENSET          '>'
  ------------------
  |  Branch (1510:5): [True: 4, False: 17.5k]
  ------------------
 1511|      4|        n = r_long(p);
 1512|      4|        if (n < 0 || n > SIZE32_MAX) {
  ------------------
  |  |  212|      4|#define SIZE32_MAX  0x7FFFFFFF
  ------------------
  |  Branch (1512:13): [True: 0, False: 4]
  |  Branch (1512:22): [True: 0, False: 4]
  ------------------
 1513|      0|            if (!PyErr_Occurred()) {
  ------------------
  |  Branch (1513:17): [True: 0, False: 0]
  ------------------
 1514|      0|                PyErr_SetString(PyExc_ValueError,
 1515|      0|                    "bad marshal data (set size out of range)");
 1516|      0|            }
 1517|      0|            break;
 1518|      0|        }
 1519|       |
 1520|      4|        if (n == 0 && type == TYPE_FROZENSET) {
  ------------------
  |  |   77|      0|#define TYPE_FROZENSET          '>'
  ------------------
  |  Branch (1520:13): [True: 0, False: 4]
  |  Branch (1520:23): [True: 0, False: 0]
  ------------------
 1521|       |            /* call frozenset() to get the empty frozenset singleton */
 1522|      0|            v = _PyObject_CallNoArgs((PyObject*)&PyFrozenSet_Type);
 1523|      0|            if (v == NULL)
  ------------------
  |  Branch (1523:17): [True: 0, False: 0]
  ------------------
 1524|      0|                break;
 1525|      0|            R_REF(v);
  ------------------
  |  | 1203|      0|#define R_REF(O) do{\
  |  | 1204|      0|    if (flag) \
  |  |  ------------------
  |  |  |  Branch (1204:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 1205|      0|        O = r_ref(O, flag, p);\
  |  | 1206|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1206:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1526|      0|            retval = v;
 1527|      0|        }
 1528|      4|        else {
 1529|      4|            v = (type == TYPE_SET) ? PySet_New(NULL) : PyFrozenSet_New(NULL);
  ------------------
  |  |   76|      4|#define TYPE_SET                '<'
  ------------------
  |  Branch (1529:17): [True: 0, False: 4]
  ------------------
 1530|      4|            if (type == TYPE_SET) {
  ------------------
  |  |   76|      4|#define TYPE_SET                '<'
  ------------------
  |  Branch (1530:17): [True: 0, False: 4]
  ------------------
 1531|      0|                R_REF(v);
  ------------------
  |  | 1203|      0|#define R_REF(O) do{\
  |  | 1204|      0|    if (flag) \
  |  |  ------------------
  |  |  |  Branch (1204:9): [True: 0, False: 0]
  |  |  ------------------
  |  | 1205|      0|        O = r_ref(O, flag, p);\
  |  | 1206|      0|} while (0)
  |  |  ------------------
  |  |  |  Branch (1206:10): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1532|      4|            } else {
 1533|       |                /* must use delayed registration of frozensets because they must
 1534|       |                 * be init with a refcount of 1
 1535|       |                 */
 1536|      4|                idx = r_ref_reserve(flag, p);
 1537|      4|                if (idx < 0)
  ------------------
  |  Branch (1537:21): [True: 0, False: 4]
  ------------------
 1538|      0|                    Py_CLEAR(v); /* signal error */
  ------------------
  |  |  484|      0|    do { \
  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1539|      4|            }
 1540|      4|            if (v == NULL)
  ------------------
  |  Branch (1540:17): [True: 0, False: 4]
  ------------------
 1541|      0|                break;
 1542|       |
 1543|     17|            for (i = 0; i < n; i++) {
  ------------------
  |  Branch (1543:25): [True: 13, False: 4]
  ------------------
 1544|     13|                v2 = r_object(p);
 1545|     13|                if ( v2 == NULL ) {
  ------------------
  |  Branch (1545:22): [True: 0, False: 13]
  ------------------
 1546|      0|                    if (!PyErr_Occurred())
  ------------------
  |  Branch (1546:25): [True: 0, False: 0]
  ------------------
 1547|      0|                        PyErr_SetString(PyExc_TypeError,
 1548|      0|                            "NULL object in marshal data for set");
 1549|      0|                    Py_SETREF(v, NULL);
  ------------------
  |  |  352|      0|    do { \
  |  |  353|      0|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  354|      0|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  355|      0|        *_tmp_dst_ptr = (src); \
  |  |  356|      0|        Py_DECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  357|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (357:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1550|      0|                    break;
 1551|      0|                }
 1552|     13|                if (PySet_Add(v, v2) == -1) {
  ------------------
  |  Branch (1552:21): [True: 0, False: 13]
  ------------------
 1553|      0|                    Py_DECREF(v);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1554|      0|                    Py_DECREF(v2);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1555|      0|                    v = NULL;
 1556|      0|                    break;
 1557|      0|                }
 1558|     13|                Py_DECREF(v2);
  ------------------
  |  |  430|     13|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     13|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     13|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1559|     13|            }
 1560|      4|            if (type != TYPE_SET)
  ------------------
  |  |   76|      4|#define TYPE_SET                '<'
  ------------------
  |  Branch (1560:17): [True: 4, False: 0]
  ------------------
 1561|      4|                v = r_ref_insert(v, idx, flag, p);
 1562|      4|            retval = v;
 1563|      4|        }
 1564|      4|        break;
 1565|       |
 1566|    743|    case TYPE_CODE:
  ------------------
  |  |   72|    743|#define TYPE_CODE               'c'
  ------------------
  |  Branch (1566:5): [True: 743, False: 16.7k]
  ------------------
 1567|    743|        {
 1568|    743|            int argcount;
 1569|    743|            int posonlyargcount;
 1570|    743|            int kwonlyargcount;
 1571|    743|            int stacksize;
 1572|    743|            int flags;
 1573|    743|            PyObject *code = NULL;
 1574|    743|            PyObject *consts = NULL;
 1575|    743|            PyObject *names = NULL;
 1576|    743|            PyObject *localsplusnames = NULL;
 1577|    743|            PyObject *localspluskinds = NULL;
 1578|    743|            PyObject *filename = NULL;
 1579|    743|            PyObject *name = NULL;
 1580|    743|            PyObject *qualname = NULL;
 1581|    743|            int firstlineno;
 1582|    743|            PyObject* linetable = NULL;
 1583|    743|            PyObject *exceptiontable = NULL;
 1584|       |
 1585|    743|            if (!p->allow_code) {
  ------------------
  |  Branch (1585:17): [True: 0, False: 743]
  ------------------
 1586|      0|                PyErr_SetString(PyExc_ValueError,
 1587|      0|                                "unmarshalling code objects is disallowed");
 1588|      0|                break;
 1589|      0|            }
 1590|    743|            idx = r_ref_reserve(flag, p);
 1591|    743|            if (idx < 0)
  ------------------
  |  Branch (1591:17): [True: 0, False: 743]
  ------------------
 1592|      0|                break;
 1593|       |
 1594|    743|            v = NULL;
 1595|       |
 1596|       |            /* XXX ignore long->int overflows for now */
 1597|    743|            argcount = (int)r_long(p);
 1598|    743|            if (argcount == -1 && PyErr_Occurred())
  ------------------
  |  Branch (1598:17): [True: 0, False: 743]
  |  Branch (1598:35): [True: 0, False: 0]
  ------------------
 1599|      0|                goto code_error;
 1600|    743|            posonlyargcount = (int)r_long(p);
 1601|    743|            if (posonlyargcount == -1 && PyErr_Occurred()) {
  ------------------
  |  Branch (1601:17): [True: 0, False: 743]
  |  Branch (1601:42): [True: 0, False: 0]
  ------------------
 1602|      0|                goto code_error;
 1603|      0|            }
 1604|    743|            kwonlyargcount = (int)r_long(p);
 1605|    743|            if (kwonlyargcount == -1 && PyErr_Occurred())
  ------------------
  |  Branch (1605:17): [True: 0, False: 743]
  |  Branch (1605:41): [True: 0, False: 0]
  ------------------
 1606|      0|                goto code_error;
 1607|    743|            stacksize = (int)r_long(p);
 1608|    743|            if (stacksize == -1 && PyErr_Occurred())
  ------------------
  |  Branch (1608:17): [True: 0, False: 743]
  |  Branch (1608:36): [True: 0, False: 0]
  ------------------
 1609|      0|                goto code_error;
 1610|    743|            flags = (int)r_long(p);
 1611|    743|            if (flags == -1 && PyErr_Occurred())
  ------------------
  |  Branch (1611:17): [True: 0, False: 743]
  |  Branch (1611:32): [True: 0, False: 0]
  ------------------
 1612|      0|                goto code_error;
 1613|    743|            code = r_object(p);
 1614|    743|            if (code == NULL)
  ------------------
  |  Branch (1614:17): [True: 0, False: 743]
  ------------------
 1615|      0|                goto code_error;
 1616|    743|            consts = r_object(p);
 1617|    743|            if (consts == NULL)
  ------------------
  |  Branch (1617:17): [True: 0, False: 743]
  ------------------
 1618|      0|                goto code_error;
 1619|    743|            names = r_object(p);
 1620|    743|            if (names == NULL)
  ------------------
  |  Branch (1620:17): [True: 0, False: 743]
  ------------------
 1621|      0|                goto code_error;
 1622|    743|            localsplusnames = r_object(p);
 1623|    743|            if (localsplusnames == NULL)
  ------------------
  |  Branch (1623:17): [True: 0, False: 743]
  ------------------
 1624|      0|                goto code_error;
 1625|    743|            localspluskinds = r_object(p);
 1626|    743|            if (localspluskinds == NULL)
  ------------------
  |  Branch (1626:17): [True: 0, False: 743]
  ------------------
 1627|      0|                goto code_error;
 1628|    743|            filename = r_object(p);
 1629|    743|            if (filename == NULL)
  ------------------
  |  Branch (1629:17): [True: 0, False: 743]
  ------------------
 1630|      0|                goto code_error;
 1631|    743|            name = r_object(p);
 1632|    743|            if (name == NULL)
  ------------------
  |  Branch (1632:17): [True: 0, False: 743]
  ------------------
 1633|      0|                goto code_error;
 1634|    743|            qualname = r_object(p);
 1635|    743|            if (qualname == NULL)
  ------------------
  |  Branch (1635:17): [True: 0, False: 743]
  ------------------
 1636|      0|                goto code_error;
 1637|    743|            firstlineno = (int)r_long(p);
 1638|    743|            if (firstlineno == -1 && PyErr_Occurred())
  ------------------
  |  Branch (1638:17): [True: 0, False: 743]
  |  Branch (1638:38): [True: 0, False: 0]
  ------------------
 1639|      0|                goto code_error;
 1640|    743|            linetable = r_object(p);
 1641|    743|            if (linetable == NULL)
  ------------------
  |  Branch (1641:17): [True: 0, False: 743]
  ------------------
 1642|      0|                goto code_error;
 1643|    743|            exceptiontable = r_object(p);
 1644|    743|            if (exceptiontable == NULL)
  ------------------
  |  Branch (1644:17): [True: 0, False: 743]
  ------------------
 1645|      0|                goto code_error;
 1646|       |
 1647|    743|            struct _PyCodeConstructor con = {
 1648|    743|                .filename = filename,
 1649|    743|                .name = name,
 1650|    743|                .qualname = qualname,
 1651|    743|                .flags = flags,
 1652|       |
 1653|    743|                .code = code,
 1654|    743|                .firstlineno = firstlineno,
 1655|    743|                .linetable = linetable,
 1656|       |
 1657|    743|                .consts = consts,
 1658|    743|                .names = names,
 1659|       |
 1660|    743|                .localsplusnames = localsplusnames,
 1661|    743|                .localspluskinds = localspluskinds,
 1662|       |
 1663|    743|                .argcount = argcount,
 1664|    743|                .posonlyargcount = posonlyargcount,
 1665|    743|                .kwonlyargcount = kwonlyargcount,
 1666|       |
 1667|    743|                .stacksize = stacksize,
 1668|       |
 1669|    743|                .exceptiontable = exceptiontable,
 1670|    743|            };
 1671|       |
 1672|    743|            if (_PyCode_Validate(&con) < 0) {
  ------------------
  |  Branch (1672:17): [True: 0, False: 743]
  ------------------
 1673|      0|                goto code_error;
 1674|      0|            }
 1675|       |
 1676|    743|            v = (PyObject *)_PyCode_New(&con);
 1677|    743|            if (v == NULL) {
  ------------------
  |  Branch (1677:17): [True: 0, False: 743]
  ------------------
 1678|      0|                goto code_error;
 1679|      0|            }
 1680|       |
 1681|    743|            v = r_ref_insert(v, idx, flag, p);
 1682|       |
 1683|    743|          code_error:
 1684|    743|            if (v == NULL && !PyErr_Occurred()) {
  ------------------
  |  Branch (1684:17): [True: 0, False: 743]
  |  Branch (1684:30): [True: 0, False: 0]
  ------------------
 1685|      0|                PyErr_SetString(PyExc_TypeError,
 1686|      0|                    "NULL object in marshal data for code object");
 1687|      0|            }
 1688|    743|            Py_XDECREF(code);
  ------------------
  |  |  524|    743|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    743|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    743|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1689|    743|            Py_XDECREF(consts);
  ------------------
  |  |  524|    743|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    743|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    743|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1690|    743|            Py_XDECREF(names);
  ------------------
  |  |  524|    743|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    743|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    743|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1691|    743|            Py_XDECREF(localsplusnames);
  ------------------
  |  |  524|    743|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    743|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    743|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1692|    743|            Py_XDECREF(localspluskinds);
  ------------------
  |  |  524|    743|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    743|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    743|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1693|    743|            Py_XDECREF(filename);
  ------------------
  |  |  524|    743|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    743|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    743|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1694|    743|            Py_XDECREF(name);
  ------------------
  |  |  524|    743|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    743|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    743|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1695|    743|            Py_XDECREF(qualname);
  ------------------
  |  |  524|    743|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    743|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    743|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1696|    743|            Py_XDECREF(linetable);
  ------------------
  |  |  524|    743|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    743|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    743|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1697|    743|            Py_XDECREF(exceptiontable);
  ------------------
  |  |  524|    743|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    743|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    743|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1698|    743|        }
 1699|      0|        retval = v;
 1700|    743|        break;
 1701|       |
 1702|  7.86k|    case TYPE_REF:
  ------------------
  |  |   99|  7.86k|#define TYPE_REF                'r'
  ------------------
  |  Branch (1702:5): [True: 7.86k, False: 9.64k]
  ------------------
 1703|  7.86k|        n = r_long(p);
 1704|  7.86k|        if (n < 0 || n >= PyList_GET_SIZE(p->refs)) {
  ------------------
  |  |   38|  7.86k|#define PyList_GET_SIZE(op) PyList_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|  7.86k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  7.86k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1704:13): [True: 0, False: 7.86k]
  |  Branch (1704:22): [True: 0, False: 7.86k]
  ------------------
 1705|      0|            if (!PyErr_Occurred()) {
  ------------------
  |  Branch (1705:17): [True: 0, False: 0]
  ------------------
 1706|      0|                PyErr_SetString(PyExc_ValueError,
 1707|      0|                    "bad marshal data (invalid reference)");
 1708|      0|            }
 1709|      0|            break;
 1710|      0|        }
 1711|  7.86k|        v = PyList_GET_ITEM(p->refs, n);
  ------------------
  |  |   40|  7.86k|#define PyList_GET_ITEM(op, index) (_PyList_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   26|  7.86k|    (assert(PyList_Check(op)), _Py_CAST(PyListObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  7.86k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1711:13): [True: 7.86k, False: 0]
  ------------------
 1712|  7.86k|        if (v == Py_None) {
  ------------------
  |  |  616|  7.86k|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (1712:13): [True: 0, False: 7.86k]
  ------------------
 1713|      0|            PyErr_SetString(PyExc_ValueError, "bad marshal data (invalid reference)");
 1714|      0|            break;
 1715|      0|        }
 1716|  7.86k|        retval = Py_NewRef(v);
  ------------------
  |  |  550|  7.86k|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|  7.86k|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|  7.86k|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1717|  7.86k|        break;
 1718|       |
 1719|     47|    case TYPE_SLICE:
  ------------------
  |  |   79|     47|#define TYPE_SLICE              ':'
  ------------------
  |  Branch (1719:5): [True: 47, False: 17.4k]
  ------------------
 1720|     47|    {
 1721|     47|        Py_ssize_t idx = r_ref_reserve(flag, p);
 1722|     47|        if (idx < 0) {
  ------------------
  |  Branch (1722:13): [True: 0, False: 47]
  ------------------
 1723|      0|            break;
 1724|      0|        }
 1725|     47|        PyObject *stop = NULL;
 1726|     47|        PyObject *step = NULL;
 1727|     47|        PyObject *start = r_object(p);
 1728|     47|        if (start == NULL) {
  ------------------
  |  Branch (1728:13): [True: 0, False: 47]
  ------------------
 1729|      0|            goto cleanup;
 1730|      0|        }
 1731|     47|        stop = r_object(p);
 1732|     47|        if (stop == NULL) {
  ------------------
  |  Branch (1732:13): [True: 0, False: 47]
  ------------------
 1733|      0|            goto cleanup;
 1734|      0|        }
 1735|     47|        step = r_object(p);
 1736|     47|        if (step == NULL) {
  ------------------
  |  Branch (1736:13): [True: 0, False: 47]
  ------------------
 1737|      0|            goto cleanup;
 1738|      0|        }
 1739|     47|        retval = PySlice_New(start, stop, step);
 1740|     47|        r_ref_insert(retval, idx, flag, p);
 1741|     47|    cleanup:
 1742|     47|        Py_XDECREF(start);
  ------------------
  |  |  524|     47|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     47|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     47|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1743|     47|        Py_XDECREF(stop);
  ------------------
  |  |  524|     47|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     47|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     47|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1744|     47|        Py_XDECREF(step);
  ------------------
  |  |  524|     47|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     47|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     47|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1745|     47|        break;
 1746|     47|    }
 1747|       |
 1748|      0|    default:
  ------------------
  |  Branch (1748:5): [True: 0, False: 17.5k]
  ------------------
 1749|       |        /* Bogus data got written, which isn't ideal.
 1750|       |           This will let you keep working and recover. */
 1751|      0|        PyErr_SetString(PyExc_ValueError, "bad marshal data (unknown type code)");
 1752|      0|        break;
 1753|       |
 1754|  17.5k|    }
 1755|  17.5k|    p->depth--;
 1756|  17.5k|    return retval;
 1757|  17.5k|}
marshal.c:r_byte:
  910|  23.6k|{
  911|  23.6k|    if (p->ptr != NULL) {
  ------------------
  |  Branch (911:9): [True: 23.6k, False: 0]
  ------------------
  912|  23.6k|        if (p->ptr < p->end) {
  ------------------
  |  Branch (912:13): [True: 23.6k, False: 0]
  ------------------
  913|  23.6k|            return (unsigned char) *p->ptr++;
  914|  23.6k|        }
  915|  23.6k|    }
  916|      0|    else if (!p->readable) {
  ------------------
  |  Branch (916:14): [True: 0, False: 0]
  ------------------
  917|      0|        assert(p->fp);
  ------------------
  |  Branch (917:9): [True: 0, False: 0]
  ------------------
  918|      0|        int c = getc(p->fp);
  919|      0|        if (c != EOF) {
  ------------------
  |  Branch (919:13): [True: 0, False: 0]
  ------------------
  920|      0|            return c;
  921|      0|        }
  922|      0|    }
  923|      0|    else {
  924|      0|        const char *ptr = r_string(1, p);
  925|      0|        if (ptr != NULL) {
  ------------------
  |  Branch (925:13): [True: 0, False: 0]
  ------------------
  926|      0|            return *(const unsigned char *) ptr;
  927|      0|        }
  928|      0|        return EOF;
  929|      0|    }
  930|      0|    PyErr_SetString(PyExc_EOFError,
  931|      0|                    "EOF read where not expected");
  932|       |    return EOF;
  933|  23.6k|}
marshal.c:r_ref:
 1161|  4.95k|{
 1162|  4.95k|    assert(flag & FLAG_REF);
  ------------------
  |  Branch (1162:5): [True: 4.95k, False: 0]
  ------------------
 1163|  4.95k|    if (o == NULL)
  ------------------
  |  Branch (1163:9): [True: 0, False: 4.95k]
  ------------------
 1164|      0|        return NULL;
 1165|  4.95k|    if (PyList_Append(p->refs, o) < 0) {
  ------------------
  |  Branch (1165:9): [True: 0, False: 4.95k]
  ------------------
 1166|      0|        Py_DECREF(o); /* release the new object */
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1167|      0|        return NULL;
 1168|      0|    }
 1169|  4.95k|    return o;
 1170|  4.95k|}
marshal.c:r_PyLong:
 1038|      4|{
 1039|      4|    long n = r_long(p);
 1040|      4|    if (n == -1 && PyErr_Occurred()) {
  ------------------
  |  Branch (1040:9): [True: 0, False: 4]
  |  Branch (1040:20): [True: 0, False: 0]
  ------------------
 1041|      0|        return NULL;
 1042|      0|    }
 1043|      4|    if (n < -SIZE32_MAX || n > SIZE32_MAX) {
  ------------------
  |  |  212|      8|#define SIZE32_MAX  0x7FFFFFFF
  ------------------
                  if (n < -SIZE32_MAX || n > SIZE32_MAX) {
  ------------------
  |  |  212|      4|#define SIZE32_MAX  0x7FFFFFFF
  ------------------
  |  Branch (1043:9): [True: 0, False: 4]
  |  Branch (1043:28): [True: 0, False: 4]
  ------------------
 1044|      0|        PyErr_SetString(PyExc_ValueError,
 1045|      0|                       "bad marshal data (long size out of range)");
 1046|      0|        return NULL;
 1047|      0|    }
 1048|       |
 1049|      4|    const PyLongLayout *layout = PyLong_GetNativeLayout();
 1050|      4|    Py_ssize_t marshal_ratio = layout->bits_per_digit/PyLong_MARSHAL_SHIFT;
  ------------------
  |  |  245|      4|#define PyLong_MARSHAL_SHIFT 15
  ------------------
 1051|       |
 1052|       |    /* must be a multiple of PyLong_MARSHAL_SHIFT */
 1053|      4|    assert(layout->bits_per_digit % PyLong_MARSHAL_SHIFT == 0);
  ------------------
  |  Branch (1053:5): [True: 4, False: 0]
  ------------------
 1054|      4|    assert(layout->bits_per_digit >= PyLong_MARSHAL_SHIFT);
  ------------------
  |  Branch (1054:5): [True: 4, False: 0]
  ------------------
 1055|       |
 1056|       |    /* other assumptions on PyLongObject internals */
 1057|      4|    assert(layout->bits_per_digit <= 32);
  ------------------
  |  Branch (1057:5): [True: 4, False: 0]
  ------------------
 1058|      4|    assert(layout->digits_order == -1);
  ------------------
  |  Branch (1058:5): [True: 4, False: 0]
  ------------------
 1059|      4|    assert(layout->digit_endianness == (PY_LITTLE_ENDIAN ? -1 : 1));
  ------------------
  |  Branch (1059:5): [True: 4, Folded]
  |  Branch (1059:5): [True: 4, False: 0]
  ------------------
 1060|      4|    assert(layout->digit_size == 2 || layout->digit_size == 4);
  ------------------
  |  Branch (1060:5): [True: 0, False: 4]
  |  Branch (1060:5): [True: 4, False: 0]
  ------------------
 1061|       |
 1062|      4|    Py_ssize_t size = 1 + (Py_ABS(n) - 1) / marshal_ratio;
  ------------------
  |  |  118|      4|#define Py_ABS(x) ((x) < 0 ? -(x) : (x))
  |  |  ------------------
  |  |  |  Branch (118:20): [True: 0, False: 4]
  |  |  ------------------
  ------------------
 1063|       |
 1064|      4|    assert(size >= 1);
  ------------------
  |  Branch (1064:5): [True: 4, False: 0]
  ------------------
 1065|       |
 1066|      4|    int shorts_in_top_digit = 1 + (Py_ABS(n) - 1) % marshal_ratio;
  ------------------
  |  |  118|      4|#define Py_ABS(x) ((x) < 0 ? -(x) : (x))
  |  |  ------------------
  |  |  |  Branch (118:20): [True: 0, False: 4]
  |  |  ------------------
  ------------------
 1067|      4|    void *digits;
 1068|      4|    PyLongWriter *writer = PyLongWriter_Create(n < 0, size, &digits);
 1069|       |
 1070|      4|    if (writer == NULL) {
  ------------------
  |  Branch (1070:9): [True: 0, False: 4]
  ------------------
 1071|      0|        return NULL;
 1072|      0|    }
 1073|       |
 1074|      4|    int ret;
 1075|       |
 1076|      4|    if (layout->digit_size == 4) {
  ------------------
  |  Branch (1076:9): [True: 4, False: 0]
  ------------------
 1077|      4|        ret = _w_digits32(digits, size, marshal_ratio, shorts_in_top_digit, p);
 1078|      4|    }
 1079|      0|    else {
 1080|      0|        ret = _w_digits16(digits, size, marshal_ratio, shorts_in_top_digit, p);
 1081|      0|    }
 1082|      4|    if (ret < 0) {
  ------------------
  |  Branch (1082:9): [True: 0, False: 4]
  ------------------
 1083|      0|        PyLongWriter_Discard(writer);
 1084|      0|        return NULL;
 1085|      0|    }
 1086|      4|    return PyLongWriter_Finish(writer);
 1087|      4|}
marshal.c:r_ref_reserve:
 1122|    794|{
 1123|    794|    if (flag) { /* currently only FLAG_REF is defined */
  ------------------
  |  Branch (1123:9): [True: 8, False: 786]
  ------------------
 1124|      8|        Py_ssize_t idx = PyList_GET_SIZE(p->refs);
  ------------------
  |  |   38|      8|#define PyList_GET_SIZE(op) PyList_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      8|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1125|      8|        if (idx >= 0x7ffffffe) {
  ------------------
  |  Branch (1125:13): [True: 0, False: 8]
  ------------------
 1126|      0|            PyErr_SetString(PyExc_ValueError, "bad marshal data (index list too large)");
 1127|      0|            return -1;
 1128|      0|        }
 1129|      8|        if (PyList_Append(p->refs, Py_None) < 0)
  ------------------
  |  |  616|      8|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (1129:13): [True: 0, False: 8]
  ------------------
 1130|      0|            return -1;
 1131|      8|        return idx;
 1132|      8|    } else
 1133|    786|        return 0;
 1134|    794|}
marshal.c:r_ref_insert:
 1146|    794|{
 1147|    794|    if (o != NULL && flag) { /* currently only FLAG_REF is defined */
  ------------------
  |  Branch (1147:9): [True: 794, False: 0]
  |  Branch (1147:22): [True: 8, False: 786]
  ------------------
 1148|      8|        PyObject *tmp = PyList_GET_ITEM(p->refs, idx);
  ------------------
  |  |   40|      8|#define PyList_GET_ITEM(op, index) (_PyList_CAST(op)->ob_item[(index)])
  |  |  ------------------
  |  |  |  |   26|      8|    (assert(PyList_Check(op)), _Py_CAST(PyListObject*, (op)))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1148:25): [True: 8, False: 0]
  ------------------
 1149|      8|        PyList_SET_ITEM(p->refs, idx, Py_NewRef(o));
  ------------------
  |  |   50|      8|    PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|      8|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   PyList_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|      8|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1150|      8|        Py_DECREF(tmp);
  ------------------
  |  |  430|      8|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      8|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1151|      8|    }
 1152|    794|    return o;
 1153|    794|}
marshal.c:marshal_module_exec:
 2167|      1|{
 2168|      1|    if (PyModule_AddIntConstant(mod, "version", Py_MARSHAL_VERSION) < 0) {
  ------------------
  |  |    9|      1|#define Py_MARSHAL_VERSION 6
  ------------------
  |  Branch (2168:9): [True: 0, False: 1]
  ------------------
 2169|      0|        return -1;
 2170|      0|    }
 2171|      1|    return 0;
 2172|      1|}

Py_BuildValue:
  497|     14|{
  498|     14|    va_list va;
  499|     14|    PyObject* retval;
  500|     14|    va_start(va, format);
  501|     14|    retval = va_build_value(format, va);
  502|       |    va_end(va);
  503|     14|    return retval;
  504|     14|}
_Py_VaBuildStack:
  555|     27|{
  556|     27|    const char *f;
  557|     27|    Py_ssize_t n;
  558|     27|    va_list lva;
  559|     27|    PyObject **stack;
  560|     27|    int res;
  561|       |
  562|     27|    n = countformat(format, '\0');
  563|     27|    if (n < 0) {
  ------------------
  |  Branch (563:9): [True: 0, False: 27]
  ------------------
  564|      0|        *p_nargs = 0;
  565|      0|        return NULL;
  566|      0|    }
  567|       |
  568|     27|    if (n == 0) {
  ------------------
  |  Branch (568:9): [True: 0, False: 27]
  ------------------
  569|      0|        *p_nargs = 0;
  570|      0|        return small_stack;
  571|      0|    }
  572|       |
  573|     27|    if (n <= small_stack_len) {
  ------------------
  |  Branch (573:9): [True: 21, False: 6]
  ------------------
  574|     21|        stack = small_stack;
  575|     21|    }
  576|      6|    else {
  577|      6|        stack = PyMem_Malloc(n * sizeof(stack[0]));
  578|      6|        if (stack == NULL) {
  ------------------
  |  Branch (578:13): [True: 0, False: 6]
  ------------------
  579|      0|            PyErr_NoMemory();
  580|      0|            return NULL;
  581|      0|        }
  582|      6|    }
  583|       |
  584|     27|    va_copy(lva, va);
  585|     27|    f = format;
  586|     27|    res = do_mkstack(stack, &f, &lva, '\0', n);
  587|     27|    va_end(lva);
  588|       |
  589|     27|    if (res < 0) {
  ------------------
  |  Branch (589:9): [True: 0, False: 27]
  ------------------
  590|      0|        if (stack != small_stack) {
  ------------------
  |  Branch (590:13): [True: 0, False: 0]
  ------------------
  591|      0|            PyMem_Free(stack);
  592|      0|        }
  593|      0|        return NULL;
  594|      0|    }
  595|       |
  596|     27|    *p_nargs = n;
  597|     27|    return stack;
  598|     27|}
PyModule_AddObjectRef:
  603|    293|{
  604|    293|    if (!PyModule_Check(mod)) {
  ------------------
  |  |   12|    293|#define PyModule_Check(op) PyObject_TypeCheck((op), &PyModule_Type)
  |  |  ------------------
  |  |  |  |  378|    293|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    293|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    293|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (604:9): [True: 0, False: 293]
  ------------------
  605|      0|        PyErr_SetString(PyExc_TypeError,
  606|      0|                        "PyModule_AddObjectRef() first argument "
  607|      0|                        "must be a module");
  608|      0|        return -1;
  609|      0|    }
  610|    293|    if (!value) {
  ------------------
  |  Branch (610:9): [True: 0, False: 293]
  ------------------
  611|      0|        if (!PyErr_Occurred()) {
  ------------------
  |  Branch (611:13): [True: 0, False: 0]
  ------------------
  612|      0|            PyErr_SetString(PyExc_SystemError,
  613|      0|                            "PyModule_AddObjectRef() must be called "
  614|      0|                            "with an exception raised if value is NULL");
  615|      0|        }
  616|      0|        return -1;
  617|      0|    }
  618|       |
  619|    293|    PyObject *dict = PyModule_GetDict(mod);
  620|    293|    if (dict == NULL) {
  ------------------
  |  Branch (620:9): [True: 0, False: 293]
  ------------------
  621|       |        /* Internal error -- modules must have a dict! */
  622|      0|        PyErr_Format(PyExc_SystemError, "module '%s' has no __dict__",
  623|      0|                     PyModule_GetName(mod));
  624|      0|        return -1;
  625|      0|    }
  626|    293|    return PyDict_SetItemString(dict, name, value);
  627|    293|}
PyModule_Add:
  631|    254|{
  632|    254|    int res = PyModule_AddObjectRef(mod, name, value);
  633|    254|    Py_XDECREF(value);
  ------------------
  |  |  524|    254|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    254|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    254|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  634|    254|    return res;
  635|    254|}
PyModule_AddIntConstant:
  649|    245|{
  650|    245|    return PyModule_Add(m, name, PyLong_FromLong(value));
  651|    245|}
PyModule_AddType:
  661|     19|{
  662|     19|    if (!_PyType_IsReady(type) && PyType_Ready(type) < 0) {
  ------------------
  |  Branch (662:9): [True: 0, False: 19]
  |  Branch (662:35): [True: 0, False: 0]
  ------------------
  663|      0|        return -1;
  664|      0|    }
  665|       |
  666|     19|    const char *name = _PyType_Name(type);
  667|     19|    assert(name != NULL);
  ------------------
  |  Branch (667:5): [True: 19, False: 0]
  ------------------
  668|       |
  669|     19|    return PyModule_AddObjectRef(module, name, (PyObject *)type);
  670|     19|}
PyABIInfo_Check:
  707|     10|{
  708|     10|    if (!info) {
  ------------------
  |  Branch (708:9): [True: 0, False: 10]
  ------------------
  709|      0|        return _abiinfo_raise(module_name, "NULL PyABIInfo");
  710|      0|    }
  711|       |
  712|       |    /* abiinfo_major_version */
  713|     10|    if (info->abiinfo_major_version == 0) {
  ------------------
  |  Branch (713:9): [True: 0, False: 10]
  ------------------
  714|      0|        return 0;
  715|      0|    }
  716|     10|    if (info->abiinfo_major_version > 1) {
  ------------------
  |  Branch (716:9): [True: 0, False: 10]
  ------------------
  717|      0|        return _abiinfo_raise(module_name, "PyABIInfo version too high");
  718|      0|    }
  719|       |
  720|       |    /* Internal ABI */
  721|     10|    if (info->flags & PyABIInfo_INTERNAL) {
  ------------------
  |  |   97|     10|#define PyABIInfo_INTERNAL      0x0008
  ------------------
  |  Branch (721:9): [True: 10, False: 0]
  ------------------
  722|     10|        if (info->abi_version && (info->abi_version != PY_VERSION_HEX)) {
  ------------------
  |  |   43|     10|#define PY_VERSION_HEX _Py_PACK_FULL_VERSION( \
  |  |  ------------------
  |  |  |  |   34|     10|#define _Py_PACK_FULL_VERSION(X, Y, Z, LEVEL, SERIAL) ( \
  |  |  |  |   35|     10|    (((X) & 0xff) << 24) |                              \
  |  |  |  |   36|     10|    (((Y) & 0xff) << 16) |                              \
  |  |  |  |   37|     10|    (((Z) & 0xff) << 8) |                               \
  |  |  |  |   38|     10|    (((LEVEL) & 0xf) << 4) |                            \
  |  |  |  |   39|     10|    (((SERIAL) & 0xf) << 0))
  |  |  ------------------
  |  |   44|     10|    PY_MAJOR_VERSION,                         \
  |  |   45|     10|    PY_MINOR_VERSION,                         \
  |  |   46|     10|    PY_MICRO_VERSION,                         \
  |  |   47|     10|    PY_RELEASE_LEVEL,                         \
  |  |   48|     10|    PY_RELEASE_SERIAL)
  ------------------
  |  Branch (722:13): [True: 10, False: 0]
  |  Branch (722:34): [True: 0, False: 10]
  ------------------
  723|      0|            return _abiinfo_raise(
  724|      0|                module_name,
  725|      0|                "incompatible internal ABI (0x%x != 0x%x)",
  726|      0|                info->abi_version, PY_VERSION_HEX);
  ------------------
  |  |   43|      0|#define PY_VERSION_HEX _Py_PACK_FULL_VERSION( \
  |  |  ------------------
  |  |  |  |   34|      0|#define _Py_PACK_FULL_VERSION(X, Y, Z, LEVEL, SERIAL) ( \
  |  |  |  |   35|      0|    (((X) & 0xff) << 24) |                              \
  |  |  |  |   36|      0|    (((Y) & 0xff) << 16) |                              \
  |  |  |  |   37|      0|    (((Z) & 0xff) << 8) |                               \
  |  |  |  |   38|      0|    (((LEVEL) & 0xf) << 4) |                            \
  |  |  |  |   39|      0|    (((SERIAL) & 0xf) << 0))
  |  |  ------------------
  |  |   44|      0|    PY_MAJOR_VERSION,                         \
  |  |   45|      0|    PY_MINOR_VERSION,                         \
  |  |   46|      0|    PY_MICRO_VERSION,                         \
  |  |   47|      0|    PY_RELEASE_LEVEL,                         \
  |  |   48|      0|    PY_RELEASE_SERIAL)
  ------------------
  727|      0|        }
  728|     10|    }
  729|       |
  730|     10|#define XY_MASK 0xffff0000
  731|     10|    if (info->flags & PyABIInfo_STABLE) {
  ------------------
  |  |   94|     10|#define PyABIInfo_STABLE        0x0001
  ------------------
  |  Branch (731:9): [True: 0, False: 10]
  ------------------
  732|       |        /* Greater-than major.minor version check */
  733|      0|        if (info->abi_version) {
  ------------------
  |  Branch (733:13): [True: 0, False: 0]
  ------------------
  734|      0|            if ((info->abi_version & XY_MASK) > (PY_VERSION_HEX & XY_MASK)) {
  ------------------
  |  |  730|      0|#define XY_MASK 0xffff0000
  ------------------
                          if ((info->abi_version & XY_MASK) > (PY_VERSION_HEX & XY_MASK)) {
  ------------------
  |  |   43|      0|#define PY_VERSION_HEX _Py_PACK_FULL_VERSION( \
  |  |  ------------------
  |  |  |  |   34|      0|#define _Py_PACK_FULL_VERSION(X, Y, Z, LEVEL, SERIAL) ( \
  |  |  |  |   35|      0|    (((X) & 0xff) << 24) |                              \
  |  |  |  |   36|      0|    (((Y) & 0xff) << 16) |                              \
  |  |  |  |   37|      0|    (((Z) & 0xff) << 8) |                               \
  |  |  |  |   38|      0|    (((LEVEL) & 0xf) << 4) |                            \
  |  |  |  |   39|      0|    (((SERIAL) & 0xf) << 0))
  |  |  ------------------
  |  |   44|      0|    PY_MAJOR_VERSION,                         \
  |  |   45|      0|    PY_MINOR_VERSION,                         \
  |  |   46|      0|    PY_MICRO_VERSION,                         \
  |  |   47|      0|    PY_RELEASE_LEVEL,                         \
  |  |   48|      0|    PY_RELEASE_SERIAL)
  ------------------
                          if ((info->abi_version & XY_MASK) > (PY_VERSION_HEX & XY_MASK)) {
  ------------------
  |  |  730|      0|#define XY_MASK 0xffff0000
  ------------------
  |  Branch (734:17): [True: 0, False: 0]
  ------------------
  735|      0|                return _abiinfo_raise(
  736|      0|                    module_name,
  737|      0|                    "incompatible future stable ABI version (%d.%d)",
  738|      0|                    ((info->abi_version) >> 24) & 0xff,
  739|      0|                    ((info->abi_version) >> 16) & 0xff);
  740|      0|            }
  741|      0|            if (info->abi_version < Py_PACK_VERSION(3, 2)) {
  ------------------
  |  |  290|      0|#define Py_PACK_VERSION _Py_PACK_VERSION
  |  |  ------------------
  |  |  |  |  285|      0|#define _Py_PACK_VERSION(X, Y) _Py_PACK_FULL_VERSION(X, Y, 0, 0, 0)
  |  |  |  |  ------------------
  |  |  |  |  |  |   34|      0|#define _Py_PACK_FULL_VERSION(X, Y, Z, LEVEL, SERIAL) ( \
  |  |  |  |  |  |   35|      0|    (((X) & 0xff) << 24) |                              \
  |  |  |  |  |  |   36|      0|    (((Y) & 0xff) << 16) |                              \
  |  |  |  |  |  |   37|      0|    (((Z) & 0xff) << 8) |                               \
  |  |  |  |  |  |   38|      0|    (((LEVEL) & 0xf) << 4) |                            \
  |  |  |  |  |  |   39|      0|    (((SERIAL) & 0xf) << 0))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (741:17): [True: 0, False: 0]
  ------------------
  742|      0|                return _abiinfo_raise(
  743|      0|                    module_name,
  744|      0|                    "invalid stable ABI version (%d.%d)",
  745|      0|                    ((info->abi_version) >> 24) & 0xff,
  746|      0|                    ((info->abi_version) >> 16) & 0xff);
  747|      0|            }
  748|      0|        }
  749|      0|        if (info->flags & PyABIInfo_INTERNAL) {
  ------------------
  |  |   97|      0|#define PyABIInfo_INTERNAL      0x0008
  ------------------
  |  Branch (749:13): [True: 0, False: 0]
  ------------------
  750|      0|            return _abiinfo_raise(module_name,
  751|      0|                                  "cannot use both internal and stable ABI");
  752|      0|        }
  753|      0|    }
  754|     10|    else {
  755|       |        /* Exact major.minor version check */
  756|     10|        if (info->abi_version) {
  ------------------
  |  Branch (756:13): [True: 10, False: 0]
  ------------------
  757|     10|            if ((info->abi_version & XY_MASK) != (PY_VERSION_HEX & XY_MASK)) {
  ------------------
  |  |  730|     10|#define XY_MASK 0xffff0000
  ------------------
                          if ((info->abi_version & XY_MASK) != (PY_VERSION_HEX & XY_MASK)) {
  ------------------
  |  |   43|     10|#define PY_VERSION_HEX _Py_PACK_FULL_VERSION( \
  |  |  ------------------
  |  |  |  |   34|     10|#define _Py_PACK_FULL_VERSION(X, Y, Z, LEVEL, SERIAL) ( \
  |  |  |  |   35|     10|    (((X) & 0xff) << 24) |                              \
  |  |  |  |   36|     10|    (((Y) & 0xff) << 16) |                              \
  |  |  |  |   37|     10|    (((Z) & 0xff) << 8) |                               \
  |  |  |  |   38|     10|    (((LEVEL) & 0xf) << 4) |                            \
  |  |  |  |   39|     10|    (((SERIAL) & 0xf) << 0))
  |  |  ------------------
  |  |   44|     10|    PY_MAJOR_VERSION,                         \
  |  |   45|     10|    PY_MINOR_VERSION,                         \
  |  |   46|     10|    PY_MICRO_VERSION,                         \
  |  |   47|     10|    PY_RELEASE_LEVEL,                         \
  |  |   48|     10|    PY_RELEASE_SERIAL)
  ------------------
                          if ((info->abi_version & XY_MASK) != (PY_VERSION_HEX & XY_MASK)) {
  ------------------
  |  |  730|     10|#define XY_MASK 0xffff0000
  ------------------
  |  Branch (757:17): [True: 0, False: 10]
  ------------------
  758|      0|                return _abiinfo_raise(
  759|      0|                    module_name,
  760|      0|                    "incompatible ABI version (%d.%d)",
  761|      0|                    ((info->abi_version) >> 24) & 0xff,
  762|      0|                    ((info->abi_version) >> 16) & 0xff);
  763|      0|            }
  764|     10|        }
  765|     10|    }
  766|     10|#undef XY_MASK
  767|       |
  768|       |    /* Free-threading/GIL */
  769|     10|    uint16_t gilflags = info->flags & (PyABIInfo_GIL | PyABIInfo_FREETHREADED);
  ------------------
  |  |   95|     10|#define PyABIInfo_GIL           0x0002
  ------------------
                  uint16_t gilflags = info->flags & (PyABIInfo_GIL | PyABIInfo_FREETHREADED);
  ------------------
  |  |   96|     10|#define PyABIInfo_FREETHREADED  0x0004
  ------------------
  770|       |#if Py_GIL_DISABLED
  771|       |    if (gilflags == PyABIInfo_GIL) {
  772|       |        return _abiinfo_raise(module_name,
  773|       |                              "incompatible with free-threaded CPython");
  774|       |    }
  775|       |#else
  776|     10|    if (gilflags == PyABIInfo_FREETHREADED) {
  ------------------
  |  |   96|     10|#define PyABIInfo_FREETHREADED  0x0004
  ------------------
  |  Branch (776:9): [True: 0, False: 10]
  ------------------
  777|      0|        return _abiinfo_raise(module_name,
  778|      0|                              "only compatible with free-threaded CPython");
  779|      0|    }
  780|     10|#endif
  781|       |
  782|     10|    return 0;
  783|     10|}
modsupport.c:va_build_value:
  531|     14|{
  532|     14|    const char *f = format;
  533|     14|    Py_ssize_t n = countformat(f, '\0');
  534|     14|    va_list lva;
  535|     14|    PyObject *retval;
  536|       |
  537|     14|    if (n < 0)
  ------------------
  |  Branch (537:9): [True: 0, False: 14]
  ------------------
  538|      0|        return NULL;
  539|     14|    if (n == 0) {
  ------------------
  |  Branch (539:9): [True: 0, False: 14]
  ------------------
  540|      0|        Py_RETURN_NONE;
  ------------------
  |  |  628|      0|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
  541|      0|    }
  542|     14|    va_copy(lva, va);
  543|     14|    if (n == 1) {
  ------------------
  |  Branch (543:9): [True: 14, False: 0]
  ------------------
  544|     14|        retval = do_mkvalue(&f, &lva);
  545|     14|    } else {
  546|      0|        retval = do_mktuple(&f, &lva, '\0', n);
  547|      0|    }
  548|       |    va_end(lva);
  549|     14|    return retval;
  550|     14|}
modsupport.c:do_mkvalue:
  287|    160|{
  288|    160|    for (;;) {
  289|    160|        switch (*(*p_format)++) {
  290|     15|        case '(':
  ------------------
  |  Branch (290:9): [True: 15, False: 145]
  ------------------
  291|     15|            return do_mktuple(p_format, p_va, ')',
  292|     15|                              countformat(*p_format, ')'));
  293|       |
  294|      0|        case '[':
  ------------------
  |  Branch (294:9): [True: 0, False: 160]
  ------------------
  295|      0|            return do_mklist(p_format, p_va, ']',
  296|      0|                             countformat(*p_format, ']'));
  297|       |
  298|      2|        case '{':
  ------------------
  |  Branch (298:9): [True: 2, False: 158]
  ------------------
  299|      2|            return do_mkdict(p_format, p_va, '}',
  300|      2|                             countformat(*p_format, '}'));
  301|       |
  302|      0|        case 'b':
  ------------------
  |  Branch (302:9): [True: 0, False: 160]
  ------------------
  303|      0|        case 'B':
  ------------------
  |  Branch (303:9): [True: 0, False: 160]
  ------------------
  304|      0|        case 'h':
  ------------------
  |  Branch (304:9): [True: 0, False: 160]
  ------------------
  305|     26|        case 'i':
  ------------------
  |  Branch (305:9): [True: 26, False: 134]
  ------------------
  306|     26|            return PyLong_FromLong((long)va_arg(*p_va, int));
  307|       |
  308|      0|        case 'H':
  ------------------
  |  Branch (308:9): [True: 0, False: 160]
  ------------------
  309|      0|            return PyLong_FromLong((long)va_arg(*p_va, unsigned int));
  310|       |
  311|      0|        case 'I':
  ------------------
  |  Branch (311:9): [True: 0, False: 160]
  ------------------
  312|      0|        {
  313|      0|            unsigned int n;
  314|      0|            n = va_arg(*p_va, unsigned int);
  315|      0|            return PyLong_FromUnsignedLong(n);
  316|      0|        }
  317|       |
  318|      0|        case 'n':
  ------------------
  |  Branch (318:9): [True: 0, False: 160]
  ------------------
  319|       |#if SIZEOF_SIZE_T!=SIZEOF_LONG
  320|       |            return PyLong_FromSsize_t(va_arg(*p_va, Py_ssize_t));
  321|       |#endif
  322|       |            /* Fall through from 'n' to 'l' if Py_ssize_t is long */
  323|      0|            _Py_FALLTHROUGH;
  ------------------
  |  |  644|      0|#  define _Py_FALLTHROUGH __attribute__((fallthrough))
  ------------------
  324|      0|        case 'l':
  ------------------
  |  Branch (324:9): [True: 0, False: 160]
  ------------------
  325|      0|            return PyLong_FromLong(va_arg(*p_va, long));
  326|       |
  327|      0|        case 'k':
  ------------------
  |  Branch (327:9): [True: 0, False: 160]
  ------------------
  328|      0|        {
  329|      0|            unsigned long n;
  330|      0|            n = va_arg(*p_va, unsigned long);
  331|      0|            return PyLong_FromUnsignedLong(n);
  332|      0|        }
  333|       |
  334|      0|        case 'L':
  ------------------
  |  Branch (334:9): [True: 0, False: 160]
  ------------------
  335|      0|            return PyLong_FromLongLong((long long)va_arg(*p_va, long long));
  336|       |
  337|      0|        case 'K':
  ------------------
  |  Branch (337:9): [True: 0, False: 160]
  ------------------
  338|      0|            return PyLong_FromUnsignedLongLong(
  339|      0|                va_arg(*p_va, unsigned long long));
  340|       |
  341|      0|        case 'u':
  ------------------
  |  Branch (341:9): [True: 0, False: 160]
  ------------------
  342|      0|        {
  343|      0|            PyObject *v;
  344|      0|            const wchar_t *u = va_arg(*p_va, wchar_t*);
  345|      0|            Py_ssize_t n;
  346|      0|            if (**p_format == '#') {
  ------------------
  |  Branch (346:17): [True: 0, False: 0]
  ------------------
  347|      0|                ++*p_format;
  348|      0|                n = va_arg(*p_va, Py_ssize_t);
  349|      0|            }
  350|      0|            else
  351|      0|                n = -1;
  352|      0|            if (u == NULL) {
  ------------------
  |  Branch (352:17): [True: 0, False: 0]
  ------------------
  353|      0|                v = Py_NewRef(Py_None);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  354|      0|            }
  355|      0|            else {
  356|      0|                if (n < 0)
  ------------------
  |  Branch (356:21): [True: 0, False: 0]
  ------------------
  357|      0|                    n = wcslen(u);
  358|      0|                v = PyUnicode_FromWideChar(u, n);
  359|      0|            }
  360|      0|            return v;
  361|      0|        }
  362|      0|        case 'f':
  ------------------
  |  Branch (362:9): [True: 0, False: 160]
  ------------------
  363|      0|        case 'd':
  ------------------
  |  Branch (363:9): [True: 0, False: 160]
  ------------------
  364|      0|            return PyFloat_FromDouble(
  365|      0|                (double)va_arg(*p_va, va_double));
  366|       |
  367|      0|        case 'D':
  ------------------
  |  Branch (367:9): [True: 0, False: 160]
  ------------------
  368|      0|            return PyComplex_FromCComplex(
  369|      0|                *((Py_complex *)va_arg(*p_va, Py_complex *)));
  370|       |
  371|      0|        case 'c':
  ------------------
  |  Branch (371:9): [True: 0, False: 160]
  ------------------
  372|      0|        {
  373|      0|            char p[1];
  374|      0|            p[0] = (char)va_arg(*p_va, int);
  375|      0|            return PyBytes_FromStringAndSize(p, 1);
  376|      0|        }
  377|      0|        case 'C':
  ------------------
  |  Branch (377:9): [True: 0, False: 160]
  ------------------
  378|      0|        {
  379|      0|            int i = va_arg(*p_va, int);
  380|      0|            return PyUnicode_FromOrdinal(i);
  381|      0|        }
  382|      0|        case 'p':
  ------------------
  |  Branch (382:9): [True: 0, False: 160]
  ------------------
  383|      0|        {
  384|      0|            int i = va_arg(*p_va, int);
  385|      0|            return PyBool_FromLong(i);
  386|      0|        }
  387|       |
  388|     21|        case 's':
  ------------------
  |  Branch (388:9): [True: 21, False: 139]
  ------------------
  389|     25|        case 'z':
  ------------------
  |  Branch (389:9): [True: 4, False: 156]
  ------------------
  390|     25|        case 'U':   /* XXX deprecated alias */
  ------------------
  |  Branch (390:9): [True: 0, False: 160]
  ------------------
  391|     25|        {
  392|     25|            PyObject *v;
  393|     25|            const char *str = va_arg(*p_va, const char *);
  394|     25|            Py_ssize_t n;
  395|     25|            if (**p_format == '#') {
  ------------------
  |  Branch (395:17): [True: 0, False: 25]
  ------------------
  396|      0|                ++*p_format;
  397|      0|                n = va_arg(*p_va, Py_ssize_t);
  398|      0|            }
  399|     25|            else
  400|     25|                n = -1;
  401|     25|            if (str == NULL) {
  ------------------
  |  Branch (401:17): [True: 0, False: 25]
  ------------------
  402|      0|                v = Py_NewRef(Py_None);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  403|      0|            }
  404|     25|            else {
  405|     25|                if (n < 0) {
  ------------------
  |  Branch (405:21): [True: 25, False: 0]
  ------------------
  406|     25|                    size_t m = strlen(str);
  407|     25|                    if (m > PY_SSIZE_T_MAX) {
  ------------------
  |  |  137|     25|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (407:25): [True: 0, False: 25]
  ------------------
  408|      0|                        PyErr_SetString(PyExc_OverflowError,
  409|      0|                            "string too long for Python string");
  410|      0|                        return NULL;
  411|      0|                    }
  412|     25|                    n = (Py_ssize_t)m;
  413|     25|                }
  414|     25|                v = PyUnicode_FromStringAndSize(str, n);
  415|     25|            }
  416|     25|            return v;
  417|     25|        }
  418|       |
  419|      0|        case 'y':
  ------------------
  |  Branch (419:9): [True: 0, False: 160]
  ------------------
  420|      0|        {
  421|      0|            PyObject *v;
  422|      0|            const char *str = va_arg(*p_va, const char *);
  423|      0|            Py_ssize_t n;
  424|      0|            if (**p_format == '#') {
  ------------------
  |  Branch (424:17): [True: 0, False: 0]
  ------------------
  425|      0|                ++*p_format;
  426|      0|                n = va_arg(*p_va, Py_ssize_t);
  427|      0|            }
  428|      0|            else
  429|      0|                n = -1;
  430|      0|            if (str == NULL) {
  ------------------
  |  Branch (430:17): [True: 0, False: 0]
  ------------------
  431|      0|                v = Py_NewRef(Py_None);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  432|      0|            }
  433|      0|            else {
  434|      0|                if (n < 0) {
  ------------------
  |  Branch (434:21): [True: 0, False: 0]
  ------------------
  435|      0|                    size_t m = strlen(str);
  436|      0|                    if (m > PY_SSIZE_T_MAX) {
  ------------------
  |  |  137|      0|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (436:25): [True: 0, False: 0]
  ------------------
  437|      0|                        PyErr_SetString(PyExc_OverflowError,
  438|      0|                            "string too long for Python bytes");
  439|      0|                        return NULL;
  440|      0|                    }
  441|      0|                    n = (Py_ssize_t)m;
  442|      0|                }
  443|      0|                v = PyBytes_FromStringAndSize(str, n);
  444|      0|            }
  445|      0|            return v;
  446|      0|        }
  447|       |
  448|      0|        case 'N':
  ------------------
  |  Branch (448:9): [True: 0, False: 160]
  ------------------
  449|      0|        case 'S':
  ------------------
  |  Branch (449:9): [True: 0, False: 160]
  ------------------
  450|     92|        case 'O':
  ------------------
  |  Branch (450:9): [True: 92, False: 68]
  ------------------
  451|     92|        if (**p_format == '&') {
  ------------------
  |  Branch (451:13): [True: 0, False: 92]
  ------------------
  452|      0|            typedef PyObject *(*converter)(void *);
  453|      0|            converter func = va_arg(*p_va, converter);
  454|      0|            void *arg = va_arg(*p_va, void *);
  455|      0|            ++*p_format;
  456|      0|            return (*func)(arg);
  457|      0|        }
  458|     92|        else {
  459|     92|            PyObject *v;
  460|     92|            v = va_arg(*p_va, PyObject *);
  461|     92|            if (v != NULL) {
  ------------------
  |  Branch (461:17): [True: 92, False: 0]
  ------------------
  462|     92|                if (*(*p_format - 1) != 'N')
  ------------------
  |  Branch (462:21): [True: 92, False: 0]
  ------------------
  463|     92|                    Py_INCREF(v);
  ------------------
  |  |  310|     92|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     92|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     92|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  464|     92|            }
  465|      0|            else if (!PyErr_Occurred())
  ------------------
  |  Branch (465:22): [True: 0, False: 0]
  ------------------
  466|       |                /* If a NULL was passed
  467|       |                 * because a call that should
  468|       |                 * have constructed a value
  469|       |                 * failed, that's OK, and we
  470|       |                 * pass the error on; but if
  471|       |                 * no error occurred it's not
  472|       |                 * clear that the caller knew
  473|       |                 * what she was doing. */
  474|      0|                PyErr_SetString(PyExc_SystemError,
  475|      0|                    "NULL object passed to Py_BuildValue");
  476|     92|            return v;
  477|     92|        }
  478|       |
  479|      0|        case ':':
  ------------------
  |  Branch (479:9): [True: 0, False: 160]
  ------------------
  480|      0|        case ',':
  ------------------
  |  Branch (480:9): [True: 0, False: 160]
  ------------------
  481|      0|        case ' ':
  ------------------
  |  Branch (481:9): [True: 0, False: 160]
  ------------------
  482|      0|        case '\t':
  ------------------
  |  Branch (482:9): [True: 0, False: 160]
  ------------------
  483|      0|            break;
  484|       |
  485|      0|        default:
  ------------------
  |  Branch (485:9): [True: 0, False: 160]
  ------------------
  486|      0|            PyErr_SetString(PyExc_SystemError,
  487|      0|                "bad format char passed to Py_BuildValue");
  488|      0|            return NULL;
  489|       |
  490|    160|        }
  491|    160|    }
  492|    160|}
modsupport.c:check_end:
  107|     44|{
  108|     44|    const char *f = *p_format;
  109|     44|    while (*f != endchar) {
  ------------------
  |  Branch (109:12): [True: 0, False: 44]
  ------------------
  110|      0|        if (*f != ' ' && *f != '\t' && *f != ',' && *f != ':') {
  ------------------
  |  Branch (110:13): [True: 0, False: 0]
  |  Branch (110:26): [True: 0, False: 0]
  |  Branch (110:40): [True: 0, False: 0]
  |  Branch (110:53): [True: 0, False: 0]
  ------------------
  111|      0|            PyErr_SetString(PyExc_SystemError,
  112|      0|                            "Unmatched paren in format");
  113|      0|            return 0;
  114|      0|        }
  115|      0|        f++;
  116|      0|    }
  117|     44|    if (endchar) {
  ------------------
  |  Branch (117:9): [True: 17, False: 27]
  ------------------
  118|     17|        f++;
  119|     17|    }
  120|     44|    *p_format = f;
  121|     44|    return 1;
  122|     44|}
modsupport.c:do_mkdict:
  150|      2|{
  151|      2|    PyObject *d;
  152|      2|    Py_ssize_t i;
  153|      2|    if (n < 0)
  ------------------
  |  Branch (153:9): [True: 0, False: 2]
  ------------------
  154|      0|        return NULL;
  155|      2|    if (n % 2) {
  ------------------
  |  Branch (155:9): [True: 0, False: 2]
  ------------------
  156|      0|        PyErr_SetString(PyExc_SystemError,
  157|      0|                        "Bad dict format");
  158|      0|        do_ignore(p_format, p_va, endchar, n);
  159|      0|        return NULL;
  160|      0|    }
  161|       |    /* Note that we can't bail immediately on error as this will leak
  162|       |       refcounts on any 'N' arguments. */
  163|      2|    if ((d = PyDict_New()) == NULL) {
  ------------------
  |  Branch (163:9): [True: 0, False: 2]
  ------------------
  164|      0|        do_ignore(p_format, p_va, endchar, n);
  165|      0|        return NULL;
  166|      0|    }
  167|      3|    for (i = 0; i < n; i+= 2) {
  ------------------
  |  Branch (167:17): [True: 1, False: 2]
  ------------------
  168|      1|        PyObject *k, *v;
  169|       |
  170|      1|        k = do_mkvalue(p_format, p_va);
  171|      1|        if (k == NULL) {
  ------------------
  |  Branch (171:13): [True: 0, False: 1]
  ------------------
  172|      0|            do_ignore(p_format, p_va, endchar, n - i - 1);
  173|      0|            Py_DECREF(d);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  174|      0|            return NULL;
  175|      0|        }
  176|      1|        v = do_mkvalue(p_format, p_va);
  177|      1|        if (v == NULL || PyDict_SetItem(d, k, v) < 0) {
  ------------------
  |  Branch (177:13): [True: 0, False: 1]
  |  Branch (177:26): [True: 0, False: 1]
  ------------------
  178|      0|            do_ignore(p_format, p_va, endchar, n - i - 2);
  179|      0|            Py_DECREF(k);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  180|      0|            Py_XDECREF(v);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  181|      0|            Py_DECREF(d);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  182|      0|            return NULL;
  183|      0|        }
  184|      1|        Py_DECREF(k);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  185|      1|        Py_DECREF(v);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  186|      1|    }
  187|      2|    if (!check_end(p_format, endchar)) {
  ------------------
  |  Branch (187:9): [True: 0, False: 2]
  ------------------
  188|      0|        Py_DECREF(d);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  189|      0|        return NULL;
  190|      0|    }
  191|      2|    return d;
  192|      2|}
modsupport.c:do_mktuple:
  258|     15|{
  259|     15|    PyObject *v;
  260|     15|    Py_ssize_t i;
  261|     15|    if (n < 0)
  ------------------
  |  Branch (261:9): [True: 0, False: 15]
  ------------------
  262|      0|        return NULL;
  263|       |    /* Note that we can't bail immediately on error as this will leak
  264|       |       refcounts on any 'N' arguments. */
  265|     15|    if ((v = PyTuple_New(n)) == NULL) {
  ------------------
  |  Branch (265:9): [True: 0, False: 15]
  ------------------
  266|      0|        do_ignore(p_format, p_va, endchar, n);
  267|      0|        return NULL;
  268|      0|    }
  269|     52|    for (i = 0; i < n; i++) {
  ------------------
  |  Branch (269:17): [True: 37, False: 15]
  ------------------
  270|     37|        PyObject *w = do_mkvalue(p_format, p_va);
  271|     37|        if (w == NULL) {
  ------------------
  |  Branch (271:13): [True: 0, False: 37]
  ------------------
  272|      0|            do_ignore(p_format, p_va, endchar, n - i - 1);
  273|      0|            Py_DECREF(v);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  274|      0|            return NULL;
  275|      0|        }
  276|     37|        PyTuple_SET_ITEM(v, i, w);
  ------------------
  |  |   40|     37|    PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|     37|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     37|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|     37|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     37|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  277|     37|    }
  278|     15|    if (!check_end(p_format, endchar)) {
  ------------------
  |  Branch (278:9): [True: 0, False: 15]
  ------------------
  279|      0|        Py_DECREF(v);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  280|      0|        return NULL;
  281|      0|    }
  282|     15|    return v;
  283|     15|}
modsupport.c:countformat:
   55|     58|{
   56|     58|    Py_ssize_t count = 0;
   57|     58|    int level = 0;
   58|    274|    while (level > 0 || *format != endchar) {
  ------------------
  |  Branch (58:12): [True: 56, False: 218]
  |  Branch (58:25): [True: 160, False: 58]
  ------------------
   59|    216|        switch (*format) {
   60|      0|        case '\0':
  ------------------
  |  Branch (60:9): [True: 0, False: 216]
  ------------------
   61|       |            /* Premature end */
   62|      0|            PyErr_SetString(PyExc_SystemError,
   63|      0|                            "unmatched paren in format");
   64|      0|            return -1;
   65|     15|        case '(':
  ------------------
  |  Branch (65:9): [True: 15, False: 201]
  ------------------
   66|     15|        case '[':
  ------------------
  |  Branch (66:9): [True: 0, False: 216]
  ------------------
   67|     17|        case '{':
  ------------------
  |  Branch (67:9): [True: 2, False: 214]
  ------------------
   68|     17|            if (level == 0) {
  ------------------
  |  Branch (68:17): [True: 17, False: 0]
  ------------------
   69|     17|                count++;
   70|     17|            }
   71|     17|            level++;
   72|     17|            break;
   73|     15|        case ')':
  ------------------
  |  Branch (73:9): [True: 15, False: 201]
  ------------------
   74|     15|        case ']':
  ------------------
  |  Branch (74:9): [True: 0, False: 216]
  ------------------
   75|     17|        case '}':
  ------------------
  |  Branch (75:9): [True: 2, False: 214]
  ------------------
   76|     17|            level--;
   77|     17|            break;
   78|      0|        case '#':
  ------------------
  |  Branch (78:9): [True: 0, False: 216]
  ------------------
   79|      0|        case '&':
  ------------------
  |  Branch (79:9): [True: 0, False: 216]
  ------------------
   80|      0|        case ',':
  ------------------
  |  Branch (80:9): [True: 0, False: 216]
  ------------------
   81|      0|        case ':':
  ------------------
  |  Branch (81:9): [True: 0, False: 216]
  ------------------
   82|      0|        case ' ':
  ------------------
  |  Branch (82:9): [True: 0, False: 216]
  ------------------
   83|      0|        case '\t':
  ------------------
  |  Branch (83:9): [True: 0, False: 216]
  ------------------
   84|      0|            break;
   85|    182|        default:
  ------------------
  |  Branch (85:9): [True: 182, False: 34]
  ------------------
   86|    182|            if (level == 0) {
  ------------------
  |  Branch (86:17): [True: 143, False: 39]
  ------------------
   87|    143|                count++;
   88|    143|            }
   89|    216|        }
   90|    216|        format++;
   91|    216|    }
   92|     58|    return count;
   93|     58|}
modsupport.c:do_mkstack:
  227|     27|{
  228|     27|    Py_ssize_t i;
  229|       |
  230|     27|    if (n < 0) {
  ------------------
  |  Branch (230:9): [True: 0, False: 27]
  ------------------
  231|      0|        return -1;
  232|      0|    }
  233|       |    /* Note that we can't bail immediately on error as this will leak
  234|       |       refcounts on any 'N' arguments. */
  235|    134|    for (i = 0; i < n; i++) {
  ------------------
  |  Branch (235:17): [True: 107, False: 27]
  ------------------
  236|    107|        PyObject *w = do_mkvalue(p_format, p_va);
  237|    107|        if (w == NULL) {
  ------------------
  |  Branch (237:13): [True: 0, False: 107]
  ------------------
  238|      0|            do_ignore(p_format, p_va, endchar, n - i - 1);
  239|      0|            goto error;
  240|      0|        }
  241|    107|        stack[i] = w;
  242|    107|    }
  243|     27|    if (!check_end(p_format, endchar)) {
  ------------------
  |  Branch (243:9): [True: 0, False: 27]
  ------------------
  244|      0|        goto error;
  245|      0|    }
  246|     27|    return 0;
  247|       |
  248|      0|error:
  249|      0|    n = i;
  250|      0|    for (i=0; i < n; i++) {
  ------------------
  |  Branch (250:15): [True: 0, False: 0]
  ------------------
  251|      0|        Py_DECREF(stack[i]);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  252|      0|    }
  253|      0|    return -1;
  254|     27|}

PyOS_snprintf:
   42|      2|{
   43|      2|    int rc;
   44|      2|    va_list va;
   45|       |
   46|      2|    va_start(va, format);
   47|      2|    rc = PyOS_vsnprintf(str, size, format, va);
   48|       |    va_end(va);
   49|      2|    return rc;
   50|      2|}
PyOS_vsnprintf:
   54|      2|{
   55|      2|    assert(str != NULL);
  ------------------
  |  Branch (55:5): [True: 2, False: 0]
  ------------------
   56|      2|    assert(size > 0);
  ------------------
  |  Branch (56:5): [True: 2, False: 0]
  ------------------
   57|      2|    assert(size <= (INT_MAX - 1));
  ------------------
  |  Branch (57:5): [True: 2, False: 0]
  ------------------
   58|      2|    assert(format != NULL);
  ------------------
  |  Branch (58:5): [True: 2, False: 0]
  ------------------
   59|       |
   60|      2|    int len;  /* # bytes written, excluding \0 */
   61|       |    /* We take a size_t as input but return an int.  Sanity check
   62|       |     * our input so that it won't cause an overflow in the
   63|       |     * vsnprintf return value.  */
   64|      2|    if (size > INT_MAX - 1) {
  ------------------
  |  Branch (64:9): [True: 0, False: 2]
  ------------------
   65|      0|        len = -666;
   66|      0|        goto Done;
   67|      0|    }
   68|       |
   69|       |#if defined(_MSC_VER)
   70|       |    len = _vsnprintf(str, size, format, va);
   71|       |#else
   72|      2|    len = vsnprintf(str, size, format, va);
   73|      2|#endif
   74|       |
   75|      2|Done:
   76|      2|    if (size > 0) {
  ------------------
  |  Branch (76:9): [True: 2, False: 0]
  ------------------
   77|      2|        str[size-1] = '\0';
   78|      2|    }
   79|      2|    return len;
   80|      2|}

_PyPathConfig_GetGlobalModuleSearchPath:
   49|      1|{
   50|      1|    return _Py_path_config.module_search_path;
   51|      1|}
_PyPathConfig_ReadGlobal:
   78|      2|{
   79|      2|    PyStatus status = _PyStatus_OK();
  ------------------
  |  |   24|      2|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
   80|       |
   81|      2|#define COPY(ATTR) \
   82|      2|    do { \
   83|      2|        if (_Py_path_config.ATTR && !config->ATTR) { \
   84|      2|            status = PyConfig_SetString(config, &config->ATTR, _Py_path_config.ATTR); \
   85|      2|            if (_PyStatus_EXCEPTION(status)) goto done; \
   86|      2|        } \
   87|      2|    } while (0)
   88|       |
   89|      2|#define COPY2(ATTR, SRCATTR) \
   90|      2|    do { \
   91|      2|        if (_Py_path_config.SRCATTR && !config->ATTR) { \
   92|      2|            status = PyConfig_SetString(config, &config->ATTR, _Py_path_config.SRCATTR); \
   93|      2|            if (_PyStatus_EXCEPTION(status)) goto done; \
   94|      2|        } \
   95|      2|    } while (0)
   96|       |
   97|      2|#define COPY_INT(ATTR) \
   98|      2|    do { \
   99|      2|        assert(_Py_path_config.ATTR >= 0); \
  100|      2|        if ((_Py_path_config.ATTR >= 0) && (config->ATTR <= 0)) { \
  101|      2|            config->ATTR = _Py_path_config.ATTR; \
  102|      2|        } \
  103|      2|    } while (0)
  104|       |
  105|      2|    COPY(prefix);
  ------------------
  |  |   82|      2|    do { \
  |  |   83|      2|        if (_Py_path_config.ATTR && !config->ATTR) { \
  |  |  ------------------
  |  |  |  Branch (83:13): [True: 0, False: 2]
  |  |  |  Branch (83:37): [True: 0, False: 0]
  |  |  ------------------
  |  |   84|      0|            status = PyConfig_SetString(config, &config->ATTR, _Py_path_config.ATTR); \
  |  |   85|      0|            if (_PyStatus_EXCEPTION(status)) goto done; \
  |  |  ------------------
  |  |  |  |   43|      0|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:5): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   86|      0|        } \
  |  |   87|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (87:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
  106|      2|    COPY(exec_prefix);
  ------------------
  |  |   82|      2|    do { \
  |  |   83|      2|        if (_Py_path_config.ATTR && !config->ATTR) { \
  |  |  ------------------
  |  |  |  Branch (83:13): [True: 0, False: 2]
  |  |  |  Branch (83:37): [True: 0, False: 0]
  |  |  ------------------
  |  |   84|      0|            status = PyConfig_SetString(config, &config->ATTR, _Py_path_config.ATTR); \
  |  |   85|      0|            if (_PyStatus_EXCEPTION(status)) goto done; \
  |  |  ------------------
  |  |  |  |   43|      0|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:5): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   86|      0|        } \
  |  |   87|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (87:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
  107|      2|    COPY(stdlib_dir);
  ------------------
  |  |   82|      2|    do { \
  |  |   83|      2|        if (_Py_path_config.ATTR && !config->ATTR) { \
  |  |  ------------------
  |  |  |  Branch (83:13): [True: 0, False: 2]
  |  |  |  Branch (83:37): [True: 0, False: 0]
  |  |  ------------------
  |  |   84|      0|            status = PyConfig_SetString(config, &config->ATTR, _Py_path_config.ATTR); \
  |  |   85|      0|            if (_PyStatus_EXCEPTION(status)) goto done; \
  |  |  ------------------
  |  |  |  |   43|      0|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:5): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   86|      0|        } \
  |  |   87|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (87:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
  108|      2|    COPY(program_name);
  ------------------
  |  |   82|      2|    do { \
  |  |   83|      2|        if (_Py_path_config.ATTR && !config->ATTR) { \
  |  |  ------------------
  |  |  |  Branch (83:13): [True: 0, False: 2]
  |  |  |  Branch (83:37): [True: 0, False: 0]
  |  |  ------------------
  |  |   84|      0|            status = PyConfig_SetString(config, &config->ATTR, _Py_path_config.ATTR); \
  |  |   85|      0|            if (_PyStatus_EXCEPTION(status)) goto done; \
  |  |  ------------------
  |  |  |  |   43|      0|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:5): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   86|      0|        } \
  |  |   87|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (87:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
  109|      2|    COPY(home);
  ------------------
  |  |   82|      2|    do { \
  |  |   83|      2|        if (_Py_path_config.ATTR && !config->ATTR) { \
  |  |  ------------------
  |  |  |  Branch (83:13): [True: 0, False: 2]
  |  |  |  Branch (83:37): [True: 0, False: 0]
  |  |  ------------------
  |  |   84|      0|            status = PyConfig_SetString(config, &config->ATTR, _Py_path_config.ATTR); \
  |  |   85|      0|            if (_PyStatus_EXCEPTION(status)) goto done; \
  |  |  ------------------
  |  |  |  |   43|      0|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:5): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   86|      0|        } \
  |  |   87|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (87:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
  110|      2|    COPY2(executable, program_full_path);
  ------------------
  |  |   90|      2|    do { \
  |  |   91|      2|        if (_Py_path_config.SRCATTR && !config->ATTR) { \
  |  |  ------------------
  |  |  |  Branch (91:13): [True: 0, False: 2]
  |  |  |  Branch (91:40): [True: 0, False: 0]
  |  |  ------------------
  |  |   92|      0|            status = PyConfig_SetString(config, &config->ATTR, _Py_path_config.SRCATTR); \
  |  |   93|      0|            if (_PyStatus_EXCEPTION(status)) goto done; \
  |  |  ------------------
  |  |  |  |   43|      0|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:5): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   94|      0|        } \
  |  |   95|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (95:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
  111|      2|    COPY_INT(_is_python_build);
  ------------------
  |  |   98|      2|    do { \
  |  |   99|      2|        assert(_Py_path_config.ATTR >= 0); \
  |  |  100|      2|        if ((_Py_path_config.ATTR >= 0) && (config->ATTR <= 0)) { \
  |  |  ------------------
  |  |  |  Branch (100:13): [True: 2, False: 0]
  |  |  |  Branch (100:44): [True: 2, False: 0]
  |  |  ------------------
  |  |  101|      2|            config->ATTR = _Py_path_config.ATTR; \
  |  |  102|      2|        } \
  |  |  103|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (103:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
  |  Branch (111:5): [True: 2, False: 0]
  ------------------
  112|       |    // module_search_path must be initialised - not read
  113|      2|#undef COPY
  114|      2|#undef COPY2
  115|      2|#undef COPY_INT
  116|       |
  117|      2|done:
  118|      2|    return status;
  119|      2|}
_PyPathConfig_UpdateGlobal:
  123|      1|{
  124|      1|#define COPY(ATTR) \
  125|      1|    do { \
  126|      1|        if (config->ATTR) { \
  127|      1|            _PyMem_DefaultRawFree(_Py_path_config.ATTR); \
  128|      1|            _Py_path_config.ATTR = _PyMem_DefaultRawWcsdup(config->ATTR); \
  129|      1|            if (!_Py_path_config.ATTR) goto error; \
  130|      1|        } \
  131|      1|    } while (0)
  132|       |
  133|      1|#define COPY2(ATTR, SRCATTR) \
  134|      1|    do { \
  135|      1|        if (config->SRCATTR) { \
  136|      1|            _PyMem_DefaultRawFree(_Py_path_config.ATTR); \
  137|      1|            _Py_path_config.ATTR = _PyMem_DefaultRawWcsdup(config->SRCATTR); \
  138|      1|            if (!_Py_path_config.ATTR) goto error; \
  139|      1|        } \
  140|      1|    } while (0)
  141|       |
  142|      1|#define COPY_INT(ATTR) \
  143|      1|    do { \
  144|      1|        if (config->ATTR > 0) { \
  145|      1|            _Py_path_config.ATTR = config->ATTR; \
  146|      1|        } \
  147|      1|    } while (0)
  148|       |
  149|      1|    COPY(prefix);
  ------------------
  |  |  125|      1|    do { \
  |  |  126|      1|        if (config->ATTR) { \
  |  |  ------------------
  |  |  |  Branch (126:13): [True: 1, False: 0]
  |  |  ------------------
  |  |  127|      1|            _PyMem_DefaultRawFree(_Py_path_config.ATTR); \
  |  |  128|      1|            _Py_path_config.ATTR = _PyMem_DefaultRawWcsdup(config->ATTR); \
  |  |  129|      1|            if (!_Py_path_config.ATTR) goto error; \
  |  |  ------------------
  |  |  |  Branch (129:17): [True: 0, False: 1]
  |  |  ------------------
  |  |  130|      1|        } \
  |  |  131|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (131:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  150|      1|    COPY(exec_prefix);
  ------------------
  |  |  125|      1|    do { \
  |  |  126|      1|        if (config->ATTR) { \
  |  |  ------------------
  |  |  |  Branch (126:13): [True: 1, False: 0]
  |  |  ------------------
  |  |  127|      1|            _PyMem_DefaultRawFree(_Py_path_config.ATTR); \
  |  |  128|      1|            _Py_path_config.ATTR = _PyMem_DefaultRawWcsdup(config->ATTR); \
  |  |  129|      1|            if (!_Py_path_config.ATTR) goto error; \
  |  |  ------------------
  |  |  |  Branch (129:17): [True: 0, False: 1]
  |  |  ------------------
  |  |  130|      1|        } \
  |  |  131|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (131:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  151|      1|    COPY(stdlib_dir);
  ------------------
  |  |  125|      1|    do { \
  |  |  126|      1|        if (config->ATTR) { \
  |  |  ------------------
  |  |  |  Branch (126:13): [True: 1, False: 0]
  |  |  ------------------
  |  |  127|      1|            _PyMem_DefaultRawFree(_Py_path_config.ATTR); \
  |  |  128|      1|            _Py_path_config.ATTR = _PyMem_DefaultRawWcsdup(config->ATTR); \
  |  |  129|      1|            if (!_Py_path_config.ATTR) goto error; \
  |  |  ------------------
  |  |  |  Branch (129:17): [True: 0, False: 1]
  |  |  ------------------
  |  |  130|      1|        } \
  |  |  131|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (131:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  152|      1|    COPY(program_name);
  ------------------
  |  |  125|      1|    do { \
  |  |  126|      1|        if (config->ATTR) { \
  |  |  ------------------
  |  |  |  Branch (126:13): [True: 1, False: 0]
  |  |  ------------------
  |  |  127|      1|            _PyMem_DefaultRawFree(_Py_path_config.ATTR); \
  |  |  128|      1|            _Py_path_config.ATTR = _PyMem_DefaultRawWcsdup(config->ATTR); \
  |  |  129|      1|            if (!_Py_path_config.ATTR) goto error; \
  |  |  ------------------
  |  |  |  Branch (129:17): [True: 0, False: 1]
  |  |  ------------------
  |  |  130|      1|        } \
  |  |  131|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (131:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  153|      1|    COPY(home);
  ------------------
  |  |  125|      1|    do { \
  |  |  126|      1|        if (config->ATTR) { \
  |  |  ------------------
  |  |  |  Branch (126:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  127|      0|            _PyMem_DefaultRawFree(_Py_path_config.ATTR); \
  |  |  128|      0|            _Py_path_config.ATTR = _PyMem_DefaultRawWcsdup(config->ATTR); \
  |  |  129|      0|            if (!_Py_path_config.ATTR) goto error; \
  |  |  ------------------
  |  |  |  Branch (129:17): [True: 0, False: 0]
  |  |  ------------------
  |  |  130|      0|        } \
  |  |  131|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (131:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  154|      1|    COPY2(program_full_path, executable);
  ------------------
  |  |  134|      1|    do { \
  |  |  135|      1|        if (config->SRCATTR) { \
  |  |  ------------------
  |  |  |  Branch (135:13): [True: 1, False: 0]
  |  |  ------------------
  |  |  136|      1|            _PyMem_DefaultRawFree(_Py_path_config.ATTR); \
  |  |  137|      1|            _Py_path_config.ATTR = _PyMem_DefaultRawWcsdup(config->SRCATTR); \
  |  |  138|      1|            if (!_Py_path_config.ATTR) goto error; \
  |  |  ------------------
  |  |  |  Branch (138:17): [True: 0, False: 1]
  |  |  ------------------
  |  |  139|      1|        } \
  |  |  140|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (140:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  155|      1|    COPY_INT(_is_python_build);
  ------------------
  |  |  143|      1|    do { \
  |  |  144|      1|        if (config->ATTR > 0) { \
  |  |  ------------------
  |  |  |  Branch (144:13): [True: 0, False: 1]
  |  |  ------------------
  |  |  145|      0|            _Py_path_config.ATTR = config->ATTR; \
  |  |  146|      0|        } \
  |  |  147|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (147:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
  156|      1|#undef COPY
  157|      1|#undef COPY2
  158|      1|#undef COPY_INT
  159|       |
  160|      1|    _PyMem_DefaultRawFree(_Py_path_config.module_search_path);
  161|      1|    _Py_path_config.module_search_path = NULL;
  162|      1|    _PyMem_DefaultRawFree(_Py_path_config.calculated_module_search_path);
  163|      1|    _Py_path_config.calculated_module_search_path = NULL;
  164|       |
  165|      1|    do {
  166|      1|        size_t cch = 1;
  167|      4|        for (Py_ssize_t i = 0; i < config->module_search_paths.length; ++i) {
  ------------------
  |  Branch (167:32): [True: 3, False: 1]
  ------------------
  168|      3|            cch += 1 + wcslen(config->module_search_paths.items[i]);
  169|      3|        }
  170|       |
  171|      1|        wchar_t *path = (wchar_t*)_PyMem_DefaultRawMalloc(sizeof(wchar_t) * cch);
  172|      1|        if (!path) {
  ------------------
  |  Branch (172:13): [True: 0, False: 1]
  ------------------
  173|      0|            goto error;
  174|      0|        }
  175|      1|        wchar_t *p = path;
  176|      4|        for (Py_ssize_t i = 0; i < config->module_search_paths.length; ++i) {
  ------------------
  |  Branch (176:32): [True: 3, False: 1]
  ------------------
  177|      3|            wcscpy(p, config->module_search_paths.items[i]);
  178|      3|            p = wcschr(p, L'\0');
  179|      3|            *p++ = DELIM;
  ------------------
  |  |   51|      3|#  define DELIM L':'
  ------------------
  180|      3|            *p = L'\0';
  181|      3|        }
  182|       |
  183|      2|        do {
  184|      2|            *p = L'\0';
  185|      2|        } while (p != path && *--p == DELIM);
  ------------------
  |  |   51|      2|#  define DELIM L':'
  ------------------
  |  Branch (185:18): [True: 2, False: 0]
  |  Branch (185:31): [True: 1, False: 1]
  ------------------
  186|      1|        _Py_path_config.calculated_module_search_path = path;
  187|      1|    } while (0);
  ------------------
  |  Branch (187:14): [Folded, False: 1]
  ------------------
  188|       |
  189|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
  190|       |
  191|      0|error:
  192|      0|    return _PyStatus_NO_MEMORY();
  ------------------
  |  |   33|      0|#define _PyStatus_NO_MEMORY() _PyStatus_ERR(_PyStatus_NO_MEMORY_ERRMSG)
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  ------------------
  193|      1|}
_Py_GetStdlibDir:
  290|      1|{
  291|      1|    wchar_t *stdlib_dir = _Py_path_config.stdlib_dir;
  292|      1|    if (stdlib_dir != NULL && stdlib_dir[0] != L'\0') {
  ------------------
  |  Branch (292:9): [True: 1, False: 0]
  |  Branch (292:31): [True: 1, False: 0]
  ------------------
  293|      1|        return stdlib_dir;
  294|      1|    }
  295|      0|    return NULL;
  296|      1|}

_Py_ClearFileSystemEncoding:
   27|      1|{
   28|      1|_Py_COMP_DIAG_PUSH
   29|      1|_Py_COMP_DIAG_IGNORE_DEPR_DECLS
   30|      1|    if (!Py_HasFileSystemDefaultEncoding && Py_FileSystemDefaultEncoding) {
  ------------------
  |  Branch (30:9): [True: 1, False: 0]
  |  Branch (30:45): [True: 0, False: 1]
  ------------------
   31|      0|        PyMem_RawFree((char*)Py_FileSystemDefaultEncoding);
   32|      0|        Py_FileSystemDefaultEncoding = NULL;
   33|      0|    }
   34|      1|    if (!_Py_HasFileSystemDefaultEncodeErrors && Py_FileSystemDefaultEncodeErrors) {
  ------------------
  |  Branch (34:9): [True: 1, False: 0]
  |  Branch (34:50): [True: 0, False: 1]
  ------------------
   35|      0|        PyMem_RawFree((char*)Py_FileSystemDefaultEncodeErrors);
   36|       |        Py_FileSystemDefaultEncodeErrors = NULL;
   37|      0|    }
   38|      1|_Py_COMP_DIAG_POP
   39|      1|}
_Py_SetFileSystemEncoding:
   49|      1|{
   50|      1|    char *encoding2 = _PyMem_RawStrdup(encoding);
   51|      1|    if (encoding2 == NULL) {
  ------------------
  |  Branch (51:9): [True: 0, False: 1]
  ------------------
   52|      0|        return -1;
   53|      0|    }
   54|       |
   55|      1|    char *errors2 = _PyMem_RawStrdup(errors);
   56|      1|    if (errors2 == NULL) {
  ------------------
  |  Branch (56:9): [True: 0, False: 1]
  ------------------
   57|      0|        PyMem_RawFree(encoding2);
   58|      0|        return -1;
   59|      0|    }
   60|       |
   61|      1|    _Py_ClearFileSystemEncoding();
   62|       |
   63|      1|_Py_COMP_DIAG_PUSH
   64|      1|_Py_COMP_DIAG_IGNORE_DEPR_DECLS
   65|      1|    Py_FileSystemDefaultEncoding = encoding2;
   66|      1|    Py_HasFileSystemDefaultEncoding = 0;
   67|       |
   68|      1|    Py_FileSystemDefaultEncodeErrors = errors2;
   69|      1|    _Py_HasFileSystemDefaultEncodeErrors = 0;
   70|      1|_Py_COMP_DIAG_POP
   71|      1|    return 0;
   72|      1|}
_PyArgv_AsWstrList:
   80|      2|{
   81|      2|    PyWideStringList wargv = _PyWideStringList_INIT;
  ------------------
  |  |   53|      2|#define _PyWideStringList_INIT (PyWideStringList){.length = 0, .items = NULL}
  ------------------
   82|      2|    if (args->use_bytes_argv) {
  ------------------
  |  Branch (82:9): [True: 0, False: 2]
  ------------------
   83|      0|        size_t size = sizeof(wchar_t*) * args->argc;
   84|      0|        wargv.items = (wchar_t **)PyMem_RawMalloc(size);
   85|      0|        if (wargv.items == NULL) {
  ------------------
  |  Branch (85:13): [True: 0, False: 0]
  ------------------
   86|      0|            return _PyStatus_NO_MEMORY();
  ------------------
  |  |   33|      0|#define _PyStatus_NO_MEMORY() _PyStatus_ERR(_PyStatus_NO_MEMORY_ERRMSG)
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  ------------------
   87|      0|        }
   88|       |
   89|      0|        for (Py_ssize_t i = 0; i < args->argc; i++) {
  ------------------
  |  Branch (89:32): [True: 0, False: 0]
  ------------------
   90|      0|            size_t len;
   91|      0|            wchar_t *arg = Py_DecodeLocale(args->bytes_argv[i], &len);
   92|      0|            if (arg == NULL) {
  ------------------
  |  Branch (92:17): [True: 0, False: 0]
  ------------------
   93|      0|                _PyWideStringList_Clear(&wargv);
   94|      0|                return DECODE_LOCALE_ERR("command line arguments", len);
  ------------------
  |  |  189|      0|    ((LEN) == (size_t)-2) \
  |  |  ------------------
  |  |  |  Branch (189:5): [True: 0, False: 0]
  |  |  ------------------
  |  |  190|      0|     ? _PyStatus_ERR("cannot decode " NAME) \
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  |  |  191|      0|     : _PyStatus_NO_MEMORY()
  |  |  ------------------
  |  |  |  |   33|      0|#define _PyStatus_NO_MEMORY() _PyStatus_ERR(_PyStatus_NO_MEMORY_ERRMSG)
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   95|      0|            }
   96|      0|            wargv.items[i] = arg;
   97|      0|            wargv.length++;
   98|      0|        }
   99|       |
  100|      0|        _PyWideStringList_Clear(list);
  101|      0|        *list = wargv;
  102|      0|    }
  103|      2|    else {
  104|      2|        wargv.length = args->argc;
  105|      2|        wargv.items = (wchar_t **)args->wchar_argv;
  106|      2|        if (_PyWideStringList_Copy(list, &wargv) < 0) {
  ------------------
  |  Branch (106:13): [True: 0, False: 2]
  ------------------
  107|      0|            return _PyStatus_NO_MEMORY();
  ------------------
  |  |   33|      0|#define _PyStatus_NO_MEMORY() _PyStatus_ERR(_PyStatus_NO_MEMORY_ERRMSG)
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  ------------------
  108|      0|        }
  109|      2|    }
  110|      2|    return _PyStatus_OK();
  ------------------
  |  |   24|      2|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
  111|      2|}
_PyPreCmdline_Clear:
  118|      2|{
  119|      2|    _PyWideStringList_Clear(&cmdline->argv);
  120|      2|    _PyWideStringList_Clear(&cmdline->xoptions);
  121|      2|}
_PyPreCmdline_SetArgv:
  126|      2|{
  127|      2|    return _PyArgv_AsWstrList(args, &cmdline->argv);
  128|      2|}
_PyPreCmdline_SetConfig:
  163|      1|{
  164|      1|#define COPY_ATTR(ATTR) \
  165|      1|    config->ATTR = cmdline->ATTR
  166|       |
  167|      1|    PyStatus status = _PyWideStringList_Extend(&config->xoptions, &cmdline->xoptions);
  168|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  169|      0|        return status;
  170|      0|    }
  171|       |
  172|      1|    COPY_ATTR(isolated);
  ------------------
  |  |  165|      1|    config->ATTR = cmdline->ATTR
  ------------------
  173|      1|    COPY_ATTR(use_environment);
  ------------------
  |  |  165|      1|    config->ATTR = cmdline->ATTR
  ------------------
  174|      1|    COPY_ATTR(dev_mode);
  ------------------
  |  |  165|      1|    config->ATTR = cmdline->ATTR
  ------------------
  175|      1|    COPY_ATTR(warn_default_encoding);
  ------------------
  |  |  165|      1|    config->ATTR = cmdline->ATTR
  ------------------
  176|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
  177|       |
  178|      1|#undef COPY_ATTR
  179|      1|}
_PyPreCmdline_Read:
  232|      3|{
  233|      3|    precmdline_get_preconfig(cmdline, preconfig);
  234|       |
  235|      3|    if (preconfig->parse_argv) {
  ------------------
  |  Branch (235:9): [True: 3, False: 0]
  ------------------
  236|      3|        PyStatus status = precmdline_parse_cmdline(cmdline);
  237|      3|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      3|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  238|      0|            return status;
  239|      0|        }
  240|      3|    }
  241|       |
  242|       |    /* isolated, use_environment */
  243|      3|    if (cmdline->isolated < 0) {
  ------------------
  |  Branch (243:9): [True: 0, False: 3]
  ------------------
  244|      0|        cmdline->isolated = 0;
  245|      0|    }
  246|      3|    if (cmdline->isolated > 0) {
  ------------------
  |  Branch (246:9): [True: 0, False: 3]
  ------------------
  247|      0|        cmdline->use_environment = 0;
  248|      0|    }
  249|      3|    if (cmdline->use_environment < 0) {
  ------------------
  |  Branch (249:9): [True: 0, False: 3]
  ------------------
  250|      0|        cmdline->use_environment = 0;
  251|      0|    }
  252|       |
  253|       |    /* dev_mode */
  254|      3|    if ((cmdline->dev_mode < 0)
  ------------------
  |  Branch (254:9): [True: 1, False: 2]
  ------------------
  255|      1|        && (_Py_get_xoption(&cmdline->xoptions, L"dev")
  ------------------
  |  Branch (255:13): [True: 0, False: 1]
  ------------------
  256|      1|            || _Py_GetEnv(cmdline->use_environment, "PYTHONDEVMODE")))
  ------------------
  |  Branch (256:16): [True: 0, False: 1]
  ------------------
  257|      0|    {
  258|      0|        cmdline->dev_mode = 1;
  259|      0|    }
  260|      3|    if (cmdline->dev_mode < 0) {
  ------------------
  |  Branch (260:9): [True: 1, False: 2]
  ------------------
  261|      1|        cmdline->dev_mode = 0;
  262|      1|    }
  263|       |
  264|       |    // warn_default_encoding
  265|      3|    if (_Py_get_xoption(&cmdline->xoptions, L"warn_default_encoding")
  ------------------
  |  Branch (265:9): [True: 0, False: 3]
  ------------------
  266|      3|            || _Py_GetEnv(cmdline->use_environment, "PYTHONWARNDEFAULTENCODING"))
  ------------------
  |  Branch (266:16): [True: 0, False: 3]
  ------------------
  267|      0|    {
  268|      0|        cmdline->warn_default_encoding = 1;
  269|      0|    }
  270|       |
  271|      3|    assert(cmdline->use_environment >= 0);
  ------------------
  |  Branch (271:5): [True: 3, False: 0]
  ------------------
  272|      3|    assert(cmdline->isolated >= 0);
  ------------------
  |  Branch (272:5): [True: 3, False: 0]
  ------------------
  273|      3|    assert(cmdline->dev_mode >= 0);
  ------------------
  |  Branch (273:5): [True: 3, False: 0]
  ------------------
  274|      3|    assert(cmdline->warn_default_encoding >= 0);
  ------------------
  |  Branch (274:5): [True: 3, False: 0]
  ------------------
  275|       |
  276|      3|    return _PyStatus_OK();
  ------------------
  |  |   24|      3|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
  277|      3|}
_PyPreConfig_InitCompatConfig:
  285|      6|{
  286|      6|    memset(config, 0, sizeof(*config));
  287|       |
  288|      6|    config->_config_init = (int)_PyConfig_INIT_COMPAT;
  289|      6|    config->parse_argv = 0;
  290|      6|    config->isolated = -1;
  291|      6|    config->use_environment = -1;
  292|      6|    config->configure_locale = 1;
  293|       |
  294|       |    /* gh-80624: C locale coercion (PEP 538) is disabled by default using
  295|       |       the Compat configuration.
  296|       |
  297|       |       Py_UTF8Mode=0 disables the UTF-8 mode. PYTHONUTF8 environment variable
  298|       |       is ignored (even if use_environment=1). */
  299|      6|    config->utf8_mode = 1;
  300|      6|    config->coerce_c_locale = 0;
  301|      6|    config->coerce_c_locale_warn = 0;
  302|       |
  303|      6|    config->dev_mode = -1;
  304|      6|    config->allocator = PYMEM_ALLOCATOR_NOT_SET;
  305|       |#ifdef MS_WINDOWS
  306|       |    config->legacy_windows_fs_encoding = -1;
  307|       |#endif
  308|      6|}
PyPreConfig_InitPythonConfig:
  313|      6|{
  314|      6|    _PyPreConfig_InitCompatConfig(config);
  315|       |
  316|      6|    config->_config_init = (int)_PyConfig_INIT_PYTHON;
  317|      6|    config->isolated = 0;
  318|      6|    config->parse_argv = 1;
  319|      6|    config->use_environment = 1;
  320|       |    /* Set to -1 to enable C locale coercion (PEP 538) depending on
  321|       |       the LC_CTYPE locale, PYTHONUTF8 and PYTHONCOERCECLOCALE
  322|       |       environment variables. */
  323|      6|    config->coerce_c_locale = -1;
  324|      6|    config->coerce_c_locale_warn = -1;
  325|      6|    config->utf8_mode = -1;
  326|       |#ifdef MS_WINDOWS
  327|       |    config->legacy_windows_fs_encoding = 0;
  328|       |#endif
  329|      6|}
_PyPreConfig_InitFromPreConfig:
  352|      4|{
  353|      4|    PyPreConfig_InitPythonConfig(config);
  354|      4|    preconfig_copy(config, config2);
  355|      4|    return _PyStatus_OK();
  ------------------
  |  |   24|      4|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
  356|      4|}
_PyPreConfig_InitFromConfig:
  361|      1|{
  362|      1|    _PyConfigInitEnum config_init = (_PyConfigInitEnum)config->_config_init;
  363|      1|    switch (config_init) {
  364|      1|    case _PyConfig_INIT_PYTHON:
  ------------------
  |  Branch (364:5): [True: 1, False: 0]
  ------------------
  365|      1|        PyPreConfig_InitPythonConfig(preconfig);
  366|      1|        break;
  367|      0|    case _PyConfig_INIT_ISOLATED:
  ------------------
  |  Branch (367:5): [True: 0, False: 1]
  ------------------
  368|      0|        PyPreConfig_InitIsolatedConfig(preconfig);
  369|      0|        break;
  370|      0|    case _PyConfig_INIT_COMPAT:
  ------------------
  |  Branch (370:5): [True: 0, False: 1]
  ------------------
  371|      0|    default:
  ------------------
  |  Branch (371:5): [True: 0, False: 1]
  ------------------
  372|      0|        _PyPreConfig_InitCompatConfig(preconfig);
  373|      1|    }
  374|       |
  375|      1|    _PyPreConfig_GetConfig(preconfig, config);
  376|      1|}
_PyPreConfig_GetConfig:
  450|      2|{
  451|      2|#define COPY_ATTR(ATTR) \
  452|      2|    if (config->ATTR != -1) { \
  453|      2|        preconfig->ATTR = config->ATTR; \
  454|      2|    }
  455|       |
  456|      2|    COPY_ATTR(parse_argv);
  ------------------
  |  |  452|      2|    if (config->ATTR != -1) { \
  |  |  ------------------
  |  |  |  Branch (452:9): [True: 2, False: 0]
  |  |  ------------------
  |  |  453|      2|        preconfig->ATTR = config->ATTR; \
  |  |  454|      2|    }
  ------------------
  457|      2|    COPY_ATTR(isolated);
  ------------------
  |  |  452|      2|    if (config->ATTR != -1) { \
  |  |  ------------------
  |  |  |  Branch (452:9): [True: 2, False: 0]
  |  |  ------------------
  |  |  453|      2|        preconfig->ATTR = config->ATTR; \
  |  |  454|      2|    }
  ------------------
  458|      2|    COPY_ATTR(use_environment);
  ------------------
  |  |  452|      2|    if (config->ATTR != -1) { \
  |  |  ------------------
  |  |  |  Branch (452:9): [True: 2, False: 0]
  |  |  ------------------
  |  |  453|      2|        preconfig->ATTR = config->ATTR; \
  |  |  454|      2|    }
  ------------------
  459|      2|    COPY_ATTR(dev_mode);
  ------------------
  |  |  452|      2|    if (config->ATTR != -1) { \
  |  |  ------------------
  |  |  |  Branch (452:9): [True: 0, False: 2]
  |  |  ------------------
  |  |  453|      0|        preconfig->ATTR = config->ATTR; \
  |  |  454|      0|    }
  ------------------
  460|       |
  461|      2|#undef COPY_ATTR
  462|      2|}
_Py_GetEnv:
  528|     36|{
  529|     36|    assert(use_environment >= 0);
  ------------------
  |  Branch (529:5): [True: 36, False: 0]
  ------------------
  530|       |
  531|     36|    if (!use_environment) {
  ------------------
  |  Branch (531:9): [True: 0, False: 36]
  ------------------
  532|      0|        return NULL;
  533|      0|    }
  534|       |
  535|     36|    const char *var = getenv(name);
  536|     36|    if (var && var[0] != '\0') {
  ------------------
  |  Branch (536:9): [True: 0, False: 36]
  |  Branch (536:16): [True: 0, False: 0]
  ------------------
  537|      0|        return var;
  538|      0|    }
  539|     36|    else {
  540|       |        return NULL;
  541|     36|    }
  542|     36|}
_Py_get_env_flag:
  565|      6|{
  566|      6|    const char *var = _Py_GetEnv(use_environment, name);
  567|      6|    if (!var) {
  ------------------
  |  Branch (567:9): [True: 6, False: 0]
  ------------------
  568|      6|        return;
  569|      6|    }
  570|      0|    int value;
  571|      0|    if (_Py_str_to_int(var, &value) < 0 || value < 0) {
  ------------------
  |  Branch (571:9): [True: 0, False: 0]
  |  Branch (571:44): [True: 0, False: 0]
  ------------------
  572|       |        /* PYTHONDEBUG=text and PYTHONDEBUG=-2 behave as PYTHONDEBUG=1 */
  573|      0|        value = 1;
  574|      0|    }
  575|      0|    if (*flag < value) {
  ------------------
  |  Branch (575:9): [True: 0, False: 0]
  ------------------
  576|      0|        *flag = value;
  577|      0|    }
  578|      0|}
_Py_get_xoption:
  583|     22|{
  584|     22|    for (Py_ssize_t i=0; i < xoptions->length; i++) {
  ------------------
  |  Branch (584:26): [True: 0, False: 22]
  ------------------
  585|      0|        const wchar_t *option = xoptions->items[i];
  586|      0|        size_t len;
  587|      0|        const wchar_t *sep = wcschr(option, L'=');
  588|      0|        if (sep != NULL) {
  ------------------
  |  Branch (588:13): [True: 0, False: 0]
  ------------------
  589|      0|            len = (sep - option);
  590|      0|        }
  591|      0|        else {
  592|      0|            len = wcslen(option);
  593|      0|        }
  594|      0|        if (wcsncmp(option, name, len) == 0 && name[len] == L'\0') {
  ------------------
  |  Branch (594:13): [True: 0, False: 0]
  |  Branch (594:48): [True: 0, False: 0]
  ------------------
  595|      0|            return option;
  596|      0|        }
  597|      0|    }
  598|     22|    return NULL;
  599|     22|}
_PyPreConfig_Read:
  783|      1|{
  784|      1|    PyStatus status;
  785|       |
  786|      1|    status = _PyRuntime_Initialize();
  787|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  788|      0|        return status;
  789|      0|    }
  790|       |
  791|      1|    preconfig_get_global_vars(config);
  792|       |
  793|       |    /* Copy LC_CTYPE locale, since it's modified later */
  794|      1|    const char *loc = setlocale(LC_CTYPE, NULL);
  795|      1|    if (loc == NULL) {
  ------------------
  |  Branch (795:9): [True: 0, False: 1]
  ------------------
  796|      0|        return _PyStatus_ERR("failed to LC_CTYPE locale");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
  797|      0|    }
  798|      1|    char *init_ctype_locale = _PyMem_RawStrdup(loc);
  799|      1|    if (init_ctype_locale == NULL) {
  ------------------
  |  Branch (799:9): [True: 0, False: 1]
  ------------------
  800|      0|        return _PyStatus_NO_MEMORY();
  ------------------
  |  |   33|      0|#define _PyStatus_NO_MEMORY() _PyStatus_ERR(_PyStatus_NO_MEMORY_ERRMSG)
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  ------------------
  801|      0|    }
  802|       |
  803|       |    /* Save the config to be able to restore it if encodings change */
  804|      1|    PyPreConfig save_config;
  805|       |
  806|      1|    status = _PyPreConfig_InitFromPreConfig(&save_config, config);
  807|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  808|      0|        return status;
  809|      0|    }
  810|       |
  811|       |    /* Set LC_CTYPE to the user preferred locale */
  812|      1|    if (config->configure_locale) {
  ------------------
  |  Branch (812:9): [True: 1, False: 0]
  ------------------
  813|      1|        _Py_SetLocaleFromEnv(LC_CTYPE);
  814|      1|    }
  815|       |
  816|      1|    PyPreConfig save_runtime_config;
  817|      1|    preconfig_copy(&save_runtime_config, &_PyRuntime.preconfig);
  818|       |
  819|      1|    _PyPreCmdline cmdline = _PyPreCmdline_INIT;
  ------------------
  |  |  111|      1|    (_PyPreCmdline){ \
  |  |  112|      1|        .use_environment = -1, \
  |  |  113|      1|        .isolated = -1, \
  |  |  114|      1|        .dev_mode = -1}
  ------------------
  820|      1|    int locale_coerced = 0;
  821|      1|    int loops = 0;
  822|       |
  823|      2|    while (1) {
  ------------------
  |  Branch (823:12): [True: 2, Folded]
  ------------------
  824|      2|        int utf8_mode = config->utf8_mode;
  825|       |
  826|       |        /* Watchdog to prevent an infinite loop */
  827|      2|        loops++;
  828|      2|        if (loops == 3) {
  ------------------
  |  Branch (828:13): [True: 0, False: 2]
  ------------------
  829|      0|            status = _PyStatus_ERR("Encoding changed twice while "
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
  830|      0|                                   "reading the configuration");
  831|      0|            goto done;
  832|      0|        }
  833|       |
  834|       |        /* bpo-34207: Py_DecodeLocale() and Py_EncodeLocale() depend
  835|       |           on the utf8_mode and legacy_windows_fs_encoding members
  836|       |           of _PyRuntime.preconfig. */
  837|      2|        preconfig_copy(&_PyRuntime.preconfig, config);
  838|       |
  839|      2|        if (args) {
  ------------------
  |  Branch (839:13): [True: 2, False: 0]
  ------------------
  840|       |            // Set command line arguments at each iteration. If they are bytes
  841|       |            // strings, they are decoded from the new encoding.
  842|      2|            status = _PyPreCmdline_SetArgv(&cmdline, args);
  843|      2|            if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      2|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  844|      0|                goto done;
  845|      0|            }
  846|      2|        }
  847|       |
  848|      2|        status = preconfig_read(config, &cmdline);
  849|      2|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      2|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  850|      0|            goto done;
  851|      0|        }
  852|       |
  853|       |        /* The legacy C locale assumes ASCII as the default text encoding, which
  854|       |         * causes problems not only for the CPython runtime, but also other
  855|       |         * components like GNU readline.
  856|       |         *
  857|       |         * Accordingly, when the CLI detects it, it attempts to coerce it to a
  858|       |         * more capable UTF-8 based alternative.
  859|       |         *
  860|       |         * See the documentation of the PYTHONCOERCECLOCALE setting for more
  861|       |         * details.
  862|       |         */
  863|      2|        int encoding_changed = 0;
  864|      2|        if (config->coerce_c_locale && !locale_coerced) {
  ------------------
  |  Branch (864:13): [True: 2, False: 0]
  |  Branch (864:40): [True: 1, False: 1]
  ------------------
  865|      1|            locale_coerced = 1;
  866|      1|            _Py_CoerceLegacyLocale(0);
  867|      1|            encoding_changed = 1;
  868|      1|        }
  869|       |
  870|      2|        if (utf8_mode == -1) {
  ------------------
  |  Branch (870:13): [True: 1, False: 1]
  ------------------
  871|      1|            if (config->utf8_mode == 1) {
  ------------------
  |  Branch (871:17): [True: 1, False: 0]
  ------------------
  872|       |                /* UTF-8 Mode enabled */
  873|      1|                encoding_changed = 1;
  874|      1|            }
  875|      1|        }
  876|      1|        else {
  877|      1|            if (config->utf8_mode != utf8_mode) {
  ------------------
  |  Branch (877:17): [True: 0, False: 1]
  ------------------
  878|      0|                encoding_changed = 1;
  879|      0|            }
  880|      1|        }
  881|       |
  882|      2|        if (!encoding_changed) {
  ------------------
  |  Branch (882:13): [True: 1, False: 1]
  ------------------
  883|      1|            break;
  884|      1|        }
  885|       |
  886|       |        /* Reset the configuration before reading again the configuration,
  887|       |           just keep UTF-8 Mode and coerce C locale value. */
  888|      1|        int new_utf8_mode = config->utf8_mode;
  889|      1|        int new_coerce_c_locale = config->coerce_c_locale;
  890|      1|        preconfig_copy(config, &save_config);
  891|      1|        config->utf8_mode = new_utf8_mode;
  892|      1|        config->coerce_c_locale = new_coerce_c_locale;
  893|       |
  894|       |        /* The encoding changed: read again the configuration
  895|       |           with the new encoding */
  896|      1|    }
  897|      1|    status = _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
  898|       |
  899|      1|done:
  900|       |    // Revert side effects
  901|       |    setlocale(LC_CTYPE, init_ctype_locale);
  902|      1|    PyMem_RawFree(init_ctype_locale);
  903|      1|    preconfig_copy(&_PyRuntime.preconfig, &save_runtime_config);
  904|      1|    _PyPreCmdline_Clear(&cmdline);
  905|      1|    return status;
  906|      1|}
_PyPreConfig_Write:
  923|      1|{
  924|      1|    PyPreConfig config;
  925|       |
  926|      1|    PyStatus status = _PyPreConfig_InitFromPreConfig(&config, src_config);
  927|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  928|      0|        return status;
  929|      0|    }
  930|       |
  931|      1|    if (_Py_IsCoreInitialized()) {
  ------------------
  |  Branch (931:9): [True: 0, False: 1]
  ------------------
  932|       |        /* bpo-34008: Calling this functions after Py_Initialize() ignores
  933|       |           the new configuration. */
  934|      0|        return _PyStatus_OK();
  ------------------
  |  |   24|      0|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
  935|      0|    }
  936|       |
  937|      1|    PyMemAllocatorName name = (PyMemAllocatorName)config.allocator;
  938|      1|    if (name != PYMEM_ALLOCATOR_NOT_SET) {
  ------------------
  |  Branch (938:9): [True: 0, False: 1]
  ------------------
  939|      0|        if (_PyMem_SetupAllocators(name) < 0) {
  ------------------
  |  Branch (939:13): [True: 0, False: 0]
  ------------------
  940|      0|            return _PyStatus_ERR("Unknown PYTHONMALLOC allocator");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
  941|      0|        }
  942|      0|    }
  943|       |
  944|      1|    preconfig_set_global_vars(&config);
  945|       |
  946|      1|    if (config.configure_locale) {
  ------------------
  |  Branch (946:9): [True: 1, False: 0]
  ------------------
  947|      1|        if (config.coerce_c_locale) {
  ------------------
  |  Branch (947:13): [True: 1, False: 0]
  ------------------
  948|      1|            if (!_Py_CoerceLegacyLocale(config.coerce_c_locale_warn)) {
  ------------------
  |  Branch (948:17): [True: 0, False: 1]
  ------------------
  949|       |                /* C locale not coerced */
  950|      0|                config.coerce_c_locale = 0;
  951|      0|            }
  952|      1|        }
  953|       |
  954|       |        /* Set LC_CTYPE to the user preferred locale */
  955|      1|        _Py_SetLocaleFromEnv(LC_CTYPE);
  956|      1|    }
  957|       |
  958|       |    /* Write the new pre-configuration into _PyRuntime */
  959|      1|    preconfig_copy(&_PyRuntime.preconfig, &config);
  960|       |
  961|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
  962|      1|}
preconfig.c:precmdline_get_preconfig:
  133|      3|{
  134|      3|#define COPY_ATTR(ATTR) \
  135|      3|    if (config->ATTR != -1) { \
  136|      3|        cmdline->ATTR = config->ATTR; \
  137|      3|    }
  138|       |
  139|      3|    COPY_ATTR(isolated);
  ------------------
  |  |  135|      3|    if (config->ATTR != -1) { \
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 3, False: 0]
  |  |  ------------------
  |  |  136|      3|        cmdline->ATTR = config->ATTR; \
  |  |  137|      3|    }
  ------------------
  140|      3|    COPY_ATTR(use_environment);
  ------------------
  |  |  135|      3|    if (config->ATTR != -1) { \
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 3, False: 0]
  |  |  ------------------
  |  |  136|      3|        cmdline->ATTR = config->ATTR; \
  |  |  137|      3|    }
  ------------------
  141|      3|    COPY_ATTR(dev_mode);
  ------------------
  |  |  135|      3|    if (config->ATTR != -1) { \
  |  |  ------------------
  |  |  |  Branch (135:9): [True: 1, False: 2]
  |  |  ------------------
  |  |  136|      1|        cmdline->ATTR = config->ATTR; \
  |  |  137|      1|    }
  ------------------
  142|       |
  143|      3|#undef COPY_ATTR
  144|      3|}
preconfig.c:precmdline_parse_cmdline:
  185|      3|{
  186|      3|    const PyWideStringList *argv = &cmdline->argv;
  187|       |
  188|      3|    _PyOS_ResetGetOpt();
  189|       |    /* Don't log parsing errors into stderr here: PyConfig_Read()
  190|       |       is responsible for that */
  191|      3|    _PyOS_opterr = 0;
  192|      3|    do {
  193|      3|        int longindex = -1;
  194|      3|        int c = _PyOS_GetOpt(argv->length, argv->items, &longindex);
  195|       |
  196|      3|        if (c == EOF || c == 'c' || c == 'm') {
  ------------------
  |  Branch (196:13): [True: 3, False: 0]
  |  Branch (196:25): [True: 0, False: 0]
  |  Branch (196:37): [True: 0, False: 0]
  ------------------
  197|      3|            break;
  198|      3|        }
  199|       |
  200|      0|        switch (c) {
  201|      0|        case 'E':
  ------------------
  |  Branch (201:9): [True: 0, False: 0]
  ------------------
  202|      0|            cmdline->use_environment = 0;
  203|      0|            break;
  204|       |
  205|      0|        case 'I':
  ------------------
  |  Branch (205:9): [True: 0, False: 0]
  ------------------
  206|      0|            cmdline->isolated = 1;
  207|      0|            break;
  208|       |
  209|      0|        case 'X':
  ------------------
  |  Branch (209:9): [True: 0, False: 0]
  ------------------
  210|      0|        {
  211|      0|            PyStatus status = PyWideStringList_Append(&cmdline->xoptions,
  212|      0|                                                      _PyOS_optarg);
  213|      0|            if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      0|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  214|      0|                return status;
  215|      0|            }
  216|      0|            break;
  217|      0|        }
  218|       |
  219|      0|        default:
  ------------------
  |  Branch (219:9): [True: 0, False: 0]
  ------------------
  220|       |            /* ignore other argument:
  221|       |               handled by PyConfig_Read() */
  222|      0|            break;
  223|      0|        }
  224|      0|    } while (1);
  ------------------
  |  Branch (224:14): [True: 0, Folded]
  ------------------
  225|       |
  226|      3|    return _PyStatus_OK();
  ------------------
  |  |   24|      3|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
  227|      3|}
preconfig.c:preconfig_copy:
  381|     10|{
  382|     10|#define COPY_ATTR(ATTR) config->ATTR = config2->ATTR
  383|       |
  384|     10|    COPY_ATTR(_config_init);
  ------------------
  |  |  382|     10|#define COPY_ATTR(ATTR) config->ATTR = config2->ATTR
  ------------------
  385|     10|    COPY_ATTR(parse_argv);
  ------------------
  |  |  382|     10|#define COPY_ATTR(ATTR) config->ATTR = config2->ATTR
  ------------------
  386|     10|    COPY_ATTR(isolated);
  ------------------
  |  |  382|     10|#define COPY_ATTR(ATTR) config->ATTR = config2->ATTR
  ------------------
  387|     10|    COPY_ATTR(use_environment);
  ------------------
  |  |  382|     10|#define COPY_ATTR(ATTR) config->ATTR = config2->ATTR
  ------------------
  388|     10|    COPY_ATTR(configure_locale);
  ------------------
  |  |  382|     10|#define COPY_ATTR(ATTR) config->ATTR = config2->ATTR
  ------------------
  389|     10|    COPY_ATTR(dev_mode);
  ------------------
  |  |  382|     10|#define COPY_ATTR(ATTR) config->ATTR = config2->ATTR
  ------------------
  390|     10|    COPY_ATTR(coerce_c_locale);
  ------------------
  |  |  382|     10|#define COPY_ATTR(ATTR) config->ATTR = config2->ATTR
  ------------------
  391|     10|    COPY_ATTR(coerce_c_locale_warn);
  ------------------
  |  |  382|     10|#define COPY_ATTR(ATTR) config->ATTR = config2->ATTR
  ------------------
  392|     10|    COPY_ATTR(utf8_mode);
  ------------------
  |  |  382|     10|#define COPY_ATTR(ATTR) config->ATTR = config2->ATTR
  ------------------
  393|     10|    COPY_ATTR(allocator);
  ------------------
  |  |  382|     10|#define COPY_ATTR(ATTR) config->ATTR = config2->ATTR
  ------------------
  394|       |#ifdef MS_WINDOWS
  395|       |    COPY_ATTR(legacy_windows_fs_encoding);
  396|       |#endif
  397|       |
  398|     10|#undef COPY_ATTR
  399|     10|}
preconfig.c:preconfig_get_global_vars:
  467|      1|{
  468|      1|    if (config->_config_init != _PyConfig_INIT_COMPAT) {
  ------------------
  |  Branch (468:9): [True: 1, False: 0]
  ------------------
  469|       |        /* Python and Isolated configuration ignore global variables */
  470|      1|        return;
  471|      1|    }
  472|       |
  473|      0|#define COPY_FLAG(ATTR, VALUE) \
  474|      0|    if (config->ATTR < 0) { \
  475|      0|        config->ATTR = VALUE; \
  476|      0|    }
  477|      0|#define COPY_NOT_FLAG(ATTR, VALUE) \
  478|      0|    if (config->ATTR < 0) { \
  479|      0|        config->ATTR = !(VALUE); \
  480|      0|    }
  481|       |
  482|      0|_Py_COMP_DIAG_PUSH
  483|      0|_Py_COMP_DIAG_IGNORE_DEPR_DECLS
  484|      0|    COPY_FLAG(isolated, Py_IsolatedFlag);
  ------------------
  |  |  474|      0|    if (config->ATTR < 0) { \
  |  |  ------------------
  |  |  |  Branch (474:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  475|      0|        config->ATTR = VALUE; \
  |  |  476|      0|    }
  ------------------
  485|      0|    COPY_NOT_FLAG(use_environment, Py_IgnoreEnvironmentFlag);
  ------------------
  |  |  478|      0|    if (config->ATTR < 0) { \
  |  |  ------------------
  |  |  |  Branch (478:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  479|      0|        config->ATTR = !(VALUE); \
  |  |  480|      0|    }
  ------------------
  486|      0|    if (Py_UTF8Mode > 0) {
  ------------------
  |  Branch (486:9): [True: 0, False: 0]
  ------------------
  487|      0|        config->utf8_mode = Py_UTF8Mode;
  488|      0|    }
  489|       |#ifdef MS_WINDOWS
  490|       |    COPY_FLAG(legacy_windows_fs_encoding, Py_LegacyWindowsFSEncodingFlag);
  491|       |#endif
  492|      0|_Py_COMP_DIAG_POP
  493|       |
  494|      0|#undef COPY_FLAG
  495|      0|#undef COPY_NOT_FLAG
  496|      0|}
preconfig.c:preconfig_read:
  731|      2|{
  732|      2|    PyStatus status;
  733|       |
  734|      2|    status = _PyPreCmdline_Read(cmdline, config);
  735|      2|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      2|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  736|      0|        return status;
  737|      0|    }
  738|       |
  739|      2|    precmdline_set_preconfig(cmdline, config);
  740|       |
  741|       |    /* legacy_windows_fs_encoding, coerce_c_locale, utf8_mode */
  742|       |#ifdef MS_WINDOWS
  743|       |    _Py_get_env_flag(config->use_environment,
  744|       |                     &config->legacy_windows_fs_encoding,
  745|       |                     "PYTHONLEGACYWINDOWSFSENCODING");
  746|       |#endif
  747|       |
  748|      2|    preconfig_init_coerce_c_locale(config);
  749|       |
  750|      2|    status = preconfig_init_utf8_mode(config, cmdline);
  751|      2|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      2|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  752|      0|        return status;
  753|      0|    }
  754|       |
  755|       |    /* allocator */
  756|      2|    status = preconfig_init_allocator(config);
  757|      2|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      2|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 2]
  |  |  ------------------
  ------------------
  758|      0|        return status;
  759|      0|    }
  760|       |
  761|      2|    assert(config->coerce_c_locale >= 0);
  ------------------
  |  Branch (761:5): [True: 2, False: 0]
  ------------------
  762|      2|    assert(config->coerce_c_locale_warn >= 0);
  ------------------
  |  Branch (762:5): [True: 2, False: 0]
  ------------------
  763|       |#ifdef MS_WINDOWS
  764|       |    assert(config->legacy_windows_fs_encoding >= 0);
  765|       |#endif
  766|      2|    assert(config->utf8_mode >= 0);
  ------------------
  |  Branch (766:5): [True: 2, False: 0]
  ------------------
  767|      2|    assert(config->isolated >= 0);
  ------------------
  |  Branch (767:5): [True: 2, False: 0]
  ------------------
  768|      2|    assert(config->use_environment >= 0);
  ------------------
  |  Branch (768:5): [True: 2, False: 0]
  ------------------
  769|      2|    assert(config->dev_mode >= 0);
  ------------------
  |  Branch (769:5): [True: 2, False: 0]
  ------------------
  770|       |
  771|      2|    return _PyStatus_OK();
  ------------------
  |  |   24|      2|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
  772|      2|}
preconfig.c:precmdline_set_preconfig:
  149|      2|{
  150|      2|#define COPY_ATTR(ATTR) \
  151|      2|    config->ATTR = cmdline->ATTR
  152|       |
  153|      2|    COPY_ATTR(isolated);
  ------------------
  |  |  151|      2|    config->ATTR = cmdline->ATTR
  ------------------
  154|      2|    COPY_ATTR(use_environment);
  ------------------
  |  |  151|      2|    config->ATTR = cmdline->ATTR
  ------------------
  155|      2|    COPY_ATTR(dev_mode);
  ------------------
  |  |  151|      2|    config->ATTR = cmdline->ATTR
  ------------------
  156|       |
  157|      2|#undef COPY_ATTR
  158|      2|}
preconfig.c:preconfig_init_coerce_c_locale:
  659|      2|{
  660|      2|    if (!config->configure_locale) {
  ------------------
  |  Branch (660:9): [True: 0, False: 2]
  ------------------
  661|      0|        config->coerce_c_locale = 0;
  662|      0|        config->coerce_c_locale_warn = 0;
  663|      0|        return;
  664|      0|    }
  665|       |
  666|      2|    const char *env = _Py_GetEnv(config->use_environment, "PYTHONCOERCECLOCALE");
  667|      2|    if (env) {
  ------------------
  |  Branch (667:9): [True: 0, False: 2]
  ------------------
  668|      0|        if (strcmp(env, "0") == 0) {
  ------------------
  |  Branch (668:13): [True: 0, False: 0]
  ------------------
  669|      0|            if (config->coerce_c_locale < 0) {
  ------------------
  |  Branch (669:17): [True: 0, False: 0]
  ------------------
  670|      0|                config->coerce_c_locale = 0;
  671|      0|            }
  672|      0|        }
  673|      0|        else if (strcmp(env, "warn") == 0) {
  ------------------
  |  Branch (673:18): [True: 0, False: 0]
  ------------------
  674|      0|            if (config->coerce_c_locale_warn < 0) {
  ------------------
  |  Branch (674:17): [True: 0, False: 0]
  ------------------
  675|      0|                config->coerce_c_locale_warn = 1;
  676|      0|            }
  677|      0|        }
  678|      0|        else {
  679|      0|            if (config->coerce_c_locale < 0) {
  ------------------
  |  Branch (679:17): [True: 0, False: 0]
  ------------------
  680|      0|                config->coerce_c_locale = 1;
  681|      0|            }
  682|      0|        }
  683|      0|    }
  684|       |
  685|       |    /* Test if coerce_c_locale equals to -1 or equals to 1:
  686|       |       PYTHONCOERCECLOCALE=1 doesn't imply that the C locale is always coerced.
  687|       |       It is only coerced if the LC_CTYPE locale is "C". */
  688|      2|    if (config->coerce_c_locale < 0 || config->coerce_c_locale == 1) {
  ------------------
  |  Branch (688:9): [True: 1, False: 1]
  |  Branch (688:40): [True: 0, False: 1]
  ------------------
  689|       |        /* The C locale enables the C locale coercion (PEP 538) */
  690|      1|        if (_Py_LegacyLocaleDetected(0)) {
  ------------------
  |  Branch (690:13): [True: 1, False: 0]
  ------------------
  691|      1|            config->coerce_c_locale = 2;
  692|      1|        }
  693|      0|        else {
  694|      0|            config->coerce_c_locale = 0;
  695|      0|        }
  696|      1|    }
  697|       |
  698|      2|    if (config->coerce_c_locale_warn < 0) {
  ------------------
  |  Branch (698:9): [True: 2, False: 0]
  ------------------
  699|      2|        config->coerce_c_locale_warn = 0;
  700|      2|    }
  701|      2|}
preconfig.c:preconfig_init_utf8_mode:
  604|      2|{
  605|       |#ifdef MS_WINDOWS
  606|       |    if (config->legacy_windows_fs_encoding) {
  607|       |        config->utf8_mode = 0;
  608|       |    }
  609|       |#endif
  610|       |
  611|      2|    if (config->utf8_mode >= 0) {
  ------------------
  |  Branch (611:9): [True: 1, False: 1]
  ------------------
  612|      1|        return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
  613|      1|    }
  614|       |
  615|      1|    const wchar_t *xopt;
  616|      1|    xopt = _Py_get_xoption(&cmdline->xoptions, L"utf8");
  617|      1|    if (xopt) {
  ------------------
  |  Branch (617:9): [True: 0, False: 1]
  ------------------
  618|      0|        const wchar_t *sep = wcschr(xopt, L'=');
  619|      0|        if (sep) {
  ------------------
  |  Branch (619:13): [True: 0, False: 0]
  ------------------
  620|      0|            xopt = sep + 1;
  621|      0|            if (wcscmp(xopt, L"1") == 0) {
  ------------------
  |  Branch (621:17): [True: 0, False: 0]
  ------------------
  622|      0|                config->utf8_mode = 1;
  623|      0|            }
  624|      0|            else if (wcscmp(xopt, L"0") == 0) {
  ------------------
  |  Branch (624:22): [True: 0, False: 0]
  ------------------
  625|      0|                config->utf8_mode = 0;
  626|      0|            }
  627|      0|            else {
  628|      0|                return _PyStatus_ERR("invalid -X utf8 option value");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
  629|      0|            }
  630|      0|        }
  631|      0|        else {
  632|      0|            config->utf8_mode = 1;
  633|      0|        }
  634|      0|        return _PyStatus_OK();
  ------------------
  |  |   24|      0|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
  635|      0|    }
  636|       |
  637|      1|    const char *opt = _Py_GetEnv(config->use_environment, "PYTHONUTF8");
  638|      1|    if (opt) {
  ------------------
  |  Branch (638:9): [True: 0, False: 1]
  ------------------
  639|      0|        if (strcmp(opt, "1") == 0) {
  ------------------
  |  Branch (639:13): [True: 0, False: 0]
  ------------------
  640|      0|            config->utf8_mode = 1;
  641|      0|        }
  642|      0|        else if (strcmp(opt, "0") == 0) {
  ------------------
  |  Branch (642:18): [True: 0, False: 0]
  ------------------
  643|      0|            config->utf8_mode = 0;
  644|      0|        }
  645|      0|        else {
  646|      0|            return _PyStatus_ERR("invalid PYTHONUTF8 environment "
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
  647|      0|                                "variable value");
  648|      0|        }
  649|      0|        return _PyStatus_OK();
  ------------------
  |  |   24|      0|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
  650|      0|    }
  651|       |
  652|      1|    config->utf8_mode = 1;
  653|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
  654|      1|}
preconfig.c:preconfig_init_allocator:
  706|      2|{
  707|      2|    if (config->allocator == PYMEM_ALLOCATOR_NOT_SET) {
  ------------------
  |  Branch (707:9): [True: 2, False: 0]
  ------------------
  708|       |        /* bpo-34247. The PYTHONMALLOC environment variable has the priority
  709|       |           over PYTHONDEV env var and "-X dev" command line option.
  710|       |           For example, PYTHONMALLOC=malloc PYTHONDEVMODE=1 sets the memory
  711|       |           allocators to "malloc" (and not to "debug"). */
  712|      2|        const char *envvar = _Py_GetEnv(config->use_environment, "PYTHONMALLOC");
  713|      2|        if (envvar) {
  ------------------
  |  Branch (713:13): [True: 0, False: 2]
  ------------------
  714|      0|            PyMemAllocatorName name;
  715|      0|            if (_PyMem_GetAllocatorName(envvar, &name) < 0) {
  ------------------
  |  Branch (715:17): [True: 0, False: 0]
  ------------------
  716|      0|                return _PyStatus_ERR("PYTHONMALLOC: unknown allocator");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
  717|      0|            }
  718|      0|            config->allocator = (int)name;
  719|      0|        }
  720|      2|    }
  721|       |
  722|      2|    if (config->dev_mode && config->allocator == PYMEM_ALLOCATOR_NOT_SET) {
  ------------------
  |  Branch (722:9): [True: 0, False: 2]
  |  Branch (722:29): [True: 0, False: 0]
  ------------------
  723|      0|        config->allocator = PYMEM_ALLOCATOR_DEBUG;
  724|      0|    }
  725|      2|    return _PyStatus_OK();
  ------------------
  |  |   24|      2|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
  726|      2|}
preconfig.c:preconfig_set_global_vars:
  501|      1|{
  502|      1|#define COPY_FLAG(ATTR, VAR) \
  503|      1|    if (config->ATTR >= 0) { \
  504|      1|        VAR = config->ATTR; \
  505|      1|    }
  506|      1|#define COPY_NOT_FLAG(ATTR, VAR) \
  507|      1|    if (config->ATTR >= 0) { \
  508|      1|        VAR = !config->ATTR; \
  509|      1|    }
  510|       |
  511|      1|_Py_COMP_DIAG_PUSH
  512|      1|_Py_COMP_DIAG_IGNORE_DEPR_DECLS
  513|      1|    COPY_FLAG(isolated, Py_IsolatedFlag);
  ------------------
  |  |  503|      1|    if (config->ATTR >= 0) { \
  |  |  ------------------
  |  |  |  Branch (503:9): [True: 1, False: 0]
  |  |  ------------------
  |  |  504|      1|        VAR = config->ATTR; \
  |  |  505|      1|    }
  ------------------
  514|      1|    COPY_NOT_FLAG(use_environment, Py_IgnoreEnvironmentFlag);
  ------------------
  |  |  507|      1|    if (config->ATTR >= 0) { \
  |  |  ------------------
  |  |  |  Branch (507:9): [True: 1, False: 0]
  |  |  ------------------
  |  |  508|      1|        VAR = !config->ATTR; \
  |  |  509|      1|    }
  ------------------
  515|       |#ifdef MS_WINDOWS
  516|       |    COPY_FLAG(legacy_windows_fs_encoding, Py_LegacyWindowsFSEncodingFlag);
  517|       |#endif
  518|      1|    COPY_FLAG(utf8_mode, Py_UTF8Mode);
  ------------------
  |  |  503|      1|    if (config->ATTR >= 0) { \
  |  |  ------------------
  |  |  |  Branch (503:9): [True: 1, False: 0]
  |  |  ------------------
  |  |  504|      1|        VAR = config->ATTR; \
  |  |  505|      1|    }
  ------------------
  519|      1|_Py_COMP_DIAG_POP
  520|       |
  521|      1|#undef COPY_FLAG
  522|      1|#undef COPY_NOT_FLAG
  523|      1|}

Py_HashPointer:
  134|    164|{
  135|    164|    Py_hash_t hash = _Py_HashPointerRaw(ptr);
  136|    164|    if (hash == -1) {
  ------------------
  |  Branch (136:9): [True: 0, False: 164]
  ------------------
  137|      0|        hash = -2;
  138|      0|    }
  139|    164|    return hash;
  140|    164|}
PyObject_GenericHash:
  144|    117|{
  145|    117|    return Py_HashPointer(obj);
  146|    117|}
Py_HashBuffer:
  150|  9.48k|{
  151|       |    /*
  152|       |      We make the hash of the empty string be 0, rather than using
  153|       |      (prefix ^ suffix), since this slightly obfuscates the hash secret
  154|       |    */
  155|  9.48k|    if (len == 0) {
  ------------------
  |  Branch (155:9): [True: 1, False: 9.48k]
  ------------------
  156|      1|        return 0;
  157|      1|    }
  158|       |
  159|       |#ifdef Py_HASH_STATS
  160|       |    hashstats[(len <= Py_HASH_STATS_MAX) ? len : 0]++;
  161|       |#endif
  162|       |
  163|  9.48k|    Py_hash_t x;
  164|       |#if Py_HASH_CUTOFF > 0
  165|       |    if (len < Py_HASH_CUTOFF) {
  166|       |        /* Optimize hashing of very small strings with inline DJBX33A. */
  167|       |        Py_uhash_t hash;
  168|       |        const unsigned char *p = ptr;
  169|       |        hash = 5381; /* DJBX33A starts with 5381 */
  170|       |
  171|       |        switch(len) {
  172|       |            /* ((hash << 5) + hash) + *p == hash * 33 + *p */
  173|       |            case 7: hash = ((hash << 5) + hash) + *p++; _Py_FALLTHROUGH;
  174|       |            case 6: hash = ((hash << 5) + hash) + *p++; _Py_FALLTHROUGH;
  175|       |            case 5: hash = ((hash << 5) + hash) + *p++; _Py_FALLTHROUGH;
  176|       |            case 4: hash = ((hash << 5) + hash) + *p++; _Py_FALLTHROUGH;
  177|       |            case 3: hash = ((hash << 5) + hash) + *p++; _Py_FALLTHROUGH;
  178|       |            case 2: hash = ((hash << 5) + hash) + *p++; _Py_FALLTHROUGH;
  179|       |            case 1: hash = ((hash << 5) + hash) + *p++; break;
  180|       |            default:
  181|       |                Py_UNREACHABLE();
  182|       |        }
  183|       |        hash ^= len;
  184|       |        hash ^= (Py_uhash_t) _Py_HashSecret.djbx33a.suffix;
  185|       |        x = (Py_hash_t)hash;
  186|       |    }
  187|       |    else
  188|       |#endif /* Py_HASH_CUTOFF */
  189|  9.48k|    {
  190|  9.48k|        x = PyHash_Func.hash(ptr, len);
  191|  9.48k|    }
  192|       |
  193|  9.48k|    if (x == -1) {
  ------------------
  |  Branch (193:9): [True: 0, False: 9.48k]
  ------------------
  194|      0|        return -2;
  195|      0|    }
  196|  9.48k|    return x;
  197|  9.48k|}
PyHash_GetFuncDef:
  216|      1|{
  217|      1|    return &PyHash_Func;
  218|      1|}
pyhash.c:siphash13:
  371|  9.48k|siphash13(uint64_t k0, uint64_t k1, const void *src, Py_ssize_t src_sz) {
  372|  9.48k|    uint64_t b = (uint64_t)src_sz << 56;
  373|  9.48k|    const uint8_t *in = (const uint8_t*)src;
  374|       |
  375|  9.48k|    uint64_t v0 = k0 ^ 0x736f6d6570736575ULL;
  376|  9.48k|    uint64_t v1 = k1 ^ 0x646f72616e646f6dULL;
  377|  9.48k|    uint64_t v2 = k0 ^ 0x6c7967656e657261ULL;
  378|  9.48k|    uint64_t v3 = k1 ^ 0x7465646279746573ULL;
  379|       |
  380|  9.48k|    uint64_t t;
  381|  9.48k|    uint8_t *pt;
  382|       |
  383|  17.2k|    while (src_sz >= 8) {
  ------------------
  |  Branch (383:12): [True: 7.75k, False: 9.48k]
  ------------------
  384|  7.75k|        uint64_t mi;
  385|  7.75k|        memcpy(&mi, in, sizeof(mi));
  386|  7.75k|        mi = _le64toh(mi);
  ------------------
  |  |  332|  7.75k|#  define _le64toh(x) ((uint64_t)(x))
  ------------------
  387|  7.75k|        in += sizeof(mi);
  388|  7.75k|        src_sz -= sizeof(mi);
  389|  7.75k|        v3 ^= mi;
  390|  7.75k|        SINGLE_ROUND(v0,v1,v2,v3);
  ------------------
  |  |  362|  7.75k|    HALF_ROUND(v0,v1,v2,v3,13,16);  \
  |  |  ------------------
  |  |  |  |  356|  7.75k|    a += b; c += d;                 \
  |  |  |  |  357|  7.75k|    b = ROTATE(b, s) ^ a;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  352|  7.75k|#  define ROTATE(x, b) (uint64_t)( ((x) << (b)) | ( (x) >> (64 - (b))) )
  |  |  |  |  ------------------
  |  |  |  |  358|  7.75k|    d = ROTATE(d, t) ^ c;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  352|  7.75k|#  define ROTATE(x, b) (uint64_t)( ((x) << (b)) | ( (x) >> (64 - (b))) )
  |  |  |  |  ------------------
  |  |  |  |  359|  7.75k|    a = ROTATE(a, 32);
  |  |  |  |  ------------------
  |  |  |  |  |  |  352|  7.75k|#  define ROTATE(x, b) (uint64_t)( ((x) << (b)) | ( (x) >> (64 - (b))) )
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  363|  7.75k|    HALF_ROUND(v2,v1,v0,v3,17,21);
  |  |  ------------------
  |  |  |  |  356|  7.75k|    a += b; c += d;                 \
  |  |  |  |  357|  7.75k|    b = ROTATE(b, s) ^ a;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  352|  7.75k|#  define ROTATE(x, b) (uint64_t)( ((x) << (b)) | ( (x) >> (64 - (b))) )
  |  |  |  |  ------------------
  |  |  |  |  358|  7.75k|    d = ROTATE(d, t) ^ c;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  352|  7.75k|#  define ROTATE(x, b) (uint64_t)( ((x) << (b)) | ( (x) >> (64 - (b))) )
  |  |  |  |  ------------------
  |  |  |  |  359|  7.75k|    a = ROTATE(a, 32);
  |  |  |  |  ------------------
  |  |  |  |  |  |  352|  7.75k|#  define ROTATE(x, b) (uint64_t)( ((x) << (b)) | ( (x) >> (64 - (b))) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  391|  7.75k|        v0 ^= mi;
  392|  7.75k|    }
  393|       |
  394|  9.48k|    t = 0;
  395|  9.48k|    pt = (uint8_t *)&t;
  396|  9.48k|    switch (src_sz) {
  ------------------
  |  Branch (396:13): [True: 8.01k, False: 1.47k]
  ------------------
  397|  1.24k|        case 7: pt[6] = in[6]; _Py_FALLTHROUGH;
  ------------------
  |  |  644|  1.24k|#  define _Py_FALLTHROUGH __attribute__((fallthrough))
  ------------------
  |  Branch (397:9): [True: 1.24k, False: 8.24k]
  ------------------
  398|  2.67k|        case 6: pt[5] = in[5]; _Py_FALLTHROUGH;
  ------------------
  |  |  644|  2.67k|#  define _Py_FALLTHROUGH __attribute__((fallthrough))
  ------------------
  |  Branch (398:9): [True: 1.42k, False: 8.05k]
  ------------------
  399|  3.67k|        case 5: pt[4] = in[4]; _Py_FALLTHROUGH;
  ------------------
  |  |  644|  3.67k|#  define _Py_FALLTHROUGH __attribute__((fallthrough))
  ------------------
  |  Branch (399:9): [True: 999, False: 8.48k]
  ------------------
  400|  4.84k|        case 4: memcpy(pt, in, sizeof(uint32_t)); break;
  ------------------
  |  Branch (400:9): [True: 1.17k, False: 8.31k]
  ------------------
  401|  1.07k|        case 3: pt[2] = in[2]; _Py_FALLTHROUGH;
  ------------------
  |  |  644|  1.07k|#  define _Py_FALLTHROUGH __attribute__((fallthrough))
  ------------------
  |  Branch (401:9): [True: 1.07k, False: 8.41k]
  ------------------
  402|  2.03k|        case 2: pt[1] = in[1]; _Py_FALLTHROUGH;
  ------------------
  |  |  644|  2.03k|#  define _Py_FALLTHROUGH __attribute__((fallthrough))
  ------------------
  |  Branch (402:9): [True: 955, False: 8.53k]
  ------------------
  403|  3.16k|        case 1: pt[0] = in[0]; break;
  ------------------
  |  Branch (403:9): [True: 1.13k, False: 8.35k]
  ------------------
  404|  9.48k|    }
  405|  9.48k|    b |= _le64toh(t);
  ------------------
  |  |  332|  9.48k|#  define _le64toh(x) ((uint64_t)(x))
  ------------------
  406|       |
  407|  9.48k|    v3 ^= b;
  408|  9.48k|    SINGLE_ROUND(v0,v1,v2,v3);
  ------------------
  |  |  362|  9.48k|    HALF_ROUND(v0,v1,v2,v3,13,16);  \
  |  |  ------------------
  |  |  |  |  356|  9.48k|    a += b; c += d;                 \
  |  |  |  |  357|  9.48k|    b = ROTATE(b, s) ^ a;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  352|  9.48k|#  define ROTATE(x, b) (uint64_t)( ((x) << (b)) | ( (x) >> (64 - (b))) )
  |  |  |  |  ------------------
  |  |  |  |  358|  9.48k|    d = ROTATE(d, t) ^ c;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  352|  9.48k|#  define ROTATE(x, b) (uint64_t)( ((x) << (b)) | ( (x) >> (64 - (b))) )
  |  |  |  |  ------------------
  |  |  |  |  359|  9.48k|    a = ROTATE(a, 32);
  |  |  |  |  ------------------
  |  |  |  |  |  |  352|  9.48k|#  define ROTATE(x, b) (uint64_t)( ((x) << (b)) | ( (x) >> (64 - (b))) )
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  363|  9.48k|    HALF_ROUND(v2,v1,v0,v3,17,21);
  |  |  ------------------
  |  |  |  |  356|  9.48k|    a += b; c += d;                 \
  |  |  |  |  357|  9.48k|    b = ROTATE(b, s) ^ a;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  352|  9.48k|#  define ROTATE(x, b) (uint64_t)( ((x) << (b)) | ( (x) >> (64 - (b))) )
  |  |  |  |  ------------------
  |  |  |  |  358|  9.48k|    d = ROTATE(d, t) ^ c;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  352|  9.48k|#  define ROTATE(x, b) (uint64_t)( ((x) << (b)) | ( (x) >> (64 - (b))) )
  |  |  |  |  ------------------
  |  |  |  |  359|  9.48k|    a = ROTATE(a, 32);
  |  |  |  |  ------------------
  |  |  |  |  |  |  352|  9.48k|#  define ROTATE(x, b) (uint64_t)( ((x) << (b)) | ( (x) >> (64 - (b))) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  409|  9.48k|    v0 ^= b;
  410|  9.48k|    v2 ^= 0xff;
  411|  9.48k|    SINGLE_ROUND(v0,v1,v2,v3);
  ------------------
  |  |  362|  9.48k|    HALF_ROUND(v0,v1,v2,v3,13,16);  \
  |  |  ------------------
  |  |  |  |  356|  9.48k|    a += b; c += d;                 \
  |  |  |  |  357|  9.48k|    b = ROTATE(b, s) ^ a;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  352|  9.48k|#  define ROTATE(x, b) (uint64_t)( ((x) << (b)) | ( (x) >> (64 - (b))) )
  |  |  |  |  ------------------
  |  |  |  |  358|  9.48k|    d = ROTATE(d, t) ^ c;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  352|  9.48k|#  define ROTATE(x, b) (uint64_t)( ((x) << (b)) | ( (x) >> (64 - (b))) )
  |  |  |  |  ------------------
  |  |  |  |  359|  9.48k|    a = ROTATE(a, 32);
  |  |  |  |  ------------------
  |  |  |  |  |  |  352|  9.48k|#  define ROTATE(x, b) (uint64_t)( ((x) << (b)) | ( (x) >> (64 - (b))) )
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  363|  9.48k|    HALF_ROUND(v2,v1,v0,v3,17,21);
  |  |  ------------------
  |  |  |  |  356|  9.48k|    a += b; c += d;                 \
  |  |  |  |  357|  9.48k|    b = ROTATE(b, s) ^ a;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  352|  9.48k|#  define ROTATE(x, b) (uint64_t)( ((x) << (b)) | ( (x) >> (64 - (b))) )
  |  |  |  |  ------------------
  |  |  |  |  358|  9.48k|    d = ROTATE(d, t) ^ c;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  352|  9.48k|#  define ROTATE(x, b) (uint64_t)( ((x) << (b)) | ( (x) >> (64 - (b))) )
  |  |  |  |  ------------------
  |  |  |  |  359|  9.48k|    a = ROTATE(a, 32);
  |  |  |  |  ------------------
  |  |  |  |  |  |  352|  9.48k|#  define ROTATE(x, b) (uint64_t)( ((x) << (b)) | ( (x) >> (64 - (b))) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  412|  9.48k|    SINGLE_ROUND(v0,v1,v2,v3);
  ------------------
  |  |  362|  9.48k|    HALF_ROUND(v0,v1,v2,v3,13,16);  \
  |  |  ------------------
  |  |  |  |  356|  9.48k|    a += b; c += d;                 \
  |  |  |  |  357|  9.48k|    b = ROTATE(b, s) ^ a;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  352|  9.48k|#  define ROTATE(x, b) (uint64_t)( ((x) << (b)) | ( (x) >> (64 - (b))) )
  |  |  |  |  ------------------
  |  |  |  |  358|  9.48k|    d = ROTATE(d, t) ^ c;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  352|  9.48k|#  define ROTATE(x, b) (uint64_t)( ((x) << (b)) | ( (x) >> (64 - (b))) )
  |  |  |  |  ------------------
  |  |  |  |  359|  9.48k|    a = ROTATE(a, 32);
  |  |  |  |  ------------------
  |  |  |  |  |  |  352|  9.48k|#  define ROTATE(x, b) (uint64_t)( ((x) << (b)) | ( (x) >> (64 - (b))) )
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  363|  9.48k|    HALF_ROUND(v2,v1,v0,v3,17,21);
  |  |  ------------------
  |  |  |  |  356|  9.48k|    a += b; c += d;                 \
  |  |  |  |  357|  9.48k|    b = ROTATE(b, s) ^ a;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  352|  9.48k|#  define ROTATE(x, b) (uint64_t)( ((x) << (b)) | ( (x) >> (64 - (b))) )
  |  |  |  |  ------------------
  |  |  |  |  358|  9.48k|    d = ROTATE(d, t) ^ c;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  352|  9.48k|#  define ROTATE(x, b) (uint64_t)( ((x) << (b)) | ( (x) >> (64 - (b))) )
  |  |  |  |  ------------------
  |  |  |  |  359|  9.48k|    a = ROTATE(a, 32);
  |  |  |  |  ------------------
  |  |  |  |  |  |  352|  9.48k|#  define ROTATE(x, b) (uint64_t)( ((x) << (b)) | ( (x) >> (64 - (b))) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  413|  9.48k|    SINGLE_ROUND(v0,v1,v2,v3);
  ------------------
  |  |  362|  9.48k|    HALF_ROUND(v0,v1,v2,v3,13,16);  \
  |  |  ------------------
  |  |  |  |  356|  9.48k|    a += b; c += d;                 \
  |  |  |  |  357|  9.48k|    b = ROTATE(b, s) ^ a;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  352|  9.48k|#  define ROTATE(x, b) (uint64_t)( ((x) << (b)) | ( (x) >> (64 - (b))) )
  |  |  |  |  ------------------
  |  |  |  |  358|  9.48k|    d = ROTATE(d, t) ^ c;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  352|  9.48k|#  define ROTATE(x, b) (uint64_t)( ((x) << (b)) | ( (x) >> (64 - (b))) )
  |  |  |  |  ------------------
  |  |  |  |  359|  9.48k|    a = ROTATE(a, 32);
  |  |  |  |  ------------------
  |  |  |  |  |  |  352|  9.48k|#  define ROTATE(x, b) (uint64_t)( ((x) << (b)) | ( (x) >> (64 - (b))) )
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  363|  9.48k|    HALF_ROUND(v2,v1,v0,v3,17,21);
  |  |  ------------------
  |  |  |  |  356|  9.48k|    a += b; c += d;                 \
  |  |  |  |  357|  9.48k|    b = ROTATE(b, s) ^ a;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  352|  9.48k|#  define ROTATE(x, b) (uint64_t)( ((x) << (b)) | ( (x) >> (64 - (b))) )
  |  |  |  |  ------------------
  |  |  |  |  358|  9.48k|    d = ROTATE(d, t) ^ c;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  352|  9.48k|#  define ROTATE(x, b) (uint64_t)( ((x) << (b)) | ( (x) >> (64 - (b))) )
  |  |  |  |  ------------------
  |  |  |  |  359|  9.48k|    a = ROTATE(a, 32);
  |  |  |  |  ------------------
  |  |  |  |  |  |  352|  9.48k|#  define ROTATE(x, b) (uint64_t)( ((x) << (b)) | ( (x) >> (64 - (b))) )
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  414|       |
  415|       |    /* modified */
  416|  9.48k|    t = (v0 ^ v1) ^ (v2 ^ v3);
  417|  9.48k|    return t;
  418|  9.48k|}
pyhash.c:pysiphash:
  480|  9.48k|pysiphash(const void *src, Py_ssize_t src_sz) {
  481|  9.48k|    return (Py_hash_t)siphash13(
  482|  9.48k|        _le64toh(_Py_HashSecret.siphash.k0), _le64toh(_Py_HashSecret.siphash.k1),
  ------------------
  |  |  332|  9.48k|#  define _le64toh(x) ((uint64_t)(x))
  ------------------
                      _le64toh(_Py_HashSecret.siphash.k0), _le64toh(_Py_HashSecret.siphash.k1),
  ------------------
  |  |  332|  9.48k|#  define _le64toh(x) ((uint64_t)(x))
  ------------------
  483|  9.48k|        src, src_sz);
  484|  9.48k|}

_PyRuntime_Initialize:
  130|     77|{
  131|       |    /* XXX We only initialize once in the process, which aligns with
  132|       |       the static initialization of the former globals now found in
  133|       |       _PyRuntime.  However, _PyRuntime *should* be initialized with
  134|       |       every Py_Initialize() call, but doing so breaks the runtime.
  135|       |       This is because the runtime state is not properly finalized
  136|       |       currently. */
  137|     77|    if (runtime_initialized) {
  ------------------
  |  Branch (137:9): [True: 76, False: 1]
  ------------------
  138|     76|        return _PyStatus_OK();
  ------------------
  |  |   24|     76|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
  139|     76|    }
  140|      1|    runtime_initialized = 1;
  141|       |
  142|      1|    return _PyRuntimeState_Init(&_PyRuntime);
  143|     77|}
_Py_IsCoreInitialized:
  170|      1|{
  171|      1|    return _PyRuntimeState_GetCoreInitialized(&_PyRuntime);
  172|      1|}
Py_IsInitialized:
  176|  1.12k|{
  177|  1.12k|    return _PyRuntimeState_GetInitialized(&_PyRuntime);
  178|  1.12k|}
_Py_LegacyLocaleDetected:
  203|      1|{
  204|      1|#ifndef MS_WINDOWS
  205|      1|    if (!warn) {
  ------------------
  |  Branch (205:9): [True: 1, False: 0]
  ------------------
  206|      1|        const char *locale_override = getenv("LC_ALL");
  207|      1|        if (locale_override != NULL && *locale_override != '\0') {
  ------------------
  |  Branch (207:13): [True: 0, False: 1]
  |  Branch (207:40): [True: 0, False: 0]
  ------------------
  208|       |            /* Don't coerce C locale if the LC_ALL environment variable
  209|       |               is set */
  210|      0|            return 0;
  211|      0|        }
  212|      1|    }
  213|       |
  214|       |    /* On non-Windows systems, the C locale is considered a legacy locale */
  215|       |    /* XXX (ncoghlan): some platforms (notably Mac OS X) don't appear to treat
  216|       |     *                 the POSIX locale as a simple alias for the C locale, so
  217|       |     *                 we may also want to check for that explicitly.
  218|       |     */
  219|      1|    const char *ctype_loc = setlocale(LC_CTYPE, NULL);
  220|      1|    if (ctype_loc == NULL) {
  ------------------
  |  Branch (220:9): [True: 0, False: 1]
  ------------------
  221|      0|        return 0;
  222|      0|    }
  223|      1|    return (strcmp(ctype_loc, "C") == 0 || strcmp(ctype_loc, "POSIX") == 0);
  ------------------
  |  Branch (223:13): [True: 1, False: 0]
  |  Branch (223:44): [True: 0, False: 0]
  ------------------
  224|       |#else
  225|       |    /* Windows uses code pages instead of locales, so no locale is legacy */
  226|       |    return 0;
  227|       |#endif
  228|      1|}
_Py_CoerceLegacyLocale:
  303|      2|{
  304|      2|    int coerced = 0;
  305|      2|#ifdef PY_COERCE_C_LOCALE
  306|      2|    char *oldloc = NULL;
  307|       |
  308|      2|    oldloc = _PyMem_RawStrdup(setlocale(LC_CTYPE, NULL));
  309|      2|    if (oldloc == NULL) {
  ------------------
  |  Branch (309:9): [True: 0, False: 2]
  ------------------
  310|      0|        return coerced;
  311|      0|    }
  312|       |
  313|      2|    const char *locale_override = getenv("LC_ALL");
  314|      2|    if (locale_override == NULL || *locale_override == '\0') {
  ------------------
  |  Branch (314:9): [True: 2, False: 0]
  |  Branch (314:36): [True: 0, False: 0]
  ------------------
  315|       |        /* LC_ALL is also not set (or is set to an empty string) */
  316|      2|        const _LocaleCoercionTarget *target = NULL;
  317|      2|        for (target = _TARGET_LOCALES; target->locale_name; target++) {
  ------------------
  |  Branch (317:40): [True: 2, False: 0]
  ------------------
  318|      2|            const char *new_locale = setlocale(LC_CTYPE,
  319|      2|                                               target->locale_name);
  320|      2|            if (new_locale != NULL) {
  ------------------
  |  Branch (320:17): [True: 2, False: 0]
  ------------------
  321|      2|#if !defined(_Py_FORCE_UTF8_LOCALE) && defined(HAVE_LANGINFO_H) && defined(CODESET)
  322|       |                /* Also ensure that nl_langinfo works in this locale */
  323|      2|                char *codeset = nl_langinfo(CODESET);
  324|      2|                if (!codeset || *codeset == '\0') {
  ------------------
  |  Branch (324:21): [True: 0, False: 2]
  |  Branch (324:33): [True: 0, False: 2]
  ------------------
  325|       |                    /* CODESET is not set or empty, so skip coercion */
  326|      0|                    new_locale = NULL;
  327|      0|                    _Py_SetLocaleFromEnv(LC_CTYPE);
  328|      0|                    continue;
  329|      0|                }
  330|      2|#endif
  331|       |                /* Successfully configured locale, so make it the default */
  332|      2|                coerced = _coerce_default_locale_settings(warn, target);
  333|      2|                goto done;
  334|      2|            }
  335|      2|        }
  336|      2|    }
  337|       |    /* No C locale warning here, as Py_Initialize will emit one later */
  338|       |
  339|      0|    setlocale(LC_CTYPE, oldloc);
  340|       |
  341|      2|done:
  342|      2|    PyMem_RawFree(oldloc);
  343|      2|#endif
  344|      2|    return coerced;
  345|      0|}
_Py_SetLocaleFromEnv:
  353|      6|{
  354|      6|    char *res;
  355|       |#ifdef __ANDROID__
  356|       |    const char *locale;
  357|       |    const char **pvar;
  358|       |#ifdef PY_COERCE_C_LOCALE
  359|       |    const char *coerce_c_locale;
  360|       |#endif
  361|       |    const char *utf8_locale = "C.UTF-8";
  362|       |    const char *env_var_set[] = {
  363|       |        "LC_ALL",
  364|       |        "LC_CTYPE",
  365|       |        "LANG",
  366|       |        NULL,
  367|       |    };
  368|       |
  369|       |    /* Android setlocale(category, "") doesn't check the environment variables
  370|       |     * and incorrectly sets the "C" locale at API 24 and older APIs. We only
  371|       |     * check the environment variables listed in env_var_set. */
  372|       |    for (pvar=env_var_set; *pvar; pvar++) {
  373|       |        locale = getenv(*pvar);
  374|       |        if (locale != NULL && *locale != '\0') {
  375|       |            if (strcmp(locale, utf8_locale) == 0 ||
  376|       |                    strcmp(locale, "en_US.UTF-8") == 0) {
  377|       |                return setlocale(category, utf8_locale);
  378|       |            }
  379|       |            return setlocale(category, "C");
  380|       |        }
  381|       |    }
  382|       |
  383|       |    /* Android uses UTF-8, so explicitly set the locale to C.UTF-8 if none of
  384|       |     * LC_ALL, LC_CTYPE, or LANG is set to a non-empty string.
  385|       |     * Quote from POSIX section "8.2 Internationalization Variables":
  386|       |     * "4. If the LANG environment variable is not set or is set to the empty
  387|       |     * string, the implementation-defined default locale shall be used." */
  388|       |
  389|       |#ifdef PY_COERCE_C_LOCALE
  390|       |    coerce_c_locale = getenv("PYTHONCOERCECLOCALE");
  391|       |    if (coerce_c_locale == NULL || strcmp(coerce_c_locale, "0") != 0) {
  392|       |        /* Some other ported code may check the environment variables (e.g. in
  393|       |         * extension modules), so we make sure that they match the locale
  394|       |         * configuration */
  395|       |        if (setenv("LC_CTYPE", utf8_locale, 1)) {
  396|       |            fprintf(stderr, "Warning: failed setting the LC_CTYPE "
  397|       |                            "environment variable to %s\n", utf8_locale);
  398|       |        }
  399|       |    }
  400|       |#endif
  401|       |    res = setlocale(category, utf8_locale);
  402|       |#else /* !defined(__ANDROID__) */
  403|      6|    res = setlocale(category, "");
  404|      6|#endif
  405|      6|    _Py_ResetForceASCII();
  406|      6|    return res;
  407|      6|}
_Py_PreInitializeFromPyArgv:
 1046|      1|{
 1047|      1|    PyStatus status;
 1048|       |
 1049|      1|    if (src_config == NULL) {
  ------------------
  |  Branch (1049:9): [True: 0, False: 1]
  ------------------
 1050|      0|        return _PyStatus_ERR("preinitialization config is NULL");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 1051|      0|    }
 1052|       |
 1053|      1|    status = _PyRuntime_Initialize();
 1054|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1055|      0|        return status;
 1056|      0|    }
 1057|      1|    _PyRuntimeState *runtime = &_PyRuntime;
 1058|       |
 1059|      1|    if (runtime->preinitialized) {
  ------------------
  |  Branch (1059:9): [True: 0, False: 1]
  ------------------
 1060|       |        /* If it's already configured: ignored the new configuration */
 1061|      0|        return _PyStatus_OK();
  ------------------
  |  |   24|      0|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 1062|      0|    }
 1063|       |
 1064|       |    /* Note: preinitializing remains 1 on error, it is only set to 0
 1065|       |       at exit on success. */
 1066|      1|    runtime->preinitializing = 1;
 1067|       |
 1068|      1|    PyPreConfig config;
 1069|       |
 1070|      1|    status = _PyPreConfig_InitFromPreConfig(&config, src_config);
 1071|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1072|      0|        return status;
 1073|      0|    }
 1074|       |
 1075|      1|    status = _PyPreConfig_Read(&config, args);
 1076|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1077|      0|        return status;
 1078|      0|    }
 1079|       |
 1080|      1|    status = _PyPreConfig_Write(&config);
 1081|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1082|      0|        return status;
 1083|      0|    }
 1084|       |
 1085|      1|    runtime->preinitializing = 0;
 1086|      1|    runtime->preinitialized = 1;
 1087|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 1088|      1|}
_Py_PreInitializeFromConfig:
 1117|     74|{
 1118|     74|    assert(config != NULL);
  ------------------
  |  Branch (1118:5): [True: 74, False: 0]
  ------------------
 1119|       |
 1120|     74|    PyStatus status = _PyRuntime_Initialize();
 1121|     74|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|     74|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 74]
  |  |  ------------------
  ------------------
 1122|      0|        return status;
 1123|      0|    }
 1124|     74|    _PyRuntimeState *runtime = &_PyRuntime;
 1125|       |
 1126|     74|    if (runtime->preinitialized) {
  ------------------
  |  Branch (1126:9): [True: 73, False: 1]
  ------------------
 1127|       |        /* Already initialized: do nothing */
 1128|     73|        return _PyStatus_OK();
  ------------------
  |  |   24|     73|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 1129|     73|    }
 1130|       |
 1131|      1|    PyPreConfig preconfig;
 1132|       |
 1133|      1|    _PyPreConfig_InitFromConfig(&preconfig, config);
 1134|       |
 1135|      1|    if (!config->parse_argv) {
  ------------------
  |  Branch (1135:9): [True: 0, False: 1]
  ------------------
 1136|      0|        return Py_PreInitialize(&preconfig);
 1137|      0|    }
 1138|      1|    else if (args == NULL) {
  ------------------
  |  Branch (1138:14): [True: 1, False: 0]
  ------------------
 1139|      1|        _PyArgv config_args = {
 1140|      1|            .use_bytes_argv = 0,
 1141|      1|            .argc = config->argv.length,
 1142|      1|            .wchar_argv = config->argv.items};
 1143|      1|        return _Py_PreInitializeFromPyArgv(&preconfig, &config_args);
 1144|      1|    }
 1145|      0|    else {
 1146|      0|        return _Py_PreInitializeFromPyArgv(&preconfig, args);
 1147|      0|    }
 1148|      1|}
Py_InitializeFromConfig:
 1614|      1|{
 1615|      1|    if (config == NULL) {
  ------------------
  |  Branch (1615:9): [True: 0, False: 1]
  ------------------
 1616|      0|        return _PyStatus_ERR("initialization config is NULL");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 1617|      0|    }
 1618|       |
 1619|      1|    PyStatus status;
 1620|       |
 1621|      1|    status = _PyRuntime_Initialize();
 1622|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1623|      0|        return status;
 1624|      0|    }
 1625|      1|    _PyRuntimeState *runtime = &_PyRuntime;
 1626|       |
 1627|      1|    PyThreadState *tstate = NULL;
 1628|      1|    status = pyinit_core(runtime, config, &tstate);
 1629|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1630|      0|        return status;
 1631|      0|    }
 1632|      1|    config = _PyInterpreterState_GetConfig(tstate->interp);
 1633|       |
 1634|      1|    if (config->_init_main) {
  ------------------
  |  Branch (1634:9): [True: 1, False: 0]
  ------------------
 1635|      1|        status = pyinit_main(tstate);
 1636|      1|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1637|      0|            return status;
 1638|      0|        }
 1639|      1|    }
 1640|       |
 1641|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 1642|      1|}
pylifecycle.c:_coerce_default_locale_settings:
  279|      2|{
  280|      2|    const char *newloc = target->locale_name;
  281|       |
  282|       |    /* Reset locale back to currently configured defaults */
  283|      2|    _Py_SetLocaleFromEnv(LC_ALL);
  284|       |
  285|       |    /* Set the relevant locale environment variable */
  286|      2|    if (setenv("LC_CTYPE", newloc, 1)) {
  ------------------
  |  Branch (286:9): [True: 0, False: 2]
  ------------------
  287|      0|        fprintf(stderr,
  288|      0|                "Error setting LC_CTYPE, skipping C locale coercion\n");
  289|      0|        return 0;
  290|      0|    }
  291|      2|    if (warn) {
  ------------------
  |  Branch (291:9): [True: 0, False: 2]
  ------------------
  292|      0|        fprintf(stderr, C_LOCALE_COERCION_WARNING, newloc);
  293|      0|    }
  294|       |
  295|       |    /* Reconfigure with the overridden environment variables */
  296|       |    _Py_SetLocaleFromEnv(LC_ALL);
  297|      2|    return 1;
  298|      2|}
pylifecycle.c:pyinit_core:
 1172|      1|{
 1173|      1|    PyStatus status;
 1174|       |
 1175|      1|    status = _Py_PreInitializeFromConfig(src_config, NULL);
 1176|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1177|      0|        return status;
 1178|      0|    }
 1179|       |
 1180|      1|    PyConfig config;
 1181|      1|    PyConfig_InitPythonConfig(&config);
 1182|       |
 1183|      1|    status = _PyConfig_Copy(&config, src_config);
 1184|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1185|      0|        goto done;
 1186|      0|    }
 1187|       |
 1188|       |    // Read the configuration, but don't compute the path configuration
 1189|       |    // (it is computed in the main init).
 1190|      1|    status = _PyConfig_Read(&config, 0);
 1191|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1192|      0|        goto done;
 1193|      0|    }
 1194|       |
 1195|      1|    if (!runtime->core_initialized) {
  ------------------
  |  Branch (1195:9): [True: 1, False: 0]
  ------------------
 1196|      1|        status = pyinit_config(runtime, tstate_p, &config);
 1197|      1|    }
 1198|      0|    else {
 1199|      0|        status = pyinit_core_reconfigure(runtime, tstate_p, &config);
 1200|      0|    }
 1201|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1202|      0|        goto done;
 1203|      0|    }
 1204|       |
 1205|      1|done:
 1206|      1|    PyConfig_Clear(&config);
 1207|      1|    return status;
 1208|      1|}
pylifecycle.c:pyinit_config:
 1020|      1|{
 1021|      1|    PyStatus status = pycore_init_runtime(runtime, config);
 1022|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1023|      0|        return status;
 1024|      0|    }
 1025|       |
 1026|      1|    PyThreadState *tstate;
 1027|      1|    status = pycore_create_interpreter(runtime, config, &tstate);
 1028|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1029|      0|        return status;
 1030|      0|    }
 1031|      1|    *tstate_p = tstate;
 1032|       |
 1033|      1|    status = pycore_interp_init(tstate);
 1034|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1035|      0|        return status;
 1036|      0|    }
 1037|       |
 1038|       |    /* Only when we get here is the runtime core fully initialized */
 1039|      1|    _PyRuntimeState_SetCoreInitialized(runtime, 1);
 1040|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 1041|      1|}
pylifecycle.c:pycore_init_runtime:
  530|      1|{
  531|      1|    if (_PyRuntimeState_GetInitialized(runtime)) {
  ------------------
  |  Branch (531:9): [True: 0, False: 1]
  ------------------
  532|      0|        return _PyStatus_ERR("main interpreter already initialized");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
  533|      0|    }
  534|       |
  535|      1|    PyStatus status = _PyConfig_Write(config, runtime);
  536|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  537|      0|        return status;
  538|      0|    }
  539|       |
  540|       |#if defined(PYMALLOC_USE_HUGEPAGES) && defined(MS_WINDOWS)
  541|       |    if (runtime->allocators.use_hugepages) {
  542|       |        status = get_huge_pages_privilege();
  543|       |        if (_PyStatus_EXCEPTION(status)) {
  544|       |            return status;
  545|       |        }
  546|       |    }
  547|       |#endif
  548|       |
  549|       |    /* Py_Finalize leaves _Py_Finalizing set in order to help daemon
  550|       |     * threads behave a little more gracefully at interpreter shutdown.
  551|       |     * We clobber it here so the new interpreter can start with a clean
  552|       |     * slate.
  553|       |     *
  554|       |     * However, this may still lead to misbehaviour if there are daemon
  555|       |     * threads still hanging around from a previous Py_Initialize/Finalize
  556|       |     * pair :(
  557|       |     */
  558|      1|    _PyRuntimeState_SetFinalizing(runtime, NULL);
  559|       |
  560|      1|    _Py_InitVersion();
  561|      1|    _Py_DumpTraceback_Init();
  562|       |
  563|      1|    status = _Py_HashRandomization_Init(config);
  564|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  565|      0|        return status;
  566|      0|    }
  567|       |
  568|      1|    status = _PyImport_Init();
  569|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  570|      0|        return status;
  571|      0|    }
  572|       |
  573|      1|    status = _PyInterpreterState_Enable(runtime);
  574|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  575|      0|        return status;
  576|      0|    }
  577|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
  578|      1|}
pylifecycle.c:pycore_create_interpreter:
  671|      1|{
  672|      1|    PyStatus status;
  673|      1|    PyInterpreterState *interp;
  674|      1|    status = _PyInterpreterState_New(NULL, &interp);
  675|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  676|      0|        return status;
  677|      0|    }
  678|      1|    assert(interp != NULL);
  ------------------
  |  Branch (678:5): [True: 1, False: 0]
  ------------------
  679|      1|    assert(_Py_IsMainInterpreter(interp));
  ------------------
  |  Branch (679:5): [True: 1, False: 0]
  ------------------
  680|      1|    _PyInterpreterState_SetWhence(interp, _PyInterpreterState_WHENCE_RUNTIME);
  ------------------
  |  |   18|      1|#define _PyInterpreterState_WHENCE_RUNTIME 1
  ------------------
  681|      1|    interp->_ready = 1;
  682|       |
  683|       |    /* Initialize the module dict watcher early, before any modules are created */
  684|      1|    if (_PyModule_InitModuleDictWatcher(interp) != 0) {
  ------------------
  |  Branch (684:9): [True: 0, False: 1]
  ------------------
  685|      0|        return _PyStatus_ERR("failed to initialize module dict watcher");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
  686|      0|    }
  687|       |
  688|      1|    status = _PyConfig_Copy(&interp->config, src_config);
  689|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  690|      0|        return status;
  691|      0|    }
  692|       |
  693|       |    /* Auto-thread-state API */
  694|      1|    status = _PyGILState_Init(interp);
  695|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  696|      0|        return status;
  697|      0|    }
  698|       |
  699|      1|    PyInterpreterConfig config = _PyInterpreterConfig_LEGACY_INIT;
  ------------------
  |  |   76|      1|    { \
  |  |   77|      1|        .use_main_obmalloc = 1, \
  |  |   78|      1|        .allow_fork = 1, \
  |  |   79|      1|        .allow_exec = 1, \
  |  |   80|      1|        .allow_threads = 1, \
  |  |   81|      1|        .allow_daemon_threads = 1, \
  |  |   82|      1|        .check_multi_interp_extensions = _PyInterpreterConfig_LEGACY_CHECK_MULTI_INTERP_EXTENSIONS, \
  |  |  ------------------
  |  |  |  |   72|      1|#  define _PyInterpreterConfig_LEGACY_CHECK_MULTI_INTERP_EXTENSIONS 0
  |  |  ------------------
  |  |   83|      1|        .gil = PyInterpreterConfig_SHARED_GIL, \
  |  |  ------------------
  |  |  |  |   41|      1|#define PyInterpreterConfig_SHARED_GIL (1)
  |  |  ------------------
  |  |   84|      1|    }
  ------------------
  700|       |    // The main interpreter always has its own GIL and supports single-phase
  701|       |    // init extensions.
  702|      1|    config.gil = PyInterpreterConfig_OWN_GIL;
  ------------------
  |  |   42|      1|#define PyInterpreterConfig_OWN_GIL (2)
  ------------------
  703|      1|    config.check_multi_interp_extensions = 0;
  704|      1|    status = init_interp_settings(interp, &config);
  705|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  706|      0|        return status;
  707|      0|    }
  708|       |
  709|       |    // This could be done in init_interpreter() (in pystate.c) if it
  710|       |    // didn't depend on interp->feature_flags being set already.
  711|      1|    status = _PyObject_InitState(interp);
  712|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  713|      0|        return status;
  714|      0|    }
  715|       |
  716|       |#ifdef Py_STATS
  717|       |    // initialize pystats.  This must be done after the settings are loaded.
  718|       |    status = _PyStats_InterpInit(interp);
  719|       |    if (_PyStatus_EXCEPTION(status)) {
  720|       |        return status;
  721|       |    }
  722|       |#endif
  723|       |
  724|       |    // initialize the interp->obmalloc state.  This must be done after
  725|       |    // the settings are loaded (so that feature_flags are set) but before
  726|       |    // any calls are made to obmalloc functions.
  727|      1|    if (_PyMem_init_obmalloc(interp) < 0) {
  ------------------
  |  Branch (727:9): [True: 0, False: 1]
  ------------------
  728|      0|        return _PyStatus_NO_MEMORY();
  ------------------
  |  |   33|      0|#define _PyStatus_NO_MEMORY() _PyStatus_ERR(_PyStatus_NO_MEMORY_ERRMSG)
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  ------------------
  729|      0|    }
  730|       |
  731|      1|    status = _PyTraceMalloc_Init();
  732|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  733|      0|        return status;
  734|      0|    }
  735|       |
  736|      1|    PyThreadState *tstate = _PyThreadState_New(interp,
  737|      1|                                               _PyThreadState_WHENCE_INIT);
  ------------------
  |  |  105|      1|#  define _PyThreadState_WHENCE_INIT 1
  ------------------
  738|      1|    if (tstate == NULL) {
  ------------------
  |  Branch (738:9): [True: 0, False: 1]
  ------------------
  739|      0|        return _PyStatus_ERR("can't make first thread");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
  740|      0|    }
  741|      1|    runtime->main_tstate = tstate;
  742|      1|    _PyThreadState_Bind(tstate);
  743|       |
  744|      1|    init_interp_create_gil(tstate, config.gil);
  745|       |
  746|      1|    *tstate_p = tstate;
  747|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
  748|      1|}
pylifecycle.c:init_interp_settings:
  584|      1|{
  585|      1|    assert(interp->feature_flags == 0);
  ------------------
  |  Branch (585:5): [True: 1, False: 0]
  ------------------
  586|       |
  587|      1|    if (config->use_main_obmalloc) {
  ------------------
  |  Branch (587:9): [True: 1, False: 0]
  ------------------
  588|      1|        interp->feature_flags |= Py_RTFLAGS_USE_MAIN_OBMALLOC;
  ------------------
  |  |   79|      1|#define Py_RTFLAGS_USE_MAIN_OBMALLOC (1UL << 5)
  ------------------
  589|      1|    }
  590|      0|    else if (!config->check_multi_interp_extensions) {
  ------------------
  |  Branch (590:14): [True: 0, False: 0]
  ------------------
  591|       |        /* The reason: PyModuleDef.m_base.m_copy leaks objects between
  592|       |           interpreters. */
  593|      0|        return _PyStatus_ERR("per-interpreter obmalloc does not support "
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
  594|      0|                             "single-phase init extension modules");
  595|      0|    }
  596|       |#ifdef Py_GIL_DISABLED
  597|       |    if (!_Py_IsMainInterpreter(interp) &&
  598|       |        !config->check_multi_interp_extensions)
  599|       |    {
  600|       |        return _PyStatus_ERR("The free-threaded build does not support "
  601|       |                             "single-phase init extension modules in "
  602|       |                             "subinterpreters");
  603|       |    }
  604|       |#endif
  605|       |
  606|      1|    if (config->allow_fork) {
  ------------------
  |  Branch (606:9): [True: 1, False: 0]
  ------------------
  607|      1|        interp->feature_flags |= Py_RTFLAGS_FORK;
  ------------------
  |  |   91|      1|#define Py_RTFLAGS_FORK (1UL << 15)
  ------------------
  608|      1|    }
  609|      1|    if (config->allow_exec) {
  ------------------
  |  Branch (609:9): [True: 1, False: 0]
  ------------------
  610|      1|        interp->feature_flags |= Py_RTFLAGS_EXEC;
  ------------------
  |  |   94|      1|#define Py_RTFLAGS_EXEC (1UL << 16)
  ------------------
  611|      1|    }
  612|       |    // Note that fork+exec is always allowed.
  613|       |
  614|      1|    if (config->allow_threads) {
  ------------------
  |  Branch (614:9): [True: 1, False: 0]
  ------------------
  615|      1|        interp->feature_flags |= Py_RTFLAGS_THREADS;
  ------------------
  |  |   85|      1|#define Py_RTFLAGS_THREADS (1UL << 10)
  ------------------
  616|      1|    }
  617|      1|    if (config->allow_daemon_threads) {
  ------------------
  |  Branch (617:9): [True: 1, False: 0]
  ------------------
  618|      1|        interp->feature_flags |= Py_RTFLAGS_DAEMON_THREADS;
  ------------------
  |  |   88|      1|#define Py_RTFLAGS_DAEMON_THREADS (1UL << 11)
  ------------------
  619|      1|    }
  620|       |
  621|      1|    if (config->check_multi_interp_extensions) {
  ------------------
  |  Branch (621:9): [True: 0, False: 1]
  ------------------
  622|      0|        interp->feature_flags |= Py_RTFLAGS_MULTI_INTERP_EXTENSIONS;
  ------------------
  |  |   82|      0|#define Py_RTFLAGS_MULTI_INTERP_EXTENSIONS (1UL << 8)
  ------------------
  623|      0|    }
  624|       |
  625|      1|    switch (config->gil) {
  626|      0|    case PyInterpreterConfig_DEFAULT_GIL: break;
  ------------------
  |  |   40|      0|#define PyInterpreterConfig_DEFAULT_GIL (0)
  ------------------
  |  Branch (626:5): [True: 0, False: 1]
  ------------------
  627|      0|    case PyInterpreterConfig_SHARED_GIL: break;
  ------------------
  |  |   41|      0|#define PyInterpreterConfig_SHARED_GIL (1)
  ------------------
  |  Branch (627:5): [True: 0, False: 1]
  ------------------
  628|      1|    case PyInterpreterConfig_OWN_GIL: break;
  ------------------
  |  |   42|      1|#define PyInterpreterConfig_OWN_GIL (2)
  ------------------
  |  Branch (628:5): [True: 1, False: 0]
  ------------------
  629|      0|    default:
  ------------------
  |  Branch (629:5): [True: 0, False: 1]
  ------------------
  630|      0|        return _PyStatus_ERR("invalid interpreter config 'gil' value");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
  631|      1|    }
  632|       |
  633|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
  634|      1|}
pylifecycle.c:init_interp_create_gil:
  639|      1|{
  640|       |    /* finalize_interp_delete() comment explains why _PyEval_FiniGIL() is
  641|       |       only called here. */
  642|       |    // XXX This is broken with a per-interpreter GIL.
  643|      1|    _PyEval_FiniGIL(tstate->interp);
  644|       |
  645|       |    /* Auto-thread-state API */
  646|      1|    _PyGILState_SetTstate(tstate);
  647|       |
  648|      1|    int own_gil = (gil == PyInterpreterConfig_OWN_GIL);
  ------------------
  |  |   42|      1|#define PyInterpreterConfig_OWN_GIL (2)
  ------------------
  649|       |
  650|       |    /* Create the GIL and take it */
  651|      1|    _PyEval_InitGIL(tstate, own_gil);
  652|      1|}
pylifecycle.c:pycore_interp_init:
  940|      1|{
  941|      1|    _PyThreadStateImpl *_tstate = (_PyThreadStateImpl *)tstate;
  942|      1|    if (_tstate->c_stack_hard_limit == 0) {
  ------------------
  |  Branch (942:9): [True: 0, False: 1]
  ------------------
  943|      0|        _Py_InitializeRecursionLimits(tstate);
  944|      0|    }
  945|      1|    PyInterpreterState *interp = tstate->interp;
  946|      1|    PyStatus status;
  947|      1|    PyObject *sysmod = NULL;
  948|       |
  949|       |    // Create singletons before the first PyType_Ready() call, since
  950|       |    // PyType_Ready() uses singletons like the Unicode empty string (tp_doc)
  951|       |    // and the empty tuple singletons (tp_bases).
  952|      1|    status = pycore_init_global_objects(interp);
  953|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  954|      0|        return status;
  955|      0|    }
  956|       |
  957|      1|    status = _PyCode_Init(interp);
  958|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  959|      0|        return status;
  960|      0|    }
  961|       |
  962|      1|    status = _PyDtoa_Init(interp);
  963|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  964|      0|        return status;
  965|      0|    }
  966|       |
  967|       |    // The GC must be initialized before the first GC collection.
  968|      1|    status = _PyGC_Init(interp);
  969|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  970|      0|        return status;
  971|      0|    }
  972|       |
  973|      1|    status = pycore_init_types(interp);
  974|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  975|      0|        goto done;
  976|      0|    }
  977|       |
  978|      1|    if (_PyWarnings_InitState(interp) < 0) {
  ------------------
  |  Branch (978:9): [True: 0, False: 1]
  ------------------
  979|      0|        return _PyStatus_ERR("can't initialize warnings");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
  980|      0|    }
  981|       |
  982|      1|    status = _PyAtExit_Init(interp);
  983|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  984|      0|        return status;
  985|      0|    }
  986|       |
  987|      1|    status = _PySys_Create(tstate, &sysmod);
  988|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  989|      0|        goto done;
  990|      0|    }
  991|       |
  992|      1|    status = pycore_init_builtins(tstate);
  993|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  994|      0|        goto done;
  995|      0|    }
  996|       |
  997|      1|    status = _PyXI_Init(interp);
  998|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  999|      0|        goto done;
 1000|      0|    }
 1001|       |
 1002|      1|    const PyConfig *config = _PyInterpreterState_GetConfig(interp);
 1003|       |
 1004|      1|    status = _PyImport_InitCore(tstate, sysmod, config->_install_importlib);
 1005|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1006|      0|        goto done;
 1007|      0|    }
 1008|       |
 1009|      1|done:
 1010|       |    /* sys.modules['sys'] contains a strong reference to the module */
 1011|      1|    Py_XDECREF(sysmod);
  ------------------
  |  |  524|      1|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1012|      1|    return status;
 1013|      1|}
pylifecycle.c:pycore_init_global_objects:
  753|      1|{
  754|      1|    PyStatus status;
  755|       |
  756|      1|    status = _PyUnicode_InitGlobalObjects(interp);
  757|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  758|      0|        return status;
  759|      0|    }
  760|       |
  761|      1|    _PyUnicode_InitState(interp);
  762|       |
  763|      1|    if (_Py_IsMainInterpreter(interp)) {
  ------------------
  |  Branch (763:9): [True: 1, False: 0]
  ------------------
  764|      1|        _Py_GetConstant_Init();
  765|      1|    }
  766|       |
  767|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
  768|      1|}
pylifecycle.c:pycore_init_types:
  773|      1|{
  774|      1|    PyStatus status;
  775|       |
  776|      1|    status = _PyTypes_InitTypes(interp);
  777|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  778|      0|        return status;
  779|      0|    }
  780|       |
  781|      1|    status = _PyLong_InitTypes(interp);
  782|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  783|      0|        return status;
  784|      0|    }
  785|       |
  786|      1|    status = _PyUnicode_InitTypes(interp);
  787|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  788|      0|        return status;
  789|      0|    }
  790|       |
  791|      1|    status = _PyFloat_InitTypes(interp);
  792|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  793|      0|        return status;
  794|      0|    }
  795|       |
  796|      1|    if (_PyExc_InitTypes(interp) < 0) {
  ------------------
  |  Branch (796:9): [True: 0, False: 1]
  ------------------
  797|      0|        return _PyStatus_ERR("failed to initialize an exception type");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
  798|      0|    }
  799|       |
  800|      1|    status = _PyExc_InitGlobalObjects(interp);
  801|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  802|      0|        return status;
  803|      0|    }
  804|       |
  805|      1|    status = _PyExc_InitState(interp);
  806|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  807|      0|        return status;
  808|      0|    }
  809|       |
  810|      1|    status = _PyErr_InitTypes(interp);
  811|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  812|      0|        return status;
  813|      0|    }
  814|       |
  815|      1|    status = _PyContext_Init(interp);
  816|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  817|      0|        return status;
  818|      0|    }
  819|       |
  820|      1|    status = _PyXI_InitTypes(interp);
  821|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  822|      0|        return status;
  823|      0|    }
  824|       |
  825|      1|    status = _PyInterpolation_InitTypes(interp);
  826|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  827|      0|        return status;
  828|      0|    }
  829|       |
  830|      1|    status = _PyDateTime_InitTypes(interp);
  831|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  832|      0|        return status;
  833|      0|    }
  834|       |
  835|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
  836|      1|}
pylifecycle.c:pycore_init_builtins:
  840|      1|{
  841|      1|    PyInterpreterState *interp = tstate->interp;
  842|       |
  843|      1|    PyObject *bimod = _PyBuiltin_Init(interp);
  844|      1|    if (bimod == NULL) {
  ------------------
  |  Branch (844:9): [True: 0, False: 1]
  ------------------
  845|      0|        goto error;
  846|      0|    }
  847|       |
  848|      1|    PyObject *modules = _PyImport_GetModules(interp);
  849|      1|    if (_PyImport_FixupBuiltin(tstate, bimod, "builtins", modules) < 0) {
  ------------------
  |  Branch (849:9): [True: 0, False: 1]
  ------------------
  850|      0|        goto error;
  851|      0|    }
  852|       |
  853|      1|    PyObject *builtins_dict = PyModule_GetDict(bimod);
  854|      1|    if (builtins_dict == NULL) {
  ------------------
  |  Branch (854:9): [True: 0, False: 1]
  ------------------
  855|      0|        goto error;
  856|      0|    }
  857|      1|    interp->builtins = Py_NewRef(builtins_dict);
  ------------------
  |  |  550|      1|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  858|       |
  859|      1|    PyObject *isinstance = PyDict_GetItemWithError(builtins_dict, &_Py_ID(isinstance));
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  860|      1|    if (!isinstance) {
  ------------------
  |  Branch (860:9): [True: 0, False: 1]
  ------------------
  861|      0|        goto error;
  862|      0|    }
  863|      1|    interp->callable_cache.isinstance = isinstance;
  864|       |
  865|      1|    PyObject *len = PyDict_GetItemWithError(builtins_dict, &_Py_ID(len));
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  866|      1|    if (!len) {
  ------------------
  |  Branch (866:9): [True: 0, False: 1]
  ------------------
  867|      0|        goto error;
  868|      0|    }
  869|      1|    interp->callable_cache.len = len;
  870|       |
  871|      1|    PyObject *all = PyDict_GetItemWithError(builtins_dict, &_Py_ID(all));
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  872|      1|    if (!all) {
  ------------------
  |  Branch (872:9): [True: 0, False: 1]
  ------------------
  873|      0|        goto error;
  874|      0|    }
  875|       |
  876|      1|    PyObject *any = PyDict_GetItemWithError(builtins_dict, &_Py_ID(any));
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  877|      1|    if (!any) {
  ------------------
  |  Branch (877:9): [True: 0, False: 1]
  ------------------
  878|      0|        goto error;
  879|      0|    }
  880|       |
  881|      1|    interp->common_consts[CONSTANT_ASSERTIONERROR] = PyExc_AssertionError;
  ------------------
  |  |   71|      1|#define CONSTANT_ASSERTIONERROR 0
  ------------------
  882|      1|    interp->common_consts[CONSTANT_NOTIMPLEMENTEDERROR] = PyExc_NotImplementedError;
  ------------------
  |  |   72|      1|#define CONSTANT_NOTIMPLEMENTEDERROR 1
  ------------------
  883|      1|    interp->common_consts[CONSTANT_BUILTIN_TUPLE] = (PyObject *)&PyTuple_Type;
  ------------------
  |  |   73|      1|#define CONSTANT_BUILTIN_TUPLE 2
  ------------------
  884|      1|    interp->common_consts[CONSTANT_BUILTIN_ALL] = all;
  ------------------
  |  |   74|      1|#define CONSTANT_BUILTIN_ALL 3
  ------------------
  885|      1|    interp->common_consts[CONSTANT_BUILTIN_ANY] = any;
  ------------------
  |  |   75|      1|#define CONSTANT_BUILTIN_ANY 4
  ------------------
  886|      1|    interp->common_consts[CONSTANT_BUILTIN_LIST] = (PyObject *)&PyList_Type;
  ------------------
  |  |   76|      1|#define CONSTANT_BUILTIN_LIST 5
  ------------------
  887|      1|    interp->common_consts[CONSTANT_BUILTIN_SET] = (PyObject *)&PySet_Type;
  ------------------
  |  |   77|      1|#define CONSTANT_BUILTIN_SET 6
  ------------------
  888|      1|    interp->common_consts[CONSTANT_NONE] = Py_None;
  ------------------
  |  |   78|      1|#define CONSTANT_NONE 7
  ------------------
                  interp->common_consts[CONSTANT_NONE] = Py_None;
  ------------------
  |  |  616|      1|#  define Py_None (&_Py_NoneStruct)
  ------------------
  889|      1|    interp->common_consts[CONSTANT_EMPTY_STR] =
  ------------------
  |  |   79|      1|#define CONSTANT_EMPTY_STR 8
  ------------------
  890|      1|        Py_GetConstantBorrowed(Py_CONSTANT_EMPTY_STR);
  ------------------
  |  |  597|      1|#define Py_CONSTANT_EMPTY_STR 7
  ------------------
  891|      1|    interp->common_consts[CONSTANT_TRUE] = Py_True;
  ------------------
  |  |   80|      1|#define CONSTANT_TRUE 9
  ------------------
                  interp->common_consts[CONSTANT_TRUE] = Py_True;
  ------------------
  |  |   26|      1|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  892|      1|    interp->common_consts[CONSTANT_FALSE] = Py_False;
  ------------------
  |  |   81|      1|#define CONSTANT_FALSE 10
  ------------------
                  interp->common_consts[CONSTANT_FALSE] = Py_False;
  ------------------
  |  |   25|      1|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  893|      1|    interp->common_consts[CONSTANT_MINUS_ONE] =
  ------------------
  |  |   82|      1|#define CONSTANT_MINUS_ONE 11
  ------------------
  894|      1|        (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS - 1];
  ------------------
  |  |   59|      1|#define _PyLong_SMALL_INTS _Py_SINGLETON(small_ints)
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                      (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS - 1];
  ------------------
  |  |   98|      1|#define _PY_NSMALLNEGINTS           5
  ------------------
  895|     13|    for (int i = 0; i < NUM_COMMON_CONSTANTS; i++) {
  ------------------
  |  |   83|     13|#define NUM_COMMON_CONSTANTS 12
  ------------------
  |  Branch (895:21): [True: 12, False: 1]
  ------------------
  896|     12|        assert(interp->common_consts[i] != NULL);
  ------------------
  |  Branch (896:9): [True: 12, False: 0]
  ------------------
  897|     12|    }
  898|       |
  899|      1|    PyObject *list_append = _PyType_Lookup(&PyList_Type, &_Py_ID(append));
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  900|      1|    if (list_append == NULL) {
  ------------------
  |  Branch (900:9): [True: 0, False: 1]
  ------------------
  901|      0|        goto error;
  902|      0|    }
  903|      1|    interp->callable_cache.list_append = list_append;
  904|       |
  905|      1|    PyObject *object__getattribute__ = _PyType_Lookup(&PyBaseObject_Type, &_Py_ID(__getattribute__));
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  906|      1|    if (object__getattribute__ == NULL) {
  ------------------
  |  Branch (906:9): [True: 0, False: 1]
  ------------------
  907|      0|        goto error;
  908|      0|    }
  909|      1|    interp->callable_cache.object__getattribute__ = object__getattribute__;
  910|       |
  911|      1|    if (_PyType_InitSlotDefs(interp) < 0) {
  ------------------
  |  Branch (911:9): [True: 0, False: 1]
  ------------------
  912|      0|        return _PyStatus_ERR("failed to init slotdefs");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
  913|      0|    }
  914|       |
  915|      1|    if (_PyBuiltins_AddExceptions(bimod) < 0) {
  ------------------
  |  Branch (915:9): [True: 0, False: 1]
  ------------------
  916|      0|        return _PyStatus_ERR("failed to add exceptions to builtins");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
  917|      0|    }
  918|       |
  919|      1|    interp->builtins_copy = PyDict_Copy(interp->builtins);
  920|      1|    if (interp->builtins_copy == NULL) {
  ------------------
  |  Branch (920:9): [True: 0, False: 1]
  ------------------
  921|      0|        goto error;
  922|      0|    }
  923|      1|    Py_DECREF(bimod);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  924|       |
  925|      1|    if (_PyImport_InitDefaultImportFunc(interp) < 0) {
  ------------------
  |  Branch (925:9): [True: 0, False: 1]
  ------------------
  926|      0|        goto error;
  927|      0|    }
  928|       |
  929|      1|    assert(!_PyErr_Occurred(tstate));
  ------------------
  |  Branch (929:5): [True: 1, False: 0]
  ------------------
  930|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
  931|       |
  932|      0|error:
  933|      0|    Py_XDECREF(bimod);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  934|      0|    return _PyStatus_ERR("can't initialize builtins module");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
  935|      1|}
pylifecycle.c:pyinit_main:
 1594|      1|{
 1595|      1|    PyInterpreterState *interp = tstate->interp;
 1596|      1|    if (!_PyRuntimeState_GetCoreInitialized(interp->runtime)) {
  ------------------
  |  Branch (1596:9): [True: 0, False: 1]
  ------------------
 1597|      0|        return _PyStatus_ERR("runtime core not initialized");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 1598|      0|    }
 1599|       |
 1600|      1|    if (_PyRuntimeState_GetInitialized(interp->runtime)) {
  ------------------
  |  Branch (1600:9): [True: 0, False: 1]
  ------------------
 1601|      0|        return pyinit_main_reconfigure(tstate);
 1602|      0|    }
 1603|       |
 1604|      1|    PyStatus status = init_interp_main(tstate);
 1605|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1606|      0|        return status;
 1607|      0|    }
 1608|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 1609|      1|}
pylifecycle.c:interpreter_update_config:
  412|      1|{
  413|      1|    const PyConfig *config = &tstate->interp->config;
  414|       |
  415|      1|    if (!only_update_path_config) {
  ------------------
  |  Branch (415:9): [True: 0, False: 1]
  ------------------
  416|      0|        PyStatus status = _PyConfig_Write(config, tstate->interp->runtime);
  417|      0|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      0|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  418|      0|            _PyErr_SetFromPyStatus(status);
  419|      0|            return -1;
  420|      0|        }
  421|      0|    }
  422|       |
  423|      1|    if (_Py_IsMainInterpreter(tstate->interp)) {
  ------------------
  |  Branch (423:9): [True: 1, False: 0]
  ------------------
  424|      1|        PyStatus status = _PyPathConfig_UpdateGlobal(config);
  425|      1|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  426|      0|            _PyErr_SetFromPyStatus(status);
  427|      0|            return -1;
  428|      0|        }
  429|      1|    }
  430|       |
  431|      1|    tstate->interp->long_state.max_str_digits = config->int_max_str_digits;
  432|       |
  433|       |    // Update the sys module for the new configuration
  434|      1|    if (_PySys_UpdateConfig(tstate) < 0) {
  ------------------
  |  Branch (434:9): [True: 0, False: 1]
  ------------------
  435|      0|        return -1;
  436|      0|    }
  437|      1|    return 0;
  438|      1|}
pylifecycle.c:init_interp_main:
 1351|      1|{
 1352|      1|    assert(!_PyErr_Occurred(tstate));
  ------------------
  |  Branch (1352:5): [True: 1, False: 0]
  ------------------
 1353|       |
 1354|      1|    PyStatus status;
 1355|      1|    int is_main_interp = _Py_IsMainInterpreter(tstate->interp);
 1356|      1|    PyInterpreterState *interp = tstate->interp;
 1357|      1|    const PyConfig *config = _PyInterpreterState_GetConfig(interp);
 1358|       |
 1359|      1|    if (!config->_install_importlib) {
  ------------------
  |  Branch (1359:9): [True: 0, False: 1]
  ------------------
 1360|       |        /* Special mode for freeze_importlib: run with no import system
 1361|       |         *
 1362|       |         * This means anything which needs support from extension modules
 1363|       |         * or pure Python code in the standard library won't work.
 1364|       |         */
 1365|      0|        if (is_main_interp) {
  ------------------
  |  Branch (1365:13): [True: 0, False: 0]
  ------------------
 1366|      0|            _PyRuntimeState_SetInitialized(interp->runtime, 1);
 1367|      0|        }
 1368|      0|        return _PyStatus_OK();
  ------------------
  |  |   24|      0|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 1369|      0|    }
 1370|       |
 1371|       |    // Initialize the import-related configuration.
 1372|      1|    status = _PyConfig_InitImportConfig(&interp->config);
 1373|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1374|      0|        return status;
 1375|      0|    }
 1376|       |
 1377|      1|    if (interpreter_update_config(tstate, 1) < 0) {
  ------------------
  |  Branch (1377:9): [True: 0, False: 1]
  ------------------
 1378|      0|        return _PyStatus_ERR("failed to update the Python config");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 1379|      0|    }
 1380|       |
 1381|      1|    status = _PyImport_InitExternal(tstate);
 1382|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1383|      0|        return status;
 1384|      0|    }
 1385|       |
 1386|      1|    if (is_main_interp) {
  ------------------
  |  Branch (1386:9): [True: 1, False: 0]
  ------------------
 1387|       |        /* initialize the faulthandler module */
 1388|      1|        status = _PyFaulthandler_Init(config->faulthandler);
 1389|      1|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1390|      0|            return status;
 1391|      0|        }
 1392|      1|    }
 1393|       |
 1394|      1|    status = _PyUnicode_InitEncodings(tstate);
 1395|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1396|      0|        return status;
 1397|      0|    }
 1398|       |
 1399|      1|    if (is_main_interp) {
  ------------------
  |  Branch (1399:9): [True: 1, False: 0]
  ------------------
 1400|      1|        if (_PySignal_Init(config->install_signal_handlers) < 0) {
  ------------------
  |  Branch (1400:13): [True: 0, False: 1]
  ------------------
 1401|      0|            return _PyStatus_ERR("can't initialize signals");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 1402|      0|        }
 1403|       |
 1404|      1|        if (config->tracemalloc) {
  ------------------
  |  Branch (1404:13): [True: 0, False: 1]
  ------------------
 1405|      0|           if (_PyTraceMalloc_Start(config->tracemalloc) < 0) {
  ------------------
  |  Branch (1405:16): [True: 0, False: 0]
  ------------------
 1406|      0|                return _PyStatus_ERR("can't start tracemalloc");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 1407|      0|            }
 1408|      0|        }
 1409|       |
 1410|      1|#ifdef PY_HAVE_PERF_TRAMPOLINE
 1411|      1|        if (config->perf_profiling) {
  ------------------
  |  Branch (1411:13): [True: 0, False: 1]
  ------------------
 1412|      0|            _PyPerf_Callbacks *cur_cb;
 1413|      0|            if (config->perf_profiling == 1) {
  ------------------
  |  Branch (1413:17): [True: 0, False: 0]
  ------------------
 1414|      0|                cur_cb = &_Py_perfmap_callbacks;
 1415|      0|            }
 1416|      0|            else {
 1417|      0|                cur_cb = &_Py_perfmap_jit_callbacks;
 1418|      0|            }
 1419|      0|            if (_PyPerfTrampoline_SetCallbacks(cur_cb) < 0 ||
  ------------------
  |  Branch (1419:17): [True: 0, False: 0]
  ------------------
 1420|      0|                    _PyPerfTrampoline_Init(config->perf_profiling) < 0) {
  ------------------
  |  Branch (1420:21): [True: 0, False: 0]
  ------------------
 1421|      0|                return _PyStatus_ERR("can't initialize the perf trampoline");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 1422|      0|            }
 1423|      0|        }
 1424|      1|#endif
 1425|      1|    }
 1426|       |
 1427|      1|    status = init_sys_streams(tstate);
 1428|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1429|      0|        return status;
 1430|      0|    }
 1431|       |
 1432|      1|    status = init_set_builtins_open();
 1433|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1434|      0|        return status;
 1435|      0|    }
 1436|       |
 1437|       |#ifdef __ANDROID__
 1438|       |    status = init_android_streams(tstate);
 1439|       |    if (_PyStatus_EXCEPTION(status)) {
 1440|       |        return status;
 1441|       |    }
 1442|       |#endif
 1443|       |#if defined(__APPLE__) && HAS_APPLE_SYSTEM_LOG
 1444|       |    if (config->use_system_logger) {
 1445|       |        status = init_apple_streams(tstate);
 1446|       |        if (_PyStatus_EXCEPTION(status)) {
 1447|       |            return status;
 1448|       |        }
 1449|       |    }
 1450|       |#endif
 1451|       |
 1452|       |#ifdef Py_DEBUG
 1453|       |    run_presite(tstate);
 1454|       |#endif
 1455|       |
 1456|      1|    status = add_main_module(interp);
 1457|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1458|      0|        return status;
 1459|      0|    }
 1460|       |
 1461|      1|    if (is_main_interp) {
  ------------------
  |  Branch (1461:9): [True: 1, False: 0]
  ------------------
 1462|       |        /* Initialize warnings. */
 1463|      1|        PyObject *warnoptions;
 1464|      1|        if (PySys_GetOptionalAttrString("warnoptions", &warnoptions) < 0) {
  ------------------
  |  Branch (1464:13): [True: 0, False: 1]
  ------------------
 1465|      0|            return _PyStatus_ERR("can't initialize warnings");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 1466|      0|        }
 1467|      1|        if (warnoptions != NULL && PyList_Check(warnoptions) &&
  ------------------
  |  |   25|      1|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LIST_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      2|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (760:41): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1467:13): [True: 1, False: 0]
  ------------------
 1468|      1|            PyList_Size(warnoptions) > 0)
  ------------------
  |  Branch (1468:13): [True: 0, False: 1]
  ------------------
 1469|      0|        {
 1470|      0|            PyObject *warnings_module = PyImport_ImportModule("warnings");
 1471|      0|            if (warnings_module == NULL) {
  ------------------
  |  Branch (1471:17): [True: 0, False: 0]
  ------------------
 1472|      0|                fprintf(stderr, "'import warnings' failed; traceback:\n");
 1473|      0|                _PyErr_Print(tstate);
 1474|      0|            }
 1475|      0|            Py_XDECREF(warnings_module);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1476|      0|        }
 1477|      1|        Py_XDECREF(warnoptions);
  ------------------
  |  |  524|      1|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1478|      1|    }
 1479|       |
 1480|      1|    if (config->site_import) {
  ------------------
  |  Branch (1480:9): [True: 1, False: 0]
  ------------------
 1481|      1|        status = init_import_site();
 1482|      1|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 1483|      0|            return status;
 1484|      0|        }
 1485|      1|    }
 1486|       |
 1487|       |    // Initialize lazy imports based on configuration. Do this after site
 1488|       |    // module is imported to avoid circular imports during startup.
 1489|      1|    if (config->lazy_imports != -1) {
  ------------------
  |  Branch (1489:9): [True: 0, False: 1]
  ------------------
 1490|      0|        PyImport_LazyImportsMode lazy_mode;
 1491|      0|        if (config->lazy_imports == 1) {
  ------------------
  |  Branch (1491:13): [True: 0, False: 0]
  ------------------
 1492|      0|            lazy_mode = PyImport_LAZY_ALL;
 1493|      0|        }
 1494|      0|        else {
 1495|      0|            lazy_mode = PyImport_LAZY_NONE;
 1496|      0|        }
 1497|      0|        if (PyImport_SetLazyImportsMode(lazy_mode) < 0) {
  ------------------
  |  Branch (1497:13): [True: 0, False: 0]
  ------------------
 1498|      0|            return _PyStatus_ERR("failed to set lazy imports mode");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 1499|      0|        }
 1500|      0|    }
 1501|       |    // If config->lazy_imports == -1, use the default mode, no change needed.
 1502|       |
 1503|      1|    if (is_main_interp) {
  ------------------
  |  Branch (1503:9): [True: 1, False: 0]
  ------------------
 1504|      1|#ifndef MS_WINDOWS
 1505|      1|        emit_stderr_warning_for_legacy_locale(interp->runtime);
 1506|      1|#endif
 1507|      1|    }
 1508|       |
 1509|       |    // Turn on experimental tier 2 (uops-based) optimizer
 1510|       |    // This is also needed when the JIT is enabled
 1511|       |#ifdef _Py_TIER2
 1512|       |    if (is_main_interp) {
 1513|       |        int enabled = 1;
 1514|       |#if _Py_TIER2 & 2
 1515|       |        enabled = 0;
 1516|       |#endif
 1517|       |        char *env = Py_GETENV("PYTHON_JIT");
 1518|       |        if (env && *env != '\0') {
 1519|       |            // PYTHON_JIT=0|1 overrides the default
 1520|       |            enabled = *env != '0';
 1521|       |        }
 1522|       |        if (enabled) {
 1523|       |#ifdef _Py_JIT
 1524|       |            // perf profiler works fine with tier 2 interpreter, so
 1525|       |            // only checking for a "real JIT".
 1526|       |            if (config->perf_profiling > 0) {
 1527|       |                (void)PyErr_WarnEx(
 1528|       |                    PyExc_RuntimeWarning,
 1529|       |                    "JIT deactivated as perf profiling support is active",
 1530|       |                    0);
 1531|       |            } else
 1532|       |#endif
 1533|       |            {
 1534|       |                interp->jit = true;
 1535|       |            }
 1536|       |        }
 1537|       |    }
 1538|       |#endif
 1539|       |
 1540|      1|    if (!is_main_interp) {
  ------------------
  |  Branch (1540:9): [True: 0, False: 1]
  ------------------
 1541|       |        // The main interpreter is handled in Py_Main(), for now.
 1542|      0|        if (config->sys_path_0 != NULL) {
  ------------------
  |  Branch (1542:13): [True: 0, False: 0]
  ------------------
 1543|      0|            PyObject *path0 = PyUnicode_FromWideChar(config->sys_path_0, -1);
 1544|      0|            if (path0 == NULL) {
  ------------------
  |  Branch (1544:17): [True: 0, False: 0]
  ------------------
 1545|      0|                return _PyStatus_ERR("can't initialize sys.path[0]");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 1546|      0|            }
 1547|      0|            PyObject *sysdict = interp->sysdict;
 1548|      0|            if (sysdict == NULL) {
  ------------------
  |  Branch (1548:17): [True: 0, False: 0]
  ------------------
 1549|      0|                Py_DECREF(path0);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1550|      0|                return _PyStatus_ERR("can't initialize sys.path[0]");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 1551|      0|            }
 1552|      0|            PyObject *sys_path = PyDict_GetItemWithError(sysdict, &_Py_ID(path));
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1553|      0|            if (sys_path == NULL) {
  ------------------
  |  Branch (1553:17): [True: 0, False: 0]
  ------------------
 1554|      0|                Py_DECREF(path0);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1555|      0|                return _PyStatus_ERR("can't initialize sys.path[0]");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 1556|      0|            }
 1557|      0|            int res = PyList_Insert(sys_path, 0, path0);
 1558|      0|            Py_DECREF(path0);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1559|      0|            if (res) {
  ------------------
  |  Branch (1559:17): [True: 0, False: 0]
  ------------------
 1560|      0|                return _PyStatus_ERR("can't initialize sys.path[0]");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 1561|      0|            }
 1562|      0|        }
 1563|      0|    }
 1564|       |
 1565|       |
 1566|      1|    interp->dict_state.watchers[0] = &builtins_dict_watcher;
 1567|      1|    if (PyDict_Watch(0, interp->builtins) != 0) {
  ------------------
  |  Branch (1567:9): [True: 0, False: 1]
  ------------------
 1568|      0|        return _PyStatus_ERR("failed to set builtin dict watcher");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 1569|      0|    }
 1570|       |
 1571|      1|    assert(!_PyErr_Occurred(tstate));
  ------------------
  |  Branch (1571:5): [True: 1, False: 0]
  ------------------
 1572|       |
 1573|      1|    if (is_main_interp) {
  ------------------
  |  Branch (1573:9): [True: 1, False: 0]
  ------------------
 1574|      1|        _PyRuntimeState_SetInitialized(interp->runtime, 1);
 1575|      1|    }
 1576|       |
 1577|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 1578|      1|}
pylifecycle.c:init_sys_streams:
 3153|      1|{
 3154|      1|    PyObject *iomod = NULL;
 3155|      1|    PyObject *std = NULL;
 3156|      1|    int fd;
 3157|      1|    PyObject * encoding_attr;
 3158|      1|    PyStatus res = _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 3159|      1|    const PyConfig *config = _PyInterpreterState_GetConfig(tstate->interp);
 3160|       |
 3161|       |    /* Check that stdin is not a directory
 3162|       |       Using shell redirection, you can redirect stdin to a directory,
 3163|       |       crashing the Python interpreter. Catch this common mistake here
 3164|       |       and output a useful error message. Note that under MS Windows,
 3165|       |       the shell already prevents that. */
 3166|      1|#ifndef MS_WINDOWS
 3167|      1|    struct _Py_stat_struct sb;
 3168|      1|    if (_Py_fstat_noraise(fileno(stdin), &sb) == 0 &&
  ------------------
  |  Branch (3168:9): [True: 1, False: 0]
  ------------------
 3169|      1|        S_ISDIR(sb.st_mode)) {
  ------------------
  |  Branch (3169:9): [True: 0, False: 1]
  ------------------
 3170|      0|        return _PyStatus_ERR("<stdin> is a directory, cannot continue");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 3171|      0|    }
 3172|      1|#endif
 3173|       |
 3174|      1|    if (!(iomod = PyImport_ImportModule("_io"))) {
  ------------------
  |  Branch (3174:9): [True: 0, False: 1]
  ------------------
 3175|      0|        goto error;
 3176|      0|    }
 3177|       |
 3178|       |    /* Set sys.stdin */
 3179|      1|    fd = fileno(stdin);
 3180|       |    /* Under some conditions stdin, stdout and stderr may not be connected
 3181|       |     * and fileno() may point to an invalid file descriptor. For example
 3182|       |     * GUI apps don't have valid standard streams by default.
 3183|       |     */
 3184|      1|    std = create_stdio(config, iomod, fd, 0, "<stdin>",
 3185|      1|                       config->stdio_encoding,
 3186|      1|                       config->stdio_errors);
 3187|      1|    if (std == NULL)
  ------------------
  |  Branch (3187:9): [True: 0, False: 1]
  ------------------
 3188|      0|        goto error;
 3189|      1|    PySys_SetObject("__stdin__", std);
 3190|      1|    _PySys_SetAttr(&_Py_ID(stdin), std);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3191|      1|    Py_DECREF(std);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3192|       |
 3193|       |    /* Set sys.stdout */
 3194|      1|    fd = fileno(stdout);
 3195|      1|    std = create_stdio(config, iomod, fd, 1, "<stdout>",
 3196|      1|                       config->stdio_encoding,
 3197|      1|                       config->stdio_errors);
 3198|      1|    if (std == NULL)
  ------------------
  |  Branch (3198:9): [True: 0, False: 1]
  ------------------
 3199|      0|        goto error;
 3200|      1|    PySys_SetObject("__stdout__", std);
 3201|      1|    _PySys_SetAttr(&_Py_ID(stdout), std);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3202|      1|    Py_DECREF(std);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3203|       |
 3204|      1|#if 1 /* Disable this if you have trouble debugging bootstrap stuff */
 3205|       |    /* Set sys.stderr, replaces the preliminary stderr */
 3206|      1|    fd = fileno(stderr);
 3207|      1|    std = create_stdio(config, iomod, fd, 1, "<stderr>",
 3208|      1|                       config->stdio_encoding,
 3209|      1|                       L"backslashreplace");
 3210|      1|    if (std == NULL)
  ------------------
  |  Branch (3210:9): [True: 0, False: 1]
  ------------------
 3211|      0|        goto error;
 3212|       |
 3213|       |    /* Same as hack above, pre-import stderr's codec to avoid recursion
 3214|       |       when import.c tries to write to stderr in verbose mode. */
 3215|      1|    encoding_attr = PyObject_GetAttrString(std, "encoding");
 3216|      1|    if (encoding_attr != NULL) {
  ------------------
  |  Branch (3216:9): [True: 1, False: 0]
  ------------------
 3217|      1|        const char *std_encoding = PyUnicode_AsUTF8(encoding_attr);
 3218|      1|        if (std_encoding != NULL) {
  ------------------
  |  Branch (3218:13): [True: 1, False: 0]
  ------------------
 3219|      1|            PyObject *codec_info = _PyCodec_Lookup(std_encoding);
 3220|      1|            Py_XDECREF(codec_info);
  ------------------
  |  |  524|      1|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3221|      1|        }
 3222|      1|        Py_DECREF(encoding_attr);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3223|      1|    }
 3224|      1|    _PyErr_Clear(tstate);  /* Not a fatal error if codec isn't available */
 3225|       |
 3226|      1|    if (PySys_SetObject("__stderr__", std) < 0) {
  ------------------
  |  Branch (3226:9): [True: 0, False: 1]
  ------------------
 3227|      0|        Py_DECREF(std);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3228|      0|        goto error;
 3229|      0|    }
 3230|      1|    if (_PySys_SetAttr(&_Py_ID(stderr), std) < 0) {
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3230:9): [True: 0, False: 1]
  ------------------
 3231|      0|        Py_DECREF(std);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3232|      0|        goto error;
 3233|      0|    }
 3234|      1|    Py_DECREF(std);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3235|      1|#endif
 3236|       |
 3237|      1|    goto done;
 3238|       |
 3239|      0|error:
 3240|      0|    res = _PyStatus_ERR("can't initialize sys standard streams");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 3241|       |
 3242|      1|done:
 3243|      1|    Py_XDECREF(iomod);
  ------------------
  |  |  524|      1|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3244|      1|    return res;
 3245|      0|}
pylifecycle.c:create_stdio:
 2981|      3|{
 2982|      3|    PyObject *buf = NULL, *stream = NULL, *text = NULL, *raw = NULL, *res;
 2983|      3|    const char* mode;
 2984|      3|    const char* newline;
 2985|      3|    PyObject *line_buffering, *write_through;
 2986|      3|    int buffering, isatty;
 2987|      3|    const int buffered_stdio = config->buffered_stdio;
 2988|       |
 2989|      3|    if (!_Py_IsValidFD(fd)) {
  ------------------
  |  Branch (2989:9): [True: 0, False: 3]
  ------------------
 2990|      0|        Py_RETURN_NONE;
  ------------------
  |  |  628|      0|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
 2991|      0|    }
 2992|       |
 2993|       |    /* stdin is always opened in buffered mode, first because it shouldn't
 2994|       |       make a difference in common use cases, second because TextIOWrapper
 2995|       |       depends on the presence of a read1() method which only exists on
 2996|       |       buffered streams.
 2997|       |    */
 2998|      3|    if (!buffered_stdio && write_mode)
  ------------------
  |  Branch (2998:9): [True: 0, False: 3]
  |  Branch (2998:28): [True: 0, False: 0]
  ------------------
 2999|      0|        buffering = 0;
 3000|      3|    else
 3001|      3|        buffering = -1;
 3002|      3|    if (write_mode)
  ------------------
  |  Branch (3002:9): [True: 2, False: 1]
  ------------------
 3003|      2|        mode = "wb";
 3004|      1|    else
 3005|      1|        mode = "rb";
 3006|      3|    buf = _PyObject_CallMethod(io, &_Py_ID(open), "isiOOOO",
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3007|      3|                               fd, mode, buffering,
 3008|      3|                               Py_None, Py_None, /* encoding, errors */
  ------------------
  |  |  616|      3|#  define Py_None (&_Py_NoneStruct)
  ------------------
                                             Py_None, Py_None, /* encoding, errors */
  ------------------
  |  |  616|      3|#  define Py_None (&_Py_NoneStruct)
  ------------------
 3009|      3|                               Py_None, Py_False); /* newline, closefd */
  ------------------
  |  |  616|      3|#  define Py_None (&_Py_NoneStruct)
  ------------------
                                             Py_None, Py_False); /* newline, closefd */
  ------------------
  |  |   25|      3|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3010|      3|    if (buf == NULL)
  ------------------
  |  Branch (3010:9): [True: 0, False: 3]
  ------------------
 3011|      0|        goto error;
 3012|       |
 3013|      3|    if (buffering) {
  ------------------
  |  Branch (3013:9): [True: 3, False: 0]
  ------------------
 3014|      3|        raw = PyObject_GetAttr(buf, &_Py_ID(raw));
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3015|      3|        if (raw == NULL)
  ------------------
  |  Branch (3015:13): [True: 0, False: 3]
  ------------------
 3016|      0|            goto error;
 3017|      3|    }
 3018|      0|    else {
 3019|      0|        raw = Py_NewRef(buf);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3020|      0|    }
 3021|       |
 3022|       |#ifdef HAVE_WINDOWS_CONSOLE_IO
 3023|       |    /* Windows console IO is always UTF-8 encoded */
 3024|       |    PyTypeObject *winconsoleio_type = (PyTypeObject *)PyImport_ImportModuleAttr(
 3025|       |            &_Py_ID(_io), &_Py_ID(_WindowsConsoleIO));
 3026|       |    if (winconsoleio_type == NULL) {
 3027|       |        goto error;
 3028|       |    }
 3029|       |    int is_subclass = PyObject_TypeCheck(raw, winconsoleio_type);
 3030|       |    Py_DECREF(winconsoleio_type);
 3031|       |    if (is_subclass) {
 3032|       |        encoding = L"utf-8";
 3033|       |    }
 3034|       |#endif
 3035|       |
 3036|      3|    text = PyUnicode_FromString(name);
 3037|      3|    if (text == NULL || PyObject_SetAttr(raw, &_Py_ID(name), text) < 0)
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3037:9): [True: 0, False: 3]
  |  Branch (3037:25): [True: 0, False: 3]
  ------------------
 3038|      0|        goto error;
 3039|      3|    res = PyObject_CallMethodNoArgs(raw, &_Py_ID(isatty));
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3040|      3|    if (res == NULL)
  ------------------
  |  Branch (3040:9): [True: 0, False: 3]
  ------------------
 3041|      0|        goto error;
 3042|      3|    isatty = PyObject_IsTrue(res);
 3043|      3|    Py_DECREF(res);
  ------------------
  |  |  430|      3|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3044|      3|    if (isatty == -1)
  ------------------
  |  Branch (3044:9): [True: 0, False: 3]
  ------------------
 3045|      0|        goto error;
 3046|      3|    if (!buffered_stdio)
  ------------------
  |  Branch (3046:9): [True: 0, False: 3]
  ------------------
 3047|      0|        write_through = Py_True;
  ------------------
  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3048|      3|    else
 3049|      3|        write_through = Py_False;
  ------------------
  |  |   25|      3|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3050|      3|    if (buffered_stdio && (isatty || fd == fileno(stderr)))
  ------------------
  |  Branch (3050:9): [True: 3, False: 0]
  |  Branch (3050:28): [True: 0, False: 3]
  |  Branch (3050:38): [True: 1, False: 2]
  ------------------
 3051|      1|        line_buffering = Py_True;
  ------------------
  |  |   26|      1|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3052|      2|    else
 3053|      2|        line_buffering = Py_False;
  ------------------
  |  |   25|      2|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3054|       |
 3055|      3|    Py_CLEAR(raw);
  ------------------
  |  |  484|      3|    do { \
  |  |  485|      3|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      3|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      3|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 3, False: 0]
  |  |  ------------------
  |  |  488|      3|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      3|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      3|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      3|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      3|        } \
  |  |  491|      3|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 3]
  |  |  ------------------
  ------------------
 3056|      3|    Py_CLEAR(text);
  ------------------
  |  |  484|      3|    do { \
  |  |  485|      3|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      3|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      3|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 3, False: 0]
  |  |  ------------------
  |  |  488|      3|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      3|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      3|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      3|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      3|        } \
  |  |  491|      3|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 3]
  |  |  ------------------
  ------------------
 3057|       |
 3058|       |#ifdef MS_WINDOWS
 3059|       |    /* sys.stdin: enable universal newline mode, translate "\r\n" and "\r"
 3060|       |       newlines to "\n".
 3061|       |       sys.stdout and sys.stderr: translate "\n" to "\r\n". */
 3062|       |    newline = NULL;
 3063|       |#else
 3064|       |    /* sys.stdin: split lines at "\n".
 3065|       |       sys.stdout and sys.stderr: don't translate newlines (use "\n"). */
 3066|      3|    newline = "\n";
 3067|      3|#endif
 3068|       |
 3069|      3|    PyObject *encoding_str = PyUnicode_FromWideChar(encoding, -1);
 3070|      3|    if (encoding_str == NULL) {
  ------------------
  |  Branch (3070:9): [True: 0, False: 3]
  ------------------
 3071|      0|        Py_CLEAR(buf);
  ------------------
  |  |  484|      0|    do { \
  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3072|      0|        goto error;
 3073|      0|    }
 3074|       |
 3075|      3|    PyObject *errors_str = PyUnicode_FromWideChar(errors, -1);
 3076|      3|    if (errors_str == NULL) {
  ------------------
  |  Branch (3076:9): [True: 0, False: 3]
  ------------------
 3077|      0|        Py_CLEAR(buf);
  ------------------
  |  |  484|      0|    do { \
  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3078|      0|        Py_CLEAR(encoding_str);
  ------------------
  |  |  484|      0|    do { \
  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3079|      0|        goto error;
 3080|      0|    }
 3081|       |
 3082|      3|    stream = _PyObject_CallMethod(io, &_Py_ID(TextIOWrapper), "OOOsOO",
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3083|      3|                                  buf, encoding_str, errors_str,
 3084|      3|                                  newline, line_buffering, write_through);
 3085|      3|    Py_CLEAR(buf);
  ------------------
  |  |  484|      3|    do { \
  |  |  485|      3|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      3|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      3|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 3, False: 0]
  |  |  ------------------
  |  |  488|      3|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      3|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      3|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      3|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      3|        } \
  |  |  491|      3|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 3]
  |  |  ------------------
  ------------------
 3086|      3|    Py_CLEAR(encoding_str);
  ------------------
  |  |  484|      3|    do { \
  |  |  485|      3|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      3|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      3|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 3, False: 0]
  |  |  ------------------
  |  |  488|      3|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      3|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      3|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      3|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      3|        } \
  |  |  491|      3|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 3]
  |  |  ------------------
  ------------------
 3087|      3|    Py_CLEAR(errors_str);
  ------------------
  |  |  484|      3|    do { \
  |  |  485|      3|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      3|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      3|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 3, False: 0]
  |  |  ------------------
  |  |  488|      3|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      3|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      3|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      3|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      3|        } \
  |  |  491|      3|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 3]
  |  |  ------------------
  ------------------
 3088|      3|    if (stream == NULL)
  ------------------
  |  Branch (3088:9): [True: 0, False: 3]
  ------------------
 3089|      0|        goto error;
 3090|       |
 3091|      3|    if (write_mode)
  ------------------
  |  Branch (3091:9): [True: 2, False: 1]
  ------------------
 3092|      2|        mode = "w";
 3093|      1|    else
 3094|      1|        mode = "r";
 3095|      3|    text = PyUnicode_FromString(mode);
 3096|      3|    if (!text || PyObject_SetAttr(stream, &_Py_ID(mode), text) < 0)
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3096:9): [True: 0, False: 3]
  |  Branch (3096:18): [True: 0, False: 3]
  ------------------
 3097|      0|        goto error;
 3098|      3|    Py_CLEAR(text);
  ------------------
  |  |  484|      3|    do { \
  |  |  485|      3|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      3|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      3|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      3|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 3, False: 0]
  |  |  ------------------
  |  |  488|      3|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      3|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      3|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      3|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      3|        } \
  |  |  491|      3|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 3]
  |  |  ------------------
  ------------------
 3099|      3|    return stream;
 3100|       |
 3101|      0|error:
 3102|      0|    Py_XDECREF(buf);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3103|      0|    Py_XDECREF(stream);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3104|      0|    Py_XDECREF(text);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3105|      0|    Py_XDECREF(raw);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3106|       |
 3107|      0|    if (PyErr_ExceptionMatches(PyExc_OSError) && !_Py_IsValidFD(fd)) {
  ------------------
  |  Branch (3107:9): [True: 0, False: 0]
  |  Branch (3107:50): [True: 0, False: 0]
  ------------------
 3108|       |        /* Issue #24891: the file descriptor was closed after the first
 3109|       |           _Py_IsValidFD() check was called. Ignore the OSError and set the
 3110|       |           stream to None. */
 3111|      0|        PyErr_Clear();
 3112|      0|        Py_RETURN_NONE;
  ------------------
  |  |  628|      0|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
 3113|      0|    }
 3114|      0|    return NULL;
 3115|      0|}
pylifecycle.c:init_set_builtins_open:
 3120|      1|{
 3121|      1|    PyObject *wrapper;
 3122|      1|    PyObject *bimod = NULL;
 3123|      1|    PyStatus res = _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 3124|       |
 3125|      1|    if (!(bimod = PyImport_ImportModule("builtins"))) {
  ------------------
  |  Branch (3125:9): [True: 0, False: 1]
  ------------------
 3126|      0|        goto error;
 3127|      0|    }
 3128|       |
 3129|      1|    if (!(wrapper = PyImport_ImportModuleAttrString("_io", "open"))) {
  ------------------
  |  Branch (3129:9): [True: 0, False: 1]
  ------------------
 3130|      0|        goto error;
 3131|      0|    }
 3132|       |
 3133|       |    /* Set builtins.open */
 3134|      1|    if (PyObject_SetAttrString(bimod, "open", wrapper) == -1) {
  ------------------
  |  Branch (3134:9): [True: 0, False: 1]
  ------------------
 3135|      0|        Py_DECREF(wrapper);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3136|      0|        goto error;
 3137|      0|    }
 3138|      1|    Py_DECREF(wrapper);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3139|      1|    goto done;
 3140|       |
 3141|      0|error:
 3142|      0|    res = _PyStatus_ERR("can't initialize io.open");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 3143|       |
 3144|      1|done:
 3145|      1|    Py_XDECREF(bimod);
  ------------------
  |  |  524|      1|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3146|      1|    return res;
 3147|      0|}
pylifecycle.c:add_main_module:
 2914|      1|{
 2915|      1|    PyObject *m, *d;
 2916|      1|    m = PyImport_AddModuleObject(&_Py_ID(__main__));
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2917|      1|    if (m == NULL)
  ------------------
  |  Branch (2917:9): [True: 0, False: 1]
  ------------------
 2918|      0|        return _PyStatus_ERR("can't create __main__ module");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 2919|       |
 2920|      1|    d = PyModule_GetDict(m);
 2921|       |
 2922|      1|    int has_builtins = PyDict_ContainsString(d, "__builtins__");
 2923|      1|    if (has_builtins < 0) {
  ------------------
  |  Branch (2923:9): [True: 0, False: 1]
  ------------------
 2924|      0|        return _PyStatus_ERR("Failed to test __main__.__builtins__");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 2925|      0|    }
 2926|      1|    if (!has_builtins) {
  ------------------
  |  Branch (2926:9): [True: 1, False: 0]
  ------------------
 2927|      1|        PyObject *bimod = PyImport_ImportModule("builtins");
 2928|      1|        if (bimod == NULL) {
  ------------------
  |  Branch (2928:13): [True: 0, False: 1]
  ------------------
 2929|      0|            return _PyStatus_ERR("Failed to retrieve builtins module");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 2930|      0|        }
 2931|      1|        if (PyDict_SetItemString(d, "__builtins__", bimod) < 0) {
  ------------------
  |  Branch (2931:13): [True: 0, False: 1]
  ------------------
 2932|      0|            return _PyStatus_ERR("Failed to initialize __main__.__builtins__");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 2933|      0|        }
 2934|      1|        Py_DECREF(bimod);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2935|      1|    }
 2936|       |
 2937|       |    /* Main is a little special - BuiltinImporter is the most appropriate
 2938|       |     * initial setting for its __loader__ attribute. A more suitable value
 2939|       |     * will be set if __main__ gets further initialized later in the startup
 2940|       |     * process.
 2941|       |     */
 2942|      1|    PyObject *loader;
 2943|      1|    if (PyDict_GetItemStringRef(d, "__loader__", &loader) < 0) {
  ------------------
  |  Branch (2943:9): [True: 0, False: 1]
  ------------------
 2944|      0|        return _PyStatus_ERR("Failed to test __main__.__loader__");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 2945|      0|    }
 2946|      1|    int has_loader = !(loader == NULL || loader == Py_None);
  ------------------
  |  |  616|      1|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (2946:24): [True: 0, False: 1]
  |  Branch (2946:42): [True: 1, False: 0]
  ------------------
 2947|      1|    Py_XDECREF(loader);
  ------------------
  |  |  524|      1|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2948|      1|    if (!has_loader) {
  ------------------
  |  Branch (2948:9): [True: 1, False: 0]
  ------------------
 2949|      1|        PyObject *loader = _PyImport_GetImportlibLoader(interp,
 2950|      1|                                                        "BuiltinImporter");
 2951|      1|        if (loader == NULL) {
  ------------------
  |  Branch (2951:13): [True: 0, False: 1]
  ------------------
 2952|      0|            return _PyStatus_ERR("Failed to retrieve BuiltinImporter");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 2953|      0|        }
 2954|      1|        if (PyDict_SetItemString(d, "__loader__", loader) < 0) {
  ------------------
  |  Branch (2954:13): [True: 0, False: 1]
  ------------------
 2955|      0|            return _PyStatus_ERR("Failed to initialize __main__.__loader__");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 2956|      0|        }
 2957|      1|        Py_DECREF(loader);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2958|      1|    }
 2959|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 2960|      1|}
pylifecycle.c:init_import_site:
 2966|      1|{
 2967|      1|    PyObject *m;
 2968|      1|    m = PyImport_ImportModule("site");
 2969|      1|    if (m == NULL) {
  ------------------
  |  Branch (2969:9): [True: 0, False: 1]
  ------------------
 2970|      0|        return _PyStatus_ERR("Failed to import the site module");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 2971|      0|    }
 2972|      1|    Py_DECREF(m);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2973|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 2974|      1|}
pylifecycle.c:emit_stderr_warning_for_legacy_locale:
  239|      1|{
  240|      1|    const PyPreConfig *preconfig = &runtime->preconfig;
  241|      1|    if (preconfig->coerce_c_locale_warn && _Py_LegacyLocaleDetected(1)) {
  ------------------
  |  Branch (241:9): [True: 0, False: 1]
  |  Branch (241:44): [True: 0, False: 0]
  ------------------
  242|      0|        PySys_FormatStderr("%s", _C_LOCALE_WARNING);
  243|      0|    }
  244|      1|}

_PyRuntimeState_Init:
  353|      1|{
  354|       |    /* We preserve the hook across init, because there is
  355|       |       currently no public API to set it between runtime
  356|       |       initialization and interpreter initialization. */
  357|      1|    void *open_code_hook = runtime->open_code_hook;
  358|      1|    void *open_code_userdata = runtime->open_code_userdata;
  359|      1|    _Py_AuditHookEntry *audit_hook_head = runtime->audit_hooks.head;
  360|       |    // bpo-42882: Preserve next_index value if Py_Initialize()/Py_Finalize()
  361|       |    // is called multiple times.
  362|      1|    Py_ssize_t unicode_next_index = runtime->unicode_state.ids.next_index;
  363|       |
  364|      1|    if (runtime->_initialized) {
  ------------------
  |  Branch (364:9): [True: 0, False: 1]
  ------------------
  365|       |        // Py_Initialize() must be running again.
  366|       |        // Reset to _PyRuntimeState_INIT.
  367|      0|        memcpy(runtime, &initial, sizeof(*runtime));
  368|       |        // Preserve the cookie from the original runtime.
  369|      0|        memcpy(runtime->debug_offsets.cookie, _Py_Debug_Cookie, 8);
  ------------------
  |  |   12|      0|#define _Py_Debug_Cookie "xdebugpy"
  ------------------
  370|      0|        assert(!runtime->_initialized);
  ------------------
  |  Branch (370:9): [True: 0, False: 0]
  ------------------
  371|      0|    }
  372|       |
  373|      1|    PyStatus status = _PyTime_Init(&runtime->time);
  374|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  375|      0|        return status;
  376|      0|    }
  377|       |
  378|      1|    init_runtime(runtime, open_code_hook, open_code_userdata, audit_hook_head,
  379|      1|                 unicode_next_index);
  380|       |
  381|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
  382|      1|}
_PyInterpreterState_Enable:
  443|      1|{
  444|      1|    struct pyinterpreters *interpreters = &runtime->interpreters;
  445|      1|    interpreters->next_id = 0;
  446|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
  447|      1|}
_PyInterpreterState_New:
  679|      1|{
  680|      1|    *pinterp = NULL;
  681|       |
  682|       |    // Don't get runtime from tstate since tstate can be NULL
  683|      1|    _PyRuntimeState *runtime = &_PyRuntime;
  684|       |
  685|       |    // tstate is NULL when pycore_create_interpreter() calls
  686|       |    // _PyInterpreterState_New() to create the main interpreter.
  687|      1|    if (tstate != NULL) {
  ------------------
  |  Branch (687:9): [True: 0, False: 1]
  ------------------
  688|      0|        if (_PySys_Audit(tstate, "cpython.PyInterpreterState_New", NULL) < 0) {
  ------------------
  |  Branch (688:13): [True: 0, False: 0]
  ------------------
  689|      0|            return _PyStatus_ERR("sys.audit failed");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
  690|      0|        }
  691|      0|    }
  692|       |
  693|       |    /* We completely serialize creation of multiple interpreters, since
  694|       |       it simplifies things here and blocking concurrent calls isn't a problem.
  695|       |       Regardless, we must fully block subinterpreter creation until
  696|       |       after the main interpreter is created. */
  697|      1|    HEAD_LOCK(runtime);
  ------------------
  |  |  266|      1|    PyMutex_LockFlags(&(runtime)->interpreters.mutex, _Py_LOCK_DONT_DETACH)
  ------------------
  698|       |
  699|      1|    struct pyinterpreters *interpreters = &runtime->interpreters;
  700|      1|    int64_t id = interpreters->next_id;
  701|      1|    interpreters->next_id += 1;
  702|       |
  703|       |    // Allocate the interpreter and add it to the runtime state.
  704|      1|    PyInterpreterState *interp;
  705|      1|    PyStatus status;
  706|      1|    PyInterpreterState *old_head = interpreters->head;
  707|      1|    if (old_head == NULL) {
  ------------------
  |  Branch (707:9): [True: 1, False: 0]
  ------------------
  708|       |        // We are creating the main interpreter.
  709|      1|        assert(interpreters->main == NULL);
  ------------------
  |  Branch (709:9): [True: 1, False: 0]
  ------------------
  710|      1|        assert(id == 0);
  ------------------
  |  Branch (710:9): [True: 1, False: 0]
  ------------------
  711|       |
  712|      1|        interp = &runtime->_main_interpreter;
  713|      1|        assert(interp->id == 0);
  ------------------
  |  Branch (713:9): [True: 1, False: 0]
  ------------------
  714|      1|        assert(interp->next == NULL);
  ------------------
  |  Branch (714:9): [True: 1, False: 0]
  ------------------
  715|       |
  716|      1|        interpreters->main = interp;
  717|      1|    }
  718|      0|    else {
  719|      0|        assert(interpreters->main != NULL);
  ------------------
  |  Branch (719:9): [True: 0, False: 0]
  ------------------
  720|      0|        assert(id != 0);
  ------------------
  |  Branch (720:9): [True: 0, False: 0]
  ------------------
  721|       |
  722|      0|        interp = alloc_interpreter();
  723|      0|        if (interp == NULL) {
  ------------------
  |  Branch (723:13): [True: 0, False: 0]
  ------------------
  724|      0|            status = _PyStatus_NO_MEMORY();
  ------------------
  |  |   33|      0|#define _PyStatus_NO_MEMORY() _PyStatus_ERR(_PyStatus_NO_MEMORY_ERRMSG)
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  ------------------
  725|      0|            goto error;
  726|      0|        }
  727|       |        // Set to _PyInterpreterState_INIT.
  728|      0|        memcpy(interp, &initial._main_interpreter, sizeof(*interp));
  729|       |
  730|      0|        if (id < 0) {
  ------------------
  |  Branch (730:13): [True: 0, False: 0]
  ------------------
  731|       |            /* overflow or Py_Initialize() not called yet! */
  732|      0|            status = _PyStatus_ERR("failed to get an interpreter ID");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
  733|      0|            goto error;
  734|      0|        }
  735|      0|    }
  736|      1|    interpreters->head = interp;
  737|       |
  738|      1|    long whence = _PyInterpreterState_WHENCE_UNKNOWN;
  ------------------
  |  |   17|      1|#define _PyInterpreterState_WHENCE_UNKNOWN 0
  ------------------
  739|      1|    status = init_interpreter(interp, runtime,
  740|      1|                              id, old_head, whence);
  741|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
  742|      0|        goto error;
  743|      0|    }
  744|       |
  745|      1|    HEAD_UNLOCK(runtime);
  ------------------
  |  |  268|      1|    PyMutex_Unlock(&(runtime)->interpreters.mutex)
  |  |  ------------------
  |  |  |  |   70|      1|#define PyMutex_Unlock _PyMutex_Unlock
  |  |  ------------------
  ------------------
  746|       |
  747|      1|    assert(interp != NULL);
  ------------------
  |  Branch (747:5): [True: 1, False: 0]
  ------------------
  748|      1|    *pinterp = interp;
  749|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
  750|       |
  751|      0|error:
  752|      0|    HEAD_UNLOCK(runtime);
  ------------------
  |  |  268|      0|    PyMutex_Unlock(&(runtime)->interpreters.mutex)
  |  |  ------------------
  |  |  |  |   70|      0|#define PyMutex_Unlock _PyMutex_Unlock
  |  |  ------------------
  ------------------
  753|       |
  754|      0|    if (interp != NULL) {
  ------------------
  |  Branch (754:9): [True: 0, False: 0]
  ------------------
  755|      0|        free_interpreter(interp);
  756|      0|    }
  757|      0|    return status;
  758|      1|}
_PyInterpreterState_SetWhence:
 1190|      1|{
 1191|      1|    assert(interp->_whence != _PyInterpreterState_WHENCE_NOTSET);
  ------------------
  |  Branch (1191:5): [True: 1, False: 0]
  ------------------
 1192|      1|    assert(check_interpreter_whence(whence) == 0);
  ------------------
  |  Branch (1192:5): [True: 1, False: 0]
  ------------------
 1193|      1|    interp->_whence = whence;
 1194|      1|}
_PyThreadState_New:
 1700|      1|{
 1701|      1|    return new_threadstate(interp, whence);
 1702|      1|}
_PyThreadState_Attach:
 2219|    328|{
 2220|       |#if defined(Py_DEBUG)
 2221|       |    // This is called from PyEval_RestoreThread(). Similar
 2222|       |    // to it, we need to ensure errno doesn't change.
 2223|       |    int err = errno;
 2224|       |#endif
 2225|       |
 2226|    328|    _Py_EnsureTstateNotNULL(tstate);
  ------------------
  |  |  196|    328|    _Py_EnsureFuncTstateNotNULL(__func__, (tstate))
  ------------------
 2227|    328|    if (current_fast_get() != NULL) {
  ------------------
  |  Branch (2227:9): [True: 0, False: 328]
  ------------------
 2228|      0|        Py_FatalError("non-NULL old thread state");
  ------------------
  |  |  133|      0|#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))
  ------------------
 2229|      0|    }
 2230|    328|    _PyThreadStateImpl *_tstate = (_PyThreadStateImpl *)tstate;
 2231|    328|    if (_tstate->c_stack_hard_limit == 0) {
  ------------------
  |  Branch (2231:9): [True: 1, False: 327]
  ------------------
 2232|      1|        _Py_InitializeRecursionLimits(tstate);
 2233|      1|    }
 2234|       |
 2235|    328|    while (1) {
  ------------------
  |  Branch (2235:12): [True: 328, Folded]
  ------------------
 2236|    328|        _PyEval_AcquireLock(tstate);
 2237|       |
 2238|       |        // XXX assert(tstate_is_alive(tstate));
 2239|    328|        current_fast_set(&_PyRuntime, tstate);
 2240|    328|        if (!tstate_try_attach(tstate)) {
  ------------------
  |  Branch (2240:13): [True: 0, False: 328]
  ------------------
 2241|      0|            tstate_wait_attach(tstate);
 2242|      0|        }
 2243|    328|        tstate_activate(tstate);
 2244|       |
 2245|       |#ifdef Py_GIL_DISABLED
 2246|       |        if (_PyEval_IsGILEnabled(tstate) && !tstate->holds_gil) {
 2247|       |            // The GIL was enabled between our call to _PyEval_AcquireLock()
 2248|       |            // and when we attached (the GIL can't go from enabled to disabled
 2249|       |            // here because only a thread holding the GIL can disable
 2250|       |            // it). Detach and try again.
 2251|       |            tstate_set_detached(tstate, _Py_THREAD_DETACHED);
 2252|       |            tstate_deactivate(tstate);
 2253|       |            current_fast_clear(&_PyRuntime);
 2254|       |            continue;
 2255|       |        }
 2256|       |        _Py_qsbr_attach(((_PyThreadStateImpl *)tstate)->qsbr);
 2257|       |#endif
 2258|    328|        break;
 2259|    328|    }
 2260|       |
 2261|       |    // Resume previous critical section. This acquires the lock(s) from the
 2262|       |    // top-most critical section.
 2263|    328|    if (tstate->critical_section != 0) {
  ------------------
  |  Branch (2263:9): [True: 0, False: 328]
  ------------------
 2264|      0|        _PyCriticalSection_Resume(tstate);
 2265|      0|    }
 2266|       |
 2267|       |#ifdef Py_STATS
 2268|       |    _PyStats_Attach((_PyThreadStateImpl *)tstate);
 2269|       |#endif
 2270|       |
 2271|       |#if defined(Py_DEBUG)
 2272|       |    errno = err;
 2273|       |#endif
 2274|    328|}
_PyThreadState_Detach:
 2296|    327|{
 2297|    327|    detach_thread(tstate, _Py_THREAD_DETACHED);
  ------------------
  |  |   46|    327|#define _Py_THREAD_DETACHED         0
  ------------------
 2298|    327|}
PyThreadState_Get:
 2587|    138|{
 2588|    138|    PyThreadState *tstate = current_fast_get();
 2589|    138|    _Py_EnsureTstateNotNULL(tstate);
  ------------------
  |  |  196|    138|    _Py_EnsureFuncTstateNotNULL(__func__, (tstate))
  ------------------
 2590|    138|    return tstate;
 2591|    138|}
_PyThreadState_Bind:
 2615|      1|{
 2616|       |    // gh-104690: If Python is being finalized and PyInterpreterState_Delete()
 2617|       |    // was called, tstate becomes a dangling pointer.
 2618|      1|    assert(_PyThreadState_CheckConsistency(tstate));
  ------------------
  |  Branch (2618:5): [True: 1, False: 0]
  ------------------
 2619|       |
 2620|      1|    bind_tstate(tstate);
 2621|       |    // This makes sure there's a gilstate tstate bound
 2622|       |    // as soon as possible.
 2623|      1|    if (gilstate_get() == NULL) {
  ------------------
  |  Branch (2623:9): [True: 1, False: 0]
  ------------------
 2624|      1|        bind_gilstate_tstate(tstate);
 2625|      1|    }
 2626|      1|}
_PyGILState_Init:
 2814|      1|{
 2815|      1|    if (!_Py_IsMainInterpreter(interp)) {
  ------------------
  |  Branch (2815:9): [True: 0, False: 1]
  ------------------
 2816|       |        /* Currently, PyGILState is shared by all interpreters. The main
 2817|       |         * interpreter is responsible to initialize it. */
 2818|      0|        return _PyStatus_OK();
  ------------------
  |  |   24|      0|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 2819|      0|    }
 2820|      1|    _PyRuntimeState *runtime = interp->runtime;
 2821|      1|    assert(gilstate_get() == NULL);
  ------------------
  |  Branch (2821:5): [True: 1, False: 0]
  ------------------
 2822|      1|    assert(runtime->gilstate.autoInterpreterState == NULL);
  ------------------
  |  Branch (2822:5): [True: 1, False: 0]
  ------------------
 2823|      1|    runtime->gilstate.autoInterpreterState = interp;
 2824|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 2825|      1|}
_PyGILState_SetTstate:
 2842|      1|{
 2843|       |    /* must init with valid states */
 2844|      1|    assert(tstate != NULL);
  ------------------
  |  Branch (2844:5): [True: 1, False: 0]
  ------------------
 2845|      1|    assert(tstate->interp != NULL);
  ------------------
  |  Branch (2845:5): [True: 1, False: 0]
  ------------------
 2846|       |
 2847|      1|    if (!_Py_IsMainInterpreter(tstate->interp)) {
  ------------------
  |  Branch (2847:9): [True: 0, False: 1]
  ------------------
 2848|       |        /* Currently, PyGILState is shared by all interpreters. The main
 2849|       |         * interpreter is responsible to initialize it. */
 2850|      0|        return;
 2851|      0|    }
 2852|       |
 2853|      1|#ifndef NDEBUG
 2854|      1|    _PyRuntimeState *runtime = tstate->interp->runtime;
 2855|       |
 2856|      1|    assert(runtime->gilstate.autoInterpreterState == tstate->interp);
  ------------------
  |  Branch (2856:5): [True: 1, False: 0]
  ------------------
 2857|      1|    assert(gilstate_get() == tstate);
  ------------------
  |  Branch (2857:5): [True: 1, False: 0]
  ------------------
 2858|      1|    assert(tstate->gilstate_counter == 1);
  ------------------
  |  Branch (2858:5): [True: 1, False: 0]
  ------------------
 2859|      1|#endif
 2860|      1|}
_PyInterpreterState_IsSpecializationEnabled:
 3058|     77|{
 3059|     77|    return interp->eval_frame == NULL
  ------------------
  |  Branch (3059:12): [True: 77, False: 0]
  ------------------
 3060|      0|        || interp->eval_frame_allow_specialization;
  ------------------
  |  Branch (3060:12): [True: 0, False: 0]
  ------------------
 3061|     77|}
_PyInterpreterState_GetConfig:
 3066|    897|{
 3067|    897|    return &interp->config;
 3068|    897|}
_Py_GetConfig:
 3073|    745|{
 3074|    745|    PyThreadState *tstate = current_fast_get();
 3075|    745|    _Py_EnsureTstateNotNULL(tstate);
  ------------------
  |  |  196|    745|    _Py_EnsureFuncTstateNotNULL(__func__, (tstate))
  ------------------
 3076|    745|    return _PyInterpreterState_GetConfig(tstate->interp);
 3077|    745|}
_PyThreadState_PushFrame:
 3127|  1.11k|{
 3128|  1.11k|    assert(size < INT_MAX/sizeof(PyObject *));
  ------------------
  |  Branch (3128:5): [True: 1.11k, False: 0]
  ------------------
 3129|  1.11k|    if (_PyThreadState_HasStackSpace(tstate, (int)size)) {
  ------------------
  |  Branch (3129:9): [True: 1.11k, False: 1]
  ------------------
 3130|  1.11k|        _PyInterpreterFrame *res = (_PyInterpreterFrame *)tstate->datastack_top;
 3131|  1.11k|        tstate->datastack_top += size;
 3132|  1.11k|        return res;
 3133|  1.11k|    }
 3134|      1|    return (_PyInterpreterFrame *)push_chunk(tstate, (int)size);
 3135|  1.11k|}
_PyThreadState_PopFrame:
 3139|  1.73k|{
 3140|  1.73k|    assert(tstate->datastack_chunk);
  ------------------
  |  Branch (3140:5): [True: 1.73k, False: 0]
  ------------------
 3141|  1.73k|    PyObject **base = (PyObject **)frame;
 3142|  1.73k|    if (base == &tstate->datastack_chunk->data[0]) {
  ------------------
  |  Branch (3142:9): [True: 0, False: 1.73k]
  ------------------
 3143|      0|        _PyStackChunk *chunk = tstate->datastack_chunk;
 3144|      0|        _PyStackChunk *previous = chunk->previous;
 3145|      0|        _PyStackChunk *cached = tstate->datastack_cached_chunk;
 3146|       |        // push_chunk ensures that the root chunk is never popped:
 3147|      0|        assert(previous);
  ------------------
  |  Branch (3147:9): [True: 0, False: 0]
  ------------------
 3148|      0|        tstate->datastack_top = &previous->data[previous->top];
 3149|      0|        tstate->datastack_chunk = previous;
 3150|      0|        tstate->datastack_limit = (PyObject **)(((char *)previous) + previous->size);
 3151|      0|        chunk->previous = NULL;
 3152|      0|        if (cached != NULL) {
  ------------------
  |  Branch (3152:13): [True: 0, False: 0]
  ------------------
 3153|      0|            _PyObject_VirtualFree(cached, cached->size);
 3154|      0|        }
 3155|      0|        tstate->datastack_cached_chunk = chunk;
 3156|      0|    }
 3157|  1.73k|    else {
 3158|  1.73k|        assert(tstate->datastack_top);
  ------------------
  |  Branch (3158:9): [True: 1.73k, False: 0]
  ------------------
 3159|  1.73k|        assert(tstate->datastack_top >= base);
  ------------------
  |  Branch (3159:9): [True: 1.73k, False: 0]
  ------------------
 3160|  1.73k|        tstate->datastack_top = base;
 3161|  1.73k|    }
 3162|  1.73k|}
_PyThreadState_CheckConsistency:
 3175|    657|{
 3176|    657|    assert(!_PyMem_IsPtrFreed(tstate));
  ------------------
  |  Branch (3176:5): [True: 657, False: 0]
  ------------------
 3177|    657|    assert(!_PyMem_IsPtrFreed(tstate->interp));
  ------------------
  |  Branch (3177:5): [True: 657, False: 0]
  ------------------
 3178|    657|    return 1;
 3179|    657|}
_PyThreadState_MustExit:
 3193|    656|{
 3194|    656|    int state = _Py_atomic_load_int_relaxed(&tstate->state);
 3195|    656|    return state == _Py_THREAD_SHUTTING_DOWN;
  ------------------
  |  |   49|    656|#define _Py_THREAD_SHUTTING_DOWN    3
  ------------------
 3196|    656|}
_Py_IsMainThread:
 3286|    359|{
 3287|    359|    unsigned long thread = PyThread_get_thread_ident();
 3288|    359|    return (thread == _PyRuntime.main_thread);
 3289|    359|}
_PyInterpreterState_Main:
 3294|    259|{
 3295|    259|    return _PyRuntime.interpreters.main;
 3296|    259|}
pystate.c:current_fast_get:
   85|  1.53k|{
   86|  1.53k|    return _Py_tss_tstate;
   87|  1.53k|}
pystate.c:init_runtime:
  331|      1|{
  332|      1|    assert(!runtime->preinitializing);
  ------------------
  |  Branch (332:5): [True: 1, False: 0]
  ------------------
  333|      1|    assert(!runtime->preinitialized);
  ------------------
  |  Branch (333:5): [True: 1, False: 0]
  ------------------
  334|      1|    assert(!_PyRuntimeState_GetCoreInitialized(runtime));
  ------------------
  |  Branch (334:5): [True: 1, False: 0]
  ------------------
  335|      1|    assert(!_PyRuntimeState_GetInitialized(runtime));
  ------------------
  |  Branch (335:5): [True: 1, False: 0]
  ------------------
  336|      1|    assert(!runtime->_initialized);
  ------------------
  |  Branch (336:5): [True: 1, False: 0]
  ------------------
  337|       |
  338|      1|    runtime->open_code_hook = open_code_hook;
  339|      1|    runtime->open_code_userdata = open_code_userdata;
  340|      1|    runtime->audit_hooks.head = audit_hook_head;
  341|       |
  342|      1|    PyPreConfig_InitPythonConfig(&runtime->preconfig);
  343|       |
  344|       |    // Set it to the ID of the main thread of the main interpreter.
  345|      1|    runtime->main_thread = PyThread_get_thread_ident();
  346|       |
  347|      1|    runtime->unicode_state.ids.next_index = unicode_next_index;
  348|      1|    runtime->_initialized = 1;
  349|      1|}
pystate.c:init_interpreter:
  546|      1|{
  547|      1|    if (interp->_initialized) {
  ------------------
  |  Branch (547:9): [True: 0, False: 1]
  ------------------
  548|      0|        return _PyStatus_ERR("interpreter already initialized");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
  549|      0|    }
  550|       |
  551|      1|    assert(interp->_whence == _PyInterpreterState_WHENCE_NOTSET);
  ------------------
  |  Branch (551:5): [True: 1, False: 0]
  ------------------
  552|      1|    assert(check_interpreter_whence(whence) == 0);
  ------------------
  |  Branch (552:5): [True: 1, False: 0]
  ------------------
  553|      1|    interp->_whence = whence;
  554|       |
  555|      1|    assert(runtime != NULL);
  ------------------
  |  Branch (555:5): [True: 1, False: 0]
  ------------------
  556|      1|    interp->runtime = runtime;
  557|       |
  558|      1|    assert(id > 0 || (id == 0 && interp == runtime->interpreters.main));
  ------------------
  |  Branch (558:5): [True: 1, False: 0]
  |  Branch (558:5): [True: 1, False: 0]
  |  Branch (558:5): [True: 0, False: 1]
  ------------------
  559|      1|    interp->id = id;
  560|       |
  561|      1|    interp->id_refcount = 0;
  562|       |
  563|      1|    assert(runtime->interpreters.head == interp);
  ------------------
  |  Branch (563:5): [True: 1, False: 0]
  ------------------
  564|      1|    assert(next != NULL || (interp == runtime->interpreters.main));
  ------------------
  |  Branch (564:5): [True: 0, False: 1]
  |  Branch (564:5): [True: 1, False: 0]
  ------------------
  565|      1|    interp->next = next;
  566|       |
  567|      1|    interp->threads.preallocated = &interp->_initial_thread;
  568|       |
  569|       |    // We would call _PyObject_InitState() at this point
  570|       |    // if interp->feature_flags were alredy set.
  571|       |
  572|      1|    _PyEval_InitState(interp);
  573|      1|    _PyGC_InitState(&interp->gc);
  574|      1|    PyConfig_InitPythonConfig(&interp->config);
  575|      1|    _PyType_InitCache(interp);
  576|       |#ifdef Py_GIL_DISABLED
  577|       |    _Py_brc_init_state(interp);
  578|       |#endif
  579|       |
  580|      1|    llist_init(&interp->mem_free_queue.head);
  581|      1|    llist_init(&interp->asyncio_tasks_head);
  582|      1|    interp->asyncio_tasks_lock = (PyMutex){0};
  583|     17|    for (int i = 0; i < _PY_MONITORING_UNGROUPED_EVENTS; i++) {
  ------------------
  |  |   75|     17|#define _PY_MONITORING_UNGROUPED_EVENTS 16
  ------------------
  |  Branch (583:21): [True: 16, False: 1]
  ------------------
  584|     16|        interp->monitors.tools[i] = 0;
  585|     16|    }
  586|      9|    for (int t = 0; t < PY_MONITORING_TOOL_IDS; t++) {
  ------------------
  |  |   72|      9|#define  PY_MONITORING_TOOL_IDS 8
  ------------------
  |  Branch (586:21): [True: 8, False: 1]
  ------------------
  587|    160|        for (int e = 0; e < _PY_MONITORING_EVENTS; e++) {
  ------------------
  |  |   77|    160|#define _PY_MONITORING_EVENTS 19
  ------------------
  |  Branch (587:25): [True: 152, False: 8]
  ------------------
  588|    152|            interp->monitoring_callables[t][e] = NULL;
  589|       |
  590|    152|        }
  591|      8|        interp->monitoring_tool_versions[t] = 0;
  592|      8|    }
  593|      1|    interp->_code_object_generation = 0;
  594|      1|    interp->jit = false;
  595|      1|    interp->compiling = false;
  596|      1|    interp->executor_blooms = NULL;
  597|      1|    interp->executor_ptrs = NULL;
  598|      1|    interp->executor_count = 0;
  599|      1|    interp->executor_capacity = 0;
  600|      1|    interp->executor_deletion_list_head = NULL;
  601|      1|    interp->executor_creation_counter = JIT_CLEANUP_THRESHOLD;
  ------------------
  |  |  309|      1|#define JIT_CLEANUP_THRESHOLD 1000
  ------------------
  602|       |
  603|       |    // Initialize optimization configuration from environment variables
  604|       |    // PYTHON_JIT_STRESS sets aggressive defaults for testing, but can be overridden
  605|      1|    uint16_t jump_default = JUMP_BACKWARD_INITIAL_VALUE;
  ------------------
  |  |  128|      1|#define JUMP_BACKWARD_INITIAL_VALUE 4000
  ------------------
  606|      1|    uint16_t resume_default = RESUME_INITIAL_VALUE;
  ------------------
  |  |  142|      1|#define RESUME_INITIAL_VALUE 8190
  ------------------
  607|      1|    uint16_t side_exit_default = SIDE_EXIT_INITIAL_VALUE;
  ------------------
  |  |  156|      1|#define SIDE_EXIT_INITIAL_VALUE 4000
  ------------------
  608|       |
  609|      1|    if (is_env_enabled("PYTHON_JIT_STRESS")) {
  ------------------
  |  Branch (609:9): [True: 0, False: 1]
  ------------------
  610|      0|        jump_default = 63;
  611|      0|        side_exit_default = 63;
  612|      0|        resume_default = 127;
  613|      0|    }
  614|       |
  615|      1|    init_policy(&interp->opt_config.jump_backward_initial_value,
  616|      1|                "PYTHON_JIT_JUMP_BACKWARD_INITIAL_VALUE",
  617|      1|                jump_default, 1, MAX_VALUE);
  ------------------
  |  |   41|      1|#define MAX_VALUE 0x1FFF
  ------------------
  618|      1|    init_policy(&interp->opt_config.jump_backward_initial_backoff,
  619|      1|                "PYTHON_JIT_JUMP_BACKWARD_INITIAL_BACKOFF",
  620|      1|                JUMP_BACKWARD_INITIAL_BACKOFF, 0, MAX_BACKOFF);
  ------------------
  |  |  129|      1|#define JUMP_BACKWARD_INITIAL_BACKOFF 6
  ------------------
                              JUMP_BACKWARD_INITIAL_BACKOFF, 0, MAX_BACKOFF);
  ------------------
  |  |   39|      1|#define MAX_BACKOFF 6
  ------------------
  621|      1|    init_policy(&interp->opt_config.resume_initial_value,
  622|      1|                "PYTHON_JIT_RESUME_INITIAL_VALUE",
  623|      1|                resume_default, 1, MAX_VALUE);
  ------------------
  |  |   41|      1|#define MAX_VALUE 0x1FFF
  ------------------
  624|      1|    init_policy(&interp->opt_config.resume_initial_backoff,
  625|      1|                "PYTHON_JIT_RESUME_INITIAL_BACKOFF",
  626|      1|                RESUME_INITIAL_BACKOFF, 0, MAX_BACKOFF);
  ------------------
  |  |  143|      1|#define RESUME_INITIAL_BACKOFF 6
  ------------------
                              RESUME_INITIAL_BACKOFF, 0, MAX_BACKOFF);
  ------------------
  |  |   39|      1|#define MAX_BACKOFF 6
  ------------------
  627|      1|    init_policy(&interp->opt_config.side_exit_initial_value,
  628|      1|                "PYTHON_JIT_SIDE_EXIT_INITIAL_VALUE",
  629|      1|                side_exit_default, 1, MAX_VALUE);
  ------------------
  |  |   41|      1|#define MAX_VALUE 0x1FFF
  ------------------
  630|      1|    init_policy(&interp->opt_config.side_exit_initial_backoff,
  631|      1|                "PYTHON_JIT_SIDE_EXIT_INITIAL_BACKOFF",
  632|      1|                SIDE_EXIT_INITIAL_BACKOFF, 0, MAX_BACKOFF);
  ------------------
  |  |  157|      1|#define SIDE_EXIT_INITIAL_BACKOFF 6
  ------------------
                              SIDE_EXIT_INITIAL_BACKOFF, 0, MAX_BACKOFF);
  ------------------
  |  |   39|      1|#define MAX_BACKOFF 6
  ------------------
  633|       |
  634|       |    // Trace fitness configuration
  635|      1|    init_policy(&interp->opt_config.fitness_initial,
  636|      1|                "PYTHON_JIT_FITNESS_INITIAL",
  637|      1|                FITNESS_INITIAL, EXIT_QUALITY_CLOSE_LOOP, UOP_MAX_TRACE_LENGTH - 1);
  ------------------
  |  |   36|      1|#define FITNESS_INITIAL            (MAX_TARGET_LENGTH * OPTIMIZER_EFFECTIVENESS)
  |  |  ------------------
  |  |  |  |   34|      1|#define MAX_TARGET_LENGTH          (UOP_MAX_TRACE_LENGTH / 2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|      1|#define UOP_MAX_TRACE_LENGTH 2500
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define FITNESS_INITIAL            (MAX_TARGET_LENGTH * OPTIMIZER_EFFECTIVENESS)
  |  |  ------------------
  |  |  |  |   35|      1|#define OPTIMIZER_EFFECTIVENESS    2
  |  |  ------------------
  ------------------
                              FITNESS_INITIAL, EXIT_QUALITY_CLOSE_LOOP, UOP_MAX_TRACE_LENGTH - 1);
  ------------------
  |  |   40|      1|#define EXIT_QUALITY_CLOSE_LOOP      (FITNESS_INITIAL - AVG_SLOTS_PER_INSTRUCTION*4)
  |  |  ------------------
  |  |  |  |   36|      1|#define FITNESS_INITIAL            (MAX_TARGET_LENGTH * OPTIMIZER_EFFECTIVENESS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   34|      1|#define MAX_TARGET_LENGTH          (UOP_MAX_TRACE_LENGTH / 2)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   44|      1|#define UOP_MAX_TRACE_LENGTH 2500
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |               #define FITNESS_INITIAL            (MAX_TARGET_LENGTH * OPTIMIZER_EFFECTIVENESS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   35|      1|#define OPTIMIZER_EFFECTIVENESS    2
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               #define EXIT_QUALITY_CLOSE_LOOP      (FITNESS_INITIAL - AVG_SLOTS_PER_INSTRUCTION*4)
  |  |  ------------------
  |  |  |  |   47|      1|#define AVG_SLOTS_PER_INSTRUCTION  6
  |  |  ------------------
  ------------------
                              FITNESS_INITIAL, EXIT_QUALITY_CLOSE_LOOP, UOP_MAX_TRACE_LENGTH - 1);
  ------------------
  |  |   44|      1|#define UOP_MAX_TRACE_LENGTH 2500
  ------------------
  638|       |
  639|      1|    interp->opt_config.specialization_enabled = !is_env_enabled("PYTHON_SPECIALIZATION_OFF");
  640|      1|    interp->opt_config.uops_optimize_enabled = !is_env_disabled("PYTHON_UOPS_OPTIMIZE");
  641|      1|    if (interp != &runtime->_main_interpreter) {
  ------------------
  |  Branch (641:9): [True: 0, False: 1]
  ------------------
  642|       |        /* Fix the self-referential, statically initialized fields. */
  643|      0|        interp->dtoa = (struct _dtoa_state)_dtoa_state_INIT(interp);
  ------------------
  |  |   22|      0|    { \
  |  |   23|      0|        .preallocated_next = (INTERP)->dtoa.preallocated, \
  |  |   24|      0|    }
  ------------------
  644|      0|    }
  645|       |#if !defined(Py_GIL_DISABLED) && defined(Py_STACKREF_DEBUG)
  646|       |    interp->next_stackref = INITIAL_STACKREF_INDEX;
  647|       |    _Py_hashtable_allocator_t alloc = {
  648|       |        .malloc = malloc,
  649|       |        .free = free,
  650|       |    };
  651|       |    interp->open_stackrefs_table = _Py_hashtable_new_full(
  652|       |        _Py_hashtable_hash_ptr,
  653|       |        _Py_hashtable_compare_direct,
  654|       |        NULL,
  655|       |        NULL,
  656|       |        &alloc
  657|       |    );
  658|       |#  ifdef Py_STACKREF_CLOSE_DEBUG
  659|       |    interp->closed_stackrefs_table = _Py_hashtable_new_full(
  660|       |        _Py_hashtable_hash_ptr,
  661|       |        _Py_hashtable_compare_direct,
  662|       |        NULL,
  663|       |        NULL,
  664|       |        &alloc
  665|       |    );
  666|       |#  endif
  667|       |    _Py_stackref_associate(interp, Py_None, PyStackRef_None);
  668|       |    _Py_stackref_associate(interp, Py_False, PyStackRef_False);
  669|       |    _Py_stackref_associate(interp, Py_True, PyStackRef_True);
  670|       |#endif
  671|       |
  672|      1|    interp->_initialized = 1;
  673|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
  674|      1|}
pystate.c:is_env_enabled:
  515|      2|{
  516|      2|    char *env = Py_GETENV(env_name);
  517|      2|    return env && *env != '\0' && *env != '0';
  ------------------
  |  Branch (517:12): [True: 0, False: 2]
  |  Branch (517:19): [True: 0, False: 0]
  |  Branch (517:35): [True: 0, False: 0]
  ------------------
  518|      2|}
pystate.c:init_policy:
  530|      7|{
  531|      7|    *target = default_value;
  532|      7|    char *env = Py_GETENV(env_name);
  533|      7|    if (env && *env != '\0') {
  ------------------
  |  Branch (533:9): [True: 0, False: 7]
  |  Branch (533:16): [True: 0, False: 0]
  ------------------
  534|      0|        long value = atol(env);
  535|      0|        if (value >= min_value && value <= max_value) {
  ------------------
  |  Branch (535:13): [True: 0, False: 0]
  |  Branch (535:35): [True: 0, False: 0]
  ------------------
  536|      0|            *target = (uint16_t)value;
  537|      0|        }
  538|      0|    }
  539|      7|}
pystate.c:is_env_disabled:
  522|      1|{
  523|      1|    char *env = Py_GETENV(env_name);
  524|      1|    return env != NULL && *env == '0';
  ------------------
  |  Branch (524:12): [True: 0, False: 1]
  |  Branch (524:27): [True: 0, False: 0]
  ------------------
  525|      1|}
pystate.c:check_interpreter_whence:
 1170|      2|{
 1171|      2|    if(whence < 0) {
  ------------------
  |  Branch (1171:8): [True: 0, False: 2]
  ------------------
 1172|      0|        return -1;
 1173|      0|    }
 1174|      2|    if (whence > _PyInterpreterState_WHENCE_MAX) {
  ------------------
  |  |   23|      2|#define _PyInterpreterState_WHENCE_MAX 5
  ------------------
  |  Branch (1174:9): [True: 0, False: 2]
  ------------------
 1175|      0|        return -1;
 1176|      0|    }
 1177|      2|    return 0;
 1178|      2|}
pystate.c:new_threadstate:
 1626|      1|{
 1627|       |    // Allocate the thread state.
 1628|      1|    _PyThreadStateImpl *tstate = alloc_threadstate(interp);
 1629|      1|    if (tstate == NULL) {
  ------------------
  |  Branch (1629:9): [True: 0, False: 1]
  ------------------
 1630|      0|        return NULL;
 1631|      0|    }
 1632|       |
 1633|       |#ifdef Py_GIL_DISABLED
 1634|       |    Py_ssize_t qsbr_idx = _Py_qsbr_reserve(interp);
 1635|       |    if (qsbr_idx < 0) {
 1636|       |        free_threadstate(tstate);
 1637|       |        return NULL;
 1638|       |    }
 1639|       |    int32_t tlbc_idx = _Py_ReserveTLBCIndex(interp);
 1640|       |    if (tlbc_idx < 0) {
 1641|       |        free_threadstate(tstate);
 1642|       |        return NULL;
 1643|       |    }
 1644|       |#endif
 1645|       |#ifdef Py_STATS
 1646|       |    // The PyStats structure is quite large and is allocated separated from tstate.
 1647|       |    if (!_PyStats_ThreadInit(interp, tstate)) {
 1648|       |        free_threadstate(tstate);
 1649|       |        return NULL;
 1650|       |    }
 1651|       |#endif
 1652|       |
 1653|       |    /* We serialize concurrent creation to protect global state. */
 1654|      1|    HEAD_LOCK(interp->runtime);
  ------------------
  |  |  266|      1|    PyMutex_LockFlags(&(runtime)->interpreters.mutex, _Py_LOCK_DONT_DETACH)
  ------------------
 1655|       |
 1656|       |    // Initialize the new thread state.
 1657|      1|    interp->threads.next_unique_id += 1;
 1658|      1|    uint64_t id = interp->threads.next_unique_id;
 1659|      1|    init_threadstate(tstate, interp, id, whence);
 1660|       |
 1661|       |    // Add the new thread state to the interpreter.
 1662|      1|    PyThreadState *old_head = interp->threads.head;
 1663|      1|    add_threadstate(interp, (PyThreadState *)tstate, old_head);
 1664|       |
 1665|      1|    HEAD_UNLOCK(interp->runtime);
  ------------------
  |  |  268|      1|    PyMutex_Unlock(&(runtime)->interpreters.mutex)
  |  |  ------------------
  |  |  |  |   70|      1|#define PyMutex_Unlock _PyMutex_Unlock
  |  |  ------------------
  ------------------
 1666|       |
 1667|       |#ifdef Py_GIL_DISABLED
 1668|       |    // Must be called with lock unlocked to avoid lock ordering deadlocks.
 1669|       |    _Py_qsbr_register(tstate, interp, qsbr_idx);
 1670|       |    tstate->tlbc_index = tlbc_idx;
 1671|       |#endif
 1672|       |
 1673|      1|    return (PyThreadState *)tstate;
 1674|      1|}
pystate.c:alloc_threadstate:
 1462|      1|{
 1463|      1|    _PyThreadStateImpl *tstate;
 1464|       |
 1465|       |    // Try the preallocated tstate first.
 1466|      1|    tstate = _Py_atomic_exchange_ptr(&interp->threads.preallocated, NULL);
 1467|       |
 1468|       |    // Fall back to the allocator.
 1469|      1|    if (tstate == NULL) {
  ------------------
  |  Branch (1469:9): [True: 0, False: 1]
  ------------------
 1470|      0|        tstate = PyMem_RawCalloc(1, sizeof(_PyThreadStateImpl));
 1471|      0|        if (tstate == NULL) {
  ------------------
  |  Branch (1471:13): [True: 0, False: 0]
  ------------------
 1472|      0|            return NULL;
 1473|      0|        }
 1474|      0|        reset_threadstate(tstate);
 1475|      0|    }
 1476|      1|    return tstate;
 1477|      1|}
pystate.c:init_threadstate:
 1519|      1|{
 1520|      1|    PyThreadState *tstate = (PyThreadState *)_tstate;
 1521|      1|    if (tstate->_status.initialized) {
  ------------------
  |  Branch (1521:9): [True: 0, False: 1]
  ------------------
 1522|      0|        Py_FatalError("thread state already initialized");
  ------------------
  |  |  133|      0|#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))
  ------------------
 1523|      0|    }
 1524|       |
 1525|      1|    assert(interp != NULL);
  ------------------
  |  Branch (1525:5): [True: 1, False: 0]
  ------------------
 1526|      1|    tstate->interp = interp;
 1527|      1|    tstate->eval_breaker =
 1528|      1|        _Py_atomic_load_uintptr_relaxed(&interp->ceval.instrumentation_version);
 1529|       |
 1530|       |    // next/prev are set in add_threadstate().
 1531|      1|    assert(tstate->next == NULL);
  ------------------
  |  Branch (1531:5): [True: 1, False: 0]
  ------------------
 1532|      1|    assert(tstate->prev == NULL);
  ------------------
  |  Branch (1532:5): [True: 1, False: 0]
  ------------------
 1533|       |
 1534|      1|    assert(tstate->_whence == _PyThreadState_WHENCE_NOTSET);
  ------------------
  |  Branch (1534:5): [True: 1, False: 0]
  ------------------
 1535|      1|    assert(whence >= 0 && whence <= _PyThreadState_WHENCE_THREADING_DAEMON);
  ------------------
  |  Branch (1535:5): [True: 1, False: 0]
  |  Branch (1535:5): [True: 1, False: 0]
  ------------------
 1536|      1|    tstate->_whence = whence;
 1537|       |
 1538|      1|    assert(id > 0);
  ------------------
  |  Branch (1538:5): [True: 1, False: 0]
  ------------------
 1539|      1|    tstate->id = id;
 1540|       |
 1541|       |    // thread_id and native_thread_id are set in bind_tstate().
 1542|       |
 1543|      1|    tstate->py_recursion_limit = interp->ceval.recursion_limit;
 1544|      1|    tstate->py_recursion_remaining = interp->ceval.recursion_limit;
 1545|      1|    tstate->exc_info = &tstate->exc_state;
 1546|       |
 1547|       |    // PyGILState_Release must not try to delete this thread state.
 1548|       |    // This is cleared when PyGILState_Ensure() creates the thread state.
 1549|      1|    tstate->gilstate_counter = 1;
 1550|       |
 1551|       |    // Initialize the embedded base frame - sentinel at the bottom of the frame stack
 1552|      1|    _tstate->base_frame.previous = NULL;
 1553|      1|    _tstate->base_frame.f_executable = PyStackRef_None;
  ------------------
  |  |  473|      1|#define PyStackRef_None ((_PyStackRef){.bits = ((uintptr_t)&_Py_NoneStruct) | Py_TAG_REFCNT })
  |  |  ------------------
  |  |  |  |   55|      1|#define Py_TAG_REFCNT 1
  |  |  ------------------
  ------------------
 1554|      1|    _tstate->base_frame.f_funcobj = PyStackRef_NULL;
 1555|      1|    _tstate->base_frame.f_globals = NULL;
 1556|      1|    _tstate->base_frame.f_builtins = NULL;
 1557|      1|    _tstate->base_frame.f_locals = NULL;
 1558|      1|    _tstate->base_frame.frame_obj = NULL;
 1559|      1|    _tstate->base_frame.instr_ptr = NULL;
 1560|      1|    _tstate->base_frame.stackpointer = _tstate->base_frame.localsplus;
 1561|      1|    _tstate->base_frame.return_offset = 0;
 1562|      1|    _tstate->base_frame.owner = FRAME_OWNED_BY_INTERPRETER;
 1563|      1|    _tstate->base_frame.visited = 0;
 1564|       |#ifdef Py_DEBUG
 1565|       |    _tstate->base_frame.lltrace = 0;
 1566|       |#endif
 1567|       |#ifdef Py_GIL_DISABLED
 1568|       |    _tstate->base_frame.tlbc_index = 0;
 1569|       |#endif
 1570|      1|    _tstate->base_frame.localsplus[0] = PyStackRef_NULL;
 1571|       |
 1572|       |    // current_frame starts pointing to the base frame
 1573|      1|    tstate->current_frame = &_tstate->base_frame;
 1574|       |    // base_frame pointer for profilers to validate stack unwinding
 1575|      1|    tstate->base_frame = &_tstate->base_frame;
 1576|      1|    tstate->datastack_chunk = NULL;
 1577|      1|    tstate->datastack_top = NULL;
 1578|      1|    tstate->datastack_limit = NULL;
 1579|      1|    tstate->datastack_cached_chunk = NULL;
 1580|      1|    tstate->what_event = -1;
 1581|      1|    tstate->current_executor = NULL;
 1582|      1|    tstate->jit_exit = NULL;
 1583|      1|    tstate->dict_global_version = 0;
 1584|       |
 1585|      1|    _tstate->c_stack_soft_limit = UINTPTR_MAX;
 1586|      1|    _tstate->c_stack_top = 0;
 1587|      1|    _tstate->c_stack_hard_limit = 0;
 1588|       |
 1589|      1|    _tstate->c_stack_init_base = 0;
 1590|      1|    _tstate->c_stack_init_top = 0;
 1591|       |
 1592|      1|    _tstate->asyncio_running_loop = NULL;
 1593|      1|    _tstate->asyncio_running_task = NULL;
 1594|       |
 1595|       |#ifdef _Py_TIER2
 1596|       |    _tstate->jit_tracer_state = NULL;
 1597|       |#endif
 1598|      1|    tstate->delete_later = NULL;
 1599|       |
 1600|      1|    llist_init(&_tstate->mem_free_queue);
 1601|      1|    llist_init(&_tstate->asyncio_tasks_head);
 1602|      1|    if (interp->stoptheworld.requested || _PyRuntime.stoptheworld.requested) {
  ------------------
  |  Branch (1602:9): [True: 0, False: 1]
  |  Branch (1602:43): [True: 0, False: 1]
  ------------------
 1603|       |        // Start in the suspended state if there is an ongoing stop-the-world.
 1604|      0|        tstate->state = _Py_THREAD_SUSPENDED;
  ------------------
  |  |   48|      0|#define _Py_THREAD_SUSPENDED        2
  ------------------
 1605|      0|    }
 1606|       |
 1607|      1|    tstate->_status.initialized = 1;
 1608|      1|}
pystate.c:add_threadstate:
 1613|      1|{
 1614|      1|    assert(interp->threads.head != tstate);
  ------------------
  |  Branch (1614:5): [True: 1, False: 0]
  ------------------
 1615|      1|    if (next != NULL) {
  ------------------
  |  Branch (1615:9): [True: 0, False: 1]
  ------------------
 1616|      0|        assert(next->prev == NULL || next->prev == tstate);
  ------------------
  |  Branch (1616:9): [True: 0, False: 0]
  |  Branch (1616:9): [True: 0, False: 0]
  ------------------
 1617|      0|        next->prev = tstate;
 1618|      0|    }
 1619|      1|    tstate->next = next;
 1620|      1|    assert(tstate->prev == NULL);
  ------------------
  |  Branch (1620:5): [True: 1, False: 0]
  ------------------
 1621|      1|    interp->threads.head = tstate;
 1622|      1|}
pystate.c:bind_tstate:
  164|      1|{
  165|      1|    assert(tstate != NULL);
  ------------------
  |  Branch (165:5): [True: 1, False: 0]
  ------------------
  166|      1|    assert(tstate_is_alive(tstate) && !tstate->_status.bound);
  ------------------
  |  Branch (166:5): [True: 1, False: 0]
  |  Branch (166:5): [True: 1, False: 0]
  ------------------
  167|      1|    assert(!tstate->_status.unbound);  // just in case
  ------------------
  |  Branch (167:5): [True: 1, False: 0]
  ------------------
  168|      1|    assert(!tstate->_status.bound_gilstate);
  ------------------
  |  Branch (168:5): [True: 1, False: 0]
  ------------------
  169|      1|    assert(tstate != gilstate_get());
  ------------------
  |  Branch (169:5): [True: 1, False: 0]
  ------------------
  170|      1|    assert(!tstate->_status.active);
  ------------------
  |  Branch (170:5): [True: 1, False: 0]
  ------------------
  171|      1|    assert(tstate->thread_id == 0);
  ------------------
  |  Branch (171:5): [True: 1, False: 0]
  ------------------
  172|      1|    assert(tstate->native_thread_id == 0);
  ------------------
  |  Branch (172:5): [True: 1, False: 0]
  ------------------
  173|       |
  174|       |    // Currently we don't necessarily store the thread state
  175|       |    // in thread-local storage (e.g. per-interpreter).
  176|       |
  177|      1|    tstate->thread_id = PyThread_get_thread_ident();
  178|      1|#ifdef PY_HAVE_THREAD_NATIVE_ID
  179|      1|    tstate->native_thread_id = PyThread_get_thread_native_id();
  180|      1|#endif
  181|       |
  182|       |#ifdef Py_GIL_DISABLED
  183|       |    // Initialize biased reference counting inter-thread queue. Note that this
  184|       |    // needs to be initialized from the active thread.
  185|       |    _Py_brc_init_thread(tstate);
  186|       |#endif
  187|       |
  188|       |    // mimalloc state needs to be initialized from the active thread.
  189|      1|    tstate_mimalloc_bind(tstate);
  190|       |
  191|      1|    tstate->_status.bound = 1;
  192|      1|}
pystate.c:tstate_is_alive:
 1424|      2|{
 1425|      2|    return (tstate->_status.initialized &&
  ------------------
  |  Branch (1425:13): [True: 2, False: 0]
  ------------------
 1426|      2|            !tstate->_status.finalized &&
  ------------------
  |  Branch (1426:13): [True: 2, False: 0]
  ------------------
 1427|      2|            !tstate->_status.cleared &&
  ------------------
  |  Branch (1427:13): [True: 2, False: 0]
  ------------------
 1428|      2|            !tstate->_status.finalizing);
  ------------------
  |  Branch (1428:13): [True: 2, False: 0]
  ------------------
 1429|      2|}
pystate.c:tstate_mimalloc_bind:
 3212|      1|{
 3213|       |#ifdef Py_GIL_DISABLED
 3214|       |    struct _mimalloc_thread_state *mts = &((_PyThreadStateImpl*)tstate)->mimalloc;
 3215|       |
 3216|       |    // Initialize the mimalloc thread state. This must be called from the
 3217|       |    // same thread that will use the thread state. The "mem" heap doubles as
 3218|       |    // the "backing" heap.
 3219|       |    mi_tld_t *tld = &mts->tld;
 3220|       |    _mi_tld_init(tld, &mts->heaps[_Py_MIMALLOC_HEAP_MEM]);
 3221|       |    llist_init(&mts->page_list);
 3222|       |
 3223|       |    // Exiting threads push any remaining in-use segments to the abandoned
 3224|       |    // pool to be re-claimed later by other threads. We use per-interpreter
 3225|       |    // pools to keep Python objects from different interpreters separate.
 3226|       |    tld->segments.abandoned = &tstate->interp->mimalloc.abandoned_pool;
 3227|       |
 3228|       |    // Don't fill in the first N bytes up to ob_type in debug builds. We may
 3229|       |    // access ob_tid and the refcount fields in the dict and list lock-less
 3230|       |    // accesses, so they must remain valid for a while after deallocation.
 3231|       |    size_t base_offset = offsetof(PyObject, ob_type);
 3232|       |    if (_PyMem_DebugEnabled()) {
 3233|       |        // The debug allocator adds two words at the beginning of each block.
 3234|       |        base_offset += 2 * sizeof(size_t);
 3235|       |    }
 3236|       |    size_t debug_offsets[_Py_MIMALLOC_HEAP_COUNT] = {
 3237|       |        [_Py_MIMALLOC_HEAP_OBJECT] = base_offset,
 3238|       |        [_Py_MIMALLOC_HEAP_GC] = base_offset,
 3239|       |        [_Py_MIMALLOC_HEAP_GC_PRE] = base_offset + 2 * sizeof(PyObject *),
 3240|       |    };
 3241|       |
 3242|       |    // Initialize each heap
 3243|       |    for (uint8_t i = 0; i < _Py_MIMALLOC_HEAP_COUNT; i++) {
 3244|       |        _mi_heap_init_ex(&mts->heaps[i], tld, _mi_arena_id_none(), false, i);
 3245|       |        mts->heaps[i].debug_offset = (uint8_t)debug_offsets[i];
 3246|       |    }
 3247|       |
 3248|       |    // Heaps that store Python objects should use QSBR to delay freeing
 3249|       |    // mimalloc pages while there may be concurrent lock-free readers.
 3250|       |    mts->heaps[_Py_MIMALLOC_HEAP_OBJECT].page_use_qsbr = true;
 3251|       |    mts->heaps[_Py_MIMALLOC_HEAP_GC].page_use_qsbr = true;
 3252|       |    mts->heaps[_Py_MIMALLOC_HEAP_GC_PRE].page_use_qsbr = true;
 3253|       |
 3254|       |    // By default, object allocations use _Py_MIMALLOC_HEAP_OBJECT.
 3255|       |    // _PyObject_GC_New() and similar functions temporarily override this to
 3256|       |    // use one of the GC heaps.
 3257|       |    mts->current_object_heap = &mts->heaps[_Py_MIMALLOC_HEAP_OBJECT];
 3258|       |
 3259|       |    _Py_atomic_store_int(&mts->initialized, 1);
 3260|       |#endif
 3261|      1|}
pystate.c:gilstate_get:
  129|    333|{
  130|    333|    return _Py_tss_gilstate;
  131|    333|}
pystate.c:bind_gilstate_tstate:
  237|      1|{
  238|      1|    assert(tstate != NULL);
  ------------------
  |  Branch (238:5): [True: 1, False: 0]
  ------------------
  239|      1|    assert(tstate_is_alive(tstate));
  ------------------
  |  Branch (239:5): [True: 1, False: 0]
  ------------------
  240|      1|    assert(tstate_is_bound(tstate));
  ------------------
  |  Branch (240:5): [True: 1, False: 0]
  ------------------
  241|       |    // XXX assert(!tstate->_status.active);
  242|      1|    assert(!tstate->_status.bound_gilstate);
  ------------------
  |  Branch (242:5): [True: 1, False: 0]
  ------------------
  243|       |
  244|      1|    PyThreadState *tcur = gilstate_get();
  245|      1|    assert(tstate != tcur);
  ------------------
  |  Branch (245:5): [True: 1, False: 0]
  ------------------
  246|       |
  247|      1|    if (tcur != NULL) {
  ------------------
  |  Branch (247:9): [True: 0, False: 1]
  ------------------
  248|      0|        tcur->_status.bound_gilstate = 0;
  249|      0|    }
  250|      1|    gilstate_set(tstate);
  251|      1|    tstate->_status.bound_gilstate = 1;
  252|      1|}
pystate.c:tstate_is_bound:
  152|    656|{
  153|    656|    return tstate->_status.bound && !tstate->_status.unbound;
  ------------------
  |  Branch (153:12): [True: 656, False: 0]
  |  Branch (153:37): [True: 656, False: 0]
  ------------------
  154|    656|}
pystate.c:gilstate_set:
  135|      1|{
  136|      1|    assert(tstate != NULL);
  ------------------
  |  Branch (136:5): [True: 1, False: 0]
  ------------------
  137|      1|    _Py_tss_gilstate = tstate;
  138|      1|}
pystate.c:current_fast_clear:
  100|    327|{
  101|    327|    _Py_tss_tstate = NULL;
  102|       |    _Py_tss_interp = NULL;
  103|    327|}
pystate.c:current_fast_set:
   91|    328|{
   92|    328|    assert(tstate != NULL);
  ------------------
  |  Branch (92:5): [True: 328, False: 0]
  ------------------
   93|    328|    _Py_tss_tstate = tstate;
   94|    328|    assert(tstate->interp != NULL);
  ------------------
  |  Branch (94:5): [True: 328, False: 0]
  ------------------
   95|    328|    _Py_tss_interp = tstate->interp;
   96|    328|}
pystate.c:tstate_try_attach:
 2172|    328|{
 2173|       |#ifdef Py_GIL_DISABLED
 2174|       |    int expected = _Py_THREAD_DETACHED;
 2175|       |    return _Py_atomic_compare_exchange_int(&tstate->state,
 2176|       |                                           &expected,
 2177|       |                                           _Py_THREAD_ATTACHED);
 2178|       |#else
 2179|    328|    assert(tstate->state == _Py_THREAD_DETACHED);
  ------------------
  |  Branch (2179:5): [True: 328, False: 0]
  ------------------
 2180|    328|    tstate->state = _Py_THREAD_ATTACHED;
  ------------------
  |  |   47|    328|#define _Py_THREAD_ATTACHED         1
  ------------------
 2181|    328|    return 1;
 2182|    328|#endif
 2183|    328|}
pystate.c:tstate_activate:
 2137|    328|{
 2138|    328|    assert(tstate != NULL);
  ------------------
  |  Branch (2138:5): [True: 328, False: 0]
  ------------------
 2139|       |    // XXX assert(tstate_is_alive(tstate));
 2140|    328|    assert(tstate_is_bound(tstate));
  ------------------
  |  Branch (2140:5): [True: 328, False: 0]
  ------------------
 2141|    328|    assert(!tstate->_status.active);
  ------------------
  |  Branch (2141:5): [True: 328, False: 0]
  ------------------
 2142|       |
 2143|    328|    assert(!tstate->_status.bound_gilstate ||
  ------------------
  |  Branch (2143:5): [True: 0, False: 328]
  |  Branch (2143:5): [True: 328, False: 0]
  ------------------
 2144|    328|           tstate == gilstate_get());
 2145|    328|    if (!tstate->_status.bound_gilstate) {
  ------------------
  |  Branch (2145:9): [True: 0, False: 328]
  ------------------
 2146|      0|        bind_gilstate_tstate(tstate);
 2147|      0|    }
 2148|       |
 2149|    328|    tstate->_status.active = 1;
 2150|    328|}
pystate.c:detach_thread:
 2278|    327|{
 2279|       |    // XXX assert(tstate_is_alive(tstate) && tstate_is_bound(tstate));
 2280|    327|    assert(_Py_atomic_load_int_relaxed(&tstate->state) == _Py_THREAD_ATTACHED);
  ------------------
  |  Branch (2280:5): [True: 327, False: 0]
  ------------------
 2281|    327|    assert(tstate == current_fast_get());
  ------------------
  |  Branch (2281:5): [True: 327, False: 0]
  ------------------
 2282|    327|    if (tstate->critical_section != 0) {
  ------------------
  |  Branch (2282:9): [True: 0, False: 327]
  ------------------
 2283|      0|        _PyCriticalSection_SuspendAll(tstate);
 2284|      0|    }
 2285|       |#ifdef Py_GIL_DISABLED
 2286|       |    _Py_qsbr_detach(((_PyThreadStateImpl *)tstate)->qsbr);
 2287|       |#endif
 2288|    327|    tstate_deactivate(tstate);
 2289|    327|    tstate_set_detached(tstate, detached_state);
 2290|    327|    current_fast_clear(&_PyRuntime);
 2291|    327|    _PyEval_ReleaseLock(tstate->interp, tstate, 0);
 2292|    327|}
pystate.c:tstate_deactivate:
 2154|    327|{
 2155|    327|    assert(tstate != NULL);
  ------------------
  |  Branch (2155:5): [True: 327, False: 0]
  ------------------
 2156|       |    // XXX assert(tstate_is_alive(tstate));
 2157|    327|    assert(tstate_is_bound(tstate));
  ------------------
  |  Branch (2157:5): [True: 327, False: 0]
  ------------------
 2158|    327|    assert(tstate->_status.active);
  ------------------
  |  Branch (2158:5): [True: 327, False: 0]
  ------------------
 2159|       |
 2160|       |#if Py_STATS
 2161|       |    _PyStats_Detach((_PyThreadStateImpl *)tstate);
 2162|       |#endif
 2163|       |
 2164|    327|    tstate->_status.active = 0;
 2165|       |
 2166|       |    // We do not unbind the gilstate tstate here.
 2167|       |    // It will still be used in PyGILState_Ensure().
 2168|    327|}
pystate.c:tstate_set_detached:
 2187|    327|{
 2188|    327|    assert(_Py_atomic_load_int_relaxed(&tstate->state) == _Py_THREAD_ATTACHED);
  ------------------
  |  Branch (2188:5): [True: 327, False: 0]
  ------------------
 2189|       |#ifdef Py_GIL_DISABLED
 2190|       |    _Py_atomic_store_int(&tstate->state, detached_state);
 2191|       |#else
 2192|    327|    tstate->state = detached_state;
 2193|    327|#endif
 2194|    327|}
pystate.c:push_chunk:
 3091|      1|{
 3092|      1|    int allocate_size = _PY_DATA_STACK_CHUNK_SIZE;
  ------------------
  |  |   65|      1|#define _PY_DATA_STACK_CHUNK_SIZE (16*1024)
  ------------------
 3093|      1|    while (allocate_size < (int)sizeof(PyObject*)*(size + MINIMUM_OVERHEAD)) {
  ------------------
  |  | 3087|      1|#define MINIMUM_OVERHEAD 1000
  ------------------
  |  Branch (3093:12): [True: 0, False: 1]
  ------------------
 3094|      0|        allocate_size *= 2;
 3095|      0|    }
 3096|      1|    _PyStackChunk *new;
 3097|      1|    if (tstate->datastack_cached_chunk != NULL
  ------------------
  |  Branch (3097:9): [True: 0, False: 1]
  ------------------
 3098|      0|        && (size_t)allocate_size <= tstate->datastack_cached_chunk->size)
  ------------------
  |  Branch (3098:12): [True: 0, False: 0]
  ------------------
 3099|      0|    {
 3100|      0|        new = tstate->datastack_cached_chunk;
 3101|      0|        tstate->datastack_cached_chunk = NULL;
 3102|      0|        new->previous = tstate->datastack_chunk;
 3103|      0|        new->top = 0;
 3104|      0|    }
 3105|      1|    else {
 3106|      1|        new = allocate_chunk(allocate_size, tstate->datastack_chunk);
 3107|      1|        if (new == NULL) {
  ------------------
  |  Branch (3107:13): [True: 0, False: 1]
  ------------------
 3108|      0|            return NULL;
 3109|      0|        }
 3110|      1|    }
 3111|      1|    if (tstate->datastack_chunk) {
  ------------------
  |  Branch (3111:9): [True: 0, False: 1]
  ------------------
 3112|      0|        tstate->datastack_chunk->top = tstate->datastack_top -
 3113|      0|                                       &tstate->datastack_chunk->data[0];
 3114|      0|    }
 3115|      1|    tstate->datastack_chunk = new;
 3116|      1|    tstate->datastack_limit = (PyObject **)(((char *)new) + allocate_size);
 3117|       |    // When new is the "root" chunk (i.e. new->previous == NULL), we can keep
 3118|       |    // _PyThreadState_PopFrame from freeing it later by "skipping" over the
 3119|       |    // first element:
 3120|       |    PyObject **res = &new->data[new->previous == NULL];
 3121|      1|    tstate->datastack_top = res + size;
 3122|      1|    return res;
 3123|      1|}
pystate.c:allocate_chunk:
 1439|      1|{
 1440|      1|    assert(size_in_bytes % sizeof(PyObject **) == 0);
  ------------------
  |  Branch (1440:5): [True: 1, False: 0]
  ------------------
 1441|      1|    _PyStackChunk *res = _PyObject_VirtualAlloc(size_in_bytes);
 1442|      1|    if (res == NULL) {
  ------------------
  |  Branch (1442:9): [True: 0, False: 1]
  ------------------
 1443|      0|        return NULL;
 1444|      0|    }
 1445|      1|    res->previous = previous;
 1446|      1|    res->size = size_in_bytes;
 1447|      1|    res->top = 0;
 1448|      1|    return res;
 1449|      1|}

_PyTimeFraction_Set:
   79|      2|{
   80|      2|    if (numer < 1 || denom < 1) {
  ------------------
  |  Branch (80:9): [True: 0, False: 2]
  |  Branch (80:22): [True: 0, False: 2]
  ------------------
   81|      0|        return -1;
   82|      0|    }
   83|       |
   84|      2|    PyTime_t gcd = _PyTime_GCD(numer, denom);
   85|      2|    frac->numer = numer / gcd;
   86|      2|    frac->denom = denom / gcd;
   87|      2|    return 0;
   88|      2|}
_PyLong_FromTime_t:
  226|     42|{
  227|     42|#if SIZEOF_TIME_T == SIZEOF_LONG_LONG
  228|     42|    return PyLong_FromLongLong((long long)t);
  229|       |#elif SIZEOF_TIME_T <= SIZEOF_LONG
  230|       |    return PyLong_FromLong((long)t);
  231|       |#else
  232|       |#   error "unsupported time_t size"
  233|       |#endif
  234|     42|}
_PyTime_FromSeconds:
  539|     60|{
  540|       |    /* ensure that integer overflow cannot happen, int type should have 32
  541|       |       bits, whereas PyTime_t type has at least 64 bits (SEC_TO_NS takes 30
  542|       |       bits). */
  543|     60|    static_assert(INT_MAX <= PyTime_MAX / SEC_TO_NS, "PyTime_t overflow");
  544|     60|    static_assert(INT_MIN >= PyTime_MIN / SEC_TO_NS, "PyTime_t underflow");
  545|       |
  546|     60|    PyTime_t t = (PyTime_t)seconds;
  547|     60|    assert((t >= 0 && t <= PyTime_MAX / SEC_TO_NS)
  ------------------
  |  Branch (547:5): [True: 0, False: 60]
  |  Branch (547:5): [True: 0, False: 0]
  |  Branch (547:5): [True: 60, False: 0]
  |  Branch (547:5): [True: 60, False: 0]
  ------------------
  548|     60|           || (t < 0 && t >= PyTime_MIN / SEC_TO_NS));
  549|     60|    t *= SEC_TO_NS;
  ------------------
  |  |   35|     60|#define SEC_TO_NS (SEC_TO_MS * MS_TO_NS)
  |  |  ------------------
  |  |  |  |   26|     60|#define SEC_TO_MS 1000
  |  |  ------------------
  |  |               #define SEC_TO_NS (SEC_TO_MS * MS_TO_NS)
  |  |  ------------------
  |  |  |  |   34|     60|#define MS_TO_NS (MS_TO_US * US_TO_NS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|     60|#define MS_TO_US 1000
  |  |  |  |  ------------------
  |  |  |  |               #define MS_TO_NS (MS_TO_US * US_TO_NS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   33|     60|#define US_TO_NS 1000
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  550|     60|    return t;
  551|     60|}
PyTime_AsSecondsDouble:
  705|      3|{
  706|       |    /* volatile avoids optimization changing how numbers are rounded */
  707|      3|    volatile double d;
  708|       |
  709|      3|    if (ns % SEC_TO_NS == 0) {
  ------------------
  |  |   35|      3|#define SEC_TO_NS (SEC_TO_MS * MS_TO_NS)
  |  |  ------------------
  |  |  |  |   26|      3|#define SEC_TO_MS 1000
  |  |  ------------------
  |  |               #define SEC_TO_NS (SEC_TO_MS * MS_TO_NS)
  |  |  ------------------
  |  |  |  |   34|      3|#define MS_TO_NS (MS_TO_US * US_TO_NS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      3|#define MS_TO_US 1000
  |  |  |  |  ------------------
  |  |  |  |               #define MS_TO_NS (MS_TO_US * US_TO_NS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   33|      3|#define US_TO_NS 1000
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (709:9): [True: 0, False: 3]
  ------------------
  710|       |        /* Divide using integers to avoid rounding issues on the integer part.
  711|       |           1e-9 cannot be stored exactly in IEEE 64-bit. */
  712|      0|        PyTime_t secs = ns / SEC_TO_NS;
  ------------------
  |  |   35|      0|#define SEC_TO_NS (SEC_TO_MS * MS_TO_NS)
  |  |  ------------------
  |  |  |  |   26|      0|#define SEC_TO_MS 1000
  |  |  ------------------
  |  |               #define SEC_TO_NS (SEC_TO_MS * MS_TO_NS)
  |  |  ------------------
  |  |  |  |   34|      0|#define MS_TO_NS (MS_TO_US * US_TO_NS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      0|#define MS_TO_US 1000
  |  |  |  |  ------------------
  |  |  |  |               #define MS_TO_NS (MS_TO_US * US_TO_NS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   33|      0|#define US_TO_NS 1000
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  713|      0|        d = (double)secs;
  714|      0|    }
  715|      3|    else {
  716|      3|        d = (double)ns;
  717|      3|        d /= 1e9;
  718|      3|    }
  719|      3|    return d;
  720|      3|}
_PyTime_Init:
 1179|      1|{
 1180|       |#ifdef MS_WINDOWS
 1181|       |    return py_win_perf_counter_frequency(&state->base);
 1182|       |#elif defined(__APPLE__)
 1183|       |    return py_mach_timebase_info(&state->base);
 1184|       |#else
 1185|      1|    return PyStatus_Ok();
 1186|      1|#endif
 1187|      1|}
PyTime_MonotonicRaw:
 1289|      4|{
 1290|      4|    if (py_get_monotonic_clock(result, NULL, 0) < 0) {
  ------------------
  |  Branch (1290:9): [True: 0, False: 4]
  ------------------
 1291|      0|        *result = 0;
 1292|      0|        return -1;
 1293|      0|    }
 1294|      4|    return 0;
 1295|      4|}
PyTime_PerfCounterRaw:
 1321|      4|{
 1322|      4|    return PyTime_MonotonicRaw(result);
 1323|      4|}
_PyTime_localtime:
 1328|      2|{
 1329|       |#ifdef MS_WINDOWS
 1330|       |    if (t >= 0) {
 1331|       |        /* For non-negative timestamps, use localtime_s() */
 1332|       |        int error = localtime_s(tm, &t);
 1333|       |        if (error != 0) {
 1334|       |            errno = error;
 1335|       |            PyErr_SetFromErrno(PyExc_OSError);
 1336|       |            return -1;
 1337|       |        }
 1338|       |        return 0;
 1339|       |    }
 1340|       |
 1341|       |    /* For negative timestamps, use FILETIME-based conversion */
 1342|       |    return _PyTime_windows_filetime(t, tm, 1);
 1343|       |#else /* !MS_WINDOWS */
 1344|       |
 1345|       |#if defined(_AIX) && (SIZEOF_TIME_T < 8)
 1346|       |    /* bpo-34373: AIX does not return NULL if t is too small or too large */
 1347|       |    if (t < -2145916800 /* 1902-01-01 */
 1348|       |       || t > 2145916800 /* 2038-01-01 */) {
 1349|       |        errno = EINVAL;
 1350|       |        PyErr_SetString(PyExc_OverflowError,
 1351|       |                        "localtime argument out of range");
 1352|       |        return -1;
 1353|       |    }
 1354|       |#endif
 1355|       |
 1356|      2|    errno = 0;
 1357|      2|    if (localtime_r(&t, tm) == NULL) {
  ------------------
  |  Branch (1357:9): [True: 0, False: 2]
  ------------------
 1358|      0|        if (errno == 0) {
  ------------------
  |  Branch (1358:13): [True: 0, False: 0]
  ------------------
 1359|      0|            errno = EINVAL;
 1360|      0|        }
 1361|      0|        PyErr_SetFromErrno(PyExc_OSError);
 1362|      0|        return -1;
 1363|      0|    }
 1364|      2|    return 0;
 1365|      2|#endif /* MS_WINDOWS */
 1366|      2|}
pytime.c:_PyTime_GCD:
   63|      2|{
   64|       |    // Euclidean algorithm
   65|      2|    assert(x >= 1);
  ------------------
  |  Branch (65:5): [True: 2, False: 0]
  ------------------
   66|      2|    assert(y >= 1);
  ------------------
  |  Branch (66:5): [True: 2, False: 0]
  ------------------
   67|      4|    while (y != 0) {
  ------------------
  |  Branch (67:12): [True: 2, False: 2]
  ------------------
   68|      2|        PyTime_t tmp = y;
   69|      2|        y = x % y;
   70|      2|        x = tmp;
   71|      2|    }
   72|      2|    assert(x >= 1);
  ------------------
  |  Branch (72:5): [True: 2, False: 0]
  ------------------
   73|      2|    return x;
   74|      2|}
pytime.c:pytime_add:
  117|      4|{
  118|      4|    if (t2 > 0 && *t1 > PyTime_MAX - t2) {
  ------------------
  |  |   12|      4|#define PyTime_MAX INT64_MAX
  ------------------
  |  Branch (118:9): [True: 4, False: 0]
  |  Branch (118:19): [True: 0, False: 4]
  ------------------
  119|      0|        *t1 = PyTime_MAX;
  ------------------
  |  |   12|      0|#define PyTime_MAX INT64_MAX
  ------------------
  120|      0|        return -1;
  121|      0|    }
  122|      4|    else if (t2 < 0 && *t1 < PyTime_MIN - t2) {
  ------------------
  |  |   11|      0|#define PyTime_MIN INT64_MIN
  ------------------
  |  Branch (122:14): [True: 0, False: 4]
  |  Branch (122:24): [True: 0, False: 0]
  ------------------
  123|      0|        *t1 = PyTime_MIN;
  ------------------
  |  |   11|      0|#define PyTime_MIN INT64_MIN
  ------------------
  124|      0|        return -1;
  125|      0|    }
  126|      4|    else {
  127|      4|        *t1 += t2;
  128|      4|        return 0;
  129|      4|    }
  130|      4|}
pytime.c:pytime_mul:
  157|      4|{
  158|      4|    assert(k >= 0);
  ------------------
  |  Branch (158:5): [True: 4, False: 0]
  ------------------
  159|      4|    if (pytime_mul_check_overflow(*t, k)) {
  ------------------
  |  Branch (159:9): [True: 0, False: 4]
  ------------------
  160|      0|        *t = (*t >= 0) ? PyTime_MAX : PyTime_MIN;
  ------------------
  |  |   12|      0|#define PyTime_MAX INT64_MAX
  ------------------
                      *t = (*t >= 0) ? PyTime_MAX : PyTime_MIN;
  ------------------
  |  |   11|      0|#define PyTime_MIN INT64_MIN
  ------------------
  |  Branch (160:14): [True: 0, False: 0]
  ------------------
  161|      0|        return -1;
  162|      0|    }
  163|      4|    else {
  164|      4|        *t *= k;
  165|      4|        return 0;
  166|      4|    }
  167|      4|}
pytime.c:pytime_mul_check_overflow:
  143|      4|{
  144|      4|    if (b != 0) {
  ------------------
  |  Branch (144:9): [True: 4, False: 0]
  ------------------
  145|      4|        assert(b > 0);
  ------------------
  |  Branch (145:9): [True: 4, False: 0]
  ------------------
  146|      4|        return ((a < PyTime_MIN / b) || (PyTime_MAX / b < a));
  ------------------
  |  |   11|      4|#define PyTime_MIN INT64_MIN
  ------------------
                      return ((a < PyTime_MIN / b) || (PyTime_MAX / b < a));
  ------------------
  |  |   12|      4|#define PyTime_MAX INT64_MAX
  ------------------
  |  Branch (146:17): [True: 0, False: 4]
  |  Branch (146:41): [True: 0, False: 4]
  ------------------
  147|      4|    }
  148|      0|    else {
  149|      0|        return 0;
  150|      0|    }
  151|      4|}
pytime.c:pytime_fromtimespec:
  565|      4|{
  566|      4|    PyTime_t t, tv_nsec;
  567|       |
  568|      4|    static_assert(sizeof(ts->tv_sec) <= sizeof(PyTime_t),
  569|      4|                  "timespec.tv_sec is larger than PyTime_t");
  570|      4|    t = (PyTime_t)ts->tv_sec;
  571|       |
  572|      4|    int res1 = pytime_mul(&t, SEC_TO_NS);
  ------------------
  |  |   35|      4|#define SEC_TO_NS (SEC_TO_MS * MS_TO_NS)
  |  |  ------------------
  |  |  |  |   26|      4|#define SEC_TO_MS 1000
  |  |  ------------------
  |  |               #define SEC_TO_NS (SEC_TO_MS * MS_TO_NS)
  |  |  ------------------
  |  |  |  |   34|      4|#define MS_TO_NS (MS_TO_US * US_TO_NS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   29|      4|#define MS_TO_US 1000
  |  |  |  |  ------------------
  |  |  |  |               #define MS_TO_NS (MS_TO_US * US_TO_NS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   33|      4|#define US_TO_NS 1000
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  573|       |
  574|      4|    tv_nsec = ts->tv_nsec;
  575|      4|    int res2 = pytime_add(&t, tv_nsec);
  576|       |
  577|      4|    *tp = t;
  578|       |
  579|      4|    if (raise_exc && (res1 < 0 || res2 < 0)) {
  ------------------
  |  Branch (579:9): [True: 0, False: 4]
  |  Branch (579:23): [True: 0, False: 0]
  |  Branch (579:35): [True: 0, False: 0]
  ------------------
  580|      0|        pytime_overflow();
  581|      0|        return -1;
  582|      0|    }
  583|      4|    return 0;
  584|      4|}
pytime.c:py_get_monotonic_clock:
 1192|      4|{
 1193|      4|    assert(info == NULL || raise_exc);
  ------------------
  |  Branch (1193:5): [True: 4, False: 0]
  |  Branch (1193:5): [True: 0, False: 0]
  ------------------
 1194|      4|    if (raise_exc) {
  ------------------
  |  Branch (1194:9): [True: 0, False: 4]
  ------------------
 1195|       |        // raise_exc requires to hold a thread state
 1196|      0|        _Py_AssertHoldsTstate();
  ------------------
  |  |  306|      0|#define _Py_AssertHoldsTstate() _Py_AssertHoldsTstateFunc(__func__)
  ------------------
 1197|      0|    }
 1198|       |
 1199|       |#if defined(MS_WINDOWS)
 1200|       |    if (py_get_win_perf_counter(tp, info, raise_exc) < 0) {
 1201|       |        return -1;
 1202|       |    }
 1203|       |#elif defined(__APPLE__)
 1204|       |    if (info) {
 1205|       |        info->implementation = "mach_absolute_time()";
 1206|       |        info->resolution = _PyTimeFraction_Resolution(&_PyRuntime.time.base);
 1207|       |        info->monotonic = 1;
 1208|       |        info->adjustable = 0;
 1209|       |    }
 1210|       |
 1211|       |    uint64_t uticks = mach_absolute_time();
 1212|       |    // unsigned => signed
 1213|       |    assert(uticks <= (uint64_t)PyTime_MAX);
 1214|       |    PyTime_t ticks = (PyTime_t)uticks;
 1215|       |
 1216|       |    PyTime_t ns = _PyTimeFraction_Mul(ticks, &_PyRuntime.time.base);
 1217|       |    *tp = ns;
 1218|       |
 1219|       |#elif defined(__hpux)
 1220|       |    hrtime_t time = gethrtime();
 1221|       |    if (time == -1) {
 1222|       |        if (raise_exc) {
 1223|       |            PyErr_SetFromErrno(PyExc_OSError);
 1224|       |        }
 1225|       |        return -1;
 1226|       |    }
 1227|       |
 1228|       |    *tp = time;
 1229|       |
 1230|       |    if (info) {
 1231|       |        info->implementation = "gethrtime()";
 1232|       |        info->resolution = 1e-9;
 1233|       |        info->monotonic = 1;
 1234|       |        info->adjustable = 0;
 1235|       |    }
 1236|       |
 1237|       |#else
 1238|       |
 1239|       |#ifdef CLOCK_HIGHRES
 1240|       |    const clockid_t clk_id = CLOCK_HIGHRES;
 1241|       |    const char *implementation = "clock_gettime(CLOCK_HIGHRES)";
 1242|       |#else
 1243|      4|    const clockid_t clk_id = CLOCK_MONOTONIC;
 1244|      4|    const char *implementation = "clock_gettime(CLOCK_MONOTONIC)";
 1245|      4|#endif
 1246|       |
 1247|      4|    struct timespec ts;
 1248|      4|    if (clock_gettime(clk_id, &ts) != 0) {
  ------------------
  |  Branch (1248:9): [True: 0, False: 4]
  ------------------
 1249|      0|        if (raise_exc) {
  ------------------
  |  Branch (1249:13): [True: 0, False: 0]
  ------------------
 1250|      0|            PyErr_SetFromErrno(PyExc_OSError);
 1251|      0|            return -1;
 1252|      0|        }
 1253|      0|        return -1;
 1254|      0|    }
 1255|       |
 1256|      4|    if (pytime_fromtimespec(tp, &ts, raise_exc) < 0) {
  ------------------
  |  Branch (1256:9): [True: 0, False: 4]
  ------------------
 1257|      0|        return -1;
 1258|      0|    }
 1259|       |
 1260|      4|    if (info) {
  ------------------
  |  Branch (1260:9): [True: 0, False: 4]
  ------------------
 1261|      0|        info->monotonic = 1;
 1262|      0|        info->implementation = implementation;
 1263|      0|        info->adjustable = 0;
 1264|      0|        struct timespec res;
 1265|      0|        if (clock_getres(clk_id, &res) != 0) {
  ------------------
  |  Branch (1265:13): [True: 0, False: 0]
  ------------------
 1266|      0|            PyErr_SetFromErrno(PyExc_OSError);
 1267|      0|            return -1;
 1268|      0|        }
 1269|      0|        info->resolution = res.tv_sec + res.tv_nsec * 1e-9;
 1270|      0|    }
 1271|      4|#endif
 1272|      4|    return 0;
 1273|      4|}

_PySlotIterator_InitLegacy:
   61|     63|{
   62|     63|    init_with_kind(it, slots, kind, kind);
   63|     63|}
_PySlotIterator_Rewind:
   67|     39|{
   68|     39|    MSG("");
   69|     39|    MSG("rewind (%s slot iterator)", kind_name(it->kind));
   70|     39|    assert (it->is_at_end);
  ------------------
  |  Branch (70:5): [True: 39, False: 0]
  ------------------
   71|     39|    assert (it->recursion_level == 0);
  ------------------
  |  Branch (71:5): [True: 39, False: 0]
  ------------------
   72|     39|    assert (it->state == it->states);
  ------------------
  |  Branch (72:5): [True: 39, False: 0]
  ------------------
   73|     39|    it->is_at_end = false;
   74|     39|    it->state->any_slot = slots;
   75|       |    it->is_first_run = false;
   76|     39|}
_PySlotIterator_SawSlot:
   92|    376|{
   93|    376|    assert (id > 0);
  ------------------
  |  Branch (93:5): [True: 376, False: 0]
  ------------------
   94|    376|    assert (id < _Py_slot_COUNT);
  ------------------
  |  Branch (94:5): [True: 376, False: 0]
  ------------------
   95|    376|    return it->seen[seen_index(id)] & seen_mask(id);
   96|    376|}
_PySlotIterator_Next:
  116|    770|{
  117|    770|    MSG("next");
  118|    770|    assert(it);
  ------------------
  |  Branch (118:5): [True: 770, False: 0]
  ------------------
  119|    770|    assert(!it->is_at_end);
  ------------------
  |  Branch (119:5): [True: 770, False: 0]
  ------------------
  120|    770|    assert(!PyErr_Occurred());
  ------------------
  |  Branch (120:5): [True: 770, False: 0]
  ------------------
  121|       |
  122|    770|    it->current.sl_id = -1;
  123|       |
  124|    872|    while (true) {
  ------------------
  |  Branch (124:12): [True: 872, Folded]
  ------------------
  125|    872|        if (it->state->slot == NULL) {
  ------------------
  |  Branch (125:13): [True: 102, False: 770]
  ------------------
  126|    102|            if (it->recursion_level == 0) {
  ------------------
  |  Branch (126:17): [True: 102, False: 0]
  ------------------
  127|    102|                MSG("end (initial nesting level done)");
  128|    102|                it->is_at_end = true;
  129|    102|                return 0;
  130|    102|            }
  131|      0|            MSG("pop nesting level %d", (int)it->recursion_level);
  132|      0|            it->recursion_level--;
  133|      0|            it->state = &it->states[it->recursion_level];
  134|      0|            advance(it);
  135|      0|            continue;
  136|    102|        }
  137|       |
  138|    770|        switch (it->state->slot_struct_kind) {
  139|      0|            case _PySlot_KIND_SLOT: {
  ------------------
  |  Branch (139:13): [True: 0, False: 770]
  ------------------
  140|      0|                MSG("copying PySlot structure");
  141|      0|                it->current = *it->state->slot;
  142|      0|            } break;
  143|    656|            case _PySlot_KIND_TYPE: {
  ------------------
  |  Branch (143:13): [True: 656, False: 114]
  ------------------
  144|    656|                MSG("converting PyType_Slot structure");
  145|    656|                memset(&it->current, 0, sizeof(it->current));
  146|    656|                it->current.sl_id = (uint16_t)it->state->tp_slot->slot;
  147|    656|                it->current.sl_flags = PySlot_INTPTR;
  ------------------
  |  |   23|    656|#define PySlot_INTPTR 0x0004
  ------------------
  148|    656|                it->current.sl_ptr = (void*)it->state->tp_slot->pfunc;
  149|    656|            } break;
  150|    114|            case _PySlot_KIND_MOD: {
  ------------------
  |  Branch (150:13): [True: 114, False: 656]
  ------------------
  151|    114|                MSG("converting PyModuleDef_Slot structure");
  152|    114|                memset(&it->current, 0, sizeof(it->current));
  153|    114|                it->current.sl_id = (uint16_t)it->state->mod_slot->slot;
  154|    114|                it->current.sl_flags = PySlot_INTPTR;
  ------------------
  |  |   23|    114|#define PySlot_INTPTR 0x0004
  ------------------
  155|    114|                it->current.sl_ptr = (void*)it->state->mod_slot->value;
  156|    114|            } break;
  157|      0|            default: {
  ------------------
  |  Branch (157:13): [True: 0, False: 770]
  ------------------
  158|      0|                Py_UNREACHABLE();
  ------------------
  |  |  264|      0|#  define Py_UNREACHABLE() __builtin_unreachable()
  ------------------
  159|      0|            } break;
  160|    770|        }
  161|       |
  162|       |        /* shorter local names */
  163|    770|        PySlot *const result = &it->current;
  164|    770|        uint16_t flags = result->sl_flags;
  165|       |
  166|    770|        MSG("slot %d, flags 0x%x, from %p",
  167|    770|            (int)result->sl_id, (unsigned)flags, it->state->slot);
  168|       |
  169|    770|        uint16_t orig_id = result->sl_id;
  170|    770|        switch (it->kind) {
  171|    656|            case _PySlot_KIND_TYPE:
  ------------------
  |  Branch (171:13): [True: 656, False: 114]
  ------------------
  172|    656|                result->sl_id = _PySlot_resolve_type_slot(result->sl_id);
  173|    656|                break;
  174|    114|            case _PySlot_KIND_MOD:
  ------------------
  |  Branch (174:13): [True: 114, False: 656]
  ------------------
  175|    114|                result->sl_id = _PySlot_resolve_mod_slot(result->sl_id);
  176|    114|                break;
  177|      0|            default:
  ------------------
  |  Branch (177:13): [True: 0, False: 770]
  ------------------
  178|      0|                Py_UNREACHABLE();
  ------------------
  |  |  264|      0|#  define Py_UNREACHABLE() __builtin_unreachable()
  ------------------
  179|    770|        }
  180|    770|        MSG("resolved to slot %d (%s)",
  181|    770|            (int)result->sl_id, _PySlot_GetName(result->sl_id));
  182|       |
  183|    770|        if (result->sl_id == Py_slot_invalid) {
  ------------------
  |  |   25|    770|#define Py_slot_invalid 0xffff
  ------------------
  |  Branch (183:13): [True: 0, False: 770]
  ------------------
  184|      0|            MSG("error (unknown/invalid slot)");
  185|      0|            if (flags & PySlot_OPTIONAL) {
  ------------------
  |  |   21|      0|#define PySlot_OPTIONAL 0x0001
  ------------------
  |  Branch (185:17): [True: 0, False: 0]
  ------------------
  186|      0|                advance(it);
  187|      0|                continue;
  188|      0|            }
  189|      0|            _PySlot_err_bad_slot(kind_name(it->kind), orig_id);
  190|      0|            goto error;
  191|      0|        }
  192|    770|        if (result->sl_id == Py_slot_end) {
  ------------------
  |  |   12|    770|#define Py_slot_end 0
  ------------------
  |  Branch (192:13): [True: 102, False: 668]
  ------------------
  193|    102|            MSG("sentinel slot, flags %x", (unsigned)flags);
  194|    102|            if (flags & PySlot_OPTIONAL) {
  ------------------
  |  |   21|    102|#define PySlot_OPTIONAL 0x0001
  ------------------
  |  Branch (194:17): [True: 0, False: 102]
  ------------------
  195|      0|                MSG("error (bad flags on sentinel)");
  196|      0|                PyErr_Format(PyExc_SystemError,
  197|      0|                            "invalid flags for Py_slot_end: 0x%x",
  198|      0|                             (unsigned int)flags);
  199|      0|                goto error;
  200|      0|            }
  201|    102|            it->state->slot = NULL;
  202|    102|            continue;
  203|    102|        }
  204|       |
  205|    668|        if (result->sl_id == Py_slot_subslots
  ------------------
  |  |  100|  1.33k|#define Py_slot_subslots 92
  ------------------
  |  Branch (205:13): [True: 0, False: 668]
  ------------------
  206|    668|            || result->sl_id == Py_tp_slots
  ------------------
  |  |  101|  1.33k|#define Py_tp_slots 93
  ------------------
  |  Branch (206:16): [True: 0, False: 668]
  ------------------
  207|    668|            || result->sl_id == Py_mod_slots
  ------------------
  |  |  102|    668|#define Py_mod_slots 94
  ------------------
  |  Branch (207:16): [True: 0, False: 668]
  ------------------
  208|    668|        ) {
  209|      0|            if (result->sl_ptr == NULL) {
  ------------------
  |  Branch (209:17): [True: 0, False: 0]
  ------------------
  210|      0|                MSG("NULL subslots; skipping");
  211|      0|                advance(it);
  212|      0|                continue;
  213|      0|            }
  214|      0|            if ((it->states[0].slot_struct_kind == _PySlot_KIND_MOD)
  ------------------
  |  Branch (214:17): [True: 0, False: 0]
  ------------------
  215|      0|                && (it->state->slot_struct_kind == _PySlot_KIND_SLOT)
  ------------------
  |  Branch (215:20): [True: 0, False: 0]
  ------------------
  216|      0|                && !(result->sl_flags & PySlot_STATIC))
  ------------------
  |  |   22|      0|#define PySlot_STATIC 0x0002
  ------------------
  |  Branch (216:20): [True: 0, False: 0]
  ------------------
  217|      0|            {
  218|      0|                PyErr_Format(PyExc_SystemError,
  219|      0|                             "slots included from PyModuleDef must be static");
  220|      0|                goto error;
  221|      0|            }
  222|      0|            it->recursion_level++;
  223|      0|            MSG("recursing into level %d", it->recursion_level);
  224|      0|            if (it->recursion_level >= _PySlot_MAX_NESTING) {
  ------------------
  |  |   39|      0|#define _PySlot_MAX_NESTING 5
  ------------------
  |  Branch (224:17): [True: 0, False: 0]
  ------------------
  225|      0|                MSG("error (too much nesting)");
  226|      0|                PyErr_Format(PyExc_SystemError,
  227|      0|                            "%s (slot %d): too many levels of nested slots",
  228|      0|                            _PySlot_GetName(result->sl_id), orig_id);
  229|      0|                goto error;
  230|      0|            }
  231|      0|            it->state = &it->states[it->recursion_level];
  232|      0|            memset(it->state, 0, sizeof(_PySlotIterator_state));
  233|      0|            it->state->slot = result->sl_ptr;
  234|      0|            switch (result->sl_id) {
  ------------------
  |  Branch (234:21): [True: 0, False: 0]
  ------------------
  235|      0|                case Py_slot_subslots:
  ------------------
  |  |  100|      0|#define Py_slot_subslots 92
  ------------------
  |  Branch (235:17): [True: 0, False: 0]
  ------------------
  236|      0|                    it->state->slot_struct_kind = _PySlot_KIND_SLOT; break;
  237|      0|                case Py_tp_slots:
  ------------------
  |  |  101|      0|#define Py_tp_slots 93
  ------------------
  |  Branch (237:17): [True: 0, False: 0]
  ------------------
  238|      0|                    it->state->slot_struct_kind = _PySlot_KIND_TYPE; break;
  239|      0|                case Py_mod_slots:
  ------------------
  |  |  102|      0|#define Py_mod_slots 94
  ------------------
  |  Branch (239:17): [True: 0, False: 0]
  ------------------
  240|      0|                    it->state->slot_struct_kind = _PySlot_KIND_MOD; break;
  241|      0|            }
  242|      0|            continue;
  243|      0|        }
  244|       |
  245|    668|        if (flags & PySlot_INTPTR) {
  ------------------
  |  |   23|    668|#define PySlot_INTPTR 0x0004
  ------------------
  |  Branch (245:13): [True: 668, False: 0]
  ------------------
  246|    668|            MSG("casting from intptr");
  247|       |            /* this should compile to nothing on common architectures */
  248|    668|            switch (_PySlot_get_dtype(result->sl_id)) {
  ------------------
  |  Branch (248:21): [True: 668, False: 0]
  ------------------
  249|      0|                case _PySlot_DTYPE_SIZE: {
  ------------------
  |  Branch (249:17): [True: 0, False: 668]
  ------------------
  250|      0|                    result->sl_size = (Py_ssize_t)(intptr_t)result->sl_ptr;
  251|      0|                } break;
  252|      0|                case _PySlot_DTYPE_INT64: {
  ------------------
  |  Branch (252:17): [True: 0, False: 668]
  ------------------
  253|      0|                    result->sl_int64 = (int64_t)(intptr_t)result->sl_ptr;
  254|      0|                } break;
  255|     48|                case _PySlot_DTYPE_UINT64: {
  ------------------
  |  Branch (255:17): [True: 48, False: 620]
  ------------------
  256|     48|                    result->sl_uint64 = (uint64_t)(intptr_t)result->sl_ptr;
  257|     48|                } break;
  258|    238|                case _PySlot_DTYPE_PTR:
  ------------------
  |  Branch (258:17): [True: 238, False: 430]
  ------------------
  259|    620|                case _PySlot_DTYPE_FUNC:
  ------------------
  |  Branch (259:17): [True: 382, False: 286]
  ------------------
  260|    620|                case _PySlot_DTYPE_VOID:
  ------------------
  |  Branch (260:17): [True: 0, False: 668]
  ------------------
  261|    620|                    break;
  262|    668|            }
  263|    668|        }
  264|       |
  265|    668|        advance(it);
  266|    668|        switch (_PySlot_get_dtype(result->sl_id)) {
  ------------------
  |  Branch (266:17): [True: 668, False: 0]
  ------------------
  267|      0|            case _PySlot_DTYPE_VOID:
  ------------------
  |  Branch (267:13): [True: 0, False: 668]
  ------------------
  268|    238|            case _PySlot_DTYPE_PTR:
  ------------------
  |  Branch (268:13): [True: 238, False: 430]
  ------------------
  269|    238|                MSG("result: %d (%s): %p",
  270|    238|                    (int)result->sl_id, _PySlot_GetName(result->sl_id),
  271|    238|                    (void*)result->sl_ptr);
  272|    238|                break;
  273|    382|            case _PySlot_DTYPE_FUNC:
  ------------------
  |  Branch (273:13): [True: 382, False: 286]
  ------------------
  274|    382|                MSG("result: %d (%s): %p",
  275|    382|                    (int)result->sl_id, _PySlot_GetName(result->sl_id),
  276|    382|                    (void*)result->sl_func);
  277|    382|                break;
  278|      0|            case _PySlot_DTYPE_SIZE:
  ------------------
  |  Branch (278:13): [True: 0, False: 668]
  ------------------
  279|      0|                MSG("result: %d (%s): %zd",
  280|      0|                    (int)result->sl_id, _PySlot_GetName(result->sl_id),
  281|      0|                    (Py_ssize_t)result->sl_size);
  282|      0|                break;
  283|      0|            case _PySlot_DTYPE_INT64:
  ------------------
  |  Branch (283:13): [True: 0, False: 668]
  ------------------
  284|      0|                MSG("result: %d (%s): %ld",
  285|      0|                    (int)result->sl_id,  _PySlot_GetName(result->sl_id),
  286|      0|                    (long)result->sl_int64);
  287|      0|                break;
  288|     48|            case _PySlot_DTYPE_UINT64:
  ------------------
  |  Branch (288:13): [True: 48, False: 620]
  ------------------
  289|     48|                MSG("result: %d (%s): %lu (0x%lx)",
  290|     48|                    (int)result->sl_id, _PySlot_GetName(result->sl_id),
  291|     48|                    (unsigned long)result->sl_int64,
  292|     48|                    (unsigned long)result->sl_int64);
  293|     48|                break;
  294|    668|        }
  295|    668|        assert (result->sl_id > 0);
  ------------------
  |  Branch (295:9): [True: 668, False: 0]
  ------------------
  296|    668|        assert (result->sl_id <= _Py_slot_COUNT);
  ------------------
  |  Branch (296:9): [True: 668, False: 0]
  ------------------
  297|    668|        if (it->is_first_run && (handle_first_run(it) < 0)) {
  ------------------
  |  Branch (297:13): [True: 379, False: 289]
  |  Branch (297:33): [True: 0, False: 379]
  ------------------
  298|      0|            goto error;
  299|      0|        }
  300|    668|        return result->sl_id != Py_slot_end;
  ------------------
  |  |   12|    668|#define Py_slot_end 0
  ------------------
  301|    668|    }
  302|    770|    Py_UNREACHABLE();
  ------------------
  |  |  264|      0|#  define Py_UNREACHABLE() __builtin_unreachable()
  ------------------
  303|       |
  304|      0|error:
  305|      0|    it->current.sl_id = Py_slot_invalid;
  ------------------
  |  |   25|      0|#define Py_slot_invalid 0xffff
  ------------------
  306|       |    return true;
  307|    770|}
slots.c:init_with_kind:
   36|     63|{
   37|     63|    MSG("");
   38|     63|    MSG("init (%s slot iterator)", kind_name(result_kind));
   39|     63|    it->state = it->states;
   40|     63|    it->state->any_slot = slots;
   41|     63|    it->state->slot_struct_kind = slot_struct_kind;
   42|     63|    it->kind = result_kind;
   43|     63|    it->name = NULL;
   44|     63|    it->recursion_level = 0;
   45|     63|    it->is_at_end = false;
   46|       |    it->is_first_run = true;
   47|     63|    it->current.sl_id = 0;
   48|     63|    memset(it->seen, 0, sizeof(it->seen));
   49|     63|}
slots.c:seen_index:
   80|    755|{
   81|    755|    return id / _PySlot_SEEN_ENTRY_BITS;
  ------------------
  |  |   53|    755|#define _PySlot_SEEN_ENTRY_BITS (8 * sizeof(unsigned int))
  ------------------
   82|    755|}
slots.c:seen_mask:
   86|    755|{
   87|    755|    return ((unsigned int)1) << (id % _PySlot_SEEN_ENTRY_BITS);
  ------------------
  |  |   53|    755|#define _PySlot_SEEN_ENTRY_BITS (8 * sizeof(unsigned int))
  ------------------
   88|    755|}
slots.c:advance:
  101|    668|{
  102|    668|    MSG("advance (at level %d)", (int)it->recursion_level);
  103|    668|    switch (it->state->slot_struct_kind) {
  104|      0|        case _PySlot_KIND_SLOT: it->state->slot++; break;
  ------------------
  |  Branch (104:9): [True: 0, False: 668]
  ------------------
  105|    578|        case _PySlot_KIND_TYPE: it->state->tp_slot++; break;
  ------------------
  |  Branch (105:9): [True: 578, False: 90]
  ------------------
  106|     90|        case _PySlot_KIND_MOD: it->state->mod_slot++; break;
  ------------------
  |  Branch (106:9): [True: 90, False: 578]
  ------------------
  107|      0|        default:
  ------------------
  |  Branch (107:9): [True: 0, False: 668]
  ------------------
  108|      0|            Py_UNREACHABLE();
  ------------------
  |  |  264|      0|#  define Py_UNREACHABLE() __builtin_unreachable()
  ------------------
  109|    668|    }
  110|    668|}
slots.c:handle_first_run:
  312|    379|{
  313|    379|    int id = it->current.sl_id;
  314|       |
  315|    379|    if (_PySlot_get_must_be_static(id)) {
  ------------------
  |  Branch (315:9): [True: 76, False: 303]
  ------------------
  316|     76|        if (!(it->current.sl_flags & PySlot_STATIC)
  ------------------
  |  |   22|     76|#define PySlot_STATIC 0x0002
  ------------------
  |  Branch (316:13): [True: 76, False: 0]
  ------------------
  317|     76|            && (it->state->slot_struct_kind == _PySlot_KIND_SLOT))
  ------------------
  |  Branch (317:16): [True: 0, False: 76]
  ------------------
  318|      0|        {
  319|      0|            PyErr_Format(
  320|      0|                PyExc_SystemError,
  321|      0|                "%s requires PySlot_STATIC",
  322|      0|                _PySlot_GetName(id));
  323|      0|            return -1;
  324|      0|        }
  325|     76|    }
  326|       |
  327|    379|    _PySlot_PROBLEM_HANDLING null_handling = _PySlot_get_null_handling(id);
  328|    379|    if (null_handling != _PySlot_PROBLEM_ALLOW) {
  ------------------
  |  Branch (328:9): [True: 298, False: 81]
  ------------------
  329|    298|        bool is_null = false;
  330|    298|        switch (_PySlot_get_dtype(id)) {
  331|     96|            case _PySlot_DTYPE_PTR: {
  ------------------
  |  Branch (331:13): [True: 96, False: 202]
  ------------------
  332|     96|                is_null = it->current.sl_ptr == NULL;
  333|     96|            } break;
  334|    202|            case _PySlot_DTYPE_FUNC: {
  ------------------
  |  Branch (334:13): [True: 202, False: 96]
  ------------------
  335|    202|                is_null = it->current.sl_func == NULL;
  336|    202|            } break;
  337|      0|            default: {
  ------------------
  |  Branch (337:13): [True: 0, False: 298]
  ------------------
  338|       |                //Py_UNREACHABLE();
  339|      0|            } break;
  340|    298|        }
  341|    298|        if (is_null) {
  ------------------
  |  Branch (341:13): [True: 0, False: 298]
  ------------------
  342|      0|            MSG("slot is NULL but shouldn't");
  343|      0|            if (null_handling == _PySlot_PROBLEM_REJECT) {
  ------------------
  |  Branch (343:17): [True: 0, False: 0]
  ------------------
  344|      0|                MSG("error (NULL rejected)");
  345|      0|                PyErr_Format(PyExc_SystemError,
  346|      0|                             "NULL not allowed for slot %s",
  347|      0|                             _PySlot_GetName(id));
  348|      0|                return -1;
  349|      0|            }
  350|      0|            if (it->states[0].slot_struct_kind == _PySlot_KIND_SLOT) {
  ------------------
  |  Branch (350:17): [True: 0, False: 0]
  ------------------
  351|      0|                MSG("deprecated NULL");
  352|      0|                if (PyErr_WarnFormat(
  ------------------
  |  Branch (352:21): [True: 0, False: 0]
  ------------------
  353|      0|                    PyExc_DeprecationWarning,
  354|      0|                    1,
  355|      0|                    "NULL value in slot %s is deprecated",
  356|      0|                    _PySlot_GetName(id)) < 0)
  357|      0|                {
  358|      0|                    return -1;
  359|      0|                }
  360|      0|            }
  361|      0|            else {
  362|      0|                MSG("unwanted NULL in legacy struct");
  363|      0|            }
  364|      0|        }
  365|    298|    }
  366|       |
  367|    379|    _PySlot_PROBLEM_HANDLING duplicate_handling = _PySlot_get_duplicate_handling(id);
  368|    379|    if (duplicate_handling != _PySlot_PROBLEM_ALLOW) {
  ------------------
  |  Branch (368:9): [True: 337, False: 42]
  ------------------
  369|    337|        if (_PySlotIterator_SawSlot(it, id)) {
  ------------------
  |  Branch (369:13): [True: 0, False: 337]
  ------------------
  370|      0|            MSG("slot was seen before but shouldn't be duplicated");
  371|      0|            if (duplicate_handling == _PySlot_PROBLEM_REJECT) {
  ------------------
  |  Branch (371:17): [True: 0, False: 0]
  ------------------
  372|      0|                MSG("error (duplicate rejected)");
  373|      0|                PyErr_Format(
  374|      0|                    PyExc_SystemError,
  375|      0|                    "%s%s%s has multiple %s (%d) slots",
  376|      0|                    kind_name(it->kind),
  377|      0|                    it->name ? " " : "",
  ------------------
  |  Branch (377:21): [True: 0, False: 0]
  ------------------
  378|      0|                    it->name ? it->name : "",
  ------------------
  |  Branch (378:21): [True: 0, False: 0]
  ------------------
  379|      0|                    _PySlot_GetName(id),
  380|      0|                    (int)it->current.sl_id);
  381|      0|                return -1;
  382|      0|            }
  383|      0|            if (it->states[0].slot_struct_kind == _PySlot_KIND_SLOT) {
  ------------------
  |  Branch (383:17): [True: 0, False: 0]
  ------------------
  384|      0|                MSG("deprecated duplicate");
  385|      0|                if (PyErr_WarnFormat(
  ------------------
  |  Branch (385:21): [True: 0, False: 0]
  ------------------
  386|      0|                        PyExc_DeprecationWarning,
  387|      0|                        0,
  388|      0|                        "%s%s%s has multiple %s (%d) slots. This is deprecated.",
  389|      0|                        kind_name(it->kind),
  390|      0|                        it->name ? " " : "",
  ------------------
  |  Branch (390:25): [True: 0, False: 0]
  ------------------
  391|      0|                        it->name ? it->name : "",
  ------------------
  |  Branch (391:25): [True: 0, False: 0]
  ------------------
  392|      0|                        _PySlot_GetName(id),
  393|      0|                        (int)it->current.sl_id) < 0) {
  394|      0|                    return -1;
  395|      0|                }
  396|      0|            }
  397|      0|            else {
  398|      0|                MSG("unwanted duplicate in legacy struct");
  399|      0|            }
  400|      0|        }
  401|    337|    }
  402|    379|    it->seen[seen_index(id)] |= seen_mask(id);
  403|    379|    return 0;
  404|    379|}

_PyCode_Quicken:
   64|    743|{
   65|    743|    #if ENABLE_SPECIALIZATION
   66|    743|    _Py_BackoffCounter jump_counter, adaptive_counter, resume_counter;
   67|    743|    if (enable_counters) {
  ------------------
  |  Branch (67:9): [True: 743, False: 0]
  ------------------
   68|    743|        PyThreadState *tstate = _PyThreadState_GET();
   69|    743|        PyInterpreterState *interp = tstate->interp;
   70|    743|        jump_counter = initial_jump_backoff_counter(&interp->opt_config);
   71|    743|        adaptive_counter = adaptive_counter_warmup();
   72|    743|        resume_counter = initial_resume_backoff_counter(&interp->opt_config);
   73|    743|    }
   74|      0|    else {
   75|      0|        jump_counter = initial_unreachable_backoff_counter();
   76|      0|        adaptive_counter = initial_unreachable_backoff_counter();
   77|      0|        resume_counter = initial_unreachable_backoff_counter();
   78|      0|    }
   79|    743|    int opcode = 0;
   80|    743|    int oparg = 0;
   81|       |    /* The last code unit cannot have a cache, so we don't need to check it */
   82|  34.4k|    for (Py_ssize_t i = 0; i < size-1; i++) {
  ------------------
  |  Branch (82:28): [True: 33.7k, False: 743]
  ------------------
   83|  33.7k|        opcode = instructions[i].op.code;
   84|  33.7k|        int caches = _PyOpcode_Caches[opcode];
   85|  33.7k|        oparg = (oparg << 8) | instructions[i].op.arg;
   86|  33.7k|        if (opcode == GET_ITER) {
  ------------------
  |  |   83|  33.7k|#define GET_ITER                                70
  ------------------
  |  Branch (86:13): [True: 143, False: 33.6k]
  ------------------
   87|    143|            fixup_getiter(&instructions[i], flags);
   88|    143|        }
   89|  33.7k|        if (caches) {
  ------------------
  |  Branch (89:13): [True: 10.7k, False: 23.0k]
  ------------------
   90|       |            // The initial value depends on the opcode
   91|  10.7k|            switch (opcode) {
   92|    295|                case JUMP_BACKWARD:
  ------------------
  |  |   87|    295|#define JUMP_BACKWARD                           74
  ------------------
  |  Branch (92:17): [True: 295, False: 10.4k]
  ------------------
   93|    295|                    instructions[i + 1].counter = jump_counter;
   94|    295|                    break;
   95|    807|                case RESUME:
  ------------------
  |  |  133|    807|#define RESUME                                 128
  ------------------
  |  Branch (95:17): [True: 807, False: 9.93k]
  ------------------
   96|    807|                    instructions[i + 1].counter = resume_counter;
   97|    807|                    break;
   98|    850|                case POP_JUMP_IF_FALSE:
  ------------------
  |  |  112|    850|#define POP_JUMP_IF_FALSE                       99
  ------------------
  |  Branch (98:17): [True: 850, False: 9.89k]
  ------------------
   99|  1.19k|                case POP_JUMP_IF_TRUE:
  ------------------
  |  |  115|  1.19k|#define POP_JUMP_IF_TRUE                       102
  ------------------
  |  Branch (99:17): [True: 349, False: 10.3k]
  ------------------
  100|  1.26k|                case POP_JUMP_IF_NONE:
  ------------------
  |  |  113|  1.26k|#define POP_JUMP_IF_NONE                       100
  ------------------
  |  Branch (100:17): [True: 63, False: 10.6k]
  ------------------
  101|  1.36k|                case POP_JUMP_IF_NOT_NONE:
  ------------------
  |  |  114|  1.36k|#define POP_JUMP_IF_NOT_NONE                   101
  ------------------
  |  Branch (101:17): [True: 107, False: 10.6k]
  ------------------
  102|  1.36k|                    instructions[i + 1].cache = 0x5555;  // Alternating 0, 1 bits
  103|  1.36k|                    break;
  104|  8.27k|                default:
  ------------------
  |  Branch (104:17): [True: 8.27k, False: 2.47k]
  ------------------
  105|  8.27k|                    instructions[i + 1].counter = adaptive_counter;
  106|  8.27k|                    break;
  107|  10.7k|            }
  108|  10.7k|            i += caches;
  109|  10.7k|        }
  110|  33.7k|        if (opcode != EXTENDED_ARG) {
  ------------------
  |  |   80|  33.7k|#define EXTENDED_ARG                            67
  ------------------
  |  Branch (110:13): [True: 33.3k, False: 379]
  ------------------
  111|  33.3k|            oparg = 0;
  112|  33.3k|        }
  113|  33.7k|    }
  114|       |    #else
  115|       |    for (Py_ssize_t i = 0; i < size-1; i++) {
  116|       |        if (instructions[i].op.code == GET_ITER) {
  117|       |            fixup_getiter(&instructions[i], flags);
  118|       |        }
  119|       |        i += _PyOpcode_Caches[opcode];
  120|       |    }
  121|       |    #endif /* ENABLE_SPECIALIZATION */
  122|    743|}
_Py_Specialize_LoadSuperAttr:
  468|      3|_Py_Specialize_LoadSuperAttr(_PyStackRef global_super_st, _PyStackRef cls_st, _Py_CODEUNIT *instr, int load_method) {
  469|      3|    PyObject *global_super = PyStackRef_AsPyObjectBorrow(global_super_st);
  470|      3|    PyObject *cls = PyStackRef_AsPyObjectBorrow(cls_st);
  471|       |
  472|      3|    assert(ENABLE_SPECIALIZATION);
  ------------------
  |  Branch (472:5): [True: 3, Folded]
  ------------------
  473|      3|    assert(_PyOpcode_Caches[LOAD_SUPER_ATTR] == INLINE_CACHE_ENTRIES_LOAD_SUPER_ATTR);
  ------------------
  |  Branch (473:5): [True: 3, False: 0]
  ------------------
  474|      3|    if (global_super != (PyObject *)&PySuper_Type) {
  ------------------
  |  Branch (474:9): [True: 0, False: 3]
  ------------------
  475|      0|        SPECIALIZATION_FAIL(LOAD_SUPER_ATTR, SPEC_FAIL_SUPER_SHADOWED);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
  476|      0|        goto fail;
  477|      0|    }
  478|      3|    if (!PyType_Check(cls)) {
  ------------------
  |  |  766|      3|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (478:9): [True: 0, False: 3]
  ------------------
  479|      0|        SPECIALIZATION_FAIL(LOAD_SUPER_ATTR, SPEC_FAIL_SUPER_BAD_CLASS);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
  480|      0|        goto fail;
  481|      0|    }
  482|      3|    uint8_t load_code = load_method ? LOAD_SUPER_ATTR_METHOD : LOAD_SUPER_ATTR_ATTR;
  ------------------
  |  |  204|      2|#define LOAD_SUPER_ATTR_METHOD                 199
  ------------------
                  uint8_t load_code = load_method ? LOAD_SUPER_ATTR_METHOD : LOAD_SUPER_ATTR_ATTR;
  ------------------
  |  |  203|      4|#define LOAD_SUPER_ATTR_ATTR                   198
  ------------------
  |  Branch (482:25): [True: 2, False: 1]
  ------------------
  483|      3|    specialize(instr, load_code);
  484|      3|    return;
  485|      0|fail:
  486|      0|    unspecialize(instr);
  487|      0|}
_Py_Specialize_LoadAttr:
  995|    236|{
  996|    236|    PyObject *owner = PyStackRef_AsPyObjectBorrow(owner_st);
  997|       |
  998|    236|    assert(ENABLE_SPECIALIZATION);
  ------------------
  |  Branch (998:5): [True: 236, Folded]
  ------------------
  999|    236|    assert(_PyOpcode_Caches[LOAD_ATTR] == INLINE_CACHE_ENTRIES_LOAD_ATTR);
  ------------------
  |  Branch (999:5): [True: 236, False: 0]
  ------------------
 1000|    236|    PyTypeObject *type = Py_TYPE(owner);
  ------------------
  |  |  213|    236|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    236|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    236|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1001|    236|    bool fail;
 1002|    236|    if (!_PyType_IsReady(type)) {
  ------------------
  |  Branch (1002:9): [True: 0, False: 236]
  ------------------
 1003|       |        // We *might* not really need this check, but we inherited it from
 1004|       |        // PyObject_GenericGetAttr and friends... and this way we still do the
 1005|       |        // right thing if someone forgets to call PyType_Ready(type):
 1006|      0|        SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_OTHER);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1007|      0|        fail = true;
 1008|      0|    }
 1009|    236|    else if (Py_TYPE(owner)->tp_getattro == PyModule_Type.tp_getattro) {
  ------------------
  |  |  213|    236|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    236|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    236|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1009:14): [True: 81, False: 155]
  ------------------
 1010|     81|        fail = specialize_module_load_attr(owner, instr, name);
 1011|     81|    }
 1012|    155|    else if (PyType_Check(owner)) {
  ------------------
  |  |  766|    155|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    155|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    155|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (766:28): [True: 29, False: 126]
  |  |  ------------------
  ------------------
 1013|     29|        fail = specialize_class_load_attr(owner, instr, name);
 1014|     29|    }
 1015|    126|    else {
 1016|    126|        fail = specialize_instance_load_attr(owner, instr, name);
 1017|    126|    }
 1018|       |
 1019|    236|    if (fail) {
  ------------------
  |  Branch (1019:9): [True: 36, False: 200]
  ------------------
 1020|     36|        unspecialize(instr);
 1021|     36|    }
 1022|    236|}
_Py_Specialize_StoreAttr:
 1026|     64|{
 1027|     64|    PyObject *owner = PyStackRef_AsPyObjectBorrow(owner_st);
 1028|       |
 1029|     64|    assert(ENABLE_SPECIALIZATION);
  ------------------
  |  Branch (1029:5): [True: 64, Folded]
  ------------------
 1030|     64|    assert(_PyOpcode_Caches[STORE_ATTR] == INLINE_CACHE_ENTRIES_STORE_ATTR);
  ------------------
  |  Branch (1030:5): [True: 64, False: 0]
  ------------------
 1031|     64|    PyObject *descr = NULL;
 1032|     64|    _PyAttrCache *cache = (_PyAttrCache *)(instr + 1);
 1033|     64|    PyTypeObject *type = Py_TYPE(owner);
  ------------------
  |  |  213|     64|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     64|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     64|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1034|     64|    if (!_PyType_IsReady(type)) {
  ------------------
  |  Branch (1034:9): [True: 0, False: 64]
  ------------------
 1035|       |        // We *might* not really need this check, but we inherited it from
 1036|       |        // PyObject_GenericSetAttr and friends... and this way we still do the
 1037|       |        // right thing if someone forgets to call PyType_Ready(type):
 1038|      0|        SPECIALIZATION_FAIL(STORE_ATTR, SPEC_FAIL_OTHER);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1039|      0|        goto fail;
 1040|      0|    }
 1041|     64|    if (PyModule_CheckExact(owner)) {
  ------------------
  |  |   13|     64|#define PyModule_CheckExact(op) Py_IS_TYPE((op), &PyModule_Type)
  |  |  ------------------
  |  |  |  |  215|     64|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     64|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     64|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 8, False: 56]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1042|      8|        SPECIALIZATION_FAIL(STORE_ATTR, SPEC_FAIL_OVERRIDDEN);
  ------------------
  |  |   43|      8|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1043|      8|        goto fail;
 1044|      8|    }
 1045|     56|    unsigned int tp_version = 0;
 1046|     56|    DescriptorClassification kind = analyze_descriptor_store(type, name, &descr, &tp_version);
 1047|     56|    if (tp_version == 0) {
  ------------------
  |  Branch (1047:9): [True: 0, False: 56]
  ------------------
 1048|      0|        goto fail;
 1049|      0|    }
 1050|     56|    assert(descr != NULL || kind == ABSENT || kind == GETSET_OVERRIDDEN);
  ------------------
  |  Branch (1050:5): [True: 2, False: 54]
  |  Branch (1050:5): [True: 54, False: 0]
  |  Branch (1050:5): [True: 0, False: 0]
  ------------------
 1051|     56|    switch(kind) {
  ------------------
  |  Branch (1051:12): [True: 56, False: 0]
  ------------------
 1052|      0|        case OVERRIDING:
  ------------------
  |  Branch (1052:9): [True: 0, False: 56]
  ------------------
 1053|      0|            SPECIALIZATION_FAIL(STORE_ATTR, SPEC_FAIL_ATTR_OVERRIDING_DESCRIPTOR);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1054|      0|            goto fail;
 1055|      0|        case METHOD:
  ------------------
  |  Branch (1055:9): [True: 0, False: 56]
  ------------------
 1056|      0|            SPECIALIZATION_FAIL(STORE_ATTR, SPEC_FAIL_ATTR_METHOD);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1057|      0|            goto fail;
 1058|      1|        case PROPERTY:
  ------------------
  |  Branch (1058:9): [True: 1, False: 55]
  ------------------
 1059|      1|            SPECIALIZATION_FAIL(STORE_ATTR, SPEC_FAIL_ATTR_PROPERTY);
  ------------------
  |  |   43|      1|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1060|      1|            goto fail;
 1061|      1|        case OBJECT_SLOT:
  ------------------
  |  Branch (1061:9): [True: 1, False: 55]
  ------------------
 1062|      1|        {
 1063|      1|            PyMemberDescrObject *member = (PyMemberDescrObject *)descr;
 1064|      1|            struct PyMemberDef *dmem = member->d_member;
 1065|      1|            Py_ssize_t offset = dmem->offset;
 1066|      1|            if (!PyObject_TypeCheck(owner, member->d_common.d_type)) {
  ------------------
  |  |  378|      1|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1066:17): [True: 0, False: 1]
  ------------------
 1067|      0|                SPECIALIZATION_FAIL(STORE_ATTR, SPEC_FAIL_EXPECTED_ERROR);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1068|      0|                goto fail;
 1069|      0|            }
 1070|      1|            if (dmem->flags & _Py_AFTER_ITEMS) {
  ------------------
  |  |   89|      1|#  define _Py_AFTER_ITEMS      (1 << 4) // For internal use.
  ------------------
  |  Branch (1070:17): [True: 0, False: 1]
  ------------------
 1071|      0|                SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_ATTR_SLOT_AFTER_ITEMS);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1072|      0|                goto fail;
 1073|      0|            }
 1074|      1|            if (dmem->flags & Py_READONLY) {
  ------------------
  |  |   83|      1|#define Py_READONLY            (1 << 0)
  ------------------
  |  Branch (1074:17): [True: 0, False: 1]
  ------------------
 1075|      0|                SPECIALIZATION_FAIL(STORE_ATTR, SPEC_FAIL_ATTR_READ_ONLY);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1076|      0|                goto fail;
 1077|      0|            }
 1078|      1|            if (offset != (uint16_t)offset) {
  ------------------
  |  Branch (1078:17): [True: 0, False: 1]
  ------------------
 1079|      0|                SPECIALIZATION_FAIL(STORE_ATTR, SPEC_FAIL_OUT_OF_RANGE);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1080|      0|                goto fail;
 1081|      0|            }
 1082|      1|            assert(dmem->type == Py_T_OBJECT_EX || dmem->type == _Py_T_OBJECT);
  ------------------
  |  Branch (1082:13): [True: 1, False: 0]
  |  Branch (1082:13): [True: 0, False: 0]
  ------------------
 1083|      1|            assert(offset > 0);
  ------------------
  |  Branch (1083:13): [True: 1, False: 0]
  ------------------
 1084|      1|            cache->index = (uint16_t)offset;
 1085|      1|            write_u32(cache->version, tp_version);
 1086|      1|            specialize(instr, STORE_ATTR_SLOT);
  ------------------
  |  |  211|      1|#define STORE_ATTR_SLOT                        206
  ------------------
 1087|      1|            goto success;
 1088|      1|        }
 1089|      0|        case DUNDER_CLASS:
  ------------------
  |  Branch (1089:9): [True: 0, False: 56]
  ------------------
 1090|      0|        case OTHER_SLOT:
  ------------------
  |  Branch (1090:9): [True: 0, False: 56]
  ------------------
 1091|      0|            SPECIALIZATION_FAIL(STORE_ATTR, SPEC_FAIL_ATTR_NON_OBJECT_SLOT);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1092|      0|            goto fail;
 1093|      0|        case MUTABLE:
  ------------------
  |  Branch (1093:9): [True: 0, False: 56]
  ------------------
 1094|      0|            SPECIALIZATION_FAIL(STORE_ATTR, SPEC_FAIL_ATTR_MUTABLE_CLASS);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1095|      0|            goto fail;
 1096|      0|        case GETATTRIBUTE_IS_PYTHON_FUNCTION:
  ------------------
  |  Branch (1096:9): [True: 0, False: 56]
  ------------------
 1097|      0|        case GETSET_OVERRIDDEN:
  ------------------
  |  Branch (1097:9): [True: 0, False: 56]
  ------------------
 1098|      0|            SPECIALIZATION_FAIL(STORE_ATTR, SPEC_FAIL_OVERRIDDEN);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1099|      0|            goto fail;
 1100|      0|        case BUILTIN_CLASSMETHOD:
  ------------------
  |  Branch (1100:9): [True: 0, False: 56]
  ------------------
 1101|      0|            SPECIALIZATION_FAIL(STORE_ATTR, SPEC_FAIL_ATTR_BUILTIN_CLASS_METHOD_OBJ);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1102|      0|            goto fail;
 1103|      0|        case PYTHON_CLASSMETHOD:
  ------------------
  |  Branch (1103:9): [True: 0, False: 56]
  ------------------
 1104|      0|            SPECIALIZATION_FAIL(STORE_ATTR, SPEC_FAIL_ATTR_CLASS_METHOD_OBJ);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1105|      0|            goto fail;
 1106|      0|        case NON_OVERRIDING:
  ------------------
  |  Branch (1106:9): [True: 0, False: 56]
  ------------------
 1107|      0|            SPECIALIZATION_FAIL(STORE_ATTR, SPEC_FAIL_ATTR_CLASS_ATTR_DESCRIPTOR);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1108|      0|            goto fail;
 1109|      0|        case NON_DESCRIPTOR:
  ------------------
  |  Branch (1109:9): [True: 0, False: 56]
  ------------------
 1110|      0|            SPECIALIZATION_FAIL(STORE_ATTR, SPEC_FAIL_ATTR_CLASS_ATTR_SIMPLE);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1111|      0|            goto fail;
 1112|     54|        case ABSENT:
  ------------------
  |  Branch (1112:9): [True: 54, False: 2]
  ------------------
 1113|     54|            if (specialize_dict_access(owner, instr, type, kind, name, tp_version,
  ------------------
  |  Branch (1113:17): [True: 52, False: 2]
  ------------------
 1114|     54|                                       STORE_ATTR, STORE_ATTR_INSTANCE_VALUE,
  ------------------
  |  |  122|     54|#define STORE_ATTR                             109
  ------------------
                                                     STORE_ATTR, STORE_ATTR_INSTANCE_VALUE,
  ------------------
  |  |  210|     54|#define STORE_ATTR_INSTANCE_VALUE              205
  ------------------
 1115|     54|                                       STORE_ATTR_WITH_HINT)) {
  ------------------
  |  |  212|     54|#define STORE_ATTR_WITH_HINT                   207
  ------------------
 1116|     52|                goto success;
 1117|     52|            }
 1118|     56|    }
 1119|     11|fail:
 1120|     11|    Py_XDECREF(descr);
  ------------------
  |  |  524|     11|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     11|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     11|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1121|     11|    unspecialize(instr);
 1122|     11|    return;
 1123|     53|success:
 1124|     53|    Py_XDECREF(descr);
  ------------------
  |  |  524|     53|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     53|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     53|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1125|     53|    return;
 1126|     56|}
_Py_Specialize_LoadGlobal:
 1449|    212|{
 1450|    212|    Py_BEGIN_CRITICAL_SECTION2(globals, builtins);
  ------------------
  |  |   57|    212|    {
  ------------------
 1451|    212|    specialize_load_global_lock_held(globals, builtins, instr, name);
 1452|    212|    Py_END_CRITICAL_SECTION2();
  ------------------
  |  |   61|    212|    }
  ------------------
 1453|    212|}
_Py_Specialize_StoreSubscr:
 1567|      5|{
 1568|      5|    PyObject *container = PyStackRef_AsPyObjectBorrow(container_st);
 1569|      5|    PyObject *sub = PyStackRef_AsPyObjectBorrow(sub_st);
 1570|       |
 1571|      5|    assert(ENABLE_SPECIALIZATION);
  ------------------
  |  Branch (1571:5): [True: 5, Folded]
  ------------------
 1572|      5|    PyTypeObject *container_type = Py_TYPE(container);
  ------------------
  |  |  213|      5|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1573|      5|    if (container_type == &PyList_Type) {
  ------------------
  |  Branch (1573:9): [True: 0, False: 5]
  ------------------
 1574|      0|        if (PyLong_CheckExact(sub)) {
  ------------------
  |  |   14|      0|#define PyLong_CheckExact(op) Py_IS_TYPE((op), &PyLong_Type)
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1575|      0|            if (_PyLong_IsNonNegativeCompact((PyLongObject *)sub)
  ------------------
  |  Branch (1575:17): [True: 0, False: 0]
  ------------------
 1576|      0|                && ((PyLongObject *)sub)->long_value.ob_digit[0] < (size_t)PyList_GET_SIZE(container))
  ------------------
  |  |   38|      0|#define PyList_GET_SIZE(op) PyList_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1576:20): [True: 0, False: 0]
  ------------------
 1577|      0|            {
 1578|      0|                specialize(instr, STORE_SUBSCR_LIST_INT);
  ------------------
  |  |  214|      0|#define STORE_SUBSCR_LIST_INT                  209
  ------------------
 1579|      0|                return;
 1580|      0|            }
 1581|      0|            else {
 1582|      0|                SPECIALIZATION_FAIL(STORE_SUBSCR, SPEC_FAIL_OUT_OF_RANGE);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1583|      0|                unspecialize(instr);
 1584|      0|                return;
 1585|      0|            }
 1586|      0|        }
 1587|      0|        else if (PySlice_Check(sub)) {
  ------------------
  |  |   22|      0|#define PySlice_Check(op) Py_IS_TYPE((op), &PySlice_Type)
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1588|      0|            SPECIALIZATION_FAIL(STORE_SUBSCR, SPEC_FAIL_SUBSCR_LIST_SLICE);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1589|      0|            unspecialize(instr);
 1590|      0|            return;
 1591|      0|        }
 1592|      0|        else {
 1593|      0|            SPECIALIZATION_FAIL(STORE_SUBSCR, SPEC_FAIL_OTHER);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1594|      0|            unspecialize(instr);
 1595|      0|            return;
 1596|      0|        }
 1597|      0|    }
 1598|      5|    if (container_type->tp_as_mapping != NULL &&
  ------------------
  |  Branch (1598:9): [True: 5, False: 0]
  ------------------
 1599|      5|        container_type->tp_as_mapping->mp_ass_subscript == _PyDict_StoreSubscript)
  ------------------
  |  Branch (1599:9): [True: 5, False: 0]
  ------------------
 1600|      5|    {
 1601|      5|        specialize(instr, STORE_SUBSCR_DICT);
  ------------------
  |  |  213|      5|#define STORE_SUBSCR_DICT                      208
  ------------------
 1602|      5|        return;
 1603|      5|    }
 1604|      0|    SPECIALIZATION_FAIL(STORE_SUBSCR, store_subscr_fail_kind(container, sub));
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1605|      0|    unspecialize(instr);
 1606|      0|}
_Py_Specialize_Call:
 1858|    204|{
 1859|    204|    PyObject *callable = PyStackRef_AsPyObjectBorrow(callable_st);
 1860|       |
 1861|    204|    assert(ENABLE_SPECIALIZATION);
  ------------------
  |  Branch (1861:5): [True: 204, Folded]
  ------------------
 1862|    204|    assert(_PyOpcode_Caches[CALL] == INLINE_CACHE_ENTRIES_CALL);
  ------------------
  |  Branch (1862:5): [True: 204, False: 0]
  ------------------
 1863|    204|    assert(_Py_OPCODE(*instr) != INSTRUMENTED_CALL);
  ------------------
  |  Branch (1863:5): [True: 204, False: 0]
  ------------------
 1864|    204|    int fail;
 1865|    204|    if (PyCFunction_CheckExact(callable)) {
  ------------------
  |  |   16|    204|#define PyCFunction_CheckExact(op) Py_IS_TYPE((op), &PyCFunction_Type)
  |  |  ------------------
  |  |  |  |  215|    204|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    204|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    204|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 66, False: 138]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1866|     66|        fail = specialize_c_call(callable, instr, nargs);
 1867|     66|    }
 1868|    138|    else if (PyFunction_Check(callable)) {
  ------------------
  |  |   68|    138|#define PyFunction_Check(op) Py_IS_TYPE((op), &PyFunction_Type)
  |  |  ------------------
  |  |  |  |  215|    138|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    138|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    138|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 63, False: 75]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1869|     63|        fail = specialize_py_call((PyFunctionObject *)callable, instr, nargs, false);
 1870|     63|    }
 1871|     75|    else if (PyType_Check(callable)) {
  ------------------
  |  |  766|     75|#  define PyType_Check(op) PyType_Check(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     75|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     75|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (766:28): [True: 20, False: 55]
  |  |  ------------------
  ------------------
 1872|     20|        fail = specialize_class_call(callable, instr, nargs);
 1873|     20|    }
 1874|     55|    else if (Py_IS_TYPE(callable, &PyMethodDescr_Type)) {
  ------------------
  |  |  215|     55|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|     55|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     55|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 46, False: 9]
  |  |  ------------------
  ------------------
 1875|     46|        PyObject *self_or_null = PyStackRef_AsPyObjectBorrow(self_or_null_st);
 1876|     46|        fail = specialize_method_descriptor((PyMethodDescrObject *)callable,
 1877|     46|                                            self_or_null, instr, nargs);
 1878|     46|    }
 1879|      9|    else if (PyMethod_Check(callable)) {
  ------------------
  |  |   22|      9|#define PyMethod_Check(op) Py_IS_TYPE((op), &PyMethod_Type)
  |  |  ------------------
  |  |  |  |  215|      9|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      9|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      9|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 6, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1880|      6|        PyObject *func = ((PyMethodObject *)callable)->im_func;
 1881|      6|        if (PyFunction_Check(func)) {
  ------------------
  |  |   68|      6|#define PyFunction_Check(op) Py_IS_TYPE((op), &PyFunction_Type)
  |  |  ------------------
  |  |  |  |  215|      6|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      6|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 6, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1882|      6|            fail = specialize_py_call((PyFunctionObject *)func, instr, nargs, true);
 1883|      6|        }
 1884|      0|        else {
 1885|      0|            SPECIALIZATION_FAIL(CALL, SPEC_FAIL_CALL_BOUND_METHOD);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1886|      0|            fail = -1;
 1887|      0|        }
 1888|      6|    }
 1889|      3|    else {
 1890|      3|        specialize(instr, CALL_NON_PY_GENERAL);
  ------------------
  |  |  168|      3|#define CALL_NON_PY_GENERAL                    163
  ------------------
 1891|      3|        fail = 0;
 1892|      3|    }
 1893|    204|    if (fail) {
  ------------------
  |  Branch (1893:9): [True: 0, False: 204]
  ------------------
 1894|      0|        unspecialize(instr);
 1895|      0|    }
 1896|    204|}
_Py_Specialize_CallKw:
 1900|      8|{
 1901|      8|    PyObject *callable = PyStackRef_AsPyObjectBorrow(callable_st);
 1902|       |
 1903|      8|    assert(ENABLE_SPECIALIZATION);
  ------------------
  |  Branch (1903:5): [True: 8, Folded]
  ------------------
 1904|      8|    assert(_PyOpcode_Caches[CALL_KW] == INLINE_CACHE_ENTRIES_CALL_KW);
  ------------------
  |  Branch (1904:5): [True: 8, False: 0]
  ------------------
 1905|      8|    assert(_Py_OPCODE(*instr) != INSTRUMENTED_CALL_KW);
  ------------------
  |  Branch (1905:5): [True: 8, False: 0]
  ------------------
 1906|      8|    int fail;
 1907|      8|    if (PyFunction_Check(callable)) {
  ------------------
  |  |   68|      8|#define PyFunction_Check(op) Py_IS_TYPE((op), &PyFunction_Type)
  |  |  ------------------
  |  |  |  |  215|      8|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      8|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 3, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1908|      3|        fail = specialize_py_call_kw((PyFunctionObject *)callable, instr, nargs, false);
 1909|      3|    }
 1910|      5|    else if (PyMethod_Check(callable)) {
  ------------------
  |  |   22|      5|#define PyMethod_Check(op) Py_IS_TYPE((op), &PyMethod_Type)
  |  |  ------------------
  |  |  |  |  215|      5|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1911|      0|        PyObject *func = ((PyMethodObject *)callable)->im_func;
 1912|      0|        if (PyFunction_Check(func)) {
  ------------------
  |  |   68|      0|#define PyFunction_Check(op) Py_IS_TYPE((op), &PyFunction_Type)
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1913|      0|            fail = specialize_py_call_kw((PyFunctionObject *)func, instr, nargs, true);
 1914|      0|        }
 1915|      0|        else {
 1916|      0|            SPECIALIZATION_FAIL(CALL_KW, SPEC_FAIL_CALL_BOUND_METHOD);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1917|      0|            fail = -1;
 1918|      0|        }
 1919|      0|    }
 1920|      5|    else {
 1921|      5|        specialize(instr, CALL_KW_NON_PY);
  ------------------
  |  |  160|      5|#define CALL_KW_NON_PY                         155
  ------------------
 1922|      5|        fail = 0;
 1923|      5|    }
 1924|      8|    if (fail) {
  ------------------
  |  Branch (1924:9): [True: 0, False: 8]
  ------------------
 1925|      0|        unspecialize(instr);
 1926|      0|    }
 1927|      8|}
_Py_Specialize_BinaryOp:
 2326|     25|{
 2327|     25|    PyObject *lhs = PyStackRef_AsPyObjectBorrow(lhs_st);
 2328|     25|    PyObject *rhs = PyStackRef_AsPyObjectBorrow(rhs_st);
 2329|     25|    assert(ENABLE_SPECIALIZATION);
  ------------------
  |  Branch (2329:5): [True: 25, Folded]
  ------------------
 2330|     25|    assert(_PyOpcode_Caches[BINARY_OP] == INLINE_CACHE_ENTRIES_BINARY_OP);
  ------------------
  |  Branch (2330:5): [True: 25, False: 0]
  ------------------
 2331|       |
 2332|     25|    _PyBinaryOpCache *cache = (_PyBinaryOpCache *)(instr + 1);
 2333|     25|    if (instr->op.code == BINARY_OP_EXTEND) {
  ------------------
  |  |  137|     25|#define BINARY_OP_EXTEND                       132
  ------------------
  |  Branch (2333:9): [True: 0, False: 25]
  ------------------
 2334|      0|        write_ptr(cache->external_cache, NULL);
 2335|      0|    }
 2336|       |
 2337|     25|    switch (oparg) {
  ------------------
  |  Branch (2337:13): [True: 23, False: 2]
  ------------------
 2338|      5|        case NB_ADD:
  ------------------
  |  |   10|      5|#define NB_ADD                                   0
  ------------------
  |  Branch (2338:9): [True: 5, False: 20]
  ------------------
 2339|      7|        case NB_INPLACE_ADD:
  ------------------
  |  |   23|      7|#define NB_INPLACE_ADD                          13
  ------------------
  |  Branch (2339:9): [True: 2, False: 23]
  ------------------
 2340|      7|            if (!Py_IS_TYPE(lhs, Py_TYPE(rhs))) {
  ------------------
  |  |  215|      7|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|      7|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2340:17): [True: 0, False: 7]
  ------------------
 2341|      0|                break;
 2342|      0|            }
 2343|      7|            if (PyUnicode_CheckExact(lhs)) {
  ------------------
  |  |  104|      7|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  ------------------
  |  |  |  |  215|      7|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      7|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 5, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2344|      5|                _Py_CODEUNIT next = instr[INLINE_CACHE_ENTRIES_BINARY_OP + 1];
  ------------------
  |  |   81|      5|#define INLINE_CACHE_ENTRIES_BINARY_OP CACHE_ENTRIES(_PyBinaryOpCache)
  |  |  ------------------
  |  |  |  |   65|      5|#define CACHE_ENTRIES(cache) (sizeof(cache)/sizeof(_Py_CODEUNIT))
  |  |  ------------------
  ------------------
 2345|      5|                bool to_store = (next.op.code == STORE_FAST);
  ------------------
  |  |  124|      5|#define STORE_FAST                             111
  ------------------
 2346|      5|                if (to_store && PyStackRef_AsPyObjectBorrow(locals[next.op.arg]) == lhs) {
  ------------------
  |  Branch (2346:21): [True: 1, False: 4]
  |  Branch (2346:33): [True: 1, False: 0]
  ------------------
 2347|      1|                    specialize(instr, BINARY_OP_INPLACE_ADD_UNICODE);
  ------------------
  |  |   16|      1|#define BINARY_OP_INPLACE_ADD_UNICODE            3
  ------------------
 2348|      1|                    return;
 2349|      1|                }
 2350|      4|                specialize(instr, BINARY_OP_ADD_UNICODE);
  ------------------
  |  |  136|      4|#define BINARY_OP_ADD_UNICODE                  131
  ------------------
 2351|      4|                return;
 2352|      5|            }
 2353|      2|            if (_PyLong_CheckExactAndCompact(lhs) && _PyLong_CheckExactAndCompact(rhs)) {
  ------------------
  |  Branch (2353:17): [True: 2, False: 0]
  |  Branch (2353:54): [True: 2, False: 0]
  ------------------
 2354|      2|                specialize(instr, BINARY_OP_ADD_INT);
  ------------------
  |  |  135|      2|#define BINARY_OP_ADD_INT                      130
  ------------------
 2355|      2|                return;
 2356|      2|            }
 2357|      0|            if (PyFloat_CheckExact(lhs)) {
  ------------------
  |  |   17|      0|#define PyFloat_CheckExact(op) Py_IS_TYPE((op), &PyFloat_Type)
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2358|      0|                specialize(instr, BINARY_OP_ADD_FLOAT);
  ------------------
  |  |  134|      0|#define BINARY_OP_ADD_FLOAT                    129
  ------------------
 2359|      0|                return;
 2360|      0|            }
 2361|      0|            break;
 2362|      1|        case NB_MULTIPLY:
  ------------------
  |  |   15|      1|#define NB_MULTIPLY                              5
  ------------------
  |  Branch (2362:9): [True: 1, False: 24]
  ------------------
 2363|      1|        case NB_INPLACE_MULTIPLY:
  ------------------
  |  |   28|      1|#define NB_INPLACE_MULTIPLY                     18
  ------------------
  |  Branch (2363:9): [True: 0, False: 25]
  ------------------
 2364|      1|            if (!Py_IS_TYPE(lhs, Py_TYPE(rhs))) {
  ------------------
  |  |  215|      1|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2364:17): [True: 1, False: 0]
  ------------------
 2365|      1|                break;
 2366|      1|            }
 2367|      0|            if (_PyLong_CheckExactAndCompact(lhs) && _PyLong_CheckExactAndCompact(rhs)) {
  ------------------
  |  Branch (2367:17): [True: 0, False: 0]
  |  Branch (2367:54): [True: 0, False: 0]
  ------------------
 2368|      0|                specialize(instr, BINARY_OP_MULTIPLY_INT);
  ------------------
  |  |  139|      0|#define BINARY_OP_MULTIPLY_INT                 134
  ------------------
 2369|      0|                return;
 2370|      0|            }
 2371|      0|            if (PyFloat_CheckExact(lhs)) {
  ------------------
  |  |   17|      0|#define PyFloat_CheckExact(op) Py_IS_TYPE((op), &PyFloat_Type)
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2372|      0|                specialize(instr, BINARY_OP_MULTIPLY_FLOAT);
  ------------------
  |  |  138|      0|#define BINARY_OP_MULTIPLY_FLOAT               133
  ------------------
 2373|      0|                return;
 2374|      0|            }
 2375|      0|            break;
 2376|      0|        case NB_SUBTRACT:
  ------------------
  |  |   20|      0|#define NB_SUBTRACT                             10
  ------------------
  |  Branch (2376:9): [True: 0, False: 25]
  ------------------
 2377|      0|        case NB_INPLACE_SUBTRACT:
  ------------------
  |  |   33|      0|#define NB_INPLACE_SUBTRACT                     23
  ------------------
  |  Branch (2377:9): [True: 0, False: 25]
  ------------------
 2378|      0|            if (!Py_IS_TYPE(lhs, Py_TYPE(rhs))) {
  ------------------
  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2378:17): [True: 0, False: 0]
  ------------------
 2379|      0|                break;
 2380|      0|            }
 2381|      0|            if (_PyLong_CheckExactAndCompact(lhs) && _PyLong_CheckExactAndCompact(rhs)) {
  ------------------
  |  Branch (2381:17): [True: 0, False: 0]
  |  Branch (2381:54): [True: 0, False: 0]
  ------------------
 2382|      0|                specialize(instr, BINARY_OP_SUBTRACT_INT);
  ------------------
  |  |  148|      0|#define BINARY_OP_SUBTRACT_INT                 143
  ------------------
 2383|      0|                return;
 2384|      0|            }
 2385|      0|            if (PyFloat_CheckExact(lhs)) {
  ------------------
  |  |   17|      0|#define PyFloat_CheckExact(op) Py_IS_TYPE((op), &PyFloat_Type)
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2386|      0|                specialize(instr, BINARY_OP_SUBTRACT_FLOAT);
  ------------------
  |  |  147|      0|#define BINARY_OP_SUBTRACT_FLOAT               142
  ------------------
 2387|      0|                return;
 2388|      0|            }
 2389|      0|            break;
 2390|     15|        case NB_SUBSCR:
  ------------------
  |  |   36|     15|#define NB_SUBSCR                               26
  ------------------
  |  Branch (2390:9): [True: 15, False: 10]
  ------------------
 2391|     15|            if (PyLong_CheckExact(rhs) && _PyLong_IsNonNegativeCompact((PyLongObject *)rhs)) {
  ------------------
  |  |   14|     15|#define PyLong_CheckExact(op) Py_IS_TYPE((op), &PyLong_Type)
  |  |  ------------------
  |  |  |  |  215|     30|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     15|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     15|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 6, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2391:43): [True: 5, False: 1]
  ------------------
 2392|      5|                if (PyList_CheckExact(lhs)) {
  ------------------
  |  |   26|      5|#define PyList_CheckExact(op) Py_IS_TYPE((op), &PyList_Type)
  |  |  ------------------
  |  |  |  |  215|      5|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 5]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2393|      0|                    specialize(instr, BINARY_OP_SUBSCR_LIST_INT);
  ------------------
  |  |  142|      0|#define BINARY_OP_SUBSCR_LIST_INT              137
  ------------------
 2394|      0|                    return;
 2395|      0|                }
 2396|      5|                if (PyTuple_CheckExact(lhs)) {
  ------------------
  |  |   28|      5|#define PyTuple_CheckExact(op) Py_IS_TYPE((op), &PyTuple_Type)
  |  |  ------------------
  |  |  |  |  215|      5|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 4, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2397|      4|                    specialize(instr, BINARY_OP_SUBSCR_TUPLE_INT);
  ------------------
  |  |  145|      4|#define BINARY_OP_SUBSCR_TUPLE_INT             140
  ------------------
 2398|      4|                    return;
 2399|      4|                }
 2400|      1|                if (PyUnicode_CheckExact(lhs) && _PyLong_IsNonNegativeCompact((PyLongObject*)rhs)) {
  ------------------
  |  |  104|      1|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  ------------------
  |  |  |  |  215|      2|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 1, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2400:50): [True: 1, False: 0]
  ------------------
 2401|      1|                    if (PyUnicode_IS_COMPACT_ASCII(lhs)) {
  ------------------
  |  |  241|      1|#define PyUnicode_IS_COMPACT_ASCII(op) PyUnicode_IS_COMPACT_ASCII(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (241:40): [True: 1, False: 0]
  |  |  ------------------
  ------------------
 2402|      1|                        specialize(instr, BINARY_OP_SUBSCR_STR_INT);
  ------------------
  |  |  144|      1|#define BINARY_OP_SUBSCR_STR_INT               139
  ------------------
 2403|      1|                        return;
 2404|      1|                    } else {
 2405|      0|                        specialize(instr, BINARY_OP_SUBSCR_USTR_INT);
  ------------------
  |  |  146|      0|#define BINARY_OP_SUBSCR_USTR_INT              141
  ------------------
 2406|      0|                        return;
 2407|      0|                    }
 2408|      1|                }
 2409|      1|            }
 2410|     10|            if (Py_TYPE(lhs)->tp_as_mapping != NULL &&
  ------------------
  |  |  213|     10|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     10|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2410:17): [True: 10, False: 0]
  ------------------
 2411|     10|                Py_TYPE(lhs)->tp_as_mapping->mp_subscript == _PyDict_Subscript)
  ------------------
  |  |  213|     10|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     10|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2411:17): [True: 7, False: 3]
  ------------------
 2412|      7|            {
 2413|      7|                specialize(instr, BINARY_OP_SUBSCR_DICT);
  ------------------
  |  |  140|      7|#define BINARY_OP_SUBSCR_DICT                  135
  ------------------
 2414|      7|                return;
 2415|      7|            }
 2416|      3|            if (PyList_CheckExact(lhs) && PySlice_Check(rhs)) {
  ------------------
  |  |   26|      3|#define PyList_CheckExact(op) Py_IS_TYPE((op), &PyList_Type)
  |  |  ------------------
  |  |  |  |  215|      6|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 3]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                          if (PyList_CheckExact(lhs) && PySlice_Check(rhs)) {
  ------------------
  |  |   22|      0|#define PySlice_Check(op) Py_IS_TYPE((op), &PySlice_Type)
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2417|      0|                specialize(instr, BINARY_OP_SUBSCR_LIST_SLICE);
  ------------------
  |  |  143|      0|#define BINARY_OP_SUBSCR_LIST_SLICE            138
  ------------------
 2418|      0|                return;
 2419|      0|            }
 2420|      3|            unsigned int tp_version;
 2421|      3|            PyTypeObject *container_type = Py_TYPE(lhs);
  ------------------
  |  |  213|      3|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2422|      3|            PyObject *descriptor = _PyType_LookupRefAndVersion(container_type, &_Py_ID(__getitem__), &tp_version);
  ------------------
  |  |  917|      3|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      3|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      3|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2423|      3|            if (descriptor && Py_TYPE(descriptor) == &PyFunction_Type &&
  ------------------
  |  |  213|      3|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2423:17): [True: 3, False: 0]
  |  Branch (2423:31): [True: 0, False: 3]
  ------------------
 2424|      0|                container_type->tp_flags & Py_TPFLAGS_HEAPTYPE)
  ------------------
  |  |  503|      0|#define Py_TPFLAGS_HEAPTYPE (1UL << 9)
  ------------------
  |  Branch (2424:17): [True: 0, False: 0]
  ------------------
 2425|      0|            {
 2426|      0|                PyFunctionObject *func = (PyFunctionObject *)descriptor;
 2427|      0|                PyCodeObject *fcode = (PyCodeObject *)func->func_code;
 2428|      0|                int kind = function_kind(fcode);
 2429|      0|                PyHeapTypeObject *ht = (PyHeapTypeObject *)container_type;
 2430|      0|                if (kind == SIMPLE_FUNCTION &&
  ------------------
  |  |  124|      0|#define SIMPLE_FUNCTION 0
  ------------------
  |  Branch (2430:21): [True: 0, False: 0]
  ------------------
 2431|      0|                    fcode->co_argcount == 2 &&
  ------------------
  |  Branch (2431:21): [True: 0, False: 0]
  ------------------
 2432|      0|                    _PyInterpreterState_IsSpecializationEnabled(_PyInterpreterState_GET()) && /* Don't specialize if PEP 523 is active */
  ------------------
  |  Branch (2432:21): [True: 0, False: 0]
  ------------------
 2433|      0|                    _PyType_CacheGetItemForSpecialization(ht, descriptor, (uint32_t)tp_version))
  ------------------
  |  Branch (2433:21): [True: 0, False: 0]
  ------------------
 2434|      0|                {
 2435|      0|                    specialize(instr, BINARY_OP_SUBSCR_GETITEM);
  ------------------
  |  |  141|      0|#define BINARY_OP_SUBSCR_GETITEM               136
  ------------------
 2436|      0|                    Py_DECREF(descriptor);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2437|      0|                    return;
 2438|      0|                }
 2439|      0|            }
 2440|      3|            Py_XDECREF(descriptor);
  ------------------
  |  |  524|      3|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2441|      3|            break;
 2442|     25|    }
 2443|       |
 2444|      6|    _PyBinaryOpSpecializationDescr *descr;
 2445|      6|    if (binary_op_extended_specialization(lhs, rhs, oparg, &descr)) {
  ------------------
  |  Branch (2445:9): [True: 3, False: 3]
  ------------------
 2446|      3|        specialize(instr, BINARY_OP_EXTEND);
  ------------------
  |  |  137|      3|#define BINARY_OP_EXTEND                       132
  ------------------
 2447|      3|        write_ptr(cache->external_cache, (void*)descr);
 2448|      3|        return;
 2449|      3|    }
 2450|       |
 2451|      3|    SPECIALIZATION_FAIL(BINARY_OP, binary_op_fail_kind(oparg, lhs, rhs));
  ------------------
  |  |   43|      3|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 2452|      3|    unspecialize(instr);
 2453|      3|    return;
 2454|      6|}
_Py_Specialize_CompareOp:
 2495|     18|{
 2496|     18|    PyObject *lhs = PyStackRef_AsPyObjectBorrow(lhs_st);
 2497|     18|    PyObject *rhs = PyStackRef_AsPyObjectBorrow(rhs_st);
 2498|     18|    uint8_t specialized_op;
 2499|       |
 2500|     18|    assert(ENABLE_SPECIALIZATION);
  ------------------
  |  Branch (2500:5): [True: 18, Folded]
  ------------------
 2501|     18|    assert(_PyOpcode_Caches[COMPARE_OP] == INLINE_CACHE_ENTRIES_COMPARE_OP);
  ------------------
  |  Branch (2501:5): [True: 18, False: 0]
  ------------------
 2502|       |    // All of these specializations compute boolean values, so they're all valid
 2503|       |    // regardless of the fifth-lowest oparg bit.
 2504|     18|    if (Py_TYPE(lhs) != Py_TYPE(rhs)) {
  ------------------
  |  |  213|     18|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     18|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     18|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  if (Py_TYPE(lhs) != Py_TYPE(rhs)) {
  ------------------
  |  |  213|     18|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     18|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     18|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2504:9): [True: 1, False: 17]
  ------------------
 2505|      1|        SPECIALIZATION_FAIL(COMPARE_OP, compare_op_fail_kind(lhs, rhs));
  ------------------
  |  |   43|      1|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 2506|      1|        goto failure;
 2507|      1|    }
 2508|     17|    if (PyFloat_CheckExact(lhs)) {
  ------------------
  |  |   17|     17|#define PyFloat_CheckExact(op) Py_IS_TYPE((op), &PyFloat_Type)
  |  |  ------------------
  |  |  |  |  215|     17|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     17|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     17|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 17]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2509|      0|        specialized_op = COMPARE_OP_FLOAT;
  ------------------
  |  |  174|      0|#define COMPARE_OP_FLOAT                       169
  ------------------
 2510|      0|        goto success;
 2511|      0|    }
 2512|     17|    if (PyLong_CheckExact(lhs)) {
  ------------------
  |  |   14|     17|#define PyLong_CheckExact(op) Py_IS_TYPE((op), &PyLong_Type)
  |  |  ------------------
  |  |  |  |  215|     17|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     17|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     17|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 8, False: 9]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2513|      8|        if (_PyLong_IsCompact((PyLongObject *)lhs) && _PyLong_IsCompact((PyLongObject *)rhs)) {
  ------------------
  |  Branch (2513:13): [True: 5, False: 3]
  |  Branch (2513:55): [True: 5, False: 0]
  ------------------
 2514|      5|            specialized_op = COMPARE_OP_INT;
  ------------------
  |  |  175|      5|#define COMPARE_OP_INT                         170
  ------------------
 2515|      5|            goto success;
 2516|      5|        }
 2517|      3|        else {
 2518|      3|            SPECIALIZATION_FAIL(COMPARE_OP, SPEC_FAIL_COMPARE_OP_BIG_INT);
  ------------------
  |  |   43|      3|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 2519|      3|            goto failure;
 2520|      3|        }
 2521|      8|    }
 2522|      9|    if (PyUnicode_CheckExact(lhs)) {
  ------------------
  |  |  104|      9|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  ------------------
  |  |  |  |  215|      9|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      9|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      9|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 7, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2523|      7|        int cmp = oparg >> 5;
 2524|      7|        if (cmp != Py_EQ && cmp != Py_NE) {
  ------------------
  |  |  654|     14|#define Py_EQ 2
  ------------------
                      if (cmp != Py_EQ && cmp != Py_NE) {
  ------------------
  |  |  655|      3|#define Py_NE 3
  ------------------
  |  Branch (2524:13): [True: 3, False: 4]
  |  Branch (2524:29): [True: 0, False: 3]
  ------------------
 2525|      0|            SPECIALIZATION_FAIL(COMPARE_OP, SPEC_FAIL_COMPARE_OP_STRING);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 2526|      0|            goto failure;
 2527|      0|        }
 2528|      7|        else {
 2529|      7|            specialized_op = COMPARE_OP_STR;
  ------------------
  |  |  176|      7|#define COMPARE_OP_STR                         171
  ------------------
 2530|      7|            goto success;
 2531|      7|        }
 2532|      7|    }
 2533|      2|    SPECIALIZATION_FAIL(COMPARE_OP, compare_op_fail_kind(lhs, rhs));
  ------------------
  |  |   43|      2|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 2534|      6|failure:
 2535|      6|    unspecialize(instr);
 2536|      6|    return;
 2537|     12|success:
 2538|     12|    specialize(instr, specialized_op);
 2539|     12|}
_Py_Specialize_UnpackSequence:
 2557|      7|{
 2558|      7|    PyObject *seq = PyStackRef_AsPyObjectBorrow(seq_st);
 2559|       |
 2560|      7|    assert(ENABLE_SPECIALIZATION);
  ------------------
  |  Branch (2560:5): [True: 7, Folded]
  ------------------
 2561|      7|    assert(_PyOpcode_Caches[UNPACK_SEQUENCE] ==
  ------------------
  |  Branch (2561:5): [True: 7, False: 0]
  ------------------
 2562|      7|           INLINE_CACHE_ENTRIES_UNPACK_SEQUENCE);
 2563|      7|    if (PyTuple_CheckExact(seq)) {
  ------------------
  |  |   28|      7|#define PyTuple_CheckExact(op) Py_IS_TYPE((op), &PyTuple_Type)
  |  |  ------------------
  |  |  |  |  215|      7|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      7|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 7, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2564|      7|        if (PyTuple_GET_SIZE(seq) != oparg) {
  ------------------
  |  |   27|      7|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      7|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2564:13): [True: 0, False: 7]
  ------------------
 2565|      0|            SPECIALIZATION_FAIL(UNPACK_SEQUENCE, SPEC_FAIL_EXPECTED_ERROR);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 2566|      0|            unspecialize(instr);
 2567|      0|            return;
 2568|      0|        }
 2569|      7|        if (PyTuple_GET_SIZE(seq) == 2) {
  ------------------
  |  |   27|      7|#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      7|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      7|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2569:13): [True: 6, False: 1]
  ------------------
 2570|      6|            specialize(instr, UNPACK_SEQUENCE_TWO_TUPLE);
  ------------------
  |  |  223|      6|#define UNPACK_SEQUENCE_TWO_TUPLE              218
  ------------------
 2571|      6|            return;
 2572|      6|        }
 2573|      1|        specialize(instr, UNPACK_SEQUENCE_TUPLE);
  ------------------
  |  |  222|      1|#define UNPACK_SEQUENCE_TUPLE                  217
  ------------------
 2574|      1|        return;
 2575|      7|    }
 2576|      0|    if (PyList_CheckExact(seq)) {
  ------------------
  |  |   26|      0|#define PyList_CheckExact(op) Py_IS_TYPE((op), &PyList_Type)
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2577|      0|        if (PyList_GET_SIZE(seq) != oparg) {
  ------------------
  |  |   38|      0|#define PyList_GET_SIZE(op) PyList_GET_SIZE(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2577:13): [True: 0, False: 0]
  ------------------
 2578|      0|            SPECIALIZATION_FAIL(UNPACK_SEQUENCE, SPEC_FAIL_EXPECTED_ERROR);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 2579|      0|            unspecialize(instr);
 2580|      0|            return;
 2581|      0|        }
 2582|      0|        specialize(instr, UNPACK_SEQUENCE_LIST);
  ------------------
  |  |  221|      0|#define UNPACK_SEQUENCE_LIST                   216
  ------------------
 2583|      0|        return;
 2584|      0|    }
 2585|      0|    SPECIALIZATION_FAIL(UNPACK_SEQUENCE, unpack_sequence_fail_kind(seq));
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 2586|      0|    unspecialize(instr);
 2587|      0|}
_Py_Specialize_ForIter:
 2664|     35|{
 2665|     35|    assert(ENABLE_SPECIALIZATION);
  ------------------
  |  Branch (2665:5): [True: 35, Folded]
  ------------------
 2666|     35|    assert(_PyOpcode_Caches[FOR_ITER] == INLINE_CACHE_ENTRIES_FOR_ITER);
  ------------------
  |  Branch (2666:5): [True: 35, False: 0]
  ------------------
 2667|     35|    PyObject *iter_o = PyStackRef_AsPyObjectBorrow(iter);
 2668|     35|    PyTypeObject *tp = Py_TYPE(iter_o);
  ------------------
  |  |  213|     35|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     35|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     35|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2669|       |
 2670|     35|    if (PyStackRef_IsNull(null_or_index)) {
  ------------------
  |  |  470|     35|#define PyStackRef_IsNull(ref) ((ref).bits == PyStackRef_NULL_BITS)
  |  |  ------------------
  |  |  |  |  467|     35|#define PyStackRef_NULL_BITS Py_TAG_REFCNT
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     35|#define Py_TAG_REFCNT 1
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (470:32): [True: 5, False: 30]
  |  |  ------------------
  ------------------
 2671|      5|        if (tp == &PyRangeIter_Type) {
  ------------------
  |  Branch (2671:13): [True: 1, False: 4]
  ------------------
 2672|       |#ifdef Py_GIL_DISABLED
 2673|       |            // Only specialize for uniquely referenced iterators, so that we know
 2674|       |            // they're only referenced by this one thread. This is more limiting
 2675|       |            // than we need (even `it = iter(mylist); for item in it:` won't get
 2676|       |            // specialized) but we don't have a way to check whether we're the only
 2677|       |            // _thread_ who has access to the object.
 2678|       |            if (!_PyObject_IsUniquelyReferenced(iter_o)) {
 2679|       |                goto failure;
 2680|       |            }
 2681|       |#endif
 2682|      1|            specialize(instr, FOR_ITER_RANGE);
  ------------------
  |  |  181|      1|#define FOR_ITER_RANGE                         176
  ------------------
 2683|      1|            return;
 2684|      1|        }
 2685|      4|        else if (tp == &PyGen_Type && oparg <= SHRT_MAX) {
  ------------------
  |  Branch (2685:18): [True: 2, False: 2]
  |  Branch (2685:39): [True: 2, False: 0]
  ------------------
 2686|      2|            assert(instr[oparg + INLINE_CACHE_ENTRIES_FOR_ITER + 1].op.code == END_FOR  ||
  ------------------
  |  Branch (2686:13): [True: 2, False: 0]
  |  Branch (2686:13): [True: 0, False: 0]
  ------------------
 2687|      2|                instr[oparg + INLINE_CACHE_ENTRIES_FOR_ITER + 1].op.code == INSTRUMENTED_END_FOR
 2688|      2|            );
 2689|       |            /* Don't specialize if PEP 523 is active */
 2690|      2|            if (!_PyInterpreterState_IsSpecializationEnabled(_PyInterpreterState_GET())) {
  ------------------
  |  Branch (2690:17): [True: 0, False: 2]
  ------------------
 2691|      0|                goto failure;
 2692|      0|            }
 2693|      2|            specialize(instr, FOR_ITER_GEN);
  ------------------
  |  |  179|      2|#define FOR_ITER_GEN                           174
  ------------------
 2694|      2|            return;
 2695|      2|        }
 2696|      5|    }
 2697|     30|    else {
 2698|     30|        if (tp->_tp_iteritem != NULL) {
  ------------------
  |  Branch (2698:13): [True: 30, False: 0]
  ------------------
 2699|     30|            if (tp == &PyList_Type) {
  ------------------
  |  Branch (2699:17): [True: 15, False: 15]
  ------------------
 2700|       |    #ifdef Py_GIL_DISABLED
 2701|       |                // Only specialize for lists owned by this thread or shared
 2702|       |                if (!_Py_IsOwnedByCurrentThread(iter_o) && !_PyObject_GC_IS_SHARED(iter_o)) {
 2703|       |                    goto failure;
 2704|       |                }
 2705|       |    #endif
 2706|     15|                specialize(instr, FOR_ITER_LIST);
  ------------------
  |  |  180|     15|#define FOR_ITER_LIST                          175
  ------------------
 2707|     15|                return;
 2708|     15|            }
 2709|     15|            else if (tp == &PyTuple_Type) {
  ------------------
  |  Branch (2709:22): [True: 13, False: 2]
  ------------------
 2710|     13|                specialize(instr, FOR_ITER_TUPLE);
  ------------------
  |  |  182|     13|#define FOR_ITER_TUPLE                         177
  ------------------
 2711|     13|                return;
 2712|     13|            }
 2713|     30|        }
 2714|      2|        specialize(instr, FOR_ITER_VIRTUAL);
  ------------------
  |  |  183|      2|#define FOR_ITER_VIRTUAL                       178
  ------------------
 2715|      2|        return;
 2716|     30|    }
 2717|      2|failure:
 2718|      2|    SPECIALIZATION_FAIL(FOR_ITER,
  ------------------
  |  |   43|      2|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 2719|      2|                        _PySpecialization_ClassifyIterator(iter_o));
 2720|      2|    unspecialize(instr);
 2721|      2|}
_Py_Specialize_CallFunctionEx:
 2756|      4|{
 2757|      4|    PyObject *func = PyStackRef_AsPyObjectBorrow(func_st);
 2758|       |
 2759|      4|    assert(ENABLE_SPECIALIZATION);
  ------------------
  |  Branch (2759:5): [True: 4, Folded]
  ------------------
 2760|      4|    assert(_PyOpcode_Caches[CALL_FUNCTION_EX] == INLINE_CACHE_ENTRIES_CALL_FUNCTION_EX);
  ------------------
  |  Branch (2760:5): [True: 4, False: 0]
  ------------------
 2761|       |
 2762|      4|    if (Py_TYPE(func) == &PyFunction_Type &&
  ------------------
  |  |  213|      4|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2762:9): [True: 1, False: 3]
  ------------------
 2763|      1|        ((PyFunctionObject *)func)->vectorcall == _PyFunction_Vectorcall) {
  ------------------
  |  Branch (2763:9): [True: 1, False: 0]
  ------------------
 2764|      1|        if (!_PyInterpreterState_IsSpecializationEnabled(_PyInterpreterState_GET())) {
  ------------------
  |  Branch (2764:13): [True: 0, False: 1]
  ------------------
 2765|      0|            goto failure;
 2766|      0|        }
 2767|      1|        specialize(instr, CALL_EX_PY);
  ------------------
  |  |  157|      1|#define CALL_EX_PY                             152
  ------------------
 2768|      1|        return;
 2769|      1|    }
 2770|      3|    specialize(instr, CALL_EX_NON_PY_GENERAL);
  ------------------
  |  |  156|      3|#define CALL_EX_NON_PY_GENERAL                 151
  ------------------
 2771|      3|    return;
 2772|      0|failure:
 2773|      0|    unspecialize(instr);
 2774|      0|}
_Py_Specialize_ToBool:
 2825|     66|{
 2826|     66|    assert(ENABLE_SPECIALIZATION);
  ------------------
  |  Branch (2826:5): [True: 66, Folded]
  ------------------
 2827|     66|    assert(_PyOpcode_Caches[TO_BOOL] == INLINE_CACHE_ENTRIES_TO_BOOL);
  ------------------
  |  Branch (2827:5): [True: 66, False: 0]
  ------------------
 2828|     66|    _PyToBoolCache *cache = (_PyToBoolCache *)(instr + 1);
 2829|     66|    PyObject *value = PyStackRef_AsPyObjectBorrow(value_o);
 2830|     66|    uint8_t specialized_op;
 2831|     66|    if (PyBool_Check(value)) {
  ------------------
  |  |   12|     66|#define PyBool_Check(x) Py_IS_TYPE((x), &PyBool_Type)
  |  |  ------------------
  |  |  |  |  215|     66|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     66|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     66|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 33, False: 33]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2832|     33|        specialized_op = TO_BOOL_BOOL;
  ------------------
  |  |  216|     33|#define TO_BOOL_BOOL                           211
  ------------------
 2833|     33|        goto success;
 2834|     33|    }
 2835|     33|    if (PyLong_CheckExact(value)) {
  ------------------
  |  |   14|     33|#define PyLong_CheckExact(op) Py_IS_TYPE((op), &PyLong_Type)
  |  |  ------------------
  |  |  |  |  215|     33|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     33|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     33|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 3, False: 30]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2836|      3|        specialized_op = TO_BOOL_INT;
  ------------------
  |  |  217|      3|#define TO_BOOL_INT                            212
  ------------------
 2837|      3|        goto success;
 2838|      3|    }
 2839|     30|    if (PyList_CheckExact(value)) {
  ------------------
  |  |   26|     30|#define PyList_CheckExact(op) Py_IS_TYPE((op), &PyList_Type)
  |  |  ------------------
  |  |  |  |  215|     30|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     30|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     30|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 4, False: 26]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2840|      4|        specialized_op = TO_BOOL_LIST;
  ------------------
  |  |  218|      4|#define TO_BOOL_LIST                           213
  ------------------
 2841|      4|        goto success;
 2842|      4|    }
 2843|     26|    if (Py_IsNone(value)) {
  ------------------
  |  |  621|     26|#define Py_IsNone(x) Py_Is((x), Py_None)
  |  |  ------------------
  |  |  |  |  187|     26|#define Py_Is(x, y) ((x) == (y))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (187:21): [True: 5, False: 21]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2844|      5|        specialized_op = TO_BOOL_NONE;
  ------------------
  |  |  219|      5|#define TO_BOOL_NONE                           214
  ------------------
 2845|      5|        goto success;
 2846|      5|    }
 2847|     21|    if (PyUnicode_CheckExact(value)) {
  ------------------
  |  |  104|     21|#define PyUnicode_CheckExact(op) Py_IS_TYPE((op), &PyUnicode_Type)
  |  |  ------------------
  |  |  |  |  215|     21|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     21|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     21|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 19, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2848|     19|        specialized_op = TO_BOOL_STR;
  ------------------
  |  |  220|     19|#define TO_BOOL_STR                            215
  ------------------
 2849|     19|        goto success;
 2850|     19|    }
 2851|      2|    if (PyType_HasFeature(Py_TYPE(value), Py_TPFLAGS_HEAPTYPE)) {
  ------------------
  |  |  213|      2|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  if (PyType_HasFeature(Py_TYPE(value), Py_TPFLAGS_HEAPTYPE)) {
  ------------------
  |  |  503|      2|#define Py_TPFLAGS_HEAPTYPE (1UL << 9)
  ------------------
  |  Branch (2851:9): [True: 0, False: 2]
  ------------------
 2852|      0|        unsigned int version = 0;
 2853|      0|        int err = _PyType_Validate(Py_TYPE(value), check_type_always_true, &version);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2854|      0|        if (err < 0) {
  ------------------
  |  Branch (2854:13): [True: 0, False: 0]
  ------------------
 2855|      0|            SPECIALIZATION_FAIL(TO_BOOL, SPEC_FAIL_OUT_OF_VERSIONS);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 2856|      0|            goto failure;
 2857|      0|        }
 2858|      0|        else if (err > 0) {
  ------------------
  |  Branch (2858:18): [True: 0, False: 0]
  ------------------
 2859|      0|            SPECIALIZATION_FAIL(TO_BOOL, err);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 2860|      0|            goto failure;
 2861|      0|        }
 2862|       |
 2863|      0|        assert(err == 0);
  ------------------
  |  Branch (2863:9): [True: 0, False: 0]
  ------------------
 2864|      0|        assert(version);
  ------------------
  |  Branch (2864:9): [True: 0, False: 0]
  ------------------
 2865|      0|        write_u32(cache->version, version);
 2866|      0|        specialized_op = TO_BOOL_ALWAYS_TRUE;
  ------------------
  |  |  215|      0|#define TO_BOOL_ALWAYS_TRUE                    210
  ------------------
 2867|      0|        goto success;
 2868|      0|    }
 2869|       |
 2870|      2|    SPECIALIZATION_FAIL(TO_BOOL, to_bool_fail_kind(value));
  ------------------
  |  |   43|      2|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 2871|      2|failure:
 2872|      2|    unspecialize(instr);
 2873|      2|    return;
 2874|     64|success:
 2875|     64|    specialize(instr, specialized_op);
 2876|     64|}
_Py_Specialize_ContainsOp:
 2899|     23|{
 2900|     23|    PyObject *value = PyStackRef_AsPyObjectBorrow(value_st);
 2901|       |
 2902|     23|    assert(ENABLE_SPECIALIZATION);
  ------------------
  |  Branch (2902:5): [True: 23, Folded]
  ------------------
 2903|     23|    assert(_PyOpcode_Caches[CONTAINS_OP] == INLINE_CACHE_ENTRIES_COMPARE_OP);
  ------------------
  |  Branch (2903:5): [True: 23, False: 0]
  ------------------
 2904|     23|    if (PyAnyDict_CheckExact(value)) {
  ------------------
  |  |   41|     23|    (PyDict_CheckExact(ob) || PyFrozenDict_CheckExact(ob))
  |  |  ------------------
  |  |  |  |   19|     23|#define PyDict_CheckExact(op) Py_IS_TYPE((op), &PyDict_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |  215|     46|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|     23|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     23|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (215:32): [True: 6, False: 17]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (PyDict_CheckExact(ob) || PyFrozenDict_CheckExact(ob))
  |  |  ------------------
  |  |  |  |   38|     17|#define PyFrozenDict_CheckExact(op) Py_IS_TYPE((op), &PyFrozenDict_Type)
  |  |  |  |  ------------------
  |  |  |  |  |  |  215|     17|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|     17|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|     17|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (215:32): [True: 0, False: 17]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2905|      6|        specialize(instr, CONTAINS_OP_DICT);
  ------------------
  |  |  177|      6|#define CONTAINS_OP_DICT                       172
  ------------------
 2906|      6|        return;
 2907|      6|    }
 2908|     17|    if (PySet_CheckExact(value) || PyFrozenSet_CheckExact(value)) {
  ------------------
  |  |   35|     17|#define PySet_CheckExact(op) Py_IS_TYPE(op, &PySet_Type)
  |  |  ------------------
  |  |  |  |  215|     34|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     17|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     17|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 4, False: 13]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  if (PySet_CheckExact(value) || PyFrozenSet_CheckExact(value)) {
  ------------------
  |  |   23|     13|#define PyFrozenSet_CheckExact(ob) Py_IS_TYPE((ob), &PyFrozenSet_Type)
  |  |  ------------------
  |  |  |  |  215|     13|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     13|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     13|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 13]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2909|      4|        specialize(instr, CONTAINS_OP_SET);
  ------------------
  |  |  178|      4|#define CONTAINS_OP_SET                        173
  ------------------
 2910|      4|        return;
 2911|      4|    }
 2912|       |
 2913|     13|    SPECIALIZATION_FAIL(CONTAINS_OP, containsop_fail_kind(value));
  ------------------
  |  |   43|     13|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 2914|     13|    unspecialize(instr);
 2915|     13|    return;
 2916|     17|}
_Py_Specialize_GetIter:
 2920|     18|{
 2921|     18|    assert(ENABLE_SPECIALIZATION);
  ------------------
  |  Branch (2921:5): [True: 18, Folded]
  ------------------
 2922|     18|    PyTypeObject *tp = PyStackRef_TYPE(iterable);
 2923|     18|    if (tp->_tp_iteritem != NULL) {
  ------------------
  |  Branch (2923:9): [True: 16, False: 2]
  ------------------
 2924|     16|        specialize(instr, GET_ITER_VIRTUAL);
  ------------------
  |  |  185|     16|#define GET_ITER_VIRTUAL                       180
  ------------------
 2925|     16|        return;
 2926|     16|    }
 2927|      2|    if (tp->tp_iter == PyObject_SelfIter) {
  ------------------
  |  Branch (2927:9): [True: 1, False: 1]
  ------------------
 2928|      1|        specialize(instr, GET_ITER_SELF);
  ------------------
  |  |  184|      1|#define GET_ITER_SELF                          179
  ------------------
 2929|      1|        return;
 2930|      1|    }
 2931|      1|    SPECIALIZATION_FAIL(GET_ITER,
  ------------------
  |  |   43|      1|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 2932|      1|        tp == &PyCoro_Type ? SPEC_FAIL_ITER_COROUTINE : SPEC_FAIL_OTHER);
 2933|      1|    unspecialize(instr);
 2934|      1|}
_Py_Specialize_Resume:
 2938|    270|{
 2939|    270|    if (tstate->tracing == 0 && instr->op.code == RESUME) {
  ------------------
  |  |  133|    270|#define RESUME                                 128
  ------------------
  |  Branch (2939:9): [True: 270, False: 0]
  |  Branch (2939:33): [True: 270, False: 0]
  ------------------
 2940|    270|        if (tstate->interp->jit) {
  ------------------
  |  Branch (2940:13): [True: 0, False: 270]
  ------------------
 2941|      0|            PyCodeObject *co = (PyCodeObject *)PyStackRef_AsPyObjectBorrow(frame->f_executable);
 2942|      0|            if (co != NULL &&
  ------------------
  |  Branch (2942:17): [True: 0, False: 0]
  ------------------
 2943|      0|                PyCode_Check(co) &&
  ------------------
  |  |  164|      0|#define PyCode_Check(op) Py_IS_TYPE((op), &PyCode_Type)
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2944|      0|                (co->co_flags & (CO_GENERATOR | CO_COROUTINE | CO_ASYNC_GENERATOR)) == 0) {
  ------------------
  |  |  123|      0|#define CO_GENERATOR    0x0020
  ------------------
                              (co->co_flags & (CO_GENERATOR | CO_COROUTINE | CO_ASYNC_GENERATOR)) == 0) {
  ------------------
  |  |  127|      0|#define CO_COROUTINE            0x0080
  ------------------
                              (co->co_flags & (CO_GENERATOR | CO_COROUTINE | CO_ASYNC_GENERATOR)) == 0) {
  ------------------
  |  |  129|      0|#define CO_ASYNC_GENERATOR      0x0200
  ------------------
  |  Branch (2944:17): [True: 0, False: 0]
  ------------------
 2945|      0|                specialize(instr, RESUME_CHECK_JIT);
  ------------------
  |  |  206|      0|#define RESUME_CHECK_JIT                       201
  ------------------
 2946|      0|                set_counter((_Py_BackoffCounter *)instr + 1, initial_resume_backoff_counter(&tstate->interp->opt_config));
 2947|      0|                return;
 2948|      0|            }
 2949|      0|        }
 2950|    270|        specialize(instr, RESUME_CHECK);
  ------------------
  |  |  205|    270|#define RESUME_CHECK                           200
  ------------------
 2951|    270|        return;
 2952|    270|    }
 2953|      0|    unspecialize(instr);
 2954|      0|    return;
 2955|    270|}
specialize.c:fixup_getiter:
   48|    143|{
   49|       |    // Compiler can't know if types.coroutine() will be called,
   50|       |    // so fix up here
   51|    143|    if (instruction->op.arg) {
  ------------------
  |  Branch (51:9): [True: 4, False: 139]
  ------------------
   52|      4|        if (flags & (CO_COROUTINE | CO_ITERABLE_COROUTINE)) {
  ------------------
  |  |  127|      4|#define CO_COROUTINE            0x0080
  ------------------
                      if (flags & (CO_COROUTINE | CO_ITERABLE_COROUTINE)) {
  ------------------
  |  |  128|      4|#define CO_ITERABLE_COROUTINE   0x0100
  ------------------
  |  Branch (52:13): [True: 0, False: 4]
  ------------------
   53|      0|            instruction->op.arg = GET_ITER_YIELD_FROM_NO_CHECK;
  ------------------
  |  |   96|      0|#define GET_ITER_YIELD_FROM_NO_CHECK 2
  ------------------
   54|      0|        }
   55|      4|        else {
   56|      4|            instruction->op.arg = GET_ITER_YIELD_FROM_CORO_CHECK;
  ------------------
  |  |   97|      4|#define GET_ITER_YIELD_FROM_CORO_CHECK 3
  ------------------
   57|      4|        }
   58|      4|    }
   59|    143|}
specialize.c:specialize:
  363|  1.12k|{
  364|  1.12k|    assert(!PyErr_Occurred());
  ------------------
  |  Branch (364:5): [True: 1.12k, False: 0]
  ------------------
  365|  1.12k|    if (!set_opcode(instr, specialized_opcode)) {
  ------------------
  |  Branch (365:9): [True: 0, False: 1.12k]
  ------------------
  366|      0|        STAT_INC(_PyOpcode_Deopt[specialized_opcode], failure);
  ------------------
  |  |   73|      0|#define STAT_INC(opname, name) ((void)0)
  ------------------
  367|      0|        SPECIALIZATION_FAIL(_PyOpcode_Deopt[specialized_opcode],
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
  368|      0|                            SPEC_FAIL_OTHER);
  369|      0|        return;
  370|      0|    }
  371|  1.12k|    STAT_INC(_PyOpcode_Deopt[specialized_opcode], success);
  ------------------
  |  |   73|  1.12k|#define STAT_INC(opname, name) ((void)0)
  ------------------
  372|  1.12k|    set_counter((_Py_BackoffCounter *)instr + 1, adaptive_counter_cooldown());
  373|  1.12k|}
specialize.c:set_opcode:
  326|  1.19k|{
  327|       |#ifdef Py_GIL_DISABLED
  328|       |    uint8_t old_op = _Py_atomic_load_uint8_relaxed(&instr->op.code);
  329|       |    if (old_op >= MIN_INSTRUMENTED_OPCODE) {
  330|       |        /* Lost race with instrumentation */
  331|       |        return 0;
  332|       |    }
  333|       |    if (!_Py_atomic_compare_exchange_uint8(&instr->op.code, &old_op, opcode)) {
  334|       |        /* Lost race with instrumentation */
  335|       |        assert(old_op >= MIN_INSTRUMENTED_OPCODE);
  336|       |        return 0;
  337|       |    }
  338|       |    return 1;
  339|       |#else
  340|  1.19k|    instr->op.code = opcode;
  341|  1.19k|    return 1;
  342|  1.19k|#endif
  343|  1.19k|}
specialize.c:unspecialize:
  377|     74|{
  378|     74|    assert(!PyErr_Occurred());
  ------------------
  |  Branch (378:5): [True: 74, False: 0]
  ------------------
  379|     74|    uint8_t opcode = FT_ATOMIC_LOAD_UINT8_RELAXED(instr->op.code);
  ------------------
  |  |  157|     74|#define FT_ATOMIC_LOAD_UINT8_RELAXED(value) value
  ------------------
  380|     74|    uint8_t generic_opcode = _PyOpcode_Deopt[opcode];
  381|     74|    STAT_INC(generic_opcode, failure);
  ------------------
  |  |   73|     74|#define STAT_INC(opname, name) ((void)0)
  ------------------
  382|     74|    if (!set_opcode(instr, generic_opcode)) {
  ------------------
  |  Branch (382:9): [True: 0, False: 74]
  ------------------
  383|      0|        SPECIALIZATION_FAIL(generic_opcode, SPEC_FAIL_OTHER);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
  384|      0|        return;
  385|      0|    }
  386|     74|    _Py_BackoffCounter *counter = (_Py_BackoffCounter *)instr + 1;
  387|     74|    _Py_BackoffCounter cur = load_counter(counter);
  388|     74|    set_counter(counter, adaptive_counter_backoff(cur));
  389|     74|}
specialize.c:load_counter:
  354|     74|{
  355|     74|    _Py_BackoffCounter result = {
  356|     74|        .value_and_backoff =
  357|     74|            FT_ATOMIC_LOAD_UINT16_RELAXED(counter->value_and_backoff)};
  ------------------
  |  |  158|     74|#define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
  ------------------
  358|     74|    return result;
  359|     74|}
specialize.c:specialize_module_load_attr:
  450|     81|{
  451|     81|    PyModuleObject *m = (PyModuleObject *)owner;
  452|     81|    assert((Py_TYPE(owner)->tp_flags & Py_TPFLAGS_MANAGED_DICT) == 0);
  ------------------
  |  Branch (452:5): [True: 81, False: 0]
  ------------------
  453|     81|    PyDictObject *dict = (PyDictObject *)m->md_dict;
  454|     81|    if (dict == NULL) {
  ------------------
  |  Branch (454:9): [True: 0, False: 81]
  ------------------
  455|      0|        SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_NO_DICT);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
  456|      0|        return -1;
  457|      0|    }
  458|     81|    int result;
  459|     81|    Py_BEGIN_CRITICAL_SECTION(dict);
  ------------------
  |  |   51|     81|    {
  ------------------
  460|     81|    result = specialize_module_load_attr_lock_held(dict, instr, name);
  461|     81|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|     81|    }
  ------------------
  462|     81|    return result;
  463|     81|}
specialize.c:specialize_module_load_attr_lock_held:
  412|     81|{
  413|     81|    _PyAttrCache *cache = (_PyAttrCache *)(instr + 1);
  414|     81|    if (dict->ma_keys->dk_kind != DICT_KEYS_UNICODE) {
  ------------------
  |  Branch (414:9): [True: 0, False: 81]
  ------------------
  415|      0|        SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_ATTR_NON_STRING);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
  416|      0|        return -1;
  417|      0|    }
  418|     81|    PyObject *value;
  419|     81|    Py_ssize_t index = _PyDict_LookupIndexAndValue(dict, name, &value);
  420|     81|    if (value != NULL && PyLazyImport_CheckExact(value)) {
  ------------------
  |  |   15|     77|#define PyLazyImport_CheckExact(op) Py_IS_TYPE((op), &PyLazyImport_Type)
  |  |  ------------------
  |  |  |  |  215|     77|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     77|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     77|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 77]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (420:9): [True: 77, False: 4]
  ------------------
  421|      0|        SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_ATTR_MODULE_LAZY_VALUE);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
  422|      0|        return -1;
  423|      0|    }
  424|     81|    assert(index != DKIX_ERROR);
  ------------------
  |  Branch (424:5): [True: 81, False: 0]
  ------------------
  425|     81|    if (index != (uint16_t)index) {
  ------------------
  |  Branch (425:9): [True: 4, False: 77]
  ------------------
  426|      4|        SPECIALIZATION_FAIL(LOAD_ATTR,
  ------------------
  |  |   43|      4|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
  427|      4|                            index == DKIX_EMPTY ?
  428|      4|                            SPEC_FAIL_ATTR_MODULE_ATTR_NOT_FOUND :
  429|      4|                            SPEC_FAIL_OUT_OF_RANGE);
  430|      4|        return -1;
  431|      4|    }
  432|     77|    uint32_t keys_version = _PyDict_GetKeysVersionForCurrentState(
  433|     77|            _PyInterpreterState_GET(), dict);
  434|     77|    if (keys_version == 0) {
  ------------------
  |  Branch (434:9): [True: 0, False: 77]
  ------------------
  435|      0|        SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_OUT_OF_VERSIONS);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
  436|      0|        return -1;
  437|      0|    }
  438|       |#ifdef Py_GIL_DISABLED
  439|       |    maybe_enable_deferred_ref_count(value);
  440|       |#endif
  441|     77|    write_u32(cache->version, keys_version);
  442|     77|    cache->index = (uint16_t)index;
  443|     77|    specialize(instr, LOAD_ATTR_MODULE);
  ------------------
  |  |  195|     77|#define LOAD_ATTR_MODULE                       190
  ------------------
  444|     77|    return 0;
  445|     77|}
specialize.c:specialize_instance_load_attr:
  980|    126|{
  981|       |    // 0 is not a valid version
  982|    126|    uint32_t shared_keys_version = 0;
  983|    126|    bool shadow = instance_has_key(owner, name, &shared_keys_version);
  984|    126|    PyObject *descr = NULL;
  985|    126|    unsigned int tp_version = 0;
  986|    126|    PyTypeObject *type = Py_TYPE(owner);
  ------------------
  |  |  213|    126|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    126|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    126|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  987|    126|    DescriptorClassification kind = analyze_descriptor_load(type, name, &descr, &tp_version);
  988|    126|    int result = do_specialize_instance_load_attr(owner, instr, name, shadow, shared_keys_version, kind, descr, tp_version);
  989|    126|    Py_XDECREF(descr);
  ------------------
  |  |  524|    126|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    126|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    126|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  990|    126|    return result;
  991|    126|}
specialize.c:instance_has_key:
  759|    126|{
  760|    126|    PyTypeObject *cls = Py_TYPE(obj);
  ------------------
  |  |  213|    126|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    126|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    126|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  761|    126|    if ((cls->tp_flags & Py_TPFLAGS_MANAGED_DICT) == 0) {
  ------------------
  |  |  482|    126|#define Py_TPFLAGS_MANAGED_DICT (1 << 4)
  ------------------
  |  Branch (761:9): [True: 55, False: 71]
  ------------------
  762|     55|        return false;
  763|     55|    }
  764|     71|    if (cls->tp_flags & Py_TPFLAGS_INLINE_VALUES) {
  ------------------
  |  |  472|     71|#define Py_TPFLAGS_INLINE_VALUES (1 << 2)
  ------------------
  |  Branch (764:9): [True: 71, False: 0]
  ------------------
  765|     71|        PyDictKeysObject *keys = ((PyHeapTypeObject *)cls)->ht_cached_keys;
  766|     71|        Py_ssize_t index =
  767|     71|            _PyDictKeys_StringLookupAndVersion(keys, name, shared_keys_version);
  768|     71|        return index >= 0;
  769|     71|    }
  770|      0|    PyDictObject *dict = _PyObject_GetManagedDict(obj);
  771|      0|    if (dict == NULL || !PyDict_CheckExact(dict)) {
  ------------------
  |  |   19|      0|#define PyDict_CheckExact(op) Py_IS_TYPE((op), &PyDict_Type)
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (771:9): [True: 0, False: 0]
  |  Branch (771:25): [True: 0, False: 0]
  ------------------
  772|      0|        return false;
  773|      0|    }
  774|      0|    bool result;
  775|      0|    Py_BEGIN_CRITICAL_SECTION(dict);
  ------------------
  |  |   51|      0|    {
  ------------------
  776|      0|    if (dict->ma_values) {
  ------------------
  |  Branch (776:9): [True: 0, False: 0]
  ------------------
  777|      0|        result = false;
  778|      0|    }
  779|      0|    else {
  780|      0|        result = (_PyDict_LookupIndex(dict, name) >= 0);
  781|      0|    }
  782|      0|    Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|      0|    }
  ------------------
  783|      0|    return result;
  784|      0|}
specialize.c:analyze_descriptor_load:
  557|    147|analyze_descriptor_load(PyTypeObject *type, PyObject *name, PyObject **descr, unsigned int *tp_version) {
  558|    147|    bool has_getattr = false;
  559|    147|    bool have_ga_version = false;
  560|    147|    unsigned int ga_version;
  561|    147|    getattrofunc getattro_slot = type->tp_getattro;
  562|    147|    if (getattro_slot == PyObject_GenericGetAttr) {
  ------------------
  |  Branch (562:9): [True: 147, False: 0]
  ------------------
  563|       |        /* Normal attribute lookup; */
  564|    147|        has_getattr = false;
  565|    147|    }
  566|      0|    else if (getattro_slot == _Py_slot_tp_getattr_hook ||
  ------------------
  |  Branch (566:14): [True: 0, False: 0]
  ------------------
  567|      0|        getattro_slot == _Py_slot_tp_getattro) {
  ------------------
  |  Branch (567:9): [True: 0, False: 0]
  ------------------
  568|       |        /* One or both of __getattribute__ or __getattr__ may have been
  569|       |         overridden See typeobject.c for why these functions are special. */
  570|      0|        PyObject *getattribute = _PyType_LookupRefAndVersion(type,
  571|      0|                &_Py_ID(__getattribute__), &ga_version);
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  572|      0|        have_ga_version = true;
  573|      0|        PyInterpreterState *interp = _PyInterpreterState_GET();
  574|      0|        bool has_custom_getattribute = getattribute != NULL &&
  ------------------
  |  Branch (574:40): [True: 0, False: 0]
  ------------------
  575|      0|            getattribute != interp->callable_cache.object__getattribute__;
  ------------------
  |  Branch (575:13): [True: 0, False: 0]
  ------------------
  576|      0|        PyObject *getattr = _PyType_Lookup(type, &_Py_ID(__getattr__));
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  577|      0|        has_getattr = getattr != NULL;
  578|      0|        if (has_custom_getattribute) {
  ------------------
  |  Branch (578:13): [True: 0, False: 0]
  ------------------
  579|      0|            if (!has_getattr &&
  ------------------
  |  Branch (579:17): [True: 0, False: 0]
  ------------------
  580|      0|                Py_IS_TYPE(getattribute, &PyFunction_Type)) {
  ------------------
  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  581|      0|                *descr = getattribute;
  582|      0|                *tp_version = ga_version;
  583|      0|                return GETATTRIBUTE_IS_PYTHON_FUNCTION;
  584|      0|            }
  585|       |            /* Potentially both __getattr__ and __getattribute__ are set.
  586|       |               Too complicated */
  587|      0|            Py_DECREF(getattribute);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  588|      0|            *descr = NULL;
  589|      0|            *tp_version = ga_version;
  590|      0|            return GETSET_OVERRIDDEN;
  591|      0|        }
  592|       |        /* Potentially has __getattr__ but no custom __getattribute__.
  593|       |           Fall through to usual descriptor analysis.
  594|       |           Usual attribute lookup should only be allowed at runtime
  595|       |           if we can guarantee that there is no way an exception can be
  596|       |           raised. This means some specializations, e.g. specializing
  597|       |           for property() isn't safe.
  598|       |        */
  599|      0|        Py_XDECREF(getattribute);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  600|      0|    }
  601|      0|    else {
  602|      0|        *descr = NULL;
  603|      0|        *tp_version = FT_ATOMIC_LOAD_UINT_RELAXED(type->tp_version_tag);
  ------------------
  |  |  189|      0|#define FT_ATOMIC_LOAD_UINT_RELAXED(value) value
  ------------------
  604|      0|        return GETSET_OVERRIDDEN;
  605|      0|    }
  606|    147|    unsigned int descr_version;
  607|    147|    PyObject *descriptor = _PyType_LookupRefAndVersion(type, name, &descr_version);
  608|    147|    *descr = descriptor;
  609|    147|    *tp_version = have_ga_version ? ga_version : descr_version;
  ------------------
  |  Branch (609:19): [True: 0, False: 147]
  ------------------
  610|    147|    if (descriptor_is_class(descriptor, name)) {
  ------------------
  |  Branch (610:9): [True: 0, False: 147]
  ------------------
  611|      0|        return DUNDER_CLASS;
  612|      0|    }
  613|    147|    return classify_descriptor(descriptor, has_getattr);
  614|    147|}
specialize.c:descriptor_is_class:
  551|    203|{
  552|    203|    return ((PyUnicode_CompareWithASCIIString(name, "__class__") == 0) &&
  ------------------
  |  Branch (552:13): [True: 0, False: 203]
  ------------------
  553|      0|            (descriptor == _PyType_Lookup(&PyBaseObject_Type, name)));
  ------------------
  |  Branch (553:13): [True: 0, False: 0]
  ------------------
  554|    203|}
specialize.c:classify_descriptor:
  509|    232|{
  510|    232|    if (descriptor == NULL) {
  ------------------
  |  Branch (510:9): [True: 136, False: 96]
  ------------------
  511|    136|        return ABSENT;
  512|    136|    }
  513|     96|    PyTypeObject *desc_cls = Py_TYPE(descriptor);
  ------------------
  |  |  213|     96|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     96|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     96|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  514|     96|    if (!(desc_cls->tp_flags & Py_TPFLAGS_IMMUTABLETYPE)) {
  ------------------
  |  |  500|     96|#define Py_TPFLAGS_IMMUTABLETYPE (1UL << 8)
  ------------------
  |  Branch (514:9): [True: 0, False: 96]
  ------------------
  515|      0|        return MUTABLE;
  516|      0|    }
  517|     96|    if (desc_cls->tp_descr_set) {
  ------------------
  |  Branch (517:9): [True: 22, False: 74]
  ------------------
  518|     22|        if (desc_cls == &PyMemberDescr_Type) {
  ------------------
  |  Branch (518:13): [True: 7, False: 15]
  ------------------
  519|      7|            PyMemberDescrObject *member = (PyMemberDescrObject *)descriptor;
  520|      7|            struct PyMemberDef *dmem = member->d_member;
  521|      7|            if (dmem->type == Py_T_OBJECT_EX || dmem->type == _Py_T_OBJECT) {
  ------------------
  |  |   75|     14|#define Py_T_OBJECT_EX 16
  ------------------
                          if (dmem->type == Py_T_OBJECT_EX || dmem->type == _Py_T_OBJECT) {
  ------------------
  |  |   59|      5|#define _Py_T_OBJECT   6  // Deprecated, use Py_T_OBJECT_EX instead
  ------------------
  |  Branch (521:17): [True: 2, False: 5]
  |  Branch (521:49): [True: 5, False: 0]
  ------------------
  522|      7|                return OBJECT_SLOT;
  523|      7|            }
  524|      0|            return OTHER_SLOT;
  525|      7|        }
  526|     15|        if (desc_cls == &PyProperty_Type) {
  ------------------
  |  Branch (526:13): [True: 3, False: 12]
  ------------------
  527|       |            /* We can't detect at runtime whether an attribute exists
  528|       |               with property. So that means we may have to call
  529|       |               __getattr__. */
  530|      3|            return has_getattr ? GETSET_OVERRIDDEN : PROPERTY;
  ------------------
  |  Branch (530:20): [True: 0, False: 3]
  ------------------
  531|      3|        }
  532|     12|        return OVERRIDING;
  533|     15|    }
  534|     74|    if (desc_cls->tp_descr_get) {
  ------------------
  |  Branch (534:9): [True: 71, False: 3]
  ------------------
  535|     71|        if (desc_cls->tp_flags & Py_TPFLAGS_METHOD_DESCRIPTOR) {
  ------------------
  |  |  534|     71|#define Py_TPFLAGS_METHOD_DESCRIPTOR (1UL << 17)
  ------------------
  |  Branch (535:13): [True: 51, False: 20]
  ------------------
  536|     51|            return METHOD;
  537|     51|        }
  538|     20|        if (Py_IS_TYPE(descriptor, &PyClassMethodDescr_Type)) {
  ------------------
  |  |  215|     20|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|     20|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     20|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 0, False: 20]
  |  |  ------------------
  ------------------
  539|      0|            return BUILTIN_CLASSMETHOD;
  540|      0|        }
  541|     20|        if (Py_IS_TYPE(descriptor, &PyClassMethod_Type)) {
  ------------------
  |  |  215|     20|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|     20|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     20|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (215:32): [True: 11, False: 9]
  |  |  ------------------
  ------------------
  542|     11|            return PYTHON_CLASSMETHOD;
  543|     11|        }
  544|      9|        return NON_OVERRIDING;
  545|     20|    }
  546|      3|    return NON_DESCRIPTOR;
  547|     74|}
specialize.c:do_specialize_instance_load_attr:
  790|    126|{
  791|    126|    _PyAttrCache *cache = (_PyAttrCache *)(instr + 1);
  792|    126|    PyTypeObject *type = Py_TYPE(owner);
  ------------------
  |  |  213|    126|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|    126|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    126|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  793|    126|    if (tp_version == 0) {
  ------------------
  |  Branch (793:9): [True: 0, False: 126]
  ------------------
  794|      0|        SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_OUT_OF_VERSIONS);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
  795|      0|        return -1;
  796|      0|    }
  797|    126|    uint8_t oparg = FT_ATOMIC_LOAD_UINT8_RELAXED(instr->op.arg);
  ------------------
  |  |  157|    126|#define FT_ATOMIC_LOAD_UINT8_RELAXED(value) value
  ------------------
  798|    126|    switch(kind) {
  ------------------
  |  Branch (798:12): [True: 126, False: 0]
  ------------------
  799|      4|        case OVERRIDING:
  ------------------
  |  Branch (799:9): [True: 4, False: 122]
  ------------------
  800|      4|            SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_ATTR_OVERRIDING_DESCRIPTOR);
  ------------------
  |  |   43|      4|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
  801|      4|            return -1;
  802|     51|        case METHOD:
  ------------------
  |  Branch (802:9): [True: 51, False: 75]
  ------------------
  803|     51|        {
  804|     51|            if (shadow) {
  ------------------
  |  Branch (804:17): [True: 0, False: 51]
  ------------------
  805|      0|                goto try_instance;
  806|      0|            }
  807|     51|            if (oparg & 1) {
  ------------------
  |  Branch (807:17): [True: 51, False: 0]
  ------------------
  808|     51|                if (specialize_attr_loadclassattr(owner, instr, name, descr,
  ------------------
  |  Branch (808:21): [True: 51, False: 0]
  ------------------
  809|     51|                                                  tp_version, kind, true,
  810|     51|                                                  shared_keys_version)) {
  811|     51|                    return 0;
  812|     51|                }
  813|      0|                else {
  814|      0|                    return -1;
  815|      0|                }
  816|     51|            }
  817|      0|            SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_ATTR_METHOD);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
  818|      0|            return -1;
  819|     51|        }
  820|      2|        case PROPERTY:
  ------------------
  |  Branch (820:9): [True: 2, False: 124]
  ------------------
  821|      2|        {
  822|      2|            _PyLoadMethodCache *lm_cache = (_PyLoadMethodCache *)(instr + 1);
  823|      2|            assert(Py_TYPE(descr) == &PyProperty_Type);
  ------------------
  |  Branch (823:13): [True: 2, False: 0]
  ------------------
  824|      2|            PyObject *fget = ((_PyPropertyObject *)descr)->prop_get;
  825|      2|            if (fget == NULL) {
  ------------------
  |  Branch (825:17): [True: 0, False: 2]
  ------------------
  826|      0|                SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_EXPECTED_ERROR);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
  827|      0|                return -1;
  828|      0|            }
  829|      2|            if (!Py_IS_TYPE(fget, &PyFunction_Type)) {
  ------------------
  |  |  215|      2|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (829:17): [True: 0, False: 2]
  ------------------
  830|      0|                SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_ATTR_PROPERTY_NOT_PY_FUNCTION);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
  831|      0|                return -1;
  832|      0|            }
  833|      2|            if (!function_check_args(fget, 1, LOAD_ATTR)) {
  ------------------
  |  |   92|      2|#define LOAD_ATTR                               79
  ------------------
  |  Branch (833:17): [True: 0, False: 2]
  ------------------
  834|      0|                return -1;
  835|      0|            }
  836|      2|            if (oparg & 1) {
  ------------------
  |  Branch (836:17): [True: 0, False: 2]
  ------------------
  837|      0|                SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_ATTR_METHOD);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
  838|      0|                return -1;
  839|      0|            }
  840|       |            /* Don't specialize if PEP 523 is active */
  841|      2|            if (!_PyInterpreterState_IsSpecializationEnabled(_PyInterpreterState_GET())) {
  ------------------
  |  Branch (841:17): [True: 0, False: 2]
  ------------------
  842|      0|                SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_OTHER);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
  843|      0|                return -1;
  844|      0|            }
  845|       |            #ifdef Py_GIL_DISABLED
  846|       |            if (!_PyObject_HasDeferredRefcount(fget)) {
  847|       |                SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_ATTR_DESCR_NOT_DEFERRED);
  848|       |                return -1;
  849|       |            }
  850|       |            #endif
  851|      2|            uint32_t func_version = function_get_version(fget, LOAD_ATTR);
  ------------------
  |  |   92|      2|#define LOAD_ATTR                               79
  ------------------
  852|      2|            if (func_version == 0) {
  ------------------
  |  Branch (852:17): [True: 0, False: 2]
  ------------------
  853|      0|                return -1;
  854|      0|            }
  855|      2|            assert(tp_version != 0);
  ------------------
  |  Branch (855:13): [True: 2, False: 0]
  ------------------
  856|      2|            write_u32(lm_cache->type_version, tp_version);
  857|      2|            write_u32(lm_cache->keys_version, func_version);
  858|       |            /* borrowed */
  859|      2|            write_ptr(lm_cache->descr, fget);
  860|      2|            specialize(instr, LOAD_ATTR_PROPERTY);
  ------------------
  |  |  198|      2|#define LOAD_ATTR_PROPERTY                     193
  ------------------
  861|      2|            return 0;
  862|      2|        }
  863|      6|        case OBJECT_SLOT:
  ------------------
  |  Branch (863:9): [True: 6, False: 120]
  ------------------
  864|      6|        {
  865|      6|            PyMemberDescrObject *member = (PyMemberDescrObject *)descr;
  866|      6|            struct PyMemberDef *dmem = member->d_member;
  867|      6|            Py_ssize_t offset = dmem->offset;
  868|      6|            if (!PyObject_TypeCheck(owner, member->d_common.d_type)) {
  ------------------
  |  |  378|      6|#  define PyObject_TypeCheck(ob, type) PyObject_TypeCheck(_PyObject_CAST(ob), (type))
  |  |  ------------------
  |  |  |  |  171|      6|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (868:17): [True: 0, False: 6]
  ------------------
  869|      0|                SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_EXPECTED_ERROR);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
  870|      0|                return -1;
  871|      0|            }
  872|      6|            if (dmem->flags & _Py_AFTER_ITEMS) {
  ------------------
  |  |   89|      6|#  define _Py_AFTER_ITEMS      (1 << 4) // For internal use.
  ------------------
  |  Branch (872:17): [True: 0, False: 6]
  ------------------
  873|      0|                SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_ATTR_SLOT_AFTER_ITEMS);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
  874|      0|                return -1;
  875|      0|            }
  876|      6|            if (dmem->flags & Py_AUDIT_READ) {
  ------------------
  |  |   84|      6|#define Py_AUDIT_READ          (1 << 1) // Added in 3.10, harmless no-op before that
  ------------------
  |  Branch (876:17): [True: 0, False: 6]
  ------------------
  877|      0|                SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_ATTR_AUDITED_SLOT);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
  878|      0|                return -1;
  879|      0|            }
  880|      6|            if (offset != (uint16_t)offset) {
  ------------------
  |  Branch (880:17): [True: 0, False: 6]
  ------------------
  881|      0|                SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_OUT_OF_RANGE);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
  882|      0|                return -1;
  883|      0|            }
  884|      6|            assert(dmem->type == Py_T_OBJECT_EX || dmem->type == _Py_T_OBJECT);
  ------------------
  |  Branch (884:13): [True: 1, False: 5]
  |  Branch (884:13): [True: 5, False: 0]
  ------------------
  885|      6|            assert(offset > 0);
  ------------------
  |  Branch (885:13): [True: 6, False: 0]
  ------------------
  886|      6|            cache->index = (uint16_t)offset;
  887|      6|            write_u32(cache->version, tp_version);
  888|      6|            specialize(instr, LOAD_ATTR_SLOT);
  ------------------
  |  |  199|      6|#define LOAD_ATTR_SLOT                         194
  ------------------
  889|      6|            return 0;
  890|      6|        }
  891|      0|        case DUNDER_CLASS:
  ------------------
  |  Branch (891:9): [True: 0, False: 126]
  ------------------
  892|      0|        {
  893|      0|            Py_ssize_t offset = offsetof(PyObject, ob_type);
  894|      0|            assert(offset == (uint16_t)offset);
  ------------------
  |  Branch (894:13): [True: 0, False: 0]
  ------------------
  895|      0|            cache->index = (uint16_t)offset;
  896|      0|            write_u32(cache->version, tp_version);
  897|      0|            specialize(instr, LOAD_ATTR_SLOT);
  ------------------
  |  |  199|      0|#define LOAD_ATTR_SLOT                         194
  ------------------
  898|      0|            return 0;
  899|      0|        }
  900|      0|        case OTHER_SLOT:
  ------------------
  |  Branch (900:9): [True: 0, False: 126]
  ------------------
  901|      0|            SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_ATTR_NON_OBJECT_SLOT);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
  902|      0|            return -1;
  903|      0|        case MUTABLE:
  ------------------
  |  Branch (903:9): [True: 0, False: 126]
  ------------------
  904|      0|            SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_ATTR_MUTABLE_CLASS);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
  905|      0|            return -1;
  906|      0|        case GETSET_OVERRIDDEN:
  ------------------
  |  Branch (906:9): [True: 0, False: 126]
  ------------------
  907|      0|            SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_OVERRIDDEN);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
  908|      0|            return -1;
  909|      0|        case GETATTRIBUTE_IS_PYTHON_FUNCTION:
  ------------------
  |  Branch (909:9): [True: 0, False: 126]
  ------------------
  910|      0|        {
  911|      0|            assert(Py_IS_TYPE(descr, &PyFunction_Type));
  ------------------
  |  Branch (911:13): [True: 0, False: 0]
  ------------------
  912|      0|            _PyLoadMethodCache *lm_cache = (_PyLoadMethodCache *)(instr + 1);
  913|      0|            if (!function_check_args(descr, 2, LOAD_ATTR)) {
  ------------------
  |  |   92|      0|#define LOAD_ATTR                               79
  ------------------
  |  Branch (913:17): [True: 0, False: 0]
  ------------------
  914|      0|                return -1;
  915|      0|            }
  916|      0|            if (oparg & 1) {
  ------------------
  |  Branch (916:17): [True: 0, False: 0]
  ------------------
  917|      0|                SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_ATTR_METHOD);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
  918|      0|                return -1;
  919|      0|            }
  920|      0|            uint32_t version = function_get_version(descr, LOAD_ATTR);
  ------------------
  |  |   92|      0|#define LOAD_ATTR                               79
  ------------------
  921|      0|            if (version == 0) {
  ------------------
  |  Branch (921:17): [True: 0, False: 0]
  ------------------
  922|      0|                return -1;
  923|      0|            }
  924|       |            /* Don't specialize if PEP 523 is active */
  925|      0|            if (!_PyInterpreterState_IsSpecializationEnabled(_PyInterpreterState_GET())) {
  ------------------
  |  Branch (925:17): [True: 0, False: 0]
  ------------------
  926|      0|                SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_OTHER);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
  927|      0|                return -1;
  928|      0|            }
  929|       |            #ifdef Py_GIL_DISABLED
  930|       |            if (!_PyObject_HasDeferredRefcount(descr)) {
  931|       |                SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_ATTR_DESCR_NOT_DEFERRED);
  932|       |                return -1;
  933|       |            }
  934|       |            #endif
  935|      0|            write_u32(lm_cache->keys_version, version);
  936|       |            /* borrowed */
  937|      0|            write_ptr(lm_cache->descr, descr);
  938|      0|            write_u32(lm_cache->type_version, tp_version);
  939|      0|            specialize(instr, LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN);
  ------------------
  |  |  190|      0|#define LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN      185
  ------------------
  940|      0|            return 0;
  941|      0|        }
  942|      0|        case BUILTIN_CLASSMETHOD:
  ------------------
  |  Branch (942:9): [True: 0, False: 126]
  ------------------
  943|      0|        case PYTHON_CLASSMETHOD:
  ------------------
  |  Branch (943:9): [True: 0, False: 126]
  ------------------
  944|      2|        case NON_OVERRIDING:
  ------------------
  |  Branch (944:9): [True: 2, False: 124]
  ------------------
  945|      2|            if (shadow) {
  ------------------
  |  Branch (945:17): [True: 0, False: 2]
  ------------------
  946|      0|                goto try_instance;
  947|      0|            }
  948|      2|            return -1;
  949|      0|        case NON_DESCRIPTOR:
  ------------------
  |  Branch (949:9): [True: 0, False: 126]
  ------------------
  950|      0|            if (shadow) {
  ------------------
  |  Branch (950:17): [True: 0, False: 0]
  ------------------
  951|      0|                goto try_instance;
  952|      0|            }
  953|      0|            if ((oparg & 1) == 0) {
  ------------------
  |  Branch (953:17): [True: 0, False: 0]
  ------------------
  954|      0|                if (specialize_attr_loadclassattr(owner, instr, name, descr,
  ------------------
  |  Branch (954:21): [True: 0, False: 0]
  ------------------
  955|      0|                                                  tp_version, kind, false,
  956|      0|                                                  shared_keys_version)) {
  957|      0|                    return 0;
  958|      0|                }
  959|      0|            }
  960|      0|            return -1;
  961|     61|        case ABSENT:
  ------------------
  |  Branch (961:9): [True: 61, False: 65]
  ------------------
  962|     61|            if (shadow) {
  ------------------
  |  Branch (962:17): [True: 60, False: 1]
  ------------------
  963|     60|                goto try_instance;
  964|     60|            }
  965|      1|            set_counter((_Py_BackoffCounter*)instr + 1, adaptive_counter_cooldown());
  966|      1|            return 0;
  967|    126|    }
  968|    126|    Py_UNREACHABLE();
  ------------------
  |  |  264|      0|#  define Py_UNREACHABLE() __builtin_unreachable()
  ------------------
  969|     60|try_instance:
  970|     60|    if (specialize_dict_access(owner, instr, type, kind, name, tp_version,
  ------------------
  |  Branch (970:9): [True: 60, False: 0]
  ------------------
  971|     60|                               LOAD_ATTR, LOAD_ATTR_INSTANCE_VALUE, LOAD_ATTR_WITH_HINT))
  ------------------
  |  |   92|     60|#define LOAD_ATTR                               79
  ------------------
                                             LOAD_ATTR, LOAD_ATTR_INSTANCE_VALUE, LOAD_ATTR_WITH_HINT))
  ------------------
  |  |  191|     60|#define LOAD_ATTR_INSTANCE_VALUE               186
  ------------------
                                             LOAD_ATTR, LOAD_ATTR_INSTANCE_VALUE, LOAD_ATTR_WITH_HINT))
  ------------------
  |  |  200|     60|#define LOAD_ATTR_WITH_HINT                    195
  ------------------
  972|     60|    {
  973|     60|        return 0;
  974|     60|    }
  975|      0|    return -1;
  976|     60|}
specialize.c:specialize_attr_loadclassattr:
 1264|     51|{
 1265|     51|    _PyLoadMethodCache *cache = (_PyLoadMethodCache *)(instr + 1);
 1266|     51|    PyTypeObject *owner_cls = Py_TYPE(owner);
  ------------------
  |  |  213|     51|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     51|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     51|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1267|       |
 1268|     51|    assert(descr != NULL);
  ------------------
  |  Branch (1268:5): [True: 51, False: 0]
  ------------------
 1269|     51|    assert((is_method && kind == METHOD) || (!is_method && kind == NON_DESCRIPTOR));
  ------------------
  |  Branch (1269:5): [True: 51, False: 0]
  |  Branch (1269:5): [True: 51, False: 0]
  |  Branch (1269:5): [True: 0, False: 0]
  |  Branch (1269:5): [True: 0, False: 0]
  ------------------
 1270|       |
 1271|       |    #ifdef Py_GIL_DISABLED
 1272|       |    if (!_PyObject_HasDeferredRefcount(descr)) {
 1273|       |        SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_ATTR_DESCR_NOT_DEFERRED);
 1274|       |        return 0;
 1275|       |    }
 1276|       |    #endif
 1277|       |
 1278|     51|    unsigned long tp_flags = PyType_GetFlags(owner_cls);
 1279|     51|    if (tp_flags & Py_TPFLAGS_INLINE_VALUES) {
  ------------------
  |  |  472|     51|#define Py_TPFLAGS_INLINE_VALUES (1 << 2)
  ------------------
  |  Branch (1279:9): [True: 9, False: 42]
  ------------------
 1280|      9|        #ifndef Py_GIL_DISABLED
 1281|      9|        assert(_PyDictKeys_StringLookup(
  ------------------
  |  Branch (1281:9): [True: 9, False: 0]
  ------------------
 1282|      9|                   ((PyHeapTypeObject *)owner_cls)->ht_cached_keys, name) < 0);
 1283|      9|        #endif
 1284|      9|        if (shared_keys_version == 0) {
  ------------------
  |  Branch (1284:13): [True: 0, False: 9]
  ------------------
 1285|      0|            SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_OUT_OF_VERSIONS);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1286|      0|            return 0;
 1287|      0|        }
 1288|      9|        write_u32(cache->keys_version, shared_keys_version);
 1289|      9|        specialize(instr, is_method ? LOAD_ATTR_METHOD_WITH_VALUES : LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES);
  ------------------
  |  |  194|      9|#define LOAD_ATTR_METHOD_WITH_VALUES           189
  ------------------
                      specialize(instr, is_method ? LOAD_ATTR_METHOD_WITH_VALUES : LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES);
  ------------------
  |  |  197|      9|#define LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES    192
  ------------------
  |  Branch (1289:27): [True: 9, False: 0]
  ------------------
 1290|      9|    }
 1291|     42|    else {
 1292|     42|        Py_ssize_t dictoffset;
 1293|     42|        if (tp_flags & Py_TPFLAGS_MANAGED_DICT) {
  ------------------
  |  |  482|     42|#define Py_TPFLAGS_MANAGED_DICT (1 << 4)
  ------------------
  |  Branch (1293:13): [True: 0, False: 42]
  ------------------
 1294|      0|            dictoffset = MANAGED_DICT_OFFSET;
  ------------------
  |  |  925|      0|#  define MANAGED_DICT_OFFSET    (((Py_ssize_t)sizeof(PyObject *))*-3)
  ------------------
 1295|      0|        }
 1296|     42|        else {
 1297|     42|            dictoffset = owner_cls->tp_dictoffset;
 1298|     42|            if (dictoffset < 0 || dictoffset > INT16_MAX + MANAGED_DICT_OFFSET) {
  ------------------
  |  |  925|     42|#  define MANAGED_DICT_OFFSET    (((Py_ssize_t)sizeof(PyObject *))*-3)
  ------------------
  |  Branch (1298:17): [True: 0, False: 42]
  |  Branch (1298:35): [True: 0, False: 42]
  ------------------
 1299|      0|                SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_OUT_OF_RANGE);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1300|      0|                return 0;
 1301|      0|            }
 1302|     42|        }
 1303|     42|        if (dictoffset == 0) {
  ------------------
  |  Branch (1303:13): [True: 42, False: 0]
  ------------------
 1304|     42|            specialize(instr, is_method ? LOAD_ATTR_METHOD_NO_DICT : LOAD_ATTR_NONDESCRIPTOR_NO_DICT);
  ------------------
  |  |  193|     42|#define LOAD_ATTR_METHOD_NO_DICT               188
  ------------------
                          specialize(instr, is_method ? LOAD_ATTR_METHOD_NO_DICT : LOAD_ATTR_NONDESCRIPTOR_NO_DICT);
  ------------------
  |  |  196|     42|#define LOAD_ATTR_NONDESCRIPTOR_NO_DICT        191
  ------------------
  |  Branch (1304:31): [True: 42, False: 0]
  ------------------
 1305|     42|        }
 1306|      0|        else if (is_method) {
  ------------------
  |  Branch (1306:18): [True: 0, False: 0]
  ------------------
 1307|      0|            PyObject **addr = (PyObject **)((char *)owner + dictoffset);
 1308|      0|            PyObject *dict = FT_ATOMIC_LOAD_PTR_ACQUIRE(*addr);
  ------------------
  |  |  150|      0|#define FT_ATOMIC_LOAD_PTR_ACQUIRE(value) value
  ------------------
 1309|      0|            if (dict) {
  ------------------
  |  Branch (1309:17): [True: 0, False: 0]
  ------------------
 1310|      0|                SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_ATTR_NOT_MANAGED_DICT);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1311|      0|                return 0;
 1312|      0|            }
 1313|       |            /* Cache entries must be unsigned values, so we offset the
 1314|       |             * dictoffset by MANAGED_DICT_OFFSET.
 1315|       |             * We do the reverse offset in LOAD_ATTR_METHOD_LAZY_DICT */
 1316|      0|            dictoffset -= MANAGED_DICT_OFFSET;
  ------------------
  |  |  925|      0|#  define MANAGED_DICT_OFFSET    (((Py_ssize_t)sizeof(PyObject *))*-3)
  ------------------
 1317|      0|            assert(((uint16_t)dictoffset) == dictoffset);
  ------------------
  |  Branch (1317:13): [True: 0, False: 0]
  ------------------
 1318|      0|            cache->dict_offset = (uint16_t)dictoffset;
 1319|      0|            specialize(instr, LOAD_ATTR_METHOD_LAZY_DICT);
  ------------------
  |  |  192|      0|#define LOAD_ATTR_METHOD_LAZY_DICT             187
  ------------------
 1320|      0|        }
 1321|      0|        else {
 1322|      0|            SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_ATTR_CLASS_ATTR_SIMPLE);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1323|      0|            return 0;
 1324|      0|        }
 1325|     42|    }
 1326|       |    /* `descr` is borrowed. This is safe for methods (even inherited ones from
 1327|       |    *  super classes!) as long as tp_version_tag is validated for two main reasons:
 1328|       |    *
 1329|       |    *  1. The class will always hold a reference to the method so it will
 1330|       |    *  usually not be GC-ed. Should it be deleted in Python, e.g.
 1331|       |    *  `del obj.meth`, tp_version_tag will be invalidated, because of reason 2.
 1332|       |    *
 1333|       |    *  2. The pre-existing type method cache (MCACHE) uses the same principles
 1334|       |    *  of caching a borrowed descriptor. The MCACHE infrastructure does all the
 1335|       |    *  heavy lifting for us. E.g. it invalidates tp_version_tag on any MRO
 1336|       |    *  modification, on any type object change along said MRO, etc. (see
 1337|       |    *  PyType_Modified usages in typeobject.c). The MCACHE has been
 1338|       |    *  working since Python 2.6 and it's battle-tested.
 1339|       |    */
 1340|     51|    write_u32(cache->type_version, tp_version);
 1341|     51|    write_ptr(cache->descr, descr);
 1342|     51|    return 1;
 1343|     51|}
specialize.c:function_check_args:
 1470|      2|{
 1471|      2|    assert(Py_IS_TYPE(o, &PyFunction_Type));
  ------------------
  |  Branch (1471:5): [True: 2, False: 0]
  ------------------
 1472|      2|    PyFunctionObject *func = (PyFunctionObject *)o;
 1473|      2|    PyCodeObject *fcode = (PyCodeObject *)func->func_code;
 1474|      2|    int kind = function_kind(fcode);
 1475|      2|    if (kind != SIMPLE_FUNCTION) {
  ------------------
  |  |  124|      2|#define SIMPLE_FUNCTION 0
  ------------------
  |  Branch (1475:9): [True: 0, False: 2]
  ------------------
 1476|      0|        SPECIALIZATION_FAIL(opcode, kind);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1477|      0|        return false;
 1478|      0|    }
 1479|      2|    if (fcode->co_argcount != expected_argcount) {
  ------------------
  |  Branch (1479:9): [True: 0, False: 2]
  ------------------
 1480|      0|        SPECIALIZATION_FAIL(opcode, SPEC_FAIL_WRONG_NUMBER_ARGUMENTS);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1481|      0|        return false;
 1482|      0|    }
 1483|      2|    return true;
 1484|      2|}
specialize.c:function_get_version:
 1489|      2|{
 1490|      2|    assert(Py_IS_TYPE(o, &PyFunction_Type));
  ------------------
  |  Branch (1490:5): [True: 2, False: 0]
  ------------------
 1491|      2|    PyFunctionObject *func = (PyFunctionObject *)o;
 1492|      2|    uint32_t version = _PyFunction_GetVersionForCurrentState(func);
 1493|      2|    if (!_PyFunction_IsVersionValid(version)) {
  ------------------
  |  Branch (1493:9): [True: 0, False: 2]
  ------------------
 1494|      0|        SPECIALIZATION_FAIL(opcode, SPEC_FAIL_OUT_OF_VERSIONS);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1495|      0|        return 0;
 1496|      0|    }
 1497|      2|    return version;
 1498|      2|}
specialize.c:analyze_descriptor_store:
  618|     56|{
  619|     56|    if (type->tp_setattro != PyObject_GenericSetAttr) {
  ------------------
  |  Branch (619:9): [True: 0, False: 56]
  ------------------
  620|      0|        *descr = NULL;
  621|      0|        return GETSET_OVERRIDDEN;
  622|      0|    }
  623|     56|    PyObject *descriptor = _PyType_LookupRefAndVersion(type, name, tp_version);
  624|     56|    *descr = descriptor;
  625|     56|    if (descriptor_is_class(descriptor, name)) {
  ------------------
  |  Branch (625:9): [True: 0, False: 56]
  ------------------
  626|      0|        return DUNDER_CLASS;
  627|      0|    }
  628|     56|    return classify_descriptor(descriptor, false);
  629|     56|}
specialize.c:specialize_dict_access:
  699|    114|{
  700|    114|    assert(kind == NON_OVERRIDING || kind == NON_DESCRIPTOR || kind == ABSENT ||
  ------------------
  |  Branch (700:5): [True: 0, False: 114]
  |  Branch (700:5): [True: 0, False: 114]
  |  Branch (700:5): [True: 114, False: 0]
  |  Branch (700:5): [True: 0, False: 0]
  |  Branch (700:5): [True: 0, False: 0]
  |  Branch (700:5): [True: 0, False: 0]
  ------------------
  701|    114|        kind == BUILTIN_CLASSMETHOD || kind == PYTHON_CLASSMETHOD ||
  702|    114|        kind == METHOD);
  703|       |    // No descriptor, or non overriding.
  704|    114|    if ((type->tp_flags & Py_TPFLAGS_MANAGED_DICT) == 0) {
  ------------------
  |  |  482|    114|#define Py_TPFLAGS_MANAGED_DICT (1 << 4)
  ------------------
  |  Branch (704:9): [True: 2, False: 112]
  ------------------
  705|      2|        SPECIALIZATION_FAIL(base_op, SPEC_FAIL_ATTR_NOT_MANAGED_DICT);
  ------------------
  |  |   43|      2|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
  706|      2|        return 0;
  707|      2|    }
  708|    112|    if (type->tp_flags & Py_TPFLAGS_INLINE_VALUES &&
  ------------------
  |  |  472|    224|#define Py_TPFLAGS_INLINE_VALUES (1 << 2)
  ------------------
  |  Branch (708:9): [True: 112, False: 0]
  ------------------
  709|    112|        FT_ATOMIC_LOAD_UINT8(_PyObject_InlineValues(owner)->valid) &&
  ------------------
  |  |  154|    224|#define FT_ATOMIC_LOAD_UINT8(value) value
  |  |  ------------------
  |  |  |  Branch (154:37): [True: 112, False: 0]
  |  |  ------------------
  ------------------
  710|    112|        !(base_op == STORE_ATTR && _PyObject_GetManagedDict(owner) != NULL))
  ------------------
  |  |  122|    224|#define STORE_ATTR                             109
  ------------------
  |  Branch (710:11): [True: 52, False: 60]
  |  Branch (710:36): [True: 0, False: 52]
  ------------------
  711|    112|    {
  712|    112|        int res;
  713|    112|        Py_BEGIN_CRITICAL_SECTION(owner);
  ------------------
  |  |   51|    112|    {
  ------------------
  714|    112|        PyDictObject *dict = _PyObject_GetManagedDict(owner);
  715|    112|        if (dict == NULL) {
  ------------------
  |  Branch (715:13): [True: 112, False: 0]
  ------------------
  716|       |            // managed dict, not materialized, inline values valid
  717|    112|            res = specialize_dict_access_inline(owner, instr, type, name,
  718|    112|                                                tp_version, base_op, values_op);
  719|    112|        }
  720|      0|        else {
  721|       |            // lost race and dict was created, fail specialization
  722|      0|            SPECIALIZATION_FAIL(STORE_ATTR, SPEC_FAIL_OTHER);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
  723|      0|            res = 0;
  724|      0|        }
  725|    112|        Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|    112|    }
  ------------------
  726|    112|        return res;
  727|    112|    }
  728|      0|    else {
  729|      0|        PyDictObject *dict = _PyObject_GetManagedDict(owner);
  730|      0|        if (dict == NULL || !PyDict_CheckExact(dict)) {
  ------------------
  |  |   19|      0|#define PyDict_CheckExact(op) Py_IS_TYPE((op), &PyDict_Type)
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (730:13): [True: 0, False: 0]
  |  Branch (730:29): [True: 0, False: 0]
  ------------------
  731|      0|            SPECIALIZATION_FAIL(base_op, SPEC_FAIL_NO_DICT);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
  732|      0|            return 0;
  733|      0|        }
  734|      0|        int res;
  735|      0|        Py_BEGIN_CRITICAL_SECTION(dict);
  ------------------
  |  |   51|      0|    {
  ------------------
  736|       |        // materialized managed dict
  737|      0|        res = specialize_dict_access_hint(dict, instr, type, name,
  738|      0|                                          tp_version, base_op, hint_op);
  739|      0|        Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|      0|    }
  ------------------
  740|      0|        return res;
  741|      0|    }
  742|    112|}
specialize.c:specialize_dict_access_inline:
  636|    112|{
  637|    112|    _PyAttrCache *cache = (_PyAttrCache *)(instr + 1);
  638|    112|    PyDictKeysObject *keys = ((PyHeapTypeObject *)type)->ht_cached_keys;
  639|    112|    assert(PyUnicode_CheckExact(name));
  ------------------
  |  Branch (639:5): [True: 112, False: 0]
  ------------------
  640|    112|    _Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED(owner);
  641|    112|    Py_ssize_t index = _PyDictKeys_StringLookupSplit(keys, name);
  642|    112|    assert (index != DKIX_ERROR);
  ------------------
  |  Branch (642:5): [True: 112, False: 0]
  ------------------
  643|    112|    if (index == DKIX_EMPTY) {
  ------------------
  |  |  184|    112|#define DKIX_EMPTY (-1)
  ------------------
  |  Branch (643:9): [True: 0, False: 112]
  ------------------
  644|      0|        SPECIALIZATION_FAIL(base_op, SPEC_FAIL_ATTR_NOT_IN_KEYS);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
  645|      0|        return 0;
  646|      0|    }
  647|    112|    assert(index >= 0);
  ------------------
  |  Branch (647:5): [True: 112, False: 0]
  ------------------
  648|    112|    assert(_PyObject_InlineValues(owner)->valid);
  ------------------
  |  Branch (648:5): [True: 112, False: 0]
  ------------------
  649|    112|    char *value_addr = (char *)&_PyObject_InlineValues(owner)->values[index];
  650|    112|    Py_ssize_t offset = value_addr - (char *)owner;
  651|    112|    if (offset != (uint16_t)offset) {
  ------------------
  |  Branch (651:9): [True: 0, False: 112]
  ------------------
  652|      0|        SPECIALIZATION_FAIL(base_op, SPEC_FAIL_OUT_OF_RANGE);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
  653|      0|        return 0;
  654|      0|    }
  655|    112|    cache->index = (uint16_t)offset;
  656|    112|    write_u32(cache->version, tp_version);
  657|    112|    specialize(instr, values_op);
  658|    112|    return 1;
  659|    112|}
specialize.c:specialize_class_load_attr:
 1168|     29|{
 1169|     29|    assert(PyType_Check(owner));
  ------------------
  |  Branch (1169:5): [True: 29, False: 0]
  ------------------
 1170|     29|    PyTypeObject *cls = (PyTypeObject *)owner;
 1171|     29|    _PyLoadMethodCache *cache = (_PyLoadMethodCache *)(instr + 1);
 1172|     29|    if (Py_TYPE(cls)->tp_getattro != _Py_type_getattro) {
  ------------------
  |  |  213|     29|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     29|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     29|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1172:9): [True: 0, False: 29]
  ------------------
 1173|      0|        SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_ATTR_METACLASS_OVERRIDDEN);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1174|      0|        return -1;
 1175|      0|    }
 1176|     29|    unsigned int meta_version = 0;
 1177|     29|    PyObject *metadescriptor = _PyType_LookupRefAndVersion(Py_TYPE(cls), name, &meta_version);
  ------------------
  |  |  213|     29|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     29|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     29|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1178|     29|    DescriptorClassification metakind = classify_descriptor(metadescriptor, false);
 1179|     29|    Py_XDECREF(metadescriptor);
  ------------------
  |  |  524|     29|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     29|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     29|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1180|     29|    switch (metakind) {
 1181|      0|        case METHOD:
  ------------------
  |  Branch (1181:9): [True: 0, False: 29]
  ------------------
 1182|      0|        case NON_DESCRIPTOR:
  ------------------
  |  Branch (1182:9): [True: 0, False: 29]
  ------------------
 1183|      0|        case NON_OVERRIDING:
  ------------------
  |  Branch (1183:9): [True: 0, False: 29]
  ------------------
 1184|      0|        case BUILTIN_CLASSMETHOD:
  ------------------
  |  Branch (1184:9): [True: 0, False: 29]
  ------------------
 1185|      0|        case PYTHON_CLASSMETHOD:
  ------------------
  |  Branch (1185:9): [True: 0, False: 29]
  ------------------
 1186|     21|        case ABSENT:
  ------------------
  |  Branch (1186:9): [True: 21, False: 8]
  ------------------
 1187|     21|            break;
 1188|      8|        default:
  ------------------
  |  Branch (1188:9): [True: 8, False: 21]
  ------------------
 1189|      8|            SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_ATTR_METACLASS_ATTRIBUTE);
  ------------------
  |  |   43|      8|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1190|      8|            return -1;
 1191|     29|    }
 1192|     21|    PyObject *descr = NULL;
 1193|     21|    DescriptorClassification kind = 0;
 1194|     21|    unsigned int tp_version = 0;
 1195|     21|    kind = analyze_descriptor_load(cls, name, &descr, &tp_version);
 1196|     21|    if (tp_version == 0) {
  ------------------
  |  Branch (1196:9): [True: 0, False: 21]
  ------------------
 1197|      0|        SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_OUT_OF_VERSIONS);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1198|      0|        Py_XDECREF(descr);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1199|      0|        return -1;
 1200|      0|    }
 1201|     21|    bool metaclass_check = false;
 1202|     21|    if ((Py_TYPE(cls)->tp_flags & Py_TPFLAGS_IMMUTABLETYPE) == 0) {
  ------------------
  |  |  213|     21|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|     21|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     21|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                  if ((Py_TYPE(cls)->tp_flags & Py_TPFLAGS_IMMUTABLETYPE) == 0) {
  ------------------
  |  |  500|     21|#define Py_TPFLAGS_IMMUTABLETYPE (1UL << 8)
  ------------------
  |  Branch (1202:9): [True: 0, False: 21]
  ------------------
 1203|      0|        metaclass_check = true;
 1204|      0|        if (meta_version == 0) {
  ------------------
  |  Branch (1204:13): [True: 0, False: 0]
  ------------------
 1205|      0|            SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_OUT_OF_VERSIONS);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1206|      0|            Py_XDECREF(descr);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1207|      0|            return -1;
 1208|      0|        }
 1209|      0|    }
 1210|     21|    switch (kind) {
 1211|      0|        case MUTABLE:
  ------------------
  |  Branch (1211:9): [True: 0, False: 21]
  ------------------
 1212|       |            // special case for enums which has Py_TYPE(descr) == cls
 1213|       |            // so guarding on type version is sufficient
 1214|      0|            if (Py_TYPE(descr) != cls) {
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1214:17): [True: 0, False: 0]
  ------------------
 1215|      0|                SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_ATTR_MUTABLE_CLASS);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1216|      0|                Py_XDECREF(descr);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1217|      0|                return -1;
 1218|      0|            }
 1219|      0|            if (Py_TYPE(descr)->tp_descr_get || Py_TYPE(descr)->tp_descr_set) {
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                          if (Py_TYPE(descr)->tp_descr_get || Py_TYPE(descr)->tp_descr_set) {
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1219:17): [True: 0, False: 0]
  |  Branch (1219:49): [True: 0, False: 0]
  ------------------
 1220|      0|                SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_ATTR_OVERRIDING_DESCRIPTOR);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1221|      0|                Py_XDECREF(descr);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1222|      0|                return -1;
 1223|      0|            }
 1224|      0|            _Py_FALLTHROUGH;
  ------------------
  |  |  644|      0|#  define _Py_FALLTHROUGH __attribute__((fallthrough))
  ------------------
 1225|      0|        case METHOD:
  ------------------
  |  Branch (1225:9): [True: 0, False: 21]
  ------------------
 1226|      3|        case NON_DESCRIPTOR:
  ------------------
  |  Branch (1226:9): [True: 3, False: 18]
  ------------------
 1227|       |#ifdef Py_GIL_DISABLED
 1228|       |            maybe_enable_deferred_ref_count(descr);
 1229|       |#endif
 1230|      3|            write_ptr(cache->descr, descr);
 1231|      3|            if (metaclass_check) {
  ------------------
  |  Branch (1231:17): [True: 0, False: 3]
  ------------------
 1232|      0|                write_u32(cache->keys_version, tp_version);
 1233|      0|                write_u32(cache->type_version, meta_version);
 1234|      0|                specialize(instr, LOAD_ATTR_CLASS_WITH_METACLASS_CHECK);
  ------------------
  |  |  189|      0|#define LOAD_ATTR_CLASS_WITH_METACLASS_CHECK   184
  ------------------
 1235|      0|            }
 1236|      3|            else {
 1237|      3|                write_u32(cache->type_version, tp_version);
 1238|      3|                specialize(instr, LOAD_ATTR_CLASS);
  ------------------
  |  |  188|      3|#define LOAD_ATTR_CLASS                        183
  ------------------
 1239|      3|            }
 1240|      3|            Py_XDECREF(descr);
  ------------------
  |  |  524|      3|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1241|      3|            return 0;
 1242|       |#ifdef Py_STATS
 1243|       |        case ABSENT:
 1244|       |            SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_EXPECTED_ERROR);
 1245|       |            Py_XDECREF(descr);
 1246|       |            return -1;
 1247|       |#endif
 1248|     18|        default:
  ------------------
  |  Branch (1248:9): [True: 18, False: 3]
  ------------------
 1249|     18|            SPECIALIZATION_FAIL(LOAD_ATTR, load_attr_fail_kind(kind));
  ------------------
  |  |   43|     18|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1250|     18|            Py_XDECREF(descr);
  ------------------
  |  |  524|     18|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     18|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     18|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1251|     18|            return -1;
 1252|     21|    }
 1253|     21|}
specialize.c:specialize_load_global_lock_held:
 1349|    212|{
 1350|    212|    assert(ENABLE_SPECIALIZATION);
  ------------------
  |  Branch (1350:5): [True: 212, Folded]
  ------------------
 1351|    212|    assert(_PyOpcode_Caches[LOAD_GLOBAL] == INLINE_CACHE_ENTRIES_LOAD_GLOBAL);
  ------------------
  |  Branch (1351:5): [True: 212, False: 0]
  ------------------
 1352|       |    /* Use inline cache */
 1353|    212|    _PyLoadGlobalCache *cache = (_PyLoadGlobalCache *)(instr + 1);
 1354|    212|    assert(PyUnicode_CheckExact(name));
  ------------------
  |  Branch (1354:5): [True: 212, False: 0]
  ------------------
 1355|    212|    if (!PyDict_CheckExact(globals)) {
  ------------------
  |  |   19|    212|#define PyDict_CheckExact(op) Py_IS_TYPE((op), &PyDict_Type)
  |  |  ------------------
  |  |  |  |  215|    212|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    212|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    212|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1355:9): [True: 0, False: 212]
  ------------------
 1356|      0|        SPECIALIZATION_FAIL(LOAD_GLOBAL, SPEC_FAIL_LOAD_GLOBAL_NON_DICT);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1357|      0|        goto fail;
 1358|      0|    }
 1359|    212|    PyDictKeysObject * globals_keys = ((PyDictObject *)globals)->ma_keys;
 1360|    212|    if (globals_keys->dk_kind != DICT_KEYS_UNICODE) {
  ------------------
  |  Branch (1360:9): [True: 0, False: 212]
  ------------------
 1361|      0|        SPECIALIZATION_FAIL(LOAD_GLOBAL, SPEC_FAIL_LOAD_GLOBAL_NON_STRING_OR_SPLIT);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1362|      0|        goto fail;
 1363|      0|    }
 1364|    212|    PyObject *value;
 1365|    212|    Py_ssize_t index = _PyDict_LookupIndexAndValue((PyDictObject *)globals, name, &value);
 1366|    212|    if (index == DKIX_ERROR) {
  ------------------
  |  |  186|    212|#define DKIX_ERROR (-3)
  ------------------
  |  Branch (1366:9): [True: 0, False: 212]
  ------------------
 1367|      0|        SPECIALIZATION_FAIL(LOAD_GLOBAL, SPEC_FAIL_EXPECTED_ERROR);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1368|      0|        goto fail;
 1369|      0|    }
 1370|    212|    if (value != NULL && PyLazyImport_CheckExact(value)) {
  ------------------
  |  |   15|    147|#define PyLazyImport_CheckExact(op) Py_IS_TYPE((op), &PyLazyImport_Type)
  |  |  ------------------
  |  |  |  |  215|    147|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    147|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    147|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 147]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1370:9): [True: 147, False: 65]
  ------------------
 1371|      0|        SPECIALIZATION_FAIL(LOAD_GLOBAL, SPEC_FAIL_ATTR_MODULE_LAZY_VALUE);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1372|      0|        goto fail;
 1373|      0|    }
 1374|    212|    PyInterpreterState *interp = _PyInterpreterState_GET();
 1375|    212|    if (index != DKIX_EMPTY) {
  ------------------
  |  |  184|    212|#define DKIX_EMPTY (-1)
  ------------------
  |  Branch (1375:9): [True: 147, False: 65]
  ------------------
 1376|    147|        if (index != (uint16_t)index) {
  ------------------
  |  Branch (1376:13): [True: 0, False: 147]
  ------------------
 1377|      0|            SPECIALIZATION_FAIL(LOAD_GLOBAL, SPEC_FAIL_OUT_OF_RANGE);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1378|      0|            goto fail;
 1379|      0|        }
 1380|    147|        uint32_t keys_version = _PyDict_GetKeysVersionForCurrentState(
 1381|    147|                interp, (PyDictObject*) globals);
 1382|    147|        if (keys_version == 0) {
  ------------------
  |  Branch (1382:13): [True: 0, False: 147]
  ------------------
 1383|      0|            SPECIALIZATION_FAIL(LOAD_GLOBAL, SPEC_FAIL_OUT_OF_VERSIONS);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1384|      0|            goto fail;
 1385|      0|        }
 1386|    147|        if (keys_version != (uint16_t)keys_version) {
  ------------------
  |  Branch (1386:13): [True: 0, False: 147]
  ------------------
 1387|      0|            SPECIALIZATION_FAIL(LOAD_GLOBAL, SPEC_FAIL_OUT_OF_RANGE);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1388|      0|            goto fail;
 1389|      0|        }
 1390|       |#ifdef Py_GIL_DISABLED
 1391|       |        maybe_enable_deferred_ref_count(value);
 1392|       |#endif
 1393|    147|        cache->index = (uint16_t)index;
 1394|    147|        cache->module_keys_version = (uint16_t)keys_version;
 1395|    147|        specialize(instr, LOAD_GLOBAL_MODULE);
  ------------------
  |  |  202|    147|#define LOAD_GLOBAL_MODULE                     197
  ------------------
 1396|    147|        return;
 1397|    147|    }
 1398|     65|    if (!PyDict_CheckExact(builtins)) {
  ------------------
  |  |   19|     65|#define PyDict_CheckExact(op) Py_IS_TYPE((op), &PyDict_Type)
  |  |  ------------------
  |  |  |  |  215|     65|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     65|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     65|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1398:9): [True: 0, False: 65]
  ------------------
 1399|      0|        SPECIALIZATION_FAIL(LOAD_GLOBAL, SPEC_FAIL_LOAD_GLOBAL_NON_DICT);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1400|      0|        goto fail;
 1401|      0|    }
 1402|     65|    PyDictKeysObject * builtin_keys = ((PyDictObject *)builtins)->ma_keys;
 1403|     65|    if (builtin_keys->dk_kind != DICT_KEYS_UNICODE) {
  ------------------
  |  Branch (1403:9): [True: 0, False: 65]
  ------------------
 1404|      0|        SPECIALIZATION_FAIL(LOAD_GLOBAL, SPEC_FAIL_LOAD_GLOBAL_NON_STRING_OR_SPLIT);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1405|      0|        goto fail;
 1406|      0|    }
 1407|     65|    index = _PyDictKeys_StringLookup(builtin_keys, name);
 1408|     65|    if (index == DKIX_ERROR) {
  ------------------
  |  |  186|     65|#define DKIX_ERROR (-3)
  ------------------
  |  Branch (1408:9): [True: 0, False: 65]
  ------------------
 1409|      0|        SPECIALIZATION_FAIL(LOAD_GLOBAL, SPEC_FAIL_EXPECTED_ERROR);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1410|      0|        goto fail;
 1411|      0|    }
 1412|     65|    if (index != (uint16_t)index) {
  ------------------
  |  Branch (1412:9): [True: 0, False: 65]
  ------------------
 1413|      0|        SPECIALIZATION_FAIL(LOAD_GLOBAL, SPEC_FAIL_OUT_OF_RANGE);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1414|      0|        goto fail;
 1415|      0|    }
 1416|     65|    uint32_t globals_version = _PyDict_GetKeysVersionForCurrentState(
 1417|     65|            interp, (PyDictObject*) globals);
 1418|     65|    if (globals_version == 0) {
  ------------------
  |  Branch (1418:9): [True: 0, False: 65]
  ------------------
 1419|      0|        SPECIALIZATION_FAIL(LOAD_GLOBAL, SPEC_FAIL_OUT_OF_VERSIONS);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1420|      0|        goto fail;
 1421|      0|    }
 1422|     65|    if (globals_version != (uint16_t)globals_version) {
  ------------------
  |  Branch (1422:9): [True: 0, False: 65]
  ------------------
 1423|      0|        SPECIALIZATION_FAIL(LOAD_GLOBAL, SPEC_FAIL_OUT_OF_RANGE);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1424|      0|        goto fail;
 1425|      0|    }
 1426|     65|    uint32_t builtins_version = _PyDict_GetKeysVersionForCurrentState(
 1427|     65|            interp, (PyDictObject*) builtins);
 1428|     65|    if (builtins_version == 0) {
  ------------------
  |  Branch (1428:9): [True: 0, False: 65]
  ------------------
 1429|      0|        SPECIALIZATION_FAIL(LOAD_GLOBAL, SPEC_FAIL_OUT_OF_VERSIONS);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1430|      0|        goto fail;
 1431|      0|    }
 1432|     65|    if (builtins_version > UINT16_MAX) {
  ------------------
  |  Branch (1432:9): [True: 0, False: 65]
  ------------------
 1433|      0|        SPECIALIZATION_FAIL(LOAD_GLOBAL, SPEC_FAIL_OUT_OF_RANGE);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1434|      0|        goto fail;
 1435|      0|    }
 1436|     65|    cache->index = (uint16_t)index;
 1437|     65|    cache->module_keys_version = (uint16_t)globals_version;
 1438|     65|    cache->builtin_keys_version = (uint16_t)builtins_version;
 1439|     65|    specialize(instr, LOAD_GLOBAL_BUILTIN);
  ------------------
  |  |  201|     65|#define LOAD_GLOBAL_BUILTIN                    196
  ------------------
 1440|     65|    return;
 1441|      0|fail:
 1442|      0|    unspecialize(instr);
 1443|      0|}
specialize.c:specialize_c_call:
 1812|     66|{
 1813|     66|    if (PyCFunction_GET_FUNCTION(callable) == NULL) {
  ------------------
  |  |   43|     66|#define PyCFunction_GET_FUNCTION(func) PyCFunction_GET_FUNCTION(_PyObject_CAST(func))
  |  |  ------------------
  |  |  |  |  171|     66|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     66|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1813:9): [True: 0, False: 66]
  ------------------
 1814|      0|        SPECIALIZATION_FAIL(CALL, SPEC_FAIL_OTHER);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1815|      0|        return 1;
 1816|      0|    }
 1817|     66|    switch (PyCFunction_GET_FLAGS(callable) &
  ------------------
  |  |   57|     66|#define PyCFunction_GET_FLAGS(func) PyCFunction_GET_FLAGS(_PyObject_CAST(func))
  |  |  ------------------
  |  |  |  |  171|     66|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     66|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1818|     66|        (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O |
  ------------------
  |  |   95|     66|#define METH_VARARGS  0x0001
  ------------------
                      (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O |
  ------------------
  |  |  115|     66|#  define METH_FASTCALL  0x0080
  ------------------
                      (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O |
  ------------------
  |  |   98|     66|#define METH_NOARGS   0x0004
  ------------------
                      (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O |
  ------------------
  |  |   99|     66|#define METH_O        0x0008
  ------------------
 1819|     66|        METH_KEYWORDS | METH_METHOD)) {
  ------------------
  |  |   96|     66|#define METH_KEYWORDS 0x0002
  ------------------
                      METH_KEYWORDS | METH_METHOD)) {
  ------------------
  |  |  133|     66|#define METH_METHOD 0x0200
  ------------------
 1820|      7|        case METH_O: {
  ------------------
  |  |   99|      7|#define METH_O        0x0008
  ------------------
  |  Branch (1820:9): [True: 7, False: 59]
  ------------------
 1821|      7|            if (nargs != 1) {
  ------------------
  |  Branch (1821:17): [True: 0, False: 7]
  ------------------
 1822|      0|                SPECIALIZATION_FAIL(CALL, SPEC_FAIL_WRONG_NUMBER_ARGUMENTS);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1823|      0|                return 1;
 1824|      0|            }
 1825|       |            /* len(o) */
 1826|      7|            PyInterpreterState *interp = _PyInterpreterState_GET();
 1827|      7|            if (callable == interp->callable_cache.len && instr->op.arg == 1) {
  ------------------
  |  Branch (1827:17): [True: 5, False: 2]
  |  Branch (1827:59): [True: 5, False: 0]
  ------------------
 1828|      5|                specialize(instr, CALL_LEN);
  ------------------
  |  |  162|      5|#define CALL_LEN                               157
  ------------------
 1829|      5|                return 0;
 1830|      5|            }
 1831|      2|            specialize(instr, CALL_BUILTIN_O);
  ------------------
  |  |  155|      2|#define CALL_BUILTIN_O                         150
  ------------------
 1832|      2|            return 0;
 1833|      7|        }
 1834|     33|        case METH_FASTCALL: {
  ------------------
  |  |  115|     33|#  define METH_FASTCALL  0x0080
  ------------------
  |  Branch (1834:9): [True: 33, False: 33]
  ------------------
 1835|     33|            if (nargs == 2) {
  ------------------
  |  Branch (1835:17): [True: 16, False: 17]
  ------------------
 1836|       |                /* isinstance(o1, o2) */
 1837|     16|                PyInterpreterState *interp = _PyInterpreterState_GET();
 1838|     16|                if (callable == interp->callable_cache.isinstance && instr->op.arg == 2) {
  ------------------
  |  Branch (1838:21): [True: 6, False: 10]
  |  Branch (1838:70): [True: 6, False: 0]
  ------------------
 1839|      6|                    specialize(instr, CALL_ISINSTANCE);
  ------------------
  |  |  158|      6|#define CALL_ISINSTANCE                        153
  ------------------
 1840|      6|                    return 0;
 1841|      6|                }
 1842|     16|            }
 1843|     27|            specialize(instr, CALL_BUILTIN_FAST);
  ------------------
  |  |  153|     27|#define CALL_BUILTIN_FAST                      148
  ------------------
 1844|     27|            return 0;
 1845|     33|        }
 1846|     12|        case METH_FASTCALL | METH_KEYWORDS: {
  ------------------
  |  |  115|     12|#  define METH_FASTCALL  0x0080
  ------------------
                      case METH_FASTCALL | METH_KEYWORDS: {
  ------------------
  |  |   96|     12|#define METH_KEYWORDS 0x0002
  ------------------
  |  Branch (1846:9): [True: 12, False: 54]
  ------------------
 1847|     12|            specialize(instr, CALL_BUILTIN_FAST_WITH_KEYWORDS);
  ------------------
  |  |  154|     12|#define CALL_BUILTIN_FAST_WITH_KEYWORDS        149
  ------------------
 1848|     12|            return 0;
 1849|     33|        }
 1850|     14|        default:
  ------------------
  |  Branch (1850:9): [True: 14, False: 52]
  ------------------
 1851|     14|            specialize(instr, CALL_NON_PY_GENERAL);
  ------------------
  |  |  168|     14|#define CALL_NON_PY_GENERAL                    163
  ------------------
 1852|     14|            return 0;
 1853|     66|    }
 1854|     66|}
specialize.c:specialize_py_call:
 1740|     69|{
 1741|     69|    _PyCallCache *cache = (_PyCallCache *)(instr + 1);
 1742|     69|    PyCodeObject *code = (PyCodeObject *)func->func_code;
 1743|     69|    int kind = function_kind(code);
 1744|       |    /* Don't specialize if PEP 523 is active */
 1745|     69|    if (!_PyInterpreterState_IsSpecializationEnabled(_PyInterpreterState_GET())) {
  ------------------
  |  Branch (1745:9): [True: 0, False: 69]
  ------------------
 1746|      0|        SPECIALIZATION_FAIL(CALL, SPEC_FAIL_CALL_PEP_523);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1747|      0|        return -1;
 1748|      0|    }
 1749|     69|    if (func->vectorcall != _PyFunction_Vectorcall) {
  ------------------
  |  Branch (1749:9): [True: 0, False: 69]
  ------------------
 1750|      0|        SPECIALIZATION_FAIL(CALL, SPEC_FAIL_CALL_VECTORCALL);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1751|      0|        return -1;
 1752|      0|    }
 1753|     69|    int argcount = -1;
 1754|     69|    if (kind == SPEC_FAIL_CODE_NOT_OPTIMIZED) {
  ------------------
  |  |  136|     69|#define SPEC_FAIL_CODE_NOT_OPTIMIZED 8
  ------------------
  |  Branch (1754:9): [True: 0, False: 69]
  ------------------
 1755|      0|        SPECIALIZATION_FAIL(CALL, SPEC_FAIL_CODE_NOT_OPTIMIZED);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1756|      0|        return -1;
 1757|      0|    }
 1758|     69|    if (kind == SIMPLE_FUNCTION) {
  ------------------
  |  |  124|     69|#define SIMPLE_FUNCTION 0
  ------------------
  |  Branch (1758:9): [True: 56, False: 13]
  ------------------
 1759|     56|        argcount = code->co_argcount;
 1760|     56|    }
 1761|     69|    int version = _PyFunction_GetVersionForCurrentState(func);
 1762|     69|    if (!_PyFunction_IsVersionValid(version)) {
  ------------------
  |  Branch (1762:9): [True: 0, False: 69]
  ------------------
 1763|      0|        SPECIALIZATION_FAIL(CALL, SPEC_FAIL_OUT_OF_VERSIONS);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1764|      0|        return -1;
 1765|      0|    }
 1766|     69|    write_u32(cache->func_version, version);
 1767|     69|    uint8_t opcode;
 1768|     69|    if (argcount == nargs + bound_method) {
  ------------------
  |  Branch (1768:9): [True: 53, False: 16]
  ------------------
 1769|     53|        opcode =
 1770|     53|            bound_method ? CALL_BOUND_METHOD_EXACT_ARGS : CALL_PY_EXACT_ARGS;
  ------------------
  |  |  150|      5|#define CALL_BOUND_METHOD_EXACT_ARGS           145
  ------------------
                          bound_method ? CALL_BOUND_METHOD_EXACT_ARGS : CALL_PY_EXACT_ARGS;
  ------------------
  |  |  169|    101|#define CALL_PY_EXACT_ARGS                     164
  ------------------
  |  Branch (1770:13): [True: 5, False: 48]
  ------------------
 1771|     53|    }
 1772|     16|    else {
 1773|     16|        opcode = bound_method ? CALL_BOUND_METHOD_GENERAL : CALL_PY_GENERAL;
  ------------------
  |  |  151|      1|#define CALL_BOUND_METHOD_GENERAL              146
  ------------------
                      opcode = bound_method ? CALL_BOUND_METHOD_GENERAL : CALL_PY_GENERAL;
  ------------------
  |  |  170|     31|#define CALL_PY_GENERAL                        165
  ------------------
  |  Branch (1773:18): [True: 1, False: 15]
  ------------------
 1774|     16|    }
 1775|     69|    specialize(instr, opcode);
 1776|     69|    return 0;
 1777|     69|}
specialize.c:specialize_class_call:
 1640|     20|{
 1641|     20|    assert(PyType_Check(callable));
  ------------------
  |  Branch (1641:5): [True: 20, False: 0]
  ------------------
 1642|     20|    PyTypeObject *tp = _PyType_CAST(callable);
  ------------------
  |  |  770|     20|    (assert(PyType_Check(op)), _Py_CAST(PyTypeObject*, (op)))
  |  |  ------------------
  |  |  |  |   37|     20|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
  |  Branch (1642:24): [True: 20, False: 0]
  ------------------
 1643|     20|    if (tp->tp_flags & Py_TPFLAGS_IMMUTABLETYPE) {
  ------------------
  |  |  500|     20|#define Py_TPFLAGS_IMMUTABLETYPE (1UL << 8)
  ------------------
  |  Branch (1643:9): [True: 12, False: 8]
  ------------------
 1644|     12|        int oparg = instr->op.arg;
 1645|     12|        if (nargs == 1 && oparg == 1) {
  ------------------
  |  Branch (1645:13): [True: 8, False: 4]
  |  Branch (1645:27): [True: 8, False: 0]
  ------------------
 1646|      8|            if (tp == &PyUnicode_Type) {
  ------------------
  |  Branch (1646:17): [True: 0, False: 8]
  ------------------
 1647|      0|                specialize(instr, CALL_STR_1);
  ------------------
  |  |  171|      0|#define CALL_STR_1                             166
  ------------------
 1648|      0|                return 0;
 1649|      0|            }
 1650|      8|            else if (tp == &PyType_Type) {
  ------------------
  |  Branch (1650:22): [True: 2, False: 6]
  ------------------
 1651|      2|                specialize(instr, CALL_TYPE_1);
  ------------------
  |  |  173|      2|#define CALL_TYPE_1                            168
  ------------------
 1652|      2|                return 0;
 1653|      2|            }
 1654|      6|            else if (tp == &PyTuple_Type) {
  ------------------
  |  Branch (1654:22): [True: 0, False: 6]
  ------------------
 1655|      0|                specialize(instr, CALL_TUPLE_1);
  ------------------
  |  |  172|      0|#define CALL_TUPLE_1                           167
  ------------------
 1656|      0|                return 0;
 1657|      0|            }
 1658|      8|        }
 1659|     10|        if (tp->tp_vectorcall != NULL) {
  ------------------
  |  Branch (1659:13): [True: 6, False: 4]
  ------------------
 1660|      6|            specialize(instr, CALL_BUILTIN_CLASS);
  ------------------
  |  |  152|      6|#define CALL_BUILTIN_CLASS                     147
  ------------------
 1661|      6|            return 0;
 1662|      6|        }
 1663|      4|        goto generic;
 1664|     10|    }
 1665|      8|    if (Py_TYPE(tp) != &PyType_Type) {
  ------------------
  |  |  213|      8|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      8|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      8|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1665:9): [True: 0, False: 8]
  ------------------
 1666|      0|        goto generic;
 1667|      0|    }
 1668|      8|    if (tp->tp_new == PyBaseObject_Type.tp_new) {
  ------------------
  |  Branch (1668:9): [True: 6, False: 2]
  ------------------
 1669|      6|        unsigned int tp_version = 0;
 1670|      6|        PyObject *init = get_init_for_simple_managed_python_class(tp, &tp_version);
 1671|      6|        if (!tp_version) {
  ------------------
  |  Branch (1671:13): [True: 0, False: 6]
  ------------------
 1672|      0|            SPECIALIZATION_FAIL(CALL, SPEC_FAIL_OUT_OF_VERSIONS);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1673|      0|            Py_XDECREF(init);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1674|      0|            return -1;
 1675|      0|        }
 1676|      6|        if (init != NULL && _PyType_CacheInitForSpecialization(
  ------------------
  |  Branch (1676:13): [True: 4, False: 2]
  |  Branch (1676:29): [True: 4, False: 0]
  ------------------
 1677|      4|                                (PyHeapTypeObject *)tp, init, tp_version)) {
 1678|      4|            _PyCallCache *cache = (_PyCallCache *)(instr + 1);
 1679|      4|            write_u32(cache->func_version, tp_version);
 1680|      4|            specialize(instr, CALL_ALLOC_AND_ENTER_INIT);
  ------------------
  |  |  149|      4|#define CALL_ALLOC_AND_ENTER_INIT              144
  ------------------
 1681|      4|            Py_DECREF(init);
  ------------------
  |  |  430|      4|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1682|      4|            return 0;
 1683|      4|        }
 1684|      2|        Py_XDECREF(init);
  ------------------
  |  |  524|      2|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1685|      2|    }
 1686|      8|generic:
 1687|      8|    specialize(instr, CALL_NON_PY_GENERAL);
  ------------------
  |  |  168|      8|#define CALL_NON_PY_GENERAL                    163
  ------------------
 1688|      8|    return 0;
 1689|      8|}
specialize.c:get_init_for_simple_managed_python_class:
 1611|      6|{
 1612|      6|    assert(tp->tp_new == PyBaseObject_Type.tp_new);
  ------------------
  |  Branch (1612:5): [True: 6, False: 0]
  ------------------
 1613|      6|    if (tp->tp_alloc != PyType_GenericAlloc) {
  ------------------
  |  Branch (1613:9): [True: 0, False: 6]
  ------------------
 1614|      0|        SPECIALIZATION_FAIL(CALL, SPEC_FAIL_OVERRIDDEN);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1615|      0|        return NULL;
 1616|      0|    }
 1617|      6|    unsigned long tp_flags = PyType_GetFlags(tp);
 1618|      6|    if (!(tp_flags & Py_TPFLAGS_HEAPTYPE)) {
  ------------------
  |  |  503|      6|#define Py_TPFLAGS_HEAPTYPE (1UL << 9)
  ------------------
  |  Branch (1618:9): [True: 0, False: 6]
  ------------------
 1619|       |        /* Is this possible? */
 1620|      0|        SPECIALIZATION_FAIL(CALL, SPEC_FAIL_EXPECTED_ERROR);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1621|      0|        return NULL;
 1622|      0|    }
 1623|      6|    PyObject *init = _PyType_LookupRefAndVersion(tp, &_Py_ID(__init__), tp_version);
  ------------------
  |  |  917|      6|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      6|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      6|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1624|      6|    if (init == NULL || !PyFunction_Check(init)) {
  ------------------
  |  |   68|      6|#define PyFunction_Check(op) Py_IS_TYPE((op), &PyFunction_Type)
  |  |  ------------------
  |  |  |  |  215|      6|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      6|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      6|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (1624:9): [True: 0, False: 6]
  |  Branch (1624:25): [True: 1, False: 5]
  ------------------
 1625|      1|        SPECIALIZATION_FAIL(CALL, SPEC_FAIL_CALL_INIT_NOT_PYTHON);
  ------------------
  |  |   43|      1|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1626|      1|        Py_XDECREF(init);
  ------------------
  |  |  524|      1|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1627|      1|        return NULL;
 1628|      1|    }
 1629|      5|    int kind = function_kind((PyCodeObject *)PyFunction_GET_CODE(init));
  ------------------
  |  |   93|      5|#define PyFunction_GET_CODE(func) PyFunction_GET_CODE(_PyObject_CAST(func))
  |  |  ------------------
  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1630|      5|    if (kind != SIMPLE_FUNCTION) {
  ------------------
  |  |  124|      5|#define SIMPLE_FUNCTION 0
  ------------------
  |  Branch (1630:9): [True: 1, False: 4]
  ------------------
 1631|      1|        SPECIALIZATION_FAIL(CALL, SPEC_FAIL_CALL_INIT_NOT_SIMPLE);
  ------------------
  |  |   43|      1|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1632|      1|        Py_DECREF(init);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1633|      1|        return NULL;
 1634|      1|    }
 1635|      4|    return init;
 1636|      5|}
specialize.c:specialize_method_descriptor:
 1694|     46|{
 1695|     46|    switch (descr->d_method->ml_flags &
  ------------------
  |  Branch (1695:13): [True: 44, False: 2]
  ------------------
 1696|     46|        (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O |
  ------------------
  |  |   95|     46|#define METH_VARARGS  0x0001
  ------------------
                      (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O |
  ------------------
  |  |  115|     46|#  define METH_FASTCALL  0x0080
  ------------------
                      (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O |
  ------------------
  |  |   98|     46|#define METH_NOARGS   0x0004
  ------------------
                      (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O |
  ------------------
  |  |   99|     46|#define METH_O        0x0008
  ------------------
 1697|     46|        METH_KEYWORDS | METH_METHOD)) {
  ------------------
  |  |   96|     46|#define METH_KEYWORDS 0x0002
  ------------------
                      METH_KEYWORDS | METH_METHOD)) {
  ------------------
  |  |  133|     46|#define METH_METHOD 0x0200
  ------------------
 1698|      3|        case METH_NOARGS: {
  ------------------
  |  |   98|      3|#define METH_NOARGS   0x0004
  ------------------
  |  Branch (1698:9): [True: 3, False: 43]
  ------------------
 1699|      3|            if (nargs != 1) {
  ------------------
  |  Branch (1699:17): [True: 0, False: 3]
  ------------------
 1700|      0|                SPECIALIZATION_FAIL(CALL, SPEC_FAIL_WRONG_NUMBER_ARGUMENTS);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1701|      0|                return -1;
 1702|      0|            }
 1703|      3|            specialize(instr, CALL_METHOD_DESCRIPTOR_NOARGS);
  ------------------
  |  |  166|      3|#define CALL_METHOD_DESCRIPTOR_NOARGS          161
  ------------------
 1704|      3|            return 0;
 1705|      3|        }
 1706|     15|        case METH_O: {
  ------------------
  |  |   99|     15|#define METH_O        0x0008
  ------------------
  |  Branch (1706:9): [True: 15, False: 31]
  ------------------
 1707|     15|            if (nargs != 2) {
  ------------------
  |  Branch (1707:17): [True: 0, False: 15]
  ------------------
 1708|      0|                SPECIALIZATION_FAIL(CALL, SPEC_FAIL_WRONG_NUMBER_ARGUMENTS);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1709|      0|                return -1;
 1710|      0|            }
 1711|     15|            PyInterpreterState *interp = _PyInterpreterState_GET();
 1712|     15|            PyObject *list_append = interp->callable_cache.list_append;
 1713|     15|            int oparg = instr->op.arg;
 1714|     15|            if ((PyObject *)descr == list_append && oparg == 1) {
  ------------------
  |  Branch (1714:17): [True: 5, False: 10]
  |  Branch (1714:53): [True: 5, False: 0]
  ------------------
 1715|      5|                assert(self_or_null != NULL);
  ------------------
  |  Branch (1715:17): [True: 5, False: 0]
  ------------------
 1716|      5|                if (PyList_CheckExact(self_or_null)) {
  ------------------
  |  |   26|      5|#define PyList_CheckExact(op) Py_IS_TYPE((op), &PyList_Type)
  |  |  ------------------
  |  |  |  |  215|      5|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 4, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1717|      4|                    specialize(instr, CALL_LIST_APPEND);
  ------------------
  |  |  163|      4|#define CALL_LIST_APPEND                       158
  ------------------
 1718|      4|                    return 0;
 1719|      4|                }
 1720|      5|            }
 1721|     11|            specialize(instr, CALL_METHOD_DESCRIPTOR_O);
  ------------------
  |  |  167|     11|#define CALL_METHOD_DESCRIPTOR_O               162
  ------------------
 1722|     11|            return 0;
 1723|     15|        }
 1724|     22|        case METH_FASTCALL: {
  ------------------
  |  |  115|     22|#  define METH_FASTCALL  0x0080
  ------------------
  |  Branch (1724:9): [True: 22, False: 24]
  ------------------
 1725|     22|            specialize(instr, CALL_METHOD_DESCRIPTOR_FAST);
  ------------------
  |  |  164|     22|#define CALL_METHOD_DESCRIPTOR_FAST            159
  ------------------
 1726|     22|            return 0;
 1727|     15|        }
 1728|      4|        case METH_FASTCALL | METH_KEYWORDS: {
  ------------------
  |  |  115|      4|#  define METH_FASTCALL  0x0080
  ------------------
                      case METH_FASTCALL | METH_KEYWORDS: {
  ------------------
  |  |   96|      4|#define METH_KEYWORDS 0x0002
  ------------------
  |  Branch (1728:9): [True: 4, False: 42]
  ------------------
 1729|      4|            specialize(instr, CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS);
  ------------------
  |  |  165|      4|#define CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 160
  ------------------
 1730|      4|            return 0;
 1731|     15|        }
 1732|     46|    }
 1733|      2|    specialize(instr, CALL_NON_PY_GENERAL);
  ------------------
  |  |  168|      2|#define CALL_NON_PY_GENERAL                    163
  ------------------
 1734|      2|    return 0;
 1735|     46|}
specialize.c:specialize_py_call_kw:
 1783|      3|{
 1784|      3|    _PyCallCache *cache = (_PyCallCache *)(instr + 1);
 1785|      3|    PyCodeObject *code = (PyCodeObject *)func->func_code;
 1786|      3|    int kind = function_kind(code);
 1787|       |    /* Don't specialize if PEP 523 is active */
 1788|      3|    if (!_PyInterpreterState_IsSpecializationEnabled(_PyInterpreterState_GET())) {
  ------------------
  |  Branch (1788:9): [True: 0, False: 3]
  ------------------
 1789|      0|        SPECIALIZATION_FAIL(CALL, SPEC_FAIL_CALL_PEP_523);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1790|      0|        return -1;
 1791|      0|    }
 1792|      3|    if (func->vectorcall != _PyFunction_Vectorcall) {
  ------------------
  |  Branch (1792:9): [True: 0, False: 3]
  ------------------
 1793|      0|        SPECIALIZATION_FAIL(CALL, SPEC_FAIL_CALL_VECTORCALL);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1794|      0|        return -1;
 1795|      0|    }
 1796|      3|    if (kind == SPEC_FAIL_CODE_NOT_OPTIMIZED) {
  ------------------
  |  |  136|      3|#define SPEC_FAIL_CODE_NOT_OPTIMIZED 8
  ------------------
  |  Branch (1796:9): [True: 0, False: 3]
  ------------------
 1797|      0|        SPECIALIZATION_FAIL(CALL, SPEC_FAIL_CODE_NOT_OPTIMIZED);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1798|      0|        return -1;
 1799|      0|    }
 1800|      3|    int version = _PyFunction_GetVersionForCurrentState(func);
 1801|      3|    if (!_PyFunction_IsVersionValid(version)) {
  ------------------
  |  Branch (1801:9): [True: 0, False: 3]
  ------------------
 1802|      0|        SPECIALIZATION_FAIL(CALL, SPEC_FAIL_OUT_OF_VERSIONS);
  ------------------
  |  |   43|      0|#  define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
  ------------------
 1803|      0|        return -1;
 1804|      0|    }
 1805|      3|    write_u32(cache->func_version, version);
 1806|      3|    specialize(instr, bound_method ? CALL_KW_BOUND_METHOD : CALL_KW_PY);
  ------------------
  |  |  159|      0|#define CALL_KW_BOUND_METHOD                   154
  ------------------
                  specialize(instr, bound_method ? CALL_KW_BOUND_METHOD : CALL_KW_PY);
  ------------------
  |  |  161|      6|#define CALL_KW_PY                             156
  ------------------
  |  Branch (1806:23): [True: 0, False: 3]
  ------------------
 1807|      3|    return 0;
 1808|      3|}
specialize.c:function_kind:
 1456|     79|function_kind(PyCodeObject *code) {
 1457|     79|    int flags = code->co_flags;
 1458|     79|    if ((flags & (CO_VARKEYWORDS | CO_VARARGS)) || code->co_kwonlyargcount) {
  ------------------
  |  |  121|     79|#define CO_VARKEYWORDS  0x0008
  ------------------
                  if ((flags & (CO_VARKEYWORDS | CO_VARARGS)) || code->co_kwonlyargcount) {
  ------------------
  |  |  120|     79|#define CO_VARARGS      0x0004
  ------------------
  |  Branch (1458:9): [True: 12, False: 67]
  |  Branch (1458:52): [True: 5, False: 62]
  ------------------
 1459|     17|        return SPEC_FAIL_CODE_COMPLEX_PARAMETERS;
  ------------------
  |  |  135|     17|#define SPEC_FAIL_CODE_COMPLEX_PARAMETERS 7
  ------------------
 1460|     17|    }
 1461|     62|    if ((flags & CO_OPTIMIZED) == 0) {
  ------------------
  |  |  118|     62|#define CO_OPTIMIZED    0x0001
  ------------------
  |  Branch (1461:9): [True: 0, False: 62]
  ------------------
 1462|      0|        return SPEC_FAIL_CODE_NOT_OPTIMIZED;
  ------------------
  |  |  136|      0|#define SPEC_FAIL_CODE_NOT_OPTIMIZED 8
  ------------------
 1463|      0|    }
 1464|     62|    return SIMPLE_FUNCTION;
  ------------------
  |  |  124|     62|#define SIMPLE_FUNCTION 0
  ------------------
 1465|     62|}
specialize.c:binary_op_extended_specialization:
 2305|      6|{
 2306|      6|    size_t n = sizeof(binaryop_extend_descrs)/sizeof(_PyBinaryOpSpecializationDescr);
 2307|    152|    for (size_t i = 0; i < n; i++) {
  ------------------
  |  Branch (2307:24): [True: 149, False: 3]
  ------------------
 2308|    149|        _PyBinaryOpSpecializationDescr *d = &binaryop_extend_descrs[i];
 2309|    149|        if (d->oparg != oparg) {
  ------------------
  |  Branch (2309:13): [True: 144, False: 5]
  ------------------
 2310|    144|            continue;
 2311|    144|        }
 2312|      5|        int match = (d->guard != NULL)
  ------------------
  |  Branch (2312:21): [True: 4, False: 1]
  ------------------
 2313|      5|            ? d->guard(lhs, rhs)
 2314|      5|            : (Py_TYPE(lhs) == d->lhs_type && Py_TYPE(rhs) == d->rhs_type);
  ------------------
  |  |  213|      1|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
                          : (Py_TYPE(lhs) == d->lhs_type && Py_TYPE(rhs) == d->rhs_type);
  ------------------
  |  |  213|      1|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (2314:16): [True: 1, False: 0]
  |  Branch (2314:47): [True: 1, False: 0]
  ------------------
 2315|      5|        if (match) {
  ------------------
  |  Branch (2315:13): [True: 3, False: 2]
  ------------------
 2316|      3|            *descr = d;
 2317|      3|            return 1;
 2318|      3|        }
 2319|      5|    }
 2320|      3|    return 0;
 2321|      6|}
specialize.c:compactlongs_guard:
 2147|      7|{
 2148|      7|    return (is_compactlong(lhs) && is_compactlong(rhs));
  ------------------
  |  Branch (2148:13): [True: 7, False: 0]
  |  Branch (2148:36): [True: 7, False: 0]
  ------------------
 2149|      7|}
specialize.c:is_compactlong:
 2122|     14|{
 2123|     14|    return PyLong_CheckExact(v) &&
  ------------------
  |  |   14|     14|#define PyLong_CheckExact(op) Py_IS_TYPE((op), &PyLong_Type)
  |  |  ------------------
  |  |  |  |  215|     28|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     14|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     14|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 14, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2124|     14|           _PyLong_IsCompact((PyLongObject *)v);
  ------------------
  |  Branch (2124:12): [True: 14, False: 0]
  ------------------
 2125|     14|}
specialize.c:compactlongs_and:
 2154|      5|    { \
 2155|      5|        Py_ssize_t rhs_val = _PyLong_CompactValue((PyLongObject *)rhs); \
 2156|      5|        Py_ssize_t lhs_val = _PyLong_CompactValue((PyLongObject *)lhs); \
 2157|      5|        return PyLong_FromSsize_t(lhs_val OP rhs_val); \
 2158|      5|    }
specialize.c:float_compactlong_guard:
 2168|      1|{
 2169|      1|    return (
 2170|      1|        PyFloat_CheckExact(lhs) &&
  ------------------
  |  |   17|      1|#define PyFloat_CheckExact(op) Py_IS_TYPE((op), &PyFloat_Type)
  |  |  ------------------
  |  |  |  |  215|      2|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2171|      0|        !isnan(PyFloat_AS_DOUBLE(lhs)) &&
  ------------------
  |  Branch (2171:9): [True: 0, False: 0]
  ------------------
 2172|      1|        PyLong_CheckExact(rhs) &&
  ------------------
  |  |   14|      0|#define PyLong_CheckExact(op) Py_IS_TYPE((op), &PyLong_Type)
  |  |  ------------------
  |  |  |  |  215|      1|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2173|      0|        _PyLong_IsCompact((PyLongObject *)rhs)
  ------------------
  |  Branch (2173:9): [True: 0, False: 0]
  ------------------
 2174|      1|    );
 2175|      1|}
specialize.c:compactlong_float_guard:
 2203|      1|{
 2204|      1|    return (
 2205|      1|        PyLong_CheckExact(lhs) &&
  ------------------
  |  |   14|      1|#define PyLong_CheckExact(op) Py_IS_TYPE((op), &PyLong_Type)
  |  |  ------------------
  |  |  |  |  215|      2|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2206|      0|        _PyLong_IsCompact((PyLongObject *)lhs) &&
  ------------------
  |  Branch (2206:9): [True: 0, False: 0]
  ------------------
 2207|      1|        PyFloat_CheckExact(rhs) &&
  ------------------
  |  |   17|      0|#define PyFloat_CheckExact(op) Py_IS_TYPE((op), &PyFloat_Type)
  |  |  ------------------
  |  |  |  |  215|      1|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (215:32): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2208|      0|        !isnan(PyFloat_AS_DOUBLE(rhs))
  ------------------
  |  Branch (2208:9): [True: 0, False: 0]
  ------------------
 2209|      1|    );
 2210|      1|}
specialize.c:set_counter:
  347|  1.19k|{
  348|  1.19k|    FT_ATOMIC_STORE_UINT16_RELAXED(counter->value_and_backoff,
  ------------------
  |  |  171|  1.19k|#define FT_ATOMIC_STORE_UINT16_RELAXED(value, new_value) value = new_value
  ------------------
  349|  1.19k|                                   value.value_and_backoff);
  350|  1.19k|}

_PyMember_GetOffset:
   26|    283|{
   27|    283|    unsigned char *addr = (unsigned char *)obj + mp->offset;
   28|    283|    if (mp->flags & _Py_AFTER_ITEMS) {
  ------------------
  |  |   89|    283|#  define _Py_AFTER_ITEMS      (1 << 4) // For internal use.
  ------------------
  |  Branch (28:9): [True: 0, False: 283]
  ------------------
   29|      0|        PyTypeObject *type = Py_TYPE(obj);
  ------------------
  |  |  213|      0|#  define Py_TYPE(ob) _Py_TYPE_impl(_PyObject_CAST(ob))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   30|      0|        addr += _Py_SIZE_ROUND_UP(Py_SIZE(obj) * type->tp_itemsize, SIZEOF_VOID_P);
  ------------------
  |  |  213|      0|#define _Py_SIZE_ROUND_UP(n, a) (((size_t)(n) + \
  |  |  214|      0|        (size_t)((a) - 1)) & ~(size_t)((a) - 1))
  ------------------
   31|      0|    }
   32|    283|    return addr;
   33|    283|}
PyMember_GetOne:
   37|    185|{
   38|    185|    PyObject *v;
   39|    185|    if (l->flags & Py_RELATIVE_OFFSET) {
  ------------------
  |  |   86|    185|#define Py_RELATIVE_OFFSET     (1 << 3)
  ------------------
  |  Branch (39:9): [True: 0, False: 185]
  ------------------
   40|      0|        PyErr_SetString(
   41|      0|            PyExc_SystemError,
   42|      0|            "PyMember_GetOne used with Py_RELATIVE_OFFSET");
   43|      0|        return NULL;
   44|      0|    }
   45|       |
   46|    185|    const void *addr = _PyMember_GetOffset((PyObject *)obj_addr, l);
   47|    185|    switch (l->type) {
   48|      0|    case Py_T_BOOL:
  ------------------
  |  |   73|      0|#define Py_T_BOOL      14
  ------------------
  |  Branch (48:5): [True: 0, False: 185]
  ------------------
   49|      0|        v = PyBool_FromLong(FT_ATOMIC_LOAD_CHAR_RELAXED(*(char*)addr));
  ------------------
  |  |  176|      0|#define FT_ATOMIC_LOAD_CHAR_RELAXED(value) value
  ------------------
   50|      0|        break;
   51|      0|    case Py_T_BYTE:
  ------------------
  |  |   62|      0|#define Py_T_BYTE      8   /* 8-bit signed int */
  ------------------
  |  Branch (51:5): [True: 0, False: 185]
  ------------------
   52|      0|        v = PyLong_FromLong(FT_ATOMIC_LOAD_CHAR_RELAXED(*(char*)addr));
  ------------------
  |  |  176|      0|#define FT_ATOMIC_LOAD_CHAR_RELAXED(value) value
  ------------------
   53|      0|        break;
   54|      0|    case Py_T_UBYTE:
  ------------------
  |  |   64|      0|#define Py_T_UBYTE     9
  ------------------
  |  Branch (54:5): [True: 0, False: 185]
  ------------------
   55|      0|        v = PyLong_FromUnsignedLong(FT_ATOMIC_LOAD_UCHAR_RELAXED(*(unsigned char*)addr));
  ------------------
  |  |  178|      0|#define FT_ATOMIC_LOAD_UCHAR_RELAXED(value) value
  ------------------
   56|      0|        break;
   57|      0|    case Py_T_SHORT:
  ------------------
  |  |   53|      0|#define Py_T_SHORT     0
  ------------------
  |  Branch (57:5): [True: 0, False: 185]
  ------------------
   58|      0|        v = PyLong_FromLong(FT_ATOMIC_LOAD_SHORT_RELAXED(*(short*)addr));
  ------------------
  |  |  180|      0|#define FT_ATOMIC_LOAD_SHORT_RELAXED(value) value
  ------------------
   59|      0|        break;
   60|      0|    case Py_T_USHORT:
  ------------------
  |  |   65|      0|#define Py_T_USHORT    10
  ------------------
  |  Branch (60:5): [True: 0, False: 185]
  ------------------
   61|      0|        v = PyLong_FromUnsignedLong(FT_ATOMIC_LOAD_USHORT_RELAXED(*(unsigned short*)addr));
  ------------------
  |  |  182|      0|#define FT_ATOMIC_LOAD_USHORT_RELAXED(value) value
  ------------------
   62|      0|        break;
   63|      0|    case Py_T_INT:
  ------------------
  |  |   54|      0|#define Py_T_INT       1
  ------------------
  |  Branch (63:5): [True: 0, False: 185]
  ------------------
   64|      0|        v = PyLong_FromLong(FT_ATOMIC_LOAD_INT_RELAXED(*(int*)addr));
  ------------------
  |  |  186|      0|#define FT_ATOMIC_LOAD_INT_RELAXED(value) value
  ------------------
   65|      0|        break;
   66|      0|    case Py_T_UINT:
  ------------------
  |  |   66|      0|#define Py_T_UINT      11
  ------------------
  |  Branch (66:5): [True: 0, False: 185]
  ------------------
   67|      0|        v = PyLong_FromUnsignedLong(FT_ATOMIC_LOAD_UINT_RELAXED(*(unsigned int*)addr));
  ------------------
  |  |  189|      0|#define FT_ATOMIC_LOAD_UINT_RELAXED(value) value
  ------------------
   68|      0|        break;
   69|      0|    case Py_T_LONG:
  ------------------
  |  |   55|      0|#define Py_T_LONG      2
  ------------------
  |  Branch (69:5): [True: 0, False: 185]
  ------------------
   70|      0|        v = PyLong_FromLong(FT_ATOMIC_LOAD_LONG_RELAXED(*(long*)addr));
  ------------------
  |  |  191|      0|#define FT_ATOMIC_LOAD_LONG_RELAXED(value) value
  ------------------
   71|      0|        break;
   72|      0|    case Py_T_ULONG:
  ------------------
  |  |   67|      0|#define Py_T_ULONG     12
  ------------------
  |  Branch (72:5): [True: 0, False: 185]
  ------------------
   73|      0|        v = PyLong_FromUnsignedLong(FT_ATOMIC_LOAD_ULONG_RELAXED(*(unsigned long*)addr));
  ------------------
  |  |  162|      0|#define FT_ATOMIC_LOAD_ULONG_RELAXED(value) value
  ------------------
   74|      0|        break;
   75|      0|    case Py_T_PYSSIZET:
  ------------------
  |  |   79|      0|#define Py_T_PYSSIZET  19      /* Py_ssize_t */
  ------------------
  |  Branch (75:5): [True: 0, False: 185]
  ------------------
   76|      0|        v = PyLong_FromSsize_t(FT_ATOMIC_LOAD_SSIZE_RELAXED(*(Py_ssize_t*)addr));
  ------------------
  |  |  149|      0|#define FT_ATOMIC_LOAD_SSIZE_RELAXED(value) value
  ------------------
   77|      0|        break;
   78|      0|    case Py_T_FLOAT:
  ------------------
  |  |   56|      0|#define Py_T_FLOAT     3
  ------------------
  |  Branch (78:5): [True: 0, False: 185]
  ------------------
   79|      0|        v = PyFloat_FromDouble((double)FT_ATOMIC_LOAD_FLOAT_RELAXED(*(float*)addr));
  ------------------
  |  |  195|      0|#define FT_ATOMIC_LOAD_FLOAT_RELAXED(value) value
  ------------------
   80|      0|        break;
   81|      0|    case Py_T_DOUBLE:
  ------------------
  |  |   57|      0|#define Py_T_DOUBLE    4
  ------------------
  |  Branch (81:5): [True: 0, False: 185]
  ------------------
   82|      0|        v = PyFloat_FromDouble(FT_ATOMIC_LOAD_DOUBLE_RELAXED(*(double*)addr));
  ------------------
  |  |  197|      0|#define FT_ATOMIC_LOAD_DOUBLE_RELAXED(value) value
  ------------------
   83|      0|        break;
   84|      0|    case Py_T_STRING:
  ------------------
  |  |   58|      0|#define Py_T_STRING    5
  ------------------
  |  Branch (84:5): [True: 0, False: 185]
  ------------------
   85|      0|        if (*(char**)addr == NULL) {
  ------------------
  |  Branch (85:13): [True: 0, False: 0]
  ------------------
   86|      0|            v = Py_NewRef(Py_None);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   87|      0|        }
   88|      0|        else
   89|      0|            v = PyUnicode_FromString(*(char**)addr);
   90|      0|        break;
   91|      0|    case Py_T_STRING_INPLACE:
  ------------------
  |  |   70|      0|#define Py_T_STRING_INPLACE    13
  ------------------
  |  Branch (91:5): [True: 0, False: 185]
  ------------------
   92|      0|        v = PyUnicode_FromString((char*)addr);
   93|      0|        break;
   94|      0|    case Py_T_CHAR: {
  ------------------
  |  |   61|      0|#define Py_T_CHAR      7   /* 1-character string */
  ------------------
  |  Branch (94:5): [True: 0, False: 185]
  ------------------
   95|      0|        char char_val = FT_ATOMIC_LOAD_CHAR_RELAXED(*(char*)addr);
  ------------------
  |  |  176|      0|#define FT_ATOMIC_LOAD_CHAR_RELAXED(value) value
  ------------------
   96|      0|        v = PyUnicode_FromStringAndSize(&char_val, 1);
   97|      0|        break;
   98|      0|    }
   99|    181|    case _Py_T_OBJECT:
  ------------------
  |  |   59|    181|#define _Py_T_OBJECT   6  // Deprecated, use Py_T_OBJECT_EX instead
  ------------------
  |  Branch (99:5): [True: 181, False: 4]
  ------------------
  100|    181|        v = FT_ATOMIC_LOAD_PTR(*(PyObject **) addr);
  ------------------
  |  |  145|    181|#define FT_ATOMIC_LOAD_PTR(value) value
  ------------------
  101|    181|        if (v != NULL) {
  ------------------
  |  Branch (101:13): [True: 181, False: 0]
  ------------------
  102|       |#ifdef Py_GIL_DISABLED
  103|       |            if (!_Py_TryIncrefCompare((PyObject **) addr, v)) {
  104|       |                Py_BEGIN_CRITICAL_SECTION((PyObject *) obj_addr);
  105|       |                v = FT_ATOMIC_LOAD_PTR(*(PyObject **) addr);
  106|       |                Py_XINCREF(v);
  107|       |                Py_END_CRITICAL_SECTION();
  108|       |            }
  109|       |#else
  110|    181|            Py_INCREF(v);
  ------------------
  |  |  310|    181|#  define Py_INCREF(op) Py_INCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    181|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    181|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  111|    181|#endif
  112|    181|        }
  113|    181|        if (v == NULL) {
  ------------------
  |  Branch (113:13): [True: 0, False: 181]
  ------------------
  114|      0|            v = Py_None;
  ------------------
  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  ------------------
  115|      0|        }
  116|    181|        break;
  117|      4|    case Py_T_OBJECT_EX:
  ------------------
  |  |   75|      4|#define Py_T_OBJECT_EX 16
  ------------------
  |  Branch (117:5): [True: 4, False: 181]
  ------------------
  118|      4|        v = member_get_object(addr, obj_addr, l);
  119|      4|#ifndef Py_GIL_DISABLED
  120|      4|        Py_XINCREF(v);
  ------------------
  |  |  514|      4|#  define Py_XINCREF(op) Py_XINCREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  121|       |#else
  122|       |        if (v != NULL) {
  123|       |            if (!_Py_TryIncrefCompare((PyObject **) addr, v)) {
  124|       |                Py_BEGIN_CRITICAL_SECTION((PyObject *) obj_addr);
  125|       |                v = member_get_object(addr, obj_addr, l);
  126|       |                Py_XINCREF(v);
  127|       |                Py_END_CRITICAL_SECTION();
  128|       |            }
  129|       |        }
  130|       |#endif
  131|      4|        break;
  132|      0|    case Py_T_LONGLONG:
  ------------------
  |  |   76|      0|#define Py_T_LONGLONG  17
  ------------------
  |  Branch (132:5): [True: 0, False: 185]
  ------------------
  133|      0|        v = PyLong_FromLongLong(FT_ATOMIC_LOAD_LLONG_RELAXED(*(long long *)addr));
  ------------------
  |  |  199|      0|#define FT_ATOMIC_LOAD_LLONG_RELAXED(value) value
  ------------------
  134|      0|        break;
  135|      0|    case Py_T_ULONGLONG:
  ------------------
  |  |   77|      0|#define Py_T_ULONGLONG 18
  ------------------
  |  Branch (135:5): [True: 0, False: 185]
  ------------------
  136|      0|        v = PyLong_FromUnsignedLongLong(FT_ATOMIC_LOAD_ULLONG_RELAXED(*(unsigned long long *)addr));
  ------------------
  |  |  201|      0|#define FT_ATOMIC_LOAD_ULLONG_RELAXED(value) value
  ------------------
  137|      0|        break;
  138|      0|    case _Py_T_NONE:
  ------------------
  |  |   80|      0|#define _Py_T_NONE     20 // Deprecated. Value is always None.
  ------------------
  |  Branch (138:5): [True: 0, False: 185]
  ------------------
  139|       |        // doesn't require free-threading code path
  140|      0|        v = Py_NewRef(Py_None);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  141|      0|        break;
  142|      0|    default:
  ------------------
  |  Branch (142:5): [True: 0, False: 185]
  ------------------
  143|      0|        PyErr_SetString(PyExc_SystemError, "bad memberdescr type");
  144|      0|        v = NULL;
  145|    185|    }
  146|    185|    return v;
  147|    185|}
PyMember_SetOne:
  157|     65|{
  158|     65|    PyObject *oldv;
  159|     65|    if (l->flags & Py_RELATIVE_OFFSET) {
  ------------------
  |  |   86|     65|#define Py_RELATIVE_OFFSET     (1 << 3)
  ------------------
  |  Branch (159:9): [True: 0, False: 65]
  ------------------
  160|      0|        PyErr_SetString(
  161|      0|            PyExc_SystemError,
  162|      0|            "PyMember_SetOne used with Py_RELATIVE_OFFSET");
  163|      0|        return -1;
  164|      0|    }
  165|       |
  166|     65|    PyObject *obj = (PyObject *)addr;
  167|     65|    addr = _PyMember_GetOffset(obj, l);
  168|       |
  169|     65|    if ((l->flags & Py_READONLY))
  ------------------
  |  |   83|     65|#define Py_READONLY            (1 << 0)
  ------------------
  |  Branch (169:9): [True: 0, False: 65]
  ------------------
  170|      0|    {
  171|      0|        PyErr_SetString(PyExc_AttributeError, "readonly attribute");
  172|      0|        return -1;
  173|      0|    }
  174|     65|    if (v == NULL && l->type != Py_T_OBJECT_EX && l->type != _Py_T_OBJECT) {
  ------------------
  |  |   75|     65|#define Py_T_OBJECT_EX 16
  ------------------
                  if (v == NULL && l->type != Py_T_OBJECT_EX && l->type != _Py_T_OBJECT) {
  ------------------
  |  |   59|      0|#define _Py_T_OBJECT   6  // Deprecated, use Py_T_OBJECT_EX instead
  ------------------
  |  Branch (174:9): [True: 0, False: 65]
  |  Branch (174:22): [True: 0, False: 0]
  |  Branch (174:51): [True: 0, False: 0]
  ------------------
  175|      0|        PyErr_SetString(PyExc_TypeError,
  176|      0|                        "can't delete numeric/char attribute");
  177|      0|        return -1;
  178|      0|    }
  179|     65|    switch (l->type) {
  180|      0|    case Py_T_BOOL:{
  ------------------
  |  |   73|      0|#define Py_T_BOOL      14
  ------------------
  |  Branch (180:5): [True: 0, False: 65]
  ------------------
  181|      0|        if (!PyBool_Check(v)) {
  ------------------
  |  |   12|      0|#define PyBool_Check(x) Py_IS_TYPE((x), &PyBool_Type)
  |  |  ------------------
  |  |  |  |  215|      0|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (181:13): [True: 0, False: 0]
  ------------------
  182|      0|            PyErr_SetString(PyExc_TypeError,
  183|      0|                            "attribute value type must be bool");
  184|      0|            return -1;
  185|      0|        }
  186|      0|        if (v == Py_True)
  ------------------
  |  |   26|      0|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (186:13): [True: 0, False: 0]
  ------------------
  187|      0|            FT_ATOMIC_STORE_CHAR_RELAXED(*(char*)addr, 1);
  ------------------
  |  |  177|      0|#define FT_ATOMIC_STORE_CHAR_RELAXED(value, new_value) value = new_value
  ------------------
  188|      0|        else
  189|      0|            FT_ATOMIC_STORE_CHAR_RELAXED(*(char*)addr, 0);
  ------------------
  |  |  177|      0|#define FT_ATOMIC_STORE_CHAR_RELAXED(value, new_value) value = new_value
  ------------------
  190|      0|        break;
  191|      0|        }
  192|      0|    case Py_T_BYTE:{
  ------------------
  |  |   62|      0|#define Py_T_BYTE      8   /* 8-bit signed int */
  ------------------
  |  Branch (192:5): [True: 0, False: 65]
  ------------------
  193|      0|        long long_val = PyLong_AsLong(v);
  194|      0|        if ((long_val == -1) && PyErr_Occurred())
  ------------------
  |  Branch (194:13): [True: 0, False: 0]
  |  Branch (194:33): [True: 0, False: 0]
  ------------------
  195|      0|            return -1;
  196|      0|        FT_ATOMIC_STORE_CHAR_RELAXED(*(char*)addr, (char)long_val);
  ------------------
  |  |  177|      0|#define FT_ATOMIC_STORE_CHAR_RELAXED(value, new_value) value = new_value
  ------------------
  197|       |        /* XXX: For compatibility, only warn about truncations
  198|       |           for now. */
  199|      0|        if ((long_val > CHAR_MAX) || (long_val < CHAR_MIN))
  ------------------
  |  Branch (199:13): [True: 0, False: 0]
  |  Branch (199:38): [True: 0, False: 0]
  ------------------
  200|      0|            WARN("Truncation of value to char");
  ------------------
  |  |  150|      0|    do {                                                        \
  |  |  151|      0|    if (PyErr_WarnEx(PyExc_RuntimeWarning, msg, 1) < 0)         \
  |  |  ------------------
  |  |  |  Branch (151:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  152|      0|        return -1;                                              \
  |  |  153|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (153:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  201|      0|        break;
  202|      0|        }
  203|      0|    case Py_T_UBYTE:{
  ------------------
  |  |   64|      0|#define Py_T_UBYTE     9
  ------------------
  |  Branch (203:5): [True: 0, False: 65]
  ------------------
  204|      0|        long long_val = PyLong_AsLong(v);
  205|      0|        if ((long_val == -1) && PyErr_Occurred())
  ------------------
  |  Branch (205:13): [True: 0, False: 0]
  |  Branch (205:33): [True: 0, False: 0]
  ------------------
  206|      0|            return -1;
  207|      0|        FT_ATOMIC_STORE_UCHAR_RELAXED(*(unsigned char*)addr, (unsigned char)long_val);
  ------------------
  |  |  179|      0|#define FT_ATOMIC_STORE_UCHAR_RELAXED(value, new_value) value = new_value
  ------------------
  208|      0|        if ((long_val > UCHAR_MAX) || (long_val < 0))
  ------------------
  |  Branch (208:13): [True: 0, False: 0]
  |  Branch (208:39): [True: 0, False: 0]
  ------------------
  209|      0|            WARN("Truncation of value to unsigned char");
  ------------------
  |  |  150|      0|    do {                                                        \
  |  |  151|      0|    if (PyErr_WarnEx(PyExc_RuntimeWarning, msg, 1) < 0)         \
  |  |  ------------------
  |  |  |  Branch (151:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  152|      0|        return -1;                                              \
  |  |  153|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (153:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  210|      0|        break;
  211|      0|        }
  212|      0|    case Py_T_SHORT:{
  ------------------
  |  |   53|      0|#define Py_T_SHORT     0
  ------------------
  |  Branch (212:5): [True: 0, False: 65]
  ------------------
  213|      0|        long long_val = PyLong_AsLong(v);
  214|      0|        if ((long_val == -1) && PyErr_Occurred())
  ------------------
  |  Branch (214:13): [True: 0, False: 0]
  |  Branch (214:33): [True: 0, False: 0]
  ------------------
  215|      0|            return -1;
  216|      0|        FT_ATOMIC_STORE_SHORT_RELAXED(*(short*)addr, (short)long_val);
  ------------------
  |  |  181|      0|#define FT_ATOMIC_STORE_SHORT_RELAXED(value, new_value) value = new_value
  ------------------
  217|      0|        if ((long_val > SHRT_MAX) || (long_val < SHRT_MIN))
  ------------------
  |  Branch (217:13): [True: 0, False: 0]
  |  Branch (217:38): [True: 0, False: 0]
  ------------------
  218|      0|            WARN("Truncation of value to short");
  ------------------
  |  |  150|      0|    do {                                                        \
  |  |  151|      0|    if (PyErr_WarnEx(PyExc_RuntimeWarning, msg, 1) < 0)         \
  |  |  ------------------
  |  |  |  Branch (151:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  152|      0|        return -1;                                              \
  |  |  153|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (153:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  219|      0|        break;
  220|      0|        }
  221|      0|    case Py_T_USHORT:{
  ------------------
  |  |   65|      0|#define Py_T_USHORT    10
  ------------------
  |  Branch (221:5): [True: 0, False: 65]
  ------------------
  222|      0|        long long_val = PyLong_AsLong(v);
  223|      0|        if ((long_val == -1) && PyErr_Occurred())
  ------------------
  |  Branch (223:13): [True: 0, False: 0]
  |  Branch (223:33): [True: 0, False: 0]
  ------------------
  224|      0|            return -1;
  225|      0|        FT_ATOMIC_STORE_USHORT_RELAXED(*(unsigned short*)addr, (unsigned short)long_val);
  ------------------
  |  |  183|      0|#define FT_ATOMIC_STORE_USHORT_RELAXED(value, new_value) value = new_value
  ------------------
  226|      0|        if ((long_val > USHRT_MAX) || (long_val < 0))
  ------------------
  |  Branch (226:13): [True: 0, False: 0]
  |  Branch (226:39): [True: 0, False: 0]
  ------------------
  227|      0|            WARN("Truncation of value to unsigned short");
  ------------------
  |  |  150|      0|    do {                                                        \
  |  |  151|      0|    if (PyErr_WarnEx(PyExc_RuntimeWarning, msg, 1) < 0)         \
  |  |  ------------------
  |  |  |  Branch (151:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  152|      0|        return -1;                                              \
  |  |  153|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (153:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  228|      0|        break;
  229|      0|        }
  230|      0|    case Py_T_INT:{
  ------------------
  |  |   54|      0|#define Py_T_INT       1
  ------------------
  |  Branch (230:5): [True: 0, False: 65]
  ------------------
  231|      0|        long long_val = PyLong_AsLong(v);
  232|      0|        if ((long_val == -1) && PyErr_Occurred())
  ------------------
  |  Branch (232:13): [True: 0, False: 0]
  |  Branch (232:33): [True: 0, False: 0]
  ------------------
  233|      0|            return -1;
  234|      0|        FT_ATOMIC_STORE_INT_RELAXED(*(int *)addr, (int)long_val);
  ------------------
  |  |  187|      0|#define FT_ATOMIC_STORE_INT_RELAXED(value, new_value) value = new_value
  ------------------
  235|      0|        if ((long_val > INT_MAX) || (long_val < INT_MIN))
  ------------------
  |  Branch (235:13): [True: 0, False: 0]
  |  Branch (235:37): [True: 0, False: 0]
  ------------------
  236|      0|            WARN("Truncation of value to int");
  ------------------
  |  |  150|      0|    do {                                                        \
  |  |  151|      0|    if (PyErr_WarnEx(PyExc_RuntimeWarning, msg, 1) < 0)         \
  |  |  ------------------
  |  |  |  Branch (151:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  152|      0|        return -1;                                              \
  |  |  153|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (153:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  237|      0|        break;
  238|      0|        }
  239|      0|    case Py_T_UINT: {
  ------------------
  |  |   66|      0|#define Py_T_UINT      11
  ------------------
  |  Branch (239:5): [True: 0, False: 65]
  ------------------
  240|       |        /* XXX: For compatibility, accept negative int values
  241|       |           as well. */
  242|      0|        v = _PyNumber_Index(v);
  243|      0|        if (v == NULL) {
  ------------------
  |  Branch (243:13): [True: 0, False: 0]
  ------------------
  244|      0|            return -1;
  245|      0|        }
  246|      0|        if (_PyLong_IsNegative((PyLongObject *)v)) {
  ------------------
  |  Branch (246:13): [True: 0, False: 0]
  ------------------
  247|      0|            long long_val = PyLong_AsLong(v);
  248|      0|            Py_DECREF(v);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  249|      0|            if (long_val == -1 && PyErr_Occurred()) {
  ------------------
  |  Branch (249:17): [True: 0, False: 0]
  |  Branch (249:35): [True: 0, False: 0]
  ------------------
  250|      0|                return -1;
  251|      0|            }
  252|      0|            FT_ATOMIC_STORE_UINT_RELAXED(*(unsigned int *)addr, (unsigned int)(unsigned long)long_val);
  ------------------
  |  |  190|      0|#define FT_ATOMIC_STORE_UINT_RELAXED(value, new_value) value = new_value
  ------------------
  253|      0|            WARN("Writing negative value into unsigned field");
  ------------------
  |  |  150|      0|    do {                                                        \
  |  |  151|      0|    if (PyErr_WarnEx(PyExc_RuntimeWarning, msg, 1) < 0)         \
  |  |  ------------------
  |  |  |  Branch (151:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  152|      0|        return -1;                                              \
  |  |  153|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (153:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  254|      0|        }
  255|      0|        else {
  256|      0|            unsigned long ulong_val = PyLong_AsUnsignedLong(v);
  257|      0|            Py_DECREF(v);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  258|      0|            if (ulong_val == (unsigned long)-1 && PyErr_Occurred()) {
  ------------------
  |  Branch (258:17): [True: 0, False: 0]
  |  Branch (258:51): [True: 0, False: 0]
  ------------------
  259|      0|                return -1;
  260|      0|            }
  261|      0|            FT_ATOMIC_STORE_UINT_RELAXED(*(unsigned int *)addr, (unsigned int)ulong_val);
  ------------------
  |  |  190|      0|#define FT_ATOMIC_STORE_UINT_RELAXED(value, new_value) value = new_value
  ------------------
  262|      0|            if (ulong_val > UINT_MAX) {
  ------------------
  |  Branch (262:17): [True: 0, False: 0]
  ------------------
  263|      0|                WARN("Truncation of value to unsigned int");
  ------------------
  |  |  150|      0|    do {                                                        \
  |  |  151|      0|    if (PyErr_WarnEx(PyExc_RuntimeWarning, msg, 1) < 0)         \
  |  |  ------------------
  |  |  |  Branch (151:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  152|      0|        return -1;                                              \
  |  |  153|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (153:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  264|      0|            }
  265|      0|        }
  266|      0|        break;
  267|      0|    }
  268|      0|    case Py_T_LONG: {
  ------------------
  |  |   55|      0|#define Py_T_LONG      2
  ------------------
  |  Branch (268:5): [True: 0, False: 65]
  ------------------
  269|      0|        const long long_val = PyLong_AsLong(v);
  270|      0|        if ((long_val == -1) && PyErr_Occurred())
  ------------------
  |  Branch (270:13): [True: 0, False: 0]
  |  Branch (270:33): [True: 0, False: 0]
  ------------------
  271|      0|            return -1;
  272|      0|        FT_ATOMIC_STORE_LONG_RELAXED(*(long*)addr, long_val);
  ------------------
  |  |  192|      0|#define FT_ATOMIC_STORE_LONG_RELAXED(value, new_value) value = new_value
  ------------------
  273|      0|        break;
  274|      0|    }
  275|      0|    case Py_T_ULONG: {
  ------------------
  |  |   67|      0|#define Py_T_ULONG     12
  ------------------
  |  Branch (275:5): [True: 0, False: 65]
  ------------------
  276|       |        /* XXX: For compatibility, accept negative int values
  277|       |           as well. */
  278|      0|        v = _PyNumber_Index(v);
  279|      0|        if (v == NULL) {
  ------------------
  |  Branch (279:13): [True: 0, False: 0]
  ------------------
  280|      0|            return -1;
  281|      0|        }
  282|      0|        if (_PyLong_IsNegative((PyLongObject *)v)) {
  ------------------
  |  Branch (282:13): [True: 0, False: 0]
  ------------------
  283|      0|            long long_val = PyLong_AsLong(v);
  284|      0|            Py_DECREF(v);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  285|      0|            if (long_val == -1 && PyErr_Occurred()) {
  ------------------
  |  Branch (285:17): [True: 0, False: 0]
  |  Branch (285:35): [True: 0, False: 0]
  ------------------
  286|      0|                return -1;
  287|      0|            }
  288|      0|            FT_ATOMIC_STORE_ULONG_RELAXED(*(unsigned long *)addr, (unsigned long)long_val);
  ------------------
  |  |  193|      0|#define FT_ATOMIC_STORE_ULONG_RELAXED(value, new_value) value = new_value
  ------------------
  289|      0|            WARN("Writing negative value into unsigned field");
  ------------------
  |  |  150|      0|    do {                                                        \
  |  |  151|      0|    if (PyErr_WarnEx(PyExc_RuntimeWarning, msg, 1) < 0)         \
  |  |  ------------------
  |  |  |  Branch (151:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  152|      0|        return -1;                                              \
  |  |  153|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (153:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  290|      0|        }
  291|      0|        else {
  292|      0|            unsigned long ulong_val = PyLong_AsUnsignedLong(v);
  293|      0|            Py_DECREF(v);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  294|      0|            if (ulong_val == (unsigned long)-1 && PyErr_Occurred()) {
  ------------------
  |  Branch (294:17): [True: 0, False: 0]
  |  Branch (294:51): [True: 0, False: 0]
  ------------------
  295|      0|                return -1;
  296|      0|            }
  297|      0|            FT_ATOMIC_STORE_ULONG_RELAXED(*(unsigned long *)addr, ulong_val);
  ------------------
  |  |  193|      0|#define FT_ATOMIC_STORE_ULONG_RELAXED(value, new_value) value = new_value
  ------------------
  298|      0|        }
  299|      0|        break;
  300|      0|    }
  301|      0|    case Py_T_PYSSIZET: {
  ------------------
  |  |   79|      0|#define Py_T_PYSSIZET  19      /* Py_ssize_t */
  ------------------
  |  Branch (301:5): [True: 0, False: 65]
  ------------------
  302|      0|        const Py_ssize_t ssize_val = PyLong_AsSsize_t(v);
  303|      0|        if ((ssize_val == (Py_ssize_t)-1) && PyErr_Occurred())
  ------------------
  |  Branch (303:13): [True: 0, False: 0]
  |  Branch (303:46): [True: 0, False: 0]
  ------------------
  304|      0|            return -1;
  305|      0|        FT_ATOMIC_STORE_SSIZE_RELAXED(*(Py_ssize_t*)addr, ssize_val);
  ------------------
  |  |  194|      0|#define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) value = new_value
  ------------------
  306|      0|        break;
  307|      0|    }
  308|      0|    case Py_T_FLOAT:{
  ------------------
  |  |   56|      0|#define Py_T_FLOAT     3
  ------------------
  |  Branch (308:5): [True: 0, False: 65]
  ------------------
  309|      0|        double double_val = PyFloat_AsDouble(v);
  310|      0|        if ((double_val == -1) && PyErr_Occurred())
  ------------------
  |  Branch (310:13): [True: 0, False: 0]
  |  Branch (310:35): [True: 0, False: 0]
  ------------------
  311|      0|            return -1;
  312|      0|        FT_ATOMIC_STORE_FLOAT_RELAXED(*(float*)addr, (float)double_val);
  ------------------
  |  |  196|      0|#define FT_ATOMIC_STORE_FLOAT_RELAXED(value, new_value) value = new_value
  ------------------
  313|      0|        break;
  314|      0|        }
  315|      0|    case Py_T_DOUBLE: {
  ------------------
  |  |   57|      0|#define Py_T_DOUBLE    4
  ------------------
  |  Branch (315:5): [True: 0, False: 65]
  ------------------
  316|      0|        const double double_val = PyFloat_AsDouble(v);
  317|      0|        if ((double_val == -1) && PyErr_Occurred())
  ------------------
  |  Branch (317:13): [True: 0, False: 0]
  |  Branch (317:35): [True: 0, False: 0]
  ------------------
  318|      0|            return -1;
  319|      0|        FT_ATOMIC_STORE_DOUBLE_RELAXED(*(double *) addr, double_val);
  ------------------
  |  |  198|      0|#define FT_ATOMIC_STORE_DOUBLE_RELAXED(value, new_value) value = new_value
  ------------------
  320|      0|        break;
  321|      0|    }
  322|     61|    case _Py_T_OBJECT:
  ------------------
  |  |   59|     61|#define _Py_T_OBJECT   6  // Deprecated, use Py_T_OBJECT_EX instead
  ------------------
  |  Branch (322:5): [True: 61, False: 4]
  ------------------
  323|     65|    case Py_T_OBJECT_EX:
  ------------------
  |  |   75|     65|#define Py_T_OBJECT_EX 16
  ------------------
  |  Branch (323:5): [True: 4, False: 61]
  ------------------
  324|     65|        Py_BEGIN_CRITICAL_SECTION(obj);
  ------------------
  |  |   51|     65|    {
  ------------------
  325|     65|        oldv = *(PyObject **)addr;
  326|     65|        FT_ATOMIC_STORE_PTR_RELEASE(*(PyObject **)addr, Py_XNewRef(v));
  ------------------
  |  |  164|     65|#define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
  ------------------
  327|     65|        Py_END_CRITICAL_SECTION();
  ------------------
  |  |   55|     65|    }
  ------------------
  328|     65|        if (v == NULL && oldv == NULL && l->type == Py_T_OBJECT_EX) {
  ------------------
  |  |   75|      0|#define Py_T_OBJECT_EX 16
  ------------------
  |  Branch (328:13): [True: 0, False: 65]
  |  Branch (328:26): [True: 0, False: 0]
  |  Branch (328:42): [True: 0, False: 0]
  ------------------
  329|       |            // Raise an exception when attempting to delete an already deleted
  330|       |            // attribute.
  331|       |            // Differently from Py_T_OBJECT_EX, _Py_T_OBJECT does not raise an
  332|       |            // exception here (PyMember_GetOne will return Py_None instead of
  333|       |            // NULL).
  334|      0|            PyErr_SetString(PyExc_AttributeError, l->name);
  335|      0|            return -1;
  336|      0|        }
  337|     65|        Py_XDECREF(oldv);
  ------------------
  |  |  524|     65|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     65|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     65|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  338|     65|        break;
  339|      0|    case Py_T_CHAR: {
  ------------------
  |  |   61|      0|#define Py_T_CHAR      7   /* 1-character string */
  ------------------
  |  Branch (339:5): [True: 0, False: 65]
  ------------------
  340|      0|        const char *string;
  341|      0|        Py_ssize_t len;
  342|       |
  343|      0|        string = PyUnicode_AsUTF8AndSize(v, &len);
  344|      0|        if (string == NULL || len != 1) {
  ------------------
  |  Branch (344:13): [True: 0, False: 0]
  |  Branch (344:31): [True: 0, False: 0]
  ------------------
  345|      0|            PyErr_BadArgument();
  346|      0|            return -1;
  347|      0|        }
  348|      0|        FT_ATOMIC_STORE_CHAR_RELAXED(*(char*)addr, string[0]);
  ------------------
  |  |  177|      0|#define FT_ATOMIC_STORE_CHAR_RELAXED(value, new_value) value = new_value
  ------------------
  349|      0|        break;
  350|      0|        }
  351|      0|    case Py_T_STRING:
  ------------------
  |  |   58|      0|#define Py_T_STRING    5
  ------------------
  |  Branch (351:5): [True: 0, False: 65]
  ------------------
  352|      0|    case Py_T_STRING_INPLACE:
  ------------------
  |  |   70|      0|#define Py_T_STRING_INPLACE    13
  ------------------
  |  Branch (352:5): [True: 0, False: 65]
  ------------------
  353|      0|        PyErr_SetString(PyExc_TypeError, "readonly attribute");
  354|      0|        return -1;
  355|      0|    case Py_T_LONGLONG:{
  ------------------
  |  |   76|      0|#define Py_T_LONGLONG  17
  ------------------
  |  Branch (355:5): [True: 0, False: 65]
  ------------------
  356|      0|        long long value = PyLong_AsLongLong(v);
  357|      0|        if ((value == -1) && PyErr_Occurred())
  ------------------
  |  Branch (357:13): [True: 0, False: 0]
  |  Branch (357:30): [True: 0, False: 0]
  ------------------
  358|      0|            return -1;
  359|      0|        FT_ATOMIC_STORE_LLONG_RELAXED(*(long long*)addr, value);
  ------------------
  |  |  200|      0|#define FT_ATOMIC_STORE_LLONG_RELAXED(value, new_value) value = new_value
  ------------------
  360|      0|        break;
  361|      0|        }
  362|      0|    case Py_T_ULONGLONG: {
  ------------------
  |  |   77|      0|#define Py_T_ULONGLONG 18
  ------------------
  |  Branch (362:5): [True: 0, False: 65]
  ------------------
  363|      0|        v = _PyNumber_Index(v);
  364|      0|        if (v == NULL) {
  ------------------
  |  Branch (364:13): [True: 0, False: 0]
  ------------------
  365|      0|            return -1;
  366|      0|        }
  367|      0|        if (_PyLong_IsNegative((PyLongObject *)v)) {
  ------------------
  |  Branch (367:13): [True: 0, False: 0]
  ------------------
  368|      0|            long long_val = PyLong_AsLong(v);
  369|      0|            Py_DECREF(v);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  370|      0|            if (long_val == -1 && PyErr_Occurred()) {
  ------------------
  |  Branch (370:17): [True: 0, False: 0]
  |  Branch (370:35): [True: 0, False: 0]
  ------------------
  371|      0|                return -1;
  372|      0|            }
  373|      0|            FT_ATOMIC_STORE_ULLONG_RELAXED(*(unsigned long long *)addr, (unsigned long long)(long long)long_val);
  ------------------
  |  |  202|      0|#define FT_ATOMIC_STORE_ULLONG_RELAXED(value, new_value) value = new_value
  ------------------
  374|      0|            WARN("Writing negative value into unsigned field");
  ------------------
  |  |  150|      0|    do {                                                        \
  |  |  151|      0|    if (PyErr_WarnEx(PyExc_RuntimeWarning, msg, 1) < 0)         \
  |  |  ------------------
  |  |  |  Branch (151:9): [True: 0, False: 0]
  |  |  ------------------
  |  |  152|      0|        return -1;                                              \
  |  |  153|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (153:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  375|      0|        }
  376|      0|        else {
  377|      0|            unsigned long long ulonglong_val = PyLong_AsUnsignedLongLong(v);
  378|      0|            Py_DECREF(v);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  379|      0|            if (ulonglong_val == (unsigned long long)-1 && PyErr_Occurred()) {
  ------------------
  |  Branch (379:17): [True: 0, False: 0]
  |  Branch (379:60): [True: 0, False: 0]
  ------------------
  380|      0|                return -1;
  381|      0|            }
  382|      0|            FT_ATOMIC_STORE_ULLONG_RELAXED(*(unsigned long long *)addr, ulonglong_val);
  ------------------
  |  |  202|      0|#define FT_ATOMIC_STORE_ULLONG_RELAXED(value, new_value) value = new_value
  ------------------
  383|      0|        }
  384|      0|        break;
  385|      0|    }
  386|      0|    default:
  ------------------
  |  Branch (386:5): [True: 0, False: 65]
  ------------------
  387|      0|        PyErr_Format(PyExc_SystemError,
  388|      0|                     "bad memberdescr type for %s", l->name);
  389|      0|        return -1;
  390|     65|    }
  391|     65|    return 0;
  392|     65|}
structmember.c:member_get_object:
   14|      4|{
   15|      4|    PyObject *v = FT_ATOMIC_LOAD_PTR(*(PyObject **) addr);
  ------------------
  |  |  145|      4|#define FT_ATOMIC_LOAD_PTR(value) value
  ------------------
   16|      4|    if (v == NULL) {
  ------------------
  |  Branch (16:9): [True: 0, False: 4]
  ------------------
   17|      0|        PyErr_Format(PyExc_AttributeError,
   18|      0|                     "'%T' object has no attribute '%s'",
   19|      0|                     (PyObject *)obj_addr, l->name);
   20|      0|    }
   21|      4|    return v;
   22|      4|}

_Py_Mangle:
 3300|      5|{
 3301|       |    /* Name mangling: __private becomes _classname__private.
 3302|       |       This is independent from how the name is used. */
 3303|      5|    if (privateobj == NULL || !PyUnicode_Check(privateobj) ||
  ------------------
  |  |  103|      5|    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|     10|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (3303:9): [True: 0, False: 5]
  |  Branch (3303:31): [True: 0, False: 5]
  ------------------
 3304|      5|        PyUnicode_READ_CHAR(ident, 0) != '_' ||
  ------------------
  |  |  381|      5|    PyUnicode_READ_CHAR(_PyObject_CAST(unicode), (index))
  |  |  ------------------
  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3304:9): [True: 1, False: 4]
  ------------------
 3305|      5|        PyUnicode_READ_CHAR(ident, 1) != '_') {
  ------------------
  |  |  381|      4|    PyUnicode_READ_CHAR(_PyObject_CAST(unicode), (index))
  |  |  ------------------
  |  |  |  |  171|      4|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      4|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3305:9): [True: 4, False: 0]
  ------------------
 3306|      5|        return Py_NewRef(ident);
  ------------------
  |  |  550|      5|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      5|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      5|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3307|      5|    }
 3308|      0|    size_t nlen = PyUnicode_GET_LENGTH(ident);
  ------------------
  |  |  299|      0|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3309|      0|    size_t plen = PyUnicode_GET_LENGTH(privateobj);
  ------------------
  |  |  299|      0|#define PyUnicode_GET_LENGTH(op) PyUnicode_GET_LENGTH(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3310|       |    /* Don't mangle __id__ or names with dots.
 3311|       |
 3312|       |       The only time a name with a dot can occur is when
 3313|       |       we are compiling an import statement that has a
 3314|       |       package name.
 3315|       |
 3316|       |       TODO(jhylton): Decide whether we want to support
 3317|       |       mangling of the module name, e.g. __M.X.
 3318|       |    */
 3319|      0|    if ((PyUnicode_READ_CHAR(ident, nlen-1) == '_' &&
  ------------------
  |  |  381|      0|    PyUnicode_READ_CHAR(_PyObject_CAST(unicode), (index))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3319:10): [True: 0, False: 0]
  ------------------
 3320|      0|         PyUnicode_READ_CHAR(ident, nlen-2) == '_') ||
  ------------------
  |  |  381|      0|    PyUnicode_READ_CHAR(_PyObject_CAST(unicode), (index))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3320:10): [True: 0, False: 0]
  ------------------
 3321|      0|        PyUnicode_FindChar(ident, '.', 0, nlen, 1) != -1) {
  ------------------
  |  Branch (3321:9): [True: 0, False: 0]
  ------------------
 3322|      0|        return Py_NewRef(ident); /* Don't mangle __whatever__ */
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3323|      0|    }
 3324|       |    /* Strip leading underscores from class name */
 3325|      0|    size_t ipriv = 0;
 3326|      0|    while (PyUnicode_READ_CHAR(privateobj, ipriv) == '_') {
  ------------------
  |  |  381|      0|    PyUnicode_READ_CHAR(_PyObject_CAST(unicode), (index))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3326:12): [True: 0, False: 0]
  ------------------
 3327|      0|        ipriv++;
 3328|      0|    }
 3329|      0|    if (ipriv == plen) {
  ------------------
  |  Branch (3329:9): [True: 0, False: 0]
  ------------------
 3330|      0|        return Py_NewRef(ident); /* Don't mangle if class is just underscores */
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3331|      0|    }
 3332|       |
 3333|      0|    if (nlen + (plen - ipriv) >= PY_SSIZE_T_MAX - 1) {
  ------------------
  |  |  137|      0|#   define PY_SSIZE_T_MAX SSIZE_MAX
  ------------------
  |  Branch (3333:9): [True: 0, False: 0]
  ------------------
 3334|      0|        PyErr_SetString(PyExc_OverflowError,
 3335|      0|                        "private identifier too large to be mangled");
 3336|      0|        return NULL;
 3337|      0|    }
 3338|       |
 3339|      0|    PyUnicodeWriter *writer = PyUnicodeWriter_Create(1 + nlen + (plen - ipriv));
 3340|      0|    if (!writer) {
  ------------------
  |  Branch (3340:9): [True: 0, False: 0]
  ------------------
 3341|      0|        return NULL;
 3342|      0|    }
 3343|       |    // ident = "_" + priv[ipriv:] + ident
 3344|      0|    if (PyUnicodeWriter_WriteChar(writer, '_') < 0) {
  ------------------
  |  Branch (3344:9): [True: 0, False: 0]
  ------------------
 3345|      0|        goto error;
 3346|      0|    }
 3347|      0|    if (PyUnicodeWriter_WriteSubstring(writer, privateobj, ipriv, plen) < 0) {
  ------------------
  |  Branch (3347:9): [True: 0, False: 0]
  ------------------
 3348|      0|        goto error;
 3349|      0|    }
 3350|      0|    if (PyUnicodeWriter_WriteStr(writer, ident) < 0) {
  ------------------
  |  Branch (3350:9): [True: 0, False: 0]
  ------------------
 3351|      0|        goto error;
 3352|      0|    }
 3353|      0|    return PyUnicodeWriter_Finish(writer);
 3354|       |
 3355|      0|error:
 3356|      0|    PyUnicodeWriter_Discard(writer);
 3357|       |    return NULL;
 3358|      0|}

PySys_GetAttrString:
  103|      2|{
  104|      2|    PyThreadState *tstate = _PyThreadState_GET();
  105|      2|    PyObject *sysdict = tstate->interp->sysdict;
  106|      2|    if (sysdict == NULL) {
  ------------------
  |  Branch (106:9): [True: 0, False: 2]
  ------------------
  107|      0|        PyErr_SetString(PyExc_RuntimeError, "no sys module");
  108|      0|        return NULL;
  109|      0|    }
  110|      2|    PyObject *value;
  111|      2|    if (PyDict_GetItemStringRef(sysdict, name, &value) == 0) {
  ------------------
  |  Branch (111:9): [True: 0, False: 2]
  ------------------
  112|      0|        PyErr_Format(PyExc_RuntimeError, "lost sys.%s", name);
  113|      0|    }
  114|      2|    return value;
  115|      2|}
PySys_GetOptionalAttrString:
  138|      1|{
  139|      1|    PyThreadState *tstate = _PyThreadState_GET();
  140|      1|    PyObject *sysdict = tstate->interp->sysdict;
  141|      1|    if (sysdict == NULL) {
  ------------------
  |  Branch (141:9): [True: 0, False: 1]
  ------------------
  142|      0|        *value = NULL;
  143|      0|        return 0;
  144|      0|    }
  145|      1|    return PyDict_GetItemStringRef(sysdict, name, value);
  146|      1|}
_PySys_SetAttr:
  193|      3|{
  194|      3|    PyInterpreterState *interp = _PyInterpreterState_GET();
  195|      3|    return sys_set_object(interp, key, v);
  196|      3|}
PySys_SetObject:
  210|      3|{
  211|      3|    PyInterpreterState *interp = _PyInterpreterState_GET();
  212|      3|    return sys_set_object_str(interp, name, v);
  213|      3|}
_PySys_Audit:
  374|      1|{
  375|      1|    va_list vargs;
  376|      1|    va_start(vargs, argFormat);
  377|      1|    int res = sys_audit_tstate(tstate, event, argFormat, vargs);
  378|       |    va_end(vargs);
  379|      1|    return res;
  380|      1|}
PySys_Audit:
  384|     45|{
  385|     45|    PyThreadState *tstate = _PyThreadState_GET();
  386|     45|    va_list vargs;
  387|     45|    va_start(vargs, argFormat);
  388|     45|    int res = sys_audit_tstate(tstate, event, argFormat, vargs);
  389|       |    va_end(vargs);
  390|     45|    return res;
  391|     45|}
_PySys_ReadPreinitWarnOptions:
 3092|      1|{
 3093|      1|    PyStatus status;
 3094|      1|    _Py_PreInitEntry entry;
 3095|       |
 3096|      1|    for (entry = _preinit_warnoptions; entry != NULL; entry = entry->next) {
  ------------------
  |  Branch (3096:40): [True: 0, False: 1]
  ------------------
 3097|      0|        status = PyWideStringList_Append(options, entry->value);
 3098|      0|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      0|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3099|      0|            return status;
 3100|      0|        }
 3101|      0|    }
 3102|       |
 3103|      1|    _clear_preinit_entries(&_preinit_warnoptions);
 3104|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 3105|      1|}
_PySys_ReadPreinitXOptions:
 3110|      1|{
 3111|      1|    PyStatus status;
 3112|      1|    _Py_PreInitEntry entry;
 3113|       |
 3114|      1|    for (entry = _preinit_xoptions; entry != NULL; entry = entry->next) {
  ------------------
  |  Branch (3114:37): [True: 0, False: 1]
  ------------------
 3115|      0|        status = PyWideStringList_Append(&config->xoptions, entry->value);
 3116|      0|        if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      0|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3117|      0|            return status;
 3118|      0|        }
 3119|      0|    }
 3120|       |
 3121|      1|    _clear_preinit_entries(&_preinit_xoptions);
 3122|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 3123|      1|}
_PySys_UpdateConfig:
 4102|      1|{
 4103|      1|    PyInterpreterState *interp = tstate->interp;
 4104|      1|    PyObject *sysdict = interp->sysdict;
 4105|      1|    const PyConfig *config = _PyInterpreterState_GetConfig(interp);
 4106|      1|    int res;
 4107|       |
 4108|      1|#define COPY_LIST(KEY, VALUE) \
 4109|      1|        SET_SYS(KEY, _PyWideStringList_AsList(&(VALUE)));
 4110|       |
 4111|      1|#define SET_SYS_FROM_WSTR(KEY, VALUE) \
 4112|      1|        SET_SYS(KEY, PyUnicode_FromWideChar(VALUE, -1));
 4113|       |
 4114|      1|#define COPY_WSTR(SYS_ATTR, WSTR) \
 4115|      1|    if (WSTR != NULL) { \
 4116|      1|        SET_SYS_FROM_WSTR(SYS_ATTR, WSTR); \
 4117|      1|    }
 4118|       |
 4119|      1|    if (config->module_search_paths_set) {
  ------------------
  |  Branch (4119:9): [True: 1, False: 0]
  ------------------
 4120|      1|        COPY_LIST("path", config->module_search_paths);
  ------------------
  |  | 4109|      1|        SET_SYS(KEY, _PyWideStringList_AsList(&(VALUE)));
  |  |  ------------------
  |  |  |  | 3954|      1|    do {                                                   \
  |  |  |  | 3955|      1|        PyObject *v = (value);                             \
  |  |  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 3957|      0|            goto err_occurred;                             \
  |  |  |  | 3958|      0|        }                                                  \
  |  |  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  |  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 3962|      0|            goto err_occurred;                             \
  |  |  |  | 3963|      0|        }                                                  \
  |  |  |  | 3964|      1|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4121|      1|    }
 4122|       |
 4123|      1|    COPY_WSTR("executable", config->executable);
  ------------------
  |  | 4115|      1|    if (WSTR != NULL) { \
  |  |  ------------------
  |  |  |  Branch (4115:9): [True: 1, False: 0]
  |  |  ------------------
  |  | 4116|      1|        SET_SYS_FROM_WSTR(SYS_ATTR, WSTR); \
  |  |  ------------------
  |  |  |  | 4112|      1|        SET_SYS(KEY, PyUnicode_FromWideChar(VALUE, -1));
  |  |  |  |  ------------------
  |  |  |  |  |  | 3954|      1|    do {                                                   \
  |  |  |  |  |  | 3955|      1|        PyObject *v = (value);                             \
  |  |  |  |  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 3957|      0|            goto err_occurred;                             \
  |  |  |  |  |  | 3958|      0|        }                                                  \
  |  |  |  |  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  |  |  |  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 3962|      0|            goto err_occurred;                             \
  |  |  |  |  |  | 3963|      0|        }                                                  \
  |  |  |  |  |  | 3964|      1|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4117|      1|    }
  ------------------
 4124|      1|    COPY_WSTR("_base_executable", config->base_executable);
  ------------------
  |  | 4115|      1|    if (WSTR != NULL) { \
  |  |  ------------------
  |  |  |  Branch (4115:9): [True: 1, False: 0]
  |  |  ------------------
  |  | 4116|      1|        SET_SYS_FROM_WSTR(SYS_ATTR, WSTR); \
  |  |  ------------------
  |  |  |  | 4112|      1|        SET_SYS(KEY, PyUnicode_FromWideChar(VALUE, -1));
  |  |  |  |  ------------------
  |  |  |  |  |  | 3954|      1|    do {                                                   \
  |  |  |  |  |  | 3955|      1|        PyObject *v = (value);                             \
  |  |  |  |  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 3957|      0|            goto err_occurred;                             \
  |  |  |  |  |  | 3958|      0|        }                                                  \
  |  |  |  |  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  |  |  |  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 3962|      0|            goto err_occurred;                             \
  |  |  |  |  |  | 3963|      0|        }                                                  \
  |  |  |  |  |  | 3964|      1|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4117|      1|    }
  ------------------
 4125|      1|    COPY_WSTR("prefix", config->prefix);
  ------------------
  |  | 4115|      1|    if (WSTR != NULL) { \
  |  |  ------------------
  |  |  |  Branch (4115:9): [True: 1, False: 0]
  |  |  ------------------
  |  | 4116|      1|        SET_SYS_FROM_WSTR(SYS_ATTR, WSTR); \
  |  |  ------------------
  |  |  |  | 4112|      1|        SET_SYS(KEY, PyUnicode_FromWideChar(VALUE, -1));
  |  |  |  |  ------------------
  |  |  |  |  |  | 3954|      1|    do {                                                   \
  |  |  |  |  |  | 3955|      1|        PyObject *v = (value);                             \
  |  |  |  |  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 3957|      0|            goto err_occurred;                             \
  |  |  |  |  |  | 3958|      0|        }                                                  \
  |  |  |  |  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  |  |  |  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 3962|      0|            goto err_occurred;                             \
  |  |  |  |  |  | 3963|      0|        }                                                  \
  |  |  |  |  |  | 3964|      1|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4117|      1|    }
  ------------------
 4126|      1|    COPY_WSTR("base_prefix", config->base_prefix);
  ------------------
  |  | 4115|      1|    if (WSTR != NULL) { \
  |  |  ------------------
  |  |  |  Branch (4115:9): [True: 1, False: 0]
  |  |  ------------------
  |  | 4116|      1|        SET_SYS_FROM_WSTR(SYS_ATTR, WSTR); \
  |  |  ------------------
  |  |  |  | 4112|      1|        SET_SYS(KEY, PyUnicode_FromWideChar(VALUE, -1));
  |  |  |  |  ------------------
  |  |  |  |  |  | 3954|      1|    do {                                                   \
  |  |  |  |  |  | 3955|      1|        PyObject *v = (value);                             \
  |  |  |  |  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 3957|      0|            goto err_occurred;                             \
  |  |  |  |  |  | 3958|      0|        }                                                  \
  |  |  |  |  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  |  |  |  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 3962|      0|            goto err_occurred;                             \
  |  |  |  |  |  | 3963|      0|        }                                                  \
  |  |  |  |  |  | 3964|      1|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4117|      1|    }
  ------------------
 4127|      1|    COPY_WSTR("exec_prefix", config->exec_prefix);
  ------------------
  |  | 4115|      1|    if (WSTR != NULL) { \
  |  |  ------------------
  |  |  |  Branch (4115:9): [True: 1, False: 0]
  |  |  ------------------
  |  | 4116|      1|        SET_SYS_FROM_WSTR(SYS_ATTR, WSTR); \
  |  |  ------------------
  |  |  |  | 4112|      1|        SET_SYS(KEY, PyUnicode_FromWideChar(VALUE, -1));
  |  |  |  |  ------------------
  |  |  |  |  |  | 3954|      1|    do {                                                   \
  |  |  |  |  |  | 3955|      1|        PyObject *v = (value);                             \
  |  |  |  |  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 3957|      0|            goto err_occurred;                             \
  |  |  |  |  |  | 3958|      0|        }                                                  \
  |  |  |  |  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  |  |  |  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 3962|      0|            goto err_occurred;                             \
  |  |  |  |  |  | 3963|      0|        }                                                  \
  |  |  |  |  |  | 3964|      1|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4117|      1|    }
  ------------------
 4128|      1|    COPY_WSTR("base_exec_prefix", config->base_exec_prefix);
  ------------------
  |  | 4115|      1|    if (WSTR != NULL) { \
  |  |  ------------------
  |  |  |  Branch (4115:9): [True: 1, False: 0]
  |  |  ------------------
  |  | 4116|      1|        SET_SYS_FROM_WSTR(SYS_ATTR, WSTR); \
  |  |  ------------------
  |  |  |  | 4112|      1|        SET_SYS(KEY, PyUnicode_FromWideChar(VALUE, -1));
  |  |  |  |  ------------------
  |  |  |  |  |  | 3954|      1|    do {                                                   \
  |  |  |  |  |  | 3955|      1|        PyObject *v = (value);                             \
  |  |  |  |  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 3957|      0|            goto err_occurred;                             \
  |  |  |  |  |  | 3958|      0|        }                                                  \
  |  |  |  |  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  |  |  |  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 3962|      0|            goto err_occurred;                             \
  |  |  |  |  |  | 3963|      0|        }                                                  \
  |  |  |  |  |  | 3964|      1|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4117|      1|    }
  ------------------
 4129|      1|    COPY_WSTR("platlibdir", config->platlibdir);
  ------------------
  |  | 4115|      1|    if (WSTR != NULL) { \
  |  |  ------------------
  |  |  |  Branch (4115:9): [True: 1, False: 0]
  |  |  ------------------
  |  | 4116|      1|        SET_SYS_FROM_WSTR(SYS_ATTR, WSTR); \
  |  |  ------------------
  |  |  |  | 4112|      1|        SET_SYS(KEY, PyUnicode_FromWideChar(VALUE, -1));
  |  |  |  |  ------------------
  |  |  |  |  |  | 3954|      1|    do {                                                   \
  |  |  |  |  |  | 3955|      1|        PyObject *v = (value);                             \
  |  |  |  |  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 3957|      0|            goto err_occurred;                             \
  |  |  |  |  |  | 3958|      0|        }                                                  \
  |  |  |  |  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  |  |  |  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  | 3962|      0|            goto err_occurred;                             \
  |  |  |  |  |  | 3963|      0|        }                                                  \
  |  |  |  |  |  | 3964|      1|    } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 4117|      1|    }
  ------------------
 4130|       |
 4131|      1|    if (config->pycache_prefix != NULL) {
  ------------------
  |  Branch (4131:9): [True: 0, False: 1]
  ------------------
 4132|      0|        SET_SYS_FROM_WSTR("pycache_prefix", config->pycache_prefix);
  ------------------
  |  | 4112|      0|        SET_SYS(KEY, PyUnicode_FromWideChar(VALUE, -1));
  |  |  ------------------
  |  |  |  | 3954|      0|    do {                                                   \
  |  |  |  | 3955|      0|        PyObject *v = (value);                             \
  |  |  |  | 3956|      0|        if (v == NULL) {                                   \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3956:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 3957|      0|            goto err_occurred;                             \
  |  |  |  | 3958|      0|        }                                                  \
  |  |  |  | 3959|      0|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  |  |  | 3960|      0|        Py_DECREF(v);                                      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 3961|      0|        if (res < 0) {                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3961:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 3962|      0|            goto err_occurred;                             \
  |  |  |  | 3963|      0|        }                                                  \
  |  |  |  | 3964|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3964:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4133|      1|    } else {
 4134|      1|        if (PyDict_SetItemString(sysdict, "pycache_prefix", Py_None) < 0) {
  ------------------
  |  |  616|      1|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (4134:13): [True: 0, False: 1]
  ------------------
 4135|      0|            return -1;
 4136|      0|        }
 4137|      1|    }
 4138|       |
 4139|      1|    COPY_LIST("argv", config->argv);
  ------------------
  |  | 4109|      1|        SET_SYS(KEY, _PyWideStringList_AsList(&(VALUE)));
  |  |  ------------------
  |  |  |  | 3954|      1|    do {                                                   \
  |  |  |  | 3955|      1|        PyObject *v = (value);                             \
  |  |  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 3957|      0|            goto err_occurred;                             \
  |  |  |  | 3958|      0|        }                                                  \
  |  |  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  |  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 3962|      0|            goto err_occurred;                             \
  |  |  |  | 3963|      0|        }                                                  \
  |  |  |  | 3964|      1|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4140|      1|    COPY_LIST("orig_argv", config->orig_argv);
  ------------------
  |  | 4109|      1|        SET_SYS(KEY, _PyWideStringList_AsList(&(VALUE)));
  |  |  ------------------
  |  |  |  | 3954|      1|    do {                                                   \
  |  |  |  | 3955|      1|        PyObject *v = (value);                             \
  |  |  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 3957|      0|            goto err_occurred;                             \
  |  |  |  | 3958|      0|        }                                                  \
  |  |  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  |  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 3962|      0|            goto err_occurred;                             \
  |  |  |  | 3963|      0|        }                                                  \
  |  |  |  | 3964|      1|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4141|      1|    COPY_LIST("warnoptions", config->warnoptions);
  ------------------
  |  | 4109|      1|        SET_SYS(KEY, _PyWideStringList_AsList(&(VALUE)));
  |  |  ------------------
  |  |  |  | 3954|      1|    do {                                                   \
  |  |  |  | 3955|      1|        PyObject *v = (value);                             \
  |  |  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 3957|      0|            goto err_occurred;                             \
  |  |  |  | 3958|      0|        }                                                  \
  |  |  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  |  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 3962|      0|            goto err_occurred;                             \
  |  |  |  | 3963|      0|        }                                                  \
  |  |  |  | 3964|      1|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4142|       |
 4143|      1|    SET_SYS("_xoptions", _PyConfig_CreateXOptionsDict(config));
  ------------------
  |  | 3954|      1|    do {                                                   \
  |  | 3955|      1|        PyObject *v = (value);                             \
  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  ------------------
  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3957|      0|            goto err_occurred;                             \
  |  | 3958|      0|        }                                                  \
  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  ------------------
  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3962|      0|            goto err_occurred;                             \
  |  | 3963|      0|        }                                                  \
  |  | 3964|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4144|       |
 4145|      1|    const wchar_t *stdlibdir = _Py_GetStdlibDir();
 4146|      1|    if (stdlibdir != NULL) {
  ------------------
  |  Branch (4146:9): [True: 1, False: 0]
  ------------------
 4147|      1|        SET_SYS_FROM_WSTR("_stdlib_dir", stdlibdir);
  ------------------
  |  | 4112|      1|        SET_SYS(KEY, PyUnicode_FromWideChar(VALUE, -1));
  |  |  ------------------
  |  |  |  | 3954|      1|    do {                                                   \
  |  |  |  | 3955|      1|        PyObject *v = (value);                             \
  |  |  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 3957|      0|            goto err_occurred;                             \
  |  |  |  | 3958|      0|        }                                                  \
  |  |  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  |  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 3962|      0|            goto err_occurred;                             \
  |  |  |  | 3963|      0|        }                                                  \
  |  |  |  | 3964|      1|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4148|      1|    }
 4149|      0|    else {
 4150|      0|        if (PyDict_SetItemString(sysdict, "_stdlib_dir", Py_None) < 0) {
  ------------------
  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  ------------------
  |  Branch (4150:13): [True: 0, False: 0]
  ------------------
 4151|      0|            return -1;
 4152|      0|        }
 4153|      0|    }
 4154|       |
 4155|      1|#undef SET_SYS_FROM_WSTR
 4156|      1|#undef COPY_LIST
 4157|      1|#undef COPY_WSTR
 4158|       |
 4159|       |    // sys.flags
 4160|      1|    PyObject *flags = PySys_GetAttrString("flags");
 4161|      1|    if (flags == NULL) {
  ------------------
  |  Branch (4161:9): [True: 0, False: 1]
  ------------------
 4162|      0|        return -1;
 4163|      0|    }
 4164|      1|    if (set_flags_from_config(interp, flags) < 0) {
  ------------------
  |  Branch (4164:9): [True: 0, False: 1]
  ------------------
 4165|      0|        Py_DECREF(flags);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4166|      0|        return -1;
 4167|      0|    }
 4168|      1|    Py_DECREF(flags);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4169|       |
 4170|      1|    SET_SYS("dont_write_bytecode", PyBool_FromLong(!config->write_bytecode));
  ------------------
  |  | 3954|      1|    do {                                                   \
  |  | 3955|      1|        PyObject *v = (value);                             \
  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  ------------------
  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3957|      0|            goto err_occurred;                             \
  |  | 3958|      0|        }                                                  \
  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  ------------------
  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3962|      0|            goto err_occurred;                             \
  |  | 3963|      0|        }                                                  \
  |  | 3964|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4171|       |
 4172|      1|    if (_PyErr_Occurred(tstate)) {
  ------------------
  |  Branch (4172:9): [True: 0, False: 1]
  ------------------
 4173|      0|        goto err_occurred;
 4174|      0|    }
 4175|       |
 4176|      1|    return 0;
 4177|       |
 4178|      0|err_occurred:
 4179|      0|    return -1;
 4180|      1|}
_PySys_Create:
 4285|      1|{
 4286|      1|    assert(!_PyErr_Occurred(tstate));
  ------------------
  |  Branch (4286:5): [True: 1, False: 0]
  ------------------
 4287|       |
 4288|      1|    PyInterpreterState *interp = tstate->interp;
 4289|       |
 4290|      1|    PyObject *modules = _PyImport_InitModules(interp);
 4291|      1|    if (modules == NULL) {
  ------------------
  |  Branch (4291:9): [True: 0, False: 1]
  ------------------
 4292|      0|        goto error;
 4293|      0|    }
 4294|       |
 4295|      1|    PyObject *sysmod = _PyModule_CreateInitialized(&sysmodule, PYTHON_API_VERSION);
  ------------------
  |  |   59|      1|#define PYTHON_API_VERSION 1013
  ------------------
 4296|      1|    if (sysmod == NULL) {
  ------------------
  |  Branch (4296:9): [True: 0, False: 1]
  ------------------
 4297|      0|        return _PyStatus_ERR("failed to create a module object");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 4298|      0|    }
 4299|       |#ifdef Py_GIL_DISABLED
 4300|       |    PyUnstable_Module_SetGIL(sysmod, Py_MOD_GIL_NOT_USED);
 4301|       |#endif
 4302|       |
 4303|      1|    PyObject *sysdict = PyModule_GetDict(sysmod);
 4304|      1|    if (sysdict == NULL) {
  ------------------
  |  Branch (4304:9): [True: 0, False: 1]
  ------------------
 4305|      0|        goto error;
 4306|      0|    }
 4307|      1|    interp->sysdict = Py_NewRef(sysdict);
  ------------------
  |  |  550|      1|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4308|       |
 4309|      1|    interp->sysdict_copy = PyDict_Copy(sysdict);
 4310|      1|    if (interp->sysdict_copy == NULL) {
  ------------------
  |  Branch (4310:9): [True: 0, False: 1]
  ------------------
 4311|      0|        goto error;
 4312|      0|    }
 4313|       |
 4314|      1|    if (PyDict_SetItemString(sysdict, "modules", modules) < 0) {
  ------------------
  |  Branch (4314:9): [True: 0, False: 1]
  ------------------
 4315|      0|        goto error;
 4316|      0|    }
 4317|       |
 4318|      1|    PyObject *lazy_modules = _PyImport_InitLazyModules(interp); // borrowed reference
 4319|      1|    if (lazy_modules == NULL) {
  ------------------
  |  Branch (4319:9): [True: 0, False: 1]
  ------------------
 4320|      0|        goto error;
 4321|      0|    }
 4322|       |
 4323|      1|    if (PyDict_SetItemString(sysdict, "lazy_modules", lazy_modules) < 0) {
  ------------------
  |  Branch (4323:9): [True: 0, False: 1]
  ------------------
 4324|      0|        goto error;
 4325|      0|    }
 4326|       |
 4327|      1|    PyStatus status = _PySys_SetPreliminaryStderr(sysdict);
 4328|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 4329|      0|        return status;
 4330|      0|    }
 4331|       |
 4332|      1|    status = _PySys_InitCore(tstate, sysdict);
 4333|      1|    if (_PyStatus_EXCEPTION(status)) {
  ------------------
  |  |   43|      1|    ((err)._type != _PyStatus_TYPE_OK)
  |  |  ------------------
  |  |  |  Branch (43:5): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 4334|      0|        return status;
 4335|      0|    }
 4336|       |
 4337|      1|    if (_PyImport_FixupBuiltin(tstate, sysmod, "sys", modules) < 0) {
  ------------------
  |  Branch (4337:9): [True: 0, False: 1]
  ------------------
 4338|      0|        goto error;
 4339|      0|    }
 4340|       |
 4341|      1|    PyObject *monitoring = _Py_CreateMonitoringObject();
 4342|      1|    if (monitoring == NULL) {
  ------------------
  |  Branch (4342:9): [True: 0, False: 1]
  ------------------
 4343|      0|        goto error;
 4344|      0|    }
 4345|      1|    int err = PyDict_SetItemString(sysdict, "monitoring", monitoring);
 4346|      1|    Py_DECREF(monitoring);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4347|      1|    if (err < 0) {
  ------------------
  |  Branch (4347:9): [True: 0, False: 1]
  ------------------
 4348|      0|        goto error;
 4349|      0|    }
 4350|       |
 4351|      1|    PyObject *_jit = _PyModule_CreateInitialized(&_jit_module, PYTHON_API_VERSION);
  ------------------
  |  |   59|      1|#define PYTHON_API_VERSION 1013
  ------------------
 4352|      1|    if (_jit == NULL) {
  ------------------
  |  Branch (4352:9): [True: 0, False: 1]
  ------------------
 4353|      0|        goto error;
 4354|      0|    }
 4355|      1|    err = PyDict_SetItemString(sysdict, "_jit", _jit);
 4356|      1|    Py_DECREF(_jit);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4357|      1|    if (err) {
  ------------------
  |  Branch (4357:9): [True: 0, False: 1]
  ------------------
 4358|      0|        goto error;
 4359|      0|    }
 4360|       |
 4361|      1|    assert(!_PyErr_Occurred(tstate));
  ------------------
  |  Branch (4361:5): [True: 1, False: 0]
  ------------------
 4362|       |
 4363|      1|    *sysmod_p = sysmod;
 4364|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 4365|       |
 4366|      0|error:
 4367|      0|    return _PyStatus_ERR("can't initialize sys module");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 4368|      1|}
sysmodule.c:sys_set_object:
  171|      6|{
  172|      6|    if (key == NULL) {
  ------------------
  |  Branch (172:9): [True: 0, False: 6]
  ------------------
  173|      0|        return -1;
  174|      0|    }
  175|      6|    PyObject *sd = interp->sysdict;
  176|      6|    if (sd == NULL) {
  ------------------
  |  Branch (176:9): [True: 0, False: 6]
  ------------------
  177|      0|        PyErr_SetString(PyExc_RuntimeError, "no sys module");
  178|      0|        return -1;
  179|      0|    }
  180|      6|    if (v == NULL) {
  ------------------
  |  Branch (180:9): [True: 0, False: 6]
  ------------------
  181|      0|        if (PyDict_Pop(sd, key, NULL) < 0) {
  ------------------
  |  Branch (181:13): [True: 0, False: 0]
  ------------------
  182|      0|            return -1;
  183|      0|        }
  184|      0|        return 0;
  185|      0|    }
  186|      6|    else {
  187|      6|        return PyDict_SetItem(sd, key, v);
  188|      6|    }
  189|      6|}
sysmodule.c:sys_set_object_str:
  200|      3|{
  201|      3|    PyObject *key = v ? PyUnicode_InternFromString(name)
  ------------------
  |  Branch (201:21): [True: 3, False: 0]
  ------------------
  202|      3|                      : PyUnicode_FromString(name);
  203|      3|    int r = sys_set_object(interp, key, v);
  204|      3|    Py_XDECREF(key);
  ------------------
  |  |  524|      3|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      3|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      3|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  205|      3|    return r;
  206|      3|}
sysmodule.c:sys_audit_tstate:
  247|     46|{
  248|     46|    assert(event != NULL);
  ------------------
  |  Branch (248:5): [True: 46, False: 0]
  ------------------
  249|     46|    assert(!argFormat || !strchr(argFormat, 'N'));
  ------------------
  |  Branch (249:5): [True: 0, False: 46]
  |  Branch (249:5): [True: 46, False: 0]
  ------------------
  250|       |
  251|     46|    if (!ts) {
  ------------------
  |  Branch (251:9): [True: 0, False: 46]
  ------------------
  252|       |        /* Audit hooks cannot be called with a NULL thread state */
  253|      0|        return 0;
  254|      0|    }
  255|       |
  256|       |    /* The current implementation cannot be called if tstate is not
  257|       |       the current Python thread state. */
  258|     46|    assert(ts == _PyThreadState_GET());
  ------------------
  |  Branch (258:5): [True: 46, False: 0]
  ------------------
  259|       |
  260|       |    /* Early exit when no hooks are registered */
  261|     46|    PyInterpreterState *is = ts->interp;
  262|     46|    if (!should_audit(is)) {
  ------------------
  |  Branch (262:9): [True: 46, False: 0]
  ------------------
  263|     46|        return 0;
  264|     46|    }
  265|       |
  266|      0|    PyObject *eventName = NULL;
  267|      0|    PyObject *eventArgs = NULL;
  268|      0|    PyObject *hooks = NULL;
  269|      0|    PyObject *hook = NULL;
  270|      0|    int res = -1;
  271|       |
  272|      0|    int dtrace = PyDTrace_AUDIT_ENABLED();
  273|       |
  274|       |
  275|      0|    PyObject *exc = _PyErr_GetRaisedException(ts);
  276|       |
  277|       |    /* Initialize event args now */
  278|      0|    if (argFormat && argFormat[0]) {
  ------------------
  |  Branch (278:9): [True: 0, False: 0]
  |  Branch (278:22): [True: 0, False: 0]
  ------------------
  279|      0|        eventArgs = Py_VaBuildValue(argFormat, vargs);
  280|      0|        if (eventArgs && !PyTuple_Check(eventArgs)) {
  ------------------
  |  |   27|      0|                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TUPLE_SUBCLASS)
  |  |  ------------------
  |  |  |  |  760|      0|#define PyType_FastSubclass(type, flag) PyType_HasFeature((type), (flag))
  |  |  ------------------
  ------------------
  |  Branch (280:13): [True: 0, False: 0]
  |  Branch (280:26): [True: 0, False: 0]
  ------------------
  281|      0|            PyObject *argTuple = PyTuple_Pack(1, eventArgs);
  282|      0|            Py_SETREF(eventArgs, argTuple);
  ------------------
  |  |  352|      0|    do { \
  |  |  353|      0|        _Py_TYPEOF(dst)* _tmp_dst_ptr = &(dst); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  354|      0|        _Py_TYPEOF(dst) _tmp_old_dst = (*_tmp_dst_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  355|      0|        *_tmp_dst_ptr = (src); \
  |  |  356|      0|        Py_DECREF(_tmp_old_dst); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  357|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (357:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  283|      0|        }
  284|      0|    }
  285|      0|    else {
  286|      0|        eventArgs = PyTuple_New(0);
  287|      0|    }
  288|      0|    if (!eventArgs) {
  ------------------
  |  Branch (288:9): [True: 0, False: 0]
  ------------------
  289|      0|        goto exit;
  290|      0|    }
  291|       |
  292|       |    /* Call global hooks
  293|       |     *
  294|       |     * We don't worry about any races on hooks getting added,
  295|       |     * since that would not leave is in an inconsistent state. */
  296|      0|    _Py_AuditHookEntry *e = is->runtime->audit_hooks.head;
  297|      0|    for (; e; e = e->next) {
  ------------------
  |  Branch (297:12): [True: 0, False: 0]
  ------------------
  298|      0|        if (e->hookCFunction(event, eventArgs, e->userData) < 0) {
  ------------------
  |  Branch (298:13): [True: 0, False: 0]
  ------------------
  299|      0|            goto exit;
  300|      0|        }
  301|      0|    }
  302|       |
  303|       |    /* Dtrace USDT point */
  304|      0|    if (dtrace) {
  ------------------
  |  Branch (304:9): [True: 0, False: 0]
  ------------------
  305|      0|        PyDTrace_AUDIT(event, (void *)eventArgs);
  306|      0|    }
  307|       |
  308|       |    /* Call interpreter hooks */
  309|      0|    if (is->audit_hooks) {
  ------------------
  |  Branch (309:9): [True: 0, False: 0]
  ------------------
  310|      0|        eventName = PyUnicode_FromString(event);
  311|      0|        if (!eventName) {
  ------------------
  |  Branch (311:13): [True: 0, False: 0]
  ------------------
  312|      0|            goto exit;
  313|      0|        }
  314|       |
  315|      0|        hooks = PyObject_GetIter(is->audit_hooks);
  316|      0|        if (!hooks) {
  ------------------
  |  Branch (316:13): [True: 0, False: 0]
  ------------------
  317|      0|            goto exit;
  318|      0|        }
  319|       |
  320|       |        /* Disallow tracing in hooks unless explicitly enabled */
  321|      0|        PyThreadState_EnterTracing(ts);
  322|      0|        while ((hook = PyIter_Next(hooks)) != NULL) {
  ------------------
  |  Branch (322:16): [True: 0, False: 0]
  ------------------
  323|      0|            PyObject *o;
  324|      0|            int canTrace = PyObject_GetOptionalAttr(hook, &_Py_ID(__cantrace__), &o);
  ------------------
  |  |  917|      0|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      0|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      0|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  325|      0|            if (o) {
  ------------------
  |  Branch (325:17): [True: 0, False: 0]
  ------------------
  326|      0|                canTrace = PyObject_IsTrue(o);
  327|      0|                Py_DECREF(o);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  328|      0|            }
  329|      0|            if (canTrace < 0) {
  ------------------
  |  Branch (329:17): [True: 0, False: 0]
  ------------------
  330|      0|                break;
  331|      0|            }
  332|      0|            if (canTrace) {
  ------------------
  |  Branch (332:17): [True: 0, False: 0]
  ------------------
  333|      0|                PyThreadState_LeaveTracing(ts);
  334|      0|            }
  335|      0|            PyObject* args[2] = {eventName, eventArgs};
  336|      0|            o = _PyObject_VectorcallTstate(ts, hook, args, 2, NULL);
  337|      0|            if (canTrace) {
  ------------------
  |  Branch (337:17): [True: 0, False: 0]
  ------------------
  338|      0|                PyThreadState_EnterTracing(ts);
  339|      0|            }
  340|      0|            if (!o) {
  ------------------
  |  Branch (340:17): [True: 0, False: 0]
  ------------------
  341|      0|                break;
  342|      0|            }
  343|      0|            Py_DECREF(o);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  344|      0|            Py_CLEAR(hook);
  ------------------
  |  |  484|      0|    do { \
  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
  345|      0|        }
  346|      0|        PyThreadState_LeaveTracing(ts);
  347|      0|        if (_PyErr_Occurred(ts)) {
  ------------------
  |  Branch (347:13): [True: 0, False: 0]
  ------------------
  348|      0|            goto exit;
  349|      0|        }
  350|      0|    }
  351|       |
  352|      0|    res = 0;
  353|       |
  354|      0|exit:
  355|      0|    Py_XDECREF(hook);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  356|      0|    Py_XDECREF(hooks);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  357|      0|    Py_XDECREF(eventName);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  358|      0|    Py_XDECREF(eventArgs);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  359|       |
  360|      0|    if (!res) {
  ------------------
  |  Branch (360:9): [True: 0, False: 0]
  ------------------
  361|      0|        _PyErr_SetRaisedException(ts, exc);
  362|      0|    }
  363|      0|    else {
  364|      0|        assert(_PyErr_Occurred(ts));
  ------------------
  |  Branch (364:9): [True: 0, False: 0]
  ------------------
  365|      0|        Py_XDECREF(exc);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  366|      0|    }
  367|       |
  368|      0|    return res;
  369|      0|}
sysmodule.c:should_audit:
  232|     70|{
  233|       |    /* interp must not be NULL, but test it just in case for extra safety */
  234|     70|    assert(interp != NULL);
  ------------------
  |  Branch (234:5): [True: 70, False: 0]
  ------------------
  235|     70|    if (!interp) {
  ------------------
  |  Branch (235:9): [True: 0, False: 70]
  ------------------
  236|      0|        return 0;
  237|      0|    }
  238|     70|    return (interp->runtime->audit_hooks.head
  ------------------
  |  Branch (238:13): [True: 0, False: 70]
  ------------------
  239|     70|            || interp->audit_hooks
  ------------------
  |  Branch (239:16): [True: 0, False: 70]
  ------------------
  240|     70|            || PyDTrace_AUDIT_ENABLED());
  ------------------
  |  Branch (240:16): [True: 0, False: 70]
  ------------------
  241|     70|}
sysmodule.c:_clear_preinit_entries:
 3077|      2|{
 3078|      2|    _Py_PreInitEntry current = *optionlist;
 3079|      2|    *optionlist = NULL;
 3080|       |    /* Deallocate the nodes and their contents using the default allocator */
 3081|      2|    while (current != NULL) {
  ------------------
  |  Branch (3081:12): [True: 0, False: 2]
  ------------------
 3082|      0|        _Py_PreInitEntry next = current->next;
 3083|      0|        _PyMem_DefaultRawFree(current->value);
 3084|      0|        _PyMem_DefaultRawFree(current);
 3085|      0|        current = next;
 3086|      0|    }
 3087|      2|}
sysmodule.c:sys_set_flag:
 3484|     44|{
 3485|     44|    assert(pos >= 0 && pos < (Py_ssize_t)(Py_ARRAY_LENGTH(flags_fields) - 1));
  ------------------
  |  Branch (3485:5): [True: 44, False: 0]
  |  Branch (3485:5): [True: 44, False: 0]
  ------------------
 3486|       |
 3487|     44|    PyObject *old_value = PyStructSequence_GET_ITEM(flags, pos);
  ------------------
  |  |   12|     44|#define PyStructSequence_GET_ITEM PyStructSequence_GetItem
  ------------------
 3488|     44|    PyStructSequence_SET_ITEM(flags, pos, Py_NewRef(value));
  ------------------
  |  |   11|     44|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  ------------------
                  PyStructSequence_SET_ITEM(flags, pos, Py_NewRef(value));
  ------------------
  |  |  550|     44|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|     44|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     44|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3489|     44|    Py_XDECREF(old_value);
  ------------------
  |  |  524|     44|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|     44|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|     44|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3490|     44|}
sysmodule.c:set_flags_from_config:
 3523|      2|{
 3524|      2|    const PyPreConfig *preconfig = &interp->runtime->preconfig;
 3525|      2|    const PyConfig *config = _PyInterpreterState_GetConfig(interp);
 3526|       |
 3527|       |    // _PySys_UpdateConfig() modifies sys.flags in-place:
 3528|       |    // Py_XDECREF() is needed in this case.
 3529|      2|    Py_ssize_t pos = 0;
 3530|      2|#define SetFlagObj(expr) \
 3531|      2|    do { \
 3532|      2|        PyObject *value = (expr); \
 3533|      2|        if (value == NULL) { \
 3534|      2|            return -1; \
 3535|      2|        } \
 3536|      2|        sys_set_flag(flags, pos, value); \
 3537|      2|        Py_DECREF(value); \
 3538|      2|        pos++; \
 3539|      2|    } while (0)
 3540|      2|#define SetFlag(expr) SetFlagObj(PyLong_FromLong(expr))
 3541|       |
 3542|      2|    SetFlag(config->parser_debug);
  ------------------
  |  | 3540|      2|#define SetFlag(expr) SetFlagObj(PyLong_FromLong(expr))
  |  |  ------------------
  |  |  |  | 3531|      2|    do { \
  |  |  |  | 3532|      2|        PyObject *value = (expr); \
  |  |  |  | 3533|      2|        if (value == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3533:13): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 3534|      0|            return -1; \
  |  |  |  | 3535|      0|        } \
  |  |  |  | 3536|      2|        sys_set_flag(flags, pos, value); \
  |  |  |  | 3537|      2|        Py_DECREF(value); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 3538|      2|        pos++; \
  |  |  |  | 3539|      2|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3539:14): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3543|      2|    SetFlag(config->inspect);
  ------------------
  |  | 3540|      2|#define SetFlag(expr) SetFlagObj(PyLong_FromLong(expr))
  |  |  ------------------
  |  |  |  | 3531|      2|    do { \
  |  |  |  | 3532|      2|        PyObject *value = (expr); \
  |  |  |  | 3533|      2|        if (value == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3533:13): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 3534|      0|            return -1; \
  |  |  |  | 3535|      0|        } \
  |  |  |  | 3536|      2|        sys_set_flag(flags, pos, value); \
  |  |  |  | 3537|      2|        Py_DECREF(value); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 3538|      2|        pos++; \
  |  |  |  | 3539|      2|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3539:14): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3544|      2|    SetFlag(config->interactive);
  ------------------
  |  | 3540|      2|#define SetFlag(expr) SetFlagObj(PyLong_FromLong(expr))
  |  |  ------------------
  |  |  |  | 3531|      2|    do { \
  |  |  |  | 3532|      2|        PyObject *value = (expr); \
  |  |  |  | 3533|      2|        if (value == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3533:13): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 3534|      0|            return -1; \
  |  |  |  | 3535|      0|        } \
  |  |  |  | 3536|      2|        sys_set_flag(flags, pos, value); \
  |  |  |  | 3537|      2|        Py_DECREF(value); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 3538|      2|        pos++; \
  |  |  |  | 3539|      2|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3539:14): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3545|      2|    SetFlag(config->optimization_level);
  ------------------
  |  | 3540|      2|#define SetFlag(expr) SetFlagObj(PyLong_FromLong(expr))
  |  |  ------------------
  |  |  |  | 3531|      2|    do { \
  |  |  |  | 3532|      2|        PyObject *value = (expr); \
  |  |  |  | 3533|      2|        if (value == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3533:13): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 3534|      0|            return -1; \
  |  |  |  | 3535|      0|        } \
  |  |  |  | 3536|      2|        sys_set_flag(flags, pos, value); \
  |  |  |  | 3537|      2|        Py_DECREF(value); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 3538|      2|        pos++; \
  |  |  |  | 3539|      2|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3539:14): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3546|      2|    SetFlag(!config->write_bytecode);
  ------------------
  |  | 3540|      2|#define SetFlag(expr) SetFlagObj(PyLong_FromLong(expr))
  |  |  ------------------
  |  |  |  | 3531|      2|    do { \
  |  |  |  | 3532|      2|        PyObject *value = (expr); \
  |  |  |  | 3533|      2|        if (value == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3533:13): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 3534|      0|            return -1; \
  |  |  |  | 3535|      0|        } \
  |  |  |  | 3536|      2|        sys_set_flag(flags, pos, value); \
  |  |  |  | 3537|      2|        Py_DECREF(value); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 3538|      2|        pos++; \
  |  |  |  | 3539|      2|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3539:14): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3547|      2|    SetFlag(!config->user_site_directory);
  ------------------
  |  | 3540|      2|#define SetFlag(expr) SetFlagObj(PyLong_FromLong(expr))
  |  |  ------------------
  |  |  |  | 3531|      2|    do { \
  |  |  |  | 3532|      2|        PyObject *value = (expr); \
  |  |  |  | 3533|      2|        if (value == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3533:13): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 3534|      0|            return -1; \
  |  |  |  | 3535|      0|        } \
  |  |  |  | 3536|      2|        sys_set_flag(flags, pos, value); \
  |  |  |  | 3537|      2|        Py_DECREF(value); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 3538|      2|        pos++; \
  |  |  |  | 3539|      2|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3539:14): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3548|      2|    SetFlag(!config->site_import);
  ------------------
  |  | 3540|      2|#define SetFlag(expr) SetFlagObj(PyLong_FromLong(expr))
  |  |  ------------------
  |  |  |  | 3531|      2|    do { \
  |  |  |  | 3532|      2|        PyObject *value = (expr); \
  |  |  |  | 3533|      2|        if (value == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3533:13): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 3534|      0|            return -1; \
  |  |  |  | 3535|      0|        } \
  |  |  |  | 3536|      2|        sys_set_flag(flags, pos, value); \
  |  |  |  | 3537|      2|        Py_DECREF(value); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 3538|      2|        pos++; \
  |  |  |  | 3539|      2|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3539:14): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3549|      2|    SetFlag(!config->use_environment);
  ------------------
  |  | 3540|      2|#define SetFlag(expr) SetFlagObj(PyLong_FromLong(expr))
  |  |  ------------------
  |  |  |  | 3531|      2|    do { \
  |  |  |  | 3532|      2|        PyObject *value = (expr); \
  |  |  |  | 3533|      2|        if (value == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3533:13): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 3534|      0|            return -1; \
  |  |  |  | 3535|      0|        } \
  |  |  |  | 3536|      2|        sys_set_flag(flags, pos, value); \
  |  |  |  | 3537|      2|        Py_DECREF(value); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 3538|      2|        pos++; \
  |  |  |  | 3539|      2|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3539:14): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3550|      2|    SetFlag(config->verbose);
  ------------------
  |  | 3540|      2|#define SetFlag(expr) SetFlagObj(PyLong_FromLong(expr))
  |  |  ------------------
  |  |  |  | 3531|      2|    do { \
  |  |  |  | 3532|      2|        PyObject *value = (expr); \
  |  |  |  | 3533|      2|        if (value == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3533:13): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 3534|      0|            return -1; \
  |  |  |  | 3535|      0|        } \
  |  |  |  | 3536|      2|        sys_set_flag(flags, pos, value); \
  |  |  |  | 3537|      2|        Py_DECREF(value); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 3538|      2|        pos++; \
  |  |  |  | 3539|      2|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3539:14): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3551|      2|    SetFlag(config->bytes_warning);
  ------------------
  |  | 3540|      2|#define SetFlag(expr) SetFlagObj(PyLong_FromLong(expr))
  |  |  ------------------
  |  |  |  | 3531|      2|    do { \
  |  |  |  | 3532|      2|        PyObject *value = (expr); \
  |  |  |  | 3533|      2|        if (value == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3533:13): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 3534|      0|            return -1; \
  |  |  |  | 3535|      0|        } \
  |  |  |  | 3536|      2|        sys_set_flag(flags, pos, value); \
  |  |  |  | 3537|      2|        Py_DECREF(value); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 3538|      2|        pos++; \
  |  |  |  | 3539|      2|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3539:14): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3552|      2|    SetFlag(config->quiet);
  ------------------
  |  | 3540|      2|#define SetFlag(expr) SetFlagObj(PyLong_FromLong(expr))
  |  |  ------------------
  |  |  |  | 3531|      2|    do { \
  |  |  |  | 3532|      2|        PyObject *value = (expr); \
  |  |  |  | 3533|      2|        if (value == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3533:13): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 3534|      0|            return -1; \
  |  |  |  | 3535|      0|        } \
  |  |  |  | 3536|      2|        sys_set_flag(flags, pos, value); \
  |  |  |  | 3537|      2|        Py_DECREF(value); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 3538|      2|        pos++; \
  |  |  |  | 3539|      2|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3539:14): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3553|      2|    SetFlag(config->use_hash_seed == 0 || config->hash_seed != 0);
  ------------------
  |  | 3540|      2|#define SetFlag(expr) SetFlagObj(PyLong_FromLong(expr))
  |  |  ------------------
  |  |  |  | 3531|      2|    do { \
  |  |  |  | 3532|      2|        PyObject *value = (expr); \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3532:28): [True: 2, False: 0]
  |  |  |  |  |  Branch (3532:28): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  | 3533|      2|        if (value == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3533:13): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 3534|      0|            return -1; \
  |  |  |  | 3535|      0|        } \
  |  |  |  | 3536|      2|        sys_set_flag(flags, pos, value); \
  |  |  |  | 3537|      2|        Py_DECREF(value); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 3538|      2|        pos++; \
  |  |  |  | 3539|      2|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3539:14): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3554|      2|    SetFlag(config->isolated);
  ------------------
  |  | 3540|      2|#define SetFlag(expr) SetFlagObj(PyLong_FromLong(expr))
  |  |  ------------------
  |  |  |  | 3531|      2|    do { \
  |  |  |  | 3532|      2|        PyObject *value = (expr); \
  |  |  |  | 3533|      2|        if (value == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3533:13): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 3534|      0|            return -1; \
  |  |  |  | 3535|      0|        } \
  |  |  |  | 3536|      2|        sys_set_flag(flags, pos, value); \
  |  |  |  | 3537|      2|        Py_DECREF(value); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 3538|      2|        pos++; \
  |  |  |  | 3539|      2|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3539:14): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3555|      2|    SetFlagObj(PyBool_FromLong(config->dev_mode));
  ------------------
  |  | 3531|      2|    do { \
  |  | 3532|      2|        PyObject *value = (expr); \
  |  | 3533|      2|        if (value == NULL) { \
  |  |  ------------------
  |  |  |  Branch (3533:13): [True: 0, False: 2]
  |  |  ------------------
  |  | 3534|      0|            return -1; \
  |  | 3535|      0|        } \
  |  | 3536|      2|        sys_set_flag(flags, pos, value); \
  |  | 3537|      2|        Py_DECREF(value); \
  |  |  ------------------
  |  |  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3538|      2|        pos++; \
  |  | 3539|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (3539:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
 3556|      2|    SetFlag(preconfig->utf8_mode);
  ------------------
  |  | 3540|      2|#define SetFlag(expr) SetFlagObj(PyLong_FromLong(expr))
  |  |  ------------------
  |  |  |  | 3531|      2|    do { \
  |  |  |  | 3532|      2|        PyObject *value = (expr); \
  |  |  |  | 3533|      2|        if (value == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3533:13): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 3534|      0|            return -1; \
  |  |  |  | 3535|      0|        } \
  |  |  |  | 3536|      2|        sys_set_flag(flags, pos, value); \
  |  |  |  | 3537|      2|        Py_DECREF(value); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 3538|      2|        pos++; \
  |  |  |  | 3539|      2|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3539:14): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3557|      2|    SetFlag(config->warn_default_encoding);
  ------------------
  |  | 3540|      2|#define SetFlag(expr) SetFlagObj(PyLong_FromLong(expr))
  |  |  ------------------
  |  |  |  | 3531|      2|    do { \
  |  |  |  | 3532|      2|        PyObject *value = (expr); \
  |  |  |  | 3533|      2|        if (value == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3533:13): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 3534|      0|            return -1; \
  |  |  |  | 3535|      0|        } \
  |  |  |  | 3536|      2|        sys_set_flag(flags, pos, value); \
  |  |  |  | 3537|      2|        Py_DECREF(value); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 3538|      2|        pos++; \
  |  |  |  | 3539|      2|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3539:14): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3558|      2|    SetFlagObj(PyBool_FromLong(config->safe_path));
  ------------------
  |  | 3531|      2|    do { \
  |  | 3532|      2|        PyObject *value = (expr); \
  |  | 3533|      2|        if (value == NULL) { \
  |  |  ------------------
  |  |  |  Branch (3533:13): [True: 0, False: 2]
  |  |  ------------------
  |  | 3534|      0|            return -1; \
  |  | 3535|      0|        } \
  |  | 3536|      2|        sys_set_flag(flags, pos, value); \
  |  | 3537|      2|        Py_DECREF(value); \
  |  |  ------------------
  |  |  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3538|      2|        pos++; \
  |  | 3539|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (3539:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
 3559|      2|    SetFlag(config->int_max_str_digits);
  ------------------
  |  | 3540|      2|#define SetFlag(expr) SetFlagObj(PyLong_FromLong(expr))
  |  |  ------------------
  |  |  |  | 3531|      2|    do { \
  |  |  |  | 3532|      2|        PyObject *value = (expr); \
  |  |  |  | 3533|      2|        if (value == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3533:13): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 3534|      0|            return -1; \
  |  |  |  | 3535|      0|        } \
  |  |  |  | 3536|      2|        sys_set_flag(flags, pos, value); \
  |  |  |  | 3537|      2|        Py_DECREF(value); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 3538|      2|        pos++; \
  |  |  |  | 3539|      2|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3539:14): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3560|       |#ifdef Py_GIL_DISABLED
 3561|       |    if (config->enable_gil == _PyConfig_GIL_DEFAULT) {
 3562|       |        SetFlagObj(Py_NewRef(Py_None));
 3563|       |    }
 3564|       |    else {
 3565|       |        SetFlag(config->enable_gil);
 3566|       |    }
 3567|       |#else
 3568|      2|    SetFlagObj(PyLong_FromLong(1));
  ------------------
  |  | 3531|      2|    do { \
  |  | 3532|      2|        PyObject *value = (expr); \
  |  | 3533|      2|        if (value == NULL) { \
  |  |  ------------------
  |  |  |  Branch (3533:13): [True: 0, False: 2]
  |  |  ------------------
  |  | 3534|      0|            return -1; \
  |  | 3535|      0|        } \
  |  | 3536|      2|        sys_set_flag(flags, pos, value); \
  |  | 3537|      2|        Py_DECREF(value); \
  |  |  ------------------
  |  |  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3538|      2|        pos++; \
  |  | 3539|      2|    } while (0)
  |  |  ------------------
  |  |  |  Branch (3539:14): [Folded, False: 2]
  |  |  ------------------
  ------------------
 3569|      2|#endif
 3570|      2|    SetFlag(config->thread_inherit_context);
  ------------------
  |  | 3540|      2|#define SetFlag(expr) SetFlagObj(PyLong_FromLong(expr))
  |  |  ------------------
  |  |  |  | 3531|      2|    do { \
  |  |  |  | 3532|      2|        PyObject *value = (expr); \
  |  |  |  | 3533|      2|        if (value == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3533:13): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 3534|      0|            return -1; \
  |  |  |  | 3535|      0|        } \
  |  |  |  | 3536|      2|        sys_set_flag(flags, pos, value); \
  |  |  |  | 3537|      2|        Py_DECREF(value); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 3538|      2|        pos++; \
  |  |  |  | 3539|      2|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3539:14): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3571|      2|    SetFlag(config->context_aware_warnings);
  ------------------
  |  | 3540|      2|#define SetFlag(expr) SetFlagObj(PyLong_FromLong(expr))
  |  |  ------------------
  |  |  |  | 3531|      2|    do { \
  |  |  |  | 3532|      2|        PyObject *value = (expr); \
  |  |  |  | 3533|      2|        if (value == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3533:13): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 3534|      0|            return -1; \
  |  |  |  | 3535|      0|        } \
  |  |  |  | 3536|      2|        sys_set_flag(flags, pos, value); \
  |  |  |  | 3537|      2|        Py_DECREF(value); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 3538|      2|        pos++; \
  |  |  |  | 3539|      2|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3539:14): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3572|      2|    SetFlag(config->lazy_imports);
  ------------------
  |  | 3540|      2|#define SetFlag(expr) SetFlagObj(PyLong_FromLong(expr))
  |  |  ------------------
  |  |  |  | 3531|      2|    do { \
  |  |  |  | 3532|      2|        PyObject *value = (expr); \
  |  |  |  | 3533|      2|        if (value == NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3533:13): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  | 3534|      0|            return -1; \
  |  |  |  | 3535|      0|        } \
  |  |  |  | 3536|      2|        sys_set_flag(flags, pos, value); \
  |  |  |  | 3537|      2|        Py_DECREF(value); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      2|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 3538|      2|        pos++; \
  |  |  |  | 3539|      2|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3539:14): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3573|      2|#undef SetFlagObj
 3574|      2|#undef SetFlag
 3575|      2|    return 0;
 3576|      2|}
sysmodule.c:sys_audit_impl:
  568|     24|{
  569|     24|    PyThreadState *tstate = _PyThreadState_GET();
  570|     24|    _Py_EnsureTstateNotNULL(tstate);
  ------------------
  |  |  196|     24|    _Py_EnsureFuncTstateNotNULL(__func__, (tstate))
  ------------------
  571|       |
  572|     24|    if (!should_audit(tstate->interp)) {
  ------------------
  |  Branch (572:9): [True: 24, False: 0]
  ------------------
  573|     24|        Py_RETURN_NONE;
  ------------------
  |  |  628|     24|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|     24|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
  574|     24|    }
  575|       |
  576|      0|    int res = _PySys_Audit(tstate, event, "O", args);
  577|      0|    if (res < 0) {
  ------------------
  |  Branch (577:9): [True: 0, False: 0]
  ------------------
  578|      0|        return NULL;
  579|      0|    }
  580|       |
  581|      0|    Py_RETURN_NONE;
  ------------------
  |  |  628|      0|#  define Py_RETURN_NONE return Py_None
  |  |  ------------------
  |  |  |  |  616|      0|#  define Py_None (&_Py_NoneStruct)
  |  |  ------------------
  ------------------
  582|      0|}
sysmodule.c:get_utf8_unicode:
  927|      2|{
  928|      2|    _Py_DECLARE_STR(utf_8, "utf-8");
  929|      2|    PyObject *ret = &_Py_STR(utf_8);
  ------------------
  |  |  919|      2|     (_Py_SINGLETON(strings.literals._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      2|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      2|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  930|      2|    return Py_NewRef(ret);
  ------------------
  |  |  550|      2|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      2|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      2|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  931|      2|}
sysmodule.c:sys_getfilesystemencoding_impl:
  955|      2|{
  956|      2|    PyInterpreterState *interp = _PyInterpreterState_GET();
  957|      2|    const PyConfig *config = _PyInterpreterState_GetConfig(interp);
  958|       |
  959|      2|    if (wcscmp(config->filesystem_encoding, L"utf-8") == 0) {
  ------------------
  |  Branch (959:9): [True: 2, False: 0]
  ------------------
  960|      2|        return get_utf8_unicode();
  961|      2|    }
  962|       |
  963|      0|    PyObject *u = PyUnicode_FromWideChar(config->filesystem_encoding, -1);
  964|      0|    if (u == NULL) {
  ------------------
  |  Branch (964:9): [True: 0, False: 0]
  ------------------
  965|      0|        return NULL;
  966|      0|    }
  967|      0|    _PyUnicode_InternImmortal(interp, &u);
  968|      0|    return u;
  969|      0|}
sysmodule.c:sys_getfilesystemencodeerrors_impl:
  980|      1|{
  981|      1|    PyInterpreterState *interp = _PyInterpreterState_GET();
  982|      1|    const PyConfig *config = _PyInterpreterState_GetConfig(interp);
  983|      1|    PyObject *u = PyUnicode_FromWideChar(config->filesystem_errors, -1);
  984|      1|    if (u == NULL) {
  ------------------
  |  Branch (984:9): [True: 0, False: 1]
  ------------------
  985|      0|        return NULL;
  986|      0|    }
  987|      1|    _PyUnicode_InternImmortal(interp, &u);
  988|      1|    return u;
  989|      1|}
sysmodule.c:sys__getframe_impl:
 2074|      1|{
 2075|      1|    PyThreadState *tstate = _PyThreadState_GET();
 2076|      1|    _PyInterpreterFrame *frame = tstate->current_frame;
 2077|       |
 2078|      1|    if (frame != NULL) {
  ------------------
  |  Branch (2078:9): [True: 1, False: 0]
  ------------------
 2079|      1|        while (depth > 0) {
  ------------------
  |  Branch (2079:16): [True: 0, False: 1]
  ------------------
 2080|      0|            frame = _PyFrame_GetFirstComplete(frame->previous);
 2081|      0|            if (frame == NULL) {
  ------------------
  |  Branch (2081:17): [True: 0, False: 0]
  ------------------
 2082|      0|                break;
 2083|      0|            }
 2084|      0|            --depth;
 2085|      0|        }
 2086|      1|    }
 2087|      1|    if (frame == NULL) {
  ------------------
  |  Branch (2087:9): [True: 0, False: 1]
  ------------------
 2088|      0|        _PyErr_SetString(tstate, PyExc_ValueError,
 2089|      0|                         "call stack is not deep enough");
 2090|      0|        return NULL;
 2091|      0|    }
 2092|       |
 2093|      1|    PyObject *pyFrame = Py_XNewRef((PyObject *)_PyFrame_GetFrameObject(frame));
  ------------------
  |  |  551|      1|#  define Py_XNewRef(obj) _Py_XNewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2094|      1|    if (pyFrame && _PySys_Audit(tstate, "sys._getframe", "(O)", pyFrame) < 0) {
  ------------------
  |  Branch (2094:9): [True: 1, False: 0]
  |  Branch (2094:20): [True: 0, False: 1]
  ------------------
 2095|      0|        Py_DECREF(pyFrame);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2096|      0|        return NULL;
 2097|      0|    }
 2098|      1|    return pyFrame;
 2099|      1|}
sysmodule.c:sys__get_cpu_count_config_impl:
 2604|      1|{
 2605|      1|    const PyConfig *config = _Py_GetConfig();
 2606|      1|    return config->cpu_count;
 2607|      1|}
sysmodule.c:_PySys_SetPreliminaryStderr:
 4192|      1|{
 4193|      1|    PyObject *pstderr = PyFile_NewStdPrinter(fileno(stderr));
 4194|      1|    if (pstderr == NULL) {
  ------------------
  |  Branch (4194:9): [True: 0, False: 1]
  ------------------
 4195|      0|        goto error;
 4196|      0|    }
 4197|      1|    if (PyDict_SetItem(sysdict, &_Py_ID(stderr), pstderr) < 0) {
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (4197:9): [True: 0, False: 1]
  ------------------
 4198|      0|        goto error;
 4199|      0|    }
 4200|      1|    if (PyDict_SetItemString(sysdict, "__stderr__", pstderr) < 0) {
  ------------------
  |  Branch (4200:9): [True: 0, False: 1]
  ------------------
 4201|      0|        goto error;
 4202|      0|    }
 4203|      1|    Py_DECREF(pstderr);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4204|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 4205|       |
 4206|      0|error:
 4207|      0|    Py_XDECREF(pstderr);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4208|      0|    return _PyStatus_ERR("can't set preliminary stderr");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 4209|      1|}
sysmodule.c:_PySys_InitCore:
 3971|      1|{
 3972|      1|    PyObject *version_info;
 3973|      1|    int res;
 3974|      1|    PyInterpreterState *interp = tstate->interp;
 3975|       |
 3976|       |    /* stdin/stdout/stderr are set in pylifecycle.c */
 3977|       |
 3978|      1|#define COPY_SYS_ATTR(tokey, fromkey) \
 3979|      1|        SET_SYS(tokey, PyMapping_GetItemString(sysdict, fromkey))
 3980|       |
 3981|      1|    COPY_SYS_ATTR("__displayhook__", "displayhook");
  ------------------
  |  | 3979|      1|        SET_SYS(tokey, PyMapping_GetItemString(sysdict, fromkey))
  |  |  ------------------
  |  |  |  | 3954|      1|    do {                                                   \
  |  |  |  | 3955|      1|        PyObject *v = (value);                             \
  |  |  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 3957|      0|            goto err_occurred;                             \
  |  |  |  | 3958|      0|        }                                                  \
  |  |  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  |  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 3962|      0|            goto err_occurred;                             \
  |  |  |  | 3963|      0|        }                                                  \
  |  |  |  | 3964|      1|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3982|      1|    COPY_SYS_ATTR("__excepthook__", "excepthook");
  ------------------
  |  | 3979|      1|        SET_SYS(tokey, PyMapping_GetItemString(sysdict, fromkey))
  |  |  ------------------
  |  |  |  | 3954|      1|    do {                                                   \
  |  |  |  | 3955|      1|        PyObject *v = (value);                             \
  |  |  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 3957|      0|            goto err_occurred;                             \
  |  |  |  | 3958|      0|        }                                                  \
  |  |  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  |  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 3962|      0|            goto err_occurred;                             \
  |  |  |  | 3963|      0|        }                                                  \
  |  |  |  | 3964|      1|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3983|      1|    COPY_SYS_ATTR("__breakpointhook__", "breakpointhook");
  ------------------
  |  | 3979|      1|        SET_SYS(tokey, PyMapping_GetItemString(sysdict, fromkey))
  |  |  ------------------
  |  |  |  | 3954|      1|    do {                                                   \
  |  |  |  | 3955|      1|        PyObject *v = (value);                             \
  |  |  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 3957|      0|            goto err_occurred;                             \
  |  |  |  | 3958|      0|        }                                                  \
  |  |  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  |  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 3962|      0|            goto err_occurred;                             \
  |  |  |  | 3963|      0|        }                                                  \
  |  |  |  | 3964|      1|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3984|      1|    COPY_SYS_ATTR("__unraisablehook__", "unraisablehook");
  ------------------
  |  | 3979|      1|        SET_SYS(tokey, PyMapping_GetItemString(sysdict, fromkey))
  |  |  ------------------
  |  |  |  | 3954|      1|    do {                                                   \
  |  |  |  | 3955|      1|        PyObject *v = (value);                             \
  |  |  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 3957|      0|            goto err_occurred;                             \
  |  |  |  | 3958|      0|        }                                                  \
  |  |  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  |  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 3962|      0|            goto err_occurred;                             \
  |  |  |  | 3963|      0|        }                                                  \
  |  |  |  | 3964|      1|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3985|       |
 3986|      1|#undef COPY_SYS_ATTR
 3987|       |
 3988|      1|    SET_SYS_FROM_STRING("version", Py_GetVersion());
  ------------------
  |  | 3967|      1|        SET_SYS(key, PyUnicode_FromString(value))
  |  |  ------------------
  |  |  |  | 3954|      1|    do {                                                   \
  |  |  |  | 3955|      1|        PyObject *v = (value);                             \
  |  |  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 3957|      0|            goto err_occurred;                             \
  |  |  |  | 3958|      0|        }                                                  \
  |  |  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  |  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 3962|      0|            goto err_occurred;                             \
  |  |  |  | 3963|      0|        }                                                  \
  |  |  |  | 3964|      1|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3989|      1|    SET_SYS("hexversion", PyLong_FromLong(PY_VERSION_HEX));
  ------------------
  |  | 3954|      1|    do {                                                   \
  |  | 3955|      1|        PyObject *v = (value);                             \
  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  ------------------
  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3957|      0|            goto err_occurred;                             \
  |  | 3958|      0|        }                                                  \
  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  ------------------
  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3962|      0|            goto err_occurred;                             \
  |  | 3963|      0|        }                                                  \
  |  | 3964|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
 3990|      1|    SET_SYS("_git", Py_BuildValue("(szz)", "CPython", _Py_gitidentifier(),
  ------------------
  |  | 3954|      1|    do {                                                   \
  |  | 3955|      1|        PyObject *v = (value);                             \
  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  ------------------
  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3957|      0|            goto err_occurred;                             \
  |  | 3958|      0|        }                                                  \
  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  ------------------
  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3962|      0|            goto err_occurred;                             \
  |  | 3963|      0|        }                                                  \
  |  | 3964|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
 3991|      1|                                  _Py_gitversion()));
 3992|      1|    SET_SYS_FROM_STRING("_framework", _PYTHONFRAMEWORK);
  ------------------
  |  | 3967|      1|        SET_SYS(key, PyUnicode_FromString(value))
  |  |  ------------------
  |  |  |  | 3954|      1|    do {                                                   \
  |  |  |  | 3955|      1|        PyObject *v = (value);                             \
  |  |  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 3957|      0|            goto err_occurred;                             \
  |  |  |  | 3958|      0|        }                                                  \
  |  |  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  |  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 3962|      0|            goto err_occurred;                             \
  |  |  |  | 3963|      0|        }                                                  \
  |  |  |  | 3964|      1|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3993|      1|    SET_SYS("api_version", PyLong_FromLong(PYTHON_API_VERSION));
  ------------------
  |  | 3954|      1|    do {                                                   \
  |  | 3955|      1|        PyObject *v = (value);                             \
  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  ------------------
  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3957|      0|            goto err_occurred;                             \
  |  | 3958|      0|        }                                                  \
  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  ------------------
  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3962|      0|            goto err_occurred;                             \
  |  | 3963|      0|        }                                                  \
  |  | 3964|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
 3994|      1|    SET_SYS_FROM_STRING("copyright", Py_GetCopyright());
  ------------------
  |  | 3967|      1|        SET_SYS(key, PyUnicode_FromString(value))
  |  |  ------------------
  |  |  |  | 3954|      1|    do {                                                   \
  |  |  |  | 3955|      1|        PyObject *v = (value);                             \
  |  |  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 3957|      0|            goto err_occurred;                             \
  |  |  |  | 3958|      0|        }                                                  \
  |  |  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  |  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 3962|      0|            goto err_occurred;                             \
  |  |  |  | 3963|      0|        }                                                  \
  |  |  |  | 3964|      1|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3995|      1|    SET_SYS_FROM_STRING("platform", Py_GetPlatform());
  ------------------
  |  | 3967|      1|        SET_SYS(key, PyUnicode_FromString(value))
  |  |  ------------------
  |  |  |  | 3954|      1|    do {                                                   \
  |  |  |  | 3955|      1|        PyObject *v = (value);                             \
  |  |  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 3957|      0|            goto err_occurred;                             \
  |  |  |  | 3958|      0|        }                                                  \
  |  |  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  |  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 3962|      0|            goto err_occurred;                             \
  |  |  |  | 3963|      0|        }                                                  \
  |  |  |  | 3964|      1|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3996|      1|    SET_SYS("maxsize", PyLong_FromSsize_t(PY_SSIZE_T_MAX));
  ------------------
  |  | 3954|      1|    do {                                                   \
  |  | 3955|      1|        PyObject *v = (value);                             \
  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  ------------------
  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3957|      0|            goto err_occurred;                             \
  |  | 3958|      0|        }                                                  \
  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  ------------------
  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3962|      0|            goto err_occurred;                             \
  |  | 3963|      0|        }                                                  \
  |  | 3964|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
 3997|      1|    SET_SYS("float_info", PyFloat_GetInfo());
  ------------------
  |  | 3954|      1|    do {                                                   \
  |  | 3955|      1|        PyObject *v = (value);                             \
  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  ------------------
  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3957|      0|            goto err_occurred;                             \
  |  | 3958|      0|        }                                                  \
  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  ------------------
  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3962|      0|            goto err_occurred;                             \
  |  | 3963|      0|        }                                                  \
  |  | 3964|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
 3998|      1|    SET_SYS("int_info", PyLong_GetInfo());
  ------------------
  |  | 3954|      1|    do {                                                   \
  |  | 3955|      1|        PyObject *v = (value);                             \
  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  ------------------
  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3957|      0|            goto err_occurred;                             \
  |  | 3958|      0|        }                                                  \
  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  ------------------
  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3962|      0|            goto err_occurred;                             \
  |  | 3963|      0|        }                                                  \
  |  | 3964|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
 3999|       |    /* initialize hash_info */
 4000|      1|    if (_PyStructSequence_InitBuiltin(interp, &Hash_InfoType,
  ------------------
  |  Branch (4000:9): [True: 0, False: 1]
  ------------------
 4001|      1|                                      &hash_info_desc) < 0)
 4002|      0|    {
 4003|      0|        goto type_init_failed;
 4004|      0|    }
 4005|      1|    SET_SYS("hash_info", get_hash_info(tstate));
  ------------------
  |  | 3954|      1|    do {                                                   \
  |  | 3955|      1|        PyObject *v = (value);                             \
  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  ------------------
  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3957|      0|            goto err_occurred;                             \
  |  | 3958|      0|        }                                                  \
  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  ------------------
  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3962|      0|            goto err_occurred;                             \
  |  | 3963|      0|        }                                                  \
  |  | 3964|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4006|      1|    SET_SYS("maxunicode", PyLong_FromLong(0x10FFFF));
  ------------------
  |  | 3954|      1|    do {                                                   \
  |  | 3955|      1|        PyObject *v = (value);                             \
  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  ------------------
  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3957|      0|            goto err_occurred;                             \
  |  | 3958|      0|        }                                                  \
  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  ------------------
  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3962|      0|            goto err_occurred;                             \
  |  | 3963|      0|        }                                                  \
  |  | 3964|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4007|      1|    SET_SYS("builtin_module_names", list_builtin_module_names());
  ------------------
  |  | 3954|      1|    do {                                                   \
  |  | 3955|      1|        PyObject *v = (value);                             \
  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  ------------------
  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3957|      0|            goto err_occurred;                             \
  |  | 3958|      0|        }                                                  \
  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  ------------------
  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3962|      0|            goto err_occurred;                             \
  |  | 3963|      0|        }                                                  \
  |  | 3964|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4008|      1|    SET_SYS("stdlib_module_names", list_stdlib_module_names());
  ------------------
  |  | 3954|      1|    do {                                                   \
  |  | 3955|      1|        PyObject *v = (value);                             \
  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  ------------------
  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3957|      0|            goto err_occurred;                             \
  |  | 3958|      0|        }                                                  \
  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  ------------------
  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3962|      0|            goto err_occurred;                             \
  |  | 3963|      0|        }                                                  \
  |  | 3964|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4009|       |#if PY_BIG_ENDIAN
 4010|       |    SET_SYS("byteorder", &_Py_ID(big));
 4011|       |#else
 4012|      1|    SET_SYS("byteorder", &_Py_ID(little));
  ------------------
  |  | 3954|      1|    do {                                                   \
  |  | 3955|      1|        PyObject *v = (value);                             \
  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  ------------------
  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3957|      0|            goto err_occurred;                             \
  |  | 3958|      0|        }                                                  \
  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  ------------------
  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3962|      0|            goto err_occurred;                             \
  |  | 3963|      0|        }                                                  \
  |  | 3964|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4013|      1|#endif
 4014|       |
 4015|       |#ifdef MS_COREDLL
 4016|       |    SET_SYS("dllhandle", PyLong_FromVoidPtr(PyWin_DLLhModule));
 4017|       |    SET_SYS_FROM_STRING("winver", PyWin_DLLVersionString);
 4018|       |#endif
 4019|      1|#ifdef ABIFLAGS
 4020|      1|    SET_SYS_FROM_STRING("abiflags", ABIFLAGS);
  ------------------
  |  | 3967|      1|        SET_SYS(key, PyUnicode_FromString(value))
  |  |  ------------------
  |  |  |  | 3954|      1|    do {                                                   \
  |  |  |  | 3955|      1|        PyObject *v = (value);                             \
  |  |  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 3957|      0|            goto err_occurred;                             \
  |  |  |  | 3958|      0|        }                                                  \
  |  |  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  |  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  |  |  ------------------
  |  |  |  | 3962|      0|            goto err_occurred;                             \
  |  |  |  | 3963|      0|        }                                                  \
  |  |  |  | 3964|      1|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4021|      1|#endif
 4022|       |
 4023|      1|#define ENSURE_INFO_TYPE(TYPE, DESC) \
 4024|      1|    do { \
 4025|      1|        if (_PyStructSequence_InitBuiltinWithFlags( \
 4026|      1|                interp, &TYPE, &DESC, Py_TPFLAGS_DISALLOW_INSTANTIATION) < 0) { \
 4027|      1|            goto type_init_failed; \
 4028|      1|        } \
 4029|      1|    } while (0)
 4030|       |
 4031|       |    /* version_info */
 4032|      1|    ENSURE_INFO_TYPE(VersionInfoType, version_info_desc);
  ------------------
  |  | 4024|      1|    do { \
  |  | 4025|      1|        if (_PyStructSequence_InitBuiltinWithFlags( \
  |  |  ------------------
  |  |  |  Branch (4025:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 4026|      1|                interp, &TYPE, &DESC, Py_TPFLAGS_DISALLOW_INSTANTIATION) < 0) { \
  |  |  ------------------
  |  |  |  |  497|      1|#define Py_TPFLAGS_DISALLOW_INSTANTIATION (1UL << 7)
  |  |  ------------------
  |  | 4027|      0|            goto type_init_failed; \
  |  | 4028|      0|        } \
  |  | 4029|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (4029:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4033|      1|    version_info = make_version_info(tstate);
 4034|      1|    SET_SYS("version_info", version_info);
  ------------------
  |  | 3954|      1|    do {                                                   \
  |  | 3955|      1|        PyObject *v = (value);                             \
  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  ------------------
  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3957|      0|            goto err_occurred;                             \
  |  | 3958|      0|        }                                                  \
  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  ------------------
  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3962|      0|            goto err_occurred;                             \
  |  | 3963|      0|        }                                                  \
  |  | 3964|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4035|       |
 4036|       |    /* implementation */
 4037|      1|    SET_SYS("implementation", make_impl_info(version_info));
  ------------------
  |  | 3954|      1|    do {                                                   \
  |  | 3955|      1|        PyObject *v = (value);                             \
  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  ------------------
  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3957|      0|            goto err_occurred;                             \
  |  | 3958|      0|        }                                                  \
  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  ------------------
  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3962|      0|            goto err_occurred;                             \
  |  | 3963|      0|        }                                                  \
  |  | 3964|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4038|       |
 4039|       |    // sys.flags: updated in-place later by _PySys_UpdateConfig()
 4040|      1|    ENSURE_INFO_TYPE(FlagsType, flags_desc);
  ------------------
  |  | 4024|      1|    do { \
  |  | 4025|      1|        if (_PyStructSequence_InitBuiltinWithFlags( \
  |  |  ------------------
  |  |  |  Branch (4025:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 4026|      1|                interp, &TYPE, &DESC, Py_TPFLAGS_DISALLOW_INSTANTIATION) < 0) { \
  |  |  ------------------
  |  |  |  |  497|      1|#define Py_TPFLAGS_DISALLOW_INSTANTIATION (1UL << 7)
  |  |  ------------------
  |  | 4027|      0|            goto type_init_failed; \
  |  | 4028|      0|        } \
  |  | 4029|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (4029:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4041|      1|    SET_SYS("flags", make_flags(tstate->interp));
  ------------------
  |  | 3954|      1|    do {                                                   \
  |  | 3955|      1|        PyObject *v = (value);                             \
  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  ------------------
  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3957|      0|            goto err_occurred;                             \
  |  | 3958|      0|        }                                                  \
  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  ------------------
  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3962|      0|            goto err_occurred;                             \
  |  | 3963|      0|        }                                                  \
  |  | 3964|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4042|       |
 4043|       |#if defined(MS_WINDOWS)
 4044|       |    /* getwindowsversion */
 4045|       |    ENSURE_INFO_TYPE(WindowsVersionType, windows_version_desc);
 4046|       |
 4047|       |    SET_SYS_FROM_STRING("_vpath", VPATH);
 4048|       |#endif
 4049|       |
 4050|      1|#undef ENSURE_INFO_TYPE
 4051|       |
 4052|       |    /* float repr style: 0.03 (short) vs 0.029999999999999999 (legacy) */
 4053|      1|#if _PY_SHORT_FLOAT_REPR == 1
 4054|      1|    SET_SYS("float_repr_style", &_Py_ID(short));
  ------------------
  |  | 3954|      1|    do {                                                   \
  |  | 3955|      1|        PyObject *v = (value);                             \
  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  ------------------
  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3957|      0|            goto err_occurred;                             \
  |  | 3958|      0|        }                                                  \
  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  ------------------
  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3962|      0|            goto err_occurred;                             \
  |  | 3963|      0|        }                                                  \
  |  | 3964|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4055|       |#else
 4056|       |    SET_SYS("float_repr_style", &_Py_ID(legacy));
 4057|       |#endif
 4058|       |
 4059|      1|    SET_SYS("thread_info", PyThread_GetInfo());
  ------------------
  |  | 3954|      1|    do {                                                   \
  |  | 3955|      1|        PyObject *v = (value);                             \
  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  ------------------
  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3957|      0|            goto err_occurred;                             \
  |  | 3958|      0|        }                                                  \
  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  ------------------
  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3962|      0|            goto err_occurred;                             \
  |  | 3963|      0|        }                                                  \
  |  | 3964|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4060|       |
 4061|      1|    SET_SYS("abi_info", make_abi_info());
  ------------------
  |  | 3954|      1|    do {                                                   \
  |  | 3955|      1|        PyObject *v = (value);                             \
  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  ------------------
  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3957|      0|            goto err_occurred;                             \
  |  | 3958|      0|        }                                                  \
  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  ------------------
  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3962|      0|            goto err_occurred;                             \
  |  | 3963|      0|        }                                                  \
  |  | 3964|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4062|       |
 4063|       |    /* initialize asyncgen_hooks */
 4064|      1|    if (_PyStructSequence_InitBuiltin(interp, &AsyncGenHooksType,
  ------------------
  |  Branch (4064:9): [True: 0, False: 1]
  ------------------
 4065|      1|                                      &asyncgen_hooks_desc) < 0)
 4066|      0|    {
 4067|      0|        goto type_init_failed;
 4068|      0|    }
 4069|       |
 4070|       |#ifdef __EMSCRIPTEN__
 4071|       |    if (EmscriptenInfoType == NULL) {
 4072|       |        EmscriptenInfoType = PyStructSequence_NewType(&emscripten_info_desc);
 4073|       |        if (EmscriptenInfoType == NULL) {
 4074|       |            goto type_init_failed;
 4075|       |        }
 4076|       |    }
 4077|       |    SET_SYS("_emscripten_info", make_emscripten_info());
 4078|       |#endif
 4079|       |
 4080|       |    /* adding sys.path_hooks and sys.path_importer_cache */
 4081|      1|    SET_SYS("meta_path", PyList_New(0));
  ------------------
  |  | 3954|      1|    do {                                                   \
  |  | 3955|      1|        PyObject *v = (value);                             \
  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  ------------------
  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3957|      0|            goto err_occurred;                             \
  |  | 3958|      0|        }                                                  \
  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  ------------------
  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3962|      0|            goto err_occurred;                             \
  |  | 3963|      0|        }                                                  \
  |  | 3964|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4082|      1|    SET_SYS("path_importer_cache", PyDict_New());
  ------------------
  |  | 3954|      1|    do {                                                   \
  |  | 3955|      1|        PyObject *v = (value);                             \
  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  ------------------
  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3957|      0|            goto err_occurred;                             \
  |  | 3958|      0|        }                                                  \
  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  ------------------
  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3962|      0|            goto err_occurred;                             \
  |  | 3963|      0|        }                                                  \
  |  | 3964|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4083|      1|    SET_SYS("path_hooks", PyList_New(0));
  ------------------
  |  | 3954|      1|    do {                                                   \
  |  | 3955|      1|        PyObject *v = (value);                             \
  |  | 3956|      1|        if (v == NULL) {                                   \
  |  |  ------------------
  |  |  |  Branch (3956:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3957|      0|            goto err_occurred;                             \
  |  | 3958|      0|        }                                                  \
  |  | 3959|      1|        res = PyDict_SetItemString(sysdict, key, v);       \
  |  | 3960|      1|        Py_DECREF(v);                                      \
  |  |  ------------------
  |  |  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 3961|      1|        if (res < 0) {                                     \
  |  |  ------------------
  |  |  |  Branch (3961:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 3962|      0|            goto err_occurred;                             \
  |  | 3963|      0|        }                                                  \
  |  | 3964|      1|    } while (0)
  |  |  ------------------
  |  |  |  Branch (3964:14): [Folded, False: 1]
  |  |  ------------------
  ------------------
 4084|       |
 4085|      1|    if (_PyErr_Occurred(tstate)) {
  ------------------
  |  Branch (4085:9): [True: 0, False: 1]
  ------------------
 4086|      0|        goto err_occurred;
 4087|      0|    }
 4088|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
 4089|       |
 4090|      0|type_init_failed:
 4091|      0|    return _PyStatus_ERR("failed to initialize a type");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 4092|       |
 4093|      0|err_occurred:
 4094|      0|    return _PyStatus_ERR("can't initialize sys module");
  ------------------
  |  |   27|      0|    (PyStatus){ \
  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  ------------------
  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  ------------------
  |  |   30|      0|        .err_msg = (ERR_MSG)}
  ------------------
 4095|      1|}
sysmodule.c:get_hash_info:
 1570|      1|{
 1571|      1|    PyObject *hash_info;
 1572|      1|    int field = 0;
 1573|      1|    PyHash_FuncDef *hashfunc;
 1574|      1|    hash_info = PyStructSequence_New(&Hash_InfoType);
 1575|      1|    if (hash_info == NULL) {
  ------------------
  |  Branch (1575:9): [True: 0, False: 1]
  ------------------
 1576|      0|        return NULL;
 1577|      0|    }
 1578|      1|    hashfunc = PyHash_GetFuncDef();
 1579|       |
 1580|      1|#define SET_HASH_INFO_ITEM(CALL)                             \
 1581|      1|    do {                                                     \
 1582|      1|        PyObject *item = (CALL);                             \
 1583|      1|        if (item == NULL) {                                  \
 1584|      1|            Py_CLEAR(hash_info);                             \
 1585|      1|            return NULL;                                     \
 1586|      1|        }                                                    \
 1587|      1|        PyStructSequence_SET_ITEM(hash_info, field++, item); \
 1588|      1|    } while(0)
 1589|       |
 1590|      1|    SET_HASH_INFO_ITEM(PyLong_FromLong(8 * sizeof(Py_hash_t)));
  ------------------
  |  | 1581|      1|    do {                                                     \
  |  | 1582|      1|        PyObject *item = (CALL);                             \
  |  | 1583|      1|        if (item == NULL) {                                  \
  |  |  ------------------
  |  |  |  Branch (1583:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 1584|      0|            Py_CLEAR(hash_info);                             \
  |  |  ------------------
  |  |  |  |  484|      0|    do { \
  |  |  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  ------------------
  |  |  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  ------------------
  |  |  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  |  |  ------------------
  |  |  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  490|      0|        } \
  |  |  |  |  491|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1585|      0|            return NULL;                                     \
  |  | 1586|      0|        }                                                    \
  |  | 1587|      1|        PyStructSequence_SET_ITEM(hash_info, field++, item); \
  |  |  ------------------
  |  |  |  |   11|      1|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  |  |  ------------------
  |  | 1588|      1|    } while(0)
  |  |  ------------------
  |  |  |  Branch (1588:13): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1591|      1|    SET_HASH_INFO_ITEM(PyLong_FromSsize_t(PyHASH_MODULUS));
  ------------------
  |  | 1581|      1|    do {                                                     \
  |  | 1582|      1|        PyObject *item = (CALL);                             \
  |  | 1583|      1|        if (item == NULL) {                                  \
  |  |  ------------------
  |  |  |  Branch (1583:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 1584|      0|            Py_CLEAR(hash_info);                             \
  |  |  ------------------
  |  |  |  |  484|      0|    do { \
  |  |  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  ------------------
  |  |  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  ------------------
  |  |  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  |  |  ------------------
  |  |  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  490|      0|        } \
  |  |  |  |  491|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1585|      0|            return NULL;                                     \
  |  | 1586|      0|        }                                                    \
  |  | 1587|      1|        PyStructSequence_SET_ITEM(hash_info, field++, item); \
  |  |  ------------------
  |  |  |  |   11|      1|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  |  |  ------------------
  |  | 1588|      1|    } while(0)
  |  |  ------------------
  |  |  |  Branch (1588:13): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1592|      1|    SET_HASH_INFO_ITEM(PyLong_FromLong(PyHASH_INF));
  ------------------
  |  | 1581|      1|    do {                                                     \
  |  | 1582|      1|        PyObject *item = (CALL);                             \
  |  | 1583|      1|        if (item == NULL) {                                  \
  |  |  ------------------
  |  |  |  Branch (1583:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 1584|      0|            Py_CLEAR(hash_info);                             \
  |  |  ------------------
  |  |  |  |  484|      0|    do { \
  |  |  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  ------------------
  |  |  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  ------------------
  |  |  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  |  |  ------------------
  |  |  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  490|      0|        } \
  |  |  |  |  491|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1585|      0|            return NULL;                                     \
  |  | 1586|      0|        }                                                    \
  |  | 1587|      1|        PyStructSequence_SET_ITEM(hash_info, field++, item); \
  |  |  ------------------
  |  |  |  |   11|      1|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  |  |  ------------------
  |  | 1588|      1|    } while(0)
  |  |  ------------------
  |  |  |  Branch (1588:13): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1593|      1|    SET_HASH_INFO_ITEM(PyLong_FromLong(0));  // This is no longer used
  ------------------
  |  | 1581|      1|    do {                                                     \
  |  | 1582|      1|        PyObject *item = (CALL);                             \
  |  | 1583|      1|        if (item == NULL) {                                  \
  |  |  ------------------
  |  |  |  Branch (1583:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 1584|      0|            Py_CLEAR(hash_info);                             \
  |  |  ------------------
  |  |  |  |  484|      0|    do { \
  |  |  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  ------------------
  |  |  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  ------------------
  |  |  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  |  |  ------------------
  |  |  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  490|      0|        } \
  |  |  |  |  491|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1585|      0|            return NULL;                                     \
  |  | 1586|      0|        }                                                    \
  |  | 1587|      1|        PyStructSequence_SET_ITEM(hash_info, field++, item); \
  |  |  ------------------
  |  |  |  |   11|      1|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  |  |  ------------------
  |  | 1588|      1|    } while(0)
  |  |  ------------------
  |  |  |  Branch (1588:13): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1594|      1|    SET_HASH_INFO_ITEM(PyLong_FromLong(PyHASH_IMAG));
  ------------------
  |  | 1581|      1|    do {                                                     \
  |  | 1582|      1|        PyObject *item = (CALL);                             \
  |  | 1583|      1|        if (item == NULL) {                                  \
  |  |  ------------------
  |  |  |  Branch (1583:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 1584|      0|            Py_CLEAR(hash_info);                             \
  |  |  ------------------
  |  |  |  |  484|      0|    do { \
  |  |  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  ------------------
  |  |  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  ------------------
  |  |  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  |  |  ------------------
  |  |  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  490|      0|        } \
  |  |  |  |  491|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1585|      0|            return NULL;                                     \
  |  | 1586|      0|        }                                                    \
  |  | 1587|      1|        PyStructSequence_SET_ITEM(hash_info, field++, item); \
  |  |  ------------------
  |  |  |  |   11|      1|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  |  |  ------------------
  |  | 1588|      1|    } while(0)
  |  |  ------------------
  |  |  |  Branch (1588:13): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1595|      1|    SET_HASH_INFO_ITEM(PyUnicode_FromString(hashfunc->name));
  ------------------
  |  | 1581|      1|    do {                                                     \
  |  | 1582|      1|        PyObject *item = (CALL);                             \
  |  | 1583|      1|        if (item == NULL) {                                  \
  |  |  ------------------
  |  |  |  Branch (1583:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 1584|      0|            Py_CLEAR(hash_info);                             \
  |  |  ------------------
  |  |  |  |  484|      0|    do { \
  |  |  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  ------------------
  |  |  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  ------------------
  |  |  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  |  |  ------------------
  |  |  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  490|      0|        } \
  |  |  |  |  491|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1585|      0|            return NULL;                                     \
  |  | 1586|      0|        }                                                    \
  |  | 1587|      1|        PyStructSequence_SET_ITEM(hash_info, field++, item); \
  |  |  ------------------
  |  |  |  |   11|      1|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  |  |  ------------------
  |  | 1588|      1|    } while(0)
  |  |  ------------------
  |  |  |  Branch (1588:13): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1596|      1|    SET_HASH_INFO_ITEM(PyLong_FromLong(hashfunc->hash_bits));
  ------------------
  |  | 1581|      1|    do {                                                     \
  |  | 1582|      1|        PyObject *item = (CALL);                             \
  |  | 1583|      1|        if (item == NULL) {                                  \
  |  |  ------------------
  |  |  |  Branch (1583:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 1584|      0|            Py_CLEAR(hash_info);                             \
  |  |  ------------------
  |  |  |  |  484|      0|    do { \
  |  |  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  ------------------
  |  |  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  ------------------
  |  |  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  |  |  ------------------
  |  |  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  490|      0|        } \
  |  |  |  |  491|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1585|      0|            return NULL;                                     \
  |  | 1586|      0|        }                                                    \
  |  | 1587|      1|        PyStructSequence_SET_ITEM(hash_info, field++, item); \
  |  |  ------------------
  |  |  |  |   11|      1|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  |  |  ------------------
  |  | 1588|      1|    } while(0)
  |  |  ------------------
  |  |  |  Branch (1588:13): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1597|      1|    SET_HASH_INFO_ITEM(PyLong_FromLong(hashfunc->seed_bits));
  ------------------
  |  | 1581|      1|    do {                                                     \
  |  | 1582|      1|        PyObject *item = (CALL);                             \
  |  | 1583|      1|        if (item == NULL) {                                  \
  |  |  ------------------
  |  |  |  Branch (1583:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 1584|      0|            Py_CLEAR(hash_info);                             \
  |  |  ------------------
  |  |  |  |  484|      0|    do { \
  |  |  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  ------------------
  |  |  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  ------------------
  |  |  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  |  |  ------------------
  |  |  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  490|      0|        } \
  |  |  |  |  491|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1585|      0|            return NULL;                                     \
  |  | 1586|      0|        }                                                    \
  |  | 1587|      1|        PyStructSequence_SET_ITEM(hash_info, field++, item); \
  |  |  ------------------
  |  |  |  |   11|      1|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  |  |  ------------------
  |  | 1588|      1|    } while(0)
  |  |  ------------------
  |  |  |  Branch (1588:13): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1598|      1|    SET_HASH_INFO_ITEM(PyLong_FromLong(Py_HASH_CUTOFF));
  ------------------
  |  | 1581|      1|    do {                                                     \
  |  | 1582|      1|        PyObject *item = (CALL);                             \
  |  | 1583|      1|        if (item == NULL) {                                  \
  |  |  ------------------
  |  |  |  Branch (1583:13): [True: 0, False: 1]
  |  |  ------------------
  |  | 1584|      0|            Py_CLEAR(hash_info);                             \
  |  |  ------------------
  |  |  |  |  484|      0|    do { \
  |  |  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  ------------------
  |  |  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  |  |  ------------------
  |  |  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  |  |  ------------------
  |  |  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  |  |  ------------------
  |  |  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  490|      0|        } \
  |  |  |  |  491|      0|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  | 1585|      0|            return NULL;                                     \
  |  | 1586|      0|        }                                                    \
  |  | 1587|      1|        PyStructSequence_SET_ITEM(hash_info, field++, item); \
  |  |  ------------------
  |  |  |  |   11|      1|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  |  |  ------------------
  |  | 1588|      1|    } while(0)
  |  |  ------------------
  |  |  |  Branch (1588:13): [Folded, False: 1]
  |  |  ------------------
  ------------------
 1599|       |
 1600|      1|#undef SET_HASH_INFO_ITEM
 1601|       |
 1602|      1|    return hash_info;
 1603|      1|}
sysmodule.c:list_builtin_module_names:
 2965|      1|{
 2966|      1|    PyObject *list = _PyImport_GetBuiltinModuleNames();
 2967|      1|    if (list == NULL) {
  ------------------
  |  Branch (2967:9): [True: 0, False: 1]
  ------------------
 2968|      0|        return NULL;
 2969|      0|    }
 2970|      1|    if (PyList_Sort(list) != 0) {
  ------------------
  |  Branch (2970:9): [True: 0, False: 1]
  ------------------
 2971|      0|        goto error;
 2972|      0|    }
 2973|      1|    PyObject *tuple = PyList_AsTuple(list);
 2974|      1|    Py_DECREF(list);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2975|      1|    return tuple;
 2976|       |
 2977|      0|error:
 2978|      0|    Py_DECREF(list);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2979|       |    return NULL;
 2980|      1|}
sysmodule.c:list_stdlib_module_names:
 2985|      1|{
 2986|      1|    Py_ssize_t len = Py_ARRAY_LENGTH(_Py_stdlib_module_names);
  ------------------
  |  |  196|      1|    (sizeof(array) / sizeof((array)[0]))
  ------------------
 2987|      1|    PyObject *names = PyTuple_New(len);
 2988|      1|    if (names == NULL) {
  ------------------
  |  Branch (2988:9): [True: 0, False: 1]
  ------------------
 2989|      0|        return NULL;
 2990|      0|    }
 2991|       |
 2992|    297|    for (Py_ssize_t i = 0; i < len; i++) {
  ------------------
  |  Branch (2992:28): [True: 296, False: 1]
  ------------------
 2993|    296|        PyObject *name = PyUnicode_FromString(_Py_stdlib_module_names[i]);
 2994|    296|        if (name == NULL) {
  ------------------
  |  Branch (2994:13): [True: 0, False: 296]
  ------------------
 2995|      0|            Py_DECREF(names);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2996|      0|            return NULL;
 2997|      0|        }
 2998|    296|        PyTuple_SET_ITEM(names, i, name);
  ------------------
  |  |   40|    296|    PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|    296|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    296|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   PyTuple_SET_ITEM(_PyObject_CAST(op), (index), _PyObject_CAST(value))
  |  |  ------------------
  |  |  |  |  171|    296|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    296|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2999|    296|    }
 3000|       |
 3001|      1|    PyObject *set = PyObject_CallFunction((PyObject *)&PyFrozenSet_Type,
 3002|      1|                                          "(O)", names);
 3003|      1|    Py_DECREF(names);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3004|      1|    return set;
 3005|      1|}
sysmodule.c:make_version_info:
 3620|      1|{
 3621|      1|    PyObject *version_info;
 3622|      1|    char *s;
 3623|      1|    int pos = 0;
 3624|       |
 3625|      1|    version_info = PyStructSequence_New(&VersionInfoType);
 3626|      1|    if (version_info == NULL) {
  ------------------
  |  Branch (3626:9): [True: 0, False: 1]
  ------------------
 3627|      0|        return NULL;
 3628|      0|    }
 3629|       |
 3630|       |    /*
 3631|       |     * These release level checks are mutually exclusive and cover
 3632|       |     * the field, so don't get too fancy with the pre-processor!
 3633|       |     */
 3634|      1|#if PY_RELEASE_LEVEL == PY_RELEASE_LEVEL_ALPHA
 3635|      1|    s = "alpha";
 3636|       |#elif PY_RELEASE_LEVEL == PY_RELEASE_LEVEL_BETA
 3637|       |    s = "beta";
 3638|       |#elif PY_RELEASE_LEVEL == PY_RELEASE_LEVEL_GAMMA
 3639|       |    s = "candidate";
 3640|       |#elif PY_RELEASE_LEVEL == PY_RELEASE_LEVEL_FINAL
 3641|       |    s = "final";
 3642|       |#endif
 3643|       |
 3644|      1|#define SetIntItem(flag) \
 3645|      1|    PyStructSequence_SET_ITEM(version_info, pos++, PyLong_FromLong(flag))
 3646|      1|#define SetStrItem(flag) \
 3647|      1|    PyStructSequence_SET_ITEM(version_info, pos++, PyUnicode_FromString(flag))
 3648|       |
 3649|      1|    SetIntItem(PY_MAJOR_VERSION);
  ------------------
  |  | 3645|      1|    PyStructSequence_SET_ITEM(version_info, pos++, PyLong_FromLong(flag))
  |  |  ------------------
  |  |  |  |   11|      1|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  |  |  ------------------
  ------------------
 3650|      1|    SetIntItem(PY_MINOR_VERSION);
  ------------------
  |  | 3645|      1|    PyStructSequence_SET_ITEM(version_info, pos++, PyLong_FromLong(flag))
  |  |  ------------------
  |  |  |  |   11|      1|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  |  |  ------------------
  ------------------
 3651|      1|    SetIntItem(PY_MICRO_VERSION);
  ------------------
  |  | 3645|      1|    PyStructSequence_SET_ITEM(version_info, pos++, PyLong_FromLong(flag))
  |  |  ------------------
  |  |  |  |   11|      1|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  |  |  ------------------
  ------------------
 3652|      1|    SetStrItem(s);
  ------------------
  |  | 3647|      1|    PyStructSequence_SET_ITEM(version_info, pos++, PyUnicode_FromString(flag))
  |  |  ------------------
  |  |  |  |   11|      1|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  |  |  ------------------
  ------------------
 3653|      1|    SetIntItem(PY_RELEASE_SERIAL);
  ------------------
  |  | 3645|      1|    PyStructSequence_SET_ITEM(version_info, pos++, PyLong_FromLong(flag))
  |  |  ------------------
  |  |  |  |   11|      1|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  |  |  ------------------
  ------------------
 3654|      1|#undef SetIntItem
 3655|      1|#undef SetStrItem
 3656|       |
 3657|      1|    if (_PyErr_Occurred(tstate)) {
  ------------------
  |  Branch (3657:9): [True: 0, False: 1]
  ------------------
 3658|      0|        Py_CLEAR(version_info);
  ------------------
  |  |  484|      0|    do { \
  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3659|      0|        return NULL;
 3660|      0|    }
 3661|      1|    return version_info;
 3662|      1|}
sysmodule.c:make_impl_info:
 3684|      1|{
 3685|      1|    int res;
 3686|      1|    PyObject *impl_info, *value, *ns;
 3687|       |
 3688|      1|    impl_info = PyDict_New();
 3689|      1|    if (impl_info == NULL)
  ------------------
  |  Branch (3689:9): [True: 0, False: 1]
  ------------------
 3690|      0|        return NULL;
 3691|       |
 3692|       |    /* populate the dict */
 3693|       |
 3694|      1|    value = PyUnicode_FromString(_PySys_ImplName);
 3695|      1|    if (value == NULL)
  ------------------
  |  Branch (3695:9): [True: 0, False: 1]
  ------------------
 3696|      0|        goto error;
 3697|      1|    res = PyDict_SetItemString(impl_info, "name", value);
 3698|      1|    Py_DECREF(value);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3699|      1|    if (res < 0)
  ------------------
  |  Branch (3699:9): [True: 0, False: 1]
  ------------------
 3700|      0|        goto error;
 3701|       |
 3702|      1|    value = _PySys_ImplCacheTag
  ------------------
  |  Branch (3702:13): [True: 1, False: 0]
  ------------------
 3703|      1|        ? PyUnicode_FromString(_PySys_ImplCacheTag)
 3704|      1|        : Py_NewRef(Py_None);
  ------------------
  |  |  550|      1|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3705|      1|    if (value == NULL) {
  ------------------
  |  Branch (3705:9): [True: 0, False: 1]
  ------------------
 3706|      0|        goto error;
 3707|      0|    }
 3708|      1|    res = PyDict_SetItemString(impl_info, "cache_tag", value);
 3709|      1|    Py_DECREF(value);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3710|      1|    if (res < 0)
  ------------------
  |  Branch (3710:9): [True: 0, False: 1]
  ------------------
 3711|      0|        goto error;
 3712|       |
 3713|      1|    res = PyDict_SetItemString(impl_info, "version", version_info);
 3714|      1|    if (res < 0)
  ------------------
  |  Branch (3714:9): [True: 0, False: 1]
  ------------------
 3715|      0|        goto error;
 3716|       |
 3717|      1|    value = PyLong_FromLong(PY_VERSION_HEX);
  ------------------
  |  |   43|      1|#define PY_VERSION_HEX _Py_PACK_FULL_VERSION( \
  |  |  ------------------
  |  |  |  |   34|      1|#define _Py_PACK_FULL_VERSION(X, Y, Z, LEVEL, SERIAL) ( \
  |  |  |  |   35|      1|    (((X) & 0xff) << 24) |                              \
  |  |  |  |   36|      1|    (((Y) & 0xff) << 16) |                              \
  |  |  |  |   37|      1|    (((Z) & 0xff) << 8) |                               \
  |  |  |  |   38|      1|    (((LEVEL) & 0xf) << 4) |                            \
  |  |  |  |   39|      1|    (((SERIAL) & 0xf) << 0))
  |  |  ------------------
  |  |   44|      1|    PY_MAJOR_VERSION,                         \
  |  |   45|      1|    PY_MINOR_VERSION,                         \
  |  |   46|      1|    PY_MICRO_VERSION,                         \
  |  |   47|      1|    PY_RELEASE_LEVEL,                         \
  |  |   48|      1|    PY_RELEASE_SERIAL)
  ------------------
 3718|      1|    if (value == NULL)
  ------------------
  |  Branch (3718:9): [True: 0, False: 1]
  ------------------
 3719|      0|        goto error;
 3720|      1|    res = PyDict_SetItemString(impl_info, "hexversion", value);
 3721|      1|    Py_DECREF(value);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3722|      1|    if (res < 0)
  ------------------
  |  Branch (3722:9): [True: 0, False: 1]
  ------------------
 3723|      0|        goto error;
 3724|       |
 3725|      1|#ifdef MULTIARCH
 3726|      1|    value = PyUnicode_FromString(MULTIARCH);
 3727|      1|    if (value == NULL)
  ------------------
  |  Branch (3727:9): [True: 0, False: 1]
  ------------------
 3728|      0|        goto error;
 3729|      1|    res = PyDict_SetItemString(impl_info, "_multiarch", value);
 3730|      1|    Py_DECREF(value);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3731|      1|    if (res < 0)
  ------------------
  |  Branch (3731:9): [True: 0, False: 1]
  ------------------
 3732|      0|        goto error;
 3733|      1|#endif
 3734|       |
 3735|       |    // PEP-734
 3736|       |#if defined(__wasi__) || defined(__EMSCRIPTEN__)
 3737|       |    // It is not enabled on WASM builds just yet
 3738|       |    value = Py_False;
 3739|       |#else
 3740|      1|    value = Py_True;
  ------------------
  |  |   26|      1|#  define Py_True _PyObject_CAST(&_Py_TrueStruct)
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3741|      1|#endif
 3742|      1|    res = PyDict_SetItemString(impl_info, "supports_isolated_interpreters", value);
 3743|      1|    if (res < 0) {
  ------------------
  |  Branch (3743:9): [True: 0, False: 1]
  ------------------
 3744|      0|        goto error;
 3745|      0|    }
 3746|       |
 3747|       |    /* dict ready */
 3748|       |
 3749|      1|    ns = _PyNamespace_New(impl_info);
 3750|      1|    Py_DECREF(impl_info);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3751|      1|    return ns;
 3752|       |
 3753|      0|error:
 3754|      0|    Py_CLEAR(impl_info);
  ------------------
  |  |  484|      0|    do { \
  |  |  485|      0|        _Py_TYPEOF(op)* _tmp_op_ptr = &(op); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  486|      0|        _Py_TYPEOF(op) _tmp_old_op = (*_tmp_op_ptr); \
  |  |  ------------------
  |  |  |  |  546|      0|#  define _Py_TYPEOF(expr) __typeof__(expr)
  |  |  ------------------
  |  |  487|      0|        if (_tmp_old_op != NULL) { \
  |  |  ------------------
  |  |  |  Branch (487:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  488|      0|            *_tmp_op_ptr = _Py_NULL; \
  |  |  ------------------
  |  |  |  |   57|      0|#  define _Py_NULL NULL
  |  |  ------------------
  |  |  489|      0|            Py_DECREF(_tmp_old_op); \
  |  |  ------------------
  |  |  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  490|      0|        } \
  |  |  491|      0|    } while (0)
  |  |  ------------------
  |  |  |  Branch (491:14): [Folded, False: 0]
  |  |  ------------------
  ------------------
 3755|       |    return NULL;
 3756|      1|}
sysmodule.c:make_flags:
 3581|      1|{
 3582|      1|    PyObject *flags = PyStructSequence_New(&FlagsType);
 3583|      1|    if (flags == NULL) {
  ------------------
  |  Branch (3583:9): [True: 0, False: 1]
  ------------------
 3584|      0|        return NULL;
 3585|      0|    }
 3586|       |
 3587|      1|    if (set_flags_from_config(interp, flags) < 0) {
  ------------------
  |  Branch (3587:9): [True: 0, False: 1]
  ------------------
 3588|      0|        Py_DECREF(flags);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3589|      0|        return NULL;
 3590|      0|    }
 3591|      1|    return flags;
 3592|      1|}
sysmodule.c:make_abi_info:
 3761|      1|{
 3762|       |    // New entries should be added when needed for a supported platform,
 3763|       |    // or by core dev consensus for enabling an unsupported one.
 3764|       |
 3765|      1|    PyObject *value;
 3766|      1|    PyObject *abi_info = PyDict_New();
 3767|      1|    if (abi_info == NULL) {
  ------------------
  |  Branch (3767:9): [True: 0, False: 1]
  ------------------
 3768|      0|        return NULL;
 3769|      0|    }
 3770|       |
 3771|      1|    value = PyLong_FromLong(sizeof(void *) * 8);
 3772|      1|    if (value == NULL) {
  ------------------
  |  Branch (3772:9): [True: 0, False: 1]
  ------------------
 3773|      0|        goto error;
 3774|      0|    }
 3775|      1|    if (PyDict_SetItem(abi_info, &_Py_ID(pointer_bits), value) < 0) {
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3775:9): [True: 0, False: 1]
  ------------------
 3776|      0|        goto error;
 3777|      0|    }
 3778|      1|    Py_DECREF(value);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3779|       |
 3780|       |#ifdef Py_GIL_DISABLED
 3781|       |    value = Py_True;
 3782|       |#else
 3783|      1|    value = Py_False;
  ------------------
  |  |   25|      1|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3784|      1|#endif
 3785|      1|    if (PyDict_SetItem(abi_info, &_Py_ID(free_threaded), value) < 0) {
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3785:9): [True: 0, False: 1]
  ------------------
 3786|      0|        goto error;
 3787|      0|    }
 3788|       |
 3789|       |#ifdef Py_DEBUG
 3790|       |    value = Py_True;
 3791|       |#else
 3792|      1|    value = Py_False;
  ------------------
  |  |   25|      1|#  define Py_False _PyObject_CAST(&_Py_FalseStruct)
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3793|      1|#endif
 3794|      1|    if (PyDict_SetItem(abi_info, &_Py_ID(debug), value) < 0) {
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3794:9): [True: 0, False: 1]
  ------------------
 3795|      0|        goto error;
 3796|      0|    }
 3797|       |
 3798|       |#if PY_BIG_ENDIAN
 3799|       |    value = &_Py_ID(big);
 3800|       |#else
 3801|      1|    value = &_Py_ID(little);
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3802|      1|#endif
 3803|      1|    if (PyDict_SetItem(abi_info, &_Py_ID(byteorder), value) < 0) {
  ------------------
  |  |  917|      1|     (_Py_SINGLETON(strings.identifiers._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (3803:9): [True: 0, False: 1]
  ------------------
 3804|      0|        goto error;
 3805|      0|    }
 3806|       |
 3807|      1|    PyObject *ns = _PyNamespace_New(abi_info);
 3808|      1|    Py_DECREF(abi_info);
  ------------------
  |  |  430|      1|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      1|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      1|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3809|      1|    return ns;
 3810|       |
 3811|      0|error:
 3812|      0|    Py_DECREF(abi_info);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3813|      0|    Py_XDECREF(value);
  ------------------
  |  |  524|      0|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3814|       |    return NULL;
 3815|      1|}

PyThread_init_thread:
   49|      3|{
   50|      3|    if (initialized) {
  ------------------
  |  |   45|      3|#define initialized _PyRuntime.threads.initialized
  |  |  ------------------
  |  |  |  Branch (45:21): [True: 2, False: 1]
  |  |  ------------------
  ------------------
   51|      2|        return;
   52|      2|    }
   53|      1|    initialized = 1;
  ------------------
  |  |   45|      1|#define initialized _PyRuntime.threads.initialized
  ------------------
   54|      1|    PyThread__init_thread();
   55|      1|}
PyThread_allocate_lock:
   81|      3|{
   82|      3|    if (!initialized) {
  ------------------
  |  |   45|      3|#define initialized _PyRuntime.threads.initialized
  ------------------
  |  Branch (82:9): [True: 0, False: 3]
  ------------------
   83|      0|        PyThread_init_thread();
   84|      0|    }
   85|       |
   86|      3|    PyMutex *lock = (PyMutex *)PyMem_RawMalloc(sizeof(PyMutex));
   87|      3|    if (lock) {
  ------------------
  |  Branch (87:9): [True: 3, False: 0]
  ------------------
   88|      3|        *lock = (PyMutex){0};
   89|      3|    }
   90|       |
   91|      3|    return (PyThread_type_lock)lock;
   92|      3|}
PyThread_GetInfo:
  310|      1|{
  311|      1|    PyObject *threadinfo, *value;
  312|      1|    int pos = 0;
  313|      1|#if (defined(_POSIX_THREADS) && defined(HAVE_CONFSTR) \
  314|      1|     && defined(_CS_GNU_LIBPTHREAD_VERSION))
  315|      1|    char buffer[255];
  316|      1|    int len;
  317|      1|#endif
  318|       |
  319|      1|    PyInterpreterState *interp = _PyInterpreterState_GET();
  320|      1|    if (_PyStructSequence_InitBuiltin(interp, &ThreadInfoType, &threadinfo_desc) < 0) {
  ------------------
  |  Branch (320:9): [True: 0, False: 1]
  ------------------
  321|      0|        return NULL;
  322|      0|    }
  323|       |
  324|      1|    threadinfo = PyStructSequence_New(&ThreadInfoType);
  325|      1|    if (threadinfo == NULL)
  ------------------
  |  Branch (325:9): [True: 0, False: 1]
  ------------------
  326|      0|        return NULL;
  327|       |
  328|      1|    value = PyUnicode_FromString(PYTHREAD_NAME);
  ------------------
  |  |   64|      1|#     define PYTHREAD_NAME "pthread"
  ------------------
  329|      1|    if (value == NULL) {
  ------------------
  |  Branch (329:9): [True: 0, False: 1]
  ------------------
  330|      0|        Py_DECREF(threadinfo);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  331|      0|        return NULL;
  332|      0|    }
  333|      1|    PyStructSequence_SET_ITEM(threadinfo, pos++, value);
  ------------------
  |  |   11|      1|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  ------------------
  334|       |
  335|       |#ifdef HAVE_PTHREAD_STUBS
  336|       |    value = Py_NewRef(Py_None);
  337|       |#else
  338|      1|    value = PyUnicode_FromString("pymutex");
  339|      1|    if (value == NULL) {
  ------------------
  |  Branch (339:9): [True: 0, False: 1]
  ------------------
  340|      0|        Py_DECREF(threadinfo);
  ------------------
  |  |  430|      0|#define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  341|      0|        return NULL;
  342|      0|    }
  343|      1|#endif
  344|      1|    PyStructSequence_SET_ITEM(threadinfo, pos++, value);
  ------------------
  |  |   11|      1|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  ------------------
  345|       |
  346|      1|#if (defined(_POSIX_THREADS) && defined(HAVE_CONFSTR) \
  347|      1|     && defined(_CS_GNU_LIBPTHREAD_VERSION))
  348|      1|    value = NULL;
  349|      1|    len = confstr(_CS_GNU_LIBPTHREAD_VERSION, buffer, sizeof(buffer));
  350|      1|    if (1 < len && (size_t)len < sizeof(buffer)) {
  ------------------
  |  Branch (350:9): [True: 1, False: 0]
  |  Branch (350:20): [True: 1, False: 0]
  ------------------
  351|      1|        value = PyUnicode_DecodeFSDefaultAndSize(buffer, len-1);
  352|      1|        if (value == NULL)
  ------------------
  |  Branch (352:13): [True: 0, False: 1]
  ------------------
  353|      0|            PyErr_Clear();
  354|      1|    }
  355|      1|    if (value == NULL)
  ------------------
  |  Branch (355:9): [True: 0, False: 1]
  ------------------
  356|      0|#endif
  357|      0|    {
  358|      0|        value = Py_NewRef(Py_None);
  ------------------
  |  |  550|      0|#  define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|      0|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|      0|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  359|      0|    }
  360|      1|    PyStructSequence_SET_ITEM(threadinfo, pos++, value);
  ------------------
  |  |   11|      1|#define PyStructSequence_SET_ITEM PyStructSequence_SetItem
  ------------------
  361|      1|    return threadinfo;
  362|      1|}

_PyThread_cond_init:
  140|      2|{
  141|      2|    return pthread_cond_init(cond, condattr_monotonic);
  ------------------
  |  |  121|      2|#define condattr_monotonic _PyRuntime.threads._condattr_monotonic.ptr
  ------------------
  142|      2|}
PyThread_get_thread_ident_ex:
  360|    829|PyThread_get_thread_ident_ex(void) {
  361|    829|    volatile pthread_t threadid;
  362|    829|    if (!initialized)
  ------------------
  |  |   45|    829|#define initialized _PyRuntime.threads.initialized
  ------------------
  |  Branch (362:9): [True: 1, False: 828]
  ------------------
  363|      1|        PyThread_init_thread();
  364|    829|    threadid = pthread_self();
  365|    829|    return _pthread_t_to_ident(threadid);
  366|    829|}
PyThread_get_thread_ident:
  370|    361|{
  371|    361|    return (unsigned long) PyThread_get_thread_ident_ex();
  372|    361|}
PyThread_get_thread_native_id:
  377|      1|{
  378|      1|    if (!initialized)
  ------------------
  |  |   45|      1|#define initialized _PyRuntime.threads.initialized
  ------------------
  |  Branch (378:9): [True: 0, False: 1]
  ------------------
  379|      0|        PyThread_init_thread();
  380|       |#ifdef __APPLE__
  381|       |    uint64_t native_id;
  382|       |    (void) pthread_threadid_np(NULL, &native_id);
  383|       |#elif defined(__linux__)
  384|       |    pid_t native_id;
  385|      1|    native_id = syscall(SYS_gettid);
  386|       |#elif defined(__FreeBSD__)
  387|       |    int native_id;
  388|       |    native_id = pthread_getthreadid_np();
  389|       |#elif defined(__FreeBSD_kernel__)
  390|       |    long native_id;
  391|       |    syscall(SYS_thr_self, &native_id);
  392|       |#elif defined(__OpenBSD__)
  393|       |    pid_t native_id;
  394|       |    native_id = getthrid();
  395|       |#elif defined(_AIX)
  396|       |    tid_t native_id;
  397|       |    native_id = thread_self();
  398|       |#elif defined(__NetBSD__)
  399|       |    lwpid_t native_id;
  400|       |    native_id = _lwp_self();
  401|       |#elif defined(__DragonFly__)
  402|       |    lwpid_t native_id;
  403|       |    native_id = lwp_gettid();
  404|       |#elif defined(__sun__) && SIZEOF_LONG >= 8
  405|       |    unsigned long native_id = (unsigned long)getpid() << 32 | thr_self();
  406|       |#endif
  407|      1|    return (unsigned long) native_id;
  408|      1|}
PyThread_tss_create:
  572|      1|{
  573|      1|    assert(key != NULL);
  ------------------
  |  Branch (573:5): [True: 1, False: 0]
  ------------------
  574|       |    /* If the key has been created, function is silently skipped. */
  575|      1|    if (key->_is_initialized) {
  ------------------
  |  Branch (575:9): [True: 0, False: 1]
  ------------------
  576|      0|        return 0;
  577|      0|    }
  578|       |
  579|      1|    int fail = pthread_key_create(&(key->_key), NULL);
  580|      1|    if (fail) {
  ------------------
  |  Branch (580:9): [True: 0, False: 1]
  ------------------
  581|      0|        return -1;
  582|      0|    }
  583|      1|    key->_is_initialized = 1;
  584|      1|    return 0;
  585|      1|}
thread.c:PyThread__init_thread:
  197|      1|{
  198|       |    // The library is only initialized once in the process,
  199|       |    // regardless of how many times the Python runtime is initialized.
  200|      1|    static int lib_initialized = 0;
  201|      1|    if (!lib_initialized) {
  ------------------
  |  Branch (201:9): [True: 1, False: 0]
  ------------------
  202|      1|        lib_initialized = 1;
  203|       |#if defined(_AIX) && defined(__GNUC__)
  204|       |        extern void pthread_init(void);
  205|       |        pthread_init();
  206|       |#endif
  207|      1|    }
  208|      1|    init_condattr();
  209|      1|}
thread.c:init_condattr:
  125|      1|{
  126|      1|#ifdef CONDATTR_MONOTONIC
  127|      1|# define ca _PyRuntime.threads._condattr_monotonic.val
  128|       |    // XXX We need to check the return code?
  129|      1|    pthread_condattr_init(&ca);
  ------------------
  |  |  127|      1|# define ca _PyRuntime.threads._condattr_monotonic.val
  ------------------
  130|       |    // XXX We need to run pthread_condattr_destroy() during runtime fini.
  131|      1|    if (pthread_condattr_setclock(&ca, CLOCK_MONOTONIC) == 0) {
  ------------------
  |  |  127|      1|# define ca _PyRuntime.threads._condattr_monotonic.val
  ------------------
  |  Branch (131:9): [True: 1, False: 0]
  ------------------
  132|      1|        condattr_monotonic = &ca;  // Use monotonic clock
  ------------------
  |  |  121|      1|#define condattr_monotonic _PyRuntime.threads._condattr_monotonic.ptr
  ------------------
                      condattr_monotonic = &ca;  // Use monotonic clock
  ------------------
  |  |  127|      1|# define ca _PyRuntime.threads._condattr_monotonic.val
  ------------------
  133|      1|    }
  134|      1|# undef ca
  135|      1|#endif  // CONDATTR_MONOTONIC
  136|      1|}
thread.c:_pthread_t_to_ident:
  304|    829|_pthread_t_to_ident(pthread_t value) {
  305|       |// Cast through an integer type of the same size to avoid sign-extension.
  306|    829|#if SIZEOF_PTHREAD_T == SIZEOF_VOID_P
  307|    829|    return (uintptr_t) value;
  308|       |#elif SIZEOF_PTHREAD_T == SIZEOF_LONG
  309|       |    return (unsigned long) value;
  310|       |#elif SIZEOF_PTHREAD_T == SIZEOF_INT
  311|       |    return (unsigned int) value;
  312|       |#elif SIZEOF_PTHREAD_T == SIZEOF_LONG_LONG
  313|       |    return (unsigned long long) value;
  314|       |#else
  315|       |#error "Unsupported SIZEOF_PTHREAD_T value"
  316|       |#endif
  317|    829|}

_PyTraceBack_FromFrame:
  312|    102|{
  313|    102|    assert(tb_next == NULL || PyTraceBack_Check(tb_next));
  ------------------
  |  Branch (313:5): [True: 92, False: 10]
  |  Branch (313:5): [True: 10, False: 0]
  ------------------
  314|    102|    assert(frame != NULL);
  ------------------
  |  Branch (314:5): [True: 102, False: 0]
  ------------------
  315|    102|    int addr = _PyInterpreterFrame_LASTI(frame->f_frame) * sizeof(_Py_CODEUNIT);
  ------------------
  |  |   18|    102|    ((int)((IF)->instr_ptr - _PyFrame_GetBytecode((IF))))
  ------------------
  316|    102|    return tb_create_raw((PyTracebackObject *)tb_next, frame, addr, -1);
  317|    102|}
PyTraceBack_Here:
  322|    102|{
  323|    102|    PyObject *exc = PyErr_GetRaisedException();
  324|    102|    assert(PyExceptionInstance_Check(exc));
  ------------------
  |  Branch (324:5): [True: 102, False: 0]
  ------------------
  325|    102|    PyObject *tb = PyException_GetTraceback(exc);
  326|    102|    PyObject *newtb = _PyTraceBack_FromFrame(tb, frame);
  327|    102|    Py_XDECREF(tb);
  ------------------
  |  |  524|    102|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    102|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    102|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  328|    102|    if (newtb == NULL) {
  ------------------
  |  Branch (328:9): [True: 0, False: 102]
  ------------------
  329|      0|        _PyErr_ChainExceptions1(exc);
  330|      0|        return -1;
  331|      0|    }
  332|    102|    PyException_SetTraceback(exc, newtb);
  333|    102|    Py_XDECREF(newtb);
  ------------------
  |  |  524|    102|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    102|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    102|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  334|    102|    PyErr_SetRaisedException(exc);
  335|    102|    return 0;
  336|    102|}
_Py_DumpTraceback_Init:
 1466|      1|{
 1467|       |#ifdef MS_WINDOWS
 1468|       |    if (pGetThreadDescription != NULL) {
 1469|       |        return;
 1470|       |    }
 1471|       |
 1472|       |    HMODULE kernelbase = GetModuleHandleW(L"kernelbase.dll");
 1473|       |    if (kernelbase != NULL) {
 1474|       |        pGetThreadDescription = (PF_GET_THREAD_DESCRIPTION)GetProcAddress(
 1475|       |                                    kernelbase, "GetThreadDescription");
 1476|       |    }
 1477|       |#endif
 1478|      1|}
traceback.c:tb_dealloc:
  242|    102|{
  243|    102|    PyTracebackObject *tb = _PyTracebackObject_CAST(op);
  ------------------
  |  |   68|    102|#define _PyTracebackObject_CAST(op)   ((PyTracebackObject *)(op))
  ------------------
  244|    102|    PyObject_GC_UnTrack(tb);
  245|    102|    Py_XDECREF(tb->tb_next);
  ------------------
  |  |  524|    102|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    102|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    102|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  246|    102|    Py_XDECREF(tb->tb_frame);
  ------------------
  |  |  524|    102|#  define Py_XDECREF(op) Py_XDECREF(_PyObject_CAST(op))
  |  |  ------------------
  |  |  |  |  171|    102|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    102|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  247|    102|    PyObject_GC_Del(tb);
  248|    102|}
traceback.c:tb_create_raw:
   82|    102|{
   83|    102|    PyTracebackObject *tb;
   84|    102|    if ((next != NULL && !PyTraceBack_Check(next)) ||
  ------------------
  |  |   14|     10|#define PyTraceBack_Check(v) Py_IS_TYPE((v), &PyTraceBack_Type)
  |  |  ------------------
  |  |  |  |  215|     10|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|     10|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|     10|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (84:10): [True: 10, False: 92]
  |  Branch (84:26): [True: 0, False: 10]
  ------------------
   85|    102|                    frame == NULL || !PyFrame_Check(frame)) {
  ------------------
  |  |    8|    102|#define PyFrame_Check(op) Py_IS_TYPE((op), &PyFrame_Type)
  |  |  ------------------
  |  |  |  |  215|    102|#  define Py_IS_TYPE(ob, type) _Py_IS_TYPE_impl(_PyObject_CAST(ob), (type))
  |  |  |  |  ------------------
  |  |  |  |  |  |  171|    102|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   37|    102|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (85:21): [True: 0, False: 102]
  |  Branch (85:38): [True: 0, False: 102]
  ------------------
   86|      0|        PyErr_BadInternalCall();
  ------------------
  |  |  229|      0|#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
  ------------------
   87|      0|        return NULL;
   88|      0|    }
   89|    102|    tb = PyObject_GC_New(PyTracebackObject, &PyTraceBack_Type);
  ------------------
  |  |  181|    102|    _Py_CAST(type*, _PyObject_GC_New(typeobj))
  |  |  ------------------
  |  |  |  |   37|    102|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  ------------------
  ------------------
   90|    102|    if (tb != NULL) {
  ------------------
  |  Branch (90:9): [True: 102, False: 0]
  ------------------
   91|    102|        tb->tb_next = (PyTracebackObject*)Py_XNewRef(next);
  ------------------
  |  |  551|    102|#  define Py_XNewRef(obj) _Py_XNewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    102|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    102|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   92|    102|        tb->tb_frame = (PyFrameObject*)Py_XNewRef(frame);
  ------------------
  |  |  551|    102|#  define Py_XNewRef(obj) _Py_XNewRef(_PyObject_CAST(obj))
  |  |  ------------------
  |  |  |  |  171|    102|#define _PyObject_CAST(op) _Py_CAST(PyObject*, (op))
  |  |  |  |  ------------------
  |  |  |  |  |  |   37|    102|#define _Py_CAST(type, expr) ((type)(expr))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   93|    102|        tb->tb_lasti = lasti;
   94|    102|        tb->tb_lineno = lineno;
   95|    102|        PyObject_GC_Track(tb);
   96|    102|    }
   97|    102|    return (PyObject *)tb;
   98|    102|}

_PyTraceMalloc_Init:
  739|      1|{
  740|      1|    assert(tracemalloc_config.initialized == TRACEMALLOC_NOT_INITIALIZED);
  ------------------
  |  Branch (740:5): [True: 1, False: 0]
  ------------------
  741|       |
  742|      1|    PyMem_GetAllocator(PYMEM_DOMAIN_RAW, &allocators.raw);
  ------------------
  |  |   32|      1|#define allocators _PyRuntime.tracemalloc.allocators
  ------------------
  743|       |
  744|      1|    if (PyThread_tss_create(&tracemalloc_reentrant_key) != 0) {
  ------------------
  |  |   91|      1|#define tracemalloc_reentrant_key _PyRuntime.tracemalloc.reentrant_key
  ------------------
  |  Branch (744:9): [True: 0, False: 1]
  ------------------
  745|      0|        return _PyStatus_NO_MEMORY();
  ------------------
  |  |   33|      0|#define _PyStatus_NO_MEMORY() _PyStatus_ERR(_PyStatus_NO_MEMORY_ERRMSG)
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  ------------------
  746|      0|    }
  747|       |
  748|      1|    tracemalloc_filenames = hashtable_new(hashtable_hash_pyobject,
  ------------------
  |  |   69|      1|#define tracemalloc_filenames _PyRuntime.tracemalloc.filenames
  ------------------
  749|      1|                                          hashtable_compare_unicode,
  750|      1|                                          tracemalloc_clear_filename, NULL);
  751|       |
  752|      1|    tracemalloc_tracebacks = hashtable_new(hashtable_hash_traceback,
  ------------------
  |  |   71|      1|#define tracemalloc_tracebacks _PyRuntime.tracemalloc.tracebacks
  ------------------
  753|      1|                                           hashtable_compare_traceback,
  754|      1|                                           raw_free, NULL);
  755|       |
  756|      1|    tracemalloc_traces = tracemalloc_create_traces_table();
  ------------------
  |  |   72|      1|#define tracemalloc_traces _PyRuntime.tracemalloc.traces
  ------------------
  757|      1|    tracemalloc_domains = tracemalloc_create_domains_table();
  ------------------
  |  |   73|      1|#define tracemalloc_domains _PyRuntime.tracemalloc.domains
  ------------------
  758|       |
  759|      1|    if (tracemalloc_filenames == NULL || tracemalloc_tracebacks == NULL
  ------------------
  |  |   69|      1|#define tracemalloc_filenames _PyRuntime.tracemalloc.filenames
  ------------------
                  if (tracemalloc_filenames == NULL || tracemalloc_tracebacks == NULL
  ------------------
  |  |   71|      1|#define tracemalloc_tracebacks _PyRuntime.tracemalloc.tracebacks
  ------------------
  |  Branch (759:9): [True: 0, False: 1]
  |  Branch (759:42): [True: 0, False: 1]
  ------------------
  760|      1|       || tracemalloc_traces == NULL || tracemalloc_domains == NULL)
  ------------------
  |  |   72|      1|#define tracemalloc_traces _PyRuntime.tracemalloc.traces
  ------------------
                     || tracemalloc_traces == NULL || tracemalloc_domains == NULL)
  ------------------
  |  |   73|      1|#define tracemalloc_domains _PyRuntime.tracemalloc.domains
  ------------------
  |  Branch (760:11): [True: 0, False: 1]
  |  Branch (760:41): [True: 0, False: 1]
  ------------------
  761|      0|    {
  762|      0|        return _PyStatus_NO_MEMORY();
  ------------------
  |  |   33|      0|#define _PyStatus_NO_MEMORY() _PyStatus_ERR(_PyStatus_NO_MEMORY_ERRMSG)
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  ------------------
  763|      0|    }
  764|       |
  765|      1|    assert(tracemalloc_empty_traceback == NULL);
  ------------------
  |  Branch (765:5): [True: 1, False: 0]
  ------------------
  766|      1|    tracemalloc_empty_traceback = raw_malloc(TRACEBACK_SIZE(1));
  ------------------
  |  |   54|      1|#define tracemalloc_empty_traceback _PyRuntime.tracemalloc.empty_traceback
  ------------------
                  tracemalloc_empty_traceback = raw_malloc(TRACEBACK_SIZE(1));
  ------------------
  |  |   49|      1|        (sizeof(traceback_t) + sizeof(frame_t) * (NFRAME))
  ------------------
  767|      1|    if (tracemalloc_empty_traceback  == NULL) {
  ------------------
  |  |   54|      1|#define tracemalloc_empty_traceback _PyRuntime.tracemalloc.empty_traceback
  ------------------
  |  Branch (767:9): [True: 0, False: 1]
  ------------------
  768|      0|        return _PyStatus_NO_MEMORY();
  ------------------
  |  |   33|      0|#define _PyStatus_NO_MEMORY() _PyStatus_ERR(_PyStatus_NO_MEMORY_ERRMSG)
  |  |  ------------------
  |  |  |  |   27|      0|    (PyStatus){ \
  |  |  |  |   28|      0|        ._type = _PyStatus_TYPE_ERROR, \
  |  |  |  |   29|      0|        .func = _PyStatus_GET_FUNC(), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   20|      0|#  define _PyStatus_GET_FUNC() __func__
  |  |  |  |  ------------------
  |  |  |  |   30|      0|        .err_msg = (ERR_MSG)}
  |  |  ------------------
  ------------------
  769|      0|    }
  770|       |
  771|      1|    tracemalloc_empty_traceback->nframe = 1;
  ------------------
  |  |   54|      1|#define tracemalloc_empty_traceback _PyRuntime.tracemalloc.empty_traceback
  ------------------
  772|      1|    tracemalloc_empty_traceback->total_nframe = 1;
  ------------------
  |  |   54|      1|#define tracemalloc_empty_traceback _PyRuntime.tracemalloc.empty_traceback
  ------------------
  773|       |    /* borrowed reference */
  774|      1|    tracemalloc_empty_traceback->frames[0].filename = &_Py_STR(anon_unknown);
  ------------------
  |  |   54|      1|#define tracemalloc_empty_traceback _PyRuntime.tracemalloc.empty_traceback
  ------------------
                  tracemalloc_empty_traceback->frames[0].filename = &_Py_STR(anon_unknown);
  ------------------
  |  |  919|      1|     (_Py_SINGLETON(strings.literals._py_ ## NAME._ascii.ob_base))
  |  |  ------------------
  |  |  |  |   18|      1|    _Py_GLOBAL_OBJECT(singletons.NAME)
  |  |  |  |  ------------------
  |  |  |  |  |  |   16|      1|    _PyRuntime.static_objects.NAME
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  775|      1|    tracemalloc_empty_traceback->frames[0].lineno = 0;
  ------------------
  |  |   54|      1|#define tracemalloc_empty_traceback _PyRuntime.tracemalloc.empty_traceback
  ------------------
  776|      1|    tracemalloc_empty_traceback->hash = traceback_hash(tracemalloc_empty_traceback);
  ------------------
  |  |   54|      1|#define tracemalloc_empty_traceback _PyRuntime.tracemalloc.empty_traceback
  ------------------
                  tracemalloc_empty_traceback->hash = traceback_hash(tracemalloc_empty_traceback);
  ------------------
  |  |   54|      1|#define tracemalloc_empty_traceback _PyRuntime.tracemalloc.empty_traceback
  ------------------
  777|       |
  778|      1|    tracemalloc_config.initialized = TRACEMALLOC_INITIALIZED;
  ------------------
  |  |   15|      1|#define tracemalloc_config _PyRuntime.tracemalloc.config
  ------------------
  779|      1|    return _PyStatus_OK();
  ------------------
  |  |   24|      1|    (PyStatus){._type = _PyStatus_TYPE_OK}
  ------------------
  780|      1|}
tracemalloc.c:hashtable_new:
  163|      4|{
  164|      4|    _Py_hashtable_allocator_t hashtable_alloc = {malloc, free};
  165|      4|    return _Py_hashtable_new_full(hash_func, compare_func,
  166|      4|                                  key_destroy_func, value_destroy_func,
  167|      4|                                  &hashtable_alloc);
  168|      4|}
tracemalloc.c:tracemalloc_create_traces_table:
  379|      1|{
  380|      1|    return hashtable_new(_Py_hashtable_hash_ptr,
  381|      1|                         _Py_hashtable_compare_direct,
  382|       |                         NULL, raw_free);
  383|      1|}
tracemalloc.c:tracemalloc_create_domains_table:
  396|      1|{
  397|      1|    return hashtable_new(hashtable_hash_uint,
  398|      1|                         _Py_hashtable_compare_direct,
  399|       |                         NULL,
  400|      1|                         tracemalloc_destroy_domain);
  401|      1|}
tracemalloc.c:raw_malloc:
  173|      1|{
  174|      1|    return allocators.raw.malloc(allocators.raw.ctx, size);
  ------------------
  |  |   32|      1|#define allocators _PyRuntime.tracemalloc.allocators
  ------------------
                  return allocators.raw.malloc(allocators.raw.ctx, size);
  ------------------
  |  |   32|      1|#define allocators _PyRuntime.tracemalloc.allocators
  ------------------
  175|      1|}
tracemalloc.c:traceback_hash:
  281|      1|{
  282|       |    /* code based on tuple_hash() of Objects/tupleobject.c */
  283|      1|    Py_uhash_t x, y;  /* Unsigned for defined overflow behavior. */
  284|      1|    int len = traceback->nframe;
  285|      1|    Py_uhash_t mult = PyHASH_MULTIPLIER;
  ------------------
  |  |    6|      1|#define PyHASH_MULTIPLIER 1000003UL  /* 0xf4243 */
  ------------------
  286|      1|    frame_t *frame;
  287|       |
  288|      1|    x = 0x345678UL;
  289|      1|    frame = traceback->frames;
  290|      2|    while (--len >= 0) {
  ------------------
  |  Branch (290:12): [True: 1, False: 1]
  ------------------
  291|      1|        y = (Py_uhash_t)PyObject_Hash(frame->filename);
  292|      1|        y ^= (Py_uhash_t)frame->lineno;
  293|      1|        frame++;
  294|       |
  295|      1|        x = (x ^ y) * mult;
  296|       |        /* the cast might truncate len; that doesn't change hash stability */
  297|      1|        mult += (Py_uhash_t)(82520UL + len + len);
  298|      1|    }
  299|      1|    x ^= traceback->total_nframe;
  300|      1|    x += 97531UL;
  301|      1|    return x;
  302|      1|}

